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.

Atomic's MCP server works on one database per connection, so I wrote a script that picks one per folder in Codex and Claude Code, keeps the token out of the config, and warns you when Codex is ignoring your .codex/config.toml.

MCPCLIAI Agents

Why /list-agents can show a Claude Code session's name when ccstatusline can't, and why my original setup spikes CPU.

AI AgentsCLI

A system design interview walkthrough: preserve who said what across storage, search, and analysis, and keep reported numbers explainable after models change.

Software EngineeringSystem DesignInterviews

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 and an agent-aware terminal multiplexer let the work keep going without me.

AI AgentsSoftware Engineering

The runway spreadsheet prices every hire in months of burn and books the missing team at zero.

CareerStartups

If the Mac still receives iMessages and the iPhone sends normally, restart imagent and identityservicesd before signing out or resetting the account.

macOSTroubleshooting

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.

HealthcareStartups

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.

CareerMentorshipAI Agents

Five short files that make a bare Claude or Codex session plan before it codes, keep changes small, and get an outside review, at a fraction of the context cost of a full skill stack like gstack.

AI AgentsSoftware EngineeringPrompts

Startup current is the wrong target; compare heat leaking in while you are away with the time and energy to cool back down.

EnergyWidget

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.

MCPCLIAI Agents

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.

LLMsStructured OutputJSONBenchmarking

Retrofitting CI, linting, Prettier, and regression tests into a mature codebase so the repository catches broken changes before a person has to.

Software EngineeringCITestingCode QualityAI Agents

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.

Google Places APIUXAutocomplete

Custom DNS can make a captive portal look broken by skipping the network’s resolver, so restoring automatic DNS brings the login page back.

macOSWi-FiDNSCaptive PortalTroubleshooting