This process cannot be reduced to a static prompt for an LLM. Reviewing LLM-generated code is rarely enough—you miss the deep thinking that happens when you are coding yourself. In this stage, LLMs are most valuable as brainstorming partners: they can suggest alternative designs or ways of structuring code, but you should resist letting them […]
Building your own CLI Coding Agent with Pydantic-AI
The wave of CLI Coding Agents If you have tried Claude Code, Gemini Code, Open Code or Simon Willison’s LLM CLI, you’ve experienced something fundamentally different from ChatGPT or Github Copilot. These aren’t just chatbots or autocomplete tools – they’re agents that can read your code, run your tests, search docs and make changes to […]
Research, Review, Rebuild
Until recently, I held the belief that Generative Artificial Intelligence (GenAI) in software development was predominantly suited for greenfield projects. However, the introduction of the Model Context Protocol (MCP) marks a significant shift in this paradigm. MCP emerges as a transformative enabler for legacy modernization—especially for large-scale, long-lived, and complex systems. As part of my […]
From Black Box to Blueprint
A remarkably common case in large established enterprises is that there are systems that nobody wants to touch, but everyone depends on. They run payrolls, handle logistics, reconcile inventory, or process customer orders. They’ve been in place and evolving slowly for decades, built on stacks no one teaches anymore, and maintained by a shrinking pool […]
Some thoughts on LLMs and Software Development
I’m about to head away from looking after this site for a few weeks (part vacation, part work stuff). As I contemplate some weeks away from the daily routine, I feel an urge to share some scattered thoughts about the state of LLMs and AI. ❄ ❄ ❄ ❄ I’ve seen a few early surveys on the effect […]
To vibe or not to vibe
The discourse about to what level AI-generated code should be reviewed often feels very binary. Is vibe coding (i.e. letting AI generate code without looking at the code) good or bad? The answer is of course neither, because “it depends”. So what does it depend on? When I’m using AI for coding, I find myself […]
Anchoring AI to a reference application
Service templates are a typical building block in the “golden paths” organisations build for their engineering teams, to make it easy to do the right thing. The templates are supposed to be the role models for all the services in the organisation, always representing the most up to date coding patterns and standards. One of […]
Understanding Spec-Driven-Development: Kiro, spec-kit, and Tessl
I’ve been trying to understand one of the latest AI coding buzzword: Spec-driven development (SDD). I looked at three of the tools that label themselves as SDD tools and tried to untangle what it means, as of now. Definition Like with many emerging terms in this fast-paced space, the definition of “spec-driven development” (SDD) is […]
Fragments and Links
Mathias Verraes writes about the relationship between Domains and Bounded Contexts in Domain-Driven Design. It’s a common myth that there should always be a 1:1 relationship between them, but although it’s sometimes the case, deeper modeling often exposes a more interesting structure. Gary Marcus: (NYT Gift Link) If the strengths of A.I. are truly to […]
Agentic AI and Security
Agentic AI systems can be amazing – they offer radical new ways to build software, through orchestration of a whole ecosystem of agents, all via an imprecise conversational interface. This is a brand new way of working, but one that also opens up severe security risks, risks that may be fundamental to this approach. We […]







