Thursday, June 27, 2024

Power Meters on Mountain Bikes

Should you run a power meter on your mountain bike?

I'll start this with a bit of troll-bait and say that if your primary training app is Strava, then no: you shouldn't. Strava is a social platform that, on its own, isn't super useful for structured training, even when you pay for the premium features. Strava's main features that support structured training are segments, laps, power curve, and "fitness". Forget about relative effort or "suffer score"--it's a useful metric only in hindsight.

Many of us run power meters on road bikes, and pretty much everyone who uses Zwift for any serious training is using some form of power-measurement, whether it's on the bike or build into the trainer. Power meters allow us to gauge our performance improvements (or losses) over time, train to specific targets like having a powerful sprint or being able to crush a time trial.

The data they provide can also be extrapolated to determine other datapoints like VO2Max, which is very basically a measure of how much oxygen your body can process, and is seen as a kind of performance cap.

They're also fantastic for interval training, which is generally easier for most folks to do on the road because the smoother surfaces tend to make it easier to hold a given power. Need a 5-minute interval? Go find a decently tall hill. Easy-peasy. Easier-peasier? Get on Zwift and do an interval session. Hard as hell and not worth the effort? Hold 5-minutes of steady power on a trail. We'll come back to that.

Zwift dangled a very silly carrot for me late last year that made me do interval training (which I HATE HATE HATE), and around the same time I started exploring yet another extrapolated datapoint from power meters: work (or W').

W' is, similar to VO2Max, a kind of functional upper limit on your body's capability. While VO2Max can change a little over time with fatigue and health, it generally isn't directly affected by your training load. W', however, is a measurement of your anaerobic capacity, expressed in kilojoules (kJ). It's like a reading of how much battery you have for work above critical power, which is roughly your threshold power. An amateur may have a W' value of 10 kJ, where a pro may come in closer to 25 kJ.

You only use this capacity when you're operating above your critical power, which is a computed value (similar to FTP) based on a complicated formula that uses your peak 2-minute and 10(ish)-minute power numbers to determine the specific rate of power drop-off in your power curve. Unlike most other metrics, though, you can recharge your W' battery by operating below critical power.

So say, for instance, your critical power (CP) is 290W, and you have a W' of 20kJ (wow--go you!). You're riding a tough, but manageable road race hiding in the group pedaling away at 250W for an hour. It's time for the big sprint, and when you give it the beans, you deplete that W' at ~1kJ/sec. Math will tell you that you have about 20 seconds to do your worst to the group, but after that you're at complete exhaustion.

...except you aren't completely exhausted, because just dialing it back to that steady 250W and not exceeding 290W will recharge your battery. After a few minutes you may be able to tackle another 15s sprint, and if you can sit-in long enough, maybe a full 20. But every time you rotate to the front and take a pull at 350W, you're taking a few joules.

Having the ability to measure and observe W' lets you see exactly what you have in the tank. It tells you when it's time to stop attacking and start saving for the big sprint, or when it's time to push the attack because you're sitting on TONS of kJ and nobody's making any moves.

Also similar to VO2Max, your W' can be trained, but changes are much slower than, say, FTP.

W' is complicated. It isn't sexy, it's not well explained on the internet, and isn't surfaced directly--to my knowledge--in any cyclocomputer screen or performance metrics. It can be inferred, though, with maths, and those maths can be added to a Garmin device thru a Connect IQ datafield.

And that means: if you have a power meter, you can monitor your real-time anaerobic capacity.

So while it may be nigh impossible to get direct useful insights into average power on a mountain bike ride, you can use that data to determine how hard you're going and when it's time to back off, which is dark magic when your power outputs are wildly variable.

You can also use that to gauge a race effort, which I covered earlier this year in my MonsterCross race report. And it's exactly why I threw hard-earned money at a mountain bike power meter.

My choice for the Lux wasn't anything crazy expensive: I went for the cheapest spider-based power meter I could find--even one that has a known propensity for being off by a couple %. Because I'm not interested in average power for that bike or even really in knowing specific peak values: I'm only after the amount of time I'm spending over critical power, and roughly how far over CP, to determine W' bal.

So should you run a power meter on your mountain bike? If you're willing to do enough testing to determine your CP values AND you're using a head-unit that can display W' AND you're using a training platform that supports additional datafields AND you're tired of blowing up in the middle of mountain bike races, then yes. Yes you should.

Thursday, June 13, 2024

Dude what's wrong with your mountain bike??

 Ever let a buddy hop on your mtb just to check it out? It's a rare treat to find someone dimensionally similar and who has the same cleat system, and we're all a little peevish about letting others touch our equipment. But you owe it to yourself to swap rides once in a while.

I had the pleasure of riding with a bunch of high school shredders this spring as Alastair was competing in his last-ever season of varsity high school racing. These kids met every Tuesday and Thursday, and the range of equipment varied from Walmart+ to S-Works Epics. This sport is WILD. But once in a while the kids would want to check out each others' bikes, to hilarious effect. "Dude--what's wrong with your suspension? It's like you're on a jackhammer!" "Bro why is your seat so LOW?" "OMG how do you even ride this?"

I laughed. Everyone did. Occasionally a coach would take a quick look, but usually the bikes were left to the riders' preferences, and it was just assumed that they knew what they were doing.

I also assumed that I knew what I was doing. When I got my Canyon Lux WC CF 6 in early 2023, I had come from years of struggling to make the old 27.5 Anthem fast. It wasn't fast. It was never gonna be fast. But the Lux was. Right out of the box, zero config: fast. No pedal strikes, less fatigue, whip-sharp handling.

Mountain biking was fun! For the first time since I dropped dollars on a suspension bike in 2016, I was actually enjoying myself! I put as many miles on the Lux in 1 year of riding as I did on the Anthem in 6.

And over the years Alastair had become quite the adept mountain bike rider, such that he was competing for top-10 positions in the crowded JV fields at NICA & VAHS races. So we got him a really fast top-flight Trek ProCaliber 9.7, and suddenly his improvement just stalled. He could ride faster and push harder, but wasn't progressing in races and struggled mightily with confidence at speed.

He tried riding my Lux in a race and came out feeling even worse, with no improvement in position and back pain that lingered for days.

Fast forward to June 2 of this year. One day after graduation. One month after his final chance to race for high school glory. We took our bikes to Leakes Mill Park, which has a great trail system that takes about an hour to ride. Our goal was 2 laps, but riding behind him on the first lap I could not believe how twitchy his bike looked. His handling was this wild combination of pitching his body weight and catching himself by yanking the bike up under him. It looked very uncomfortable, and he was avoiding every root like it was a venomous snake.

After the lap I asked if we could swap bikes.

Within 1 minute we were doing the familiar "dude what is wrong with this thing??" Both of us! His suspension felt locked when it was open, and he insisted my saddle was too low. We rode the lap on each other's bikes with no changes, identitcal heart rates, and amazingly the lap was only a few seconds different from the first. 58 minutes of discomfort, but *different* discomfort.

I had a shock pump in the car and took 20psi out of his fork, then jumped back into the trail. It was like a brand new bike, but we didn't have time to play any more.

Then this past weekend we went out again, this time with him on a fork that works, and me still too low on the saddle. I fought to hold his wheel at the upper end of Z2 for almost 90 minutes before pulling out a tape measure and a hex wrench. 0.75" higher and suddenly the same watts were ~15bpm lower. I felt instantly fresher. Maneuvering was weird for a bit because the saddle felt like it was in outer space.

So with *both* of us on bikes that worked, we went to Pocahontas State Park and did a vibes-only ride, and we PR'd almost every single trail we touched...in Zones 2 & 3. Uphill, downhill, flat, and technical: everything was improved. Alastair was no longer ducking and weaving to avoid roots, and my power:hr was considerably higher than...ever on a mountain bike.

Now I can't wait to see what we can both do at a race-pace!

So if you know someone who's about your same size and can stomach the idea of letting someone else ride your bike, swap. Not for a day, but mid-ride. Because I'd ridden Alastair's bike before and hadn't noticed the problems. What I needed was the immediate context of having been on mine. And be honest with your feedback. Platitudes won't make you faster.

Thursday, February 22, 2024

Monstercross '24 - the analytical follow-up post

This year was the first time I made no changes to the bike. I had just installed the SRAM Force AXS XPLR groupset before last year's race, had just bought and configured the Sun Ringle Duroc G30 wheels & WTB Resolute tires & 10-44 XPLR cassette, and even last year's bar tape was still present.

Literally the only changes were a new set of pads & front brake rotor, although a review of last year's blog post suggests I was running a lower tire pressure then at 25 psi, compared to my 27f/28r split this year. That's a sizable difference considering my race-morning weights were within 0.5 lbs of each other.

Last year the race was considerably warmer, and I was wearing standard cool weather kit. This year I was in much more aero materials, from the Velotoze neoprene gloves (with hand-warmers stuffed inside on top of my knuckles) to the Castelli Perfetto ROS2 jacket that I'd first tried on the NYD not-a-race.

I've talked about how my training tends to fall off in the Autumn, and I track fitness, form (freshness), and fatigue through pretty standard algorithms in intervals.icu (it shows almost identical data to Sauce, Elevate, and others), along with various elements from Veloviewer and other sources:


In 2020 and 2022 I got off and walked after seizing up, and in 2021 we ran a modified course, so we'll start by discarding those years. This is convenient because I also didn't have power back then, and I evidently didn't explicitly track tire pressure or my race-day setups.

Looking at this year's data, though, I came into the race with a MUCH higher fitness score than in previous years, and in spite of higher average and normalized power numbers, ended with a better form number than ever before. Fatigue was high, but it took a lot of work to get to that fitness number.

In fact it took since December 1, when I got roasted alive in a Zwift Fondo and decided to put in ~12h/week, as mentioned in my previous post.


That day, as indicated by that lone purple dot, marked the start of my march from a consistent ~73 fitness score up to 90 by January 23, with a taper that was only quasi-intentional putting me on a positive form number of 14 the day before the race.

Lots and lots of Z2, folks. Seriously: it's transformative. The easiest way for Garmin users to get the bigget bang for their buck is to turn on both Training Effect data fields: aerobic (~Z2 & 3) and anaerobic (~Z4+). I started training to these numbers, targeting an aerobic score of 3.5 - 4.9 for every ride, and only doing anaerobic work a couple of times per week. Watching these numbers has turned my Zwift time from junk miles to productive training. I cannot advocate for it enough.

But as I also mentioned in my previous post, the other big change was watching W' bal. W' is the is your anaerobic battery--your matches, if you will. It's not the easiest thing to calculate--your estimates are guaranteed to be wrong, and the numbers can and will change over time. But essentially it's scored by your max power over various intervals, say 2, 5, and 10 minutes, and using the drop-off (ye olde power-curve!) to determine how many Kj you have in your battery. Go for a big sprint and watch it drop to 0 almost instantly, or do a long surging climb and watch it drop slowly, but any efforts over critical power (which is roughly equivalent to FTP) will drain it. Conversely, riding *below* critical power refills it over time.

I started using W' bal in Zwift rides to get a feel for it, and holy moly it was amazing. Suddenly those times I felt like I couldn't carry on, I had data to show that was a lie. Because we all know the mind quits before the body. And by looking at the data instead of listening to my body, I held onto some groups that would absolutely have dropped me before.

But because W' bal also recharges, it's also instrumental in gauging recovery in a race. My 4th overall segment attack on Monsterkarst the week before the race was paced entirely on W':


This chart shows W' in red overlaid on power. Power, alone, can be hard to really interpret. You can see my first 20 minutes or so are fairly consistent, and W' remains nearly full, but when it gets spiky it's hard to see where things are dropping off. W' shows that data clearly, and the Garmin data-field shows it as a percentage, so you can track your effort clearly.

That same data for the race shows what was happening in that first lap, and how the balance changed when I got on the skis out in the wind:

That opening effort to Beach Rd, with all its bridges and power spikes, had me on the ropes. And while I got tired through the rest of the race, I was never in deep trouble again.

So I finally cracked the 3 hour mark, and I did it with over half the race being out in the wind. I absolutely believe I would have been 5 minutes faster if I'd been able to reach the front group before Beach Rd, but where to go from here?

A review of my shifting data from the SRAM app shows a larger chainring could optimize my chainline, with the lion's share of my time spent in the outer 3rd of the block.


I've been running a 40T chainring for so long I'd be nervous to depend on something larger, but the math says a 46T would move the peak back 2 gears, while only losing a single gear off the bottom--a gear I only used for 9 seconds all day. If I can find an aero 46T 110-BCD 5-bolt NW oval chainring before I give up on gravel for the season, I may have to try it out...assuming my power and fitness are in the same ballpark next year.

And that's the rub. Last year I was flat thru the Fall and got COVID in January. This year I was making huge gains from December to late January before getting wobbly and forcing myself into a taper. There's no telling what the future holds, but for now I'm extremely satisified with my results.

Wednesday, February 21, 2024

Monstercross '24 - My Annual Blog Post

 This year was the 13th running of Monster Cross, and I've now officially participated in more than half of them! I had a whole great big long intro planned for this post, but then I re-read last year's post and tbh it was gonna be pretty similar, so let's lay out the season-to-date.

Just like in 2023's race, I hadn't done any racing since the 2nd Sorry Honey CX race in mid-September. Weird coincidence that was at least driven by weather this time, and not a months-long recovery from injury. But my fall season, while full of rides, was not an effective training season. It was just a mix of MTB rides, which I've really started to enjoy by finally having a good bike (more on that later?), and trainer rides. I finally realized, after 3 years of struggling with chilblains, that my feel cannot tolerate cold road rides.

But on December 1 I did the first of several Zwift fondos and decided to kick my training back into purpose. With a focus on volume and Z2, I pushed my hours up to ~12/week and held there thru early February.

Along the way, I learned about W' and added it to my data screens when dual-recording Zwift rides, and when I did push to big watts it became invaluable in knowing when to push on and when to conserve. Seriously: learn about W'. It's an absolute game-changer for racing, and I have a power meter coming for my mountain bike so I can be more precise with my efforts there, too.

Then came the annual New Year's Day not-a-race, which gave me my first opportunity to see if my training had paid off, and I've never felt fresher after ~80 miles, even if my feet were out of commission for a week afterward.

The Tour de Zwift further sharpened the stick, but I started running the risk of not training to 3 hours consistently.

The last piece of the puzzle for me was having spent very little time on the gravel/cx bike since September. The new mountain bike is *SO MUCH BETTER* than the old one that I really prefer it to riding gravel. So I forced myself to make weekend jaunts to Pocahontas State Park and put in hot laps. Since part of the official course is only open on race day, most folks either opt for a "training course" lap that starts & stops in the main lot, or the Monsterkarst Strava segment, which covers the same ground but starts at a more convenient trail hub.

Monsterkarst became my gold standard, and 1 week before race day I put in a lap that is currently 4th overall on the segment, over a minute faster than my previous best from the year before. I guess that meant I was ready.

So with aero skis on my CX bike, a power meter and W', 50 hours of volume in January alone, and a forcibly-imposed taper, I felt as prepped as I could be for a COLD day on the bike.

And it was cold. The warmup was the coldest riding I've done in months, with 2 jackets and pants over my tights. I kept all of that on until the last possible moment, and then by an absolute confluence of luck found myself at the start line right as folks were starting to assemble.

10 minutes of standing around later, and a shuffle forward that saw me pushed back to about the 6th row, and we were off! Last year I did not grid well, and while my position was far better this year, it was still going to be work to get to the front.

Just like last year, the leaders pounced from the gun, and even where I was--maybe 50th--there were already dudes gumming up the works by 1 mile into the race.


You can see it right there in the first chart: 30s Power. A big saggy dip from 0:02 - 0:04. And just like last year, that meant jumping through traffic and bridging repeatedly for the next several miles. Each peak on that chart represents catching one group and jumping to the next, and each time you can see the W' balance dropping on the bottom chart: I was burning matches quickly. But I was also VERY close to the front--by the time we turned onto the trail paralleling Beach Rd they were no more than 50' ahead.

But the surges kept taking me to groups that were getting dropped--nobody else was moving forward. So coming through that last turn I was really hopeful to have made it, but the 3 guys I caught were, predictably, getting shunted off the back. So I watched the leaders ride away and focused on recovering. We were still moving pretty well, and nobody was catching from behind, and maybe most importantly, we were picking off others who were either dropped or had mechanicals.

Also as with last year, the aero bars come with the curse of expectation: nobody wants to work when you could just get aero and do it all. I was doing a whole lot of work, along Beach Rd, down thru & up from the dam, and onto the road section, until an e-bike came rolling through and picked up the mantle. We held his wheel thru the first 2-way zone and up toward the road crossing toward the campsites until his chain dropped, and then the 4 of us were alone again through the entire north side of the course.

We came through start/finish in under 1:27:00, making it just possible that I might achieve the goal that had eluded me since 2017: a sub 3-hour finish!

I'd managed an extremely lucky parking spot where I could leave a bottle on my bike rack without exiting the course, and at the beginning of lap 2 I stopped just long enough to swap bottles. Two of the riders in our group rode on, but backed off enough that a quick trip to the skis brought them back before we even left the pavement. A pair of other riders caught us up soon after, and then an extremely fast racer dragged us for a mile or so before we gave up chasing him.

But once he was gone, it was back to being glued to the front.

Every stinking year I do other people's work sitting out there in the wind, but I also really wanted that 3-hour finish, so I didn't waste any time waiting for folks to decide to work.

The 2nd lap run along Beach Rd I don't think I came off the front once. But I also didn't really vary my effort and focused on recovering W' balance for the dam & north side.

We lost a rider along the way, possibly at the dam climb, but then Sneaky Dave caught us up on his rigid mountain bike, and at least there was a small amount of rotation on the road section.

As Sneaky Dave is 60, I'm in my late 40's, and our 3rd was a junior, I strongly suggested that we just work together and keep things smooth. They seemed to be willing...so long as I was on the front. I'm really not exaggerating when I say I was probably on the front for 20 miles of that lap. Fully 80%.

But at least they weren't attacking, and while I didn't feel great, I wasn't cramping. I was remembering to drink. I had forced myself to eat when I didn't want to. Cramps have undone my race several times, and I wasn't having it this time.

We got back to the north side and caught a small cadre of riders at about 43 miles. Our group of 3 briefly became a group of 7, and then the junior attacked. Literally no reason to do so: nobody in our group was racing him, and there could not possibly have been more than 15-20 riders ahead, and by this point there was no possibility of catching the front group. No point. Sneaky Dave and I both cried foul, but I dutifully got on the skis and limited his damage to ~10 seconds and held him there until the Monsterkarst trail hub, where he inexplicably tried to make a wrong turn and came to a full stop. MAYBE NEXT TIME DON'T ATTACK THE GROUP.

We bombed down the final trails as a group, and Sneaky Dave put in a big dig at the final walking trail, and I was happy to let him (and the junior) go. I had just about a mile left to go, and if I just focused I could barely cover that ground before the 3-hour mark.

I dismounted for the final creek crossing because I'm horrible at it, but unlike last year or the year before, I was actually able to get back on the bike and pedal. Final climb, final rooty dangerous descent, and there was the bridge. The Garmin showed 2:58.

I made my way to the foot of the paved dock climb and just put everything i had into the pedals, crossing the line at 2:58:28 on the official timing clock. Somehow the 2nd lap was only 5 minutes slower than the first.

I'd done it! On the 7th try, and having done roughly 60% of the race in the wind on the skis, I finally cracked my goal of 3 hours. And also unlike last year, I was actually able to get off the bike afterward.

No cramps, food consumed, only just over a bottle of water in me. I've never felt as good after this race. It took a few minutes to figure out how to walk, but that was it. I didn't even need a nap when I got home. I guess all that volume and Z2 training paid off!

As an added bonus, I got hardware! Last year I brought home a 5th place medal in Men 40+, and this year I brought home the 4th place medal. Weirdly, the online results show that I actually got 4th last year, and 5th this year, but either way I have the correct medals, so it evens out.