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
Building software keeps getting cheaper. What stays scarce is a clean, modular data model and an existing web of customers, partners and channels that will carry the product. Why I think that pairing is the nucleus of most winning formulas, and what the research says.
Architecture · Data · Business · Product9 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
A decision log tells you what was chosen. A decision dossier tells you why, what was rejected and what it costs. Here's the format I use, and the bug it found that every other document had missed.
Product · Architecture · Leadership6 min read
For months I've been quietly building a pipeline that takes raw HL7 v2 messages and C-CDA documents, repairs them, maps their codes to standard vocabularies, and turns them into FHIR and OMOP. Why healthcare interop data is so messy, and the approach that's working.
Healthcare · Interoperability · Data · AI8 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
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