Author Archives: Graham

About Graham

I make it faster and easier for you to create high-quality code.

Creating “sub-agents” with Mistral Vibe

The vibe coding assistant doesn’t have the same idea of sub-agents that Claude Code does, but you can create them yourself—more or less—from the pieces it supplies. Write the prompt for the sub-agent in a markdown file, and save it … Continue reading

Posted in AI | Leave a comment

Announcing Chiron Codex, a community of software centaurs

Software engineers don’t need to outsource our agency to coding agents. We don’t need to give up reading the code, or understanding the problems. We can use AI tools to augment our own capabilities, to improve our engineering knowledge and … Continue reading

Posted in AI | Leave a comment

Configuring your computer for local inference with a generative AI coding assistant

You can use multiple tools to download, host, and interact with large language models (LLMs) for generative tasks, including coding assistants. This post describes the one that I tried that has been the most successful. Even if you follow the … Continue reading

Posted in whatevs | Leave a comment

Management is the wrong analogy for LLM augmentation

A common meme at the moment in AI-augmented coding circles is “we are all managers now”, with people expressing the idea that alongside actual programming, programmers now manage their team of agents. This is a poor analogy, in both directions. … Continue reading

Posted in AI, tool-support | Leave a comment

Is spec-driven development the end of Agile software development?

A claim that I’ve seen on software social media is that spec-driven development is evidence that agile was a dark path, poorly chosen. The argument goes that Agile software development is about eschewing detailed designs and specifications, in favour of experimentation and … Continue reading

Posted in agile, AI | Leave a comment

On the value of old principles

People using AI coding assistants typically wrestle with three problems (assuming they know what they’re trying to get the model to do, and that that’s the correct thing to try to get it to do): (It’s important to bear in … Continue reading

Posted in AI, design, OOP | Leave a comment

Vibe coding and BASIC

In Vibe Coding: What is it Good For? Absolutely Nothing (Sorry, Linus), The Register makes a comparison between vibe coding today and the BASIC programming of the first generation of home microcomputers: In one respect, though, vibe coding does have … Continue reading

Posted in AI, history | Leave a comment

Essence and accident in language model-assisted coding

In 1986, Fred Brooks posited that there was “no silver bullet” in software engineering—no tool or process that would yield an order-of-magnitude improvement in productivity. He based this assertion on the division of complexity into that which is essential to … Continue reading

Posted in AI, software-engineering, tool-support | 2 Comments

Tony Hoare and negative space

The Primeagen calls it Negative-Space Programming: using assertions to cut off the space of possible programs, leaving only the ones you believe are possible given your knowledge of a program’s state at a point. Tony Hoare just called it “logic”, … Continue reading

Posted in history, software-engineering | Tagged | Leave a comment

When did people favor composition over inheritance?

The phrase “favor composition over inheritance” has become one of those thought-terminating cliches in software design, and I always like to take a deeper look at those to understand where they come from and what ideas we’re missing if we … Continue reading

Posted in history, ooa/d, OOP | 5 Comments