Why the most underrated job of any leader is translation between layers — and what that work actually looks like.
Writing
Reflections on engineering leadership, distributed systems, and the intersection of human cognition and code. Occasional digressions welcome. 11 posts
AI is no longer speculative: it lives in our IDEs, our pull requests, and our ADRs. This is what we learned about speed, ownership, and the fifteen-word contract that holds it all together.
Legacy systems do not survive because organisations are conservative or short on technical imagination. They survive because they already know too much. On modernisation, decomposition, and the harder questions underneath.
Pairing an internal Datadog CLI with a Claude Code skill to compress the time between an alert firing and the first useful piece of evidence.
Shadow IT used to be some colleague registering on an unapproved platform. Now it's a refresh token in someone else's database, granted in a moment of curiosity, with permission to read every email you've ever sent.
The system still runs. But can you change it safely? On technical debt, organizational scale, and why modernization is a business problem before it is a technical one.
Two roads lead to operational indispensability, and they converge in the same place. A reflection on what it does to the person, the team, the architecture, and the organisation - and how to get out.
Beyond the hype and fear, this article explores the nuanced impact of AI on our lives, work, and critical thinking, advocating for a thoughtful partnership with this transformative technology.
A Rust Lambda for automating AWS SecurityHub compliance reports: cross-compiling, IAM setup, and why Rust is a surprisingly good fit.
How cyclic sort finds the first gap in O(n) without extra space — a Kotlin walkthrough of a classic Leetcode problem.
How git-cliff automates changelogs from Conventional Commits — and why you should stop writing release notes by hand.