So here we are! As threatened/promised over a year ago, I’m moving off WordPress. Matt Mullenweg has not gotten particularly more relaxed about anything; last week he decided to tell a CSS framework to change names because their current name is similar to his company name. Given that the CSS framework is named Automatic, similar to Mullenweg’s company name, you can sort of see it, but really? No. They already added a disclaimer on their Web site, and “automatic” is a very generic term.
I have still had enough of Mullenweg. Time to move.
I went to Hugo, as expected. It’s not an ideal platform but it’s a workable one. 99% of the blog is intact, with a couple of missing features and one post for which I need to find the original images by hand. They were missing on the existing blog too, though – I think I used some WordPress plugin that got deprecated somewhere along the line. Using Markdown files and Hugo puts me in a much better place.
I also spent an awful lot of time scanning all my old links for stale links and fixing them. There were four parts to that. I did some special processing on IMDB links because their format for direct links to movies changed and I wanted to keep those intact. I also moved all my Twitter links to xcancel.com and/or archive.org. No traffic for Elon plus a lot of those links died when he bought Twitter thanks to people ditching their Twitter accounts. And since I started down that mildly insane path, I also substituted archive.org links for all broken links where they were captured by archive.org, maintaining copies of the original links just in case. The formatting is not perfect, alas. Still better than a bunch of dead links. Oh, and I upgraded HTTP links to HTTPS like a good Web denizen.
Incoming links to the blog should still work, including my RSS feed. I did not bother preserving the comments feed because we don’t have comments any more.
I need to add a Search box back in. I expect to use Pagefind for this, as recommended by Tim Bray. Doesn’t look hard to do but I gotta ship this already before I procrastinate any more.
I also need to figure out syncing with Dreamwidth. Apologies to those who’re missing posts in the meantime. It’s a little tricky because I want to sync, not just push new posts – changes to old posts should update? If possible? We’ll see.
OK, and now to talk about tools.
I used wp2hugo for the initial conversion. It’s simple and the author is finicky about edge cases, which is exactly what I want for work like this. This is probably the least destructive blog platform change I’ve ever done.
I also used Claude Code, which may be more controversial. Here’s my take, in a semi-short version:
I don’t have any use for LLMs as a way to produce “creative” work. LLM text is stale, without any voice other than the distilled mass voice of a million pirated novels.
I have a lot of use for LLM-powered coding assistants. I spent months messing around with this conversion when I started thinking about it, because I was unwilling to do work by hand – all the post-wp2hugo changes I made are scripted so I could go back and restart if I did something that screwed up a later step.
Using Claude Code means I have 4,000 lines of code, most of which I’ve actually read, and I could reproduce the entire conversion in a couple of hours if I needed to. It did not remove the need for engineering skill – it goes off on weird directions and I had to really manage a lot of the code. It’s bad at testing. I still wouldn’t have gotten this done without it.
I am personally convinced that the ecological costs of using an LLM are not significant compared to day to day life. Keeping this blog running for 20 years used way more water; I did the math. At the same time, the OpenAIs of the world are putting datacenters in places which can’t support them. No ethical consumption under capitalism.
So that’s the call I made. I won’t be offended if anyone’s angry enough to, I don’t know, hit unsubscribe on your RSS feed or yell at me or whatever. I’m happy to talk about my thought processes over on Bluesky or in email.