<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="/assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Jason Madden (Posts about zpt)</title><link>https://seecoresoftware.com/</link><description></description><atom:link href="https://seecoresoftware.com/blog/categories/zpt.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2021 &lt;a href="mailto:jason@seecoresoftware.com"&gt;Jason Madden&lt;/a&gt; </copyright><lastBuildDate>Sat, 04 Dec 2021 18:43:38 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Building A Blog</title><link>https://seecoresoftware.com/blog/2017/10/building-a-blog.html</link><dc:creator>Jason Madden</dc:creator><description>&lt;figure&gt;&lt;img src="https://themes.getnikola.com/v8/bootblog4.png"&gt;&lt;/figure&gt; &lt;div&gt;&lt;p&gt;Like any good blog, this one includes a post about what technologies
power it.&lt;/p&gt;
&lt;!-- END_TEASER --&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;This was originially written for the NextThought developer blog.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="sidebar"&gt;
&lt;p class="first sidebar-title"&gt;Open source is in our DNA&lt;/p&gt;
&lt;p class="last"&gt;NextThought uses and contributes to a large number of open source
technologies, and the technology for this blog is no exception.
&lt;a class="reference external" href="https://github.com/NextThought/nti.nikola_chameleon"&gt;Everything&lt;/a&gt;
&lt;a class="reference external" href="https://github.com/NextThought/nti.nikola_themes.base-chameleon"&gt;we've&lt;/a&gt;
&lt;a class="reference external" href="https://github.com/NextThought/nti.nikola_themes.bootstrap3-chameleon"&gt;built&lt;/a&gt;
for this blog has been open sourced.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;This blog is built using &lt;a class="reference external" href="https://getnikola.com"&gt;Nikola&lt;/a&gt;, a
powerful, extensible static site generator.&lt;/p&gt;
&lt;p&gt;Content is written in the extensible &lt;a class="reference external" href="http://docutils.sourceforge.net/rst.html"&gt;reStructuredText (rst)&lt;/a&gt; format.&lt;/p&gt;
&lt;p&gt;Pages are rendered using our own &lt;a class="reference external" href="http://ntinikola-chameleon.readthedocs.io/en/latest/"&gt;nti.nikola_chameleon&lt;/a&gt; rendering plugin,
which combines the fast &lt;a class="reference external" href="https://pypi.python.org/pypi/Chameleon"&gt;Chameleon&lt;/a&gt; templating engine with the
extremely extensible &lt;a class="reference external" href="https://zopecomponent.readthedocs.io/en/latest/narr.html"&gt;Zope Component Architecture (ZCA)&lt;/a&gt;. That
plugin functions with a &lt;a class="reference external" href="https://github.com/NextThought/nti.nikola_themes.base-chameleon"&gt;base theme&lt;/a&gt;,
extended with a &lt;a class="reference external" href="https://github.com/NextThought/nti.nikola_themes.bootstrap3-chameleon"&gt;bootstrap3 theme&lt;/a&gt;,
plus some site-specific CSS to produce the look of this site.&lt;/p&gt;
&lt;div class="section" id="why-choose-these-technologies"&gt;
&lt;h2&gt;Why choose these technologies?&lt;/h2&gt;
&lt;p&gt;After reading the above, you may be sensing a theme: &lt;em&gt;extensibility&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;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, &lt;em&gt;extensibility&lt;/em&gt;
is something we've learned to value and we tend to look for it in, and
build it into, everything we do.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="shameless-promotion"&gt;
&lt;h2&gt;Shameless promotion&lt;/h2&gt;
&lt;p&gt;Nikola ships with some capable rendering plugins, but we still wrote
&lt;a class="reference external" href="https://github.com/NextThought/nti.nikola_themes.base-chameleon"&gt;the nti.nikola_chameleon plugin&lt;/a&gt; and
its themes to handle our rendering. Why go to all that trouble?&lt;/p&gt;
&lt;p&gt;Largely so that we could write &lt;a class="reference external" href="http://ntinikola-chameleon.readthedocs.io/en/latest/zca_background.html"&gt;this introduction to the ZCA&lt;/a&gt;
and then describe how we &lt;a class="reference external" href="http://ntinikola-chameleon.readthedocs.io/en/latest/using_zca.html"&gt;leverage its flexibility&lt;/a&gt;
to build this blog.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="http://muthukadan.net/docs/zca.html"&gt;The ZCA&lt;/a&gt; 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 &lt;a class="reference external" href="http://www.zope.org/en/latest/"&gt;Zope&lt;/a&gt; and &lt;a class="reference external" href="https://plone.org"&gt;Plone&lt;/a&gt;
content management systems, and the &lt;a class="reference external" href="https://trypyramid.com"&gt;Pyramid web framework&lt;/a&gt;, we wanted to show that it can be used
outside of those contexts.&lt;/p&gt;
&lt;p&gt;We also wanted to try to bring visibility to some other projects that
complement the ZCA, especially in the areas of templating such as
&lt;a class="reference external" href="http://pypi.org/project/z3c.pt"&gt;z3c.pt&lt;/a&gt; and &lt;a class="reference external" href="http://pypi.org/project/z3c.macro"&gt;z3c.macro&lt;/a&gt; and the concepts of &lt;a class="reference external" href="http://ntinikola-chameleon.readthedocs.io/en/latest/viewlets.html"&gt;viewlets&lt;/a&gt;
and content providers.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="dogfooding"&gt;
&lt;h2&gt;Dogfooding&lt;/h2&gt;
&lt;p&gt;Last but not least, we wanted to be able to &lt;a class="reference external" href="https://blogs.msdn.microsoft.com/oldnewthing/20110802-00/?p=10003/"&gt;dogfood&lt;/a&gt;
some of these technologies in a relatively simple way.&lt;/p&gt;
&lt;p&gt;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
&lt;tt class="docutils literal"&gt;nti.nikola_chameleon&lt;/tt&gt; 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.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</description><category>chameleon</category><category>meta</category><category>nikola</category><category>python</category><category>zpt</category><guid>https://seecoresoftware.com/blog/2017/10/building-a-blog.html</guid><pubDate>Wed, 11 Oct 2017 14:18:55 GMT</pubDate></item></channel></rss>