To the Archive

I Just Migrated my Website

And the whole process caused less pain than anticipated.

It’s early June 2025, and I’ve got nothing better to do than migrating my website to a new framework.

Catalyst of this endeavour was the purchase of a new MacBook. Strange, right?

Can’t Build What You Can’t Build

Do you know that feature where you put one Mac next to the other, and your old Mac transfers its personality onto the new one?

Yeah, I didn’t want to do that.

I’ve been doing this for as long as this feature was around, so my Macs accumulated something close to 15 years of emotional baggage and personality disorders.

Time for a change.

So, for my new Mac, I went for a clean new install - including Node. Now that the old days are behind me, I can finally confess:

peter@MacBookPro ~ %: node --version
v16.14.0
peter@MacBookPro ~ %:

😳

So, it was time to upgrade to 24, and while I was at it, I also decided to upgrade from Gatsby 4 (the software running my previous website) to Gatsby 5.

Big Mistake.

I have no idea if it was me, the clumsy setup of my project, or Gatsby in general,1 but I would just get plastered with errors and issues. After an hour or two I gave up. I wasn’t too happy with the way Gatsby works anyway (I am not convinced that GraphQL will go down as one of the finer developments of computer engineering), and I wouldn’t want to invest more time getting something to work I wanted to replace anyway. Famous last words.

Enter Astro

I always wanted to try out Astro; It seems like a more modern, light-weight approach to the problems I am facing. The dynamic nature of Gatsby is nice, but created many problems for me in practice. In the end, all I need is a static website, right?

So, I installed Astro and started playing around with it last Thursday. Today, six days later, with a total time investment of around 20 hours, I launched my new website.

Most of my time was spent not creating code, but actually cleaning up another mess lazy past-me left behind for industrious present-me: My newsletter-archive.

See, this whole thing here started out as a newsletter. The website was just something to keep the sent issues somewhere accessible. I’ve used Mailchimp from the beginning (don’t judge), but I was always smart enough to not use their archiving system. Wouldn’t want my content locked in on their platform. So I did something really clever: I created some semi-lock in. I would just use their generated HTML, save it to my website, and then have Gatsby inject a cleaned-up version of it into a page template. The pages still used the fucked-up markup of Mailchimp and would still load all images from the Mailchimp servers.

Hurrah, really smart. My content was still locked-in, but now I also got the extra-work of maintaining those HTML copies.

A little later, and a little wiser, I moved everything to Markdown, and the web version of Let’s be Fwends was now the leading content, and the newsletter was a copy of that content.

Problem solved.

But of course not for the old issues.

Fixing that was the most work. And I even didn’t do it myself. Claude did it. I just nudged it along a bit. Claude created two really valuable scripts for me: One that parses all that HTML and downloads the images into a local directory, and another one that transforms the Mailchimp HTML into Markdown. The first ran without a hitch, but the second did need some manual cleanup. And I’m sure there are many formatting issues in old newsletters, so please, if you find one, drop me a line.

I was seriously impressed how my productivity was increased by Astro, Tailwind, Claude and Amplify. In a couple of days, I managed to to completely overhaul my website, and the build process behind it, I also added new features (RSS-feed anyone?)

What’s cool is that I not only modernised my tech stack, I also liberated my content from the proprietary system and syntax of my mailing list provider into something portable.

Also, I stripped away most of the playfulness of the old website. While I always loved the approach, it was also extremely confusing for readers. And creating confusion was - contrary to sometimes voiced accusations - never the point of this.

This whole thing also transfers way less stuff and loads much faster. This hasn’t that much to do with Gatsby vs. Astro; It’s more that I haven’t implemented a search function yet (and the search index of the old website that was transferred to the client was around 9 mb - yikes!).

So, this is an incredibly long post for saying:

“I got a new website. It looks different, the content is still the same. I had fun building it, and learned a lot. 10/10 would recommend.”

Footnotes

  1. I am pretty sure it was me.

To the Archive