Ten Years of Personal Websites
A retrospective on every site I have shipped, scrapped, or rebuilt since 2016.

Every couple of years I rebuild my personal site. Each rebuild teaches me something I did not know I needed to learn. Here, in roughly chronological order, are the lessons.
2016 — Static HTML
A folder of .html files uploaded over FTP. It worked. The only friction was that adding a new post meant updating the index page by hand, and after about six posts I stopped wanting to do that.
2018 — Jekyll
Solved the index problem. Introduced a build step, a Ruby toolchain I had to keep alive, and a deploy pipeline that broke whenever GitHub changed something.
2020 — Hugo
Faster builds. Same problem class. I now had two static site generators I was forgetting how to use.
2022 — Custom Node app
Built it because I wanted something I fully understood. Maintained it for fifteen months. Stopped maintaining it in month sixteen, when I realised I had been writing code instead of writing posts.
2024 — A hosted CMS
Solved the writing problem. Created the vendor lock-in problem. The bill went up every year. The CSS escape hatch got smaller every year. I started writing fewer posts because the editor was annoying.
2026 — TypeDock
Plain PHP. Plain SQLite. Plain HTML. A theme I can read in an afternoon. The whole stack runs on the same shared host I use for email.
In the long run, the most maintainable stack is the one you can rebuild from memory.
Talk to me again in 2028.