Hale
ToolsMarch 10, 20268 min read

Static Sites and Honest Constraints

A site that cannot lie about its backend is a good place to practice product honesty. The files are the system.

By Julian Hale · Portland, Oregon

A small paper architectural model of a house on a cutting mat.

I still like making websites that are just files. Not because servers are immoral, but because a static site has a kind of honesty that product work keeps trying to escape. If a page exists, it is a file. If a feature needs a database, the site will refuse you. That refusal is clarifying.

This blog is that kind of object. There is no real login. There is no real editor in the cloud. The articles are typed into the repository. The “sign in” and “write” pages are theater — useful theater, because they show how a product might feel, without pretending a server is listening.

What the constraint teaches

You get ruthless about what is actually dynamic. Search can be a filter over a list you already shipped. Personalization can be a local preference. Auth can be a story you tell in the browser. Sometimes that is a toy. Sometimes it is a reminder that half the “we need a backend” conversations are about habit.

Agents, again, belong in this picture. A loop that needs a dozen always-on services to draft an essay is a loop that has not met its tools yet. Start with files. Start with a receipt. Add a server when the world refuses to fit in a folder. Until then, the paper model is enough to see the house.

Letters on this piece

  • Sam Ortega · March 11, 2026

    I needed this. We had been designing a CMS for a site that could have been a repo. The repo won.