To commence my journey in software development, I have looked for a Web framework to build my personal blog. I have started writing blog posts mainly using (Multi)Markdown and plan to migrate other posts to Markdown too. Thus, it’s rather natural to go with built-in or first-class support for Markdown to minimise the migration effort.
I have not foreseen any great use of extensive backend storage and computation thus far. Therefore, I narrowed down my search to static site generators with two prominent candidates Jekyll and Hugo popping up, for instance, here, here, and here. Both offer all essential features to bootstrap a new site or migrate existing sites. Nothing can go wrong when you pick either one.
After a week trying both Jekyll and Hugo, I ended up deciding to go with Hugo. It’s not to say I hate Jekyll but quite the opposite. Jekyll is a rather well-engineered piece of software (by the guys behind Github). I love its design, strong community, rich ecosystem, a lot of beautiful themes and good integration with Github.
There is just one thing I do not feel comfortable working with Jekyll is the way to apply a theme. As far as I know, most of Jekyll’s themes ask for copying and pasting theme resources (e.g. CSS, templates) into an existing Jekyll site (please correct me if I am wrong).
This is quite strange regarding the conventional approach of Ruby – the backend of Jekyll. As predicted, I had way too many problems changing themes that cross various Jekyll versions. It should be the other way around. That is, a theme would remain in tact inside predefined folders and be plugged into the Jekyll site via the configuration file. I think this approach, in terms of software design, would be less intrusive and much lower coupling.
Hugo gets this design decision quite right. That’s why I prefer Hugo, apart from its amazing performance. You can easily find numerous compliments for Hugo around the Internet. I just fall in love with the way Hugo allows me to apply and adapt any themes (of course with some extra effort as each theme might often introduce some additional customizable features or variables). Besides, as I desire to learn more about Golang, Hugo would be definitely a nice start.
The longer I play around with Hugo, the more I become passionate about Hugo in particular and Golang in general. The first week working with Hugo has yielded a Hugo’s theme for my personal use that you might find useful, namely, hyde-hyde (based on spf13’s Hyde). My journey with Hugo and Golang has just started but it looks quite bright and promising thus far.
I ❤️ Hugo.