Someone told me about the Octopress blog engine last week, which is a blog engine based on Jekyll, the engine that powers sites such as GitHub Pages. The main difference between Octopress and plain vanilla Jekyll is with Jekyll, you have to write your own Templates, Styles, and Javacscript code, but with Octopress, it has been abstracted away. All you need to do is clone the Octopress repository and start writing posts (or migrating posts in my case). With that being said, I have spend the past week migrating my blog from Wordpress to Octopress.

Here are some of my initial thoughts, first on Wordpress:

  • Compared to when it first came out, Wordpress is now too heavy for a simple blog. It has the functionality of a content management system, and that is why sites like TechCrunch use to manage their content. They also have an army of authors creating content, vs one for my blog.

  • Every time the admin site opens, it says that an Wordpress upgrade is available. At first this was neat, a one click upgrade, but now, it is becoming a bit of a risk. A lot of effort has gone in to the site, and if for some reason the upgrade process is not clean, it can break a lot of things. Clearly, you should be backing up as you go along, but then it is no longer a one click upgrade.

  • The process of writing a post is very heavy. First you need to log in to the Admin site, start writing the post in html markup. If you want to include code in your post, there is not really a clean way to do this. To preview your post you hit preview, but most of the time the code plugins do not behave correctly thus the only real way to preview is to publish the post.

  • An internet connection is required to do anything. This is not 100% true, as you can always use a tool such as Mars Edit to write the post offline, but the preview never looks the same as it does when published on the real site. It also doesn’t understand how to preview or author code samples.

Now my thoughts on Octopress:

  • It is based on Ruby which is Cool!

  • No database required! Again, since Octopress is nothing more than a Template Engine, the end product is static html that you can copy to any host and it will be live.

  • Since Octopress is a template engine, not a blog engine, you have your entire blog including all your posts in a single project. This works out great because you can open the project in RubyMine and see your posts as Markdown, your design as Sass and CSS, and your site layout as Liquid Templates.

  • The writing process is very Agile, as you can preview the site as many times as you want without having to copy/push/deploy code anywhere. All that you need to do is cd in to your blog’s project directory and type rake preview and browse to localhost:4000

  • You can write posts in Markdown, which happens to be my favorite way of generating web content (thanks to GitHub and Stackoverflow).

  • There are a variety of great ways to embed code within a post. The first great option is to use the neat GitHub notation by surrounding your code with three tick marks. The second is to use the Liquid Template notation, which is equally nice. Lets not forget that you can include a GitHub gist VERY easily, just { gist gistIdNumber }. Can’t get much easier than that! Last but defiantly, not least is you can include a source file from the filesystem.

  • Code samples look fantastic when they are rendered in the Solarized themed code viewer! Hers’s a sample:

  def fib( n:Int) = fib_tr( n, 1, 0)

  def fib_tr( n: Int, b: Int, a: Int): Int = n match {
    case 0 => a
    case _ => fib_tr( n -1, a + b, b)
  }

It has been about a week and my blog is completely migrated over to Octopress now. It has been a rather enlightening experience for me because Octopress and Wordpress are so different. Bottom line is Octopress was written by and targeted at hackers, and that fact inspires me at a level that Wordpress never was able to do. I am hoping to leverage that hacker inspiration to get my self writing posts on a more regular basis starting today.