qdgiang
← All writing

A site I can open in ten years

JUL 26, 2026 · 3 min read

This site is a handful of static pages. No framework boots when you open it, nothing phones home, and the fonts are served from the same place the words are. None of that is an accident. It is the closest thing this project has to a thesis.

Personal sites tend to die of ambition. You start with a blog, and somewhere between choosing a framework and configuring a deployment pipeline, the site becomes a project about itself. The stack grows a stack. Eventually writing a post means upgrading nineteen dependencies, and the honest cost of publishing a thought creeps up until the thoughts stop clearing the bar.

I run data platforms for a living. I know precisely what it costs to keep a clever system alive, because keeping clever systems alive is my job description. That knowledge made the decision here easy: the site had to be something I could neglect for a year and reopen without fear.

Boring on purpose

The materials are deliberately old. HTML and CSS are the most durable substrate the industry has ever produced — a page written in 1996 still renders. The posts are markdown files in a folder. The build turns them into pages and an RSS feed, and then it is done; nothing executes on a server afterwards, because there is no server worth speaking of.

There is one JavaScript file, and it is decoration — the typewriter on the home page, the way paragraphs breathe in as you scroll. Turn it off and every word still reads. That ordering matters to me: the text is the load-bearing wall, the motion is wallpaper.

Durable beats novel. Write the boring version first. I keep these rules at work, where the systems are large and the stakes argue for them. It felt dishonest not to apply them to the one system that is entirely mine.

The ten-year test

Every choice here passed through one filter: will I be able to open this in ten years and still feel that it is mine?

Static files pass. They survive hosting providers, frameworks, and acquisitions; they can be moved with rsync and understood with view source. Plain-text content passes — no database export stands between me and my own words. Self-hosted fonts pass, because a page should not depend on a third party’s continued interest in serving type. RSS passes twice: it is how I read other people, and it is the politest way to be read.

Frameworks, comment systems, analytics dashboards — each one failed the test. Not because they are bad, but because each is a promise to maintain someone else’s ambitions alongside my own.

What the quiet buys

There is no analytics script here, which means I genuinely do not know how many people read this page. I decided to treat that as a feature. A counter changes the writing; you start optimizing for the number before you notice you are doing it. Without one, the only reader I can picture is a specific person, reading carefully, and that is the person worth writing for.

The thin line that crawls along the top of an essay as you scroll is the only telemetry this site will ever collect, and it reports to no one but you.

The site will change — slowly, in the way furniture gets rearranged rather than replaced. That is the plan, anyway. Ask me in ten years.