Blogs
Long-form writing on product engineering, systems, and AI.
Designing an MVP When the Design Files Are Not Ready
How engineers can move MVP development forward without waiting on complete designs by triaging known patterns, visual baselines, and novel flows.
Turning Code Reviews into a System That Learns
Why patching review comments is an MVP trap when building with coding agents, and how fixing whole classes of mistakes keeps you fast without messy code.
Stop Optimizing for Search Engines: How Agents Actually Read Your Site
Why client-hydration payloads and loose meta tags starve LLM context windows, and how to build deterministic machine readability.
Securing Multi-Tenant RAG: Recall Collapse, pgvector Filtering, and PostgreSQL ltree
Why in-memory post-filtering causes recall collapse, how pgvector HNSW scans execute internally, and how to build hierarchical RBAC with PostgreSQL ltree.
The Fast Shipping Strategies That Quietly Kill Products
Most products don't fail because the idea was wrong. They fail because the team never stopped long enough to find out if the idea was right.
Questioning Features Before Users Have To
Buildable features still need to survive pressure from users and the business.
Refactoring Is Often Delayed Design
Refactoring is often the cost of assumptions that were never pressured early enough.