A system design interview walkthrough: preserve who said what across storage, search, and analysis, and keep reported numbers explainable after models change.
Writing about software, startups, and building with AI agents.
Field notes from real work: agent workflows, small CLI tools, debugging writeups, and product UX decisions.
The plan was to maximize what agents could do while I slept. By five in the morning the sleep had gone out the window and the sun was coming in through it. A persistent VM, a terminal multiplexer, and a phone client fixed the schedule.
The runway spreadsheet prices every hire in months of burn and books the missing team at zero: a Contour retrospective on where staying lean paid, what contractors can't replace, and which number turns out wrong.
If the Mac still receives iMessages and the iPhone sends normally, restart imagent and identityservicesd before signing out or resetting the account.
Senior-care referral sites bury the price behind a phone number. Once you call, the advice tilts toward whoever pays the biggest fee. We showed families everything upfront and let them decide.
I built an elaborate AI portfolio for a student I mentor. He ignored it, made his own plain site in Framer, and proved the point better than I could.
Five short files that make a bare Claude or Codex session behave the way you actually want, at a fraction of the context cost of a full skill stack like gstack.
Startup current is the wrong target; compare heat leaking in while you are away with the time and energy to cool back down.
MCP calls make the model recite the whole payload token by token. A small CLI lets code move it, so it never enters context in the first place. Fewer tokens, less time.
Native structured output refused my 34-field schema, so I benchmarked seven cheaper models on plain JSON instead; Gemini 3.1 Flash-Lite matched Claude Haiku's quality at an eighth of the cost.
Retrofitting CI, linting, Prettier, and regression tests into a mature codebase so the repository catches broken changes before a person has to.
Google’s default Places widget breaks out of your existing mobile UI, so a custom autocomplete keeps the form flow intact while Google still supplies the place data.
A Mac GUI app and your terminal have different PATH environments. The app inherits from launchd, not your shell config, so the fix belongs there too.
Custom DNS can make a captive portal look broken by skipping the network’s resolver, so restoring automatic DNS brings the login page back.