Fire Your Standup

Fire Your Standup

The title is clickbait. I’ll admit that upfront. I’m not going to tell you to fire your standup. I’m going to tell you something more nuanced and therefore less shareable: your standup should change shape as your team grows up, and if it looks the same at month twelve as it did at month one, something has gone wrong.

I do daily standups with new teams. Every single day. And with my established, well-communicating teams, I’ve backed off to Tuesday and Thursday. Both of these are the right call. The trick is knowing when to shift from one to the other.

[Read More]

Technical Debt Is a Leadership Problem, Not an Engineering One

Technical Debt Is a Leadership Problem, Not an Engineering One

Every codebase has skeletons in the closet. You know exactly where they are. That module nobody wants to touch. The database migration that “worked” but left three orphaned tables. The authentication flow that was built as a temporary solution eighteen months ago and is now load-bearing infrastructure. You know where all the bodies are buried because you helped bury some of them.

The engineers know too. They bring it up in retros. They mention it in 1:1s. They write tickets that sit in the backlog with labels like “tech-debt” and “cleanup” and “please-for-the-love-of-god.” And nothing happens, because there’s always another feature, another deadline, another client request that takes priority.

[Read More]

Nobody Tells You How Lonely Remote Leadership Is

Nobody Tells You How Lonely Remote Leadership Is

My most meaningful conversation today was with a 10kg Jack Russell who has anxiety challenges. He didn’t offer much in the way of strategic feedback, but he’s an excellent listener and he never schedules a 5pm Thursday call.

The only other person I spoke to was the woman at the bakery. She asked if I wanted the usual. I said yes. That was it. That was my human interaction for the day, unless you count Slack, which I don’t, because typing into a void and waiting for a reaction emoji is not the same as talking to someone.

[Read More]

The Meeting That Should Have Been a Document (And the Document That Should Have Been a Meeting)

The Meeting That Should Have Been a Document (And the Document That Should Have Been a Meeting)

It’s 4:47pm on a Thursday. I’m halfway through a problem that’s been bugging me since Monday, and I can feel the shape of the solution forming. My brain is doing that thing where all the pieces are slowly rotating into alignment. Ten more minutes and I’ll have it.

My calendar pings. “Urgent sync — can we jump on a call in 15?”

I know what’s going to happen. We’ll spend 30 minutes talking through something that could have been a one-page document. By the time the call ends, I’ll have lost the thread of what I was working on. I’ll spend Friday morning trying to remember where I was. And nobody, including me, will remember what we actually decided on that call by Monday.

[Read More]

Stop Hiring for Culture Fit When Your Culture Is a Git Repo

Stop Hiring for Culture Fit When Your Culture Is a Git Repo

I once took a candidate to a bar in Larnaca with my CEO and our head of projects. The conversation was brilliant. Funny, warm, full of war stories from previous roles. We all genuinely liked this person. By the end of the evening I was mentally drafting the offer letter.

And then, somewhere between the second round and the bill, I realised I couldn’t picture them doing the job. Not the socialising, not the anecdotes, not the charm. The actual job. The 8am standups, the weekend deploys, the unglamorous Tuesday afternoon where nothing is on fire but everything needs pushing forward. Startup is a grind, and this person was lovely but they weren’t a grinder.

[Read More]

I'm a CTO Who Still Writes Code (And I'm Not Sorry)

I'm a CTO Who Still Writes Code (And I'm Not Sorry)

Last Tuesday I mass-deleted a hundred lines of Python that I’d spent two days writing. Not because the code was bad. It was actually pretty elegant, if I say so myself. I deleted it because I realised I’d spent two days solving a puzzle that I should have handed to my team on Monday morning.

I love solving puzzles. That’s the problem.

The early days are different

When you’re a co-founder getting an idea off a whiteboard and into a working demo, you should be writing code. You should be writing CI pipelines. You should be debugging at 11pm with a cold coffee next to your keyboard. You should be doing devops, handling support tickets, and deploying on Fridays because there’s nobody else to do it.

[Read More]

Your 'Open Door Policy' Doesn't Work in Slack

Your 'Open Door Policy' Doesn't Work in Slack

I watched a CTO tell his fully remote team that he had an “open door policy.” He said it in a Slack channel. I sat there for a moment, staring at my screen, trying to work out where the door was.

He meant well. Of course he did. He was trying to say “I’m approachable, come to me with problems.” But what he actually created was a channel where three junior developers pinged him every time they hit a snag, two senior engineers never said a word until things were properly on fire, and he spent his entire day context-switching between half-conversations that could have been, and I’m sorry but it’s true, a Google search.

[Read More]

Please Stop Using PGP

Please Stop Using PGP

Right. So last Tuesday, a contractor on one of our projects — smart bloke, solid engineer — sends me a Slack message asking if I can “PGP encrypt” a document before sending it over. For security, obviously.

I sat there for a bit. Stared at the cursor. Made another coffee.

Then I typed: “I’ll send it on Signal. What’s your number?”

He was confused, and honestly, I get it. PGP feels like the serious, proper option. It’s been around forever. It’s got “cryptography” written all over it — key rings and fingerprints and ASCII-armoured blocks that look impressively incomprehensible. If you learned about encryption at any point in the last thirty years, someone probably told you PGP was the gold standard.

[Read More]

Hugo for GitHub Pages

Hugo for GitHub Pages

Environment: Mac M4 24GB · macOS Tahoe 26.3

It’s my birthday. Most people go out for dinner or, I don’t know, have cake. I’m migrating my blog from Pelican to Hugo. I’ve been meaning to do it for a while and apparently “a Saturday where I turn another year older” is the motivation I needed. Happy birthday to me — here’s a static site generator.

Hugo is written in Go, it’s absurdly fast, and it deploys cleanly to GitHub Pages via Actions. Here are my notes.

[Read More]