Site 2026
Welcome to the latest version of my website. Continuing my annual tradition, I've rebuilt the site with a new platform and design—this time by developing my own static site generator from scratch.
From scratch?
Let me explain why I moved away from my previous generator, Eleventy (11ty, 11ty, three months later). While I still like and recommend Eleventy, I encountered two main issues:
- Performance of my particular setup suffered as the number of posts grew, though this isn't a criticism of Eleventy itself. This site has roughly 2,000 posts on it, and Eleventy was taking on the order of 10 to 20 seconds to rebuild all of them. I suspect this is due to backlinks, since it's very easy to naively get yourself into an N-squared situation.
- Implementing features like backlinks and search felt cumbersome and awkward. Eleventy's abstraction, while not incorrect, was unfamiliar—I only interacted with it when tweaking my personal site, which meant having to pull in context that didn't carry over from my regular work, a thing I try to avoid doing at the moment.
Given these challenges, I spent six weeks in the static wilderness experimenting with alternatives:
- I tried rebuilding in Next.js, but found it slow and overly complex;
- Astro improved performance and abstraction concerns, but it still felt foreign compared to my usual writing workflow;
- I even considered switching to Obsidian Publish to avoid these problems entirely, but the design (and REPL lag) was a bridge too far.
Then, I decided to do something dumb — which is where all of the good ideas tend to come from — and started with a simple build script and gradually expanded it. That led me to the current version of the site, which you are reading now.
This site has some work to do, but I'm really happy with where it is (as evinced by it being published!):
- It is incredibly fast. With Bun, regenerating this site takes approximately 800 milliseconds.
- A handful of features that I've wanted but could not justify the mental weight of implementing, such as side notes and the media grid on the homepage, were trivial.
- The entire thing is a single six-hundred line TypeScript file, which makes it very easy to refactor and improve (whether that's by myself or an LLM).
Rate card
| Feature | Choice |
|---|---|
| Font | IA Quattro |
| Runtime | Bun / HTML / Markdown |
| Hosting | Vercel |
| Analytics | Selene |