Nomadic Journey through Blogging Platforms
I recently found this comic here.
And now I feel called out. The following is one such classic post.
Over the years, I have moved several blogging platforms; I started off with Blogspot, then experimenting with WordPress and Jekyll for a short while, before hanging out on Nikola for a couple of years and finally now on Hugo for the last couple of months.
Back when I started with Blogspot, it was the most straightforward way to go; I did not have the knowledge or interest to look for alternatives. I didn’t find much of a difference shifting over to WordPress. It did have richer features, but nothing I missed on Blogspot. During my Masters, I had started to drift towards a plaintext approach of things. This was when I moved over to using Jeykll.
I started using Jekyll when I moved to Github pages back in around 2014. The experience was fairly decent. Writing posts in markdown and not having to bother about the UI clutter was a big relief. This was also my first time hosting with GitHub pages and, yes, it was straight forward. I used the theme Minimal Mistakes and was drawn to its aesthetics.
However, running Jekyll locally required ruby to be installed, and that was messy. I had no prior knowledge about ruby and wasn’t really interested in learning it as well. So I started looking for alternatives. I had a choice between Nikola and Pelican, as they required Python, and I was fairly comfortable with the language.
Nikola is written in Python and seemed a good fit for me. It had several plugins that were of interest for my use case.
This was the same time I had gotten the hang of org-mode and was moving my complete workflow into org-mode. Nikola had a plugin that could use my org files instead of markdown files – a big plus.
Problems came when I upgraded my operating system. With all its different versions, Python does not play nice with a different version on the system. I used virtual-env for a while, but then again, it had its own share of issues. I would spend a significant time just getting tools to start Nikola. Also, by this time, I found it tedious to use the CLI to create posts. I just wanted to focus on the writing and not on the environment. I heard a lot about Hugo during this time, and the shiny new toy syndrome kicked in. I went ahead experimenting with Hugo.
Right now, I am using Hugo. It seems to tick all my boxes so far. I have most of the benefits as before. Plus, I don’t need to use the CLI as much ox-hugo in Emacs handles the post creation and formatting for me. I can focus on writing.
When it comes to the build tools, Hugo is written in Go. Luckily, it does not require any programming knowledge to set it up and use it.
Hugo natively does not have good support for org-mode files, but ox-Hugo is there to help. I like that ox-Hugo supports all posts in a single file. Now I can have all my posts written in a single file, and this file is kept separate from the blogging platform. If, and when, I change my blogging platform in the future, I would only require an exporter that can export from org-mode to the new platform. Saving me the trouble of migrating my posts.
Notes on content migration
Migration away from Blogspot was the hardest. I had to export the blog, which comes as a single XML file. The contents of the file are one post per XML element. And each post is an HTML document. Thanks to pandoc, I could convert the HTML files into markdown. With some additional scripting, I added the headers to each post as required by Jekyll.
The rest of the migrations were straight forward. Since the files were now in markdown format, they could be used with minimal changes in any blogging tools. When I started using Hugo, I converted all the old posts from markdown into org-mode using Pandoc.