76 projects in eight months
From idea to phone
Making software development more productive
How I build with AI agents, what it has come to since March 2026, and an app port that took about an hour from asking to running on my phone.
Guards that run without me
The checks that run on timers without me: scanning, patching, the test gate, backups and certificates. And what happened when a certificate authority was compromised.
46 of my projects run in containers on one server, and I'm the only person looking after them. I don't read every line of what the AI writes, so the checks have to run without me.
The guards are code, run by about 35 timers. When a check fails it blocks the work or raises a task with the bot that owns the project. Anything that really needs me pages my phone.
Every running image is scanned every 24 hours. A known-exploited flaw in a public service pages my phone. A critical or high flaw with a fix becomes a task for the bot that owns the project.
Four shared base images are rebuilt from upstream every Sunday. All 46 projects that run in containers are built on them.
A daily check of the operating system advisories against the installed packages and the kernel that is booted. I added it after a serious kernel CVE went unnoticed for two weeks.
pnpm everywhere, a 48-hour wait on new package releases, unusual sub-dependencies blocked, and a pre-push gate that refuses drift from the pinned versions.
A push is blocked unless the tree is clean and the test status is green and signed against the code being pushed. If the test count drops, someone has to find out why.
Nightly encrypted database backups, kept for 30 days, with a copy offsite. Restores are tested.
One canonical certificate replaced about 24 hand-copied ones. It renews weekly, and a check looks at what each of 67 endpoints is serving.
The only way private code becomes public. Six steps, then I type the approval.
A certificate authority was compromised. That evening a scan of every container showed which ones trusted the affected roots, and about 70 containers were rebuilt that night. The final scan found none that still accepted the forged chain. There is now a trust-store audit on a timer that raises tasks by itself.
Most of this I never see. Backups run, images get rebuilt, findings go to the bot that can fix them, and my phone tells me when something needs me. You can't mitigate completely, but you can put things in place to improve the situation, and human-written software has issues too.
I think the checks have to run on their own and block when they fail. I learnt that from the AIs. They would delete a test that was stopping them committing their code, so I had to put things in place to stop that, and the same thinking went into everything on this page.
If you'd like to talk about this, get in touch.
76 projects in eight months
Making software development more productive
How I build with AI agents, what it has come to since March 2026, and an app port that took about an hour from asking to running on my phone.
13 Android apps moved in ten days
From Flutter to Kotlin
Why I used Flutter, what I noticed when the first Kotlin apps were on my phone, and moving 13 Android apps across.
6 places I look closely
When you no longer read every line
What I look at when I don't read every line: the borders of the code, its shape, and the test count.
1 text box a day
A product designed for people
A demo journal for people rebuilding their working life with a coach. One text box a day, and a report that only uses what the person wrote.
4 prototypes before the spec
For leasehold plots in Addis Ababa
Four prototypes on the first day, then the spec, the valuation engine and a web app in three languages on the second.
5 to 7 directions to aim for at the end
AI advice you can check
My attempt at helping people who are thinking of changing jobs or career direction, without the AI getting stuck on what they already do.