Operational PM, in the open.
Essays on how teams actually coordinate. Build notes on what we built and why. Field notes from inside. Anti-patterns. Technical architecture. And the changelog. Filter by what kind of writing you're after.
Three weeks of standups. Zero blockers logged. Five real blockers happened.
Standup-as-ritual is not the same as standup-as-signal.
The team cap is suggested at twelve, not enforced.
Every team we've watched over 12 develops coordination drift within a month.
The hidden tax of stale task systems
Every "we'll update later" task compounds into operational fog. How to measure the cost, and why it doubles every quarter.
We caught our own PM board lying inside our dogfood instance.
The same drift we describe in essays, in our own dashboard.
We tried sprints. We removed them.
Six months of sprints, then six months without. The without version is unambiguously better. Here's why.
How sparQ handles real-time team status
Server-sent events, presence tracking, and the trade-offs we made to keep p99 under 200ms.
The green board illusion
"Everything is on track" is the most dangerous sentence in PM. Here's the mechanism that produces it.
One unmarked-done task in week 1 cost us five "what's the status?" pings by week 3.
The blast radius is wider than it looks.
Why presence matters more than status
"Available" and "in focus" tell you something. "On track" tells you nothing.
Splitting Inbox from Overview
One screen became two. Conversion to "task acted on" went from 31% to 68%. Here's the surgery.
Async standups: what works, what dies in a week
We've run async standups for 30 months across three team shapes. The format matters less than the consequence.
The blocker data model
Why blockers reference both tasks and people, how escalation paths are computed, and the migration that almost broke us.