Codebases don't stay sprawling forever. Given enough years, they converge or they die. What one product's repos taught me about monorepos, deleting more than you add, and why the best month of a codebase can be the month it gets smaller.
Architecture · Codebases · TypeScript · Leadership7 min read
Most malicious package releases are caught within hours. A one-day waiting period before installing anything new costs almost nothing and sidesteps a whole class of supply-chain attacks. Here's how I set it up, and where the exceptions go.
Security · Infrastructure · Next.js6 min read
Two rules sit at the center of a governance runtime I've been building: when in doubt, the answer is no, and the record is written before anything happens. Here's what they mean in practice, and why they matter more as agents start taking real actions.
Architecture · Security · Agents7 min read
In my agent rig, prompts, routes, skills and even fine-tuned models all start in shadow. Promotion is a separate, evidence-backed step that a person takes. Here's the lifecycle, and why it matters more as the number of moving parts grows.
Agents · AI · Local LLMs · Delivery6 min read
A rock tumbler doesn't make a stone smooth in one pass. It uses coarse grit, then finer grit, then polish, and checks between stages. That's how I build agent loops in Starship: bounded retries, deterministic gates, and lessons that are only allowed to hurt once.
Agents · AI · Architecture · Delivery7 min read
Starship runs its coding and planning agents on a small fleet of Apple Silicon Macs I own. Here is when local models beat the cloud, what it cost me in operational lessons, and where I still reach for a hosted model.
AI · Agents · Architecture · Local LLMs6 min read
How Starship's coding agents go from a planned task to a merged pull request without a human driving each step, and the gates, retries and postmortems that make that safe to leave running.
AI · Agents · Architecture · Delivery6 min read
A coding agent is only as good as what it's handed. Here is how Starship curates its skill library, enforces standards, and keeps the context it feeds models grounded and current, including where that loop was still open.
AI · Agents · Architecture · Local LLMs6 min read
My healthcare pipeline's ingestion runs on a two-minute heartbeat, a claim-and-enqueue sweep and a stateless worker. It's less clever than a job framework, and that's why I trust it.
Architecture · Infrastructure · Data6 min read
I spent a lot of time tuning a pipeline worker before doing five minutes of arithmetic. The real throughput ceiling wasn't in the code. It was a regional CPU quota. Here's what I'd do first next time.
Infrastructure · Data · Architecture6 min read
Performance work on a data pipeline is only safe if it can't change the answers. Here's how golden files and output-equivalence gates let me speed up a clinical pipeline without moving a single score.
Data · Architecture · Delivery · Healthcare6 min read
ZoomProp's property data stack went from a scheduler on a single server, to a pile of scripts, to software-defined assets with a shared data model. Looking back across four years of repos, here's what changed, what stayed the same and what I'd do first next time.
Data · Architecture · Codebases6 min read
In the healthcare platform I'm building, patient data lives in its own database and nothing else does. That one rule shapes auth, sync, queries and how I think about risk.
Healthcare · Architecture · Security · Data6 min read
The clinical data pipeline I've been building shows records to four very different kinds of user. Instead of four tables, there's one pattern: server-side pagination, state in the URL and a single scoping rule applied on the server. Here's how it fits together.
React · State management · Healthcare · Front-end5 min read
Parsing clinical documents is the easy half. The hard half is working out what every code inside them actually means. Here's how one bad crosswalk dragged my lab mapping down to about 20%, and what fixed it.
Healthcare · Interoperability · Data7 min read
Public records live on thousands of county and city websites, each built differently. Writing a scraper for every one by hand doesn't scale. So I built a tool that visits a site, works out how its search actually behaves, scores whether it's worth automating, and has a model draft the parser. Here's how it's put together and where the model stops.
AI · Data · Architecture6 min read
Let the route's params pick the data, the state path and the form. In a form-heavy CMS or admin tool, a new screen becomes one route plus one field array, with no new endpoint and no new form code.
Forms · State management · Architecture · Front-end3 min read