I am tired of Wordpress. Don't get me wrong, Wordpress is a really powerful blogging engine. But do I really need to have a complex software to do my occasional blogging? Whenever I need to do something that is not built directly into Wordpress, I start hunting for a plugin that does the trick. Then I fiddle it into my template, and during the next security upgrade, everything breaks. The consequence: I don't update my Wordpress installation often, which is a really bad idea. Most compromised webservers have been opened using the web applications they serve.
In the early days I wrote a small generator that took a bunch of scripts that generated a static site and uploaded it to a simple webspace. Although simple, it worked great and did not require any scripting language or database on the server side. Now, I am going back to it.
Jekyll is a static site generator written in Ruby by Tom Preston-Werner, co-founder of github.com. In "Blogging Like a Hacker" he introduces the system. I write this text in vim. Then, jekyll takes the text (formatted in Markdown syntax) and renders the website, using various template files. The tags are stored as properties associated with each post. When I create the website using a Rakefile, a task collects all tags, builds index pages and creates the tag cloud. In addition, the list of blog entries is updated and formatted. Everything is nice and simple. An integrated Webrick server allows me to check how the page looks in a web browser.
This is the first time in years that I actually care about the look of a website. Since jekyll does not provide a default layout, I wrote one from scratch and learned a lot along the way. The layout is implemented using the Blueprint framework. The font ("Vollkorn") is provided by Google. I used Adobe's Kuler to select the colors. Surprisingly, this was much simpler than to fiddle with various Wordpress templates.
The cool thing is that I can store the whole website in a git repository (its just text, after all) and use rsync to push it onto my server. No dynamic components are needed. One disadvantage is that I don't have comments yet, but I've seen people integrating Disqus, so it can be done.
What follows is a collection of links that were helping me to understand Jekyll and CSS:
The image has been CC'ed by B Tal, thanks!