Eleven years turning regulatory expectations into something a large bank can actually execute — Deutsche Bank, then Citi, where I look after controls governance for the Services business. At weekends I build software and host it myself. What I learn building it ends up back in the day job. Nearly everything below was built this year.
tap any project to see it
A maze‑building zombie tower defence. Endless waves, one spawn point, forever.
# built around one complaint: these games get frustrating when difficulty arrives as a second spawn point. so this one never opens one. wave 100 comes through the same gap as wave 1 — the curve moves through what walks in, never through where it walks in from. nothing you build can be destroyed, and any placement that would seal the route is refused, so you cannot softlock yourself.
# a single flow‑field BFS from the camp replaces per‑zombie pathing. repathing 130 zombies after you drop a wall then costs nothing, "would this placement seal it?" becomes "is the spawn still reachable?", and the route preview is just walking downhill. no dependencies, no build step, and the whole thing runs headless in node for the test suite.
Total cost of ownership for humanoid robots. Vendor‑neutral.
# two thirds of the five‑year cost came from one number nobody had sourced — breakeven month 26 with it, month 7 without, and every check had passed green for four days. nothing related a number's provenance to its influence, so i wrote the check that does.
An AI relationship coach for couples.
# the model is not the hard part. crisis detection runs before the model call, not after. a banned‑word list is enforced by tests rather than a style guide, content is encrypted per couple, and no message body is ever logged.
My development environment, operated from a phone.
# a coding agent running against project folders on a server. voice note in, work out, and it still asks before it writes. built because most of my building time is twenty minutes and not at a desk.
A London interior design studio, moved off Squarespace.
# the interesting part was sharing a repo with a designer who doesn't write code: hard branch edges, an explicit list of what must never be touched, and production fenced off because editing it takes the public site down.
A fines court for a stag do. And one for a golf four‑ball.
# submit a charge, the group votes on severity, the best man delivers the verdict. the golf one runs last man standing — the fine transfers to whoever offends most recently, which is a surprisingly awkward piece of state. tested by groups who were not gentle.
# writing the framework is the easy part. adoption across ninety-odd
# countries is the job, and most of that is training, documentation,
# and making the case to people who do not report to me.
#
# the last programme reported off a python pipeline i wrote — a
# 40-page pack every morning, read at md and executive committee
# level, replacing about five hours of manual work a day. then i
# taught a team of analysts to run it, so it stopped being mine.