I finally got done, moving the blog from Nikola to Hugo today.
I already wrote about why I did it.
These are a few more thoughts about what went into the endeavour; and some colophonesque details.

One, really small hope, is that it will help me learn Go.
The DevOps world that I now seek to enter, speaks Go.
I also, now run two Go programs that are indispensible to me, Hugo and Miniflux.
And being the control freak, that I am, I’d love to tweak them to just how I like it.
Nikola did help learn me Python, after all.

Speaking of Nikola, I’ve used it for close to four years now, until I moved.
I was a refugee from a self hosted Ghost install. 1
I love it to death.
It’s done all I’ve asked of it … and more.
And it’s been fast and stable all these years.
The community (primarily Chris) have been kind and patient and really helpful.
Chris and Roberto and the rest of the gang, have built something rugged and enduring.

So other than having something fun to do while I was down in the dumps, why did I move to Hugo?
I like to learn by reading.
So other than practicing Go, the best way to learn it would be to read code.
And what better place to read code, than that of the tool I use to write? 2

Another point, is that I probably outgrew what Nikola gave me out of the box, and customizing it (and learning how to) was something that I just couldn’t quite wrap my head around.
While Hugo is probably the same way and its documentation is not quite as structured as Nikola’s, it is pretty popular and I can get answers to what I want to do, really, really quickly. 3
And Hugo has an awesome book, to learn from.

So, how did the move go?

  • I wrote a tiny bespoke Python script, 4 to convert all my Nikola front matter to Hugo front matter.
  • That took me half a day, but it converted 677 posts, that I was dreading, I’d have to do by hand and would take me weeks.
  • I wrote another bespoke script to convert some gnarly tags that Hugo choked on.
  • And just like that, my biggest boulder just fell into place.
  • That left me free to write a couple of what Hugo calls, Shortcodes, to ease my writing.
  • I started with shortcode (a custom horizontal rule) and ended up with four! 5
  • I customised the base as well as the theme’s config to make the site look like I wanted it; (from its various options.)
  • And I added some custom CSS, to have custom horizontal rule and footnote styles, change the look of the links in the menu up top, style my subscribe form, and
  • Included the beautiful font you are reading this in.

In a word, slow, steady, iterative progress until I was done.

And who and what inspired me and who do I owe gratitude to?

P.S. Subscribe to my mailing list!
Forward these posts and letters to your friends and get them to subscribe!
P.P.S. Feed my insatiable reading habit.


  1. They decided to move their editor away from being purely Markdown. I get why they did it. But it just wasn’t for me. I wanted something simple. ↩︎

  2. sorta kinda, like learning about cars, by looking under the hood of your own car, like in the old days ↩︎

  3. even with something as weird and esoteric as the site refusing to build, because of emacs crapping in the content folder ↩︎

  4. related post coming later … ↩︎

  5. the aforementioned horizontal rule, two to center images and captions and one for my subscription ask at the bottom of the post. ↩︎

  6. Nearly everything I did here, I cribbed from his blog config ↩︎

  7. which ofcourse, is where I spend my entire day. ↩︎

  8. I was hesitant to plonk down the money for Valkyrie. But I forgot all about that, once I saw my words rendered in the font. So, I am chalking this down to an investment. Besides Matthew’s prices are value for money (I’m just a little broke at the moment, hence the quibbling) and his usage license is generous. ↩︎