Runner tying shoelaces by the front door

Why I Built Workout Writer

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:

  • warm up
  • do the work
  • cool down

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.

PLACEHOLDER PLACEHOLDER: Runner and coach discussing training


The friction that kept showing up

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.


The Apple Watch turning point

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.


Built between training blocks

This project wasn't built in one sprint. It was built in the margins.

I was training for ultras while writing code around life:

  • early mornings
  • evenings
  • recovery days

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.


Garmin changed the scope

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.


Real testing with real runners

Members of my local run club in Perth have been using Workout Writer for about a year. Their feedback shaped core behavior:

  • parsing variations in how people write intervals
  • improving repeat handling
  • quality-of-life details like skipping the final recovery before cooldown when it reads cleaner

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.


What Workout Writer is (and isn't)

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.


Why I care about this

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.

  • Simon