Skip to content
crumpled paper texture

Colophon

How this site came together

The story,
so far.

The first version went up in 2023: one long page, a lot of borrowed ideas, and code I'd rather not show you. It was mine, and that was enough to keep going.

In June 2024 I started over in this repo. That summer it grew a guestbook people actually signed, then a blog and proper project write-ups. It moved to React 19 and Next.js 15 that December, and onto Tailwind v4 the week it shipped.

Most of the work since has been invisible. The guestbook moved onto its own Postgres database, and in early 2026 the writing left the CMS for plain MDX files that live next to the code that renders them.

This version is the one I'm proudest of. Every page sits in the same thin frame, the figures on the homepage are drawn in code, one hairline at a time, and the photos are treated like real prints. None of it came from a template.

2,263 commits and 192 pull requests in, it's still a work in progress. That's the point of having one.

  1. 2023First version goes up
  2. Jun 2024Started over in this repo
  3. Aug 2024Guestbook opens
  4. Dec 2024React 19 and Next.js 15
  5. Jan 2025Tailwind CSS v4
  6. Feb 2026Content moves from a CMS to MDX
  7. Oct 2026Framed layout and hand-drawn figures

What runs
this site.

Framework

Next.jsReactTypeScriptMDX

Styling & motion

Tailwind CSSMotion.devShadcn UI

Data & auth

PostgreSQLPrisma ORMBetter AuthZod

Services

VercelPostHogResendCal.comLast.fm

Tooling

BunBiome.jsGitHubClaude Code

Four faces,
four jobs.

  • Complex web apps

    Instrument Serif

    Headings and names

  • From pixels to pipelines

    Bricolage Grotesque

    Body copy and interface

  • const ship = () => {}

    Geist Mono

    Code only

  • I read every one

    Caveat

    Handwriting on prints