A Taste of the Extreme


Two are better than one, they say. And this may be especially true when two people with complimentary skill-sets work together to solve a problem. Nate (_natron) and I discovered this as we spent a day sprinting to build a tool we really needed.

On occasion, we have the need to use commercial fonts in the sites and applications we build. To do this in a copyright-sensitive manner, we often need to use special tools like sIFR. In the past, we have used the Drupal module that provides sIFR support. However, it was using an older version of sIFR.

Needing some of the new features in sIFR v. 3, Nate and I decided we should tackle writing code to support the new sIFR version.

Here's the thing, though: Nate knows Flash, CSS, and all things fonty far better than I do. I am and always have been more of a backend programmer. My eyes glaze over when I look at stylesheets, and I've never done anything worth mentioning in a Flash environment. Based on this, I knew that it would take me a couple of days (at least) just to write a first draft.

The office was quiet that morning. Most of our colleagues were out at a conference. And we both had some time allocated to making sIFR work. So Nate and I grabbed a laptop and headed into the conference room (A.K.A. "Home of the giant monitor"). We hooked up the laptop to the big conference room monitor, plugged in a second keyboard and mouse, and went to town.

Second keyboard and mouse? Yes. We each got our own, a la an extreme programming pair. Throughout the day, we took turns working on the code and the related bits. The morning was mostly just frustrating. We worked our way through the code together, trying to pick out the parts that directly pertained to our task, and trying to figure out how to make new functionality fit into an old, single-purpose API -- the proverbial "new wine in old wineskins" problem. Things just weren't fitting together.

We took a break at lunch and sat around eating pizza with Larry (the only other Palantiri in the office that day). That half-hour of unwinding proved vital. Within ten minutes of our resuming work, we were over the rough patches, and an hour or two later, we had only a few bugs to stomp out.

By the end of the day, we had hammered out all the code we needed. We had built a new plugin for the existing Drupal module. We had done in slightly under one day what would have taken me two or three (maybe more) to do on my own. And we accomplished this simply by combining the right skill sets to solve a fitting problem.

Sure, on a regular day, Nate and I do very different things. It's unlikely that working in pairs day-in and day-out would do anything more than frustrate both of us. But when we saw a project that demanded a special approach, we knew we had the flexibility of process that allowed us to try out something like a day's worth of pair programming.

A revised-and-revised-again version of our patch is now part of the official Dynamic Render project. Giving back is a part of our process that we try hard to adhere to vigorously.


One of our tasks at the university the past semester was writing a video compression algorithm (you know, with lots and lots of matrix manipulations). This was a task that had to be done in pairs. Instead of each working separately, we worked together, on the same computer, because then we would see each other's mistakes (or at least catch them sooner).
Now I would no longer want to write anything of a similar complexity without pair programming! :)