Shaun Church

New blog, who dis?

Developers constantly rebuilding their personal sites and never actually writing any posts is a meme for a reason, and it isn't always "I'm a developer, not a writer", although that's often true.

Blocking issues

I wanted to write a new post the other day, but it'd been 4 years since the last one and it turns out the site wouldn't build anymore on modern versions of Node.js.

There's a breaking change to do with OpenSSL that's been causing issues all over my old projects, and here it was again. I couldn't just continue using an older version of Node.js because Vercel no longer supports it. And I'm probably not going to run a blog on a VPS anytime soon with an insecure version of the runtime installed. No bueno.

JavaScript has a bad reputation for this kind of tangle, and it's completely deserved. If you don't keep up with package updates there is a good chance you'll land in dependency purgatory: breaking changes between packages that require updates that rely on old packages that haven't been updated to support new peer dependency versions, Node.js changes, or whatever else. It's a common experience.

Things do move quickly, but things do generally get better. This is the price you pay for using shiny things. The trick is to minimise your dependencies and update them once in a while. It's much easier to transition gradually than all at once.

Alternatives

It's not just JavaScript that suffers from this problem. I also had similar issues with the last version of the site I built with Hugo. That's why I ended up moving back to Next in the first place.

Static HTML files can seem appealing, but then you face other limitations like a lack of templating, and while I can write vanilla JavaScript the truth is I don't really want to most of the time.

Using an established full stack framework that has claims on longer term support and stability wasn't really an appropriate choice either. Most options come with some kind of downside.

(No, I won't be using WordPress. I've done my time.)

Make it again

As a result, I decided a complete rebuild was the easiest route. It only took a handful of hours to get the site back to feature parity, and I'm using far fewer dependencies now. I copied over the content and rebuilt the URL structure with the Next app router and it was easy.

These tools are incredibly empowering, which is why we put up with these kinds of difficulties. You can probably smell the cope.

We'll see how long this iteration lasts... and if I can keep writing and keep up with the ongoing development of the web, maybe it won't be so bad.

A man can dream.

What do you use? Let me know on X.