AI Chief of Staff
Automating complex workflows intelligently with AI.
Open case studyLeadershipEngineeringDesign

Automating complex workflows intelligently with AI.
Open case study
An experiment that monitors AI's behavior when placed in a simulated world
Open case study
Change the game
Open case study
Gear S2 - Campaign website
Open case study
Enterprise CMS website
Open case study
Platform for Google events
Open case study
I launched six 0->1 AI products along with a design system, CRM integrations, and a site-wide refresh.
Open case studyI build things people love and the teams that bring it to life.
Since I was six years old, I've been around computers and gadgets. I was the child who meddled with devices and toys, piecing them apart and seeing what they were made of. I wanted to know what made things work, why it was attractive to me, and how I could improve it.
I was naturally drawn to fine arts, performance, and presentation. As a child I drew, sang, played piano, designed presentations on my PC, and made video games for my younger brother and me. I enjoyed impressing people with beautiful art. I love presentation, and websites are among the epitome of presentations. When I build websites, I don't think about the site. I think about the people I'm building it for.
Websites are, as I like to think of them, human interaction, and I apply the interactions from my life to my work. Take design into consideration. When you see something you're attracted to for the first time, you're not immediately evaluating its traits. Initially, you're simply indulged in the attraction. It's intuitive and it's natural. That is beauty. I strive to incorporate these qualities and invoke these emotions in my design. Development is the "electricity" of our industry. It's everywhere, involved in practically everything we do.
It runs 24/7 behind the curtains and works until the moment it doesn't. Our lights turn out, and everything comes to a halt while we suddenly realize how many things it was powering. Solid development works without you noticing. It's rapid, problem-free, and graceful. Those are the qualities I focus on when I develop. Great design draws us in, it makes things usable. Great development keeps us there, it makes things useful. The marriage of the two creates effective technology, and I absolutely love when they come together.
For years that marriage was the whole story: design and development, beauty and electricity. Then I noticed something. The thing I loved building most wasn't a screen or a system anymore. It was a team.
It turns out leading people is the same instinct I started with. You want to know what makes someone work, what they're drawn to, how they could grow. You build the conditions for good things to happen, then you step back so they can happen without you. I grew one small team into a whole organization. I promoted people past me, and it was the proudest work I've done. I still write code, because you can't set a bar you can't reach yourself. But my real craft now is the same one from when I was six, taking things apart to see what makes them work, except now the things are teams, and systems, and the strange new electricity of AI.
The tools keep changing. The instinct never has. Make something people want. Make it well. Care about the person on the other end. That's the whole thing, and it always was.
And I still love learning. That passion led me to dancing, traveling, piano, exercise, martial arts, singing (shower quality), and trying something new as often as I can.
How can I make myself replaceable?
My management philosophy comes down to one question I ask myself: how can I make myself replaceable? People grow most when they have clarity on what success looks like, the autonomy and trust to find their own way through, and consistent, pointed feedback along the way. My engineers would describe my style as collaborative, structured, trusting and autonomous. I am a hands-on coach early on, then I deliberately step back so people can grow into ownership.
Five tech leads I coached now own their roadmaps and operate without me in the room. One of them is an engineering manager. That is the measure I actually care about.
The hardest part of working this way is the discipline to refrain from stepping in, especially when you can see something about to go wrong and you know exactly how to fix it. Letting someone experience it and then coaching them through the reflection is almost always more effective than solving it for them. The risk is stepping back too early, before somebody is ready, and I guard against that by being explicit about what success looks like and staying closely observant at the start.
When somebody wants a decision from me, I ask for four things: the problem, the options they considered, the tradeoffs, and their recommendation. I call it the Decision Stack. It turns "here is a problem" into "here is my call, tell me if I am wrong", which is the difference between reporting and owning.
I evaluate engineers on two pillars. Impact, which is reliability, performance and scalability. And communication and leadership, which is alignment, clarity and knowledge-sharing. The higher the level, the more each dial turns from replicating systems to designing ones with leverage across the organisation. AI usage is written into every rung of that ladder rather than sitting beside it.
On team structure, I aim for roughly thirty per cent senior, forty per cent mid and thirty per cent junior. It creates growth paths without sacrificing delivery on complex work. I keep a primary and a secondary on every project so no single person is a point of failure. Team structure should not be static: my job is to evolve it to serve the business and the engineers at the same time.
Leading outside my own depth taught me the most. My strongest background is the front end, and early on I could not always pressure-test a backend proposal in the moment. Rather than trying to become an expert in everything, I made RFCs mandatory for significant work and changed the questions I asked. Instead of implementation details, I anchor on production risk, scale and maintainability: what happens if this fails, how do we mitigate it, what will this cost in production? My job leading outside my core depth is not to match the experts technically. It is to build the conditions that let the right decisions surface.
Five pieces on TypeScript's error messages, static typing, and what to do with an engineer who is failing in the wrong role. Read over thirty thousand times.
30,000+reads on Medium
Poor Performer? You Might Just Have Them in the Wrong RoleI once managed a junior engineer who was struggling in a conventional software-development position.
The TypeScript Guide I Wish I Had
A Cheat sheet for Python and Typescript static typing
Conquering a complex error in TypescriptHow to read and understand the Object Literal error
How To Read Errors in TypeScriptTypeScript can be riddled with errors and warnings, for seemingly every little thing. Take this function for example:If you would like to collaborate, or you think I would be a great fit for a role you are sourcing, please get in touch. You can also find me on LinkedIn or GitHub.