Blog
Notes from the team behind Run Plan — what we build, what we get wrong, and what we learn along the way.
July 2026 — what is still open, updated
Three Things We Haven't Figured Out
The July update of our open-problems list: generating a lot of plans that are all good, making a watch talk through taps, and the iPhone-to-Watch pipe. No conclusions, same as last time.
EngineeringProductJuly 2026 — hello
Introducing RunPlan
Hi! We’re Dan and Katya, and we built the running coach we always wanted to exist. The short version, for people who just found us — including the engine you can read on GitHub.
ProductJune 2026 — training in cycles
A Year Is Not One Plan
The unit of training is not the race or the plan — it is the year. How to build a season out of several cycles, each ending in a race, with real rest between, so fitness climbs like a staircase instead of one hill. Three charts, and the same shape for a sub-3 marathoner and a couch-to-5K graduate.
TrainingJune 2026 — a new tier
Introducing the Pro Plan
A new tier for sub-3:00 marathon and sub-1:30 half. The audience, the workout pool we draw from, how we feather phase transitions, and the empirical projection model that gates a plan if the math says the runner will come up short.
TrainingMay 2026 — localization
Nine Locales, One Watch
We localized Run Plan into eight non-English languages over three weeks of evening work — a writeup of what worked, where we tripped, and the cultural discoveries that turned out to be more anthropology than engineering.
EngineeringDesignMay 2026 — Watch perf war story
The 8-Month Bug That Almost Made Us Quit
One Apple Watch bug that quietly made our app feel sluggish for eight months — how we missed it, how we finally found it by bisecting the UI, and the SwiftUI mistake hiding off-screen behind every workout.
EngineeringMay 2026 — a book about mountains
Training for the Uphill Athlete: A Book About Mountains That's About to Rewrite Our Engine
A book about mountaineering — Steve House, Scott Johnston, Kílian Jornet — that is about to reshape a road-running app's plan engine. Five ideas from it, and the six engine changes already on the to-do list because of them.
TrainingApril 2026 — Watch dev workflow
Why Our Comprehensive Test Suite Is Mostly Useless
Six months of iOS + watchOS testing, plainly accounted for. ~100 unit tests for the plan engine saved us real time. ~25 UI tests caught zero production bugs. What we tried instead.
EngineeringApril 2026 — engineering companion
How RunPlan Decides What You Should Run Tomorrow
Sixteen months into a two-to-three-month project. A mid-journey reflection on the architecture, the engine, and what is actually happening inside the app when it tells you to run six 800s on Tuesday.
EngineeringProductApril 2026 — what a plan actually is
Why Training Plans Are Interesting
What a real training plan is doing under the hood — phases, progressive load, workout variety with intent — and why most generated plans miss the structure. The physiology of each workout type, the multi-cycle reality, and the plateaus every runner eventually hits.
TrainingApril 2026 — auditing our own catalog
The 308 Fartleks: When We Audited Our Own Catalog
We dumped every generated plan to plain text and compared against Higdon, Pfitzinger, Daniels. Of 590 workouts in our catalog, 308 were fartleks. The engine picked zero of them across 31 test plans. Three weeks of rebuilding followed.
TrainingEngineeringMarch 2026 — the 2 AM rewrite pattern
The Death of a Thousand Small UI Improvements
Saturday 10 AM, "twenty-minute job." Sunday 2 AM, three rewrites, the cat asleep, the milestone view broken in ways it was not broken before. Five real polish arcs from our commit history, the four rules that have eventually saved us from the spiral, and why Apple Watch UI work is pathologically harder than iPhone.
DesignEngineeringMarch 2026 — a year of refactors
The Architecture of an Indie Apple Watch App
The August 2025 weekend that turned thirty flat Swift files into feature folders, the November Core Data rewrite the three targets all read from, the 2,055-line file we split into three, the OSS calendar we replaced with 600 lines of SwiftUI, and the four times we have rewritten load calculation.
EngineeringMarch 2026 — adopting Liquid Glass, six months late
iOS 26 'Liquid Glass': What It Meant for Our App
Two weekends of catching up to an SDK that shipped in September. Bottom sheets, tab bar tints, watchOS button hit areas, scroll-zoom calibration — plus the broader observation iOS 26 keeps making for us: top-level views now look more like each other than they used to.
EngineeringDesignFebruary 2026 — engineering walkthrough
Under the Hood: How Run Plan Actually Builds Your Plan
The dials, the numbers, the actual formulas. Phase multipliers, smooth transitions, the recovery cadence, surprise weeks, and the scoring function that picks every workout.
TrainingEngineeringFebruary 2026 — when the textbook fix lost
Matrix Multiplication Doesn't Make Apple Watch Batteries Last Longer
A year of matrix math, thirty lines of outlier rejection — guess which one ships. The Kalman filter we built to smooth Apple Watch GPS, why it lost to a 20-second moving average, and what that quietly does to the watch-first claim from last September.
EngineeringFebruary 2026 — honest comparison
The Best Free Running Plan Apps in 2026
Nike Run Club, Garmin Coach, Hal Higdon, Runna and RunPlan — compared honestly by people who make one of them. Who should pick what, where each app wins, and where the catches are. Bias declared up front.
TrainingProductJanuary 2026 — case study
How Training for a Marathon Led Me to Build RunPlan
A UX case study: what existing running apps got wrong, and the four principles RunPlan was built around.
DesignProductDecember 2025 — the free routes
How to Get a Free Marathon Training Plan That Actually Adapts
Every legitimate free route to a marathon plan — Higdon’s classics, the books, spreadsheets, and free apps — with an honest account of what static plans can’t do: your paces, adaptation, and a watch that runs the workout.
TrainingDecember 2025 — the connectivity backbone
The iPhone–Watch Sync War Story (and Why We Test Through the iPhone)
A year of wrestling with WatchConnectivity. Five delivery methods, three reverted architectures, the schema-version stamp, the dual-channel write, and the lesson it took us a year to admit: reliable sync IS the backbone of an iPhone + Watch app.
EngineeringOctober 2025 — the pricing position
Why We Are Building Run Plan Without a Subscription
Two laptops and a printed list of competitor prices on the kitchen table. The position we mean to hold — no subscription, ever — and what one does to a fitness app that the marketing never mentions.
ProductSeptember 2025 — watch-first, eventually
Apple Watch Is Enough
A status report from a two-person team: what we wanted (a pure watch-first running app), what we ran into, and where we actually are.
ProductEngineering