Posts from 2026

in praise of BlogMore

When Dave Pearson quietly announced a Python static site generator, I felt obliged to check it out.

I was immediately impressed by the default theme of BlogMore which was minimalist and not dissimilar from the Hugo PaperMod theme and the simplicity of write.as.

Blogmore also had many features built-in which are requirements (or wishlist items) on my blog migration checklist. For example, support for categories and tags with archives and search functionality (which works perfectly and is very quick).

My obsession with static site build time wasn't an issue either. Blogmore generated my site with over 1,000 posts in less than 4 seconds. That is for a full generation of the site (not incremental).

The documentation was also excellent, well written, clear and concise with sample code snippets and aimed at the end user (not experienced Python developers).

The source code to Blogmore and Dave's own site were published on GitHub which was helpful.

Now, as Dave himself freely admitted, Blogmore was an experiment to try to develop an SSG using Copilot. He was clearly aiming to satisfy his own requirements and had no plans to create a general purpose SSG to rival Pelican.

Dave did invite feedback though so I submitted a few issues (mainly enhancement requests). This was partly selfish as the issues mainly addressed gaps in my potential migration from Hugo but hopefully I tried to consider proposing enhancements that would be generally useful to make Blogmore a more attractive proposition for other potential users.

Dave was incredibly responsive and normally actioned requests within 24 hours. Plus the documentation and test suite was always updated to reflect the latest release.

It's probably common in software development but BlogMore's Release Notes even contained a 'BREAKING CHANGES' alert for changes that were not backwards compatible. A useful lesson for Hugo perhaps.

Things I like about Blogmore:

  • Single category, multiple tags.
  • Theme tightly integrated with the site generator.
  • Word cloud for tags and categories.
  • Archive pages broken down by date with counts.
  • Support for clean URL's.
  • Responsive UI- renders beautifully and fast on desktop, tablet and phone.
  • Timestamp formats are just intuitive and easy to understand.
  • Support for 'last modified' field in front-matter.
  • Support for Drafts.
  • Support for footnotes.
  • Support for Table of Contents.
  • Configurable side bar.
  • RSS and Atom feeds available out of the box.
  • Live preview of new and modified posts.
  • Markdown based
  • Flexible code highlighting styles (Pygments).
  • Fast build speed.
  • Python based.
  • Excellent, well written end user documentation (including release notes).
  • Packaged with uv. Easy to upgrade.
  • Handy statistics page.
  • Sitemap support out of the box.
  • Optional minification of HTML, JavaScript and CSS.
  • The quality of the software and pace of development. Dave only created BlogMore in February 2026 and has made 40 releases since then.
  • Number of breakages in the period - zero.
  • Dave's useful Emacs snippets to create posts.
  • Potential for additional CSS customisation and user defined themes.
  • Blogmore publish command. I use Codeberg (not GitHub) but once the overhaul to Codeberg pages is complete this command should work.

If you're contemplating migrating your site to a static site generator, I'd certainly recommend considering BlogMore and trying it out.

reflections on Hugo, GitHub and Netlify

Three years ago I moved my Hugo blog to GitHub Pages and Netlify.

When this end to end process worked successfully, this was brilliant. However, at times, the automated deployment did feel like the game of Mousetrap where a silver ball was released and then proceeded to traverse helter skelters, ride up and down on see-saws, descend zig-zag staircases, cross bridges, trigger catapults, release levers and conquer various hazards before finally launching a bucket to capture a little plastic mouse.

By using GitHub pages and Netlify, I had introduced yet more complexity into the blog publishing process.

Then I decided to add yet another layer of complexity by composing posts in Emacs using Org Mode and using ox-hugo to convert posts to Markdown format.

For the most part, this worked fine which was satisfying and I congratulated myself on my technical wizardry.

However, Hugo occasionally broke after yet another update. Locating and resolving the root cause of these errors was problematic (for me) as the Hugo release notes are very technical and IMHO primarily aimed at Go and/or theme developers. There is hardly ever any section describing breaking (i.e. non backwards compatible) changes or user visible changes.

A random example from the most recent Hugo release (v0.159.0)

This release greatly improves and simplifies management of Node.js/npm dependencies in a multi-module setup.
Replace deprecated site.Data with hugo.Data in tests.
Replace deprecated excludeFiles and includeFiles with files in tests.
Replace deprecated :filename with :contentbasename in the permalinks test.

Failure could be caused by a variety of multiple potential issues.

  1. Was there an error generating the Markdown from the Org Mode source ?

  2. Did Hugo work locally and generate the HTML for the site successfully ? This was normally the most frequent reason for the failure. An Arch update would often update the Hugo package and Hugo updates were quite frequent.

  3. Did the PaperMod theme need updating to reflect the most recent changes in Hugo ?

  4. Do other popular Hugo themes (Ananke) function without any issues ?

  5. Assuming the local Hugo site works, did the push to GitHub work ? Check the recent updates to the GitHub repository.

  6. Did Netlify then get triggered correctly by the GitHub updates?

  7. Did the Hugo build process complete successfully on Netlify ? What version of Hugo is Netlify using ? Is this identical (or compatible) with the locally installed version of Hugo ?

After yet another issue following a Hugo upgrade, I got increasingly frustrated with this frictionless blogging process that was anything but. I was now spending more time fixing my static (sic), unchanged blog instead of writing any new posts.

Once again, I started to consider using an alternative static site generator. After all, I already had migrated my content to each of the popular SSG's I evaluated last year.

My mind was made up. I was going to do it. Just a question of selecting an SSG and actually doing it.

And then Dave Pearson came along and spoiled everything by creating BlogMore...