How this site is made.
Type
Headlines and text are set in Switzer (Indian Type Foundry), a variable grotesk in the Swiss tradition, weights 100–900. Labels, metadata, and code are set in Geist Mono (Vercel). Both are self-hosted — no font CDNs.
Stack
Next.js 16 (App Router, React 19), Tailwind CSS v4, shadcn/ui, and MDX compiled through content-collections. Linted by Biome, tested end-to-end with Playwright, deployed on Vercel.
Design
Cool graphite — off-white paper, blue-black ink, slate greys, and a single signal red used only where something is live or linked. Depth comes from hairline rules and spacing; there are no gradients, no shadows, and no stock illustrations. The app interfaces shown in device frames are stylized representations, drawn in this same palette — plates, not screenshots. Designed and built in close collaboration with Claude, which is rather the point: AI-assisted work held to a handmade standard.
Performance
Every page is prerendered at build time. Articles ship almost no client JavaScript. Fonts are subset and self-hosted, both themes are honored, and every animation respects reduced-motion.
Writing
49 essays on iOS engineering and building with AI, published since 2026 and syndicated over RSS.
Privacy
No cookies, no fingerprinting, no third-party trackers. Anonymous page analytics and performance metrics via Vercel only.