Race Report: Ironman 70.3 Boulder
One thing I never expected after racing my first triathlon in Bozeman back in June was that it would leave me so hungry for more. I couldn’t wait for my next race, Ironman 70.3 Arizona in October, so I made a last minute decision to sign up for Ironman 70.3 Boulder this past weekend. I’m just halfway through my training plan for Arizona, and signed up for Boulder too late to do a proper taper, so I considered it a B race, with the goal of gaining more experience and testing my pacing, gear, and nutrition.
The race lined up with the end of a recovery week in my training plan, so despite the lack of a taper, I went in feeling strong and rested, with a racing plan I thought I could execute well. But as Mike Tyson once said, “Everybody’s got a plan until they get punched in the mouth,” and on race day, Boulder’s weather delivered a haymaker. Long story short, I made it to the finish line, but the blistering heat in Boulder absolutely demolished me on the run. My finish time was 6:14:49, and I finished 100th in my age group (out of 174) and 931st overall (out of 1,948).
Pre-race prep & setup
There was a bit of drama with the weather in the days leading up to the race, thanks to the heat dome over the country during race week, centered directly over Colorado. I drove down to Boulder on Thursday, and checked in at the athlete’s village on Friday, the day before the race. That afternoon, word spread that the water temperature at the Boulder Reservoir was above 76.1ºF (24.5ºC), likely making the swim “wetsuit optional.” Except for a short test swim earlier in the week, I hadn’t practiced open water swimming without a wetsuit at all, so I was more than a little anxious about it.
On race day, I woke up at 3:30 AM after getting a surprising amount of sleep, had a bagel with jam and some coffee, and prepared a bottle of Maurten Drink Mix 320 Caf 100 to sip on until race start to keep my glycogen (and caffeine) topped up. I arrived at the reservoir at 4:45 AM and grabbed one of the last parking spots next to transition, which I hoped would make setup a little easier.
That is, until I realized how tightly packed the bikes were, which left no space at all for my stuff next to the bike. Following the advice of a more experienced competitor nearby, I talked to the person next to me and we arranged our gear so that his stuff was under my rear wheel, and my stuff was under his rear wheel. This allowed my gear to lie next to my front wheel and vice versa, which made it easier for both of us to access our gear and get our bikes out.
A little past 6:00 AM, the race organizers announced that the water temperature had miraculously dropped to 74.5ºF (23.6ºC) and thus the race was wetsuit legal, and there was much rejoicing in the transition area. I went back to my car to drop off my bag, grabbed my wetsuit, put it on, and headed to the beach for the swim start… where I found out that it was delayed by 30 minutes so that people stuck in traffic could get into the reservoir, so I had nothing left to do but visualize the swim, do some light stretching, and be glad I drank that bottle of Maurten.
The swim
The swim was a rolling start, and I seeded myself into the 46 to 50 minute group, based on the time it’s taken me to swim the 1.2-mile half-iron distance during practice. This was one of the last groups to enter the water, almost an hour after the start of the race. The pros entered the water at 7:35 AM; my official start time was 8:32 AM.
The swim itself was pretty uneventful after getting past the “washing machine” at the start. I felt good in the murky but pleasant water, and settled on a steady rhythm, focusing on my form and breathing. I had a hard time sighting the buoys with my foggy goggles and the sun reflecting off the water, so I mostly followed other swimmers and tried not to go too far off course. The only real difficulty I had was at the first turn buoy, where I caught up with a group of swimmers and got kicked in the face hard enough to make me choke on the water, but I recovered quickly and was able to finish in 45:22, slightly faster than I expected, with my pace almost 20 seconds faster than in Bozeman. I still have a lot of work to do on my swim, but it’s nice to see some improvement (although I’d note that I switched to a sleeveless wetsuit after Bozeman, which might explain the improved time).
T1
I paid for that bottle of Maurten by having to use the porta-potties in T1, and then took my time in transition so I could spray on a good layer of 100 SPF sunscreen, put on my socks and shoes, take on a Maurten gel, and make sure I had everything I needed before unracking my bike. I did a better job with my socks than I did in Bozeman, and didn’t struggle to put them on this time, thanks to this trick someone shared in the TrainerRoad forum.
In total, I spent 10:22 in T1.
The bike
For the past few weeks, I’ve been using my long Sunday rides to practice the full 56-mile bike distance at race pace, with race nutrition, using Best Bike Split to prepare a pacing plan. If you haven’t used it, Best Bike Split allows you to enter the race course, expected weather on race day, rider & bike data, how much intensity you’re targeting, and so on, and it creates a plan for you. On race day, you can sync that to the bike computer, which will show you a target power at every segment of the race. It’s worked really well in my practice rides, so I was looking forward to trying it out on race day.
For Boulder, I played around with the numbers, using the various charts for race pace that are floating around the internet, such as this one from TriStar Athletes, which I reproduced for my own reference:

I settled on 0.8 IF as my target intensity, with an expected finish time of 2:32 and 163 TSS. This roughly matched the times of my 56-mile training rides, and would have put me in the “safe zone,” according to the chart. At 1,578 m (5,177 ft), Boulder Reservoir is about 400 m (roughly 1,300 ft) lower than where I train in Jackson Hole, but I didn’t make any adjustments for the altitude.
With my plan loaded up on my bike computer, I left T1 and got to work. I felt strong, but stuck to my power cues pretty closely, only surging to pass folks. I did my best to follow draft rules, which was hard with so many riders packed together (although as far as I could tell, they weren’t being enforced).
The race course went on a few backroads through farmlands just outside of Boulder, and through a few highways, one of which (Diagonal Highway) was thankfully closed to motor traffic. On the others, we had to ride on the shoulder, with only traffic cones separating riders from car traffic. That threw a bit of a wrench into my pacing plan—the portions of the course going northbound on Highway 36 were designated as no-passing zones because the shoulder was so narrow. Although some folks were still passing other riders, it felt very risky with cars zooming by just a few inches away, so for the most part I had no choice but to coast behind slower riders. As a result, I fell far behind on my target intensity, and had a hard time making up for it on the other sections of the course. My final intensity before entering T2 was 0.7 IF, and 133 TSS. The silver lining is that at least I was certain I didn’t overcook the bike leg, so I could have a strong run. Or so I thought—more on that later.
Other than that, the bike leg was fun, and uneventful. My nutrition consisted of two bottles of Maurten Drink Mix 320, and three Maurten gels I put in a GoToob so I wouldn’t have to deal with the wrappers. I only stopped at the second aid station to get some water to drink and pour on myself; the route had a few punchy climbs, where, without the air moving, you could really feel how awfully hot it was—95ºF (35ºC), according to my bike computer.
I rolled into T2 with a time of 2:48:02, about 15 minutes slower than I hoped. I finished 74th in my age group, my best result of the day.
Thankfully, I had no serious mechanical issues. Shortly before the race, I discovered that my rear derailleur rubs against the wheel spokes when on the largest gear and I didn’t have time to get it fixed, so I simply avoided shifting into that gear. The only other minor glitch was that Wahoo’s multisport handoff feature between my watch and bike computer once again refused to work, so I just started a normal bike ride on the bike computer and discarded it afterwards.
T2
Not much to report here: I racked my bike, switched shoes, put on my race belt and hat, sprayed on another layer of sunscreen, took on a Maurten gel, and left in 6:26.
The run
Just like with the bike, I’ve been using Stryd’s race power calculator to plan my runs, which worked pretty well for me at the Jackson Hole Half Marathon last month. For this race, Stryd suggested a target power of 229 W, which would have given me a finish time of around 1:54. However, the heat, the fucking heat. The weather forecast said the high for the day was 86ºF (30ºC), but I’ve trained in hotter temperatures precisely to get heat adaptations, and believe me, it was not 86ºF in that blazing sun. I have no idea how hot it actually was during the run, but it was already 95ºF (35ºC) during the bike leg, according to my bike computer, and when I was driving home after the race, my car’s thermometer indicated it was still 100ºF (38ºC), well after the sky had become overcast. I wouldn’t be surprised if the temperature was in the triple digits at some point during the run.
Since I had left a lot on the table during the bike leg, I started the run strong, but I knew there was no way I could keep that pace in that heat—the danger of heat exhaustion was just too high. Instead, I switched to a simpler plan: just finish the fucking thing. I did not care about time, pace, or power, in fact I didn’t look at my watch very much at all. My strategy was pretty simple: walk through every aid station, drink water and Gatorade, pour water on myself, and pour ice inside my tri suit.
Nutrition-wise, I totally winged it. I had a few squirts of Maurten gel from my tube a couple times, ate a fig bar in one of the aid stations, and drank some Red Bull by mistake in another one, but mostly just had water, Gatorade, and ice.
I went at a very easy pace, and felt pretty good during the first lap. I got a huge morale boost from seeing my friends Clif & Allie cheering me on; one nice thing about the run course was that it was two laps, out and back, so you got four chances in total to see your people.
The second lap, though, was absolute misery; towards the end of it, my entire body ached from head to toe, my shoulders felt tight and sore, I had a painful stitch on my side, and I had to walk a few times to recover. By this point I had seen multiple people being taken off the race by the medical teams due to heat exhaustion, and one of them seemed to be in very bad shape, so I was glad I decided to focus on cooling and hydration. I am certain I would not have finished otherwise.
After suffering through that second lap, I arrived back at the athlete’s village for the final stretch of the run, and started getting choked up when I realized that holy shit, I am actually going to finish this thing. I high-fived a lot of people watching from the sidelines, and was sobbing uncontrollably by the time I crossed the finish line. I honestly didn’t expect it to be such an intensely emotional experience.
After collecting my finisher’s medal and composing myself enough to pose for a better FinisherPix photo, I wandered aimlessly for a couple of minutes before deciding I was too goddamn tired to do anything else, so I walked back to transition, packed my gear, and headed out.
Ultimately, I finished the run in 2:24:40, almost 40 minutes longer than it took me to finish the Jackson Hole Half Marathon, for a total time of 6:14:49. But I finished the thing and learned a lot, and that’s all that matters.
Equipment list
- Tri suit: Roka Gen II Elite
- Wetsuit: Roka Maverick Pro II Sleeveless
- Swim goggles: TheMagic5 Smoke Magic (which I’m pretty bummed out someone took from my transition spot at some point)
- Sunglasses: Roka Matador Air, photochromic
- Bike: Specialized Aethos, stock, no aero bars
- Bike shoes: Giro Regime
- Bike helmet: S-Works Evade 3
- Bike computer: Wahoo Elemnt Roam
- Watch: Wahoo Elemnt Rival
- Running shoes: Hoka Carbon X 2 + Stryd pod
- Nutrition: Maurten gels, Maurten Drink Mix 320
Wrap-up
After experiencing this heat, I’m not surprised they moved next year’s race to early June. I’d love to do this race again next year in cooler weather, but I’ll have to decide if I want to do that, or go for the full-distance Ironman in Coeur d’Alene two weeks later. My plan is to start full-distance training in the fall, and wait to see how training goes over the winter before signing up for one or the other.
That said, I’m glad I made the decision to race here, and happy I achieved my goal of completing a half-distance Ironman this year. My times weren’t what I hoped for and not everything went according to plan, but I’m thrilled I managed to finish a very hard race in challenging conditions. With this experience under my belt, the rest of my training plan, and a proper taper, I’m very much looking forward to seeing what I can do at Ironman 70.3 Arizona in October.