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.