The reading list
Essays, tech notes, and the in-between.
- 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.

- technical-notes·3 min read
uv in Docker and CI: lockfile-driven builds that actually cache
Two patterns — multi-stage Docker with uv sync --frozen and GitHub Actions with setup-uv — give you reproducible, fast Python builds with almost no boilerplate.

- Technical Notes·3 min read
`uv tool` and Single-File Scripts: pipx and Shebang-Python, Replaced
Two uv features outside project management — uv tool for global CLIs and PEP 723 inline-deps for single-file scripts — quietly close out the last reasons to reach for pip or pipx.

- code-quality·3 min read
Fix mise GitHub Rate Limit with a Token
mise makes unauthenticated GitHub API calls by default. When you hit the rate limit installing tools, a personal access token (no scopes required) fixes it permanently.

- technical-notes·3 min read
Migrating to uv from pip + venv + requirements.txt: a pragmatic path
You don't have to commit to a full migration to benefit from uv. The pip compatibility layer is a zero-effort speedup. Move source-of-truth to pyproject.toml only when it earns its keep.

- Technical Notes·3 min read
Starting a new Python project in 2026 with uv
Six commands, five files, zero `source activate`. A walkthrough from `uv init` to a project that runs tests, ships a CLI, and is ready to dockerize.

- technical-notes·3 min read
uv vs pip + venv + pyenv: speed, lockfiles, and the death of `source activate`
Three axes where uv wins and they compound: raw speed from a Rust resolver and a global hardlink cache, a real lockfile instead of a pip freeze snapshot, and a workflow that finally retires source .venv/bin/activate.
