home about

Blogging With TextEdit + Jekyll

January 14, 2011

I thought it would be worth describing the setup I use to run this blog, mainly because I wanted to advocate a system that works much better for my needs than the more popular solutions.

Services like Tumblr and Blogger are nice because they are easy to use, but they don’t provide the flexibility I’m looking for. Cramming a huge block of template HTML into a text field is not my idea of customization.

On the other hand, setups like WordPress, Movable Type, and Drupal take the wrong approach entirely, in my opinion. Most blogs and websites are completely static, so rigging up a PHP/Perl/Java/COBOL/whatever frontend with a relational database to deliver blog posts is like using using a fire truck to water your flower bed (even though that does sound kinda awesome in its own way).

And if wasted CPU cycles and memory weren’t enough, there’s also too much configuration and maintenance overhead with these systems. You’ll need the right versions of PHP and MySQL installed on your server, and your database has to be populated with the right tables, users, privileges, and so on. None of this is rocket science, but it’s another maintenance liability that I just don’t need. And migrating my site to a new host later is guaranteed to be a blast.

Less Is More

It turns out that the simplest, most efficient way to serve static content is … to build your site with static files. (Surprise!) Then all you need to host your site is any ordinary webserver.

Of course, the only remaining issue is a big one – how to manage all of those static pages? Maintaining a whole blog by hand is out of the question if you value your free time (or your sanity) at all.

That brings us to Jekyll. In short, Jekyll is a system that uses a set of input files (templates and content) and spits out static HTML files in much the same way that a compiler produces an executable from source code.

There are a lot of benefits to a system like this:

The nerdy engineer in me is thrilled by a system that does everything I want, does it efficiently, and does it elegantly. It’s a rare combination.