I've been looking into web frameworks for building a simple site. I want something extremely lightweight, yet something that would still save me the effort of duplicating lots of boilerplate HTML any time I want to add something. My most recent previous experience is with "b2evolution":http://www.b2evolution.net, which I found complicated to customize. In general, anything that keeps content that is generally only rendered in one or two ways (such as blog posts) in a relational database seems like overkill.
h3. Why Jekyll?
After looking around a bit, I came across "Jekyll":https://github.com/mojombo/jekyll. Unlike other open source frameworks, Jekyll merely acts as a pre-processing engine that generates simple static HTML. Content can be stored separate from templates in one of several supported lightweight markup languages, such as "Textile":http://en.wikipedia.org/wiki/Textile_(markup_language). Jekyll also provides some powerful tools for rendering content in different ways using the "Liquid":http://www.liquidmarkup.org engine.
The real strength of Jekyll is its template capability. Templates allow layouts to be shared among any number of content pages. Templates can recursively reference other templates, meaning even the most general boilerplate HTML only needs to be defined once.
Jekyll also works with "Pygments":http://pygments.org for syntax highlighting.
h3. Jekyll on NearlyFreeSpeech.net
Jekyll is a natural choice for a site hosted on "NearlyFreeSpeech.net":http://www.nearlyfreespeech.net. Instead of charging a flat monthly rate, NFS.net charges per quantity of resource used by each site. Since Jekyll generates completely static sites, there is no need to pay for SQL processes or even a dynamic site. This ends up being extremely cost effective for a simple site, while maintaining many of the benefits of dynamism through the power of Jekyll's templates.
I've read a "recommendation":http://hayley.ws/2010/12/04/getting-jekyll-running.html to install Jekyll directly on the site's NFS.net share and to even host the Git repository there. I find it simpler to run Jekyll locally and simply publish the static site using a Make target:
This target simply synchronizes the local Jekyll-generated static *_site/* directory with the public folder on NFS.net. This set-up allows me to test out changes locally before I publish them.
h3. Thanks to...
* The developers behind "Jekyll":https://github.com/mojombo/jekyll, on which this site is built
* "codahale.com":http://www.codahale.com for inspiration for a minimalist style of web design
* "IconDock":http://www.icondock.com/free/vector-social-media-icons for some of the social media icons I use on the "contact page":/contact.html.
* "Paul Robert Lloyd":http://www.paulrobertlloyd.com/2009/06/social_media_icons for the GitHub icon I use on the "contact page":/contact.html.