blog

Writing for developers

PHP, testing, functional programming, and building AI applications — notes from three decades of writing software and teaching others to.

15 October 2026 · 14 min read

Write your own coding agent in PHP with Papi

A coding agent is a loop, a handful of tools, a memory, a token budget and a few preferences. Here is one for your terminal, in PHP, with Papi doing the heavy lifting.

  • ai
  • php
  • papi-ai
  • agents

14 October 2026 · 11 min read

Avoiding OOM in Symfony with Phunkie Streams

Two Symfony services, a 96 MB file of car returns, and a 128 MB memory limit. Streaming the body with Phunkie keeps the consumer at 2 MB, once nginx and PHP stop buffering it behind your back.

  • php
  • symfony
  • phunkie
  • streams
  • nginx

2 June 2026 · 17 min read

Writing coding tools in the age of AI

Why the machines that write our code need the discipline we built for humans, and how PhpSpec 9.0 intends to give it to them.

  • testing
  • bdd
  • php
  • phpspec

23 July 2013 · 14 min read

PHP Test Doubles Patterns with Prophecy

Dummy, fake, stub, mock and spy: what each test double is for and how to write them with Prophecy, and why Demeter violations and mocking what you don't own hurt.

  • testing
  • test-doubles
  • prophecy
  • php

16 October 2012 · 2 min read

Short Syntax for Closures

A 2012 RFC draft proposing a short syntax for closures in PHP, with the use cases from Ruby and Groovy that motivated it.

  • php
  • rfc
  • functional-programming

18 March 2009 · 2 min read

Scrumbutbut

ScrumBut is doing part of Scrum. ScrumButBut is a ScrumBut that wants to become less But: inspecting and adapting your own process with Scrum itself.

  • agile
  • scrum

22 October 2008 · 1 min read

Team Resonance

Teams that synchronise often and inside a fixed time box build a resonance that feeds on itself. That resonance is why velocity grows on agile projects.

  • agile
  • teams

18 October 2008 · 3 min read

Connected Leadership

Three ways to talk a waterfall client into an agile project: prove it bottom-up, let demand pull it outside-in, or work your real organisation instead of the formal one.

  • agile
  • leadership
  • scrum

10 August 2008 · 4 min read

Is PHP an Agile Programming Language?

A language is never agile, but PHP's lightness, its testing tools and its continuous integration stack give a team everything it needs to build an agile environment.

  • php
  • agile