Writing
Notes on data and AI infrastructure.
Short technical notes on the decisions behind the systems I build.
Published
- Nov 2025
The shape of a local-first data product
Two storage decisions sit at the heart of any local-first analytics tool. Get them right and you ship as a single application the user can trust on their own machine. Get them wrong and you've reinvented a hosted service somebody has to operate.
- local-first
- architecture
- data-products
- May 2026
Refusal is the feature grounded RAG actually needs
Trying to make the model better at admitting uncertainty is a losing game. Refusing in the orchestration layer. When the retrieval signal is too weak to support an answer. Is a winning one. Plus the companion move that matters at least as much.
- rag
- retrieval
- product
- Mar 2026
Why AI should reason over metadata, not raw data
Schemas, contracts, lineage, and policies carry the structure an LLM needs to be useful inside a regulated environment. The bytes don't. And shouldn't leave the perimeter.
- metadata
- governance
- architecture
- Jan 2026
The case for local-first semantic layers
When the operator is the user, a single binary on their laptop beats a hosted control plane more often than the industry admits. Iceberg + DuckDB on hardware you already own does more than expected. And the trade-offs aren't where you'd guess.
- semantic-layer
- local-first
- architecture
- Feb 2026
Agent memory as infrastructure, not chat history
Treating agent memory as persistent infrastructure. With typed writes, provenance, retrieval policy, and decay. Changes what agents can do across sessions and tools. Chat history is a symptom, not a system.
- agent-memory
- infrastructure
- relay
- Dec 2025
A working note on database partitioning
Partitioning strategies, secondary index trade-offs, rebalancing, and service discovery. The four decisions you actually have to make when a single node stops being enough. Plus what Discord learned moving trillions of messages from Cassandra to ScyllaDB.
orig. on Medium- databases
- distributed-systems
- partitioning
- Apr 2026
Analyzing NYC vehicle crashes. A cloud-native data engineering build
A GCP build that pulls NYC's open crash, taxi, traffic, and weather feeds into a single analytical surface. Notes on why we picked Compute Engine + Dataproc over Composer + Dataflow, where the batching limits actually bit, and what would change in v2.
orig. on Medium- data-engineering
- gcp
- dataproc
- bigquery
- May 2026
The MCP proxy is the enforcement primitive
Voluntary safety checks don't survive contact with a real agent. If you want a policy layer that actually stops destructive tools, it has to be in the request path. And once it is, you also get the team's shared context for free.
- mcp
- agent-infrastructure
- policy
Archive
Earlier writing on Medium. Kept for context but not the work I'd point to first. Each links out to the original.
Introduction to Linux
Jul 2020A starter cheatsheet for working in a shell. Terminal controls, file management, permissions, process inspection, services, and the small set of commands you'll reach for daily. Written for someone moving from a GUI-only OS.
Read on Medium ↗The data engineering guide
Jul 2020A learning roadmap I wish I'd had when I started. Programming & data structures, SQL and database internals, big-data systems, data stores, and the DevOps surface area you can't avoid. Five years later most of it still holds.
Read on Medium ↗The web architecture
Jul 2020A walkthrough of three-tier web architecture, request lifecycle, and the trade-offs between single-server, multi-server, and serverless deployments. Notes from when I was learning to design backend systems.
Read on Medium ↗Version control. Git
Jul 2020A practical walk through local, centralized, and distributed VCS, then a working command reference for Git. Branching, stashing, the commit object model. Written for someone learning the tool from first principles.
Read on Medium ↗
Notify
To get a heads-up when drafts publish, email me and I'll add you to a small list. No newsletter. Just a one-line note when a post ships.