
Colophon
How this site came togetherThe 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.
- 2023First version goes up
- Jun 2024Started over in this repo
- Aug 2024Guestbook opens
- Dec 2024React 19 and Next.js 15
- Jan 2025Tailwind CSS v4
- Feb 2026Content moves from a CMS to MDX
- Oct 2026Framed layout and hand-drawn figures
The people
I learn from.
- Lee RobinsonWriting about the web plainly, and shipping quicklyleerob.com ↗
- Rauno FreibergInteractions that feel physicalrauno.me ↗
- Paco CourseyRestraint, and interfaces that get out of the waypaco.me ↗
- Shu DingVisual engineering with a sense of playshud.in ↗
- Brian LovinThe product details nobody asks forbrianlovin.com ↗
- Pedro DuartePrimitives, and motion with purposeped.ro ↗
What runs
this site.
Framework
Styling & motion
Data & auth
Services
Tooling
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
The work
I owe thanks to.
- shadcn/uiThe component primitives under the forms and menusui.shadcn.com ↗
- Base UIThe accessible primitives under the inputs, menus and tabsbase-ui.com ↗
- Fuse.jsFuzzy search in the ⌘K command menufusejs.io ↗
- Google FontsWhere all four typefaces come fromfonts.google.com ↗
- Phosphor IconsMost of the icons you seephosphoricons.com ↗
- ShikiSyntax highlighting in every code blockshiki.style ↗
- animations.devEmil Kowalski's course behind much of the motion hereanimations.dev ↗