My spring race schedule was pretty demanding, with five 50M/100K runs in eight weeks: Marin Ultra Challenge 50M (March 12), a 54-mile “Birthday Run” (March 27), Lake Sonoma 50M (April 9), Canyons 100K (April 23), and Miwok 100K (May 7). In the grand scheme of things, this lineup wasn’t that tough: nothing like Dean Karnazes running 50 marathons in 50 days, the “marathon monks” of Mt. Hiei traversing a 30-mile trail every day for 1,000 days, the “Onion Slam,” or other insane challenges I could cite. By ultrarunning’s odd standards, I wasn’t attempting anything that hard.
But still. The above examples are so extreme that it’s clear what lies in store: a long process of breaking down. My own schedule was just forgiving enough — two weeks between each race — that I wasn’t sure how it would go. In the most optimistic scenario, two weeks would be enough not just to recover but also to reap the training benefits of the previous race. In this “building up” scenario, I’d start each race stronger than I’d been in the previous one, and my progress would look something like this:

In the less optimistic — but maybe more realistic — scenario, two weeks wouldn’t be enough to recover fully. In this “breaking down” scenario, I’d start each race weaker and more tired than I’d been in the previous one. If, for example, two weeks was enough for a 90 percent recovery, I’d begin the first race at 100 percent physical capacity, the second at 90 percent, the third at 81 percent, the fourth at 73 percent, and the fifth at 66 percent:

When talking with friends, I made the appropriate noises about not being sure how my body would hold up, how this would be a great training effort no matter what, etc. Like most males, however, I tend to overestimate myself, so I inwardly believed I’d build up. The first two runs bolstered my confidence: MUC felt good, and the Birthday Run two weeks later felt fine. It didn’t occur to me then that “fine” meant about 90 percent, or that this might not be a great sign.
Lake Sonoma 50M (April 9)
The day before Lake Sonoma, I started to worry about breaking down. Throughout the previous two weeks, I kept hoping another few days would bring a full recovery, until I no longer had a few days left. Lying in bed in the Cloverdale Super 8 the night before, I texted Megan: “I’m not super excited about running. I think I’m just still tired.” She assured me it would be fun and that I’d have a good time once I got started. I wasn’t so sure.
I felt less sure when I got up at 3:00am, having slept maybe three hours on and off. I’d had pretty good luck with sleeping before my last few races, but not this time. Oh well: could be worse. I drank an unhealthy amount of coffee, got myself together, and headed off to the race.
LS is a big, competitive race. Until 2021 it was a Golden Ticket race, promising the top two male and female finishers automatic entry into the Western States 100. This is no longer the case, but the race still draws a lot of fast people. For me, this makes it easier to tune out other runners and run my own race, since I’m not competing in any meaningful sense. My own race, I guessed, would be pretty slow. Aside from being tired going in, I had Canyons 100K only two weeks later and wanted to spare my legs for that. That said, I wasn’t sure exactly what “slow” meant. I ran this race in 8:40 in 2019, and that was an objectively bad race due to major GI problems. I felt less strong going in this year, but maybe I could pull off a comparable time if other things went well. So, I hoped for something between 8:30 and 9:00, but that was secondary to my main goal of running comfortably throughout.
Two other things about LS: it’s beautiful and hard. Even in a dry year like this one (and most of the last twenty), the hills around the lake are green in early April, and covered in wildflowers. Idyllic, if you don’t mind running 50 miles. The course is an out-and-back that skirts part of the lake, and while there are a few big hills, it’s mostly rolling. I used to think this would make Sonoma easier than races with big, sustained hills like MUC. However, I’ve come to believe that the constant up-down-up-down is actually harder on the legs. Long, sweeping downhills allow you to build up momentum and log some fast miles with little effort. In contrast, LS’s downhills often let you accelerate for only a few seconds before braking hard and running uphill again. Accelerate, brake, climb, repeat, again and again and again. Hence the race slogan, “Relentless.”

The first 2.4 miles are on a paved road: this allows the runners to spread out before hitting the single-track, where there is little room to pass. I ran the first two miles or so with Anya — a BRC acquaintance I’d run into at the start — before picking up the pace on a long downhill. I always like to start slow, but I was a little worried about getting trapped behind too many runners. Passing on the single-track really is hard, as the trail is on a steep hillside and often bordered with poison oak.
After entering the single-track at mile 2.4, I started wishing I’d run the road stretch faster. Once on the single-track, runners began sorting themselves into single-file groups of half a dozen or more. The speed of each group was dictated by the front runner’s pace, which on downhills was often painfully slow. I really hate being forced to run slowly on downhills, as I actually expend more energy braking than letting gravity do its thing. For the next ten miles, I alternated between patiently waiting for a passing opportunity, then surging by a column of runners when the chance arose. This is not my favorite kind of running, but fortunately the pack had thinned by the time I reached Warm Springs Creek around mile 12. In 2019 — though still a drought year — the creek had been high enough to warrant a rope line to help runners cross. No need for that this year: the water was only ankle-deep. I splashed across and continued past Warm Springs aid station.

After Warm Springs, the trail began to open up a bit. We got some good views of the lake, which was pretty but catastrophically low. I know I talk about the drought too much, but it looms over everything here. Old, dead and whitened trees poked up through the lake’s shallower parts: submerged long ago when the valley was flooded but once again seeing the light of day.


The single-track rolled along for some miles, alternating between open hills and forest, before eventually reaching an uphill fire road. Not long thereafter began the long, hard climb to the turnaround at No Name Flat aid station. On this uphill, around mile 22, I caught up with Megan’s friend Verity. We ran together and chatted for a bit: she was also doing Canyons and taking it easy today. I reached No Name ahead of her, but she left before me, as it took me awhile to refill my pack and flasks. I also got some ice to put in my hat, as it was pretty warm by then.
My cumulative time was 4:40 when I left No Name. If I maintained my pace, I’d finish in 9:20. I thought I might yet do negative splits, as there’s slightly less elevation gain on the return, but time would tell. After the long climb to the turnaround, it was nice to get an extended downhill, although I would have preferred a gentler grade. The descent was so steep that it forced me to brake, using energy to go slower. I passed Verity again around mile 30.

It was a relief to get back on the single-track. More pretty rolling, mile after mile. Although I was backtracking, I was struck by how different the course looked from the opposite direction. No view in particular jumped out at me — so I didn’t take a lot of pics — but it was uplifting to see so much green.
I refilled my flasks at Warm Springs, and filled my hat with ice. I might have overdone the ice, as my hat was now precariously perched on my head, and I had to hold it for a while so it wouldn’t fall off. But, it was nice to have ice-cold water melting on my head as I tackled the home stretch. Because that home stretch, though only 12 miles, felt pretty long. I was hiking more and more hills, albeit at a good pace, and abandoned my hope of negative splits. Still, I was glad to see that my legs were holding up ok after all my recent long runs. I was still running the flats and downhills well.

The last miles were hard but not tortuous. I was a little disappointed when I passed the 8:40 mark — my last time on this course — still some miles from the finish. But, I reminded myself that I had no real aspirations for today beyond getting in a good, solid run. The thought of relaxing with Megan at the finish pulled me along, and I managed to put in a good effort through those last miles. I finished in 9:36, glad to be done, and glad to get my bottle of Wilson winery’s zinfandel.

Canyons 100k (April 23)
In the two weeks between Lake Sonoma and Canyons, I started to wonder if I was up to this. I ran less and less between races but felt more and more tired. After MUC, I did half a dozen moderate runs and still felt good on my Birthday Run. After that, I did only four really easy runs but still felt tired at Sonoma. After Sonoma I decided not to run at all, hoping a complete rest would allow me to recover for Canyons. Would that be enough?
As the race approached, I didn’t know. I felt exhausted for almost a week after Sonoma, and even looked exhausted, with persistent dark circles under my eyes despite sleeping well. My body seemed to be telling me it had had enough. I felt normal enough the next week, but since I didn’t run, I had no idea how my legs were coming along. I’d have to find out on race day.
For those who aren’t familiar with Canyons, it’s a big and competitive race. It’s a Golden Ticket race, giving the first three male and female finishers entry into Western States. That’s always attracted a strong field, but this year Canyons became even more of a draw through its inclusion in the new UTMB World Series. UTMB (Ultra Trail du Mont Blanc) is arguably the world’s premier ultrarunning event, and as with Western States, you need to get past the lottery to get in. The World Series races offer everyone incentives on that score: non-elites get running “stones” (i.e., tickets) for the lottery, while elites can hope to win automatic entry. All of which meant that this year’s Canyons field was bigger — nearly 700 starters — and more talented than ever. Neither the size nor the quality of the field had much relevance to me, but the energy surrounding the race was palpable. This was a big event.
Canyons is also a pretty tough course, with around 15,000′ elevation gain in 100K. It starts in Auburn, in the Sierra foothills, and finishes in the mountains at China Wall, for a net elevation gain of almost 4000′. In between, it descends into and climbs out of the American River canyons multiple times. Both the descents and the ascents are steep and grueling: the downhills in particular take a toll on the legs. Last year’s race left my legs feeling trashed for two weeks. I’d trained more this year, however, so I hoped my legs would hold up better.


Megan and I spent Friday night at the Rodeway Inn, where we’ve stayed many times before. When you’re an ultrarunner based in Northern California, Auburn is hard to avoid. The self-described “Endurance Capital of the World” is home to numerous ultrarunning events, including the Way Too Cool 50K, the Rio Del Lago 100M, Western States, and of course Canyons. After checking in, we picked up our race packets at the expo in downtown Auburn. UTMB’s influence was already visible: whereas last year’s race started outside town at Overlook Park, this year’s would start right in the town center, where several blocks had been cordoned off. There are valid concerns about UTMB’s dominance of the ultrarunning world, but they do know how to put on an event.
I woke up early, after only a few hours of sleep. Megan and I drove to the start and left our drop bags before heading off again to park. That proved more difficult than we’d expected, as the various downtown barricades (apparently unknown to Google Maps) blocked our initial attempts to drive to the Overlook parking area. We ended up parking on a street close to downtown and jogging to the start.
The start was quite a scene, with hundreds of runners crowded into the starting chute. We spotted our friend Dan and chatted with him while waiting for the gun. Although I felt tired, the crowd’s excitement was contagious, and I felt cautiously hopeful as we headed off at 5:00am.

The early miles were uneventful: I jogged along slowly, not feeling great, but hoping my legs would eventually warm up. My legs always feel crappy for the first few miles, so it would take at least that long to assess how well I’d recovered. In the meantime, I enjoyed the early morning sights: a full moon over the American River, canyons filled with fog, and eventually a nice sunrise.



At mile 7 I passed Megan, who had stopped at the Mammoth Bar aid station. Soon after that, the course began to climb. I was well warmed up by now, and increasingly aware that I hadn’t recovered from my recent races. I had no aches or pains yet: just a deep fatigue in my legs. But, I reminded myself that ultras sometimes bring second winds: last year, I’d started the Bigfoot 73 feeling dead from a 100-mile race two weeks earlier, but I finished that race feeling great. I’d just have to hope for something similar today.
The miles rolled on. I’ve run these trails many times, in races and Western States training camps, so it was hardly a voyage of discovery, but it was still nice to see the canyons and the rolling green hills.



Megan caught up to me shortly after the Drivers Flat aid station at mile 15. I told her my legs already felt awful — a lot like the last ten miles of Lake Sonoma. I couldn’t help contrasting how badly I felt today with how much better I’d felt at a similar point in MUC six weeks earlier. Megan told me there’s no point making such comparisons, which is of course true. We ran together for a short while until she pulled away.
I don’t recall much about the next 15 or so miles to Foresthill. This stretch has a few significant climbs and a lot of up-and-down rolling. It’s dense and green and choked with poison oak. I watched some other runners blithely run through the branches crossing the trail, and winced inwardly every time. I myself probably looked silly doing my usual poison oak dance, twisting and dodging every few steps to avoid the detestable leaves. What can I say? I hate poison oak. Otherwise, I didn’t have a lot of thoughts except “I can’t believe how bad I feel this early in the race.” The first half of Canyons is the easy part, and I already felt wiped out.
I straggled into Foresthill (mile 34), where I was glad to stop and retrieve some smoothies from my drop bag. I chatted with an aid station volunteer and continued on. My legs still felt terrible, but I was glad to be starting the second, more mountainous part of the course. I hoped that, with a little more hiking and a little less running, I’d get that second wind.
One thing at least was encouraging. Although I felt more tired than the previous year, I wasn’t in any pain. Last year my knee started hurting from Foresthill on, and I’d had to take a few ibuprofen to finish the race. So far, I felt no need for that. This isn’t to say that my legs felt good: I jogged the runnable downhills to Michigan Bluff (mile 40) because real running hurt too much. This sucked, as this was a stretch you’d ideally like to run fast. But at least I wasn’t in acute pain: just standard ultra achiness, though miles earlier than I’d have liked.
Soon after Michigan Bluff came the first real canyon descent. This hurt. I thought again about how much worse I felt than I’d hoped. My spring training was supposed to make my legs impervious to these downhills, but I actually found them harder than last year. I was glad to reach the canyon floor and to start ascending the other side. At least at first: the ascent got old as it dragged on and on. It was a huge relief to finally reach the Deadwood aid station at mile 46.
Just before Deadwood, I took my first caffeinated Gu, then another. This helped a lot. I also finally broke down and took an ibuprofen, which also helped. Between the caffeine and Vitamin I, I felt like I could run again, and I actually had a pretty good time on the (admittedly easy) five-mile Deadwood loop. When I returned to Deadwood at mile 51, I was looking forward to the final stretch.
A note on mileage: as the race went on, my watch’s mileage got further and further ahead of UTMB’s. I was about a mile ahead of the course description at Foresthill (34 versus 33), and two miles ahead by Deadwood 2 (51 versus 49). I’d ordinarily chalk this up to watch error, but I compared notes with multiple runners along the way, and all of our watches said the same thing. So I’m guessing my watch readings were correct — good enough for this post, anyway.
Leaving Deadwood, I began my last big descent into the canyons. This one was also steep and brutal, but with caffeine and ibuprofen now in my system, I enjoyed it more than the previous one. I was feeling, if not great, at least better than I’d felt all day. The proximity to the finish no doubt helped: eleven more miles didn’t seem so bad. I reached the canyon floor feeling reasonably good, crossed the rickety bridge, and started up the other side.

The climb out of the canyon was long and hard, but I expected that and was fine. I did not expect to keep struggling even after reaching the top. I remembered the last few miles being easy and runnable, but that’s not how they felt today. A recent snowfall had transformed those last miles: snow lined the trailsides, and snowmelt formed deep puddles in the trail itself. The options were basically to run through the puddles or go off-trail. I attempted a third approach, using the small strip of dirt between the puddles and the snow. This didn’t work: I immediately slipped and fell into the surprisingly deep puddle and was soaked up to my waist. After that, I alternated between splashing through the mud or trudging through the snow.

I later learned that these last few miles were everyone’s slowest. Elites and ordinary runners alike moved only half as fast through this stretch as they’d averaged for the course as a whole. Pretty ironic, since this was the flattest stretch since Michigan Bluff, but that’s how it goes. The mud and snow affected everyone, so it probably didn’t change anyone’s place that much, but it did make the home stretch hard.
At some point I started hearing finish-line sounds wafting through the woods: music and speakers announcing the finishers. I couldn’t decide if this was encouraging or frustrating, since I figured sound carried well out here and might still be far off. Another runner and I joked about how the sound was taunting us. But shortly thereafter, big Hoka banners began to appear, and I was relieved to see the finish line come into view.
Megan greeted me at the finish: she’d finished about 20 minutes before me, and Dan 10 minutes before her. It was a huge relief to be done, and to have friends to hang out with after a long, hard effort. I told them this was the hardest sub-100 mile race I’d ever done: not the course per se, but the experience of running the whole thing on tired legs. I put on multiple layers of warm clothing — I remembered the finish being very cold last year — and sat around waiting for veggie broth and a veggie burrito, both of which had inexplicably run out. Once they finally arrived, I felt complete. (If nothing else, ultras help us appreciate the little things.)
My time of 13:32 was actually five minutes faster than last year. I’d wondered beforehand which of two effects would dominate: being better trained this year, on the one hand, and being more tired going in, on the other. As it turned out, those two things more or less cancelled each other out. It wasn’t exactly the race I’d hoped for, but I took it as a good sign that I was able to beat last year’s time despite being so tired throughout. That said, I told Megan I had doubts about doing Miwok in two weeks, and she advised me against it.
As noted, Canyons is a big, competitive race, and this year more so than ever. Adam Peterman and Jazmine Lowther set men’s and women’s course records of 8:31 and 10:01, respectively. That’s extraordinary, given how much those last muddy miles slowed everyone down. More generally, for both men and women, five of the six fastest-ever times were run this year. Ultrarunning is still a young sport, but it’s maturing pretty damn fast.
Miwok 100K (May 7)
I’ve wanted to run Miwok for years, ever since I first paced Megan there in 2017. It encompasses the most beautiful parts of the Marin Headlands and Mt Tam, at a beautiful time of year when the coastal hills are green and covered with wildflowers. I’d entered the lottery multiple times but somehow never got in. This year there was no lottery, and I was delighted to finally sign up. It was actually the first race I registered for this spring, and the one I’d most wanted to do.
Unfortunately, Canyons and the previous races had left me pretty wrecked. I now had an answer to the “building up versus breaking down” question: I was breaking down. There was probably more to this than physical fatigue alone. For the last month, I’d been struggling to complete a difficult revise-and-resubmit at a prominent journal. I’d expected my race schedule to facilitate work: I’d run a race every two weeks and work a lot in between. But I felt so exhausted after every race that I struggled to get work done, and the constant fatigue and stress were getting me down…really down. I felt tired and depressed. The thought of doing another race so soon seemed odious. I could probably have slogged through Miwok, but it would have felt like a death march — hardly the experience I’d hoped for. So, I decided to pull the plug and leave Miwok for another year.
I’m happy with this choice. I ran only three times in the month after Canyons, which allowed me to recover and focus finishing the R&R. Getting that off my plate was a huge relief, and I felt better immediately. Now I’m four days from the Bighorn 100-miler in Wyoming, and hoping those four spring races have left me in good shape. We’ll see.
Would I attempt a race schedule like this again? No. I’m sure some people find it rewarding to complete a grueling race series, but I myself care too much about my performance in individual races to enjoy this kind of challenge. I don’t find it enjoyable to run on tired legs, or to fall short of my performance goals. I registered for all these races in large part because I deluded myself into thinking I could recover faster than I actually can. It was a worthwhile experiment — I now know my limitations better than before — but going forward, I’ll probably do fewer races — like, one per month? — and try to do them well.