Home

colophon

This site is a single descent into the ocean at night. Scrolling sinks you: the water darkens, light fades, and a school of a few thousand stippled fish spirals downward with you. At certain depths the school gathers out of open water and sculpts a word from its own bodies — my name, then each chapter — before dissolving back as you keep going. The fish aren't a background. They're the structure.

It's built on an HTML canvas, not a video or a particle library. Every fish is a tiny pre-rendered sprite; the words are sampled by drawing each chapter's title to an offscreen canvas and reading back which pixels lit up, then handing each fish a target point to spring toward. The physics — schooling, the bait-ball coil when you pause, the camera pass-bys, the flashlight in the dark — are hand-tuned and frame-time normalized so it holds together at 60fps whether your display refreshes at 60Hz or 120Hz.

Depth is the organizing idea site-wide, not just a metaphor for the homepage. The depth rail on desktop tracks real scroll position against the actual chapters; the fathom readout counts meters as you sink. Everything reduces gracefully — prefers-reduced-motion swaps the whole canvas for a plain, readable page with the same content, same links, same structure.

Typography is Lora (serif, italic for voice — titles, taglines, the words the fish form) paired with DM Sans (wide-tracked capitals for labels and eyebrows). The palette is the dive's own: a warm paper and ink for daylight, a deep abyss and moon-pale ivory for dark — the same handful of colors everywhere, no page inventing its own.

Content — every project, essay, and the now page — lives as Markdown files with typed frontmatter, validated at build time. Adding something new is dropping in one file; nothing about the dive or the index pages needs to change to notice it.

Stack: Next.js and React, TypeScript throughout, Tailwind for the parts that aren't canvas, no animation library — CSS transitions do the settling. Deployed on Vercel. Written, mostly, at night.