The reading list
Essays, tech notes, and the in-between.
- AI·3 min read
Hooks That Pay for Themselves
A session-start hook runs once, costs nothing, and gives your agent context it would otherwise ask for or guess wrong. The highest-leverage 10 lines you'll write this week.

- AI·3 min read
Writing CLAUDE.md That Agents Actually Follow
A 1,500-line CLAUDE.md doesn't make agents more consistent — it makes them less. The agents that work best have short rules backed by tooling, not long rules backed by hope.

- AI·3 min read
The Two Configuration Layers Every AI Developer Needs
Global rules that follow you everywhere. Project rules that stay with the code. Getting these two layers right is the single highest-leverage thing you can do before your first agentic session.

- AI·3 min read
The Agentic Developer's Field Guide
Everything published here about agentic coding, AI tooling, and developer workflows — in one place, with a recommended reading order.

- technical-notes·3 min read
Building an AI Podcast Index: the Project, the Stack, and What You'll Have at the End
An eight-part build-along: a local tool that ingests a YouTube podcast channel, extracts guests and topics with Claude, lets you clip-search by intent, and generates grounded questions for future episodes. Post 1: the demo, the architecture, and one paragraph per stack choice.

- technical-notes·3 min read
Taming a polyglot monorepo: Taskfile, selective CI, and reproducible setup
A monorepo's developer experience is mostly a Taskfile plus a CI workflow. Both should answer one question: what changed, and what depends on what changed?

- technical-notes·3 min read
A Vite + React SPA inside a uv monorepo: pnpm-workspace, dev proxy, shared types
Two workspace managers minding their own business — uv for Python, pnpm for JS, with a thin Taskfile on top so you never have to remember both.

- technical-notes·3 min read
The killer monorepo argument: Pydantic models, codegen'd to TypeScript, consumed by React
A 20-line codegen pipeline turns Pydantic into JSON Schema into TypeScript. Rename a field on the backend and the frontend stops compiling. That's the whole point of a polyglot monorepo.

- technical-notes·3 min read
Designing a uv workspace: package boundaries that survive contact with reality
The hardest part of a Python monorepo isn't the tooling — it's deciding where one package ends and another begins. Two rules — change boundaries and interface boundaries — and a worked example.

- technical-notes·3 min read
Why a Python Monorepo: What uv Workspaces Actually Gives You
Most Python monorepo pain in 2024 came from gluing pip-tools, tox, and path hacks together. uv workspaces makes the seam between packages a first-class concept — one lockfile, one resolver, one venv. That's what makes the monorepo worth doing.
