Skip to main content
39Essay

A workout planner for endurance + weight training

Combining 8–10 hours a week on the bike with heavy lifting kept blowing up on me: I'd ride too hard, then be too depleted at the gym to lift anything worth lifting. So I built a weekly planner around Intervals.icu where every design decision exists to protect the plan from me. Then I pointed it at my own training log, and it caught me quietly skipping the hard parts.

As I've gotten older, I've struggled to figure out the best way to stay fit while working a full-time job.

I've struggled with falling asleep, stress and bringing work home. Working out has made all the difference for me, and it ends up being pretty time neutral since I fall asleep faster, sleep better, and wake up mostly rested.

In my darkest stretch at Cityblock, during a…high-growth moment…I’ll say, I drank about half a bottle of ZzzQuil at 2am, still couldn't sleep, and just lay in bed for a few hours. I got up at 5am, went to the gym near work, worked out for an hour, showered, and did a full day of work. I somehow still didn't sleep well even that night.

After that, I got a personal trainer and a regular schedule. Working out helped a ton but I just can't strength train all that often, so I shifted toward endurance. Looking back, I remembered that I felt best when I was bike commuting every day, so I leaned into that. I got a bike and an indoor trainer off facebook marketplace, and I've been riding 8–10 hours a week and sleeping much better ever since.

The strength and endurance interference problem

As a ~40-year-old athlete, strength training matters more. My muscle mass, bone density, and ability to still put out power at the end of a 5 hour ride all depend on continuing to lift heavy stuff every so often. But, as it turns out, combining heavy lifting with 8–10 hours of riding is really hard! I'd go too hard on the bike and then be too depleted at the gym to lift anything or vice versa. I couldn't figure out the balance.

I looked at my training logs and they showed the failure in the data. Rides I intended as easy recovery spins came in at an intensity factor of 0.78–0.94 (moderate-to-hard efforts). Intensity factor is your effort relative to your one-hour threshold power; an easy ride should sit around 0.6, and 0.9 is a hard workout whether you admit it or not. I was failing to train easy enough for strength training and training inconsistently (0.7 strength sessions/week) as a result.

What the evidence actually says

Before building anything, I wanted to know what the research supported. I used AI tools to run a deep research pass across six angles and 29 sources, and had each claim adversarially verified. Of 131 candidate claims, 25 survived and 4 widely repeated ones were refuted outright. Five key shaped the workout plan:

  1. Ride a lot, mostly easy (80/20). No periodization scheme beat any other over 8–12 weeks in trained riders. Consistency and volume win; the "moderate" grey zone I kept drifting into is exactly what the evidence says to avoid.
  2. Heavy lower-body strength work is the single best-supported addition. Two sessions a week at 80–85% of max, for 12+ weeks. The payoff is durability: in one trial, cyclists produced ~8% more power at the end of a 3-hour ride after a strength block.
  3. Low-cadence "strength intervals" on the bike are refuted. A 12-week trial in cyclists averaging age 47 found zero benefit. If you want force, lift. Don't grind.
  4. For athletes over 40, dropped volume explains most of the fitness decline, not age. The masters athlete's enemy is the missed week.
  5. Threshold work moves threshold power; VO₂ max work evidence is thinner. The one study on riders my age raised threshold power with big effect sizes using a sweet-spot-heavy mix. Polarized training's only verified edge was VO₂ peak which didn't translate to time-trial performance and the standard VO₂ interval prescriptions are coaching consensus, not verified research. I am still actively researching this area!

But in short, the plan is pretty simple: lots of genuinely easy riding, one or two quality sessions, two heavy lifts and protect consistency above everything.

So what did I build?

A small planner built around Intervals.icu, the training platform that already holds my ride history, my fitness and fatigue numbers, and the morning HRV and resting heart rate my watch records. Every Monday it reads my current form, plans the week. This is usually one sweet-spot session, at most one hard interval ride, two strength sessions, one rest day, everything else easy Zone 2 and pushes structured workouts with power and heart-rate targets to my calendar, which sync to the bike computer. This is all configurable and supports rest weeks and vacations.

The interesting part is that every design decision exists to protect the plan from me.

It only fills empty days. If I've hand-planned part of the week for say a group ride or vacation, the planner leaves those days alone and adapts around them if possible.

Readiness only makes weeks easier. The planner watches my HRV and resting heart rate against a personal baseline. A clear HRV drop or resting-HR rise downgrades the whole week one fatigue tier. Good numbers never add intensity. That asymmetry is deliberate: the failure mode I'm defending against is doing too much, not too little. A green readiness score doesn't mean I should blow up my week. Still debating this but it seems to help with consistency.

The grey zone is banned. Hard days are capped, and every remaining day fills as easy Zone 2. The planner is incapable of scheduling "moderate."

Strength placement adapts to fatigue. On fresh weeks, lifting stacks onto the hard riding days so recovery days stay completely clear. On fatigued weeks that stacking turns off so that the lifts get their own spaced-out days.

It runs without me. A GitHub Action generates and pushes the week every Monday at 6am. My lifting app syncs in too, so sets, reps, and loads land in the same training log as the rides. A coach in a cron job: it never gets bored, never gets ambitious, and never decides that today feels like a good day to smash it.

There are quite a few guards! My threshold power auto-syncs from Intervals.icu's rolling estimate, but a single implausible jump is refused as bad data. If weekly training load ramps faster than 7%, hard sessions get pulled. An artifact filter drops the occasional bogus resting-HR reading before it can fake an alarm.

Try it

I kicked this off on June 10th and the evidence says durability gains show up after about 12 weeks, which puts the end of the block in early September. Will it work? I don't know yet but I'll update the post then.

The code is at github.com/zamiang/workout-planner. It's config-driven with easy to adjust session counts, fatigue thresholds, load targets all live in a YAML file. If you're an older athlete trying to hold endurance and strength together without one wrecking the other, give it a shot!