First Thoughts on Hugo

Changing technology platforms, for whatever purpose, is always a disruptive experience. You get used to the features and the inbuilt assumptions made by a platform, such as Wordpress, and develop an internal model of how to use the platform to do what you want. When you change platform, your tendency is to try and adapt what you kow to that platform. However, this rarely works as each platform is built around a different set of assumptions and a different model of work.

Hugo is no exception to this. When I initially started looking at hugo about a week ago, my first inclination was to try and replicate the design and organisation of my Wordpress site using hugo - a mistake, as I quickly got tangled up in details such as how to implement pull-down menus, etc.

Hugo documentation is not really beginner-friendly and I struggled a bit until I found an excellent YouTube channel by Mike Dane, which has a set of Hugo tutorial videos. Once I started to get my head around Hugo’s different model of working, then everything got much easier.

You mostly work from the terminal command line to use Hugo. I am fine with this (in the dim and distant past I was a sysadmin for a VAX Unix system) but I found it worthwhile to define a number of shell functions to make things easier. It’s important to be in the right directory when you run Hugo commands as they make assumptions about the organization of the filestore. You also need a decent text editor such as BBEdit.

Good Things

  1. I really like being able to run and maintain the site on my own computer so that I have complete control of everything. One problem with remotely-hosted solutions is that, with the best will in the world, it’s very hard to keep local copies and remote copies of posts and pages in sync. (you get this from any static site generator)

  2. Hugo generates a site incredibly quickly and it has been very reliable so far.

  3. Hugo has a facility to automatically generate a list of pages so that you can create a list of all of the posts and pages in a directory. This happens automatically so you just organize your storage system and pages recording that organization just appear.

  4. I hate the way that Wordpress handles images and, if you have a lot of images, image organization is a pain. I actually ended up hosting all images on Dropbox - but this meant they were very slow to load. As far as Hugo is concerned, images are files so there is no need for special treatment.

  5. Once you understand it, the templates that allow you to define layouts for pages or parts of pages are very powerful. Until you understand them, however, they can be confusing.

  6. Writing markdown is easier than writing html. Not as easy as a visual editor but my experience with the Wordpress visual editor was that it was never quite right.

Bad things

  1. CSS is an invention of the devil and it’s generally hard to understand what CSS relates to what elements on pages. It’s worse with Hugo. It uses a page layout system called Bootstrap which adds more confusion than ever. I ended up simply randomly experimenting with the CSS to see what affected what.

  2. Error reporting is virtually non-existent. If something doesn’t work, all you see is a non-working system. This is particularly disconcerting when all your pages disappear - I have no idea what I did and ended up restoring from a backup.

  3. There are a limited number of themes and many of them are pretty similiar. If you want the kind of choice you get with Wordpress, you don’t get it with Hugo. Unless you find one that’s just right for you, you need to get into template modification and css.

Next steps

I’ve still got quite a lot to learn but I feel I’ve progressed beyond the ‘what the hell am I doing’ stage of using the platform. So far, I’ve tinkered with existing templates rather than writing my own but that’s the next thing I’m going to tackle.

And, of course, I need to sort out some content.