Colophon

In an era of algorithmic feeds and rented platforms, there's something powerful about having your own space on the web. A place where the design reflects your taste, the content reflects your interests, and the whole thing runs on hardware you can reach out and touch. This site is that place for me.

The stack

Deliberately boring: Node + Express, EJS templates, and content stored as markdown files and JSON on disk — no database, no build step, no framework churn. The whole thing lives in a plain folder.

  • Type is self-hosted: Fraunces for display, JetBrains Mono for dates and EXIF data, and your system's serif for reading. No font CDNs, no trackers, no third-party requests at all.
  • Photos live in a self-hosted Immich library. Publishing one is a tag: a sync script pulls tagged photos — EXIF, GPS-derived place names and all — and writes them into the site's flat files. The photographs you see here never touch a third-party host.

Who sees what

Not everything here is public, and that's a feature. Pages and photos carry an audience tier — public, subscribers, friends, family — enforced by Authelia in front of the site. Family members who sign in see more than the open internet does: more posts, more photographs, and map links on the photos. The public sees a site; the family sees an album.

The hardware

Everything runs on a small desktop server with innards from 2017, tucked away in the corner of the room: this site, the photo library, file sync, and media streaming, behind a reverse proxy and a single sign-on gate. When the power blips, the website blips. Sometimes it's me who causes the blip.

Who wrote the code

Mostly not me. Claude, Anthropic's AI, working in Claude Code on the same server, does the heavy lifting. That includes the app itself, the audience tiers, the Immich photo sync, the editor I write these pages in, and the black hole at the top of the home page, rebuilt from Luminet's 1979 paper and set in motion. The ideas and the final say are mine; most of the code is assembled by Claude.


Built in the spirit of the IndieWeb: own your content, control your identity, connect on your own terms.