Sunday 15 January 2017

Blog engines

I love writing blog engines. And yet, I hardly seem to blog. I’d say in the last three years I’ve spent more time writing blog engines than I have blog posts.

Here’s a quick break down of the all the blog engines I’ve written / used.

With the exception of a timeline, there is next to zero narrative here. You have been warned.


B10g is my current (as of January 2017) blog engine and you can view the source code on github.

I wrote it so that I could wrap my head around Elixir and Phoenix. I imagine I will also adapt the UI to use Elm soon also. When I do I will be sad to get rid of the minimal inline raw JS implementation of the UI.

One of the nice things about this blog engine is that it is multi-tenancy. I run Jo’s blog off it also, although she as of yet, is yet to post anything. Hmm. Anyway, the interesting bit about that is that I am using a GenServer to process every http request to ensure the site that is being served exists in the application. Previous versions of the application also kept the posts hanging around in memory, but I decided against that and removed that pattern.

The ui has live preview (websockets via Phoenix channels) and also the posts do a live update if they are being edited whilst you’re reading them (or typo fix is more likely for me)

I’m still very much developing this engine. I’m learning a lot from it but there is still a lot to do.


I used Hugo, from September 2015 until November 2016.

Obviously I did not play any part in authoring Hugo, I just used it. It was the version before it got Amber support ( 0.14 I think). At the time I wanted to get away from having a server and really liked the idea of a static site generator. I had it set up so that hugo was publishing to s3 when I updated the master branch which was great, except that I basically stopped blogging at exactly the same time I made the switch.

blog 90

I used Blog 90 from May 2015 until September 2015

Blog 90 was my shrine to Helvetica and was written in Node and it used Koa and the UI was done using React. I remember being very exited about the Helvetica design. I love Helvetica. This was just your run of the mill blog engine.

I think I stopped using this simply because I was on a drive to kerb my personal technology bill. I’m not convinced saving $15 a month on Heroku made much difference.

Node Markdown Github Blog

I used node markdown github blog (catchy title right?) from Nov 2014 until May 2015. Let’s just call it GH node thing.

I remember that this was the first engine I had built that was not Python. This was a big deal for me as at that point in time I had been using Python / Django exclusively since 2007. The use pattern was a bit odd. Basically you connected a Github repo that was full of your posts by registering your GH node thing URL as a webhook on your blog post repository. You then write your posts using whatever editor you wanted to and used git to push then up to Github and the webhook would take care of the rest.

I went down this road as I wanted to challenge the assumption that a blog engine had to have a UI.

I remember at the time being thrilled at this, even though I had to start worrying about handling image uploads myself.

Django Omblog

I think I used omblog from 2012 right up until November 2014. It had a few incarnations and was born out of the blog on my personal website.

The name was based on the old name of an old company I toyed with running (Obscure Metaphor).

I hacked on this for ages and it endured for ages. It was the first really django app I got my teeth into. I had plans to do a v2 based on Ember. That never happened.


This was active from 2007 until 2014 although in 2012 I split out the blog into the above omblog django app.

For a long time the blog engine I used was baked into my own website. My website used to have loads of things going on. At one time it was a life stream that connected my instagram, and twitter feeds and displayed them in real time.

It also went through lots of incarnations. It started off as Django in 2007, then went to rails in Dec 2010, then went to Flask in 2011 and finally came back to Django in June 2012. It was hosted on webfaction.