Goodbye, Wordpress! Goodbye, dynamic website world!
I’ve used Wordpress for as long as I can remember. Even as a wee lad, I’d play around with templates and plugins and whatever else, and create website graphics with GIMP until I’d have my perfect site. Later, at university, I learned how to make my own dynamic websites via CraftCMS, I learned how to make entire webshops, mobile apps and so much more. I like Wordpress a lot, I liked its writing experience, I liked its new block system well enough (better than the old one anyway), and the blog writing experience in it felt special.
Yet, I’ve just killed off my final website using it. How could that happen?
Act 1: A modernization task
Back when I worked at Audacity, we had a horrible wordpress installation. All that site really needed to do was host some links to downloads, yet, somehow it absolutely sucked at it. Adding a new release required updating the front page widget, the download widgets for windows/mac/linux and then the download pages for windows/mac/linux with the checksums, except you these download pages had all sorts of other nonsense on them too so even finding the checksum section on it was difficult. Downloading would have a text countdown buried in this text sea, the server was extremely slow outside of the cache and for some reason, the installation hadn’t been updated since 2019, instead the security model chosen was to put wp-admin behind a HTTP basic access auth. All in all, what should be an easily fully automatable task ended up being positively painful, and our tech lead Dmitry, one of the sharpest minds I’ve ever met, would spend an hour updating the damn site.
After an amount of time that was entirely too lengthy, we finally were given the go-ahead to just make a new site in 2023. We weren’t given any additional resources, so our developers still were on proper big-boy C++ tasks and the muse-wide IT team had bigger fish to fry on ultimateguitar or something, so the task ended up with us Audacity designers, Alex and me. On paper, I had the stronger skills, having done React apps and custom CMS sites before, but I also was somewhat dreading it as I didn’t particularly love working with either. So Alex ended up pulling the trigger and whipped together a prototype in Astro. And thank god he did.
Astro is a static site generator, which means that instead of dynamically generating a page by bringing content and layout together upon request by the user like wordpress would do, it creates all of these pages ahead of time, so you end up with static HTML pages on the server. However, unlike editing static HTML files, you still keep your separate components in the source. Also: Unlike wordpress which does everything in php, Astro uses regular HTML for most things, or perhaps React if you need it for a component.
This ended up being an absolute perfect fit for what we wanted to do. Updating the release across various pages became as simple as editing a JSON. Hosting became as simple as publishing to Github pages, no need to pester any IT people. Page speed went through the roof. Development was nice. Blogposts were as simple as writing an .md, Astro took care of the rest for me.
My only regret in retrospect is that I didn’t stop Alex from also using Tailwind as he wasn’t comfortable in CSS. It meant that every time I needed to do a style change, I had to search which cryptic shorthand Tailwind ended up using for the feature. Tailwind was the first time I developed strong opinions on programming best practices, though ultimately none of that mattered. I had seen enough to know that this is what I wanted to do more of in the future.
Act 2: Robots
I immediately went to try porting my agency’s kw.media site from Wordpress to Astro using Copilot in VSC, but Copilot just couldn’t. Rather than porting, it kinda brought over some pages, but heavily changed the text in it. It also never quite got a multi-language thing going. So, I left things where they were in Wordpress, and went on to do whatever it was I needed to do for work.
Then, on June 18, 2026, I decided it was finally time. I had finished my gig at Audacity at this point, the robots had gotten much smarter, and I tasked them to port everything over. And they did! Between the robot and some manual work, the port was done in a day. In fact, the robot was so good in doing the work that I grew complacent and after mostly visually checking that everything was alright, I asked the sysadmin to switch us over.
This is where I learned the valuable lesson that Robots are lying bastards. The robot indeed had ported everything over – but kept hotlinking the wordpress images from the old site. Goddamnit. Luckily I still had backups with most images present, and frankly, some of the images on the website did need some improving.
However, the robot had proven that it could now simply port things over. But could it do more? For a while, I fell into a vibecode-fever. I had it make various tools, many using ffmpeg in the browser, for some it did, to my knowledge, novel algorithms (eg a checkerboard remover for fake-transparency PNGs), until I finally had the thought “but what if I could port the entirety of Audacity into the browser?”. That’s where Soundscaper came from, though that’s a story for another time.
At this point, only one site held out on Wordpress: my personal blog. This blog.
Act 3: Comments, social features, hosting, oh my
Hosting static websites is delightfully easy, Github pages does it for free for you, as does Cloudflare, and I’m sure there’s a million more options for this available. Unlike Wordpress installs which are a bit tricky to actually move between servers (the “export all content” feature doesn’t actually give you all content, only all text content), porting a static website (including a generated one) to a different host is as simple as pointing the deploy job somewhere else, or copying the files over. Because of this, there’s virtually no vendor lock-in. There is one downside though: By definition, it’s static. It doesn’t react to what other things are doing.
The first time this became relevant for me is when I wanted to use Freesound in Soundscaper. Soundscaper is, despite being a full audio editor, technically still a static website. Using Freesound, especially with an oauth connection to download the high-quality files, requires the servers to briefly talk to each other though and create a database. On Cloudflare, this costs something, but only if someone actually is accessing this. Currently, the estimated costs for using these features are in the range of dozens of cents a year, which, frankly, I’m fine with.
The second time this became relevant for me was now. kw.media never published to the fediverse and doesn’t take comments, but for my writings, publishing to the fediverse is something I find worthwhile, and seeing the occasional like and follow is a little nice, too. Following the twitter exodus, Wordpress.com (where this blog was previously hosted) enabled this publishing for free, but now that I want to move to a static site, I need to implement that separately of course. I set the robot on the task, and it dutifully found a working setup, but, what’s this? I need a database and worker permanently running? At a cost of 32 USD/month?? When Wordpress does it for 5??? That’s definitely not happening.
So, what ended up happening instead was that I walked to my favorite German cloud provider, Hetzner, and rented the cheapest server they have on offer. It costs me some 6€ a month now (oh no!), but it means I do now have a Hollo thing setup on my server which I can use to do more stuff on the fediverse should I feel the need to do so. It also means that you now can find me as Leo Wattenberg (@leo@wattenberg.dk), instead of the old Wordpress-generated account with the hilarious name leo.wattenberg.dk (@leo.wattenberg.dk@leo.wattenberg.dk).
Does this mean that I’ll become a social media user again? Fuck no. I still don’t think that arguing with strangers or doomscrolling is going to become a regular pastime of mine again. But who knows, maybe I need to slide into your DMs sometime.
Long story short
Using static websites (especially SSG ones) is pretty awesome. It’s almost as free as a social media account, but you actually get to have your own, real website that can have cool stuff on it, not just whatever Wordpress dictates you’re allowed to have. The only thing I’m missing still is a good markdown editor that brings as much joy as Wordpress’. For this post I tried VSCode, Notepad and Notepad++, but that felt dreadful. Stackedit was acceptable. But if you know of a good one, do tell me.
