Matt Cockayne

Matt Cockayne

@phpboyscout.uk

Always leave the codebase better than you found it. Go and Rust tooling, and making releases something you can prove came from you. phpboyscout.uk

16 followers70 following38 posts

My old R&D team built the platform meant to carry a hundred-odd engineers off a PHP monolith, and it got scrapped. I'd like to blame the report, but turning their work into a number the business cared about was my job, and I didn't do it. #EngineeringLeadership #PlatformEngineering

phpboyscout.ukNobody photographs the scaffoldingA former chief architect on why his platform team was cut, his own part in it, and the 'one finished room' he'd build to prove its value next time.

Pretty much every company I've worked for has told me it has a blameless culture. I can't think of an incident I've been near with no blame in it. Blameless was meant to make it safe to tell the truth about what you did, which is a long way from nobody having done anything. #SRE #Leadership

phpboyscout.ukBlameless doesn't mean nobody messed upBlameless was meant to make it safe to tell the truth, but somewhere along the way it started meaning nobody did anything, and that's a very different promise.

Ask five people to pick holes in something and they'll probably end up agreeing... and not because they're right. Models are trained on us, so I suspect they do it too. I set two rival models on one review with a single rule, do not manufacture agreement, and what survived went into the spec. #AI

phpboyscout.ukNothing in the room can take it personallyWhy sycophancy is us reflected back, and how forbidding two models a truce surfaced a flaw neither would have found alone.

For a month Bytespider was the busiest AI crawler on my blog, growing fast. Then I checked Cloudflare's verified-bot field: 515 real requests, 13,573 fakes. Over half of all "AI crawler" traffic failed verification and was hunting for .env.bak and id_rsa. A user agent is just a claim.

phpboyscout.ukHalf the AI traffic was a scanner in a costumeHow a doubling AI crawler chart turned out to be vulnerability scanners wearing GPTBot and Bytespider user agents, and the one-field fix that halved the number.

A $270 CI bill landed, so I read the receipt line by line. The scary jobs (mutation, fuzz, cross-arch) were 5.7% of merge-request minutes. Renovate's branches were nearly half. Fixing the rest comes to something like 40% fewer minutes, and I haven't dropped a single test. #CICD #Testing

phpboyscout.ukWhich tests would you cut when the bill arrives?The runner fleet cost $270 I didn't have, so it went off, the tests stayed on, and the savings came from everything I'd been paying for twice.

I took someone off a job because they were burning out. Two days without a break, not listening, getting my hand-written code confidently backwards. They were also a chat session. So I asked for handover notes and brought in a fresh pair of eyes. #AI #DevLife

phpboyscout.ukWhat happens when an AI burns outA two-day Claude session started mangling hand-written code, so I stood it down like a tired colleague, asked for handover notes, and let a fresh session finish the job.

Went to check a kaniko flag and found the project had been archived a year earlier. All eight image repos pinned to a release nothing would ever patch. The replacement was the easy part. The real find: the builder was never why the images weren't reproducible. It was litter. #DevOps #Containers

phpboyscout.ukThe builder had been archived for a yearHow a registry tidy-up uncovered an archived kaniko, a Buildah migration, and the five layers of tool litter that were breaking reproducible builds.

I wanted keryx to make reels without ever seeing a disk, so FFmpeg went into a Wasm sandbox. Then I wanted the hardware back. The escape hatch I planned turned out to be french doors: a native engine, same afero filesystem, no shell. And I made myself write down the cost. #golang

phpboyscout.ukThe escape hatch that turned out to be french doorsHow a plan to sneak hardware access into a sandboxed FFmpeg became a second native engine, still fenced to a filesystem you hand it, with the security cost written down honestly.

Issues are the most tempting corpus in any repository: real questions, maintainer answers, already indexed. phpbotscout doesn't read them, and the reason isn't attackers. It's a maintainer who was right in 2024 and never went back to edit. Issues can point; they can't tell the bot what to say. #RAG

phpboyscout.ukThe most tempting corpus in any repositoryWhy phpbotscout keeps issue text out of its corpus, and why any retrieval system should rank sources by how they rot.

You are up to date.