Wednesday, October 22, 2025

Ironman California 2025 - Race Report


From Half-Assed to Full Finish


The journey to the start line of this Ironman was, to put it mildly, a mixed bag. Coming into the season, I was carrying the weight of two previous half-hearted 70.3 attempts, juggling mentally stressful work, and sitting well off my typical season weight. I had a deferral for IMCA and a planned IMSC 70.3 signup, so the season began with the modest goal of nailing the 70.3 and making a decision on the full distance in July, pending how work, time, and my body held up.

The pivotal moment arrived with a successful 62-mile bike and 14-mile run weekend in July, which gave me the physical confidence to push for the full distance. And a strategically timed sabbatical starting August 15th proved essential, allowing me to finally bring focus and priority to my training, both physically and mentally.

While the overall training went well, it was not without its hiccups: I had a couple of bad workouts, including a dropped brick run, a missed bike ride, and an aborted super brick. A professional bike fit made me significantly more comfortable and faster on the saddle. However, running remained a consistent challenge, feeling harder (and slower) than usual. I did find that long runs performed the day after a long bike ride proved to be particularly beneficial on the race day. I stuck closely to my 2022-like plan, maxing out rides at around six hours and runs at around three hours. The taper phase was a bit different than usual—I felt weird and fatigued during the first two weeks—but by the end of the second week, I felt a significant uplift and was race-ready.


Pre-Race Drama and Goals


We drove down on Friday night to settle in. The pre-race routine was immediately marked by drama: Piku got a bee sting right before her IronKids run! We managed to get her through the run, but a subsequent urgent care visit was needed to rule out any allergic reaction. Everything checked out just fine, so we were good on that front (just with a cranky kid in pain). After that, I checked in and we drove a part of the bike course to re-familiarize myself with the route and road conditions.




I had calculated an expected time based on how the training went: a 1:05–1:15 swim (with less current assist expected this year), a 6:00–6:15 bike split (accounting for mild headwinds), and an aspirational 4:15–4:30 run—a pace comfortable for an open marathon, and potentially achievable in an IM if the day went smoothly. My total expected time was around 11:45–12:30+, with the ultimate goal being to finish strong (consistent and pain-free) on the run, something I hadn't quite nailed in my previous full-distance races. From time perspective, the idea was that if I get to the run by 7:30, then a 4:30 marathon would naturally give me a 12 hr finish anyway, so the overall time was not too much that I was indexed on.

Race Day: The Starting Line


The day started with six hours of sleep (10 PM to 4 AM) and a simple breakfast of a bagel with cream cheese, coffee, and orange juice with friends Char and Maneesh. A 5 AM hotel shuttle took us to T1, where I dropped off my special needs bag and prepped my bike, before shuttling to the swim start with my fellow Asha athletes. I felt the usual slight nervousness but was ultimately feeling good about the day ahead.


The Swim: Panic and Recovery (4200 Yards)


I entered the water around 7:35 AM; the water wasn't too cold. My start was immediately jittery—I couldn't find my breathing rhythm and struggled to swim at all. The fresh water and lower buoyancy seemed to be messing with my mind. I had to call over a boat, chit-chat to calm down, and suppressed the familiar thoughts of pulling out, which I was able to do quickly since this has happened before.

Just ten minutes later, a patch of seaweed right below the surface freaked me out. I stood up, but my feet touching them sent me into a full panic. I called for help and held onto a boat, with the thoughts of pulling out becoming much more overpowering this time. I wondered how I would cover 4,200 yards when I couldn't get past 500. After getting assurance from a support person that the patch was small, I recalled overcoming a similar minor freak-out in 2022. I tried again, pushed through, and thankfully saw no more weeds.

With the initial hiccups resolved, I finally got into a good rhythm. The water became suddenly and extremely cold where the Sacramento and American Rivers merged. I was okay with the temperature, but the current was strong, causing me to clearly miss the red turn buoy. A kayaker called out and okayed me to go downstream instead of fighting the current to loop the buoy, which seemed to be moving away. Soon after, the swim ended just fine, and I was off to T1.

The Bike: Dialing it Back for a Record Split (112 Miles)


The bike started with immediate equipment trouble: my hydration bottle suction tube seemed clogged. I stopped to fiddle, then forcefully removed the bite valve to access the hose directly. I lost a minute but was quickly back on track (found out the next day that there was a locking mechanism which I wasn’t familiar even with 5+ years of using this same bottle!).

The ride out had some expected headwinds (maybe 5–10 mph?), but I maintained 18–19 mph easily in the aero position, confirming with my power meter that the effort was in check. The ride was mostly uneventful, aside from crossing the rough 3.5-mile patch of the infamous Babel Slough road. After the turnaround, the expected tailwind was a welcome boost, and I was cruising comfortably at 21–22 mph.

Towards the end of the first lap, my legs started feeling jiggly and shaky, which scared me, as this usually signals a calorie deficit. However, I was intentionally on the higher side of my nutrition intake. Kept going and seeing the Asha cheerleading crew at the turnaround was a great boost. I was cruising at an average of ~20 mph, finishing the first lap in 2:49—my fastest ever.




During my stop to swap nutrition and take a shot of pickle juice, the shaky leg feeling intensified, severely denting my confidence. I feared this might be the end, similar to my aborted super brick. Surprisingly, the legs held up as I started the second lap, but I proactively decided to dial down the effort. The winds had picked up, and I was about 1 mph slower, which I was completely fine with—I was determined to conservatively save my legs for the run.

With about 10 miles left, I felt a pull on the outer right hip flexor while in aero. I immediately massaged it and went out of aero; it got better. Since the tailwind minimized the effort penalty, I continued massaging and stayed out of aero for the remainder. The second lap finished strong in 2:59 (just 10 minutes slower than Lap 1). My final bike time was a fantastic 5:50, which bought me valuable time for T2 and raised my hopes for a sub-12-hour finish if the run went well.

T2: The Wheelchair-Aided Transition


Dropping the bike, I sat on the ground to put on my run shoes and was immediately struck by a near-cramp in the medial quads. I quickly aborted, walked to the water station to fill my run bottles, and asked for a chair, not wanting to risk a full cramp. A volunteer flagged down two medics rolling an empty wheelchair. I sat down and managed to get my shoes on without cramping. During this mini-drama, Rohan, Bunty, and Shashi spotted me and yelled, thinking I was in serious trouble. I gave them a thumbs-up, which must have confused them, but I started the run to confirm I was alright.

The Run: From a Conservative Start to a Flying Finish (26.2 Miles)


With 4:40 available for a sub-12 finish, I had plenty of time to strategize my run. My goal was consistency and still wanted my dream of a sub-4:30 marathon to become true; sub-12 was a completely nice-to-have goal.

I quickly saw Neha and Piku. Neha was worried about my eight-minute transition time. I stopped to chat and reassure her, only to hear later that Piku was mad at me for stopping and "wasting time."



Starting the run around 3 PM meant hitting the peak heat (80–85°F). I knew the next two hours demanded meticulous hydration, cooling and pacing. I planned to run the next 2 hours at my usual easy running pace, similar to my long training runs, and see how things unfold. I was religious about stopping at every aid station, using lots of ice and water for cooling, and was able to comfortably maintain a healthy 9:45–10 min/mile pace for the first 10 miles or so miles.



Around Mile 10, the familiar feeling of upper calf cramping (like Ironman Canada 2017) set in, forcing me to walk the slightest uphills and take regular breaks. Compounding this, I felt a sensation of developing a GI distress, a new territory for me. I immediately switched from the Maurten gels I’d been using to my regular e-gels for the remainder (I guess the former is more heavy on sugar).

Time-wise, I was doing great (10 min/miles for the first 13 miles), so I shifted my mental focus to now strategizing the next 13 miles. I decided to walk after every half a mile and obviously at aid stations to manage the cramps and potential GI distress. I crossed Special Needs at Mile 13, picked up everything but the lamp (decided to pick that up later).

Soon I realized that I forgot to pick up the pickle juice from Special Needs. I met Shashi and Rohan around Mile 17, and after some confusion about accessing Special Needs across the road (I initially thought it was off-course), I finally got my pickle juice.



The true turning point (or at least correlated with) was the introduction of Cola at every aid station after Mile 13. This boost worked wonders, and I was soon able to run from one aid station to the next without stopping.

My run mojo fully returned around Mile 18. I was cautious, telling myself that adrenaline could only carry me so far, though thankfully the cramp feeling seemed to have vanished. My pace started picking up magically, accelerating to 9:30 min/miles to even faster with every mile. The rest of the run was uneventful -- just hoping to continue with the same running form and counting down mile at a time. Saw cheering squad once in a while and then finally saw Neha and Piku near the finish, which put a smile on my face. I battled the long, annoying loop near the finish line, and finally reached the finish chute feeling strong and elated. My half marathon splits were 2:11 and 2:16 which is as good as it gets for me!

Conclusion and Reflection


This was definitely one for the books. The combination of training, focus, and in-race strategizing paid off. There were many moments where I felt like I was walking on thin ice, but I am incredibly proud of myself for lifting out of those scary situations and finishing on the top. My final time of 11:46 surprised me —thanks to that late run acceleration!




A huge shoutout goes to Neha (and Piku) for their year-long motivation and support in planning around my training time. The rock-solid cohort of athletes, including Coach Char, Chalana, Vaidehhi, Radhika, Jayant, Vishal, and Maneesh, truly gave me the consistent push I needed weekend after weekend. Congrats to everyone and especially the first-timers for enduring through the long training season!

The race-day cheering squad was amazing! Constant boosts of high-fives and encouragement tremendously help me go through this arduous journey.



I’ve gathered lots of learnings and another incredible experience to help face more challenges in the coming years. Mentally, I think I am done from the 140.6 distance for at least a couple of years and am looking forward to more 70.3s (logistically easier), hopefully those that involve traveling to new places and vacationing!



See Finish Line Video.

No comments: