


Building High-Agency Software Engineering Teams
I was recently asked as part of a recruitment conversation with someone in the talent team of a tech company, “Your CV says you foster a culture of you build it, you run it. What is your approach to building that culture?” I thought it was a great question and wanted to share my thoughts on this topic. You build it, you run it culture is all about giving engineering teams the autonomy and responsibility to own the systems they build and the agency to make decisions about how to evolve it. This level of ownership doesn’t come automatically by just telling engineering teams what to do. It requires a deliberate approach. This is what I call a High-agency team/culture. ...

Practical GitHub Repository Hardening for a Hugo Site
This hardening effort was directly triggered by the recent Trivy supply chain compromise, which impacted some repositories in my workplace. That prompted a full review of my own repository controls. If you want more information about the incident and the response, the following two links are worth reading first: Incident analysis: Trivy Compromised a Second Time (StepSecurity) Official disclosure and remediation guidance: Aqua Security discussion #10425 The aim of my actions to my repository was not to chase perfect security. It was to put in place some practical controls that are easy to maintain and that reduce real risk in day-to-day development. ...

When Your Workplace Controls Your Personal GitHub Repos: Understanding GitHub Org Policies
I was hardening this blog’s GitHub repository as part of a security series — adding CodeQL static analysis, Dependabot, and secret scanning. Everything went smoothly until I tried to run CodeQL in a workflow against my personal, private repository. The workflow ran. The analysis completed. And then it failed with this: Warning: This run of the CodeQL Action does not have permission to access the CodeQL Action API endpoints. Code scanning is not enabled for this repository. The repository settings showed Code Scanning as available. The workflow had security-events: write. The YAML was valid. The workflow was not running from a fork. Nothing obvious was wrong. ...

Prompting Essentials for Software Engineers: 4 Practical Strategies for Better AI Output
In software engineering, your output - the code that you write, is only as good as what you have learned, experienced and understood from your conversations with the client, which is the input. This is true when working with Large Language Models (LLMs). If you use GenAI tools to complement your expertise in software engineering, then here are some strategies you can use to move beyond basic code generation and into collaborative development, or better pair programming with AI. ...

Start Here to Learn Large Language Models: Best Andrej Karpathy Resources
Large Language models have evolved over the last decade but there is still time to learn and understand them. Let me share some resources I found useful. Andrej Karpathy - Intro to Large Language Models An excellent introduction video recorded by Andrej Karpathy, one of the co-founders of the world’s most notorious AI company, OpenAI, which he left in 2024 to found Eureka Labs. [1hr Talk] Intro to Large Language Models ...

From Concept to Production: Building CalOohPay with AI-Assisted Development
The Beginning: A Problem There was a time when, every month, I spend 10-15 minutes reconciling on-call rotas for payroll - this was just for my teams. As an engineering manager responsible for multiple teams, this task was boring but necessary to compensate my engineers who bore the inconvenience of on-call responsibilities. I’d manually review PagerDuty schedules, count weekday versus weekend hours, apply different compensation rates, and compile everything for payroll processing. The more teams one had, the more time it took away from the already tightly packed schedule of an engineering manager, who manages multiple teams. ...

Shift Reliability Left: Use SLOs to Guide Architecture Early
Reliability planning is most effective when it starts during design, not shortly before release. This post focuses on how Service Level Objectives (SLOs) and Service Level Indicators (SLIs) can be used early in the SDLC to guide architecture and delivery choices. Remind me what they are again SLI - Service Level Indicator A quantitative metric for a service’s performance, as experienced by the user of the service. It is a measure of a property of the service that is a good proxy for your user experience. ...

To Code or Not to Code as an Engineering Manager: Making the Right Choice
I used to regularly run the engineering manager community of Practice at my current workplace. I loved and still love it. But now I barely get time to do anything extra. My hours are so squeezed into a specific slot of time - the time when my toddler is not at home. :D I got asked in the community slack channel a very important question. One that a lot of engineering managers debate in their heads. Especially if they used to be tech leads and then switched to managing others. They get their joy from helping others develop and also building something that others can use. ...

Transactional Outbox Pattern: A Practical Guide to Trade-offs
In event-driven systems, services often need to update local state and publish an event for other services. Doing these as separate operations introduces a consistency risk known as the Dual Write Problem. The core requirement is simple: the database write and event publication should represent one logical change. If one succeeds and the other fails, downstream systems may observe incomplete state. The Transactional Outbox Pattern is a practical way to address this in many microservice architectures. ...

The Honey Badger Management Framework
Never in my wildest dreams did I think I’d hear of an agile management framework of this name - HoneyBadger. What is HoneyBadger? HoneyBadger is an agile management framework. Now that doesn’t make much sense does it? Don’t we already have plenty of agile management frameworks? Let’s start breaking that down a bit Info ...