Like any good blog, this one includes a post about what technologies power it.

This blog is built using Nikola, a powerful, extensible static site generator.

Content is written in the extensible reStructuredText (rst) format.

Pages are rendered using our own nti.nikola_chameleon rendering plugin, which combines the fast Chameleon templating engine with the extremely extensible Zope Component Architecture (ZCA). That plugin functions with a base theme, extended with a bootstrap3 theme, plus some site-specific CSS to produce the look of this site.

Why choose these technologies?

After reading the above, you may be sensing a theme: extensibility.

One of the things NextThought does is build a platform on which we or our clients can implement custom education solutions. This has to scale up to entire universities while also being suitable for individual associations or intranets in a single business. No two deployments are ever exactly the same. Plus, a number of us here at NextThought had previous experience building a large financial platform that had similar requirements in terms of scaling up and down and being customized for many different clients. Thus, extensibility is something we've learned to value and we tend to look for it in, and build it into, everything we do.

Shameless promotion

Nikola ships with some capable rendering plugins, but we still wrote the nti.nikola_chameleon plugin and its themes to handle our rendering. Why go to all that trouble?

Largely so that we could write this introduction to the ZCA and then describe how we leverage its flexibility to build this blog.

The ZCA is an incredible piece of Python engineering, originally implemented well ahead of its time. While it is famous for its use in projects like the Zope and Plone content management systems, and the Pyramid web framework, we wanted to show that it can be used outside of those contexts.

We also wanted to try to bring visibility to some other projects that complement the ZCA, especially in the areas of templating such as and z3c.macro and the concepts of viewlets and content providers.


Last but not least, we wanted to be able to dogfood some of these technologies in a relatively simple way.

As you might guess, many of these technologies are used in parts of the NextThought platforms. But those platforms are large and use many different technologies. By producing the standalone nti.nikola_chameleon project, we had both a place to document the various ways in which they can be used, and a place to point new developers looking to understand what they are and how to use them.