Pragmatic architectural observations, programming notes, and product development strategy compiled from the field. Much of it learned the hard way.
Spoon-feeding a domain-general pipeline against one corpus is overfitting in prose instead of gradients: the engine memorises the domain you built it on. Why the leak enters when you are most careful, and the eval-driven discipline that catches it.
Cloud software usually removes friction. For sensitive or regulated work, another hosted service can add it back. A practical case for software that runs where the customer's data already lives.
The pitch is that AI can shoulder most of the data cleanup, leaving structure as the real problem. The reality is that AI carries one layer of a stack of six, and the rest stays slow, contextual, and human. What AI fixes, what it cannot, and what to build instead.
Quietly, in the background, a language long admired from a distance has been sharpening its blades. OCaml 5 closes the adoption gap with direct-style parallelism and algebraic effects.
The case for unstructured idleness as a working discipline. Why boredom is the input most software, startup, and product work is starved of, and why blocks of it are a necessity rather than a luxury.
A practical map of backend architectural choices for Postgres-first systems. Eight flavours from DB-as-API to event sourcing, with the six axes that actually drive the choice: tenancy, async profile, streaming, concurrency, and the LLM-producer wrinkle baked in.
Eleven recurring antipatterns that stop a software team's momentum, across architecture, product, planning, and culture. Field notes with the moves that help climb out.
Prompt injection is the confused-deputy bug in modern dress. The architectural fix is older than the problem: authority travels with the request, narrowed at every hop, and decided by deterministic policy, not by the model.
Three layers (SaaS chassis, engine, vertical) and two pivot points between them. The strategy that keeps the cost of swinging again bounded, for founders still in the search problem.
Tell me what you are building and where you want to get to. The first half-hour is free and confidential. If I am not the right person, I will say so and, where I can, point you to someone better suited.
I also consider permanent hands-on technical leadership roles, where the work is demanding and the role stays close to the code. Email is the best way to start that conversation.