Journal
Posts and long-form series on AI, startups, venture capital, and more.
All Posts
What a Month of Portfolio-Wide Engineering Looks Like
651 merged pull requests across 75 repositories in a month, two human gates, and what changes when the unit of maintenance stops being the repo.
Programmable Feeds: RSS Is the Bus
Emit began as RSS to email and grew into an ingest, transform, and deliver bus. Using RSS as the interchange format turns N times M integrations into N plus M.
This Blog's Newsletter Now Runs on Emit
I moved this site's email signup to emit, my own RSS-to-newsletter service. Here's how the Hugo integration works and what dogfooding surfaced in week one.
Emit: Pay for Emails, Not Subscribers
I built emit, an RSS-to-newsletter service that charges $1.60 per thousand emails sent. No tiers, no monthly fee, no charge for subscribers who just sit there.
MCP Goes Stateless, and Sampling Goes With It
The 2026-07-28 MCP spec turns the protocol stateless, deprecates sampling, and moves tasks into an extension. Why the stateless change is the one that matters.
Pedal Wrencher Is Back
Eleven years after launch and eight years after shutting it down, my Strava-powered bike maintenance tracker is live again at pedalwrencher.com.
Easy Beans (Borracho-Style Pinto Beans)
Lazy borracho-style beans built on rendered pork belly scraps, poblano, tomato, and a can of beer, simmered low until they turn creamy and rich.
Charred Roasted Salsa
A smoky roasted salsa built on broiler-charred plum tomatoes, onion, and chiles, blended with garlic, cumin, chipotles in adobo, and lime.
Distilling Skills From a Knowledge Base You Build While You Work
How to combine Swamp and the Open Knowledge Format: grow an OKF knowledge base across your projects as agents work, then distill reusable skills from it.
PyGeoHash v3.3.1: A Round of Sharp-Edge Fixes
PyGeoHash v3.3.1 is a bugfix release that closes a buffer overrun, rejects bad coordinates, fixes distance and bounding box edge cases, and ships py.typed.