12 MLR

Century 99

Everything was set. My fitness had returned following the foot problems that plagued me in May. I’d gotten permission from my better half to take the car. I was all set for my first organized, outdoor century ride since October 2019: the Akron Bicycle Club’s Absolutely Beautiful Century. The only variable left was the weather…

And sadly, the weather steadfastly refused to cooperate, ominous enough to persuade me to skip the two-hour drive into neighboring Ohio. As one of only two or three organized centuries that are taking place this year, I'd been really looking forward to it. Even if it was the right decision — over two inches of rain fell on the route — it was a huge disappointment.

Sunrise on the Monongahela

Sunrise on the Monongahela

I was still eager and ready to complete my first outdoor century of the year, so I simply waited a few days. Once better conditions prevailed, Thursday morning I set out on a solo ride up to Butler and back that I’d done two years ago, back in August of 2019.

I climbed out of bed at 4:20am — thanks to summertime’s early sunrise — and took time for a relaxed breakfast. Knowing that it was going to be a sticky and very sweaty day, I braided my annoyingly long Covid hair in order to keep it under control. Then I set out at 6:20am, catching the last portion of sunrise on my way down across the Monongahela and up the Great Allegheny Passage bike path back into town. I appeared to have achieved my goal of beating commuter traffic out of the city.

Over the preceding week, I’d suffered a couple recurring flat tires, so I was extra paranoid about how the bike felt underneath me. And sure enough, nine miles into the ride — just as I was about to come back across the river, my rear tire went soft. Fortunately, I wasn’t far from the Golden Triangle bike rental, and used their presta pump to give me enough tire pressure to make my way back home to effect repairs. I was fortunate to have begun with a short loop near home, rather than immediately heading out of town.

I took half an hour to find the puncture and replace the tube before heading out a second time. And then quickly backtracking to pick up the heart rate monitor strap that I’d forgotten. I was nearly two hours into my century ride, but had only covered 15 miles, and now I’d have to contend with the commuter traffic I’d gotten up so early to avoid. It wasn’t an auspicious start.

I cut straight across town and crossed the Allegheny via the 62nd Street Bridge. The next hour was spent traveling along the river on Freeport Road, which has a fair amount of high-speed traffic, but is blessedly flat: a rarity in Pittsburgh. But as is often the case, I probably went a little too hard trying to match traffic speed, and I would pay for that later.

My route took one of my favorite rides — climbing Days Run and Sun Mine Road almost to Saxonburg, then back down to Harmar via Brewer Road and Little Deer Creek — and extended it a dozen miles, past Saxonburg to Butler. That meant 30 miles of non-stop rolling hills: a sure recipe for exhausting your legs. By the time I pulled into the Sheetz convenience store in Butler at mile 58, I was feeling pretty used up.

It didn’t get any better once I turned around for home. A breeze provided a little cooling, but also slowed my progress even more. I started taking brief roadside rest stops after reaching Culmerville at mile 73, eager for the ride to be over. But another 30 miles lay before me, punctuated by a half-dozen intimidating hills.

Ten miles later I pulled into the Sheetz in Harmar to replenish and rest. From there I could return to town on the nice, flat expanse of Freeport Road, but I needed a little more mileage, and had planned to return by my usual (but much more challenging) route climbing Guys Run and Old Mill, and descending on Squaw Run. Knowing it would be an epic trial, that’s what I set out to do.

From that point onward I was simply in survival mode, just trying to keep the pedals ticking over as the miles crawled by. After another ad hoc rest, I dragged myself over the 62nd Street Bridge, up One Wild Place, and Beechwood, finally limping into our driveway with 104 miles on the clock.

Of note, this was my first outdoor century since the Leelanau Harvest Tour back in September of 2019: just shy of two full years! It was also only my second century of the year, the other being completed on my indoor trainer in Zwift back in March.

Even more significantly, as far as I can tell from my early records, this was my 99th ride of greater than 100 miles since getting back into cycling as an adult back in 2000.

And of course, this was also part of my training up for my remote Pan-Mass Challenge charity ride, which is just three weeks away, and which will comprise my 100th century+ ride.

If you have not already sponsored me, I’d love to count you as one of my sponsors. Please make a donation here.

12 MLR

Gimme a Regular

It really wasn’t anything special, just the regular 25-mile “Team Decaf” Tuesday night group ride out of Highland Park.

At the same time, it was a rare and special event, for several reasons.

Beginning with the most mundane of those reasons: it was the first Team Decaf ride of the year. That’s normally a chance to catch up with riding buddies I haven’t seen all winter long, and perhaps test one’s legs to determine one’s current position in the hierarchy of speed. The first group ride always has a bit of a “reunion” feel to it.

First post-Covid Team Decaf group ride

First post-Covid Team Decaf group ride

Sunrise on the castle climb in Zwift's new Japan-themed world

Sunrise on the castle climb in Zwift's new Japan-themed world

But never mind this year, this was their first group ride in more than 1½ years, as they've been on hiatus since October 2019 due to the Covid-19 pandemic. After such a long break, getting back together felt like an extremely special occasion.

For me, this also (hopefully) marks my return to outdoor riding. I actually did a couple outdoor rides back in March, but Zwift’s Tour of Watopia and my mission to reach Level 50 kept me on the indoor trainer through the end of April. With those out of the way and a new all-time record fitness level, I was all set to rediscover the hilly roads of Allegheny County as the calendar ticked over to May...

I started the month with a couple outdoor rides, only to be sidelined with a bad case of achilles tendonitis. Between my injury and additional downtime around my Covid-19 vaccinations, May was a near-complete write-off. The only things that got me on the bike (gingerly!) were the final PMC group rides of the season on Zwift, and Zwift’s release of a new Japan-themed virtual world (which I must admit is pretty cool). Meantime, my fitness absolutely plummeted. That’s what happens when you cut your training down from 200 miles per week to less than 50.

However, I’m now fully vaccinated, which means this was also my first time riding with any other people in more than 18 months. During the pandemic lockdown, I rode 7,700 miles; only 1,250 of them were outdoor, and all of those were solo.

So with all those milestones, yesterday’s group ride was memorable and even a little emotional. Enough so that I felt inclined to actually smile and photobomb. My ankle felt reasonably good, although there’s enough pain — both on and off the bike — to constantly remind me that I’m not 100 percent, or even 90 percent.

The next question is what will the summer of 2021 riding season look like?

The first order of business is getting my achilles fully healed and ramping my mileage back up. That might take quite a while, both because tendonitis is a long-term injury, and it is aggravated by overuse. So returning to long endurance rides is going to be a slow process.

I don’t know when I’ll be able to return to full century rides, which has implications for my goals for this year. I’d like to hit the Akron Bicycle Club’s century in July, do some kind of “reimagined” Pan-Mass Challenge ride in August, and either the Epic Tour in Toronto or the PMTCC’s three-state century in mid-September. And I’m eager to get my milestone 100th century ride under my belt, whatever that winds up being. But there’s no way to know when — or whether — any of that will happen.

In the short term, it’ll be a bunch of short rides, probably sprinkled amongst lots of recovery days. And putting some time into my PMC fundraising, as well. That’s really all I can do until I’m injury-free and back to full fitness.

It looks like my return to normalcy following the Covid-19 pandemic will be a very slow, gradual one.

11 PMC Riding

The Final Boss

For the past 2½ years, Zwift has done a great job motivating me to ride the indoor trainer. While the social aspect has been rewarding, one of my biggest motivators has been chasing in-game achievements: what the industry terms “gamification”.

But a problem arises when users have been around long enough to check off every achievement, and I started reaching that point about a year ago. At the pandemic’s onset, I was already sitting at Level 37, and there were only two interesting things left for me to unlock: a Mondrian-themed in-game jersey at Level 42, and an excellent time trial bike and wheelset at Level 45.

Zwift Level 50 banner

The long-awaited Level 50 achievement!

Tour of Watopia archway

Riding thru the Tour of Watopia archway

The Level 50 rider kit

Sporting my new Level 50 rider kit

List of Tour of Watopia stages ridden

List of Tour of Watopia stages ridden

Zwift rider profile page statistics
Zwift experience points gauge
Record fitness (CTL) gauge

After that, the only achievement left to chase was getting to Level 50: the highest experience level in the game. Higher levels require more XP to advance — and commensurately more time — so I could only level up once every 5 to 10 weeks. So at that point, I knew I was still more than year away from Level 50.

With Level 50 being so far away, my biggest question was whether I could get there before Zwift decided to introduce more experience levels. Shortly after I had begun Zwifting, they increased the top level from Level 25 to 50, and 18 months later it seemed kind of inevitable that they’d add more levels soon. So reaching Level 50 before they moved the goalpost felt like a race against time.

For a while, I followed a not-widely-known strategy to earn 25% more XP than usual. By riding a time trial bike, I was given a +10 XP bonus instead of a power-up each time I passed a banner kite on the road.

On top of that, a recent update introduced a new shortcut between the 360 Bridge and the JWB Bridge, which created a small two-kilometer loop around the Italian village. That became the new shortest route between banner kites, allowing a rider on a TT bike to earn 50 XP every 2 KM, rather than the usual 40 XP. That may not sound significant, but when every level requires 20,000 XP, that 25% bonus will save over 120 miles of riding per level! So even though countless little 2 KM circuits got pretty tedious, I eagerly exploited that advantage.

But this past month was even more productive than that... and commensurately more tiring. Zwift’s Tour of Watopia, which always offers an irresistible double XP on every ride, ran from March 29 to April 29. So instead of 20 or even my crafty 25 XP, all “ToW” rides earned a bloated 40 XP per kilometer! It was the ideal opportunity to finish off my quest to reach Level 50.

In the end, I rode 28 out of the tour’s 32 days, only taking one day off due to an emergency room visit for heart palpitations; a two-day break for a followup visit to my doctor and my first Covid shot; and a rest day to celebrate after I hit Level 50.

Although the Tour of Watopia is usually comprised of 5-7 stages, back in 2019 I rode multiple times — 23 stages, in total! — to quickly leap from Level 20 to 26; and last year I managed 16 stages, advancing from Level 35 to 37. But this year I completed a record-shattering 42 stages! That was just enough to earn the 50,000 experience points I needed to tick off my final 2½ levels.

For the record, that was one ride of Stages 1B, 2A, and 5B; twice each for Stage 4A and 5A; three rides of Stage 3A and 4B; Stage 3B (Ocean Lava Cliffside Loop) four times; Stage 2B (Volcano Climb) six times; and Stage 1A (Magnificent 8) a whopping 19 times!

I tripped 500,000 XP on April 27th. After more than a year of working on that goal, I had finally reached Level 50: the non plus ultra of Zwifting. I’d been Zwifting for 2.4 years, and had racked up 11,000 miles over 610 hours of indoor riding, burning 306,000 kcalories (about 90 pounds of body weight), or 1,075 pizza slices according to Zwift). That also included 616,000 feet of ascending, and twelve indoor “Zenturies” plus one 7½-hour 200k ride.

Never let it be said I lack determination, fortitude, or self-discipline.

From this point forward, the orange UI progress bar that shows how far I am through the current level becomes a worthless, unmoving waste of screen real estate. Amusingly, just last week Zwift introduced the ability to hide all UI display components except the riders and the landscape of Zwift’s worlds; I’ll probably make use of that, rather than let myself be discouraged by a perpetually unchanging grey progress bar!

It’s nice that the Tour of Watopia — with its double XP bonus as a motivator — takes place in early spring, when I’m topping up my fitness before transitioning to outdoor riding. After a strong indoor training season that included this year’s Tour de Zwift and Haute Route Watopia events, on the seventh day of the Tour of Watopia I surpassed my previous lifetime fitness record of 98.18 CTL, set last year.

Two weeks later, on my 30th ToW stage, I finally surpassed a CTL of 100, and maxed out at a new record 103.97 a week later, on my Level 50 ride. While a fitness value over 100 doesn’t have any special meaning — other than forcing me to change the scale on all my fitness tracking charts! — it’s still a big, round number that I’d never attained before, and thus worth celebrating. For me, it’s perhaps even more meaningful than reaching Level 50.

There’s a ton of satisfaction in achieving these milestones, but there’s also happiness and relief that all the extra effort and focus of the past year — and especially this past month’s Tour of Watopia — is over!

And more importantly, it’s well past time for my outdoor riding season to begin. I’m sure I’ll be very thankful for the fitness I built up as a result of all this Zwift-inspired off-season training.

After spending so many hours on the indoor trainer getting to Level 50, it feels strange not to be working toward any Zwift achievements. Will I still have the same desire and motivation to ride Zwift when there’s nothing particular to ride for?

With the outdoor season upon us, I happily won’t need to worry about that until next winter. And I still expect Zwift to release another set of advanced levels any day now. My top-level status will have to be reasserted whenever Zwift decides to expand the parameters of the game. After all, it’s in their interest (as well as my own) that they continue to offer new carrots for experienced riders like me to chase.

And I expect they’ll provide me with an opportunity to do that very soon, because rumors have recently resurfaced about Zwift unveiling an Olympics-related Japan course. That could be absolutely stunning, and trigger another series of rides to reassert my longstanding “route hero” status.

But in the meantime, I’m finally taking my partially-vaccinated body and my hard-won fitness outside to enjoy some long, warm summer rides!

07 PMC Riding

Zentury 2021

My first Zentury of 2021 is done. First that, then an update on 2021 so far, and prognosis for the summer.

This was a duplicate of my first ever Zentury, in April 2019: doing a Zwift gran fondo event (100k), then extending that with four laps of (essentially) the Volcano Flat route, finishing at 170km. With this being the final ride in the five-episode Winter 2020-2021 fondo series, I figured it was time to go long.

Temporary friendships

I managed to hang with a couple ad hoc friends for the first 20 miles, but unceremoniously dropped one who didn’t bother switching to a mountain bike for the jungle loop. Then I lost my other friend around Mile 45, when I stopped for a 15-minute stretch and burrito break.

Because this fondo was run in multiple categories and at multiple times over two days, there were only 100 riders in my group, so I was alone on the road much of the time. No one else I knew was on the ride, and the Herd, PMC, Team Kermit, and Western PA Wheelmen Discord audio chats were all empty. That made for a really tedious ride.

Somehow I didn’t realize the obvious: that the first century of the year would be really hard, especially the last 20 miles. I had to stop for another 5-minute rest break, and limped home to the accompaniment of my music collection. It was a really long, hard, solo slog.

I finished 170km with 5,000 feet of climbing in 5h44m, exactly five minutes slower than my 2019 ride, although in 2019 I didn’t take any breaks off the bike. My weighted average power was 180W, which is 16W greater than 2019.

Overall I guess I’m happy with it, although I suffered a lot more than I expected. It’s also my 98th century-plus ride, putting me closer to that magical 100th 100+ ride. And the extra 3,450 XP also gives me a big head start on my way to Zwift Level 48 (more on those below).

Now let me segue to an overview of my 2021 training to date.

Exploring new roads

Exploring new roads

Mon Wharf

Ornoth at Mon Wharf

On the indoor side, it’s been a typical Zwifty winter, with a balance of new features, familiar events, and achievement chasing. In addition to the aforementioned five-ride fondo series, annual events included the 8-stage Tour de Zwift and 3-stage Haute Route. New features included the rollout of “robotic” pace partner rides, acquiring the newly-minted Herd club in-game kit, trying my first individual time trial ride, and the rollout of a couple small but strategic connector roads in Zwift’s imaginary Watopia world. The latter prompted a brief chase to try the four new routes that accompanied the new roads, to reassert my “Route Hero” status. But my focus has been working from Level 43 to 47, ever-closer to Level 50, the current maximum.

Outdoor riding has started slowly. On a couple consecutive days in the 60s, I got two rides totaling 70 miles in, but picked up a tiny staple that flatted my front tire overnight. My biggest problem has been that the pandemic has made parts ridiculously scarce, precisely at a time when I need to replace both my rear wheel and chainrings / crankset. For now I can limp along, but soon I’ll need to address the problem, which probably means swapping out both my wheels and entire drivetrain.

In terms of fitness, it’s been a steady, predictable progression from a CTL around 55 at year-end to 95 following yesterday's Zentury. It’s been a little better paced than last year, when my CTL peaked at 98 in January before tailing off!

Looking forward toward spring and summer, Zwift is running the Tour of Watopia throughout April. With double XP for every ride, you know I’m going to be hitting that hard, which will artificially reduce my outdoor riding. That’ll probably continue to elevate my CTL before I dial it back a bit and enjoy some time outdoors in May, while still putting time into my quest for Level 50 inside.

The prognosis for a summer of outdoor rides is mixed. On one hand, Covid vaccinations have been rolling out quickly, and I hope to get mine before too long. Once vaccinated, I’ll have less fear about stopping to refuel during long rides at convenience stores. Plus most major rides have scheduled dates, with surprisingly few exceptions.

On the other hand, most of those events have dialed back their scale, in terms of length, duration, number of participants, and/or amount of rider support. Some are taking a “Here’s a route map; you’re on your own” approach, some two-day rides are now one-days, and century-plus rides have downsized to piddling 100ks. So it really remains to be seen how many outdoor events — especially organized century rides — I’ll be able to accrue. Still, I’ll hopefully be able to do a few solo centuries, as well as simulated ones back on the trainer.

The remaining big questions are what I’ll do for my hundredth century, and whether I’ll do another “reimagined” Pan-Mass Challenge this year. I should spend some time thinking about those while I’m stuck on the trainer next month, chasing that elusive Level 50 jersey...

12 MLR

Watts Up, Doc?

One of the most popular ways of measuring a cyclist's performance on flat terrain is functional threshold power, and Zwift provides riders with three different FTP tests. My FTP is generally around 210-230 watts.

But for those of us who aren’t afraid of hills, the best measure of climbing performance is one's time to climb the Alpe du Zwift, the virtual equivalent of France’s famous Alpe d’Huez. There’s even a highly sought-after “Liftoff” achievement badge for doing the 7.6-mile 3,400-foot climb in under an hour.

While I haven’t been able to break that barrier, I have done 30 ascents, which is enough data for me to draw some inferences. Since my average power on those attempts has varied from 162 to 234 watts, my times have also ranged from from 88 minutes to just under 63 minutes.

Now things start getting really geeky. You have been warned.

You would expect that if I plunked those numbers down on a scatter chart, there’d be a clear relationship between average power and time. And that’s exactly what I found. Then I added a statistical trendline, which matched my data points shockingly well (an r-square of 0.98 for the statisticians in the audience).

Now here’s where it starts getting interesting. Using that line, for any given average power, we can predict — with near-perfect precision — how long the climb would take me. Specifically, my (slightly simplified) equation is:

minutes = (watts - 400) / -2.76

So putting out 200W, I would finish in 73:13. At 220W, I would finish about seven minutes faster, at 65:58. And in fact we see clusters of past results right around those points.

Whether you use the equation or eyeball the trendline, that calculation also works in reverse, starting with a finish time and seeing what power you’d need to hold. So in order to earn the Liftoff badge by doing the ascent within 60 minutes, I would need to maintain an average power of 236.5 watts for an hour.

This does ignore the second variable that determines one’s ascending speed: weight. Conveniently, my weight doesn’t fluctuate much at all, so I can safely ignore it. But someone else with a different weight would have a somewhat different equation.

That’s why climbers focus on power over weight rather than raw power. Their preferred metric is watts per kilogram, or W/kg. If I re-did this chart using W/kg, it should be an even closer fit.

Among riders chasing the Liftoff badge there’s a common shared belief that you have to maintain 3.1 W/kg in order to climb the Alpe in less than an hour. Now we can put that idea to the mathematical test.

My equation says I would need to put out 236.5W. In order for that to equate to 3.1 W/kg, I would have to weigh 76.3kg. Lo and behold, that’s smack in the middle of my normal weight range, and within two pounds of my current weight. So that validates both my trendline equation as well as the common rumor.

To repeat: to climb the Alpe in an hour at my current weight, I’d have to produce 236W. However, my maximum sustainable power has stayed firmly in the 210-230W range. Alternately, rather than increasing my power output I could lose weight and still hit 3.1 W/kg. At 230W, I would have to get down to 164 pounds, which is pretty extreme for me.

After 30 attempts — and approaching 60 years of age — I won’t be disappointed if I never earn that Liftoff badge. But I enjoy analyzing my performances over time and finding the patterns of consistency that underlie them.

12 MLR

2020: Outdoors is Lava!

What a year it was... or wasn’t, actually. What can I say about the 2020 cycling experience?

Having begun the year with lots of indoor training, in January I achieved a new all-time record level of fitness.

But it was all downhill from there. Before the spring outdoor season began, the outbreak of the worldwide Covid-19 pandemic caused the cancellation of all group rides and every major event on the calendar. On top of that, I kept my solo rides short to avoid risky convenience store replenishment stops. In terms of outdoor riding, 2020 was a complete and utter write-off, as I logged a 20-year low 1,140 outdoor miles.

Modeling the 2020 Pan-Mass Challenge jersey on the Grandview Overlook above downtown Pittsburgh

Modeling the 2020 Pan-Mass Challenge jersey on the Grandview Overlook above downtown Pittsburgh

Autumn on the Mon Wharf with R2-Di2

Autumn on the Mon Wharf with R2-Di2

Honoring Paris-Roubaix with 22 secteurs of Pittsburgh pavé, including Climax Street

Honoring Paris-Roubaix with 22 secteurs of Pittsburgh pavé, including Climax Street

Flew my BikeMS kit on my virtual Escape to the Lake

Flew my BikeMS kit on my virtual Escape to the Lake

At the front of the line for the first-ever PMC weekend virtual ride on Zwift

At the front of the line for the first-ever PMC weekend virtual ride on Zwift

In contrast, my investment (back in 2018) in a new smart trainer and the Zwift indoor training platform proved prescient and timely. Over 80 percent of my 2020 cycling happened indoors, as I rode simulated versions of all my usual summer events. I even completed my 15th Pan-Mass Challenge (virtually) when this year’s real-world ride was called off. Needless to say, my 4,903 miles on the trainer was a new record.

Combining indoor and outdoor riding gave me an annual total of 6,043 miles in the saddle, only 513 miles less than I rode in 2019. I consider that quite respectable, given the extraordinary circumstances.

Let’s hope 2021 sees the pandemic situation improve.

My Original 2020 Goals

After a superlative 2019, I didn’t have a ton of specific goals coming into the 2020 season, which was a good thing, because I never would have lived up to them! But I did have some general expectations. Let’s see how each of those turned out...

“I don’t really expect to surpass my 2019 season”

The Covid-19 lockdown put an early end to any pretense that 2020 would be a good — or even normal — year. I didn’t do any major events or even a single group ride all year, and only one outdoor ride that was over 40 miles.

The only way I surpassed 2019 was in time spent on the indoor trainer, completing eleven Zenturies (indoor rides over 100 miles). But that’s not how I’d envision a successful year.

“I’ll certainly continue Zwifting”

I’m not going to enumerate all this year’s Zwift achievements, but there are a handful worth calling out. I completed every one of Zwift’s many routes in January, along the way earning the “Masochist” badge for completing my 25th Alpe du Zwift ascent. But to retain that “route hero” status, I had to subsequently complete two more sets of routes when Zwift released expansions for Paris/France and Watopia. I also took three series of FTP tests, registering 215/215/196W in the 20-minute tests; unlocked the new in-game version of the Herd team jersey; and I ended the year at experience level 44 (out of 50).

I also wrote a useful program for myself to automatically open a full-screen display of any “photos” I took while in-game. That way I didn’t have to wait until the end of the ride to see how they came out, nor did I have to fiddle with the laptop to open them myself.

The Herd’s Epic Tour in Toronto

Another big disappointment was the cancellation of a planned September trip to Canada to do a (nominally) epic ride and meet up with online friends from the Zwifting club The Herd. I never even received the (personalized!) ride jersey I ordered.


As always, my two fitness charts really put the year’s efforts into perspective.

Cycling Fitness: 2011-2020

This chart shows my fitness trend over the past ten years, with peaks in the summer and troughs in the winter. Looking at 2020 in this context, the major themes I’d like to call out are:

  • My fitness peaked incredibly early in the year (January 26th).
  • I set a new all-time record fitness level (98.18).
  • After coming off that peak, I spent most of the summer at a moderate fitness level (around 65) before taking it easy at the end of the year.

If we set aside comparisons to 2019, I had a surprisingly good year from a fitness standpoint; despite the pandemic, it doesn’t look grossly different from any normal year. And looking forward, I’m in a decent position to make the most of whatever 2021 offers.

Cycling Fitness: 2020 Calendar Year (vs. average)

This second chart shows my 2020 fitness in detail, including my eleven Zentury rides (the green circles).

Note my record fitness peak in January, and how much fitter I was than my long-term average (the grey line) all spring long. Despite that, I did gradually lose fitness through the spring, with it slowly falling to match my long-term average at the start of summer in late June.

Similar to most normal years, my summer featured a familiar shark-tooth pattern that comes from periods of alternating rest and recovery with big hundred-mile rides… It’s just that they all took place indoors this year, rather than outside.

A late September interruption caused my fitness to start falling off, when both my heart rate monitor and the laptop computer I ran Zwift on failed and needed to be replaced. At that point, I reconsidered my goals, and decided to abort my last two century ride simulations and start my off-season a little early. Taking some time to relax, my fitness gradually fell to an annual low of 43.53 on December 7th before I started ramping back up again. Looking forward hopefully toward 2021, I finished the year well ahead of my typical level of fitness.

Waving to imaginary crowds as I arrived at a virtual Provincetown to complete my two-day PMC Zwift ride

Waving to imaginary crowds as I arrived at a virtual Provincetown to complete my two-day PMC Zwift ride

Taking my laps on the Champs-Elysees in Zwift's new Paris/France expansion

Taking my laps on the Champs-Elysees in Zwift's new Paris/France expansion

Enjoying the French countryside, with Mont Saint-Michel as backdrop

Enjoying the French countryside, with Mont Saint-Michel as backdrop

Giving the crowd a sprint to cheer for in Zwift's Crit City expansion

Giving the crowd a sprint to cheer for in Zwift's Crit City expansion

Exploring Zwift's pretty new sylvan cliffside road

Exploring Zwift's pretty new sylvan cliffside road

In group rides, I swear sometimes it feels like I'm the only one who knows how to ride properly...

In group rides, I swear sometimes it feels like I'm the only one who knows how to ride properly...

A rare outdoor ride: autumn at McCahill Park in Fox Chapel

A rare outdoor ride: autumn at McCahill Park in Fox Chapel

Sprinting for the line on Zwift's new Crit City course

Sprinting for the line on Zwift's new Crit City course

When in Italy...

When in Italy...

Looking back on downtown Pittsburgh from Herrs Island

Looking back on downtown Pittsburgh from Herrs Island

My 2020 Cycling Calendar

My 2020 Cycling Calendar

The Zenturies

For the first time since 2001, I didn’t do a single century ride.

But I did complete eleven indoor Zwift centuries, or “Zenturies”, simulating both the distance and amount of climbing found in my usual real-world rides.

How did I simulate them? I created a web page called The Zenturizer where I could input my preferred distance and climbing, and the site would determine the courses on Zwift that most closely matched my desired profile. It was a very handy time-saving tool, which anyone can use!

I had targeted thirteen Zenturies for 2020, but after completing eleven, I took a three-week break to replace both my heart rate monitor and my laptop. At that point I decided to end my season early and save those two extra centuries for springtime. More about that when I get to my 2021 goals!

Here’s the list of the eleven that I did complete:

  • Uber Pretzel Zentury (Feb 13) The penultimate course to ride in my quest to acquire the badges for completing every Zwift route.
  • PRL Full Zentury (Feb 20) Rode a very repetitive course all alone, but completed Zwift’s route badge challenge… for the time being!
  • Tour of Watopia Stage 1 Zentury (Mar 30) Did Zwift’s ToW Stage 1 three separate times in one day to accrue 100 total miles.
  • Pseudo Greenville 200k (Apr 19) My first time cobbling together a route on Zwift that simulated an actual outdoor ride, and at 125 miles my longest single ride of the year.
  • Pseudo Tour d’Essex County Zentury (May 25) Since May is devoid of big events in Pittsburgh, I simulated this Memorial Day ride I used to do back in Boston!
  • Pseudo Escape to the Lake Zentury (Jun 6 & 7) Simulated my annual MS Ride: usually the only two-day ride on my calendar.
  • Pseudo 3-State Zentury (Jun 28) Although this event was postponed and eventually run informally later in the year, I simulated it on its original planned date.
  • Pseudo ABC Zentury (Jul 12) Also informally run as an unsupported ride, I just did this Akron event virtually.
  • Pseudo Pan-Mass Challenge (Aug 1 & 2) Surprise! My 15th Pan-Mass Challenge ride to fight cancer! Participating in my signature event once more as a virtual rider was a treat!
  • Pseudo Mon Valley Century (Aug 18) This “annual” ride has only gone off two of the past five years. At least my Zwift simulation avoided the MVC’s curse!
  • Pseudo City Century (Sep 2) The local advocacy group pretended to sort-of run this unsupported, so that they could still collect money. Fed up with an organization that’s completely lost the plot, I was happy to do my own (free) substitute ride on Zwift.

Additional Highlights

After five years away from the event, reconnecting with the Pan-Mass Challenge was my biggest unexpected pleasure of the year. I was the first person to join the PMC club on Strava; I participated in prototype PMC meetups on Zwift that led to an official weekly series of PMC virtual group rides; I registered as a virtual PMC rider for the first time; and I simulated the entire two-day, 192-mile route indoors on PMC weekend. Along the way, I made a bunch of new friends, did a lot of reminiscing, earned my 15th PMC rider’s jersey, and added $3,000 to my lifetime fundraising for the Dana-Farber Cancer Institute, which now stands at $114,222. Here’s my full PMC ride report.

Although the year featured many other memorable Zwift rides, one of the unique ones was participating in a 2,000-person ride led by Watanabe Wataru, the mangaka who created Yowamushi Pedal, an extremely popular cycling manga and anime series.

I should also add that in October I marked the 20th anniversary of purchasing the Cycles Devinci hybrid that started me on the path to becoming a PMC rider and serious cyclist. It’s been a good — but extremely long — road!

Noteworthy Purchases

This wasn’t a great year for pimping my ride, but a few items do stand out as worth mentioning:

  • When my old laptop died, I replaced it with a new Macbook Pro, which improved my Zwifting experience by upping both my graphics quality and frame rate.
  • I bought a hydration pack, in hopes that it would enable me to do long rides without having to replenish fluids at convenience stores, but it just didn't keep drinks cold enough to be palatable.
  • I bought a new Wahoo heart rate monitor that produced unacceptably inaccurate data, so I got a warranty replacement unit. However, the second unit was also garbage, so I demanded a refund and bought myself a new Garmin HRM instead. But amusingly, a late-year firmware update seems to have fixed the Wahoo HRM’s problem, so I’ve held onto the one unit that they told me to keep rather than return!
  • I bought a collapsable selfie stick and fashioned a nice rubberized frame mount for it, making it much easier to get interesting photos during rides for my Strava and social media posts.
  • And I added the Wind & Rain app to my Garmin bike computer. The real-time weather data it provides would be really useful if I ever actually did any long outdoor rides...

List of Blogposts

It wasn’t the best year for blogging — how much can you write of interest about indoor rides? — but I still managed to get 16 stories written. Here‘s the full list:

Goals for 2021

Even after writing off the entire 2020 season, Covid-19 shows no signs of abating anytime soon, so I still have no idea what 2021 will look like. But everyone’s top goal for next year is obvious:


How about a return to normality? Being able to ride farther outdoors than I can manage on a single water bottle? Participating in group rides with other cyclists? Or even do some centuries and my typical big events? Right now, that sounds pretty aspirational and more than adequate.

My 100th Century+ Ride

As far as I can tell from my sketchy records from 2000-2005, I’m currently sitting on a lifetime total of 97 rides of 100 miles or greater. I’ll probably get in shape with a couple indoor Zenturies in the spring, then find some way to do a special 100th century outdoors. It’s probably the biggest thing I’m anticipating and a milestone well worth celebrating. Planning out a route will be a good wintertime activity...

Zwift Level 50

In about 3,575 trainer miles — which is currently estimated to happen around August 13 — I will hit Zwift’s highest XP level. There’s a nontrivial possibility that they’ll soon add more levels beyond 50, but that won’t dilute my satisfaction at reaching what’s currently the top of the chart.

Another Virtual PMC?

At this time, I have no idea whether 2021 will see me doing another virtual Pan-Mass Challenge or not, especially since my fundraising mojo has atrophied. But that’s another decision I’ll make as the season begins to take shape.

Toronto Epic Tour Redux?

It’s the same story for this ride. Since they deferred my paid 2020 registration until 2021, I’d certainly like to take advantage of the opportunity to ride, but whether it’ll happen or not remains unknowable.

And that’s all I’ve got to say about this pandemic-canceled 2020 season. As of the start of the new year, things are still looking quite iffy. But as the calendar turns over to 2021, I’m hopeful that some signs of normality will begin to appear in the coming months.

Hopefully I’ll see you out there!

07 PMC Riding

Nice Curves

Curvy, swooping roads: we all love ‘em. Whether you pilot a bicycle, motorcycle, or car, there’s nothing like the feeling of leaning into a tight corner.

A developer named Adam Franco likes them so much, he created an online map that highlights the world’s most curvy roads. Here’s what Pittsburgh looks like:

Thanks to our busy topography, we’ve got a good smattering of curvy roads, and locals will immediately recognize several of them in the above image. What’s interesting to me is that most of the roads I cycle on are highlighted. More on that in a second.

While one could take issue with the map’s methodology, I still found it fun to explore. And there's lots more to be found at Franco’s Curvature website, whether you’re interested in Pittsburgh, Boston, Maine, or anywhere else.

The indented bit that follows won’t be of interest to anyone outside this area, but I’m going to call out a whole list of Pittsburgh roads that are highlighted, going region by region.

In the central city, the eye is immediately drawn to the orange kink of Beechwood Blvd, one of the curviest roads on the map. That area also features Circuit and Overlook in Schenley, and Johnston Ave in Glen Hazel. Farther north, there’s Stanton Ave and the two loop roads around the Highland Park reservoir.

Farther east Brinton, Saltsburg Rd (380), and Lincoln Rd get called out.

The South Side is represented mainly by 18th St and Arlington, as well as Brownsville, Noblestown, and Chartiers.

The North Shore includes Brighton, Perrysville, Spring Garden, Mount Troy, Hoffman, Pittview, and the loop road inside Riverview Park.

Continuing up the west bank of the Allegheny you hit Middle, Saxonburg, and Dorseyville in Etna; Squaw Run, Fox Chapel, Field Club, then Gibsonia Road (910). Up toward Tarentum they include Days Run, Bakerstown, and Sun Mine.

Farther west in the Sewickley Hills there’s Little Sewickley Creek, Audubon, and Roosevelt, among others.

According to the map, the longest and curviest roads in the region are the artificial agglomerations of multiple roads that comprise Pittsburgh’s Green, Blue, Orange, Red Belts.

And one final note pertaining to roads...

In addition to tracking fastest efforts on a segment (KoMs) Strava recently introduced the concept of Local Legends, an award that goes to whomever has performed the most efforts on a particular segment over the past year.

So I’ve earned my first Local Legend award for a mere four reps on a segment going from Squirrel Hill to the Bud Harris cycling oval.

That’ll go just fine next to my only remaining Strava KoM, on an obscure, rarely-used 500-meter segment in the city.

12 MLR

Stand Down Margaret

Summer is behind us, and the 2020 cycling season (such as it was) is ending.

It’s still too early to close the books on 2020, but I can get you caught up on where things stand a couple weeks into Q4.

McCahill Park @ Squaw Run

My last post was my ride report from a September 2th indoor century: my eleventh Zwift “Zentury” of the year. At that point, I planned to simulate two more real-world centuries on the indoor trainer: the traditional autumn Pedal the Lakes ride up in Mercer County; and the Epic Tour, which was originally going to be an international gathering of Herd team members up in Toronto.

However, a week later, my eight year old MacBook Pro started acting up, necessitating its replacement, and postponing those two big indoor rides.

On the upside, my brand-new laptop bumped Zwift’s graphics quality up from “high” to “ultra”, and also increased its frame rate from 10-20 to 50-70 fps.

But the downside was that — due to Apple’s terrible hardware, software, and service — it took three weeks to get my new laptop up and running. That pause blew a hole in my Zwift-based event plan, while my training and fitness levels dropped.

Meanwhile, I reconsidered whether I wanted to do those rides this late in the season. After eleven century-plus rides in seven months, I’m happy taking a break and doing a few shorter rides outdoors, before dwindling sunlight and autumn temps take hold.

Stopping also makes sense for next year’s plan. You see, as far as I can tell from my records, I’ve completed 97 century-plus bike rides. By ending the season now, I can save two indoor Zenturies for next season's preparation, then do a celebratory outdoor 100th century in the spring. That sounds great to me!

So with no more big rides, I’ve been toodling around on short outdoor rides, enjoying the warm weather and my remaining cycling fitness. Like last year, October and November will comprise my “off-season”, before I go back to indoor trainer workouts in December and January.

Having completed only one outdoor ride longer than 40 miles, 2020 has been a very strange year, but not uneventful. Although many of my achievements have been virtual or simulated, I kept at it, and retained good fitness for my age, despite the ongoing Coronavirus lockdown.

Now it’s time to relax and reflect: putting words and images together for my end-of-year wrapup blogpo, and adding next year’s big rides onto my cycling calendar.

07 PMC Riding

Not Pedaling, Pittsburgh

This time last year, after riding Pittsburgh’s big populist city bike ride for the fourth time, I wrote: “With iffy support, poor route design, and a registration fee north of $75 that funds a cause I don’t agree with, I probably won’t do this ride again.”

My determination not to have anything to do with this ride was doubled when the organization behind it publicly declared their opposition to enforcing traffic laws that protect cyclists and pedestrians, which I ranted about in my preceding blogpo: “My Advocate: My Enemy”.

But none of my apprehension about the event would apply if I simply mimicked the route’s distance and climbing on my indoor trainer. So on Wednesday I saddled up to simulate another major event indoors.

Consulting my Zenturizer to find a course on Zwift that was comparable to Pittsburgh’s lumpy topography, I decided to ride ten laps of the 2015 Richmond UCI World Championship course. It would be a nice change of pace from my recent long rides in Watopia, and a chance to ride the renovated Richmond route in the reverse direction, which was introduced in a recent program update.

One benefit of events being cancelled is that I can ride on whatever day suits me, rather than being tethered to a specific date and time. I think it's more considerate to do my centuries on a weekday rather than a weekend, when other folks want to sleep in late. So rather than riding the event on the official weekend, I set out Wednesday morning at 10am.

Not many people ride the Richmond course in reverse, because it’s an event-only route unless you manually turn around, as I did. So I didn’t have anyone to draft off or compete with. Even though Richmond was one of Zwift's available options that day, by the end of my first 10-mile lap I was in possession of the combo jersey for logging the fastest sprint, the fastest hill climb, and the fastest overall lap!

For the next two laps, I jousted with a handful of other riders to try and keep all three jerseys, expending more energy than I should have in the first third of a century. But with two timed hillclimbs and two sprints in every lap, it did help pass the time.

But near the end of my third lap, Inna came in and interrupted me for about half an hour, which I took as an unplanned lunch break.

Climbing back on, I’d already lost two of my jerseys. The awards only last an hour before you have to re-capture them, which reminded me how stupid I was being by trying to retain them. For the rest of the day I didn’t attack the hills or sprint, only temporarily picking up a jersey when other riders’ times expired.

By the final third of the ride, I couldn’t contest for them anyway, as my reserves were depleted. It was all I could do to tack on a little extra climbing at the end to reach my simulation ride’s target.

I finished with 104.8 miles and 4,975 feet of climbing in 6h10m moving time—or 6h52m clock time including rest stops. Thus completeth my 11th Zentury of 2020.

11 PMC Riding

My Advocate: My Enemy

BikePGH — the local cycling advocacy group — does little that benefits me as a cyclist. But now they’ve done something so irresponsible and shortsighted that it has put all cyclists in much greater danger.

They’ve stopped asking police to enforce traffic laws that protect cyclists and pedestrians.

The Latest Cyclist Killed

You read that right. This organization that exists to represent and protect cyclists has publicly announced that they no longer care if the police enforce state and local laws that protect cyclists. In their own words: “Removing enforcement is our only conscionable path forward.”

Here’s their press release, entitled “ENFORCEMENT IS NO LONGER PART OF BIKEPGH’S STRATEGY FOR SAFER STREETS”. Go ahead and read it. I’ll wait...

I can’t even begin to describe how fucking stupid this is.

Pennsylvania already has a deadly enforcement problem. I’ve lived here for five years and I have never once seen a vehicle pulled over for a traffic violation. Police are even prohibited by law from using radar detectors!

If possible, it’s become even worse during the pandemic, because police would prefer to let all nonviolent crimes go, rather than stop someone and possibly breach social distancing guidelines.

And now one of the biggest cycling groups in the state is sending the message: “We’re politically anti-police, and want you to stop enforcing the law.” The average beat cop is gonna love hearing that!

After decades of minimal traffic enforcement, there’s already a longstanding culture here of aggressive driving, speeding, impaired driving, blatant disregard for traffic controls, and driving without a license. Those behaviors are even less restrained now, thanks to BikePGH’s dangerously irresponsible position.

I care about social inequality and Black lives, and I wholeheartedly support the demilitarization of the police. However, encouraging lawlessness on the roads does absolutely nothing to advance those causes. Asking the police to stop enforcing traffic law has only one consequence: harming cyclists and pedestrians.

There is no clearer way they could say it: BikePGH is willing and happy to see more cyclists killed and injured on Pennsylvania roads, if it might vaguely benefit a political cause that — no matter how laudable — has no relationship to cycling or BikePGH’s mandate.

Thank you BikePGH. You have made it very easy to resolve that you will never receive any time, money, or support from me. As an organization representing cyclists, you have violated our trust and abandoned all pretense of responsibility to your mission, to your dues-paying members, and to your community; and you have put every cyclist in this region in greater danger every day.