What I shipped
Published I stopped reaching for Redux. This one struck a nerve — it got picked up on Twitter and sparked a surprisingly civil debate about state management in 2026. The TLDR: for most apps, React context + useReducer is enough. For large apps, Zustand. Redux is still fine, but it’s not the default anymore.
On the tinyq side, I’ve been quietly rewriting the persistence layer. The current version uses raw SQLite queries; the new version uses a thin query builder I wrote in about 200 lines. It’s not an ORM — it’s just enough abstraction to stop me from writing the same WHERE clause twelve times.
What I read
- “A Philosophy of Software Design” by John Ousterhout — Finally read it. The chapter on “deep modules” alone is worth the cover price. Made me rethink how I structure my libraries.
- Postgres docs: pg_stat_statements — I keep coming back to these. If you run Postgres and you’re not using pg_stat_statements, you’re flying blind.
- A thread by @brandur on idempotency keys — Short, precise, and changed how I think about payment APIs.
One thing I’m thinking about
I had a conversation with a friend who runs a small SaaS about the “premium mediocre” trap — the tendency to build features that are impressive in demos but don’t move the needle for actual users. His product has 47 features and 3 that matter. He knows which 3. He can’t bring himself to kill the other 44. I think about this every time I’m tempted to add a feature to tinyq.