Chris Parsons
Services
Workshops
Articles
LinkedIn
Index
adn
e-petitions: handling traffic
Aug 2011
e-petitions: deconstructed
Jul 2011
agents
Webinar: AI Can Do (Most Of) Your Work
Oct 2026
AI Decisions Just Got 100 Times Cheaper
Sep 2026
Prompt Evals Alone Are Useless
Sep 2026
The Harness Is The Bottleneck
Aug 2026
I Don't Want an AI God
May 2026
Open Models Are Ready
May 2026
Lockbox: Constrain Your Bots To Set Them Free
Feb 2026
Your Bot Is Your Responsibility
Feb 2026
AI Guardrails Do Not Work (Yet)
Feb 2026
Webinar: Ship While You Sleep
Feb 2026
AI Is Still Searching for a Home
Jan 2026
Who wants a browser?
Oct 2025
Which Coding Agent Is Best? (Head-to-Head Test)
Oct 2025
AgentKit Helps Its Competitors
Oct 2025
Is AI Unshippable? (Lessons from Doing It)
Aug 2025
You Should Kill Your Prompts
Jul 2025
agile
Why Time Units Beat Story Points Every Time
Mar 2025
Your Code Is A Liability
Nov 2024
Why you can scale agile with the right attitudes
Dec 2014
Why BDD works solo, and why that matters for everyone
Aug 2014
4 questions to discover if you're *really* agile...
Apr 2014
Make Cucumber features more readable with this one weird trick
Feb 2014
How to give BDD a chance
Nov 2013
Your framework is a liability
Sep 2012
Job titles are a team anti-pattern
Sep 2012
Attempting validated learning with Sol Trader
May 2012
Sol Trader now in Alpha
May 2012
Layers of abstraction: writing great cucumber code
Sep 2011
Layers of abstraction: combining BDD and UX
Sep 2011
e-petitions: handling traffic
Aug 2011
Work with me
Aug 2011
e-petitions: deconstructed
Jul 2011
Cucumbers with personality
Apr 2011
Card Of The Day: Actually Do Retrospective Actions
Jul 2010
Radiating status at Eden
Mar 2010
The Story Card Is Not The Story
Feb 2010
Pairing works for everything
Jan 2010
ai
Webinar: AI Can Do (Most Of) Your Work
Oct 2026
(I Think Whilst) Writing With AI
Oct 2026
Ship Like an Engineer Without Writing Any Code
Sep 2026
Time To Hire An AI Head
Sep 2026
Call It Machine Intelligence
Sep 2026
AI Decisions Just Got 100 Times Cheaper
Sep 2026
(I Am No Longer) Coding With AI
Sep 2026
AI Progress Is Accelerating. Here Is Why It Feels Slow
Sep 2026
Webinar: Make Your AI Rollout Stick
Sep 2026
Prompt Evals Alone Are Useless
Sep 2026
A Thousand Flowers Is Not Enough
Aug 2026
Software Factories Can Handle UX
Aug 2026
The Harness Is The Bottleneck
Aug 2026
Intelligence Cost Is Collapsing
Jul 2026
Webinar: What CEOs Must Do Next About AI
Jul 2026
Don't Just Give Everyone an AI
Jun 2026
Slice Your Job Into Skills
Jun 2026
Skills Are Meant For Sharing
Jun 2026
Stop Saving Tokens. Start Writing Scripts.
Jun 2026
Webinar: Escape the Great AI Lock-In
Jun 2026
I Don't Want an AI God
May 2026
Open Models Are Ready
May 2026
Webinar: Unblock Your Team
May 2026
Polished Consensus Is Boring
May 2026
Ralph In One Line, No Setup
May 2026
Engineering in 2028
May 2026
What To Put In Your AI Knowledge Base
May 2026
How I Use AI to Code
Apr 2026
Truman Would Have Taken Over AI by Now
Apr 2026
Build An AI Knowledge Base From Scratch
Apr 2026
Ralph Loops Live at AI Engineer Europe 2026
Apr 2026
Webinar: AI Has a People Problem
Mar 2026
Stop Prompting, Start Briefing
Mar 2026
Feedback Is the New Bottleneck
Mar 2026
The AI Leadership Lab at CTO Craft
Mar 2026
Webinar: Let AI Do Your Work
Mar 2026
Lockbox: Constrain Your Bots To Set Them Free
Feb 2026
Code Review Is Dying
Feb 2026
Your Bot Is Your Responsibility
Feb 2026
AI Guardrails Do Not Work (Yet)
Feb 2026
Webinar: Ship While You Sleep
Feb 2026
Run Claude Code From Your Phone
Feb 2026
Don't Let Your CEO Install OpenClaw
Feb 2026
Dial-Up AI Is Ending
Feb 2026
AI Must Be Line Managed
Jan 2026
Skills Are Claude Code's Secret Weapon
Jan 2026
AI Is Still Searching for a Home
Jan 2026
Where Did My Day Go? A Claude Code Skill for Remembering
Jan 2026
Stop AI Stealing From You
Jan 2026
Running Ralph Loops Is Easy
Jan 2026
Your Agent Orchestrator Is Too Clever
Jan 2026
Webinar: Are We Behind in AI?
Jan 2026
My AI Predictions for 2026
Dec 2025
See Three Kings Of Inference Spar
Dec 2025
The Missing Peer Group for AI Leaders
Dec 2025
ChatGPT Is Terraforming Earth
Dec 2025
The Slow And Dangerous Loss Of Self
Dec 2025
OpenAI's Code Red Is Your Window
Dec 2025
Why AI-First Teams Still Ship Slowly
Dec 2025
AI Slop Is Real. Model Collapse Isn't.
Nov 2025
How to React to a New Frontier Model
Nov 2025
Claude Code Is For Everything
Nov 2025
Who wants a browser?
Oct 2025
Which Coding Agent Is Best? (Head-to-Head Test)
Oct 2025
Ditch Autocomplete
Oct 2025
AI Teams Need Tortoises Not Hares
Oct 2025
AgentKit Helps Its Competitors
Oct 2025
Why Your AI Output Is Slop
Oct 2025
AI Is Consistently Mediocre. That's Why It's Valuable.
Sep 2025
How Not to Screw Up Your AI Rollout
Sep 2025
Chatbots Are the Wrong Tool for AI Writing
Aug 2025
Coding with AI: How To Do It Well And What It Means For The Industry
Aug 2025
Independent Coding Agents Aren't Ready
Aug 2025
Is AI Unshippable? (Lessons from Doing It)
Aug 2025
Doing Real Work with AI Just Became 150x Cheaper
Aug 2025
Parallel AI Agents Create Unusable Code
Jul 2025
Beyond the Demo: Building LLM Applications That Actually Ship
Jul 2025
You Should Kill Your Prompts
Jul 2025
AI Needs More From You
Jun 2025
The AI Tools Actually Worth Using
Jun 2025
How I Make Complex AI Changes
May 2025
Four Hours, One AI App, Many Lessons
May 2025
AI Might Save Software Craft
May 2025
Graph RAG is the Future
May 2025
I Built Kaijo to Fix Unreliable AI
Apr 2025
The AI Agent Opportunity Is Too Big to Ignore
Apr 2025
The AI Climate Panic Is Wrong
Apr 2025
Rehearse Hard Conversations with AI
Apr 2025
Prompting Sucks (And What We Can Do About It)
Feb 2025
How to Build a Robust LLM Application
Dec 2024
ambiguity
Driving out feature ambiguity
Jan 2010
analysis
AI Progress Is Accelerating. Here Is Why It Feels Slow
Sep 2026
anti-pattern
How to decide whether a tool is right for you
May 2014
4 questions to discover if you're *really* agile...
Apr 2014
Delegated tasks are a team anti-pattern
Oct 2012
Job titles are a team anti-pattern
Sep 2012
Task assignment is a team anti-pattern
Sep 2012
apprenticeship
Are apprenticeships scalable?
Apr 2011
Are coding katas really worth it?
Mar 2011
BBC Talk on A Philosophy of Software
Feb 2010
Driving out feature ambiguity
Jan 2010
Craftsmanship vs. Apprenticeship
Dec 2009
architecture
AI Might Save Software Craft
May 2025
ashcloud
Every Ash Cloud Has A Silver Lining
May 2010
automation
Webinar: Let AI Do Your Work
Mar 2026
Webinar: Ship While You Sleep
Feb 2026
Don't Let Your CEO Install OpenClaw
Feb 2026
AI Must Be Line Managed
Jan 2026
bdd
Extreme YAGNI: How BDD nails your prototyping stage
May 2016
Why you can scale agile with the right attitudes
Dec 2014
Why BDD works solo, and why that matters for everyone
Aug 2014
How not to check in temporary code
Jul 2014
How to decide whether a tool is right for you
May 2014
4 questions to discover if you're *really* agile...
Apr 2014
How to layer context into your features using Real Narrative
Apr 2014
Make Cucumber features more readable with this one weird trick
Feb 2014
How to give BDD a chance
Nov 2013
BDD Kickstart is dead. Long live...
Nov 2013
The toolchain of dreams
Sep 2013
BDD: How to deal stories into features
Aug 2013
Why Continuous Delivery and BDD play so nicely
Aug 2013
Rack::Usermanual - Cucumber features as in-app user manual
Jun 2013
Features are documentation, not tests
Apr 2013
BDD without tools: testing shell script
Mar 2013
The perils of curiosity
Feb 2013
"Project velocity is a useless metric." Discuss.
Jan 2013
That's not BDD, that's just Cucumber
Jan 2013
Dependency injection != Inversion of Control
Jan 2013
BDD Kickstart: London and 2013 plans
Jan 2013
Cucumber: keeping the build passing
Dec 2012
Scenarios are not Acceptance Criteria
Nov 2012
Cucumber: the integration testing trap
Nov 2012
Should we store state in our steps?
Nov 2012
How to write a great story
Oct 2012
The simplest Cucumber project ever
Oct 2012
Cucumber isn't a testing tool
Sep 2012
The power of feedback
Sep 2012
Kickstart your team on BDD
Jul 2012
Feature writing: multiple actors
Dec 2011
How I'm testing iPhone apps: part 2
Dec 2011
How I'm testing iPhone apps: part 1
Dec 2011
Your tests are lying to you
Oct 2011
Layers of abstraction: writing great cucumber code
Sep 2011
Layers of abstraction: combining BDD and UX
Sep 2011
bddkickstart
BDD Kickstart is dead. Long live...
Nov 2013
BDD Kickstart: London and 2013 plans
Jan 2013
How to write a great story
Oct 2012
The simplest Cucumber project ever
Oct 2012
Kickstart your team on BDD
Jul 2012
bloom
How to quickly add bloom to your game engine
Jun 2015
Effective bloom in OpenGL for Sol Trader
Feb 2012
business
OpenAI's Code Red Is Your Window
Dec 2025
Who wants a browser?
Oct 2025
AgentKit Helps Its Competitors
Oct 2025
I Built Kaijo to Fix Unreliable AI
Apr 2025
The AI Agent Opportunity Is Too Big to Ignore
Apr 2025
Startup Success Stories Are Flawed
Mar 2025
Founder mode is emergency surgery
Jan 2025
How to Build a Robust LLM Application
Dec 2024
Why Hybrid Work Works
Dec 2024
The Job Is Not To Build
Dec 2024
The First Thing A Startup CTO Must Do
Nov 2024
Blogging again after a long hiatus
Nov 2024
A new adventure
Dec 2017
5 ways I screwed up Sol Trader's launch: a post-mortem
Jun 2016
Why (I hope) I will weather the Indiepocalypse
Oct 2015
7 things I've learnt in 3 years coding my first indie game
Jan 2015
New for 2015: Sol Trader now on Kickstarter
Jan 2015
BDD Kickstart is dead. Long live...
Nov 2013
Cucumber isn't a testing tool
Sep 2012
Showroom software
Sep 2012
Attempting validated learning with Sol Trader
May 2012
Kanogo: vapourware to beta in 24 hours
Sep 2011
The Principle of Scattered Work
May 2011
On Office Politics
May 2011
Are apprenticeships scalable?
Apr 2011
The team is the atomic unit of success
Apr 2011
Certification: recommendation mass produced
Apr 2011
Eden Development has closed
Mar 2011
User Experience Is Everything
May 2010
R.I.P. Web 1.0
Dec 2009
c++
How to add live code reload to your game
Aug 2015
Why I wrote Sol Trader's GUI code from scratch
Aug 2015
How to quickly add bloom to your game engine
Jun 2015
Your abstractions are a liability
Apr 2015
How I doubled the speed of my game by giving up on C++
Apr 2015
A fresh take on DCI with C++ (with example)
Apr 2012
Sol Trader: on lighting
Feb 2012
Effective bloom in OpenGL for Sol Trader
Feb 2012
Switching Sol Trader from Ruby to C++: one week on
Jan 2012
Why I switched from Ruby back to C++
Jan 2012
career
A new adventure
Dec 2017
Eden Development has closed
Mar 2011
certification
Certification: recommendation mass produced
Apr 2011
charity
Call for coders: Children's Future International
Oct 2010
chef
e-petitions: deconstructed
Jul 2011
cherrypick
How to Build a Robust LLM Application
Dec 2024
Why Hybrid Work Works
Dec 2024
chicago
Every Ash Cloud Has A Silver Lining
May 2010
cijoe
Multiple CI Joes with Rack and Passenger
Mar 2010
claude-code
Lockbox: Constrain Your Bots To Set Them Free
Feb 2026
Run Claude Code From Your Phone
Feb 2026
Where Did My Day Go? A Claude Code Skill for Remembering
Jan 2026
climate
ChatGPT Is Terraforming Earth
Dec 2025
The AI Climate Panic Is Wrong
Apr 2025
code
(I Am No Longer) Coding With AI
Sep 2026
How I Use AI to Code
Apr 2026
Coding with AI: How To Do It Well And What It Means For The Industry
Aug 2025
How to Build a Robust LLM Application
Dec 2024
Your Code Is A Liability
Nov 2024
The Sol Trader Christmas Eve update: moddable missions
Dec 2015
New Sol Trader beta: the science of blame and unforgiveness
Dec 2015
Modelling opinions and prejudices in Sol Trader
Nov 2015
Sol Trader combat preview
Nov 2015
How to add live code reload to your game
Aug 2015
Why I wrote Sol Trader's GUI code from scratch
Aug 2015
The difference review and planning makes to indie development
Jun 2015
How to quickly add bloom to your game engine
Jun 2015
The huge difference a good Entity System could make to your game
Jun 2015
How tone of voice works in Sol Trader's dialogue system
May 2015
How dialogue works in Sol Trader
May 2015
How face generation works in Sol Trader
May 2015
How I'm using Proxemics in Sol Trader's game design
Apr 2015
Why I ditched all the build tools in favour of a simple script
Apr 2015
Your abstractions are a liability
Apr 2015
How I doubled the speed of my game by giving up on C++
Apr 2015
Why video game coders don't use TDD, and why it matters
Mar 2015
7 things I've learnt in 3 years coding my first indie game
Jan 2015
How not to check in temporary code
Jul 2014
The toolchain of dreams
Sep 2013
Extreme isolation part 3: coding a CRUD app (with full example)
Sep 2013
Extreme isolation part 2: separate the domain from the changes
Jul 2013
Rack::Usermanual - Cucumber features as in-app user manual
Jun 2013
Extreme isolation in web apps: part 1
May 2013
BDD without tools: testing shell script
Mar 2013
Dependency injection != Inversion of Control
Jan 2013
Cucumber: keeping the build passing
Dec 2012
Your framework is a liability
Sep 2012
Never leave a failing test
Sep 2012
The power of good naming
Sep 2012
Kickstart your team on BDD
Jul 2012
Waxing Lyrical on Pathfinding
May 2012
A fresh take on DCI with C++ (with example)
Apr 2012
On coding defensively
Feb 2012
Sol Trader: on lighting
Feb 2012
Effective bloom in OpenGL for Sol Trader
Feb 2012
Switching Sol Trader from Ruby to C++: one week on
Jan 2012
Why I switched from Ruby back to C++
Jan 2012
Introducing Sol Trader
Jan 2012
A cache-busting http server script in ruby
Dec 2011
Feature writing: multiple actors
Dec 2011
How I'm testing iPhone apps: part 2
Dec 2011
How I'm testing iPhone apps: part 1
Dec 2011
Your tests are lying to you
Oct 2011
Kanogo: vapourware to beta in 24 hours
Sep 2011
Pin in the map: customisable pin icons
Sep 2011
e-petitions: handling traffic
Aug 2011
Work with me
Aug 2011
e-petitions: deconstructed
Jul 2011
Lean code: slides and feedback
May 2011
Pomodoros help you refactor
Apr 2011
Call for coders: Children's Future International
Oct 2010
How to test your node.js app
May 2010
Every Ash Cloud Has A Silver Lining
May 2010
Five things I learnt from Corey Haines
Mar 2010
Archivey the Robot
Mar 2010
Introducing Pushy - github notifications to google wave
Mar 2010
coding
Ship Like an Engineer Without Writing Any Code
Sep 2026
Which Coding Agent Is Best? (Head-to-Head Test)
Oct 2025
Ditch Autocomplete
Oct 2025
compliance
Stop AI Stealing From You
Jan 2026
conference
Sol Trader will be at EGX in September!
Jul 2015
Slides for "Leading software teams well"
May 2013
Waxing Lyrical on Pathfinding
May 2012
Leancamp Report
May 2010
config
Use Markdown to send HTML email via Mutt: now working on iOS mail
Oct 2013
continuous delivery
BDD Kickstart is dead. Long live...
Nov 2013
The toolchain of dreams
Sep 2013
Why Continuous Delivery and BDD play so nicely
Aug 2013
continuous integration
Why I ditched all the build tools in favour of a simple script
Apr 2015
The toolchain of dreams
Sep 2013
Multiple CI Joes with Rack and Passenger
Mar 2010
craftsmanship
(I Am No Longer) Coding With AI
Sep 2026
How I Use AI to Code
Apr 2026
Coding with AI: How To Do It Well And What It Means For The Industry
Aug 2025
AI Might Save Software Craft
May 2025
How to Build a Robust LLM Application
Dec 2024
Extreme isolation part 2: separate the domain from the changes
Jul 2013
crud
Extreme isolation part 3: coding a CRUD app (with full example)
Sep 2013
cto
Hiring Startup Engineers: a field manual
May 2025
Always Be Unblocking
Apr 2025
Why Time Units Beat Story Points Every Time
Mar 2025
How To Get Clarity With a New Tech Team
Mar 2025
Founder mode is emergency surgery
Jan 2025
How to Build a Robust LLM Application
Dec 2024
Why Hybrid Work Works
Dec 2024
The Job Is Not To Build
Dec 2024
The First Thing A Startup CTO Must Do
Nov 2024
cucumber
Extreme YAGNI: How BDD nails your prototyping stage
May 2016
Why BDD works solo, and why that matters for everyone
Aug 2014
How to layer context into your features using Real Narrative
Apr 2014
Make Cucumber features more readable with this one weird trick
Feb 2014
BDD Kickstart is dead. Long live...
Nov 2013
How I learned to stop worrying and love (some) detailed Cucumber features
Nov 2013
Extreme isolation part 3: coding a CRUD app (with full example)
Sep 2013
BDD: How to deal stories into features
Aug 2013
Extreme isolation part 2: separate the domain from the changes
Jul 2013
Rack::Usermanual - Cucumber features as in-app user manual
Jun 2013
Extreme isolation in web apps: part 1
May 2013
Features are documentation, not tests
Apr 2013
That's not BDD, that's just Cucumber
Jan 2013
Dependency injection != Inversion of Control
Jan 2013
Cucumber: keeping the build passing
Dec 2012
Scenarios are not Acceptance Criteria
Nov 2012
Cucumber: the integration testing trap
Nov 2012
Should we store state in our steps?
Nov 2012
How to write a great story
Oct 2012
The simplest Cucumber project ever
Oct 2012
Cucumber isn't a testing tool
Sep 2012
Kickstart your team on BDD
Jul 2012
Feature writing: multiple actors
Dec 2011
Your tests are lying to you
Oct 2011
Layers of abstraction: writing great cucumber code
Sep 2011
Pin in the map: customisable pin icons
Sep 2011
Layers of abstraction: combining BDD and UX
Sep 2011
Cucumbers with personality
Apr 2011
How to get Spork working NOW on Rails 3, Rspec 2 and Cucumber
Nov 2010
Driving out feature ambiguity
Jan 2010
culture
Always Be Unblocking
Apr 2025
How To Avoid Bad Startup Culture
Feb 2025
cursor
AI Needs More From You
Jun 2025
dci
A fresh take on DCI with C++ (with example)
Apr 2012
design
Software Factories Can Handle UX
Aug 2026
developer-experience
Ditch Autocomplete
Oct 2025
development
(I Am No Longer) Coding With AI
Sep 2026
How I Use AI to Code
Apr 2026
Skills Are Claude Code's Secret Weapon
Jan 2026
AI Is Consistently Mediocre. That's Why It's Valuable.
Sep 2025
Coding with AI: How To Do It Well And What It Means For The Industry
Aug 2025
Independent Coding Agents Aren't Ready
Aug 2025
AI Might Save Software Craft
May 2025
diy planner
SVG Planner
Oct 2006
e-petitions
e-petitions: handling traffic
Aug 2011
e-petitions: deconstructed
Jul 2011
ealdorlight
Ealdorlight: A Kickstarter retrospective
Nov 2017
Ealdorlight's Kickstarter is live at 4pm today
Jun 2017
How Ealdorlight's story stands out
May 2017
Ealdorlight Kickstarter on 6th June, Sol Trader 1.3 released
Apr 2017
Introducing: Ealdorlight
Mar 2017
economics
Intelligence Cost Is Collapsing
Jul 2026
Open Models Are Ready
May 2026
Dial-Up AI Is Ending
Feb 2026
ChatGPT Is Terraforming Earth
Dec 2025
Doing Real Work with AI Just Became 150x Cheaper
Aug 2025
eden
Eden Development has closed
Mar 2011
Radiating status at Eden
Mar 2010
The Story Card Is Not The Story
Feb 2010
egx
Sol Trader will be at EGX in September!
Jul 2015
email
Use Markdown to send HTML email via Mutt: now working on iOS mail
Oct 2013
engineering
AI Decisions Just Got 100 Times Cheaper
Sep 2026
Prompt Evals Alone Are Useless
Sep 2026
The Harness Is The Bottleneck
Aug 2026
Stop Saving Tokens. Start Writing Scripts.
Jun 2026
Ralph In One Line, No Setup
May 2026
Ralph Loops Live at AI Engineer Europe 2026
Apr 2026
Stop Prompting, Start Briefing
Mar 2026
Feedback Is the New Bottleneck
Mar 2026
Code Review Is Dying
Feb 2026
Don't Let Your CEO Install OpenClaw
Feb 2026
AI Must Be Line Managed
Jan 2026
Running Ralph Loops Is Easy
Jan 2026
Your Agent Orchestrator Is Too Clever
Jan 2026
Is AI Unshippable? (Lessons from Doing It)
Aug 2025
Parallel AI Agents Create Unusable Code
Jul 2025
Beyond the Demo: Building LLM Applications That Actually Ship
Jul 2025
You Should Kill Your Prompts
Jul 2025
AI Needs More From You
Jun 2025
The AI Tools Actually Worth Using
Jun 2025
How I Make Complex AI Changes
May 2025
Four Hours, One AI App, Many Lessons
May 2025
Hiring Startup Engineers: a field manual
May 2025
Graph RAG is the Future
May 2025
Always Be Unblocking
Apr 2025
How to Rebrand Your Mobile App (Without Breaking Everything)
Feb 2025
How To Avoid Bad Startup Culture
Feb 2025
How to Build a Robust LLM Application
Dec 2024
estimation
Why Time Units Beat Story Points Every Time
Mar 2025
evaluation
How to React to a New Frontier Model
Nov 2025
extreme isolation
Extreme isolation part 3: coding a CRUD app (with full example)
Sep 2013
Extreme isolation part 2: separate the domain from the changes
Jul 2013
Extreme isolation in web apps: part 1
May 2013
feedback
"Project velocity is a useless metric." Discuss.
Jan 2013
The power of feedback
Sep 2012
flow
How to lead your life
Jan 2017
On Flow, and Katas
May 2011
founders
Founder mode is emergency surgery
Jan 2025
fun
Introducing Card Pirates
Aug 2013
Waxing Lyrical on Pathfinding
May 2012
Snakes and Ladders Kata
Dec 2009
functional programming
Your abstractions are a liability
Apr 2015
Why video game coders don't use TDD, and why it matters
Mar 2015
The perils of curiosity
Feb 2013
That's not BDD, that's just Cucumber
Jan 2013
game design
5 ways I screwed up Sol Trader's launch: a post-mortem
Jun 2016
Gossip: the best new Sol Trader feature for ages
Feb 2016
The top 5 space games of 2015
Jan 2016
The cunning plans of Sol Trader
Jan 2016
Full disclosure: Sol Trader conversation upgrades
Jan 2016
The Sol Trader Christmas Eve update: moddable missions
Dec 2015
New Sol Trader beta: the science of blame and unforgiveness
Dec 2015
Modelling opinions and prejudices in Sol Trader
Nov 2015
Sol Trader combat preview
Nov 2015
Three days to go
Sep 2015
Gossip as a game mechanic
Sep 2015
How Sol Trader uses information as currency
Jun 2015
How to quickly add bloom to your game engine
Jun 2015
The huge difference a good Entity System could make to your game
Jun 2015
How tone of voice works in Sol Trader's dialogue system
May 2015
How dialogue works in Sol Trader
May 2015
How face generation works in Sol Trader
May 2015
How I'm using Proxemics in Sol Trader's game design
Apr 2015
How to choose between realism and fun in game design
Apr 2015
4 things every space game must have
Mar 2015
game development
Ealdorlight: A Kickstarter retrospective
Nov 2017
Ealdorlight's Kickstarter is live at 4pm today
Jun 2017
How Ealdorlight's story stands out
May 2017
Ealdorlight Kickstarter on 6th June, Sol Trader 1.3 released
Apr 2017
Introducing: Ealdorlight
Mar 2017
What's next for Sol Trader and me
Feb 2017
5 ways I screwed up Sol Trader's launch: a post-mortem
Jun 2016
Gossip: the best new Sol Trader feature for ages
Feb 2016
The cunning plans of Sol Trader
Jan 2016
Full disclosure: Sol Trader conversation upgrades
Jan 2016
The Sol Trader Christmas Eve update: moddable missions
Dec 2015
New Sol Trader beta: the science of blame and unforgiveness
Dec 2015
Modelling opinions and prejudices in Sol Trader
Nov 2015
Sol Trader combat preview
Nov 2015
Sol Trader Kickstarter now live!
Sep 2015
Three days to go
Sep 2015
Gossip as a game mechanic
Sep 2015
How to add live code reload to your game
Aug 2015
Why I wrote Sol Trader's GUI code from scratch
Aug 2015
Sol Trader will be at EGX in September!
Jul 2015
3 new screenshots of Sol Trader's new interface
Jul 2015
Trailer: How it will feel to move around Sol Trader's cities
Jul 2015
How Sol Trader uses information as currency
Jun 2015
The difference review and planning makes to indie development
Jun 2015
How to quickly add bloom to your game engine
Jun 2015
The huge difference a good Entity System could make to your game
Jun 2015
How tone of voice works in Sol Trader's dialogue system
May 2015
Never, ever, ever, ever, ever give up
May 2015
How dialogue works in Sol Trader
May 2015
How face generation works in Sol Trader
May 2015
How I'm using Proxemics in Sol Trader's game design
Apr 2015
Why I ditched all the build tools in favour of a simple script
Apr 2015
How to choose between realism and fun in game design
Apr 2015
Your abstractions are a liability
Apr 2015
How I doubled the speed of my game by giving up on C++
Apr 2015
4 things every space game must have
Mar 2015
After a long journey, Sol Trader has been greenlit!
Mar 2015
Why video game coders don't use TDD, and why it matters
Mar 2015
7 things I've learnt in 3 years coding my first indie game
Jan 2015
New for 2015: Sol Trader now on Kickstarter
Jan 2015
Introducing Card Pirates
Aug 2013
Sol Trader: on lighting
Feb 2012
Effective bloom in OpenGL for Sol Trader
Feb 2012
Switching Sol Trader from Ruby to C++: one week on
Jan 2012
Why I switched from Ruby back to C++
Jan 2012
Introducing Sol Trader
Jan 2012
git
The toolchain of dreams
Sep 2013
How I'm writing my book using Vim, Git and Ruby
Nov 2010
google wave
Archivey the Robot
Mar 2010
Introducing Pushy - github notifications to google wave
Mar 2010
government
e-petitions: handling traffic
Aug 2011
e-petitions: deconstructed
Jul 2011
gower street
A new adventure
Dec 2017
gtd
A formula of motivation
Apr 2011
SVG Planner
Oct 2006
heroku
Kanogo: vapourware to beta in 24 hours
Sep 2011
hiring
Hiring Startup Engineers: a field manual
May 2025
howto
Use Markdown to send HTML email via Mutt: now working on iOS mail
Oct 2013
Multiple CI Joes with Rack and Passenger
Mar 2010
index cards
Card Of The Day: Actually Do Retrospective Actions
Jul 2010
indie games
Ealdorlight: A Kickstarter retrospective
Nov 2017
Ealdorlight's Kickstarter is live at 4pm today
Jun 2017
How Ealdorlight's story stands out
May 2017
Ealdorlight Kickstarter on 6th June, Sol Trader 1.3 released
Apr 2017
Introducing: Ealdorlight
Mar 2017
What's next for Sol Trader and me
Feb 2017
Gossip: the best new Sol Trader feature for ages
Feb 2016
The top 5 space games of 2015
Jan 2016
Sol Trader at EGX Rezzed: 7-9 April 2016
Jan 2016
The cunning plans of Sol Trader
Jan 2016
Full disclosure: Sol Trader conversation upgrades
Jan 2016
The Sol Trader Christmas Eve update: moddable missions
Dec 2015
New Sol Trader beta: the science of blame and unforgiveness
Dec 2015
Modelling opinions and prejudices in Sol Trader
Nov 2015
Sol Trader combat preview
Nov 2015
Why (I hope) I will weather the Indiepocalypse
Oct 2015
Never, ever, ever, ever, ever give up
May 2015
How to choose between realism and fun in game design
Apr 2015
4 things every space game must have
Mar 2015
After a long journey, Sol Trader has been greenlit!
Mar 2015
Why video game coders don't use TDD, and why it matters
Mar 2015
New for 2015: Sol Trader now on Kickstarter
Jan 2015
industry
AI Progress Is Accelerating. Here Is Why It Feels Slow
Sep 2026
information radiator
Announcing edash
Mar 2010
Radiating status at Eden
Mar 2010
infrastructure
Independent Coding Agents Aren't Ready
Aug 2025
ios
Use Markdown to send HTML email via Mutt: now working on iOS mail
Oct 2013
How I'm testing iPhone apps: part 2
Dec 2011
How I'm testing iPhone apps: part 1
Dec 2011
java
Dependency injection != Inversion of Control
Jan 2013
Spring Richclient ~ That's a wrap
Apr 2006
Spring Richclient ~ A Journey
Apr 2006
Spring Richclient ~ Session Eight ~ Such a bind
Mar 2006
Spring Richclient ~ Session Seven ~ Beating the Command Framework into Submission
Mar 2006
Spring Richclient ~ Session Six ~ The View
Feb 2006
Spring Richclient ~ Session Five ~ Applications, windows, views
Feb 2006
Spring Richclient ~ Session One ~ Beans, Shmeans and services
Jan 2006
Spring Richclient ~ Session Three ~ How did that work then?
Jan 2006
Spring Richclient ~ Session Two ~ Hello World
Jan 2006
Spring Richclient ~ Session One ~ Making Petclinic work
Jan 2006
Spring Richclient ~ Introduction
Jan 2006
javascript
A cache-busting http server script in ruby
Dec 2011
How to test your node.js app
May 2010
jenkins
Sol Trader: a continuous deployment story
Mar 2012
jobs
Why Hybrid Work Works
Dec 2024
kaijo
I Built Kaijo to Fix Unreliable AI
Apr 2025
kanban
The Story Card Is Not The Story
Feb 2010
kano analysis
Kanogo: vapourware to beta in 24 hours
Sep 2011
kanogo
Kanogo: vapourware to beta in 24 hours
Sep 2011
karate
Are coding katas really worth it?
Mar 2011
katas
Are coding katas really worth it?
Mar 2011
Driving out feature ambiguity
Jan 2010
Snakes and Ladders Kata
Dec 2009
kickstart
BDD Kickstart is dead. Long live...
Nov 2013
Why Continuous Delivery and BDD play so nicely
Aug 2013
kickstarter
Ealdorlight: A Kickstarter retrospective
Nov 2017
Ealdorlight's Kickstarter is live at 4pm today
Jun 2017
How Ealdorlight's story stands out
May 2017
Ealdorlight Kickstarter on 6th June, Sol Trader 1.3 released
Apr 2017
Sol Trader Kickstarter now live!
Sep 2015
Three days to go
Sep 2015
Gossip as a game mechanic
Sep 2015
7 things I've learnt in 3 years coding my first indie game
Jan 2015
New for 2015: Sol Trader now on Kickstarter
Jan 2015
knowledge-management
Chatbots Are the Wrong Tool for AI Writing
Aug 2025
leadership
(I Think Whilst) Writing With AI
Oct 2026
Time To Hire An AI Head
Sep 2026
Call It Machine Intelligence
Sep 2026
AI Decisions Just Got 100 Times Cheaper
Sep 2026
Webinar: Make Your AI Rollout Stick
Sep 2026
A Thousand Flowers Is Not Enough
Aug 2026
Webinar: What CEOs Must Do Next About AI
Jul 2026
Don't Just Give Everyone an AI
Jun 2026
Slice Your Job Into Skills
Jun 2026
Skills Are Meant For Sharing
Jun 2026
Webinar: Escape the Great AI Lock-In
Jun 2026
Webinar: Unblock Your Team
May 2026
Polished Consensus Is Boring
May 2026
Engineering in 2028
May 2026
What To Put In Your AI Knowledge Base
May 2026
Truman Would Have Taken Over AI by Now
Apr 2026
Build An AI Knowledge Base From Scratch
Apr 2026
Webinar: AI Has a People Problem
Mar 2026
The AI Leadership Lab at CTO Craft
Mar 2026
Webinar: Let AI Do Your Work
Mar 2026
Webinar: Are We Behind in AI?
Jan 2026
The Missing Peer Group for AI Leaders
Dec 2025
The Slow And Dangerous Loss Of Self
Dec 2025
Why AI-First Teams Still Ship Slowly
Dec 2025
How Not to Screw Up Your AI Rollout
Sep 2025
Always Be Unblocking
Apr 2025
Why Time Units Beat Story Points Every Time
Mar 2025
How To Get Clarity With a New Tech Team
Mar 2025
How To Avoid Bad Startup Culture
Feb 2025
Why you can scale agile with the right attitudes
Dec 2014
How to give BDD a chance
Nov 2013
Slides for "Leading software teams well"
May 2013
Delegated tasks are a team anti-pattern
Oct 2012
learning
How to lead your life
Jan 2017
Attempting validated learning with Sol Trader
May 2012
legacy
Pin in the map: customisable pin icons
Sep 2011
liability
Your Code Is A Liability
Nov 2024
Your abstractions are a liability
Apr 2015
Your framework is a liability
Sep 2012
life
Blogging again after a long hiatus
Nov 2024
How to lead your life
Jan 2017
Introducing Morning Pages
Sep 2012
Introducing Sol Trader
Jan 2012
Work with me
Aug 2011
Don't miss your greatest achievement
May 2011
The Principle of Scattered Work
May 2011
A formula of motivation
Apr 2011
On the nature of time
Apr 2011
Are coding katas really worth it?
Mar 2011
Learning to say Yes
Mar 2011
Pomodoros done (hopefully) right
Mar 2011
Eden Development has closed
Mar 2011
My Polyphasic Sleep Experiment
Jul 2010
750words.com + GTD = Focus
Jul 2010
lighting
Sol Trader: on lighting
Feb 2012
livestream
Four Hours, One AI App, Many Lessons
May 2025
llm
Beyond the Demo: Building LLM Applications That Actually Ship
Jul 2025
local-ai
Dial-Up AI Is Ending
Feb 2026
Doing Real Work with AI Just Became 150x Cheaper
Aug 2025
management
How To Get Clarity With a New Tech Team
Mar 2025
How to give BDD a chance
Nov 2013
Delegated tasks are a team anti-pattern
Oct 2012
markdown
Use Markdown to send HTML email via Mutt: now working on iOS mail
Oct 2013
marketing
5 ways I screwed up Sol Trader's launch: a post-mortem
Jun 2016
Sol Trader will be at EGX in September!
Jul 2015
After a long journey, Sol Trader has been greenlit!
Mar 2015
meta
Work with me
Aug 2011
Old blog articles from yesteryear
Dec 2009
Jekyll, the blog engine of kings
Dec 2009
Welcome
Dec 2009
mobile
How to Rebrand Your Mobile App (Without Breaking Everything)
Feb 2025
motivation
How to lead your life
Jan 2017
Never, ever, ever, ever, ever give up
May 2015
mutt
Use Markdown to send HTML email via Mutt: now working on iOS mail
Oct 2013
node.js
How to test your node.js app
May 2010
object oriented
Your abstractions are a liability
Apr 2015
How I doubled the speed of my game by giving up on C++
Apr 2015
The perils of curiosity
Feb 2013
open data
OStatus: what I've learnt in 24 hours
Sep 2012
OStatus: like Twitter, but open
Sep 2012
open source
OStatus: what I've learnt in 24 hours
Sep 2012
OStatus: like Twitter, but open
Sep 2012
open-source
Open Models Are Ready
May 2026
Doing Real Work with AI Just Became 150x Cheaper
Aug 2025
opengl
How to quickly add bloom to your game engine
Jun 2015
Sol Trader: on lighting
Feb 2012
Effective bloom in OpenGL for Sol Trader
Feb 2012
ostatus
OStatus: what I've learnt in 24 hours
Sep 2012
OStatus: like Twitter, but open
Sep 2012
pairing
Task assignment is a team anti-pattern
Sep 2012
Pomodoros help you refactor
Apr 2011
Every Ash Cloud Has A Silver Lining
May 2010
Five things I learnt from Corey Haines
Mar 2010
Pairing works for everything
Jan 2010
paypal
Your framework is a liability
Sep 2012
personal
Introducing Morning Pages
Sep 2012
750words.com + GTD = Focus
Jul 2010
personas
Cucumbers with personality
Apr 2011
peter drucker
R.I.P. Web 1.0
Dec 2009
pininthemap
Pin in the map: customisable pin icons
Sep 2011
platform-engineering
AI Teams Need Tortoises Not Hares
Oct 2025
pomodoros
A formula of motivation
Apr 2011
On the nature of time
Apr 2011
Pomodoros help you refactor
Apr 2011
pragprowrimo
How I'm writing my book using Vim, Git and Ruby
Nov 2010
predictions
My AI Predictions for 2026
Dec 2025
process
Why you can scale agile with the right attitudes
Dec 2014
Why BDD works solo, and why that matters for everyone
Aug 2014
How to decide whether a tool is right for you
May 2014
4 questions to discover if you're *really* agile...
Apr 2014
Make Cucumber features more readable with this one weird trick
Feb 2014
"Project velocity is a useless metric." Discuss.
Jan 2013
Cucumber: keeping the build passing
Dec 2012
Delegated tasks are a team anti-pattern
Oct 2012
Task assignment is a team anti-pattern
Sep 2012
Card Of The Day: Actually Do Retrospective Actions
Jul 2010
product
Software Factories Can Handle UX
Aug 2026
I Built Kaijo to Fix Unreliable AI
Apr 2025
The AI Agent Opportunity Is Too Big to Ignore
Apr 2025
How to Rebrand Your Mobile App (Without Breaking Everything)
Feb 2025
The Job Is Not To Build
Dec 2024
productivity
Webinar: AI Can Do (Most Of) Your Work
Oct 2026
Slice Your Job Into Skills
Jun 2026
Skills Are Meant For Sharing
Jun 2026
I Don't Want an AI God
May 2026
Webinar: Unblock Your Team
May 2026
What To Put In Your AI Knowledge Base
May 2026
Build An AI Knowledge Base From Scratch
Apr 2026
Stop Prompting, Start Briefing
Mar 2026
Feedback Is the New Bottleneck
Mar 2026
Run Claude Code From Your Phone
Feb 2026
Skills Are Claude Code's Secret Weapon
Jan 2026
See Three Kings Of Inference Spar
Dec 2025
AI Slop Is Real. Model Collapse Isn't.
Nov 2025
Why Your AI Output Is Slop
Oct 2025
AI Is Consistently Mediocre. That's Why It's Valuable.
Sep 2025
Chatbots Are the Wrong Tool for AI Writing
Aug 2025
Parallel AI Agents Create Unusable Code
Jul 2025
Rehearse Hard Conversations with AI
Apr 2025
Prompting Sucks (And What We Can Do About It)
Feb 2025
How to lead your life
Jan 2017
How to add live code reload to your game
Aug 2015
The difference review and planning makes to indie development
Jun 2015
Never, ever, ever, ever, ever give up
May 2015
"Project velocity is a useless metric." Discuss.
Jan 2013
Delegated tasks are a team anti-pattern
Oct 2012
Introducing Morning Pages
Sep 2012
Task assignment is a team anti-pattern
Sep 2012
Don't miss your greatest achievement
May 2011
The Principle of Scattered Work
May 2011
On Flow, and Katas
May 2011
A formula of motivation
Apr 2011
On the nature of time
Apr 2011
Learning to say Yes
Mar 2011
Truly indispensable people
Mar 2011
Pomodoros done (hopefully) right
Mar 2011
My Polyphasic Sleep Experiment
Jul 2010
750words.com + GTD = Focus
Jul 2010
Pairing works for everything
Jan 2010
SVG Planner
Oct 2006
products
Ealdorlight: A Kickstarter retrospective
Nov 2017
Ealdorlight's Kickstarter is live at 4pm today
Jun 2017
How Ealdorlight's story stands out
May 2017
Ealdorlight Kickstarter on 6th June, Sol Trader 1.3 released
Apr 2017
Introducing: Ealdorlight
Mar 2017
What's next for Sol Trader and me
Feb 2017
5 ways I screwed up Sol Trader's launch: a post-mortem
Jun 2016
The perils of curiosity
Feb 2013
Introducing Morning Pages
Sep 2012
Showroom software
Sep 2012
Attempting validated learning with Sol Trader
May 2012
Sol Trader now in Alpha
May 2012
Sol Trader: a continuous deployment story
Mar 2012
Sol Trader: on lighting
Feb 2012
Effective bloom in OpenGL for Sol Trader
Feb 2012
Switching Sol Trader from Ruby to C++: one week on
Jan 2012
Why I switched from Ruby back to C++
Jan 2012
Introducing Sol Trader
Jan 2012
Kanogo: vapourware to beta in 24 hours
Sep 2011
Pin in the map: customisable pin icons
Sep 2011
prompting
Prompting Sucks (And What We Can Do About It)
Feb 2025
psychology
Rehearse Hard Conversations with AI
Apr 2025
How I'm using Proxemics in Sol Trader's game design
Apr 2015
rag
The AI Tools Actually Worth Using
Jun 2025
Graph RAG is the Future
May 2025
rails
The toolchain of dreams
Sep 2013
Your tests are lying to you
Oct 2011
Kanogo: vapourware to beta in 24 hours
Sep 2011
How to get Spork working NOW on Rails 3, Rspec 2 and Cucumber
Nov 2010
refactoring
Your abstractions are a liability
Apr 2015
How not to check in temporary code
Jul 2014
Extreme isolation part 2: separate the domain from the changes
Jul 2013
Extreme isolation in web apps: part 1
May 2013
The power of good naming
Sep 2012
remote-development
Independent Coding Agents Aren't Ready
Aug 2025
retrospectives
How To Get Clarity With a New Tech Team
Mar 2025
Card Of The Day: Actually Do Retrospective Actions
Jul 2010
revelation games
Ealdorlight: A Kickstarter retrospective
Nov 2017
richclient
Spring Richclient ~ That's a wrap
Apr 2006
Spring Richclient ~ A Journey
Apr 2006
Spring Richclient ~ Session Eight ~ Such a bind
Mar 2006
Spring Richclient ~ Session Seven ~ Beating the Command Framework into Submission
Mar 2006
Spring Richclient ~ Session Six ~ The View
Feb 2006
Spring Richclient ~ Session Five ~ Applications, windows, views
Feb 2006
Spring Richclient ~ Session One ~ Beans, Shmeans and services
Jan 2006
Spring Richclient ~ Session Three ~ How did that work then?
Jan 2006
Spring Richclient ~ Session Two ~ Hello World
Jan 2006
Spring Richclient ~ Session One ~ Making Petclinic work
Jan 2006
Spring Richclient ~ Introduction
Jan 2006
rspec
Your tests are lying to you
Oct 2011
How to get Spork working NOW on Rails 3, Rspec 2 and Cucumber
Nov 2010
ruby
How I learned to stop worrying and love (some) detailed Cucumber features
Nov 2013
The toolchain of dreams
Sep 2013
Extreme isolation part 3: coding a CRUD app (with full example)
Sep 2013
Extreme isolation part 2: separate the domain from the changes
Jul 2013
Extreme isolation in web apps: part 1
May 2013
Features are documentation, not tests
Apr 2013
Dependency injection != Inversion of Control
Jan 2013
BDD Kickstart: London and 2013 plans
Jan 2013
Should we store state in our steps?
Nov 2012
Your framework is a liability
Sep 2012
Kickstart your team on BDD
Jul 2012
On coding defensively
Feb 2012
Switching Sol Trader from Ruby to C++: one week on
Jan 2012
Why I switched from Ruby back to C++
Jan 2012
A cache-busting http server script in ruby
Dec 2011
Kanogo: vapourware to beta in 24 hours
Sep 2011
Pin in the map: customisable pin icons
Sep 2011
How to get Spork working NOW on Rails 3, Rspec 2 and Cucumber
Nov 2010
How I'm writing my book using Vim, Git and Ruby
Nov 2010
sc2012
Waxing Lyrical on Pathfinding
May 2012
scaling
e-petitions: handling traffic
Aug 2011
scrum
Why Time Units Beat Story Points Every Time
Mar 2025
security
Lockbox: Constrain Your Bots To Set Them Free
Feb 2026
Your Bot Is Your Responsibility
Feb 2026
AI Guardrails Do Not Work (Yet)
Feb 2026
Stop AI Stealing From You
Jan 2026
Who wants a browser?
Oct 2025
shell script
BDD without tools: testing shell script
Mar 2013
sinatra
Your framework is a liability
Sep 2012
sleep
My Polyphasic Sleep Experiment
Jul 2010
social
OStatus: what I've learnt in 24 hours
Sep 2012
OStatus: like Twitter, but open
Sep 2012
software craftsmanship
Waxing Lyrical on Pathfinding
May 2012
sol trader
Parallel AI Agents Create Unusable Code
Jul 2025
The Job Is Not To Build
Dec 2024
Ealdorlight: A Kickstarter retrospective
Nov 2017
Ealdorlight's Kickstarter is live at 4pm today
Jun 2017
How Ealdorlight's story stands out
May 2017
Ealdorlight Kickstarter on 6th June, Sol Trader 1.3 released
Apr 2017
What's next for Sol Trader and me
Feb 2017
5 ways I screwed up Sol Trader's launch: a post-mortem
Jun 2016
Gossip: the best new Sol Trader feature for ages
Feb 2016
Sol Trader at EGX Rezzed: 7-9 April 2016
Jan 2016
The cunning plans of Sol Trader
Jan 2016
Full disclosure: Sol Trader conversation upgrades
Jan 2016
The Sol Trader Christmas Eve update: moddable missions
Dec 2015
New Sol Trader beta: the science of blame and unforgiveness
Dec 2015
Modelling opinions and prejudices in Sol Trader
Nov 2015
Sol Trader combat preview
Nov 2015
Why (I hope) I will weather the Indiepocalypse
Oct 2015
Sol Trader Kickstarter now live!
Sep 2015
Three days to go
Sep 2015
Gossip as a game mechanic
Sep 2015
How to add live code reload to your game
Aug 2015
Why I wrote Sol Trader's GUI code from scratch
Aug 2015
Sol Trader will be at EGX in September!
Jul 2015
3 new screenshots of Sol Trader's new interface
Jul 2015
Trailer: How it will feel to move around Sol Trader's cities
Jul 2015
How Sol Trader uses information as currency
Jun 2015
The difference review and planning makes to indie development
Jun 2015
How to quickly add bloom to your game engine
Jun 2015
The huge difference a good Entity System could make to your game
Jun 2015
How tone of voice works in Sol Trader's dialogue system
May 2015
How dialogue works in Sol Trader
May 2015
How face generation works in Sol Trader
May 2015
How I'm using Proxemics in Sol Trader's game design
Apr 2015
Why I ditched all the build tools in favour of a simple script
Apr 2015
How to choose between realism and fun in game design
Apr 2015
How I doubled the speed of my game by giving up on C++
Apr 2015
4 things every space game must have
Mar 2015
After a long journey, Sol Trader has been greenlit!
Mar 2015
Why video game coders don't use TDD, and why it matters
Mar 2015
7 things I've learnt in 3 years coding my first indie game
Jan 2015
New for 2015: Sol Trader now on Kickstarter
Jan 2015
Extreme isolation part 2: separate the domain from the changes
Jul 2013
Rack::Usermanual - Cucumber features as in-app user manual
Jun 2013
Extreme isolation in web apps: part 1
May 2013
Features are documentation, not tests
Apr 2013
The perils of curiosity
Feb 2013
Attempting validated learning with Sol Trader
May 2012
Sol Trader now in Alpha
May 2012
A fresh take on DCI with C++ (with example)
Apr 2012
Sol Trader: a continuous deployment story
Mar 2012
Sol Trader: on lighting
Feb 2012
Effective bloom in OpenGL for Sol Trader
Feb 2012
Switching Sol Trader from Ruby to C++: one week on
Jan 2012
Why I switched from Ruby back to C++
Jan 2012
Introducing Sol Trader
Jan 2012
spork
How to get Spork working NOW on Rails 3, Rspec 2 and Cucumber
Nov 2010
spring
Spring Richclient ~ That's a wrap
Apr 2006
Spring Richclient ~ A Journey
Apr 2006
Spring Richclient ~ Session Eight ~ Such a bind
Mar 2006
Spring Richclient ~ Session Seven ~ Beating the Command Framework into Submission
Mar 2006
Spring Richclient ~ Session Six ~ The View
Feb 2006
Spring Richclient ~ Session Five ~ Applications, windows, views
Feb 2006
Spring Richclient ~ Session One ~ Beans, Shmeans and services
Jan 2006
Spring Richclient ~ Session Three ~ How did that work then?
Jan 2006
Spring Richclient ~ Session Two ~ Hello World
Jan 2006
Spring Richclient ~ Session One ~ Making Petclinic work
Jan 2006
Spring Richclient ~ Introduction
Jan 2006
startup
Always Be Unblocking
Apr 2025
How To Avoid Bad Startup Culture
Feb 2025
Founder mode is emergency surgery
Jan 2025
How to Build a Robust LLM Application
Dec 2024
The Job Is Not To Build
Dec 2024
Your Code Is A Liability
Nov 2024
The First Thing A Startup CTO Must Do
Nov 2024
Extreme YAGNI: How BDD nails your prototyping stage
May 2016
The power of feedback
Sep 2012
Attempting validated learning with Sol Trader
May 2012
Sol Trader now in Alpha
May 2012
startups
Startup Success Stories Are Flawed
Mar 2025
state
Your abstractions are a liability
Apr 2015
Extreme isolation part 3: coding a CRUD app (with full example)
Sep 2013
Extreme isolation part 2: separate the domain from the changes
Jul 2013
Extreme isolation in web apps: part 1
May 2013
Features are documentation, not tests
Apr 2013
Should we store state in our steps?
Nov 2012
steam
After a long journey, Sol Trader has been greenlit!
Mar 2015
stories
How to layer context into your features using Real Narrative
Apr 2014
BDD: How to deal stories into features
Aug 2013
strategy
Webinar: Make Your AI Rollout Stick
Sep 2026
A Thousand Flowers Is Not Enough
Aug 2026
Intelligence Cost Is Collapsing
Jul 2026
Webinar: What CEOs Must Do Next About AI
Jul 2026
Webinar: Escape the Great AI Lock-In
Jun 2026
AI Is Still Searching for a Home
Jan 2026
The Slow And Dangerous Loss Of Self
Dec 2025
OpenAI's Code Red Is Your Window
Dec 2025
How to React to a New Frontier Model
Nov 2025
Who wants a browser?
Oct 2025
AgentKit Helps Its Competitors
Oct 2025
Startup Success Stories Are Flawed
Mar 2025
svg
SVG Planner
Oct 2006
talk
Ship Like an Engineer Without Writing Any Code
Sep 2026
Don't Just Give Everyone an AI
Jun 2026
Polished Consensus Is Boring
May 2026
Engineering in 2028
May 2026
The AI Leadership Lab at CTO Craft
Mar 2026
Ditch Autocomplete
Oct 2025
AI Teams Need Tortoises Not Hares
Oct 2025
Beyond the Demo: Building LLM Applications That Actually Ship
Jul 2025
talks
Lean code: slides and feedback
May 2011
BBC Talk on A Philosophy of Software
Feb 2010
tdd
Why video game coders don't use TDD, and why it matters
Mar 2015
That's not BDD, that's just Cucumber
Jan 2013
Scenarios are not Acceptance Criteria
Nov 2012
Cucumber: the integration testing trap
Nov 2012
Never leave a failing test
Sep 2012
The power of feedback
Sep 2012
How I'm testing iPhone apps: part 2
Dec 2011
How I'm testing iPhone apps: part 1
Dec 2011
Work with me
Aug 2011
Pomodoros help you refactor
Apr 2011
How to test your node.js app
May 2010
TDD ~ The Tortoise and the Hare
Feb 2006
team
Hiring Startup Engineers: a field manual
May 2025
Why Time Units Beat Story Points Every Time
Mar 2025
How To Get Clarity With a New Tech Team
Mar 2025
Your Code Is A Liability
Nov 2024
A new adventure
Dec 2017
Extreme YAGNI: How BDD nails your prototyping stage
May 2016
Why you can scale agile with the right attitudes
Dec 2014
Why BDD works solo, and why that matters for everyone
Aug 2014
How to give BDD a chance
Nov 2013
Slides for "Leading software teams well"
May 2013
Delegated tasks are a team anti-pattern
Oct 2012
Job titles are a team anti-pattern
Sep 2012
Cucumber isn't a testing tool
Sep 2012
Task assignment is a team anti-pattern
Sep 2012
On Office Politics
May 2011
The team is the atomic unit of success
Apr 2011
Truly indispensable people
Mar 2011
team-topology
Don't Just Give Everyone an AI
Jun 2026
Why AI-First Teams Still Ship Slowly
Dec 2025
AI Teams Need Tortoises Not Hares
Oct 2025
teams
Webinar: Unblock Your Team
May 2026
Webinar: AI Has a People Problem
Mar 2026
tech
The AI Tools Actually Worth Using
Jun 2025
technology
ChatGPT Is Terraforming Earth
Dec 2025
The AI Climate Panic Is Wrong
Apr 2025
testing
Why video game coders don't use TDD, and why it matters
Mar 2015
How I learned to stop worrying and love (some) detailed Cucumber features
Nov 2013
Extreme isolation part 3: coding a CRUD app (with full example)
Sep 2013
Extreme isolation part 2: separate the domain from the changes
Jul 2013
Extreme isolation in web apps: part 1
May 2013
The perils of curiosity
Feb 2013
Cucumber: keeping the build passing
Dec 2012
Scenarios are not Acceptance Criteria
Nov 2012
Cucumber: the integration testing trap
Nov 2012
Never leave a failing test
Sep 2012
Cucumber isn't a testing tool
Sep 2012
tools
Where Did My Day Go? A Claude Code Skill for Remembering
Jan 2026
The AI Tools Actually Worth Using
Jun 2025
Why I ditched all the build tools in favour of a simple script
Apr 2015
How to decide whether a tool is right for you
May 2014
4 questions to discover if you're *really* agile...
Apr 2014
The toolchain of dreams
Sep 2013
training
BDD Kickstart is dead. Long live...
Nov 2013
How I learned to stop worrying and love (some) detailed Cucumber features
Nov 2013
Work with me
Aug 2011
transformation
How Not to Screw Up Your AI Rollout
Sep 2025
travel
Every Ash Cloud Has A Silver Lining
May 2010
tutorial
Spring Richclient ~ That's a wrap
Apr 2006
Spring Richclient ~ A Journey
Apr 2006
Spring Richclient ~ Session Eight ~ Such a bind
Mar 2006
Spring Richclient ~ Session Seven ~ Beating the Command Framework into Submission
Mar 2006
Spring Richclient ~ Session Six ~ The View
Feb 2006
Spring Richclient ~ Session Five ~ Applications, windows, views
Feb 2006
Spring Richclient ~ Session One ~ Beans, Shmeans and services
Jan 2006
Spring Richclient ~ Session Three ~ How did that work then?
Jan 2006
Spring Richclient ~ Session Two ~ Hello World
Jan 2006
Spring Richclient ~ Session One ~ Making Petclinic work
Jan 2006
Spring Richclient ~ Introduction
Jan 2006
ux
Layers of abstraction: writing great cucumber code
Sep 2011
Layers of abstraction: combining BDD and UX
Sep 2011
Cucumbers with personality
Apr 2011
User Experience Is Everything
May 2010
R.I.P. Web 1.0
Dec 2009
wardley maps
Coding with AI: How To Do It Well And What It Means For The Industry
Aug 2025
Startup Success Stories Are Flawed
Mar 2025
webinar
Webinar: AI Can Do (Most Of) Your Work
Oct 2026
Webinar: Make Your AI Rollout Stick
Sep 2026
Webinar: What CEOs Must Do Next About AI
Jul 2026
Webinar: Escape the Great AI Lock-In
Jun 2026
Webinar: Unblock Your Team
May 2026
Webinar: AI Has a People Problem
Mar 2026
Webinar: Let AI Do Your Work
Mar 2026
Webinar: Ship While You Sleep
Feb 2026
Stop AI Stealing From You
Jan 2026
Webinar: Are We Behind in AI?
Jan 2026
Why AI-First Teams Still Ship Slowly
Dec 2025
Claude Code Is For Everything
Nov 2025
Why Your AI Output Is Slop
Oct 2025
How Not to Screw Up Your AI Rollout
Sep 2025
Is AI Unshippable? (Lessons from Doing It)
Aug 2025
You Should Kill Your Prompts
Jul 2025
AI Needs More From You
Jun 2025
How I Make Complex AI Changes
May 2025
Four Hours, One AI App, Many Lessons
May 2025
windows
Sol Trader: a continuous deployment story
Mar 2012
workflow
How I Make Complex AI Changes
May 2025
writing
(I Think Whilst) Writing With AI
Oct 2026
AI Slop Is Real. Model Collapse Isn't.
Nov 2025
Chatbots Are the Wrong Tool for AI Writing
Aug 2025
Introducing Morning Pages
Sep 2012
How I'm writing my book using Vim, Git and Ruby
Nov 2010
750words.com + GTD = Focus
Jul 2010
xp
The Story Card Is Not The Story
Feb 2010
Pairing works for everything
Jan 2010