New Home for My Blog

I am excited to announce that I have moved my blog from Blogger to Ghost, a NodeJS blogging platform.

Background

In 2005 when I started the blog, the easiest thing to do was to snag a blogspot account and start posting. Over time the blog became more popular and really outgrew what I would want to do with it on Blogger.

But inertia is a terrible thing ;-) I remember having a conversation with Matt Mullenweg (founder of WordPress) 7 years ago and he told me how easy it was to migrate my blog to Wordpress. I promised I would since it was a much better platform. But I never did it. It just always felt like a little less important than all the other things in my life.

5 yrs ago, Theresa Neil & I released our book Designing Web Interfaces (and yes it is sorely in need of an update) and a companion blog on Wordpress. I liked Wordpress, but I didn't love Wordpress. I think it had to do mostly with having to hack away in PHP. Mind you I don't hate PHP. I just don't love it. Due to this I found even less reason to move the blog over. I mean if I am going to move to a new blog platform I better really like the environment and believe in its mission.

Enter Ghost

I was really excited when the Ghost blog platform was started on kickstarter. It combined several things I really liked.

1. Markdown for Editing

I really hate writing a blog post and having to mess with a rich text editor or having to think about markup. I just want to write something. Blogger was terrible in the markup it generated. I felt dirty every time I wrote something. Not a nice thing to have run through your mind while trying to inspire the masses.

But markdown -- now that is a [different story](http://www.fastcolabs.com/3015487/john-gruber-and-jeff-atwood-explain-why-markdown-is-still-growing-up.

One of the challenges you face when you are in a field for a long time is you get too comfortable with a particular set of tools. Github introduced me to the simplicity and beauty of markdown for writing. In fact the current book I am writing, I use the Mac app Ulysses which has a nice markdown environment.

In Ghost, markdown becomes the lingua franca of blogging. It has a simple side-by-side markdown/preview editor, which allows you to focus on the writing and not on the formatting.

2. NodeJS as the platform

In case you didn't know, I love NodeJS. It has helped us start a revolution at PayPal for our engineers and soon for our customers as experiences will start rolling out faster in 2014.

The good news is Ghost is built on NodeJS. Not PHP. And not some bizarre 2001 platform like Blogger. Given that it is node I can spin up my blog locally or host it on nodejitsu (or any other cloud supporting node) or I can host it on ghost itself for a nominal monthly fee.

Knowing how your blog works -- from how it stores your blog content, how it renders it, and how it gets deployed is really attractive to me. It's also perfect that I can keep my blog as a git repo.

3. JavaScript Templating for Themes

It's simple to grab themes or write your own themes. It uses Handlebars templating so it is simple to work with. Ghost provides a hosted solution. Currently there is limited access, so as of this writing you will need to signup for an invite. Once you download a theme, it is straightforward to hack your theme, run it locally (or on another platform like nodejitsu) for testing. Then when you are ready to use the theme live, just upload it to the ghost.io platform and you have your new look & feel.

Moving from Blogger to Ghost

Since Ghost is still early on, there are no direct import tools to bring Blogger posts to Ghost. What I did was use the Blogger to Wordpress export to create a dump of my blog posts. I then set up a temporary wordpress blog on one of my Dreamhost sites and imported the posts there.

Getting the Posts to Ghost

I installed the "Wordpress to Ghost plugin in my temp Wordpress blog. From there I was able to export a JSON file suitable for Ghost to import.

Because I could install Ghost locally it was easy to import the JSON file and verify that all 200+ posts had made it over correctly. Of course I found issues. There were links to images stored on blogger, links to resources that were scattered all over one of my servers and some links were hardcoded to the blogspot blog. Nothing broken in the import. Just my own sloppiness over time.

This gave me a chance to clean up all the links, and formulate a better strategy for where to put files for my blog and so on. It actually felt good to clean up 9 years of crufty stuff.

Hosting Decisions

I experimented with hosting the new blog on nodejitsu. The big issue right now is jitsu deploys are destructive so each deploy blows away your content (the blog database is stored in the content directory and thus pushed with the deploy). Martijn Swaagman has helpfully written a persistent-ghost wrapper for nodejitsu that allows you to install ghost with the jitsu CLI and jitsu deploy. This copies the database out to its mongo grid, does the actual deploy and then restores the blog post from the mongo backup. Yes, it is admittedly a hack, but it seems to work fine. However, I did run into an issue with running my blog locally in this configuration. The node module node_sqlite3 doesn't install correctly with node-gyp so you have to do a manual install instead.

In the end I decided to just go with the Ghost hosted platform. I figured I would get better support, better analytics, automatic upgrades, and managed hosting.

But in any case, having the ability to run your blog locally or on any node-based cloud solution is a fantastic solution. Even if Ghost.org failed as a company, I have the blog software (it is open sourced) and can deploy it and manage in any way I see fit.

Themes

For the theme, I started with a nice simple one called WillSong. I did a slight hack (which I will contribute back to his project) to get it to be a little better at responsiveness for mobile. I also added a third column for a bio area and other blog information.

What I like most about the themes is they are easy to change. The templating is based on Handlebars and you can use any client side technologies to power the rest of the theme. Since a theme is self-contained, you just zip it up and can upload it to the hosted blog and you have the new look & feel.

The Real Test

For me the real test will be how more likely I will be to blog on a consistent basis. A lot of my current thinking goes into tweets or into presentations. However, just writing this blog post in Ghost was so much easier than writing it on blogger (or even wordpress) that it has me hopeful.

Will let you know how it progresses in a few months.

You can subscribe to the rss feed or you can follow me on twitter where I will always tweet when I have a new article posted.

Anyone else plannng to use Ghost?