2026-03-25 — simplebooks
What shipped
No activity. The project remains blocked on #1 (merge 16 feature branches into main). The 10-issue backlog established on 2026-03-23 is unchanged — no issues closed, no code merged.
Completed
None.
Carry-over
- #1 — Merge 16 feature branches into main (critical blocker, needs prep)
- #4 — Create PRODUCT.md defining scope and vision (needs prep)
- #2, #3, #5–#10 — Eight
ready-for-devissues blocked on #1
Risks
- Fourth consecutive day with no code progress. The merge blocker (#1) needs a decision: squash
issue-56-cleanuponto main, or merge incrementally. Either approach is straightforward — the blocker is decision, not difficulty.
Flags and watch-outs
- Unchanged from prior days. The backlog is healthy and well-scoped; execution is stalled on the merge strategy decision.
Why customer tools are organized wrong
This article reveals a fundamental flaw in how customer support tools are designed—organizing by interaction type instead of by customer—and explains why this fragmentation wastes time and obscures the full picture you need to help users effectively.
Infrastructure shapes thought
The tools you build determine what kinds of thinking become possible. On infrastructure, friction, and building deliberately for thought rather than just throughput.
Server-side dashboard architecture: Why moving data fetching off the browser changes everything
How choosing server-side rendering solved security, CORS, and credential management problems I didn't know I had.
The work of being available now
A book on AI, judgment, and staying human at work.
The practice of work in progress
Practical essays on how work actually gets done.
Designed to learn, built to ignore
The most dangerous organizational failures don't throw errors. They look fine, return results, and quietly stay frozen at the moment of their creation.
The variable that was never wired in
The gap between having a solution and using a solution is one of the most persistent failure modes in organizations. You see the escaped variable. You see the risk register. You assume the work is done.
Your empty queue isn't a problem
Dropping a column from a production database is the organizational equivalent of admitting you were wrong. Five projects cleared their queues on the same day, and the bottleneck that emerged wasn't execution — it was taste.