Welcome to my new and improved* website
Chuniversiteit has a fresh new look and more convenient packaging! Mostly for myself, but maybe it will also benefit you.
Earlier this month, the discovery of a 35-year-old Mars bar that clearly demonstrated the cumulative effects of decades of shrinkflation went viral. In 1991, a typical Mars bar in the UK used to weigh 62.5g, compared to today’s 40g. Mars is of course not the only company guilty of shrinkflation: whenever a manufacturer claims to have “improved” a product to “reflect changed consumer demands”, you can safely assume that you will now be getting less of the product for the same price.
That’s kind of what has happened to this website as well. You see, I’ve been wanting to migrate this website from Cloudflare to a European alternative for quite some time now. The main reason I have not done so yet is that none of Cloudflare’s competitors offer anything that comes close to Cloudflare’s incredibly generous free tier. Migrating my previous website to an alternative provider would have meant paying for bandwidth, builds, serverless functions, or even worse, all three. Before I could even think about migrating to a different service, I first needed to find a way to make my website lighter, faster, and simpler.
How it’s made
Rather than attempting to trim down the existing website at its edges for what would likely have been incremental improvements at best, I opted for a complete rebuild.
This new version of Chuniversiteit is powered by Astro, which I found considerably easier to work with than Next.js. Things like Markdown, feeds, collections, and image resizing more or less work properly out of the box. I also think the interactive islands will come in handy if I ever want to include widgets in my articles. As an added bonus, Astro seems to be faster too and doesn’t tie me to React, which I have come to dislike somewhat in recent years.
To reduce bandwidth usage, I did away with custom fonts entirely and greatly reduced the number of decorative images on each page. Instead, the new design system relies more heavily on typography and grid placement, taking cues from Swiss Style and Barcelona Metro’s design language. This should also, coincidentally, result in improved page load times for users.
Another system that has been greatly simplified is search. It’s still there and, from a user’s perspective, it works roughly the same way. Unlike in the previous version, however, search queries are no longer handled by a serverless worker. Instead, clients now request the search index directly. This means that search now only works with JavaScript enabled, which I think should affect virtually no one.
The content-based recommendation engine that generated recommendations below each article has been simplified in a more blunt way: I axed it entirely. I liked having it, but it was just too costly to keep around.
The main challenge with rebuilding this website was not so much writing code and tests for the website itself. I micromanaged Codex into doing most of that. Migrating all 325 blog posts from the old website to the new one, on the other hand… Oof. When prompted to migrate posts, both Codex and Claude would occasionally attempt to “correct” my writing. In a few rare cases, those corrections were justified (typos). But in most cases they would rewrite my en-dashes to em-dashes and rectify “misinformation” in older posts based on information that is only available today, despite being explicitly instructed to not modify the contents of migrated posts. I therefore had AI help mostly with the simpler, “mechanical” parts of the migration by having it write repeatable migration scripts that we could iteratively improve. The actual migration consisted of running these scripts and then manually checking the output of each individual post.
Next steps
Now that the new website is live, I’m curious what its build times and bandwidth usage look like in practice, and whether European alternatives to Cloudflare are seriously viable. Otherwise, I may have to accept that there are no viable free alternatives and self-host on Hetzner or a low-end box.
With time, I also hope to gradually add more whimsy to the new website. It’s my personal website after all, and there is no rule that says personal websites have to be boring!