Every developer has a ritual. Some meditate. Some go for runs. I rebuild my personal website.
The first version of this site was a create-react-app from 2017 — React 15, webpack 3, a node-sass-chokidar watcher held together with npm-run-all and hope. It had a little terminal that could cowsay and fetch cat pictures from Reddit. It was, honestly, great.
But 2017 was nine years ago. Reddit closed its API. React 15 is old enough to be in school. And the site rendered nothing on the server, which meant search engines saw an empty <div id="root"> and politely moved on.
What changed
This version is Next.js with the App Router. Everything meaningful renders on the server — the blog is static HTML at build time, the pages are streamed, and the terminal hydrates on top like a party trick that doesn't block the party.
The design brief I gave myself was one sentence: a 90s unix machine that somehow ships with 2026 animations. So:
- A boot splash with a scramble-decoded ASCII logo (skippable, once per session, and it respects
prefers-reduced-motion— nostalgia shouldn't make anyone dizzy) - CRT scanlines and phosphor themes — green, amber, and a paper mode for the heretics
- A terminal that actually does things:
slruns a steam locomotive across your screen,rm -rf /does exactly what you fear (briefly)
What stayed
The terminal. The cowsay. The no command, which returns "Nope." and has never once failed to deliver value.
Some things are load-bearing.
What's next
Statistically? A fourth rewrite, around 2031. See you then.