Just a reminder, building the wrong thing faster still gets you nowhere.

The OG meme

Best posts on product, strategy and AI. One email a month.
Just a reminder, building the wrong thing faster still gets you nowhere.

The OG meme

As the cost of writing code trends toward zero, the backlog explodes. Every feature becomes rent you have to pay.
After more than 10 years of building online products as a product person, here's what I've learned:
Everyone is making guesses. The CEO is making guesses about the vision and strategy. Salespeople are guessing what people want. Investors are making guesses about scale. You guess how big an impact it will have and what should be built next.
TAM models, the ICE framework, roadmaps and discovery sprints all sound sophisticated, but they're still just a bet.
Your mentor doesn't know if your feature will improve retention. The 'expert' on LinkedIn can't tell you if your market is big enough. You don't know if this sprint will make customers behave differently.
The only way is to keep shipping and keep the build cost low.
Only recently, I thought I didn't have time. I knew that would change soon, and I also knew I'd adapt - especially since I've done it twice before.
My third daughter (yep, I'm a girl dad) was recently born and already seems to be the boss.
In between naps, feeding, and endless nappy changes that look suspiciously like mustard, I'm doing a couple of extra things:
Harbour 10 is done! ✅
When I signed up, I picked the 55–65 min group and didn't think I'd break 55. Ended up finishing under 53 (5:12/km).
I ran the first 8 km at a comfortably hard pace then gave it everything in the final stretch (4:30/km last km). The first half was pretty packed...narrow paths and lots of weaving through the crowd. Ended up overtaking around 900 people.
Really stoked with the result, especially the pace in that last km.

Went for a run this morning - really enjoying getting out early on the weekend. The goal was to go sub-55 for 10km, then take it easy for the final 5km. I cooled down with a gentle pace, pushed a little at the end and ended up with a 15km PB as well.
Loving these runs across the Sydney Harbour Bridge. Stunning views - running past the Opera House, through the Botanic Gardens and finishing in Barangaroo. One of the best spots in the world ❤️

Over the weekend, I've been playing around with some Vibe Coding to tackle a challenge I've been thinking about.
There are probably existing products that do something similar, but for me, it's more about getting hands-on with AI and building something myself. I used to be a software engineer, so tinkering with things like this comes naturally - and I really enjoy it.
The problem I'm exploring is related to my work in the health industry, which is a broad and complex space. To give you an idea: there are general practitioners, specialists, allied health professionals like physios and psychologists, private and community clinics, hospitals (public and private), private health insurers, Medicare and government services, regulatory bodies like ADHA and AHPRA, My Health Record, and the underlying tech infrastructure like Best Practice, MedicalDirector, and Genie.
Then there are patient-facing platforms like HealthShare (where I work), HotDoc and Health Engine plus areas like patient education, pharmacies and aged care.
This is a lot!
As a product leader, I try to stay on top of market news and emerging trends but it takes a lot of time and constant context switching.
That's the problem I'm trying to solve. See MarketRippa

✅ Finished UTA50 in 9 hours and 53 minutes.
Tough course - pretty gnarly at the bottom, and I saw a lot of runners twisting their ankles. The weather was clear and kind, but the course itself was brutal. Still, the atmosphere was amazing. So many positive vibes - not just from spectators cheering you on and chanting your name, but also from fellow runners cracking dad jokes like, “Did we pay for this?”
Overall, I felt pretty confident about making it to the end. I didn't push myself to the extreme - kept it moderate at the start. My goal was to make it halfway to the Queen Victoria Hospital (QVH) aid station (around 28km). Once I got there, I knew I could finish and hopefully avoid cramping.
The 8km downhill stretch was brutal on my toes - definitely earned some black toenails - and I couldn't go as fast as I wanted. But the last 5km was mostly flat, slightly inclined. I found a second wind, overtook a few people, and pushed pretty hard. Still, a couple of UTA100 leaders flew past me like they were weightless. They looked so fresh. I hated them a little.
The last 200 metres was a grind - 900 Furber steps. I didn't stop and just pushed through. In fact, I didn't stop at all throughout the race except for refueling at checkpoints. Climbed every hill and stair section without pausing, which I'm proud of.
Tempted to consider the UTA100 one day - it's a different beast, and I'm not thinking too seriously about it yet. But once the legs recover, who knows?
If you're on the fence about trying UTA, I'd definitely recommend the experience. You don't have to go straight to 50 - there are also 11km and 22km options. Amazing atmosphere, incredible challenge.

UTA50 is next week. 50km. 2.5km elevation. Just writing this makes my legs feel heavy. Scary.
Doubts are louder. Have I done enough? Am I ready? What if I can't finish?
But I'm doing it anyway.
Doubt doesn't mean stop. I'll show up. Then I'll take the first step. Then the next. Then the next. Until it's done.
See you in Blue Mountains!

How to kill procrastination. Pretend you're on live TV. No edits. No second chances. Everyone who matters - your family & friends, your team, your mentors - is watching.
Every move is seen. Every pause is noticed. You can't stall. You can't check your Instagram. You act.
Treat your to-do list like it's broadcast live. Not to perform. To finish. You don't need motivation. You need urgency.
You need the switch that says: “They're watching...”
Got wrecked in the Blue Mountains over the weekend - legs felt like bricks. So hitting a PB for 15Ks with sub-6:00 pace felt massive. Nearly 200 metres of elevation in there too.
That's a big one for me. Not just the numbers - the confidence it gave me after a rough session.
These are the moments that build the legs for UTA50 - and the mindset for everything else.


35km in the bank. But this one hurt.
Started fresh. Finished wrecked. 1,640m of elevation over 6 hours stripped me down. Legs gave out before the mind did - but only just.
UTA50 is another 15km longer, with almost 1,000m more elevation. Today's effort wasn't even the full thing. And it still broke me. If I hit that wall during the real race, I won't just slow down. I'll stop.
That's the scary bit.
But also the point.
The course doesn't lie. You either show up prepared or get chewed up. Today didn't break me. It just showed me where the cracks are. And that's exactly what prep is for.
Every painful step now is insurance for race day.

You don't start out building dystopia.
You start with a dream. To help someone. Maybe save a life. Not growth. Not virality. Just impact.
It begins with something human. “I want to help people.” Real pain. Real need. Strong emotional pull.
So you build. Scrappy MVPs. Test empathy. Pitch it as perspective-shifting. Maybe even healing.
Early adopters rave. Investors lean in. Retention climbs. Virality kicks. So you optimise.
Empathy turns to entertainment. Immersion becomes addiction. Exploration turns into extraction.
“Total immersion” becomes your edge. Richer data. Deeper sync. Sharper fidelity. The product gets better. But better for who?
Then come the tiers. Free. Plus. Premium. Ultra. More access. More control. More fun.
Lower tiers don't get less. They just get worse. Ads. Friction. Withdrawal.
The customer's life becomes content. Their pain becomes product.
Then the customer disappears. No roadmap. No experience tracking. No consent. Because they're not the customer. They're the cost.
You're not evil. You're just in growth mode. The sprint is full. The metrics are green. Legal said yes. And besides - it's working.
Dystopia doesn't crash through the door. It slips in quietly… while the dashboard stays green.

Calm is the flex.
Anyone can snap back. That's easy. A sharp reply, a passive-aggressive jab, a silent cold shoulder. But reacting lowers you.
Real strength isn't loud. It's poised. Collected.
Because when pressure hits and others lose their cool, staying calm does more than protect your dignity - it shows who's really in charge of themselves.
You don't need the last word. You don't need to win the argument.
So stay calm. Not to keep the peace. To keep your power.
This route is brutal but beautiful. Elevation like this breaks most runners. But it also builds something race day can't fake - grit.


Yeah, everyone's talking about ChatGPT image generation online - and I get it. It's addictive and pretty entertaining.
One of the cooler ways to use it is by turning a rough sketch into something way more polished.
Here's one of my early, messy drawings I made for the “Cultivate and Cut” post. I always meant to come back and clean it up but never got around to it. So I asked ChatGPT to turn it into an illustration - and honestly, the quality blew me away.
Here's my (ugly) original drawing:

Then I asked for an illustration version:

Next, I asked it to add some extra details:

Then I tried an isometric version:

Then photorealistic:

And finally, a Ghibli-style version:

I'm definitely going to keep playing around with turning my sketchy concepts into full illustrations. This is just too much fun.
A morning run. Half-marathon with over 700 m of elevation. Three hours on the legs.
That's not just training - that's mental conditioning. This was another brick in the UTA50 wall. Quiet work. Honest effort. A long session that burns the calves and builds the mindset.
Pace doesn't matter when the elevation looks like a mountain range. What matters is showing up. What matters is stacking these efforts week after week.
You don't finish UTA50 on race day. You finish it here. In the sweat. In the silence. In the rain. In the Sunday slogs when no one's watching.

I had to....sorry, not sorry #ghibli
