The Well-Rounded Developer

The Well-Rounded Developer

Should the role of a front-end developer be limited to only client-side technologies? I have asked myself this question a lot lately. I come from a background where, as a web developer, I typically work across the following development stack to design and build a product:

  • Design. Graphic design, page layout to how a page flows responsively across devices
  • Client-side code. HTML, CSS and JavaScript
  • Data. Flat data files, RESTful web services, relational DBs, noSQL DBs, …
  • Server-side code – PHP, .NET, Ruby, Lisp, Node.js, Python, …

Recently, I have moved into a position where I am focused on fewer core languages and technologies. As a result, I find myself thinking about the value of becoming an expert in one area of the stack. Is there more value in being an expert than being a well-rounded developer?

The upside to becoming an expert in one subject is that there is more time to devote to exploring every nook and cranny of that subject’s subculture. After all, web development is an art form. We are artists who should know our medium and our style. However, it is this very focus that often makes us lose sight of the broader picture. Programming is not about a particular technology or where it falls into the stack. Fundamentally it is about solving problems. An understanding of when to execute code on the server and at what point it’s best handled it in the browser allows a developer to come up with the most efficient solution to the problem.

Jiro, in Jiro dreams of Sushi, states that “Once you decide on your occupation, you must immerse yourself in your work. You have to fall in love with your work. Never complain about your job. You must dedicate your life to mastering your skill. That’s the secret of success and is the key to being regarded honorably.” Jiro’s skill is sushi. He dedicated his life to coming up with and mastering the techniques of making the best sushi. In order to accomplish this goal, Jiro had to master the art of finding the right seafood vendors, picking the best fish (tuna, octopus, shrimp), preparing the fish, making the rice and creating an experience for his customers. If there was a problem with any part of the cycle, the sushi would be sub-par. So it is with development. A problem, often caused by lack of knowledge, in any layer of the stack can create fragile dependencies, inefficient results or worse…buggy code.

I have heard it said that new tech moves too quickly for well-rounded developers to keep up. This is true in the sense that no one developer has the time to become THE expert in every language, framework and platform that exists today. For a new developer, it can be overwhelming to look at the options that exist and wonder where to begin. However, if we take a step back, we are able to see that this pace of innovation is actually the fuel that drives the well-rounded developer. I say this for two reasons:

  1. The fundamentals of programming have not changed.
  2. The new frameworks and tools allow us to stand on the shoulders of giants.

Concepts such as object-oriented programming, data models and design fundamentals stay relatively stable over time. There are many different implementations of these principals and the principals themselves are expanded upon and refined over time, but much of the knowledge is transferable between languages and platforms. Differences are found mostly in syntax and philosophies. While syntax varies greatly among languages, the ones that tend to gain the most support are derivatives of earlier high-level languages such as Fortran and C. So, a lot of syntax knowledge is transferable as well. While the creator’s philosophy of a particular language or framework can vary, there are a finite number of general philosophies in existence and code design patterns often transcend philosophies. As Solomon said: “What has been will be again, what has been done will be done again; there is nothing new under the sun.”

Programmers that have been working at their craft for a while often say that development is much easier now than it ever was. They are getting at the idea that we do not have to mess around with as much low level stuff as we used to. 30 years ago, programmers had to write device level drivers just to connect to a database or manage a network connection. Given the same amount of time today, we are able to create more feature-rich, complex applications because of the work that has been done by those that have come before us. Frameworks in any context (server-side and client-end) continue to build on this infrastructure and will only speed the pace at which we can develop amazing products.

All of this is good in a general sense, but the real time-consuming part of becoming a well-rounded developer is spent in honing the details of one’s craft. It is difficult to decide which framework is best suited for a project and even more tedious to learn all the exceptions and caveats that come with a particular language or framework. Because of this, community is a vital component to a well-rounded developer’s workflow. Pick ecosystems that have good community support. Find the best framework to use for a project from the discoveries that others have made. Share what you learn when you develop for a platform with others. And above all, build new things.

Twitter API v1.1 Front-end Access

Twitter is retiring their v1 API in March of 2013. This means all future API integrations must use the v1.1 API which requires authentication on any request (read or write). This is pretty straightforward using a PHP OAuth library or any OAuth server side implementation, but what if you wanted to implement something client-side? This can be accomplished by using the Yahoo! Query Language (YQL) to do the heavy lifting for us.

A Twitter app is necessary to do any OAuth authentication. Go to https://dev.twitter.com/apps and create a new Twitter application. Once your application is created, click the “Create my access token” button to link this with your Twitter account. You will then have a Consumer Key, Consumer Secret, Access Token and Access Token Secret for this application that is associated with your Twitter account (see an example in the screenshot below). Make a note of these values.

keys

Next, create a text file that contains the keys from your application (leave the env line as it is).

Upload the text file to an accessible URL and go to the YQL console. Run the following query in the console replacing NAME and URL with whatever name you want to reference the stored data by and the url to the text file you just uploaded.

The result of this query will contain an <execute> node (ex. <execute>store://my.host.com/name</execute>). Make note of the value of this node.Your application’s OAuth keys are now stored in a database table that can be accessed from another YQL query. This is important because YQL also has community tables that allow for Twitter API requests. The following JavaScript (yes, some jQuery is used for simplifying the AJAX call) requests recent tweets from the @resource Twitter account and uses the stored keys for authentication. Just change the env value (line 14) to the the value of the <execute> node that you took note of earlier.

That’s pretty much all there is to making client-side Twitter API read requests using YQL to do the rest of the heavy lifting. A couple of things to keep in mind:

  1. The security on this is not great (it’s more security through obscurity). Anyone can use the env link to execute read requests, but they don’t directly have access to your keys. It’s always better to implement this API server side if you have access to do so.
  2. Both APIs rate limit the endpoint calls. YQL has a 2,000 calls per hour per IP limit to their public API. Here is an explanation of Twitter’s rate limits. Caching should be implemented to avoid hitting these limits.

Here is the Codepen Link for a working example.

This concept was adapted from Derek Gathright’s blog post.

SASS Ruby Extension to Check if File Exists

SASS Custom Functions
CSS is executed client-side and so it cannot check for the existence of an image, font or other asset file being referenced. However, since Sass is written in Ruby, it allows for server-side calls by extending Sass via custom functions. Here is a custom function to check for the existence of a file:

If this code is placed in a file named functions.rb, the Sass watch command would be:

So, why would you ever need to check for the existence of a file at Sass compile time? One place I found it useful (I’m sure there are other uses) was when eliminating duplication of internationalized CTA (call-to-action) images. Canadian (or British) English is similar to U.S. English in many ways, but there are some words that are a different between the two (favorite vs favourite for example). The following Sass mixin selects a CTA image from a folder based on the lang attribute set on the page. In the case of Canadian English, it will first check to see if the image exists in the en-ca folder. If not, it will fall back to using the image from the en-us folder. This avoids duplication of the English images that are the same in both Canadian and U.S. English. The benefit of this is:

  1. Fewer total assets, so they are easier to maintain
  2. The total asset payload is smaller (especially important if used in a mobile app)

Front-End Web Development

The state of front-end web development has changed significantly over the last couple of years. Perhaps it was the introduction of responsive design in early 2010, the release of a retina iPad and, shortly thereafter, the retina Macbook pro in mid-2012, or Adobe “killing” mobile flash in late 2011 that prompted the change.

A few years ago, a front-end developer title often defined the term “developer” rather loosely. HTML and CSS were often the only required languages for this role and are really considered to be content markup languages rather than true development languages (however you might choose to define that). A few years before that, we were building websites purely with HTML and images, using tables to implement our layouts. A lot has changed. If you are interested in learning more web history, check out Eric Meyer’s excellent podcast, The Web Behind.

frontend-code

Regardless of what actually prompted this recent shift, I believe there are (at least) two major reasons that the front-end developer role will continue to be significant for quite some time:

  1. CSS and image support has gotten much more powerful and complex.
  2. HTML/CSS/JavaScript can be used to build native cross-platform mobile apps (Phonegap, Appcelerator Titanium).

CSS3, Retina Images, and Bandwidth, Oh My!

The CSS3 spec added lots of very powerful new features. Things like rounded corners, shadows and gradients can be achieved easily in browsers that support CSS3. There are also more advanced features like CSS transforms and animations which require a bit more knowledge about things like keyframes and perspective. Specific browser prefixes must be applied for many of these new features in order to ensure backwards compatibility as the spec continues to evolve.

Of course, the downside to all of this is that CSS code has become hard to maintain. Fortunately, CSS pre-processors have been created to help make CSS code more maintainable and object-oriented (ish). Sass and LESS add features like functions, variables and mixins as well as code libraries (Sass has Compass). Sass does seem to be gaining in popularity for a number of reasons, but the point is that this is one more tool for a front-end developer to learn.

A hot topic in the front-end developer community at the moment is debating how to support images across different devices, resolutions, pixel densities and varying connection speeds. The increasing consumer use of retina-density displays and better internet access from smartphones requires developers to think about how to potentially support multiple sizes of higher quality images at lower file sizes. There are many solutions for supporting higher resolution images on retina displays. You could detect a retina display and serve up double resolution (@2x) images for those displays. This requires two versions of every image to be created which isn’t so bad. The problem is that a device like an iPhone has a retina display as does something like a Macbook Pro. The Macbook Pro could be connected via Ethernet to a fast connection and the iPhone may be on 4G now, but in seconds, it could be down to an edge connection as the user moves away from the nearest cell tower. This article does a good job of explaining the pitfalls of trying to measure or predict bandwidth at the CSS level to serve up different image sizes. So, there is some added complexity that comes with more mobile devices and retina displays.

In addition, any image, whether it’s targeted at a retina screen or a smartphone, should have as small a file size as possible. Tools like:

can do an amazing job of reducing file size while maintaining quality. Even with these tools, a great deal of manual effort is still required to make sure that the images maintain quality once compressed.

Mobile Apps

Because the three main “languages” in use on the presentation layer of the web (CSS, HTML, JavaScript) are so widely known, developers have come up with solutions for building mobile apps on all major platforms using these languages of the web.  A mobile app can be built completely in JavaScript (and HTML and CSS) and compiled with either the open source PhoneGap framework or Appcelerator Titanium for iOS, Android and a number of other mobile OS’s. This gives any front-end web developer the tools to build mobile apps without learning a new language. It sounds like a dream come true, but in reality, most apps that are conceived are complex in nature and require a framework (like Backbone.js) to organize the JavaScript code. With the maturity of these mobile app frameworks that use commonly-known web languages, the front-end developer role has expanded to be much larger than it once was.

Conclusion

These are very exciting times indeed for front-end devs. So much new technology is being released that the door is wide open for innovation. I’m just excited that we are no longer using table layouts.

Job Interview Story

I started working in IT at the age of 14. Since then, I have had six additional office jobs and many interviews in-between. Most of my interviews have been pretty standard, but a few have stuck in my mind as unusual, bizarre, or interesting in some way. After reading the Facebook Recruiting Feedback article, I was inspired to share a few of my interview experiences here. I’ll begin with one of the bizarre interviews.

Interview Stories

I had first heard about the job opening from a friend. He had been doing some contract work for them and mentioned to me that they were looking for someone to help redesign and manage their website as they had a new product to promote. He set up the interview and told me that they had a great product and business and also wanted me to know that Brian, the owner, is a little eccentric. He is an inventor after all.

The Interview

I was greeted at the door by a friendly dog, followed by Brian who exclaimed, “Look at those sideburns – you look like Wolverine!” (at the time, they were very wolverine-esque). I followed Brian into the workshop at the back of the office. This workshop was really a warehouse-sized room filled with old cars, motorcycles and dozens of drum kits. We sat down around a table strewn with electronic parts, soldering irons and detailed drawings of the next product he was designing.

The interview began with Brian expounding on the history of the business, the vision behind the new product and comparisons of himself to Walt Disney. Then he gave me a piece of paper and asked me to show him how I would redesign the site. A bit thrown off, I fumbled for a little while and just said the first things that popped into my head. After about 30 seconds of this, he got up and started pacing back and forth and began telling more stories about his visits with Apple executives and how some designers from Apple were coming in the next day (Saturday) and asked if I wanted to come in to be there while they went over some of the interface design for the new product.

At this point, another employee came in to see if Brian wanted to step into another interview to meet a potential new receptionist. “Is she hot?” was his (inappropriate) response. He got up to go to that interview, leaving me to chit-chat with another employee for the next 20 minutes or so.

When Brian came back, he decided that he was interested in talking about drumming as he had heard that I played as well. While he went on about the many bands that he had played with and rock-stars he had met in the past, he walked over to a weight bench, strapped on his lifting gloves and did some bench presses. Once he had completed a few sets, it was lunch time. Brian mentioned that he had some lunch plans, but was hoping I could come back after lunch and maybe he could hear me play a bit on the drums. I decided I had seen enough for one day and politely declined the offer to come back. He said that he would be in touch about the job.

The Follow-Up

As it turned out, the company must have not really had the budget to hire because they wanted me to contract for several months until the new product was launched and then they promised to hire me full-time. Between the strange interview and no guarantee of a full-time position, I was not exactly convinced to quit the job I had at the time. I told Brian this and his response was to get together for lunch and talk about doing some freelance work. We had lunch at P.F. Chang’s and talked about some possibilities for the site, but when we left, everything was very much up in the air.

Brian called me several times, mostly to talk about another potential hire he was making. Every conversation we had seemed to go nowhere and I eventually just wanted to cut ties, so I sent this email: “Regarding the job…when you feel the time is right to create a position and you have an offer for that position, I will consider it at that point. Right now, I am not quite ready to quit my current job without something for sure to go to.” He simply responded: “I gave you Changs call me.” So, I called Brian. He proceeded to question my integrity (I still don’t know how this came into play) and tear me down personally, so I said right there that I was not interested in ever hearing from him again. That ended a very strange interview saga, and to this day, every time I go by a P.F. Changs, I think to myself “I gave you Changs call me” and I laugh every time.

IPA Episode 1: Responsive Web Design

IP Address is a little video blog that I’ll be doing from time to time. It will consist of my ramblings about web design and development and hopefully have some interviews in the future as well. I will also be trying a different IPA in each episode. This one is all about responsive web design. A few related links that are worth checking out as well:

P.S. I’m working on a brand new responsive design for this website. Check back soon to see it.

Run with Scissors 2011

This year, I signed up for Run with Scissors on a whim. My fall race schedule had been filling up, so I decided to just have a fun day and run whatever pace felt good.

Leigh and I drove up from Columbus early Sunday morning. After Roy’s race instructions (enjoy yourself and DO NOT LITTER), we lined up in the brisk foggy weather for the start. I took the first section slow so as not to risk a fall in the dark and ended up running with David Peterman most of the way to Pine Hollow. There was only a bit of cold mud in the meadows and we joked that we might be found later in the race icing our sore ankles and feet in these spots. We both breezed through the aid station at Pine Hollow and made our way toward Quick Road. Mike Nicholson, who was out in front, had taken a wrong turn at Quick Road and we did the same. The three of us ran up and down the road for a bit until we all realized (seeing some headlamps through the woods) that we were just supposed to go straight across to pick up the trail. The trails were getting sloppy through this next section so I decided not to push it too hard at this point, knowing that we would hit this mud three more times and it would only get worse as more runners came through.

I decided to get some solid food at Covered Bridge as my stomach had been queasy all morning and I thought that might help settle things. I looked forward to a good mix of walking and running through the next section and got some bonus stream crossings thrown in as well.

The section back from Covered Bridge back to the Pine Hollow aid station was filled with mixed emotions. I enjoyed seeing more faces on the trail and eventually ran into the lead marathoners as I neared the aid station. I mumbled a quick hello to Vince Rucci who was leading the men and Beth Woodward who was out in front of the women. As I neared Pine Hollow, I had all but made up in my mind that I was going to call it a day after one loop. I was tired, my legs had not recovered well from a previous race and my stomach was just not settling. I asked my wife if she would meet me at the turnaround (not telling her that I was thinking of dropping). I grabbed some grilled cheese sandwiches hoping they would at least get me through the next couple of miles. I saw Roy coming up one of the sound of music hills and he mentioned to me that I only had about a mile and a half back to the turnaround. This was good news! As I got close to the shelter, I saw the first and second place runners heading out for their second loop. I still was not feeling very good at the turnaround, but I told myself that when things are bad, there is always the chance that they can get better. I was hurried out of the aid station and back onto the second loop (I guess I would not be stopping here after all).

Eventually, I caught up with Scooby (in second at this point) who was suffering from some foot pain and trying to walk it off. I walked with him for a few minutes until we eventually parted ways. As I made my way back to Pine Hollow, the endorphins must have started firing as I miraculously began to enjoy running again. The weather was perfect, the fall colors were vibrant and it was a great day to spend some time in the woods.  I took another S!Cap thinking it was about time for some more electrolytes and picked up the pace. My feet were still numb, but the sun was warming everything else up. Reaching Pine Hollow, I heard that the leader (Mike Nicholson) was just a minute or two ahead, so I made it my goal to catch him on this next section. A couple of miles in, I suddenly felt queasy again and stopped for a quick upchuck – too much salt – yuck! I felt better immediately, though, and kept moving.

Eventually, I caught up to Mike and asked how he was feeling. His response was, not great, but hey, we were 35 miles in, so that’s to be expected. From that point, I ran up the hills as hard as I could on the way to Covered Bridge, but eventually lost steam as I had burned through all the calories I put in earlier. I saw Mike again as I was heading out from Covered Bridge which was a good reminder to keep moving. Perkins Loop (the section after Covered Bridge) was a nice mix of running and walking the hills. Reaching Covered Bridge again, I stocked back up on calories as I was really dreading slogging through the mud this one final time. I knew it was going to be a long haul back to Pine Hollow, so I prepared mentally for what was to come. As I splashed through the mud and muck on the trail, a healthy fear of being passed at this point in race kept nagging in my head, driving me to keep running even though I felt like just walking it in. Nearing Pine Hollow, I decided not to stop for a refill of anything and just hammer out the last couple of miles to the finish. Well, two miles was a lot longer than I had pictured in my head, so I fought to keep moving as I knew each step brought me closer to the end. As the finish line came in to sight, I felt an overwhelming sense of joy knowing that I had run my best for the day and that there was a chair with my name on it to rest these tired mud-ladened legs.

Western States

I have struggled in an attempt to condense my thoughts about the Western States 100 Mile Endurance Run into a blog post. Like the highs and low points of the race, my paradoxical emotions have been battling for dominance throughout the last week or so.

In the late fall of 2010, fate smiled kindly on me as my name was drawn from the proverbial hat containing 4,000 other hopeful runners who had also entered their names into the Western States lottery. I rarely win any contests I enter, so I figured this would not be an exception. In fact, the only drawing I can recall winning was a Cabbage Patch doll from Drug Emporium. I quickly sold my winnings to my sister and ended up 25 cents richer that day. This year’s stroke of luck left my pockets a little lighter, but a chance to run Western States, the oldest hundred miler in the nation, was one I was not about to pass up.

Reality soon set in, and, after watching videos of some of the top runners on the course, I figured that I should probably come up with a good training plan. Unfortunately, Ohio does not have long climbs to train on like the mountains out west. It does have select pockets of rolling hills, however. I spent as much time as I could training at Mohican. When there was no time for the trip to Mohican, I would run at Highbanks. And, when I tired of Highbanks, I would spend some hours running up and down Worthington Hill. This is not even a quarter mile hill, but it is steep, paved and has lots of traffic. Some of my best training was done on this hill as it allowed me to block everything else out of my mind and just work on my uphill running form.

Preparations for a 100-mile race are not limited to the runner alone. For a while, I was not sure if Leigh was going to be able to make it out to California to help crew the race. I also was not sure if I would have a pacer, so I prepared myself for a solo trip. I realized it would be lonely, but I would make it through. Then, at the Clif Bar pace party before the Boston Marathon, Star came up to me and said that she had worked it out that she would be able to come out and pace me. So, I would not be alone on the trails! There was still the question of what to do the week before (as I was flying out early in an attempt to acclimate to the higher altitude) and for crew during the race. My Dad offered to fly out to crew if Leigh was not able to make it, but he had a busy schedule already and this would make it even busier. One morning, I was sitting at work and got an email from Leigh. “I bought a plane ticket. I’m flying to California!” It had all worked out. So, I carefully planned and packed my drop bags and clothes for the run. Then we were off on a day of flights, connections and misconnections that took way longer than it should…but that’s a story for another time.

We finally made it to Reno and tiredly drove to the hotel in Tahoe City to start catching up on some much needed sleep. Tahoe is a beautiful place. There really are no words that can describe the crystal clear waters backed by tall mountains and pink sunsets. The low humidity and clean mountain air is enough to make one question the sanity of living in a rain forest like Ohio. But, I digress.

Leigh and I spent the week hiking the course, walking by the lake, visiting wineries in Napa Valley, trying new restaurants, taking photos and spending plenty of time relaxing. If you’re not jealous by now, you should be. It was a wonderful, restful time. We met up with a runner friend, Ted Niemann and his wife, Toni and had a blast hanging out with them in the later part of the week. I went for a couple of training runs in Tahoe as well. Two days before the race, I ran up the first few miles of the course (up a Squaw Valley ski hill) and then back down just to see what that section of the course was like. On the way down, my left calf tightened up and did not loosen up before the race. Between my left calf and my right shin that had been bothering me for weeks on downhill runs, I was pretty worried about how my legs would hold up…especially on all the downhill at the end of the race.

Friday before the run, a pre-race meeting was held where we got to meet up with runner friends, Eman Ronchin (Toronto), Kevin O’Grady (Ohio), Adam Bright (Florida), Shaun Pope (Ohio) and Sandi Nypaver (Ohio). There was a really cool ceremony recognizing some of the top ultra-runners as well.

Finally, the day of the race arrived. We woke up around 3AM and made it to weigh in at the start with plenty of time to spare. Star had flown into the state just hours before the 5AM start and was there to see me and our other Ohio friends off before trying to catch a few hours of sleep. All the runners counted down to the start together and we took off up the first of many hills. Remembering advice of those that I gone before me, I decided to walk the first four miles as it is all uphill. “Cowman A-Mooha”, the second runner to ever complete Western States had started with cow horns on his head and I walked beside him for a while. I concentrated on keeping my heart rate low and moving forward. The first aid station (Escarpment) was two miles in, with the next one (Talbot) not arriving until mile 15. I topped off the three bottles I was carrying for this longer section at Escarpment and kept moving ahead.

At mile three, snow appeared on the course. Overnight, the temperatures had gotten down around freezing and all of the snow had turned to ice. Picture a ski hill, covered with a sheet of ice. Now, imagine running horizontally across this hill, just fast enough that you don’t have time to slip too far down with each step and just slow enough that you can avoid post-holing in the streams that go under the ice. That was the next 12 miles. I had flashbacks to Beast of Burden.

Soon, however, the ice section was over. I was able to put ice in my bandana and lose the shirt as it was starting to heat up at this point. Over the next several miles, I got the chance to walk and talk with a really nice guy named Dominic about the Wasatch Front 100. He was going for a sub-24 hour race and I told him if all went well today, that’s what I would like to run too. As we climbed up out of Duncan Canyon to Mosquito Ridge, I realized that this would likely be a longer day than I had hoped for. I was 30 miles in and had already started puking. The next four and a half miles consisted of a flat loop and I was accompanied by some lovely medical volunteers: Jerry, Catra and Fireman Dan. They were out making sure no one was stranded in the woods with a serious problem. It was nice to have the company as I walked trying to settle my stomach early on so I could hopefully run more later in the race. Once we got to Miller’s Defeat, I spent the next 45 minutes with some amazing volunteers who did a great job assessing the problem (low electrolytes) and trying to get me back on track. I didn’t want to sit here, but I thought that if I took care of this early enough, that I could still run a great last half of the race.

I had dropped my shirt when it began to get warm, but as I sat still for a while in the shade, I became cold. One of the volunteers offered me the shirt off of his back, only concerned that my nipples might chafe because it was a t-shirt. It was a funny and heartwarming moment that lifted my spirits. Another volunteer came to the rescue, however, offering me one of his many spare running shirts that he kept in his van.

From this point, I entered the dreaded death-march mode, hoping against hope that I could get some stomach back so I could keep a few calories down for the upcoming climbs. I tried not to stay too long at each aid station – just enough to try to get a few calories to settle. Each and every volunteer treated me like I was royalty – they are really amazing people and I felt that I couldn’t thank them enough – especially the ones that helped me through these rough early miles (and saw me lose my lunch numerous times).

My stomach was really starting to settle and I began to get back into a groove on the way down into the canyon before Devil’s Thumb. I knew what lay ahead, however, and I knew it wasn’t going to be pretty. Devil’s Thumb was the hardest climb I have had to make: 37 switchbacks, with each section steeper than the last. It showed no mercy on a weak stomach and if you sat to rest, the mosquitoes let you know it was time to keep moving. Devil’s Thumb climbed up and up and up. I honestly don’t think I have ever moved that slowly on a section of trail. I couldn’t stop shaking from the cold at the top of Devil’s Thumb, so I moved through the weight check quickly, was helped by some more really amazing volunteers, grabbed a popsicle and started moving forward again. A popsicle was the wrong move, but it tasted so good going down.

Overall, I was in reasonably good spirits considering the circumstances up until this point. When I left Devil’s Thumb, I had very little hope of being able to run the second half. After all, I was in pretty rough shape for having covered less than half of the course! When reading the runner’s guide for Western States, they warn you about rattle snakes, bears and mountain lions on the trails. Mountain lions in particular sneak up from behind and attack with very little warning. I began to hope for a mountain lion to stalk me and put me out of my misery. I could not concede to dropping out the race if there was any chance that I could still finish, but being eaten by a mountain lion seemed like a pretty good way out at that point. When that dream did not appear to be coming true, I turned to a different line of thinking.

I began to ask God to heal me. And then a few lines of an old church song popped into my head, “I believe He’s here now, standing in our midst. Here with the power to heal now, and the grace to forgive.” Often times when I am at a point of desperation, I ask God to take away my problem. When He doesn’t respond immediately, I think that it must be because I have not been obedient in some way. I realized in this moment that my view of God is so far from what He truly is like. In fact, it is despite how I behave that He has shown me grace and forgiveness many times over. He always has and always will respond to our cries in His own timing, which is always best.

I began to accept my current circumstances and focus on not falling too far behind as I was starting to think about aid station cutoffs at this point. I finally made it to Michigan Bluff shortly after 8pm. Star was there and I figured Leigh would be too so I could get my headlamp as it would be dark soon. Fearing that she wouldn’t make it to Foresthill in time, Leigh had decided to wait there and gave my headlamp to Star to deliver to me. I was starting to get a little loopy and a little irritable at this point. I weighed in and was 6lbs under my starting weight, so I had to listen to a talk from a volunteer to get my nutrition back on track. It turns out that he thought I had gained six pounds and was telling what to do to lose water weight! I was really annoyed as I just wanted to get moving and I let it show. I apologized, though, as I realized that he was only trying to help. I downed all of the chicken noodle soup that he gave me and then ran off to find a place to puke for the 12th and final time (almost a PR or Puke Record as Star pointed out).

Star regaled me with stories of her crazy last day of work and travels out to California. The time went by quickly and I ate up all of the sport beans that she had thrown in her pocket as a last minute thought. The beans tasted good and might have even been sprinkled with a little bit of magic. At Bath Rd, just a mile and a half from Foresthill, we caught up with Ted Niemann who was dealing with stomach trouble of his own. The bug had bit a lot of people hard that day.

Leigh was at Foresthill and was a welcome sight to see. We took a couple of extra minutes to visit, fuel up and let the food settle in an attempt to run again after this prolonged hike through the woods. It worked and we were running bits at a time. We came up with a food formula that seemed to work: chicken broth, a salty potato, coke and a refill on water and electrolytes. Through the winding woods we ran. We saw aliens at “Area 54”, saw skeletons dressed in drag and heard delightful music blasting from aid station stereos. Star ate grilled cheese sandwiches and I stuck to my food formula as it was working for me. We began to pass people and I knew we were making up a little bit of time. On the way up to mile 73, we climbed up the elevator shaft, a wide STEEP road that switched back and forth in a never-ending uphill. I lamented the fact that there was no elevator around. We eventually made it to the top and then, before we knew it, we were approaching the river crossing. This was one of my favorite parts of the race. Most years, runners wade through the American River while holding onto a cable for support. The snow runoff was so much this year, however that we were shuttled across in a raft. The crew was efficient and we had lots of people there to help us into and out of the boat.

Another big climb on the way to Green Gate lay in wait on the other side of the river. It was steep, but not too bad. We hiked with another pacer for a while and suddenly I yelled out, “Star! STAR!” “What?” she said back. “Don’t take another…uh, nevermind.” I replied. We all had a good laugh when I explained that I had seen two rattlesnakes in the middle of the path. They were still there when I did a double take, but in the end turned out to be just a couple of rocks in the road. The other pacer had been looking in the sky thinking that I was yelling at the stars.

Leigh was waiting for us at Green Gate with warm clothes and words of encouragement. She had hiked a mile and a half down and then back up to be at that aid station. She is wonderful! We continued to make our way into the final 20 miles of the race. The finish was in sight at this point and we picked up the pace a bit. Stretches of running became longer and I switched to a strict diet of Cheetos and Coke. The next 10 miles reminded me a lot of Mohican. It was fun to run again and the legs felt great. There was a time where I wished for this feeling earlier on in the race, but now I was just thankful to be able to run what I could. We arrived at Highway 49 (mile 93.5), the last place we would see Leigh before the finish. Leigh and I briefly argued about whether there were 7 miles remaining or just a 10k. Turns out neither of us were right.

Some of the most amazing views popped up in this last section of the course. We paused just long enough to breathe in the vistas and kept moving. I began to tear up as we crossed No Hands Bridge with only a few miles left to go. We hiked one more dusty climb and were greeted by a dude in a mohawk who ran down the hill to take our drink orders, then ran up ahead of us to fill them and keep us moving into town. With cold cloths on our necks, we finished out the climb and ran the last mile through the town of Auburn. Following the orange footprints on the road, we ran onto the Placer High track and I crossed the finish line in 28:36:35.

It was a long journey, but I once again walk away feeling so very thankful for everyone who helped me through it. Leigh stayed up and drove all through the night just to see me at the few places they would allow crew. Star ran 45 miles with me and kept me focused and moving, all the while entertaining me with stories. Many other people believed I could do it even when I didn’t believe it myself.

Update: If you didn’t get a change to read it already, Star wrote a fantastic, well-told, humorous piece detailing the section she ran with me.

Beast of Burden

Lockport, New York, a small town 18 miles east of Niagra Falls is the host to a bi-annual race along the historic Erie Canal. When I heard the name of this race, the Beast of Burden, I knew this was one I had to run. When I saw it was 100 miles through the snow, in February, I was sold.

Winter training did not go as smoothly as I had anticipated – a minor IT band injury in December, a two week flu at the peak of my training followed by some hamstring/hip flexor strains two weeks before the race. But, as Dave would tell me during the race, “No pain, no gain. No guts, no glory.” And hey, as all you ultra runners know, this is just par for the course.

Now, the crazy thing about most of these 100 mile runs, besides running 100 miles, is that they typically start at some ridiculous hour like 5 AM. Sure, 5 in the morning is not THAT early, but it’s early enough when you have to get up around 3 to get dressed, eat, take a dump and get to the starting line without forgetting anything. If you are like me and don’t get up at 3 AM normally, then add in the nerves before race day, you can expect to get about 2-3 hours of sleep before the race. But, the Beast of Burden is not your typical race – it has a 10 AM start which allowed for almost a full night of rest!

My Dad graciously offered to crew for the race and make the drive home afterward. Dave also kindly accepted my request for a pacer thinking that this would be a fun adventure.

We awoke on race day in the Comfort Inn in downtown Lockport feeling pretty refreshed after the meet-and-greet packet pickup the night before. We had the privilege to talk with last year’s winner, Richard Cook, mingle a bit with some other runners and meet Laurie Colón the other 100 mile runner from Ohio (who I had only had a chance to chat with a bit on Facebook before the race).

The Comfort Inn had a continental breakfast, and we were pleasantly surprised to meet a few other runners who were there sampling the cereals and waffles as well. Eman and Jennifer were two runners from Toronto who had decided to come south for a “warmer” weather race. Of course, we all had high hopes for the day and nobody talked much of the forecasted 20-30 mi/hr winds. I figured at least we would get our money’s worth.

After some well wishes, some dancing to keep warm and lots of photos at the starting line, we were off and running. The course began with a nicely groomed section of trail that wound its way through some trees and a fitness challenge course (pull-up bars and the like). As we crossed a bridge to the other side of the canal, the footing quickly became much more challenging. Again, I figured that I was just getting my money’s worth. After all, I didn’t want the course to be too easy. I chatted with a couple of runners for a while and eventually settled into listening to an audio book, “World Without End”. I had loaded up this 40+ hour book since I figured it should last through the race. I made decent time through the first 12.5 miles and met Dave and my Dad in about 2:15 in Middleport (the turnaround point).

I had decided to try an all liquid diet this race since I’ve had some trouble with nausea and vomiting at my previous two 100’s. The plan was to drink water (with just a little heed mixed in) and eat 2-3 gels per hour with a rice ball thrown in from time to time. Leigh made up a bunch of rice balls for me before the race and I was set with plenty of hammer gels to get me through. I felt pretty good at the turnaround and headed out into the crazy wind. I really didn’t anticipate how much the wind would slow me down on the way back and ended up doing the return 12.5 miles in around 2:40. I got a chance to catch up with Eman a little bit along the way although we could hardly talk as the wind was so crazy. The wind had ripped my race number most of the way off at this point, so I reattached that, fueled up and headed out for round two.

It felt amazing to have the wind at my back again and I decided to take things nice and easy for this next section. Eman and I yo-yoed back and forth a bit until he slowed down due to a bit of nausea. I felt really bad for him that it was hitting this early and then I started to feel it to. I began to really slow up and pay close attention to really regulate my calories and liquid intake. The nausea was manageable but getting worse despite my efforts. At Middleport, I said a quick hello to my crew, grabbed my headlamp and headed out into the ever darkening sky. I puked twice in the next few miles and felt a lot better. Somewhere in there, Laurie passed me, but I was able to stay focused to get to the 50 mile mark back in Lockport.

Dad and Dave arrived in perfect timing just as I was heading out for a third loop. Dave had decided that he would run the last 50 miles with me (crazy!), so he pulled a quick change as I added another layer for warmth. Nighttime had fallen and so had the temperatures. They were down in the teens after being in the low 30s for most of the day. After another pukage, we were ready to go. I apologized to Dave after two more puking episodes shortly thereafter. He reminded me of “no guts, no glory” – literally. We decided to stop at Gasport to fuel up on more drink and some chips. It was nighttime and hard to see, so we asked the guy out stoking the fire where the entrance to the tent was. He didn’t respond, so we followed his trail of beer cans and entered the cozy tent.

One of the things I found quite challenging about this race was getting out of the aid stations. Of course, it was necessary to keep the tents warm so the volunteers and the food didn’t freeze. However, after warming up for even a minute or two in the tent, it was really not easy to go back out in the cold. But, as Dave told me, you can be asleep in a warm bed any night – how often do you get to run all night in weather like this? As crazy as it may sound, he was absolutely right! So, we got back out on the trail.

The path to Middleport is pretty exposed to the elements, but by this time the wind had mostly died down and we were getting a nice light snow. I think both of us were getting cold at this point, but other than that, things were pretty manageable considering that I was 62 miles into the race. We stepped inside the Freemason Lodge (the aid station) and I immediately began having trouble breathing. Now, there is a point in every race where you are faced with the decision to continue on despite the fact that it seems impossible to keep moving…no less finish the whole race. This was the point for me. After running outside and back in a few times thinking I was going to vomit, I began to get frustrated and started panicking about my situation. I said that I didn’t think I could go on. Dad felt really bad for me and was trying to get me warmed up realizing that I had been freezing out there. Dave told me that I was going to hate him tomorrow if he didn’t make me finish this thing and I understood. But, my chest was so tight and I couldn’t get in enough air to start running again. I’m not sure exactly how to describe the feeling. Just then, Nancey, a massage therapist came over and asked if she could work with me a little bit to get me warmed up. I was reluctant to say the least (since, I’m not really a big fan of people I don’t know touching me), but she asked me if I still had a desire to finish and I said yes. So, she got me calmed down and began working on some pressure points in my hands and legs to relieve the nausea and begin to warm up my core. It was working…slowly but surely! Eman and Jennifer both came through the aid station sometime during this point. Those Canadians were the most upbeat runners I have seen for how they were both feeling – I’ve got a lot to learn! Finally, I got some solid food in me (pizza!) and Dad helped me put on a few more layers of clothes as I headed for the door. He said he would meet us back at Lockport (and no, he would not be catching any sleep in between). So, Dave and I headed back into the snowy night, knowing now for sure that we were going to make it to the finish line.

The journey back was a slower run/walk, and as we approached mile 75, Valmir Nunes snuck up behind us like a ninja. We whooped and hollered for him as he came in for a first place finish (his 4th and final lap) in just over 18 hours. Valmir is a very accomplished runner from Brazil who holds the course record for Badwater. He had never seen snow in his life until he touched down in Buffalo a couple of days before the race (and yet he still managed to secure a win and a new course record). After my meager attempt to congratulate him (he doesn’t speak much English and I probably wasn’t speaking any language fluently at that time), we went back out for the final lap.

There is another point in the race where time slows down considerably. This happened somewhere in these last 25 miles. And I too slowed down considerably. Dave did so well to keep me moving and make me run when I just wanted to walk. My Dad stayed awake through it all and even caught some pictures and video at various points along the way. In the final 12.5 miles, my left leg knee and hip flexor were screaming in pain with every step. I complained and walked way more than I should have considering that I was the one who signed up for this. I had lost my will to finish strong, but Dave’s patient prodding eventually got me to start running a little more with a 100 mile PR in sight.

As we approached the final couple of miles, Dad met up with us with his camera and made sure that we were doing alright. Dave took me through the last mile by debating which challenges were safe to do on the fitness challenge course and which ones might leave you in danger of slipping and breaking your neck. And then…finally…the Beast was laid to rest. Dave and I crossed the finish line together as Sam Pasceri, race director, greeted me with a 100 mile buckle and awarded Dave with a 24-hour buckle for being the first pacer to go 50 miles with his runner…awesome! And a 25:43:13 finish (due in large part to Dave making me run) gave me a 15-minute PR…no matter how small the victory, I will take it. I am once again humbled by the experience and so thankful to the family and friends that sacrificed to help me through it.

Taking a Trip

In 2009, Leigh and I took a trip to California. We saw things we had never experienced before, both in the city and in nature. We witnessed a forest fire in Yosemite, took a drive down the coastal highway one, communed with famous tech personalities, spent a night in Vegas and toured some of the most beautiful wine country in America.

This year, we took another trip. This trip has been characterized by the muddy trails, by snow, horses, puking and most of all friendships. This trip was a journey into the ultra running community. My first run this year with the Central Ohio Trail Runners involved 17 miles of snow covered trails at Alum Creek. To call them trails at that point in the winter is probably being generous – the snow cover made navigation near impossible if you were not familiar with their windy lines through the woods. However, on this cold wintery morning, I had the privilege of beginning my trail running journey with amazing runners like Mark Carroll, Julie Bowen-Miller, Tom Patton, Michael Patton, Dave Huss and others.

Flash forward to yesterday. I waited in delightful anticipation all day for what has now become known as a ninja run with Mark Carroll, Mike Keller and anyone else who feels so inclined to lace up their running shoes for a foray into Highbanks metro park well after the sun has set and the park has closed its gates. Sure it’s illegal, but so is answering the call of nature in, well, nature as I found out from Mike. While I have only participated in a few ninja runs I cherish each chance I get to head out for some miles after dark with my closest running friends. The first all night run I participated in was up at Mohican State Park. As darkness was falling, Star told us how cool it is to run at night despite the fact that people may call you crazy for it. To me, running all night was a magical experience. Not many people can (or want to) say that they have done it. At 4:45am, Jay’s watch alarm went off signaling that he should be getting up for his morning run on a normal day and letting us know that we had all been out in the woods together for the last 8 hours.

I often like to think that I can take care of myself and that I have things in my life under control. The reality is that I have always had people in my life to take care of me and to watch over me. This could not have been better illustrated this year by the people who took care of me at the two 100-mile races that I completed this year. To nurse a runner back to enough health that they can get their legs moving again, knowing full well that they have brought this pain on themselves, takes a lot of love and a lot of selflessness. In my moments of hubris, I like to think that I can run these races on my own power and strength. The reality is that I have many loving and faithful friends and family that gave me the gift this year of helping me along my journey.

There are so many moments this year that I have absolutely loved and will always cherish. They have marked the beginning of my ultra running trip and a new era that has already proven itself to be unbelievably sweet. Thanks to all that have participated and I’m looking forward to what 2011 will bring.