From ultramarathon training to Apple Watch workouts and the Garmin Training API — the story behind building Workout Writer.
I did not build Workout Writer because I thought the world needed another fitness app.
I built it because I was tired of turning simple workout ideas into admin.
The workout in my head was always the easy part:
The annoying part was translating that into whatever my watch platform wanted from me that day.
Too many taps. Too many nested menus. Too much friction between a workout that made perfect sense in plain English and a builder that seemed determined to make it feel technical.

The session might be as simple as:
"20 min easy, 6 x 2 min hard / 30 sec jog, 10 min steady."
That is how runners talk. It is how coaches talk. It is how I think about a workout when I am planning a week.
But too often that simple session had to be rebuilt inside a rigid form that did not match the language of training.
The idea behind Workout Writer got very simple, very quickly:
Write it naturally.
Send it to your watch.
Run.
For a while, this was hard to do cleanly.
Then Apple introduced WorkoutKit, which made structured workout creation programmatic. That was the first real opening.
Later, support for custom step displayName made a surprisingly big difference. Suddenly the watch could show the words you actually wrote instead of flattening everything into generic labels.
That was the moment it started to feel less like a technical proof-of-concept and more like the thing I wanted to exist.
This project wasn't built in one sprint. It was built in the margins.
I was training for ultras while writing code around life:
That pace suited the project, honestly. Endurance training is patient and repetitive. Building this was too.
It also meant a lot of real-world testing, including edge cases you only notice when you are tired, under-fueled, or four hours into a long run and no longer in the mood to tolerate sloppy workout logic.
Apple Watch support was important, but many endurance athletes are on Garmin.
Integrating the Garmin Training API changed the ambition from:
Write once -> send to Apple Watch
to:
Write once -> send to Apple Watch or Garmin
Same session. Same intent. Two major ecosystems.
That made the product feel meaningfully more useful.
Members of my local run club in Perth have been using Workout Writer for about a year. Their feedback shaped core behavior:
That kind of feedback is better than any artificial test case because it comes from real people writing workouts the way real people actually write them: inconsistently, creatively, and often five minutes before they need to leave the house.
It is not a coaching platform. It is not a rigid training-plan product.
It's a bridge between natural workout language and structured watch-ready workouts.
The goal is simple: reduce admin friction so you can spend energy on training, not setup.
When you're preparing for a race, consistency matters more than complexity.
The hard part should be the run, not the interface.
If Workout Writer helps remove even a little friction from your week, it's doing its job.
And if you use it, I want to hear what works, what is clunky, and what still gets in your way.