I finally decided to switch my personal website from Wordpress to Ghost. I've been using Wordpress for a really long time, and I still think it is a great tool for building custom websites. I've use it a lot in the past to build sites for various clients, and I'll probably continue to do so. Customising Wordpress is practically limitless and it has a great developer community. There are countless plugins available for any feature you may need. But for my new personal site, I just want to concentrate on writing, instead of showing my portfolio or the past work I've done.
CMS No More
Over the years, Wordpress has grown from a simple blogging platform to a full-fledged Content Management System (CMS). But since I'll focus on writing, I don't need features that most CMS have. I don't have any use for user management or elaborate plugins. I just need a tool that will let me write in Markdown syntax. It also needs to have a good user experience for writing, and it has to be lightning fast.
I've been writing in Markdown for several years already and I use it a lot to write down my ideas and documentation for my projects. I find it easier to read and write text in Markdown and automatically convert them to other data formats such as PDF or HTML. Prior using Markdown, I'm used to write directly in plain vanilla HTML syntax which gets a bit tedious at some point as your document grows bigger. Writing common symbols and special characters in HTML entity code is such a chore. With Markdown syntax, I don't have to bother with HTML character entities.
Jekyll & Octopress
Before choosing Ghost as my next blogging engine, I tried using other popular blogging platforms that also support the Markdown syntax. So far, I've tried Jekyll and Octopress. These two platforms transform Markdown text to static HTML files. Jekyll is supported by Github and is used in Github Pages.
Writing a post in Jekyll or Octopress involves creating a file that contains a YAML front matter block at the beginning of a Markdown file that looks like:
--- layout: post title: My First Post --- Your markdown content goes here.
If your Jekyll or Octopress site is hosted in GitHub Pages, pushing changes to the master branch using Git will queue your changes for automatic recompilation. If you're comfortable using Git, this workflow is easy to get used to as it is exactly the same process when pushing commits to a Github repo.
Why I Chose Ghost
While it's cool that I can use Git to update my Markdown files, I disliked writing YAML front matter every time I want to write a new post and reloading my browser to view my latest changes. Also, writing posts in Octopress and Jekyll will require me to always have three windows open -- a text editor to compose my post, a terminal to compile my markown files to html, and a browser to preview my changes.
But with Ghost, I just need my browser to write and review my posts. I also find the writing experience more enjoyable. I really dig using the dual-pane editor interface. It's very minimal and simple, yet very functional.
The left pane is where you type in your Mardown text and the right pane shows you the live preview. You can immediately see the HTML rendering of your Markdown text as you type. This is entirely different from Jekyll or Octopress where you can only see the actual HTML generated after you compile your Markdown document. Embedding inline images to posts is also pretty sweet, as you can just drag and drop images to the preview pane.
When finding the best solution, I always employ the Occam's Razor principle. Basically, this priciple states that -- "If you have two equally likely solutions to a problem, choose the simplest." Or simply stated, "Keep things simple".
And so, I chose Ghost as my next blogging platform because it provides me the best user experience for writing text in Markdown. And hopefully, this will encourage me to write more frequently. Writing for the web became more enjoyable again.
Even though Ghost is still in its early stages, I still find it as a compelling blogging platform to use. As of this writing, the current version is 0.4.2. There are still important features that are not yet implemented such as a spell checker and dashboard. But I'm confident these things will be included in the near future.