Those of you who follow my RSS feed might have noticed a few updates of old posts. Sorry about that.

It's because I've switched blogging platform from WordPress to Ghost.io. Morkeleb.com is now hosted on Ghost.io's infrastructure and I've changed to using DNSimple for the DNS configuration.

Further down I'll go through why I decided to switch and the work I needed to set up the blog on Ghost.io.

Here is my reasoning for switching and what I considered

I grew tiered of WordPress. It felt as if it grew larger than what I needed. Since I had it hosted at One.com I needed to go in and update the plugins and system every now and then. But most of all, I didn't get the feeling I wanted to have.

Looking around I knew I had two options that fit bill of what I wanted

  • Jekyll on GitHub
  • Ghost.io

Jekyll

Jekyll would let me write my posts in markdown, which I like. I would automatically get version control of my documents, and I could even work offline with my blog posts!

While all this is nice what I'd end up with would be a static site hosted on GitHub.

I have this gnawing feeling that I'd prefer GitHub to focus on hosting my git repositories.

Ghost.io

I've been looking at Ghost more or less since it was announced. I've had the blog exported to Ghost running on Azure.

The interface is simple, and the templates available look great.

Ghost Pro vs. hosting myself

There is a ready website configuration and build on Azure. Allowing you to set up a Ghost in minutes on Azure's infrastructure

After setting up the blog on Azure to test it out. I started to notice that I needed to keep Ghost up to date. Which was something I wanted to get away from.

In then end I realized two things.

  • I'd rather spend time writing than keeping the blog updated.
  • The money I pay for Ghost Pro goes to sponsor the opensource development of Ghost.io.

Besides with the content in markdown I can always fall back on GitHub pages if I want.

With that in mind I went for Ghost Pro.

Custom domain configuration of Ghost Pro

Pointing www.morkeleb.com to Ghost's infrastructure was more troublesome that I thought. The old blog was hosted at one.com. One.com's DNS configuration couldn't handle the alias setup required for pointing the root of morkeleb.com to Ghost.io.

Their only option was to have a frameset setup, which goes against some of my core beliefs.

I already have an account at DNSimple so I thought I'd move the domain there so I could do the DNS setup I wanted.

DNSimple has a special URL record that does a 301 redirect to the given url. I used this to redirect morkeleb.com to www.morkeleb.com.

For www.morkeleb.com I set up a CNAME pointing to the given Ghost.io blog url.

Given these two DNS settings I could update Ghost.io's custom domain setting in their portal.

Getting WordPress content to Ghost.io

There is a plugin available for exporting the content of the WordPress blog into a json file that can imported by Ghost.

Doing that I quickly become aware of some of the problems with having wordpress producing blogposts in HTML format.

The blog posts contains a lot of HTML code that needed to be cleaned up. Some of it from my Facebook like plugin, that added a div at the end of each post with a Facebook Like widget.

In the end I used Vim to remove the unwanted divs, but there were posts with other html tags that I had to clean up.

I went with Google Analytics and focused the updates on the posts with the top hits.

How is Ghost.io?

I've been working with around 250 posts and pages in Ghosts administration views. The admin views lack bulk handling or some way of making it easy to find a specific blog post.

Besides that the interface is clean and easy to work with.

There are some downsides which make it a bit more technical to work with.

There is no real built in way to adding Google Analytics right now. I had to either add it to the template or add it using a lab feature where you can inject code in the page header. The template I chose is called Ghostium and has Analytics support built in, but requires some configuration.

There is no post scheduling yet, and there are some other features lacking. Post filtering and searching in the administration interface would be my first pick.

However there is a lot of work being done on Ghost, and their backlog is public. We'll see if the planned backlog and the actual delivery follows each other. But I truly enjoy Ghost being developed open-source, allowing me to see how things are going.