Impact Intelligence is the title of my latest book. It explains how to improve awareness of the business impact of new initiatives. The Classic Enterprise thinks of the expenditure on these initiatives as discretionary spend. A software business might account for it as R&D expenditure. Written with a framing of investment governance, the book is […]
Team OKRs in Action
OKRs—Objectives and Key Results—have become a popular goal-setting framework in tech and beyond. They were designed to bridge the gap between strategy and execution, promising focus, alignment, and accountability. But too often, they’ve turned into something else entirely: a quarterly ritual of checklists, dashboards, and performance metrics that smother the original intent. I’ve seen it […]
Expansion Joints
Back in the days when I did live talks, one of my abilities was to finish on time, even if my talk time was cut at the last moment (perhaps due to the prior speaker running over). The key to my ability to do this was to use Expansion Joints – parts of the talk […]
Conversation: LLMs and Building Abstractions
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 […]








