Fall Races and the Transition to Ski Season

So it's been a few months since Ironman Canada and things have stayed fairly busy. I was worried about "Post Ironman" depression, where people often feel a letdown shortly after completing their Ironman (or any other major race for that matter). Well, I happened to see a few different articles in triathlete magazines/articles/etc so I was prepared, plus I was getting excited for the next season - fall running races!

First up, the Aluminum Man Olympic Triathlon in The Dalles, Oregon.  Nothing too much of note, except that I was able to out-sprint another person in my age group to earn the 3rd place age group medal :)

Next up, the Indian Summer Half 5k.  Having not run a standalone 5k since April (21:30), I was excited to see how much speed I've gained over the summer.  Turns out, quite a bit - I ran a 19:21, a new personal record by far and 4th place overall.  Three weeks later I ran my first every stand-alone 10k and it went really, really well.  After running in 4th place most of the race, I passed 3rd place with about 1 mile to go, and then entered a sprint finish with 2nd place, coming out ahead of him by a few seconds to earn my first ever top-2 placement with a time of 39:03 (6:18/mile pace).  I was only hoping to break 40 minutes, so I was really really pleased.  Another 5k one-quarter of a marathon as part of a relay team, and soon enough it's November and snow is starting to fall!

Second place overall in the BLS Fall Fest 10k!

Tri Cities Marathon team "MEJA" - first place in the Co-Ed division

A year ago, the wife and I headed to White Pass for some early-season ski touring before the resort opened. Well, we did the same again this year, but brought the dogs up top with us.  As we went earlier, the snow was a little shallower than last year so we had to use care, but it was still a blast. Hoping that this is the start of an excellent ski season.

At the base of White Pass, WA

Hiking up. The wife used snowshoes, I used my skis

At the top

Some really soft snow up top

Skiing down, dog chasing after me

A great time, looking forward to a great season!

Add a comment

Ironman Canada Race Report

Whistler, BC: August 25, 7:38pm (PA System): Eric Fahsl from Richland WA.  Eric, you are an Ironman!

Those last four words are the culmination of my summer.  An Ironman triathlon consists of a 2.4 mile swim, 112 mile bike, and 26.2 mile run.  It's really a ridiculous thing, one has to complete all three of these within 17 hours.  Not too long ago I thought it would be so cool to compete in one but I NEVER thought I’d be capable of it.  Never.  (See prior blog entry on signing up).  Well, now I am an Ironman! Let’s (briefly) walk through the weekend.

Set up 

UntitledIronman Village

As you may or may not know, Whistler is a new location for the 31st running of Ironman Canada.  I have been to Whistler five times to ski, but never in summer.  It’s still awesome and the scenery is always amazing.  Packet pickup, bike/transition bag drop off goes smoothly, and I heavily focus on my nutrition and meals on Saturday.  After semi-franticly reviewing my strategies for each of the three sports I settle in and head to bed.  

Swim to Bike transition area - bike setup on Saturday 

The Finish Line

Race morning goes rather smoothly – no upset nerves, no nausea, I eat most of my standard pre-race breakfast of English muffin plus peanut butter and take my Clif Bar and head towards T2 in Whistler Village to get shuttled to T1. It’s 5:10am and the only people out are the other competitors.  Very little talk is going on; it’s a little eerie.  I get to my bike, check it over and fortunately there are no mechanical issues.  Even the weather is perfect – water temperature around 68 degrees, the air temperature forecasted to be a high of 70, sunny and minimal wind.  Attach my water and bento box, put on my wetsuit and head to the swim start.


Prior to the swim.  Do I look nervous?

The swim is still my weak sport.  2.4 miles is a looong way.  Going in, I was pretty confident I could complete the distance, even if I had to side-stroke the whole thing – which is what I do whenever I feel anxiety during the swims.  What I wasn’t sure of is how close to the two hour and twenty minute cutoff I would be.  I was rather nervous getting into the water, swimming with 2000 other people around you is pretty intimidating.  I positioned myself towards the back, they announced 30 seconds until start, everyone whooped and cheered, and before you know it the cannon goes off and we are on our way.

2000+ swimmers getting ready to start a loooong day 


Things start off smoothly, it’s not as crowded as I was expected – I positioned myself well.  After a few minutes I decide to side-stroke a bit and take in the scenery then alternate back to freestyle.  I look back and don’t see a ton of swim caps – a little concerning but I suppose I shouldn’t be surprised.  I continue to do this throughout the first lap and eventually I round the fourth turn to start lap two.  Well, something clicks – freestyle feels good, really good.  All of my anxiety dissipates.  I start passing people left and right and I start to really enjoy the swim.  I joke to myself “the key to reduce swim anxiety is just simply to warm up for 1.2 miles”.  About 1/3 of the way through the second lap, when things are going really well – I think to myself – This is the moment when I know I’m going to become an Ironman today.  Round the final buoys and before I know it I’m the final stretch and out of the water.

Done with the swim! 

Swim Time: 1:30:31
Rank: 1710 out of 2171 (79%)
Position in Race: 1710 


The transitions at Ironmans really are awesome – someone is there to help take your wetsuit off, people help you find your transition bags, and even apply sunscreen on you!  After a few minutes I’m on my bike for the longest bike ride I've ever done.

Getting ready to mount the bike 

Things start off well going well – I see my cheering section of Alicia and Liz a few minutes in and I am taking it really easy to pace myself.  The bike course at Whistler is a lot of rolling terrain with a big climb near the beginning and a series of medium-size climbs at the end.  The crowd support the first 30-45 minutes was awesome – people are lined up on the streets, everyone cheering for you, it’s just great.  I get to the base of the first big hill and start the climb – as you may know, climbing is one of my strengths (being lightweight has its advantages), and I start passing people but yet try to go as “easy” as I can to not burn up too much energy.  Towards the top of this climb is the ski jump used in the 2010 Winter Olympics and it’s pretty awesome.  Round the turn and head downhill – wheeee!  Ludicrous speed was attained as hundreds of riders are flying down the mountain.

Towards the start of the bike 

Next up is 30 miles on Sea to Sky Highway to the town of Pemberton.  Whizzing by Whistler village the crowd support is there again – people on both sides cheering on the athletes – you feel like a rock star!  Most of this section is downhill and one can’t help but think about how is this going to feel going back the other way up hill. Again, try to hold back a little bit and save my energy for the rest of the ride.  

Staying aero!

The scenery on the bike course was like this for the entire ride.  Freaking amazing.

Once past Pemberton, we get to the only truly flat part of the course – 22 miles out and 22 miles back.  The views are (still) amazing.  I stay in the aero position as much as I can and settle in.  Around mile 60 I stop and apply some additional chamois cream (a wise choice) and focus on staying hydrated.  After what seems like forever, I reach the turnaround point and start my trip back.  Surprisingly – it’s not as boring going this way and I roll back through Pemberton. The return trip up to Whistler is indeed tough.  It’s hot out, my legs are tired, and now I have to deal with hills.  It seems like every time you crest a hill you go back downhill losing about a third of your elevation only to go back up – almost like going up three flights of stairs, down one flight, up three, down one, and so on.  Finally, finally I’m in the home stretch of the bike as I make the right turn off Sea to Sky and into Whistler Village.  Crowd support is there and I’m super happy to arrive to T2 and get off the damn bike!

Bike: 6:48:54
Rank: 1373/2065 (66%)
Position in Race: 1404


As I’m in transition, changing my tri shorts for running shorts and I hear the announcer state that Trevor Wuertelle is the winner.  So – the winner is done and I still have to run a marathon?  Bloody hell.  My goal was to finish before sunset, which is 8:10pm.  Looking at my watch I see that it is 3:30pm – I just need to run a marathon in 4 hours and 40 minutes and I’m golden.

Leaving transition I see Alicia, Liz, and Sammy (our dog) there to cheer me on!  I’m reinvigorated and am on my way.  Immediately there is great crowd support on the run – your name is on your bib number so I’m hearing “Great job Eric”, “Way to go Eric”, and so on – again, rock star status!  I found the run course to be really great – very scenic through woods, lakes, and parts of Whistler Village.  Much of it is shaded so I elected to wear a visor but no sunglasses.  There are some hills on the course but nothing too major.

Coming out of T2

Doing work

My strategy for the run was to try to start off around 9 minutes/mile and see how I feel, while planning to walk through all aid stations.  I’m holding a mid 8 min/mile pace and decide I need to tone it back a bit, but still never get much slower than 8:45.  After the first few hills I decide to power-walk up the hills – most of the other people were anyways.  It just seemed like so much less energy but wasn’t really that much slower.  This was also a great way to conserve energy because I found I only had one comfortable running speed, around 8 min/mile.  After a few miles I start to get hungry.  Gels aren’t cutting it so I take some of the Honey Stinger chews and to my surprise they are doing the trick.  Over the next two aid stations I consume 2 chews each, and after a little bit of walking to get myself to burp I’m ready to run.  My general strategy became – 

  • Good run form on the flats and downhills
  • Power walk (swing those arms!) on the uphills, but no more than 1 minute at a time
  • Walk through every aid station
  • Enjoy the scenery!

Enjoying some gravel sections of the Valley Trail

Scenery? Check!

After the first loop I am about 2 hours in, awesome – I still have 2 hours 40 minutes to run a half marathon and make it before sunset!  Mile after mile goes by, at aid stations I take a variety of water (x2), gel, chicken broth, or coke.  The crowd is still great – “Looking strong Eric, you’re looking REALLY strong!”.  Around mile 22 I take my fourth gel of the run and decide it’s coke from here on out.  Once I get to mile 25 I tell myself, no more walking!  I finally take the last section of the course, see Alicia and Liz, make a few turns and I’m in the finisher chute!  OMG I can’t believe I’m here already!  I’m a few hundred feet from the woman in front of me so I slow down a little bit to give both of us our own little spotlight.  Throwing my arms up in the air I cross the finish.

About to head into the home stretch!

Finisher chute!

Run: 4:06:31
Rank: 477/1985 (24%)
Position in Race: 960 out of 1985 total finishers (48%)

Total Time: 12:38:22 



Finish Line (and Beyond)

When I crossed the line, there were a variety of emotions going through my head.  Joy, graciousness (for no major issues), confidence, and honestly just a little bit of disappointment.  I was a kind of sad to be done.  Additionally, they say finishing an Ironman changes you - well I did not really feel any different (well, except tired).  I was confused.  After a little while I realized the change started happened the moment I decided to sign up.  It takes a lot of courage to sign up for a major event, and that marks the beginning of the transformation.  Finishing the Ironman was the final phase of that transformation.  Dotting the I, crossing the T.  All that said, I'm extremely happy with the entire Ironman experience - from the training to the venue/course (the volunteers were awesome!) to my performance that day.  It’s amazing what imagination, determination, confidence, and patience can achieve.  


The response I received from friends, family, and even strangers was overwhelming.  Walking back through Whistler Village with my medal on, I start hearing people cheering loudly.  After looking around I realize they’re cheering for ME!  Wow!  It was rather touching.  So what's next?  Maybe another Ironman next year :)

Finally, I have to give thanks to everyone who helped me along the way through this journey.  Most of them won’t ever see this, but THANK YOU to my friends, family, coworkers, coaches, other athletes, and especially the spouse.


Some people have asked me - "What/when do you eat in an Ironman?".  Well, for me, I focused on eating 6 small-ish meals the day before, totaling around a 3500 calorie intake.  During the race, I consumed the following:

  • One gel (Clif shot with 1/2 caff) just prior to swim (100 calories)
  • 5 gels consumed on the bike - one 5 minutes in, next one around 40 min in, one around mile 60, another around mile 85, and the final one about 5 minutes before getting off (500 calories)
  • 550 liquid calories consumed on the bike - 300 calories Carbo Pro, 250 Calories Herbalife 24 (+ 1.5 Nuun tablets for electrolytes)
  • 2 Clif Bars, cut up into eights. One of these bites every 10km to stave off hunger.  500 calories.
  • 4 total gels consumed on the run, approximately miles 4, 12, 18, and 22 (400 calories)
  • Various Honey Stinger chews, chicken broth, and Coke on the run course (~150 calories?)
So while exercising I consumed roughly 2200 calories over twelve and a half hours, or ~175 calories per hour.  

Some other pictures from the weekend

Posing in the Olympic Square

Light hiking at the top of Whistler Mountain

With the spouse

IMG_7492Glaciers in the background, getting excited for ski season soon!

Add a comment

Creating an Animated Javascript Heat Map with Polymap

Creating a Javascript Animated Heat Map With Polymap Powder Rating Visualization

As you may or may not know, I run a website – weather data-driven recommendations for skiing and snowboarding. One of the items on my to-do list was to create a season-long visualization that shows where the storms occurred in North America.

Attending conferences last year, like Strata NY, there would often be some very beautiful visuals that tell excellent stories. For work I had manually created some rough animated heat maps using HeatMap Lib and iMovie, but surely there has to be a better way to do this within a web browser, right?

After a few hours of research, no obvious answer came up – or I just missed it. There are a number of libraries that will render maps, render points on a map, etc. D3JS, Polymap, Leaflet, and others all fit the bill on this, but what about animation? Not many examples (at least that were obvious). After some experimentation with Polymap, I figured out a way to dynamically generate a “layer” of coordinates. Well – what happens if I have an array of my data points, and iterate through dynamically creating new layers of coordinates and deleting old ones? Bingo.

Below is the strategy and some walkthrough of how I used the Polymap framework to create the animation at


Overall, it’s not that complicated. The strategy is comprised of the four steps

1. Have the ability to create your map with a single date of data loaded dynamically

2. Set up the data as an array of single dates of data

3. Utilize the Javascript timer function to iterate through the array of data, destroying the old data and dynamically loading the new data

4. Add user controls to identify and/or change the date of the data displayed

Step 1 – Collect and Parse Data

WhereShouldISki has a rating system of 1-5 for powder, bluebird, and freezing level, stored as one JSON document per resort per day, for example:

These documents are accessed via ElasticSearch. Polymap uses the GeoJSON format, so after writing a Python script to parse through my relevant dates and data, I have a JSON object that looks something like:

type: "FeatureCollection",
features: [
  geometry: {
    type: "Point",
  coordinates: [
 type: "Feature",
id: "blacktailmountain_2012-12-20",
properties: {
count: 2

Within the array of each FeatureCollection, there is one entry for each coordinate and the weight (count in this case). So let’s build up a pretty large JSON structure to store this – an array of FeatureCollections, one per date.

Step 2 – Set up Polymap

Download Polymap and set up on your web server, whether locally or on the internet/cloud. I have had decent success with using MAMP and updating the Apache web server to my development directory.

I use the tiles at cloudmade, make sure you sign up for your own key. I thought the blue map was rather dramatic, so first let’s set up a blank map centered on the US.

var po = org.polymaps;
var map =
.container(document.getElementById("map").appendChild(po.svg("svg"))) .add(po.interact())
.center({lat: 46.14, lon: -101.26})
 + "/999/256/{Z}/{X}/{Y}.png")
.hosts(["a.", "b.", "c.", ""])));

With this code, you should have a blank map centered on the US.

Step 3 - Add the Data

Since I am storing the data as a large JSON file, we can use JQuery’s ajax call to retrieve the data while letting the user know the data is loading.

var allDatesData = (function () {
   var allDatesData = null;
      'async': false,
      'global': false,
      'url': "allDatesData.json",
      'dataType': "json",
      'success': function (data) {
         allDatesData = data;
   return allDatesData;

Now we have all of the JSON data stored in a variable. In order to add the points for a date onto the map, follow the example code to look something like:

jsonData = po.geoJson()
   .on("load", load)

Since allDatesData is an array above, I have to specify which date to populate. Cool, so now we can populate a single date. But how do we animate?

Step 4 – Animate

Since we know Polymap deals with layers, and we have an array of all of our data, seems we just need a way to delete the old layer and add a new layer of the new date’s data. Then, we can make use of the Javascript timer to iterate through the array of data.

var dayIndex = 0;
function startAnimation() {
function refreshData(i) {
   if (i < allDatesData.length) {
      if (jsonData) {

      jsonData = po.geoJson()
         .on("load", load)

      $('#date' + i).addClass('selected');
   } else {

For some added flair, I added an on-display calendar with a few divs and and then some Javascript to make these clickable:

//set up click actions
for (i=0; i<allDatesData.length; i++) {
   $('#date' + i).click(selectDate);
   $('#date' + i).addClass('clickable');

Now we just need some HTML elements to Start and Stop the animation:







<div id="start" onclick="startAnimation();"> START</div></p> <p><div id="stop" onclick="stopAnimation();">STOP</div></pre> <p> </p>"</p>"</p> <p>(Apologies for the weird formatting on the blog).  In theory, you'll have an animated heatmap!  Of course, many details have been left out because so much is particular to the specific dataset, which is likely where one will spend most of their time - formatting the GeoJSON object.  But if you follow the principles and after much debugging it might turn out nicely!</p>"</p>"</p>"</p>"</p>" Add a comment

Lake Stevens Ironman 70.3 Race Recap

This past Sunday I competed in the Lake Stevens Ironman 70.3 triathlon (also known as a half-ironman) - a 1.2 mile swim, 56 mile bike, then 13.1 mile run.  The race was held in Lake Stevens, WA - a little bit north of Seattle.  This would be by far the longest (and largest) triathlon for me so far, with about 1200 athletes competing.  I was also still nursing and injured foot from a few weeks ago, which I think is a pinched nerve or some sort of inflammation.  It is getting better but definitely not 100%. I have been doing most of my running in the pool as of late.  Going into this race, I was hoping to finish in under six hours.  I figured I would finish the swim, bike, and transitions in four hours and give myself two hours to run a half marathon.  Normally this wouldn't be much of a problem for me, but I've never swam + biked before running a half marathon and my foot is still a wildcard.  

Alicia and I drove up on Saturday for packet pickup, bike drop off, and do a quick swim in the lake to check out the course.  Water temperature was 69 degrees - which is just about ideal for me, but potentially a little warm once at race speed.  

Saturday - lots of bikes!

The morning of the race we arrive at transition and I start pumping up my bike tires and notice that my front tube starts to hiss once I reach 100psi.  Uh oh.  This is a new lightweight tube I bought specifically for racing.  Maybe the colder temperatures overnight (mid 50s) did something to this?  I take it over to the bike tech and he says it might be a loose valve stem, so he tightens with some pliers and the hissing sound is gone.  OK, problem solved, right?  

Setting up transition.

Exit transition and head towards the swim.


Open water swimming has gone substantially better since the Olympic triathlon back in early June.  I've been able to swim faster, longer, and more relaxed - which had me feeling rather prepared for this 1.2 mile swim, which is kind shaped like a rectangle - you go out, 90 degree turn left, then shortly afterwards is another 90 degree turn left.  This event used a wave start, every three minutes a new wave would start.  The waves were by age group, so I started with all of the other 30-34 year old males.  Each person was required to get in the water from a dock and tread water until the gun goes off.  I position myself towards the back but near the middle...

And we're off!

First three minutes goes pretty well - a lot of bodies around and not too terrible, but then I start feeling crowded and out of breath.  I start breaststroking and sidestroking to look around.  I fear getting swam over by the waves behind me so I move over to the side and try to get back into my freestyle - still not working great.  Once the faster swimmers in the wave behind me pass me I start to relax a bit and do more freestyle.  Soon I get to the first turn, I make it and then the next turn comes up, make it and then things start to go better.  I end up swimming freestyle the entire second half of the course.  After each buoy I pass, I read the number on it - knowing that buoy 8 is the end.  Soon enough I'm at the end and I think to myself - well, that wasn't terrible, I think the worst part of my day is over.  My parents were there to see me come out and give me some cheers which was also uplifting.

Time: 43:57 (80% rank of all swimmers, that is - 80% of people swam faster than me)
I was actually hoping for around 40 minutes, but given I stuck to the outside I probably swam a little extra distance.  Plus - I'm still not that fast of a swimmer! 

Finished with the swim, heading into T1


Fairly smooth transition, though it was still cold out - still in the 50's so I decide to put on my arm warmers which is a real pain when wet!  Roll out of transition and see my parents again and away we go!

Coming out of T1

There should be bonus points for style.

I found the bike course really fun.  There were many rolling hills and scenic terrain - it would be hard to get bored!  Things are going pretty well on the bike, but then around mile 25 I look down and see a wide bulge of my front tire: "Shit, that tube leaked, I need to replace this".  After a short climb around mile 26 I pull off to the side and start taking out my patch kit.  Rider after rider passes me, but one says to me: "It'll be OK bro".  And you know what, he is right!  I take out the old tube and put the new one in and get my CO2 cartridge ready.  Well, I suppose now is as good of a time as any to try it the first time.  Worked great, and I'm off!  After checking my GPS afterwards it took five minutes for this change.

Pick up some water at the aid station, take my second gel at the bike, refill the Profile HC system, then toss my gel and the water bottle in the trash at the end.  Feeling invigorated now!  The second half of the bike course was much hillier than the first, including one somewhat steep hill mentioned in the pre-race briefing - Ingraham.  I didn't find it THAT steep, I think triathletes just generally suck at hills.  I passed probably 25 people in about 2 minutes on this hill (weighing only 126lbs has its advantages at times) and roll on till the finish of the bike.  

Rolling along

Time: 3:06.29, 18.02mph average (50.7% of all bike times, right in the middle)
I had a long-term goal of completing a half-iron bike ride in three hours, and if you subtract 5 minutes for my flat from this I would be pretty close!  So I'm pretty happy with this time. 

Entering transition I see my parents again and put on my socks and running shoes then head off.  


Well, let's see how the foot is.  I start running and feel the standard discomfort, but it doesn't really get any worse.  Interesting.  Either it's been warmed up from the bike, it's actually healthier, or the rest of my body is so tired the foot discomfort isn't as distracting as it normally is ... but I'm able to have a pretty good run.  My plan is to start off slow and run faster the second half of the run vs the first - the problem is I can't run slow enough!  I was trying to start off around 8:20-8:25 minutes per mile, but I'm running 7:35-7:40 minutes per mile, and I have to REALLY scale it back to get above 8 min per mile.  Also, I have to pee really badly, fortunately there are (limited) facilities at every rest station.  

The first four miles were really really fun - I passed a number of people, the course directed us back into downtown where there were a number of spectators, lots of kids putting their hands out to give high fives - people reading the name on my bib saying "Great job Eric" ... all of this at a very relaxed pace.  Well, around mile 4 the course starts to head uphill and that relaxed feeling starts heading away.  

The run course is a two-loop course, so as I near the end of the first loop there is a very disheartening sign - right for the finish line, left for the second loop.  UGH - I'm starting to feel fatigue and I have to do the exact same run again. Plus my stomach is now feeling empty.  I take my second gel on the run (with caffeine boost) and after about five minutes I'm feeling better.  I then look at the overall time and realize if I can run six miles in about 65 minutes I should break six hours on the day - shouldn't be a problem even if I need to walk a little bit - super uplifting.

Around mile 8 of the run

After a few more minutes I look at my watch and I'm working decently hard to hold that 8:20 pace.  I mentally prepare for that last big hill coming up and focus on short-term goals - OK run to this orange cone, now this one, now this one, don't look up at the hill.  Before I know it, I'm at mile 12, with just over a mile left of the day.  Even though that last mile was probably my fastest, it sure seemed the longest.  I take the right turn to enter the finishing shoot, and with a big smile I've completed my first half Ironman.

Entering the finishing chute

Run time: 1:49:47, 8:22 min/mile average (34.6% of all run times, or faster than 65% of others)

Total time: 5:46:25 - 543rd out of 1166 finishers - well under six hours :)

Complete! (My wave started 14 minutes after the clock started)


Lessons Learned

So what did I learn from this?  In no particular order:

  • If you have a hunch there is a bike mechanical problem, get it fixed before the race.  After I got home and inspected the tube there was a separate VERY small hole in the tube - this is probably what was leaking the whole time.
  • Changing a flat is not the end of the world.  I lost only five minutes
  • I can survive a big(-ish) swim.  I also stayed fairly calm even when things weren't going 100% to plan
  • I should have refilled my water bottle at the 3rd bike aid station - I was nearly out of fluids with 8 miles to go on the bike
  • I rock at the climbs during the races (at least compared to everyone around me).  This is good because Ironman Canada will have a few nasty climbs.
  • Calf compression sleeves worked great, first time I've worn them for more than about 30 minutes and I'll likely continue to do so for long runs
  • Pacing on the run - really need to pay attention to this right out of the gate so at to not overdo it.
  • None of the three events went perfect, and the race was still a pretty big success.  If I expect the unexpected, dealing with it mid-race won't be as stressful.
  • Nutrition was just about enough, but maybe I'd want a little more on the bike: 
    • Swim: 1 Clif shot gel 5 minutes before
    • Bike: 3 Clif shot gels + 1 bottle of 325 calories mixed with Carbo Pro, Herbalife, and 2 Nuun tablets
    • Run: 3 Clif shot gels at miles 4 (was supposed to be 3 but forgot because I was having fun!), 6, and 9
  • 70.3s are fun!  Looking forward to doing another one!

Alicia and I with our finisher medals

With my parents

Add a comment