First post!

TL;DR: WordPress is gone. Replaced with Zola and an automation pipeline that has no business being as complicated as it is. No regrets, though I reckon the pipeline question is one I’ll be answering for a while.

SectionSummary
Why I torched WordPressWhat a personal site I never used was actually costing me
Why Zola specificallySingle binary, no plugin ecosystem, written in Rust
What the migration looked likeExporting a CMS into flat Markdown is messier than it sounds
The over-engineered pipelineThe part nobody asked for

Why I torched WordPress

Maintaining a WordPress site I never actually used was starting to feel like paying rent on an apartment I only visited to check the mail. There was always a plugin update, a PHP version bump, a theme that broke when I looked at it wrong, and a database sitting there as a standing invitation for anyone who wanted to go poking. A whole LAMP stack, running full-time, so that a handful of pages could sit there and do nothing.

The math stopped making sense. A personal site is static content. It is words and a few pictures. Asking a database and an interpreted language to render that fresh on every request is solving a problem I don’t have. So I did what any reasonable person does — I torched it and rebuilt everything as a static site.

Why Zola specifically

Zola handles the heavy lifting. There’s a passel of static site generators out there, and most of them want something from you — a Node toolchain, a Ruby version manager, a node_modules folder the size of a small moon. Zola is a single binary. You download it, you run it, you get HTML. Nothing to install around it, nothing to keep patched, nary a dependency tree to babysit.

It’s written in Rust, which I have opinions about, and it uses Tera for templating — close enough to Jinja2 that anyone who’s touched Python tooling feels at home immediately. It does the things I actually need without a plugin ecosystem held together with duct tape and backwards compatibility: Markdown with sane front matter, syntax highlighting, taxonomies, an internal link checker that yells at me when I break a URL. The build is fast enough that I don’t have time to refill my coffee, which I hold against it slightly.

While I was at it, I brushed up the resume and picked a theme worth keeping. I’ll extend it over time and get a photography section up directly.

What the migration looked like

Getting content out of WordPress is the part the tutorials gloss over. WordPress stores posts as a soup of HTML, shortcodes, and serialized metadata in a MySQL table. Getting that into clean Markdown with proper front matter is not a button you press. It’s an export, a conversion pass, and then a depressing amount of hand-cleanup where you fix the curly quotes, the mangled <figure> tags, and the three different ways the old editor decided to represent a code block.

Come to find out, most of what I’d written over the years wasn’t worth carrying over anyway. So the migration doubled as a cull. What survived got rewritten. The rest got the same fate as the server.

The over-engineered pipeline

Here’s the part nobody asked for. Building the site is one zola build away from done — I did not need automation for that. I built it anyway. A commit to the repo kicks off a build, the output gets packed into a container image, and the image gets shipped to where it’s served. It is far more machinery than a static site of this size warrants, and I knew that going in.

I’ll defend it on one ground: it’s repeatable. The site that’s live is the site in the repo, built the same way every time, with no “well it works on my machine” step in the middle. Whether that’s worth the complexity for a personal blog is an open question, and an honest one.

Baby steps. The WordPress server, however, is dead. Long may it stay that way.


Open Questions

A few things I haven’t settled. Is the automation pipeline actually worth its complexity, or am I just attached to it because I built it? When the photography section eventually goes up, does a static generator make sense for a few hundred image variants, or is that the point where Zola starts fighting me? And the resume — does anyone read a resume on a personal site, or is it there purely so I can say I have one?