New Year, New Blog

Almost 9 years ago, following the launch of my first major Drupal project, I converted this site to run the software that has shaped my career (and my life) for past decade. However, much like my career, this site was ready for a change.

Everything old is new again

This site is now powered by (or generated by) Jekyll - not entirely unlike the homegrown set of scripts that generated this site before it moved to Drupal. Jekyll has become hugely popular over the past few years in large part due to Github pages.

I knew I wanted out of the maintenance overhead of having a dynamic site (security upgrades, monitoring comments, etc) and spent a lot of time looking around at the various alternatives. I nearly ended up using Hyde because I'm generally more comfortable in Python than Ruby, but the Jekyll momentum means that there are plenty of resources around for doing things.

My biggest goal was to get back to writing instead of applying updates (and thinking of more efficient ways to apply updates). I have never enjoyed writing in a browser window. In fact, the handful of blog posts I wrote last year were all written/edited in Markdown in Emacs and copied to my site after. The move to Jekyll is to bring me closer to that writing workflow.

While I've never been much of a "blogger" per se, it's clear from looking through my archives that I used to write in this space far more frequently than I do now.

No comments?

You may notice (particularly if you're reading this on my site and not in a feed reader) that I don't have any comments enabled. This is deliberate - a statement if you will. I don't think we (the internet) have figured out how to do "social" - by which I mean conversations - in a good, decentralized, federated way yet. I have a lot of thoughts on this whole topic that I hope to share in a separate post.

The setup

On to the geeky goods! I've spent a little time here and there over the past week figuring out how I wanted things to work and the best way to make it happen. My full site is available on Github, but I thought I'd highlight some important pieces:

First up, was pulling all of my old content out of Drupal. Because was running Drupal 7 - the included migrator (which is based on Drupal 6) didn't work. My modified version is in _import. It's specific to my setup, but should be a good starting point for anyone attempting a similar move.

Next, a lot of my site's traffic is generated from per-tag feeds offered by Drupal's taxonomy system. This isn't something that jekyll provides out of the box, so I created a simple plugin to generate tag listing pages and associated feeds.

When you run a Drupal site through as many major versions as I did, things change. As such, I ended up with a bunch of duplicate path aliases. Jekyll, by default, ignores all "dot files" (file with '.' at the start of their name), so I used this hint to include an htaccess file where I keep any redirects/aliases/etc.

Of course, since I wanted to be able to write my posts in Emacs with markdown-mode, I am making use of jekyll.el from Jack Moffit. Creating a new blog post is now M-x jekyll-draft-post!

Finally, I'm using a very simple Rakefile to deploy new blog posts via rsync.

Now I can blog from the place where I do most of my writing (emacs), publishing is a single shell command, and there is 0 maintenance required for my personal blog. Progress!

James Walker

James Walker (a.k.a. walkah) is an independent developer and hacker. He is a long time Drupal developer, but these days spends more time in Python, Ruby and Javascript.

You can follow him on twitter or github.

related posts