The Tale of Two Trails

The Allerton Trail Race was this morning. As you may recall, I’ve been scouting the course the past two weekends.

On the 11th the course was flooded pretty badly in four places. Everywhere else the trail was muddy, but runnable. The water came right up to the edge of the trail.

On the 18th the water was a couple feet lower and there was no real flooding.

On the 25th (race day) the right height was, well, this chart speaks for itself.

Sangamon River height

The water was 3.5 feet higher than it was when there was serious flooding. Half the trail was literally under water. Fortunately, the race organizers changed the course to keep this a running race rather than a swimming race. The new course used some parts of the old trail, but added a few new parts that have never been used before.

Despite my best intentions of starting out easy, I started out fast. I quickly settled into 10th place before the end of the first mile. We crossed the big meadow where the finish line is located, but we were just getting started. The big rolling hills slowed me down, but they slowed everyone else down too. We ran back into the woods towards the minotaur before heading down a large set of stairs, only to immediately turn around and run right back up them.

A short distance later we hit water. This wasn’t a crossing, it was knee deep standing water on the trail. For 200 meters. I leaped through it only to find the trail very uneven and root-covered under the water (where I couldn’t see it). After a couple hundred meters the people in front of me finally decided it was better to run through moderately dense brush beside the trail than to brave the water any longer. I followed suit, as I’m sure did everyone behind.

With the frigid water behind my wet calves were now numb and I was running even slower. As we approached the Sun Singer I noticed the leader was heading back down the trail towards me, having already circumnavigated the Sun Singer. I thought this was peculiar because some of the race volunteers informed me that the new route included a half mile section of road… but the only road around was straight ahead (i.e. not the direction the leader was running). This meant one of two things, either my good friends gave me incorrect information, or the leader was off the course. Ugh.

As I reached the Sun Singer I witnessed a bit of chaos. A few people had run all the way around it and were now wondering where to go. The volunteers did not know. When I got half way around I noticed painted arrows on the road indicating a turn which none of the first 5-6 runners took. I was in a group of 4 who all made that turn.

Further chaos ensued about a half mile later when the 3 new leaders (who were not the original 3 leaders) continued down the road past another painted arrow on the road indicating a turn. Again, the group of 4 I was in made the turn. Suddenly I was in the lead pack. One of the runners from the lead pack (who had been off the course twice at this point) turned around and quickly caught up to us, while the others disappeared.

Here’s a (time-accurate) comparison of my 2008 (red) vs. 2009 (blue) Allerton trail race. Something funky happened with my GPS in the last half mile of the 2009 race. I didn’t cut the course, I swear!

I finished the race reasonably well. I almost caught up to the guy I had been chasing (10 meters behind) since the half mile mark. I barely edged out (by split second) a challenger from behind. I finished 5th place. I probably deserved 10th.

I have mixed feelings about the results. On the one hand, from the sportsmanship point of view, other racers deserved to finish ahead of me. On the other hand, trail racing is not like track or road racing. You really have to pay attention to the course markings. All of the turns the lead runners missed were marked. Granted, the course was new and nobody had run it before.

I won a hat for finishing 2nd in my age group. Fig seemed to like it.

Fig's new hat

The Swing-a-majig

We were lucky enough not to be the first of our generation of friends and family to have a child. As a result, we’ve been fortunate enough to receive many hand-me-downs. Will loves his little hand-me-down bouncer.

Big shoes to fill

Melissa’s sister was nice enough to give us (among other things) a nifty swing. There was a slight hiccup with the swing though, when I started to assemble it I realized the entire assembly was there except for the seat… which I could not find anywhere. I searched the house high and low. Finally, Melissa asked her sister if she happened to sill have the seat. Her sister couldn’t find the seat.

Melissa started looking on Craigslist for swings. After a few days she noticed someone selling the exact same swing for a reasonable price, with the caveat that it didn’t run on AC power (battery only). Well, since it was exactly the same swing this limitation didn’t really matter because we could just take the seat off this one and attach it to the one we already had. We got the swing, swapped the seat, and Fig was good to go.

Swing-a-ma-jig

A day or two later we got a call from Melissa’s sister… she found the seat. Oh well, now there’s an extra. A day or two after that, a brand new swing (the exact same model) arrived at our house via UPS. My mom (who was well aware of our earlier dilemma) was kind enough to get the swing for us. In less than a week we went from zero functioning swings to three!

Well, I returned the new one, we’re using the pieced together swing, and we have still enough spare parts to build an entire new swing, should the need arise. We are fortunate enough to have many wonderful people who care about us enough to help us out in these stressful times, and for that we are truly grateful.

The Baby Burrito

Newborn babies have a tendency to unintentionally flail their arms about, which can agitate them, which can cause them to flail further, which can agitate them further, and so on.

One heck of a yawn

The easiest way to calm them down is to swaddle them. If, like me 10 days ago, you’re wondering what the hell that means, think of it like this: wrap them up like a burrito. With the baby’s arms held closely by their side the flailing never starts. Baby will remain calm (unless, of course, there’s something else wrong…).

I picked up the technique rather quickly from the nurses at the hospital after William was born.

  • Find a soft, flat surface like a bed or couch.
  • Lay the swaddling blanket (apparently this is a standard sized thing) in the shape of a diamond on the flat surface.
  • Fold the top of the diamond down a little ways (the exact amount is not important).
  • Lay the baby on the blanket so the top (folded) edge is behind the baby’s neck, above the shoulders.
  • Pull the baby’s arms down to his/her side and hold them there. The baby will resist, but you can easily overpower a newborn. I find it easiest to hold both arms down with one hand so the other hand is free to fold the blanket, but your hand-size-to-baby-size ratio may be smaller than mine. In that case just hold one arm down at a time and use the blanket to hold the first arm down while you move the second arm into place.
  • Fold the left corner of the blanket tightly across the baby’s chest, over both arms, and tuck it in just a little bit on the right side of the baby (your right side, baby’s left side).
  • While still holding the baby’s arms down (they could still get loose at this point), fold the bottom corner of the blanket up over the baby’s legs and torso.
  • While still holding the baby’s arms down (they could still get loose at this point), lift the right corner up in the air at about a 45˚ angle and cinch it nice and tight. The tighter you cinch it, the less likely the baby will wiggle his/her way out of the burrito. Just don’t hurt the baby.
  • Finish folding the right corner around the left side of the baby (your left side, baby’s right side).
  • Lift the baby slightly and continue to fold the remaining slack under the baby.
  • At this point the baby should calm down rather quickly.

    All swaddled up

The Boy

Melissa went into labor yesterday, three days before her 30th birthday, about 10 days prior to her due date. We went to the hospital mid-afternoon. At 1:19 AM this morning (August 12, 2009) William Miles “Fig” Raguet-Schofield came into this world, waterlogged and tender. Melissa and William are both doing fine.

I am utterly exhausted after merely assisting with a day-long labor. I can’t even imagine how Melissa must feel. She’s one tough cookie. I can only assume the boy will be just as tough.

William & Melissa

Waterlogged and tender

Rob & William

Note that Fig’s hair is longer than mine

Fig

Feet

The Homer Fireworks

“Celebrate the independence of your nation by blowing up a small part of it.”

My friend John and another coworker of mine were helping out with the fireworks show at Miller Aquatics and Health Club, just outside of Homer, on Wednesday. They invited us out to watch, though I didn’t think I’d be home from my bike ride in time to make it out to Homer by 9 pm. Fortunately, I was home in time and we decided at the last minute to go.

The show was really well done and we sat very, very close to the launch site, so we had a different perspective than I’ve ever had for fireworks before. As you can imagine, I brought my camera to try to get some good shots of the fireworks. It took some getting used to, but I think by the end I started to get some good photos.

It's that time of year

The Cobb Park Crit

Yesterday was the Cobb Park Criterium in Kankakee. This is one of the closest bike races to Champaign-Urbana, so a lot of my Wild Card Cycling teammates participated. Unfortunately, I’ve been struggling with some knee pain the past two weeks. It finally seems to be getting better, but I definitely didn’t want to aggravate it by racing again too soon.

I still wanted to support the team so I went up to watch the category 4 race (the one I would have been riding). We had six guys in that race — Mark, Q., Chad, Thomas, Luke, and Nick. Earlier in the day Alexi, Scott, and Art rode in the cat 5 race, while Greg & Karl rode in the masters 50+ race. As with many other types of racing I’m much more accustomed to competing than spectating. I always forget how fun it is to watch friends race.

Mark jumps off the front

Chad in is first race with Wild Card

Just think how fast Luke would be without all that extra hair

Q. takes a flyer

Nick looked as cool as a cucumber the entire race

Thomas takes a flyer

One lap to go

Karl and Scott cheer on the team with one lap to go

I took a lot of photos of my friends (some of which can be seen here, or in the video below), as well as some video footage. I mounted my little Flip video camera to the hot shoe of my Canon 50D DSLR and captured video while I was taking pictures.

I planned to quickly throw together the video clips late last night and post it online. I thought it was kind of cool how the sound of my still camera’s shutter can be heard clicking in the video so I spliced in some of the still photos around the time they were taken. Once this was in place the video clearly needed a soundtrack, so I added the greatest cycling music from the greatest cycling movie (American Flyers). This took considerably more time. I finally finished around 2 a.m., but it was totally worth it.

If you can watch this without a huge smile on your face you clearly haven’t seen American Flyers enough times.

The Devil Mountain

I love bicycling up and down mountains. Ironically I live in Champaign-Urbana, IL (i.e. the flattest place on Earth). The past several times I’ve travelled to San Francisco for WWDC I have ridden Mt. Tamalpais, just to the north of the city in Marin county. I decided to mix it up a bit this year, so after the conference ended on Friday I grabbed my bike, hopped on BART, and travelled to Contra Costa county in the east bay to ride Mt. Diablo.

I started at the Walnut Creek BART station. From there I headed down Ygnacio Valley Road (which had a little more traffic that I was expecting). From there I turned onto Walnut Ave. (not Walnut Blvd.). I turned right at the traffic circle at Oak Grove Rd., then I took a quick left onto North Gate Rd. This leads into Mt. Diablo State Park. Before the ride I read that bikes didn’t have to pay so I blew through the park gate.

Mt Diablo map

Mt. Tamalpais rises 2500 ft in around 10 miles, whereas Mt. Diablo rises 3500 ft in 10.1 miles (average 6.5% gradient). So Mt. Diablo is noticeably steeper most of the way.

Mt Diablo elevation

Mt Diablo gradient

Mt. Tamalpais has a fair amount of shade, while Mt. Diablo is almost completely out in the open. So I baked in the sun. This was somewhat unexpected, as the weather had been 60˚ F and overcast all week long in San Francisco. As soon as I left the city the temperature was much, much hotter.

Traffic was light. I think I saw more bikes on the road than cars. Incidentally, most of the cyclists were all decked out in cold weather gear like jackets. Meanwhile I was sweating like a hog and shedding clothes. The flies apparently liked the way I smelled, because a swarm of 6-8 of them followed me the last 6 miles of the climb.

Just like both the West and East peaks of Mt. Tamalpais, the road up Mt. Diablo throws in a 16% gradient to just before cresting the summit, though this steepest section on Mt. Diablo was much longer. I was afraid to stop for fear that I wouldn’t be able to get started again. It was that steep.

Rob at summit of Mt. Diablo

A very sweaty Rob at the summit of Mt. Diablo

The views were spectacular the whole way up. The lack of trees (and guardrails) allowed an unobstructed view. The view from the top did not disappoint either. I could see miles in all directions. I couldn’t quite see San Francisco. I think there was a shorter range of mountains/hills between Mt. Diablo and the city that blocked the view.

View from summit of Mt. Diablo

view to the north from the summit of Mt. Diablo

The ride down was super fast (well above the posted 25 mph speed limit). I recorded the whole thing with my Flip video camera. Here it is at 5X speed.

Anyway, the ride was awesome. I’m a little sad I didn’t get a chance to ride Mt. Tam also, but maybe I’ll do that next year.

Ride Information
Date: 2009-06-12 1:33 PM PDT
Mountain: Mt. Diablo
Road Elevation: 3849 feet
Climb Distance: 10.1 miles
Climb Ascent: 3471 feet
Climb Average Grade: 6.5%
Climb Maximum Grade: 16%
Ride Distance: 32.75 miles
Ride Total Ascent: 4400 feet
Ride Maximum Speed: 35.9 miles/hour
Ride Start: Walnut Creek, CA (200 feet)
Ride End: Walnut Creek, CA (200 feet)

The Cable Car Museum

As Melissa mentioned we visited the Cable Car Museum on Saturday. It was relatively small and easy to take in, but quite fascinating at the same time. The fairly primitive technology behind the cable cars is remarkably clever.

Melissa & Fig at the Cable Car Museum

Melissa & Fig at the Cable Car Museum

There are three operating cable car routes in San Francisco (California, Powell-Hyde, & Powell-Mason), but there are four separate lines (California, Powell, Hyde, & Mason). The museum lies roughly in the middle of these four lines. In addition to the cable car museum, this building also houses the motors and pulleys that actually operate the cable cars.

Motors pull the cable cars

510 HP electric motors pull four steel cables (three pictured) at 9.5 mph, bearing the load of every cable car in the city

Cable & grip

This display shows how the grip clamps onto the cable under the street.

Motors motors keep the wheels turning. A system of large underground pulleys allow the cables to turn corners.

The Bell Ringing Contest

We arrived in San Francisco last Sunday. When we took our first cable car ride of the trip that evening I noticed signs everywhere advertising the 47th Annual Cable Car Bell Ringing Contest. I thought nothing of it. I met up with Melissa & Laura for lunch on Tuesday right when the contest was taking place a short distance away at Union Square… so we grabbed some lunch to go and watched the bell ringing contest.

Union Square

Cable Car bell ringing contest at Union Square

When we first arrived the amateurs had already started, and let’s just say it wasn’t quite what we were expecting. Fortunately, the professionals (actual MUNI cable car employees) started soon and they were much better. Granted, there’s only a certain level of creativity one can express with a single bell, but it was all good fun.

Bell ringer

The pros show how it’s done

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.

Uhhhh.

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.