Both site generators uses YAML. Both defined their posts using Front Matter. There’s even a tutorial on migrating from Jekyll. Piece of cake? God no.

The speeds Hugo claimed to achieve were incredibly appealing. I only had about… 20 posts and Jekyll was already starting to take more than 5 seconds to build on my (albeit cheap) web server. The static file server was already written in Go, maybe I should just go with a full Go solution?

The documentation for Hugo was pretty good, but as a young project there were still some ambiguity for trivial things. For example, let’s say you have a static static page (one you will not change / rarely need to regenerate). You already have some partials defined. How do you go about utilizing these partials in your static page while staying DRY? Here’s the thread of people discussing the various ways of doing it.

Jekyll was nice in that it basically allowed any page to inherit from any other page through the layout: template front-matter. You define the layout you want to use, insert your content underneath and everything works.

Hugo on the other hand was much more troublesome. You can achieve something similar to specifying a layout via the type: page-type front-matter. However, doing so means you forfeit all access to Go’s templating mechanisms. E.g: You can no longer use things like {{ range (where...}} anymore because Hugo expects the content to be either HTML or Markdown. Damnit hugo, I just wanted to rebuild my archive page. And no, there is no “raw” tag or anything equivalent that would let me run code.

That minor inconvenience aside, Hugo’s Taxonomy system phenomenal. No longer do you have to write mind numbing Jekyll Plugins to generate those extra pages you want, Hugo takes care of that for you. The way the layouts are organized is also fantastic. Hugo has a very sane hierarchy for determining the layout it chooses to render the page with.

Overall, I’m fairly impressed with the speed and features Hugo has to offer and will likely stick this this platform in the long run.