--:--:--
—
I build systems that
scrollYou are reading this because an origin I control answered your request. Not a mystery runtime. Not a platform's build step. A deliberately small surface that stays close to the person who made it.
The shape is intentionally simple: edge, private tunnel, origin, static page. If I edit the file and save, the change is live. The feedback loop is short enough to be honest.
There is nothing wrong with edge platforms. I use them at work. I recommend them to clients. But every once in a while it is useful to remember what the shape of a computer feels like when you own it end-to-end. That's what this site is: a small practice of owning a thing.
Point, tap, or tab through the path. Watch the packet move from visitor to edge to origin to proof, without exposing the private machinery underneath.
--:--:--
—
0s
since you arrived
hand-built
static, no ceremony
0 B
approx, client-side
Not a generic portfolio grid. Each portal is a receipt: the problem, the constraint, what shipped, and what is safe to inspect.
A quiet vegetarian meal picker powered by the expanded global menu spreadsheet. Spin the menu, filter by cuisine and craving, reroll the result, then save contenders for dinner.
The site you are on. Static HTML, CSS, and JavaScript shaped into a living interface. No framework ceremony, no mystery runtime.
A narrow tool surface for turning intent into organized work. The public version is the design pattern, not the private data.
A small surface for finding the right context at the right moment. Useful by design, quiet by default.
A public-safe route from edge to origin. The page shows the choreography, not the private map.
A quiet, slow-blog space. No tags, no SEO, no comments. Just files. Coming in a
later deploy to /writing/.
help.
Try: proof · stack · motion ·
projects · contact
The distance between edit and feedback should be a few seconds. If it isn't, fix that before fixing anything else. A slow dev loop is a tax on every decision that comes after.
When the thing can be a file in a git repo, make it a file in a git repo. Diffs are free. Grep is free. Editors already know how to read it. Databases are for when files stop scaling; most of what you want to store is nowhere close to that.
Rent the electricity, rent the connection, rent the DNS — but own the box and the process that serves the bytes. Once that's yours, nobody can quietly deprecate your stack from underneath you.
The thing that runs your site should be legible — one binary, one config, predictable behavior. Frameworks that hide what's happening trade debuggability for convenience. For sites with one author, the trade is almost never worth it.
Boring technology underneath, interesting choices on top. Postgres and cron will carry more weight than whatever is on the front page of Hacker News this week.
If the thing fits in your head, you can think about it. If the whole config fits on one screen, you can audit it. If the binary is one file, you can replace it. Every time I add a dependency, I pay for it forever.
Every system accumulates surprises. A short README that says here's what this is and how to restart it is worth more than any observability stack, because you will forget. (You will.)
None of this is a rejection of the current internet. It's just an insistence on keeping one small garden that answers only to me.