CI needs to be ready when I am
Depot finished our check in 49 seconds. Boat took five minutes. Parallel work changes what that difference is worth, until the runners stop starting at all.
How we think about designing products, the engineering problems worth sharing, and what we've learned about getting more done.
Depot finished our check in 49 seconds. Boat took five minutes. Parallel work changes what that difference is worth, until the runners stop starting at all.
Shorter CI waits cost more runner time, and extra workers cost us timeouts. The savings that lasted came from setup our tests kept repeating.
Part 2 of vibe coding a consistent product. How we connected design.md, Storybook, and a reuse gate so coding agents could find and follow our design decisions.
Unifying Cards, Chips, and Prompts in Char, then asking whether a custom Schedule can reproduce what our built-in Cards do.
Char's desktop updates took minutes to download bytes that need seconds, because the updater made 617 Range requests one at a time. We went from 286 seconds to 12.
Part two of building Charlie's cloud, and the decision part one hinged on. The agent loop and the keys stay on our servers, the code runs on Charlie's computer, and two machines taught us that routing is all or nothing.
What we learned giving Charlie its own computer. We tested Boat, Fly and E2B, priced thirteen sandbox vendors, and found that where your agent loop lives decides the box.
The best way to describe Char right now: you write into it, and it writes back. Here's what that means, and where meetings fit now.
We are replacing Char's stack of daily notes with one continuous Page that carries unfinished work forward.
The Slack-DM-to-self hack, why founders are becoming managers of agents, and why Char starts as a daily note instead of another meeting bot.
Meeting notetakers are a solved category. The work that starts when the call ends isn't, and that is what we rebuilt Char around.