
| Blog | https://adrianco.medium.com |
| Sounds | https://soundcloud.com/adrian-cockcroft |
| GitHub | https://github.com/adrianco |
| Loops | @adrianco |
| Blog | https://adrianco.medium.com |
| Sounds | https://soundcloud.com/adrian-cockcroft |
| GitHub | https://github.com/adrianco |
| Loops | @adrianco |

This isn't your normal "looking for work" post.
I've decided to shut my business and do more volunteer / community work.
If you know of an organisation which could use a board member with strong digital skills, extensive experience in open source and open standards, or cybersecurity please let me know.
Nothing full time. Personal recommendations preferred. Feel free to share.
Armed conflict is not a sports game.
You don’t need to pick a side.
You can also oppose one government without supporting the government that declares war on said government.
You can also, and I know this is a big stretch, oppose a third government in the conflict!
You can declare solidarity with all the people in the region who aren’t murdering thieving assholes.
You can call for mitigating a bad situation without that being a declaration of support for the whole mess.
As Rachel Reeves (finally) swings behind an explicit statement that Brexit has cost the UK around 8% of GDP, we might ask what that looks like:
It equals around £224bn a year (in 2025), which given the UK's tax burden of around 35% is £78bn in lost tax revenue a year.
So if you wondering why the public sector is under-funded, while a continuing austerity logic is always in play, this lost tax income for the state is also contributing to budget shortfalls.
I’m in shock. For the AI 🤖 doubters here’s where I’m at after like three weeks I think. To be fair been working long hours but still.
I spent days in between resolving a lot of other resource issues and blog posts creating a script that creates the default VPC configuration for all the accounts in my organization environments.
An environment is basically an ou with a bunch of standard accounts and resources in it where compute resources and users can access them but not other environments. Like an Azure subscription or GCP project kind of. Standardized deployments, controls, governance, trust boundaries, and in the end -agent (true) sandboxes. More on that later.
The complicated part was the ui - i create a default VPC configuration and using bash allow the user to add, edit, delete each resource.
In the end the VPC configuration is stored to an XML file - one for each VPC, including in which regions to deploy the VPC.
I had Kiro CLI with Opus 4.6 write a Lambda function that deploys everything in the XML file.
Opus seems to be behaving ok again in AWS Kiro, BTW.
As for all the things in my VPCs…
It’s a lot. I listed the resources in prior posts so not going to repeat.
When I ran the Lambda, the biggest issue I had was adjusting key policies and lambda role policies and making sure variable were set and populated with consistent names and values.
When I ran the lambda function it deployed everything up to a VPC endpoint missing a security group. It failed to fix it right the first time.
After that one issue - it deployed everything without error. So like three tries to deploy a super complex networking environment.
I literally thought I would run it a couple of times and troubleshoot tomorrow because it was going to take way too long.
Wow cool. 😎
I hit another KMS bucket policy issue in one account. Why I don’t know they should be all the same.
Beyond that I can start reviewing all the resources tomorrow for any errors and begin testing my Yubikey button push to run a job functionality which is deployed but untested.
Woot! 🎉
After I wrote this I’m seriously doubting it actually worked. It deployed too fast. I did tell it to deploy in parallel. Will Check tomorrow.
Tony Hoare passed away.
This quote stuck with me since I first read it as a teen. It sparked a decade-long obsession with simplicity, later expanded by Rich Hickey's Simple vs Easy.
"I conclude that there are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies."
https://en.wikiquote.org/wiki/C._A._R._Hoare#The_Emperor's_Old_Clothes
The US-Israel war on Iran has emitted 5 million tonnes of CO₂ₑ in its first 14 days. The world currently has 0.6 million tonnes of novel and permanent CO₂ removal (CDR) capacity annually.
https://www.theguardian.com/world/2026/mar/21/middle-east-iran-conflict-environment-climate
Btw, for Ghostling (libghostty demo), I didn't write a single line of... anything. Agents wrote 100% of everything you see incl. Nix flakes, CI jobs, etc. I reviewed every line of code manually and constantly nudged the agents in the right direction. I used a mix of Opus+Codex.
I went from empty repo to functional terminal that could run Neovim with keyboard, mouse events in ~80 minutes. Pretty sweet.
Note: libghostty itself is of course heavily hand written (with agent assistance all over too, though). I'm just talking about Ghostling itself.
Even for CI setup (GitHub actions), I had the agent sit in a `gh` CLI loop watching failures, fixing, pushing, fixing, pushing, etc. Doing GHA with agents are the only way I stay sane, honestly.
I just re-read the full main.c from top to bottom and I'm very satisfied. I would've done some things differently but if an engineer I worked with PRed all this, I would've accepted it. Its good enough.
Some people have pointed out the commenting is over the top and indicative of AI. This is actually my personal comment style, and I told the agent to comment heavily (its even in the AGENTS.md, look for yourself!). Anyone who has worked with me professionally or in OSS knows that I comment everything all the time.
Did you know what causes Ice Ages?
It is the Earth’s orbital cycles, known since Milanković computed them in the 1920s.
When you drive a climate model with these cycles, it will correctly reproduce the sequence of Ice Ages as we know it from paleoclimate data.