This website has undergone a number of revisions over the years, but the predominant theme was simplicity and the use of basic HTML. When I switched from Apache to Nginx, I also switched the financial calculators from perl to python. Image galleries moved from BB Gallery to a simple CCS-based carousel. Not happy with that, I looked at other content managment systems (Wordpress, Mezzanine, Django, Wagtail, etc.) and while Wagtail looked like the best for what I wanted to do, it was overkill for what was really needed for this site, and meant everything was running from a nginx/python/postgresql setup. So development and deployment stalled.

And then one day while exploring Wordpress I ended up looking at static content generators. Lektor was the first one I looked at, and then Nikola. But then I found Pelican. It seemed like an interesting solution, with just enough Goodness to make a nice site, but no back-end extras (or security issues!) to worry about.

Pelican alone was not sufficient to build a nice website, so finding a good theme was next. I thought I’d build my own, but CSS is not an area of expertise, and building even a remotely complex (and nice-looking!) theme was more than I was looking to do. Enter m.css, and a non-bloated CSS framework. Best of all, there was a Pelican theme already built that I could leverage.

While Pelican and m.css worked well enough, there were still a few rough corners (especially with the navbar creation). Jamstack was discovered, and while researching that I found some videos extolling the virtues of 11ty. Although 11ty is written in Javascript it seemed relatively self-contained, and was trivial to get working. After much mucking about I settled on TailwindCSS for the CSS bits, and AlpineJS seemed to be a natural fit as well.

11ty was OK, but processing images (just two generated sizes for each) seemed to take a while, Even though I happened to upgrade to a much faster machine a full site build was taking about 16 seconds, and that began to get annoying. Further, Javascript is not a language I get excited about, and there were a number of security issues in ‘required’ npm packages. So not being overly happy with the npm ecosystem in general I was keeping my eye out for something else… but what?

One day I was playing a bit more with the Go programming language, and decided to have another look at Hugo. Once I figured out how it wanted to layout the directory structure it didn’t take to long to code up a generic “picture gallery” that is able to pull in a .json file containing filenames and picture text and generate 5 scaled copies of each picture and photo gallery pages. Better still, full site generation (with 5 instead of just 2 images for each original) generated the entire site in a little over 3 seconds. So yes, Hugo is FAST.

So now the site is generated by Hugo, using Tailwind 2.0 CSS, and AlpineJS.