After running this site on Hugo Academic (and its many incarnations) for several years, I finally pulled the plug and migrated to Blowfish. Here’s why, and what the experience was like.
The identity crisis#
If you’ve used this theme, you know the naming history:
- Hugo Academic -the original name, a clean academic portfolio theme for Hugo
- Wowchemy -rebranded around 2020, new name, new organization, new module paths
- Hugo Blox Builder -rebranded again, with yet another GitHub org, new module paths, and a new “no-code builder” marketing angle
Each rename brought breaking changes. Module import paths changed, config file structures were reorganized, template names were updated. Every time, you had to hunt through changelogs, update go.mod, fix config files, and hope nothing else broke. Documentation often lagged behind or still referenced the previous name, making debugging a guessing game.
The stability problem#
Hugo Blox had a recurring pattern: a new Hugo release would come out, and the theme would break. Users would open issues, wait for fixes, and pin to older Hugo versions in the meantime. Then a Hugo Blox update would come out that required the newer Hugo, breaking anyone who hadn’t upgraded yet.
The Hugo forum and GitHub discussions are full of users stuck between incompatible Hugo and theme versions, with errors like can't evaluate field File or missing output formats. The typical advice was to pin Hugo to a specific version or start from scratch.
For a static site generator -something that should be rock-solid and boring -this was way too much maintenance.
The open core question#
Hugo Blox is technically MIT-licensed, and the core framework is genuinely open source. But the project operates on an “Open Core” model, with paid tiers (Plus, Pro) for cloud editing, AI features, and premium blocks. The free tier is complete and functional, but the commercial pressure shapes the project’s direction.
This isn’t inherently bad -developers deserve to get paid for their work. But when a project’s priorities shift toward selling premium services, the open source core tends to get less love. Bug fixes slow down, documentation pushes you toward the paid product, and the “free” experience feels increasingly like a funnel.
For my personal site, I wanted something with no commercial agenda -just a well-maintained theme that does its job.
Why Blowfish#
I evaluated several Hugo themes and landed on Blowfish for these reasons:
- MIT license, no open-core, no paid tiers, no upselling
- Tailwind CSS -same foundation as Hugo Blox, so the transition was natural
- Actively maintained -regular releases, responsive maintainer
- Built-in features -search (Fuse.js), dark mode, KaTeX math, Mermaid diagrams, code copy, table of contents -all without extra build steps or plugins
- Simple architecture -standard Hugo theme, installed as a git submodule, no Hugo Modules complexity
- Clean documentation -one name, one set of docs, no confusion
What the migration looked like#
The migration touched about 215 files :
- Config: Rewrote all YAML configs as TOML (Hugo Blox used a bespoke YAML config structure; Blowfish uses standard Hugo TOML)
- Content: Renamed directories (
post/→posts/,project/→projects/, etc.), updated front matter across ~60 files, renamed allfeatured.*images tofeature.* - Layouts: Created compatibility shortcodes for Hugo Blox-specific ones (
spoiler,callout,audio, etc.), built custom layouts for publications and talks, and wrote a Reveal.js slide template to replace the Blox plugin - Search: Dropped Pagefind (which required an extra build step) in favor of Blowfish’s built-in Fuse.js search
- Comments: My custom Bluesky comment integration worked with zero changes -just dropped
layouts/partials/comments.htmlin place
The whole thing built on the first real attempt (after fixing a few missing shortcodes). The site went from a 10-second build with Hugo Blox to under 1 second with Blowfish.
What I lost#
Honestly, not much:
- Work experience timeline on the homepage -recreated using Blowfish’s
timelineshortcode - Tag cloud widget -replaced by a Tags page in the nav menu
- All-in-one scrolling homepage -now a profile page with recent posts; other sections are separate pages
- Plotly chart shortcode -only used in draft posts, commented out
Was it worth it?#
Absolutely. The site builds faster, the config is simpler, the theme is stable, and I’m not worried about the next rename breaking everything. I can update Hugo without checking if my theme supports it first.
If you’re still on Hugo Blox and dreading the next update, consider making the switch. The migration is a bit of work, but the result is a simpler, more maintainable site.
