This year I finally got around to start writing about some of my technical projects and programming related tasks. And starting out fresh the quickest way was to use some ready-to-go blogging framework. The choices for this are actually pretty amazing…ranging from microblogging services like Posterous and Tumblr to full fledged blogging frameworks like Wordpress and Blogger. Of those services Tumblr seemed like an especially good fit for my needs.
- Very quick to get something going
- You can use custom CSS elements
- Source code formatting was possible using pygments
- And very important: It allows you to use your own domain so when moving away from Tumblr you can keep the same URL for your blog
So it was clear: I needed a solution for my requirements:
- full control over the generated content
- easy to deploy
- not suitable for my grandma (well, what I mean is: a programmer tool)
But then again the variety of approaches that all might be quite viable for a blog make it hard to settle on one technology. So over the course of several month I have been toying with dynamically generated sites using Rails or Express (an extremely pleasant web framework based on nodejs), and the static generators jekyll and Jasper Van der Jeugt’s wonderful Hakyll framework. Since I didn’t really have a need to generate any content dynamically and also had no data I’d put into a database the more lightweight approach of the later two was fully sufficient.
- minimalistic configuration
- quick test-fix-test cycle
- power of a real programming language to extend it
- definitely a programmer tool!
Practical Blogging with Hakyll
The actual usage of this infrastructure is a real joy: Hakyll comes with a small built in webserver that not only let’s you preview your result quickly but also dynamically regenerates the static content when you change any of the sources!
create post in vim – preview in browser –
edit post in vim – refresh browser –
edit css in vim – refresh browser – …
Much better then any preview mechanism where that requires you to edit your sources in a web form! And if you run into any difficulties, the guy behind it is very helpful and there is a google group where questions get answered.
Since deployment is now a task that has to be addressed individually, it was easy to set up a git-driven process that will publish the generated static content to my webserver. One quick
git push coldflake now takes care that everything is safely sent to my linode server where a post-receive hook takes care of publishing the updated material. Having everything running like this makes blogging a joy again: I use the tools I like and don’t have to fight the system anymore!
The source-code for this blog can be found here.