February 2013


February was taper, race, recovery.

Month Distance # Workouts Avg per Workout
January 131.5 Mile 13 10.1154 Mile
February 79.0286 Mile 9 8.78095 Mile
Total 210.529 Mile 22 9.56948 Mile

Running 2013 2


Hmm. When does racing season start? March, you say?

Month Distance # Workouts Avg per Workout
January 3.7 Mile 1 3.7 Mile
February 15.2 Mile 4 3.8 Mile
Total 18.9 Mile 5 3.78 Mile

Cycling 2013 2


I’m back in the pool for the first time in months, and it’s been going really well the past few weeks.

Month Distance # Workouts Avg per Workout
January 0 0 0
February 3950. Yard 3 1316.67 Yard
Total 3950. Yard 3 1316.67 Yard

Swimming 2013 2



Month Distance # Workouts Avg per Workout
January 37.64 Mile 12 3.13667 Mile
February 50.6 Mile 21 2.40952 Mile
Total 88.24 Mile 33 2.67394 Mile

Walking 2013 2

Cross Country Skiing

Month Distance # Workouts Avg per Workout
January 0 0 0
February 3.03 Mile 1 3.03 Mile
Total 3.03 Mile 1 3.03 Mile

Skiing 2013 2

Fuego y Agua, Take 2

Fuego Y Agua Banner

The 2012 Fuego y Agua 50K was my first ultra marathon race. I had done a handful of ultra distance fun runs, but none with an entry fee and a race bib. I enjoyed the experience, but my race left a bit to be desired. Needless to say I learned a lot.

That was just the start of a breakthrough year for me. Throughout the year I raced 26 times, with 3 wins, 9 podiums, and 18 top ten finishes. I ran two more ultras, which were both huge successes for me. I was at the top of my game and I wanted to exact my revenge on the slopes of Volcan Maderas come February 2013.


I thought long and hard before coming up with a goal. With better training, improved fitness, more ultra racing experience, and detailed course knowledge I estimated I had a realistic chance to run the challenging 50 Km course in 6 hours (significantly faster than the nearly 8 brutal hours it took last year). With last year’s 50K winner (and course record holder) signed up for the Survival Run, I figured a 6 hour time would probably be good enough for a top 3 finish, possibly even a win. Honestly, I didn’t care what place I finished, I just wanted to crush the course.

Good luck Rob

After hearing all about the race last year A group of five of my Buffalo running friends joined me in registering for Fuego y Agua this year. Unfortunately, our friend John didn’t actually make it to Nicaragua, as his son was tragically killed in a car accident days before he planned to leave. The rest of us were all thinking of John and his family throughout the trip, and we dedicated our races to them.




From three different starting points in the U.S. we all arrived in Managua at the same time. The next day we went sightseeing in Granada. The following day we made our way to Ometepe. As we were finishing a delicious lunch at the Cornerhouse in Moyogalpa two guys walked in the door and sat down at the table next to us. I immediately recognized them as elite runners Yassine Diboun and Nick Clark. I eventually worked up the courage to approach them. They were both very friendly. We briefly discussed 3 Non-Joggers (a bullshit running podcast on which Yassine is a frequent guest), Ometepe (where Melissa & I lived in 2006-2007), howler monkeys (which Melissa studied while we were there), Fuego y Agua (which I raced last year), Volcan Maderas, hydration, etc. A bit starstruck, it took me a while to process the fact that I had actually just given racing advice to a couple of the biggest names in the sport.


The rest of the Buffalo stayed in Moyogalpa while Melissa, Will, and I took the bus to our former home in Mérida to visit with friends on the island. While there I did a short run to scope out the new 50K finish line, which was unfortunately a full kilometer further down the road than last year. It’s not like the course was really that accurately measured to begin with. More distance, more rolling hills, more bad footing. I’ll deal with it.



The next morning I took the bus back to Moyogalpa for packet pick up and the pre-race meeting. I arrived back to my hotel around 7pm. I got everything ready for the next morning, watched Unbreakable on my iPhone, and fell asleep around 9pm. Continuing my streak of 3 or fewer hours of sleep the night before an ultra I predictably woke up at midnight and laid in bed until my alarm went off at 3 AM.


Just before the race began at 4 AM the organizers asked all of the Survival Run participants to move to the front, so I dropped back behind them… which was a mistake, because I immediately had to weave through them all as soon as the race began. By the time we left Moyogalpa I had caught up with the leaders and we turned onto the dusty dirt road.

The leaders.

Now, I know what you might be thinking. Rob, don’t you have a long history of starting races too fast and fading by the end?

Yes. Yes, I do.

But this was part of my plan. First, if I was going to run this course in 6 hours I would have to feel good and execute everything perfectly. I’ve done this before. Many times, in fact. I’ve also failed to execute perfectly a number of times. I was leaving no margin for error here. This was either going to be a spectacular success or a spectacular failure. Either way, I wanted the race to be spectacular. It was a huge gamble.

Second, how often does someone like me get a chance to run shoulder-to-shoulder with some of the top elite runners in the sport? I formed a lead pack with Dave James, Nick Clark, and Yassine Diboun.

Take a minute to let that sink in.

This was a once in a lifetime opportunity. We weren’t running super fast, maybe 7:15-7:30 pace. And these guys had 62 grueling miles ahead of them, whereas I had a measly 31. How hard could it be?

Last year’s race had reflective course markers for the early miles which were run in the dark. This year the course markers weren’t reflective and I didn’t see a single one of them. I remembered the course from last year. Well, I remembered it as well as you can remember a trail in the pitch black dark. Fortunately we were told there would be volunteers at every major intersection, and before we knew it we reached one. A local guy on a motorcycle sat there and instructed us to turn right. So we did.

Still no course markers to be seen. We eventually made it off the dirt path back onto the paved road. I immediately recognized this was not the place where we hit the paved road last year. So we were off the course, as was the chase group that caught up with us by this point. We made the left turn and we would eventually get back on course. Nobody had any idea where we went astray (I think the guy on the motorcycle was actually supposed to instruct us to turn left) or how far we ran out of the way (comparing my GPS data to last year’s data I computed we ran an extra ⅓ mile).

The blue path shows the course from last year, while the red path shows our detour

A few runners were pretty upset by the apparent lack of course markings, while others didn’t seemed bothered at all. At this point we were all in the same boat, so I wasn’t panicking yet. We picked up the pace for a few miles on the paved road. Amusingly, during this stretch one of the elite runners mistook me for Dave James. We were both running at the front, both with shaved heads, no shirt, and black shorts.

I made it in and out of the first aid station quickly. After the aid station the group splintered a bit. Dave James took off on his own. Nick Clark chased him, and I chased Nick. We went up a long gradual hill, then down a steeper one. At the bottom Nick made contact with Dave just as we reached a soft sandy beach, while I remained about 20 meters back.

The beach was tricky last year, because the turn off the beach was hard to see (even when it had a reflective marking). Half the field missed the turn last year. I had barely seen the marker just in time. This year I ran with my head turned sideways so my 500 lumen headlamp could illuminate the area. I really didn’t want to miss that marker. It was the only remaining place on the course I wasn’t 100% sure about. We ran and ran and I saw nothing. We ran and ran and I saw nothing. I had a horrible feeling in my gut that we missed the turn and would have to backtrack. Eventually the beach came to a dead end at a forest. We missed it.

We ran into a couple of locals on horseback and we stopped to ask them for directions. We had a hard time communicating, but it was clear the path to Ojo de Agua was further back on the beach. But where? Eventually one of the locals turned around and lead us to it. All the while we were running into more and more people who missed the turn and now had to backtrack with us. Once we found the trail I looked around for the markers and I still didn’t see any. But at least I recognized the trail.


The time we lost felt like an eternity, but was actually about 16 minutes. We ran 1.2 miles out of the way and we stood around for a while. Dave was pissed and took his fury out on the trail by picking up the pace to catch back up with the few who miraculously found the turn. Nick seemed to take the minor setback in stride, though he matched Dave’s acceleration. I, on the other hand, was pretty devastated by the way events were unfolding. I left zero margin for error, and after 11 miles of running I had gone off course twice, lost 20 minutes, and wasted energy I couldn’t afford to waste. Now Dave and Nick have pulled away from me for good, and I’m being caught and passed by runners who had been running a minute per mile slower than me and who were a hell of a lot less tired.

Ultra running is as much mental as it is physical, and I was struggling. I slid into a very dark place, where I would remain in purgatory for hours. I wanted to drop out of the race at the Ojo de Agua aid station at mile 15, but I knew Melissa was waiting for me at the next aid station. So I decided to at least go that far. Physically, I was doing okay. My pace felt like that of a crawl, though in reality I was still ticking off 8:30 miles.

IMG 1495
Looking like death warmed over

Just before the start of the climb up Maderas I saw Melissa. I explained everything that had happened and how upset I was about it all. She told me what I needed to hear to keep going. So I did. I wasn’t looking forward to it, but I was going to climb Maderas anyway. From the aid station I walked the entire thing. At first I was hiking quickly, covering the first mile in 20 minutes. Fatigue set in after about 1000 ft of climbing. Between 1000 ft and 3000 ft I was barely moving, clocking two 45 minute miles on the steep ascent. As bad as things were I was still doing better than last year.


I was eating, drinking, and taking electrolyte pills the whole time, but for some strange reason the gel I ate at 3000 ft completely snapped me out of my funk. It was like a switch had been flipped and I was a whole new person. The last 1000 ft of climbing were almost effortless. Before I knew it was descending into the crater, chugging water at the aid station, and climbing back out again.

The early parts of the descent through the jungle gym were slow, but I picked up speed the further I descended. I started to have some pain in my right knee (my good knee) so I wasn’t hammering it as fast as possible, but I was making good progress. Finally I exited the forest and I was able to run at a pretty good clip down the rest of the rocky trail, before making it out to the road, and on to the finish line. Melissa and Will were waiting there for me, and I was very glad to be done.


I finished in 7h20m, 35 minutes faster than last year. My time from the start to the base of the climb was the same as last year (I ran faster, but significantly farther too). My time up Maderas was 35 minutes faster. My time down Maderas was the same. The race did not go how I wanted it to go, but it was another good learning experience.

IMG 1507
Back to life

My fellow Buffalo Jen was the 3rd place female in the 50K. She came in with a huge smile on her face and described the Maderas climb and descent as the most fun she’s had in ages. And then it hit me. I couldn’t have described my experience as fun. And that’s where I really blew it–not in starting too fast, not in missing turns and losing time–but in taking this amateur athletic competition just a bit too seriously and not enjoying it as fully as I could have. There’s no reason I had to go to that dark place when things went wrong. I was reminded of that again while reading Nick Clark’s race report:

Getting off course has become such a regular occurrence in my racing history that I’m barely phased by the turn of events. I’m running through a banana plantation on a volcanic island in a country that I’ve never visited before: life is pretty damn good and by crickey I’ve got all day to catch back up to those that passed through while we were wandering around on the beach.

This was the first time I had ever gone off course like that in a race. Nick was next to me the whole time for both of the missed turns. He went on to win the 100K with a new course record. I choked.

I was sorely disappointed after the race. But I’ve had a few days to put it in perspective and I’m over it. The race wasn’t all bad.

  • I ran very strong in the early miles, and I did it fairly comfortably.

  • Not only did I get the chance to meet and talk to elite runners I’ve read about for years, but I actually got the chance to run with them for 11 miles.

  • I never had the horrible cramping problems I encountered last year.

  • I wasn’t thrilled with my ascent of Maderas, but it was still significantly faster than last year.

  • Though not as high as I hoped, I still managed to squeak out a top ten placing in the 50K.

  • I’ll be better prepared mentally if I every find myself sliding into such a dark place in future races.

  • We had a great Buffalo road trip, with everyone finishing their races (Don in the 25K, Rob, Jen, Judy in the 50K, Brian in the 100K).


Spectating at the USA Cross Country Championships

The 2012 & 2013 USA Cross Country Championships took place in Forest Park, about 2.5 miles from my home. I knew about the 2012 race months in advance before completely forgetting to go. For 2013 I briefly entertained the notion of running the community (i.e. non-elite) race, but given the extremely short distance (4K) and my recent training (for a 50K), it wasn’t a great fit. Instead I walked over there today to watch the elite races.


The elite women ran 8K (5 miles), and multiple olympians were in the field.

Elite women start
The women start

Elite women
The leaders pulled away quickly

Shalane Flanagan leads Kim Conley
Shalane Flanagan and Kim Conley lead for the entire race

Deena Kastor
Deena Kastor in 3rd

Chase group
The chase pack

Shalane wins
Shalane wins

The race results are here.


The elite men ran 12K (7.46 miles). The announcers made sure to mention repeatedly there were 10 guys who had run a sub-28:00 10,000 meter race. A huge lead pack of about 30-40 runners stayed together through the first 4 laps of 6.

Elite men start
The men start

Elite men large lead pack
Big lead pack

Dathan Ritzenhein, Chris Derrick, and Matt Tegenkamp pull away
Dathan Ritzenhein, Chris Derrick, and Matt Tegenkamp pull away with 4K to go

Chris Derrick, Matt Tegenkamp, Dathan Ritzenhein lead on the last lap
Chris Derrick, Matt Tegenkamp, Dathan Ritzenhein lead on the last lap

Second Wind runner Jeff Kelly
Second Wind runner Jeff Kelly running with the elites

Derrick won, Ritzenhein took second, Tegenkamp took third. The race results are here.

January 2012


11,879 feet total ascent.

Month Distance # Workouts Avg per Workout
January 131.5 Mile 13 10.1154 Mile
Total 131.5 Mile 13 10.1154 Mile

Running 2013 1



Month Distance # Workouts Avg per Workout
January 3.7 Mile 1 3.7 Mile
Total 3.7 Mile 1 3.7 Mile

Cycling 2013 1

Walking & Hiking


Month Distance # Workouts Avg per Workout
January 37.64 Mile 12 3.13667 Mile
Total 37.64 Mile 12 3.13667 Mile

Walking 2013 1


15,130 feet total ascent.

Month Distance # Workouts Avg per Workout
January 29.56 Mile 6 4.92667 Mile
Total 29.56 Mile 6 4.92667 Mile

Stairmaster 2013 1

SHivering Icy Trail Run

And here’s another entry from the better late than never category.

In the month before Fuego y Agua I wanted to do a tune-up race in the ballpark of 10-15 miles. On January 12 there was a large, well organized 20K (12.4 mile) race in Forest Park on pavement. It was a beautiful sunny 50˚F morning. I chose a different option. At 5pm that night I ran the SHivering Icy Trail Run (let that name sink in a minute), a trail half marathon in the dark in 33˚F rainy weather.

I chose wisely.

This wasn’t an actual race, more of a fat-ass event. There was no official entry forms or fees. But a surprisingly large group of 40-ish people showed up in just awful weather for a good time out in the woods. And several people showed up to run hard.

A group of five or six of us went off the front early. Two of us pulled away just before the first section of single track. By the end of the first section I was by myself. Back onto a gravel road a couple miles into the run I had to take off my glasses because they were fogging up. And my vision is the worst in the dark. Then I hit a new section of single track that had been added since the last time I had been to this particular trail last spring. It was very muddy and entirely off camber, so my progress slowed significantly.

Then there was the extra credit. At some point (I had no idea where) along the trail there was a cemetery. We were supposed to find the cemetery and read the name on the largest tombstone there for bonus points or something. I noticed the cemetery and found the tombstone. As I made my way back out to the trail Travis Redden caught up to me and we ran the next several miles of single track together. In all honesty, he was flying and I struggled to keep up on the technical sections in the dark.

Once we made it back out to the gravel road with about three miles to go I dropped the hammer a bit (less because I wanted to win the fat-ass event, but more because I was freezing cold). I finished in 1h43m, a few minutes ahead of Travis. As the first finisher I received a major award.

Fastest SHITR

I was cold and wet while running. The instant I stopped I got really cold… which prompted me to get straight to my car to warm up. So I didn’t stick around long. Of course, in my haste I neglected to mention the extra credit (was it Caroline?), so I guess I’ll never know what that would have been good for.

IMG 2365
Rob at the finish line (photo from Rock Racing)

The event was super fun. I got the hard run I wanted, along with practice running in the dark, practice running on a fairly unfamiliar trail, and practice running in shitty weather. Mission accomplished.

You can read the event organizer’s report here.

Running in the Smokies

For the past few months I’ve been training my ass off for the Fuego y Agua 50K on February 16. Last year I handled the distance fine, I handled the heat fine, but I completely fell apart on the long, steep ascent of Volcan Maderas.

I have a score to settle with Maderas

Just as last year I’ve done lots of distance training and as much heat training as I can (in a sauna). But this year I’ve focused much more on hill training. I run as many hills as I can find. I spend a few hours a week on a stair master. I run hill repeats. But I had a feeling that might not be quite enough. The Saint Louis area is quite hilly (particularly in comparison to central Illinois), but the biggest hills we have here are around 400 ft, whereas Maderas is 4,000 ft.

Gatlinburg and Mount Le Conte
Gatlinburg with Mount Le Conte in the background

So I took a little vacation. Last weekend I drove to the Smoky Mountains, the nearest place with 4,000 ft climbs. I drove all day Friday, and got a good night’s sleep in Gatlinburg, TN. The next morning I went for an epic (by my standards) mountain run. Starting around 1,300 ft elevation I ran uphill for 3 hours to the peak of Mount Le Conte at 6,593 ft, just over 1 mile vertical ascent. The trail was around 11 miles. So I ran 5300 ft ascent in 11 miles in the same time (actually, slightly less) as it took me to race 4000 ft in 4 miles up Maderas during the race last year.

Steamy stream

Bull Head
Bull Head trail

View from the top

It was very cold at the top, with deep snow in places, so I didn’t stick around too long. The 11 mile return trip downhill was easier physically, but it was much harder on my body. My knees were aching pretty bad by the end. There was a lot of ice-covered rock at the top which made for slow going at times. The rest was muddy.

Muddy trail

Rob ready for Maderas?

I planned to go hiking on Sunday morning before returning home, but my knees were still too sore, so I did a bit of automobile tourism. On the way home I drove one stretch of 7.5 hours, which is by far the longest I’ve ever driven non-stop. So that was something.

The least prepared I’ve ever been for a race

Better late than never.

Each fall there is a cyclocross race a half mile from my house. I missed out on racing it last season (2011) due to absent-mindedness. I almost missed out on racing it this season (2012) for the same reason. I remembered which weekend the race was, and I thought I knew which day it was on (Sunday). I just finished eating a big lunch on Saturday when I sat down on the couch to check on the start time of the race tomorrow. The race starts at 1 pm. Today. It’s 12:25 pm. I have a full stomach. I haven’t ridden my cyclocross bike in weeks. This is the least prepared I’ve ever been for a race.

I spent about three minutes deciding whether or not to go. I quickly changed clothes, grabbed my bike (which thankfully was in working order), and rode over to register for the race. By this time it was 12:50-ish.

I started mid-pack and spent the first few laps moving up. By half way through the race I could only see one guy ahead of me and I was catching up to him. With two laps to go I dropped my chain and lost some time. With one and a half laps to go I dropped my chain and lost some time. With one lap to go I dropped my chain and lost some time. I had no chance of catching up after that triple whammy.

Concordia Cross

I ended up finishing, wait for it, 3rd. Apparently there was a guy off the front who I never saw. Anyway, considering my complete and utter lack of preparedness I was quite pleased with the result.

This ended up being my last race of 2012, and it capped off what I consider to be a breakthrough year for me. I raced 26 times (not including the weekly practice crits). I had 3 wins (in 3 different sports), 9 podium finishes, and 18 top ten finishes. Furthermore I made it through such a tough year with no major injuries. Hopefully I can maintain this momentum into 2013.

Wild in the Woods – Klondike Park

In my previous four races I hadn’t finished lower than fourth place overall. The small Klondike Park 7 mile trail race two weeks ago seemed like a perfect fit for me so I went into it thinking I would probably win. That was my first mistake.

Wild in the woods klondike park
Photo from here.

I started out at what felt like comfortable pace. The first mile was on a paved path through the park. Four runners stayed together in the lead pack. I let the others set the pace. It felt slow. Just before the first mile marker we hit The First Big Steep Hill. Feeling great, and seeing the others seemingly struggle, I took the lead, thinking I would probably just finish the last six miles alone. Towards the top of the hill my watch beeped, indicating the first mile had passed. I for some reason chose not to look at my time, which I have since come to regret. I now know we ran the first mile in 6:07… including the big steep hill.


Much to my dismay the others stayed on my heels as we entered a section of very technical single-track trail. I pushed the pace, but they all were able to follow. It was sinking in that I did not have this thing in the bag. We exited the woods together onto a wide flat crushed gravel path. I started paying attention to my mile splits, a few 6:15-ish splits in a row, as two guys pulled away from me. I was slowly beginning to pay the price for starting too fast, a tale I’ve told many times before.

There was another big hill around mile 5, which completely destroyed me. I passed Melissa & Will shortly after that. She said I looked fine, but I was totally faking it. I then entered another section of very hilly technical single-track trail. In the span of one mile my splits ballooned by 3 minutes. It felt like a death march. Another runner caught up to me from behind, got lost, caught up to me again, then passed me… which didn’t do much for my confidence.

I finished in fourth place, extending my streak of top-four finishes to five consecutive races, though this was by far the ugliest of the bunch. At some point the following will sink in:

  • Don’t start too fast, stupid.
  • Don’t underestimate a trail you haven’t run before.
  • There’s a lot of good runners out there.

The Keynote

As I write, Melissa & I are at Chicago O’Hare airport waiting on our (delayed) flight to San Francisco. I am attending Apple‘s Worldwide Developer Conference (WWDC) this week. Melissa is along for the ride.

Since I started working full time as the primary Mac OS X developer of Mathematica at Wolfram Research in 2001 I have attended this conference every year except 2006. That year the conference was scheduled (Apple has been really bad lately at waiting until the last minute to schedule this huge conference) during the week Melissa & I were moving to Nicaragua, so I missed out. The conference is exciting every year, but none was more exciting for me than 2005 when I (along with my boss Theo Gray) participated on stage during Steve Jobs’ keynote address.

Note: some of this information was confidential at the time, but is now mostly publicly known. I can’t imagine any of the details I mention below would still be considered sensitive information.

On Wednesday night the week before WWDC I got a call at 9:30 pm from Theo. I was almost ready to go to bed. He asked if I would be able (and willing… but more able :) ) to fly to California at 6 am the following morning. I suppose I could, but why? Theo went on to tell me that Apple had a super secret project and they wanted our help, but he wouldn’t tell me what the project was.

I have since learned that he actually knew what the project was at the time of that call, but he couldn’t tell me. Stephen Wolfram, the founder and president of Wolfram Research wouldn’t sign off on the idea until he knew what was going on. Steve Jobs told Stephen Wolfram & Theo what the project was and they agreed to take part… but they couldn’t tell anyone else.

I spent the next two hours packing (including the Dahon, my folding bike at the time) before going to bed. Early the next morning I arrived at the Champaign airport. Apple purchased my one-way ticket to San Jose (by way of Chicago). An Apple limo picked me up at the San Jose airport and drove me straight to Apple’s campus in neighboring Cupertino. Luggage still in hand I entered 3 Infinite Loop (I think). A few minutes later I was in a meeting with Ron Okamoto, Vice President of Worldwide Developer Relations.

Ron told me what the secret was, that Apple was building a Mac which used an Intel x86 processor. They had ported all of Mac OS X to this new architecture (Darwin, the open source core of Mac OS X, already ran on x86). They intended to demonstrate this new x86 version of Mac OS X on Monday’s WWDC keynote. They wanted to demo a 3rd party application running on the x86 Mac. They chose Mathematica to be that 3rd party application. He asked me if I thought it would be possible to get Mathematica up and running on Mac OS X Intel by Monday.


That’s a potentially huge task. Our code is fairly portable (at the time Mathematica ran on several Unix platforms in addition to Mac and Windows), but supporting new platforms usually takes a fair amount of time. Ron told me Apple was prepared to provide significant resources to make this happen, including a small team of Apple developers and immediate access to any other relevant Apple developers. I was cautiously optimistic.

(Now 30,000 feet over Iowa)

We travelled across De Anza Blvd (luggage still in hand) to a different Apple building where I was ushered into a conference room with a single desktop computer sitting on the conference table. It was in the same metal case as Apple’s high end desktop computers at the time, the PowerMac G5. I think the case even said “G5” on the side. From the outside you couldn’t tell the difference between this machine and a G5 unless you carefully peeked through the holes on the front and noticed it didn’t have the huge heat sink the G5’s had.

I was greeted by the team of Apple engineers (Matt, Eric, & Ronnie) who would be providing technical assistance in the porting process. This place was not only hidden from the public, but it was hidden from the rest of Apple. Very few people at Apple were even aware this project existed. The four of us got busy.

I sat down at the Macintel and immediately began working. The experience wasn’t just familiar it was identical to any other Mac I had used. I was blown away by how seamless Apple had made the transition. The whole OS was there it all its glory, including every bundled application (even Xcode). I could just work exactly like I do on any other Mac.

But wait, sometimes I use BBEdit to edit text. I guess I won’t be able to do that since it (or any other 3rd party application) hasn’t been ported yet. “Why don’t you just go ahead and try it?” Matt said to me as he tried to hold back a smile. It hit me immediately. “You’re kidding, right?” I downloaded BBEdit, double clicked the icon, and it ran. I ran just like it does on any other Mac. Apple had incorporated (with technology licensed from another company) a PowerPC translation layer into the OS. This meant that nearly all existing Mac applications would run on the new Intel machine, with a slight performance penalty. This was amazing news, as it meant the new machines could be adopted immediately by users rather than waiting until all their applications were ported. Very exciting.

Back to work. We started with MathLink. This is a low level library used by both the Mathematica user interface (FrontEnd) and the computation engine (Kernel). With one set of flags MathLink builds for Mac OS X PowerPC and with different flags it builds for x86 Linux (or Windows, etc.). It only took a few minutes of experimentation with the Makefile and headers to find the right set of flags to treat the OS as Mac OS X and the architecture as x86. The elapsed time from entering the conference room to having a built, fully functional MathLink library was probably around 20-25 minutes. As we progressed our excitement grew.

Xcode target architecture

Next was the Mathematica FrontEnd. I normally spend all my time working on the FrontEnd, so this part didn’t worry me much. The FrontEnd is built with Xcode, which had a new “architectures” setting checkbox. We checked the checkbox for the Intel architecture (actually, we didn’t because Intel was the default target architecture when building on Intel… but we did verify the checkbox was properly set). Within 4-5 minutes the FrontEnd built with only a couple of minor build errors which were easily fixable. After 10 minutes working on the FE we had it built and running. It wasn’t running flawlessly, but it was a very good start. I had only been at the secret Intel machine for around a half hour. This was getting really exciting.

The next step was the one which caused me the most concern, the Mathematica Kernel. The reason for my concern was that I don’t often work with the Kernel. I knew how to build it (the build system is somewhat complicated) and I knew roughly how the code was organized, but there are all sorts of minor details which could really slow down the process. It relies on many external libraries (open source and commercial) and custom build tools. Fortunately, the Kernel, like MathLink, already ran on Mac OS X PowerPC and Intel Linux & Windows. It took a while longer to figure out some of the proper build flags, and some of the build errors weren’t entirely obvious.

This is where Matt, Eric, & Ronnie really came through. They had each spent a lot of time porting open source applications to Mac OS X Intel to learn what types of issues developers might run into along the way. Each time we encountered some sort of problem in an open source library one of them would go off on their own for a few minutes to resolve the problem while the rest of us kept hammering away. Every few minutes we would get further and further along in the build process with new issues popping up all the time. It was like an assembly line. In parallel.

After about 90 minutes (2 hours from when I entered the room) we had the Kernel running, the FrontEnd running, and the two processes were able to talk to each other through MathLink. Again, it wasn’t perfect, but nearly everything just worked.

News spread up the ranks. Within minutes we had high level executives stopping by to see the first 3rd party commercial application running on Mac OS X Intel. By early evening Theo (who took a later flight) arrived frantically asking what he can do to help. He was a bit shocked, and very pleasantly surprised, that it was mostly done.

Friday we worked to fix bugs and showed off the software to an ever growing number of people. Since Mathematica already ran on Intel processors on other platforms, most of our cross platform code was byte order agnostic. There were a few cases where Mac specific code was assuming big endian byte order, particularly related to Quartz (bitmap drawing) and OpenGL. There were also some issues with Quickdraw PICT drawing.

Friday evening some of the Mac rumors sites (original CNET article appears to have been removed) reported that Apple would be announcing the switch to Intel processors at Monday’s keynote. Rumors like this had been published for years, so it wasn’t that out of the ordinary, but this report was different. It contained many specific (correct) details rather than just wild speculation (like every previous report like this). It was clear someone in the know had blabbed. The conference room was silent for a few moments. Oh well. Until Monday, it’s still just a rumor.

Saturday morning we drove up to San Francisco to prepare for the WWDC keynote. We had a rehearsal where I met and shook hands with Steve Jobs. I had heard horror stories about his temper, but he was in a great mood when I met him… sitting perfectly relaxed, legs crossed, smile from ear to ear. I could tell he was excited.

Theo practiced his speech, asking Jobs for feedback along the way. The funny thing was that Steve was so happy he kept telling Theo “say whatever you want” or “talk for as long as you want.” Meanwhile I set up the demo machine (and backup demo machine) with our freshly built Mathematica for Mac OS X Intel.

Monday morning before the keynote Theo & I hung out in the VIP lounge. Woz (Steve Wozniak, the other co-founder of Apple) was there, Sergey Brin (co-founder of Google and former Wolfram Research intern) was there, along with many other influential people in technology.

Once the keynote started we sat in the front row on the far right side. Midway through the keynote Jobs called us up to the stage. Theo described our experience porting Mathematica to Mac OS X Intel over the previous few days. I drove the demo machine as he talked. It was a big hit. Theo captivated the audience. At one point Theo mentioned my name, which immediately caused 4,000 people to turn their heads to stare at me. It was a little awkward (which is quite evident in the video). Had I known that was going to happen I think I could have played it a little more cool. Anyway the demo was a success. Mission accomplished.

Note that a few minutes of the demo were edited out of this video for some reason.

That wasn’t all for that WWDC. On Tuesday I gave a 10 minute presentation during Bud’s science session about Mathematica on Mac OS X, detailing how we utilize various OS features. This went more smoothly for me as I had actually been preparing for it for a few weeks. Later that week I spoke about Mathematica for a minute or two in Ernie’s 64-bit session. I went from participating in zero sessions my first four WWDC’s to three sessions in 2005, back to zero sessions every year since. Perhaps that was my 15 minutes of geek fame (actually, the total time I spent on stage was almost exactly 15 minutes).

Last year I attended a reunion for the non-profit organization where I worked in college, ASP. A guy who I hadn’t seen in 8 years came up to me and asked me if I was in a Steve Jobs keynote a few years ago. “I thought that was you…”

Anyway, tomorrow’s 2009 WWDC keynote won’t be as exciting for me, though I’m sure it will still be exciting. I won’t be participating in the keynote. At least, if I am they haven’t told me yet. Always with the secrecy.