My First Century

A few weeks ago I told several friends and colleagues that I would be participating in a cycling event to raise money to help fight Multiple Sclerosis. The ride entailed a 70-mile route on the first day, with an option for an additional 30-mile loop to make it a full century. It started in San Antonio, and ended in nearby New Braunfels. The following day would be a 58-mile return ride back to San Antonio.

I committed to doing the full distance, and asked the members of an online community I host to help by donating to this cause. And as usual, this great community responded generously, raising a total of $525! I want to extend my personal thanks to everyone who donated in my name – without your support I couldn’t have done this.

The weather threatened to be ugly on Saturday, and as a result the number of people who showed up for the Rackspace team wasn’t as high as we had planned, but those of us who did show up had a great time! (I’m the 4th from the right)

racker riders

The ride on Saturday started off well, with a threat of rain giving way to bright sun, and temperatures around 90F/32C. I did manage to complete the full century, but I can’t say the same for my phone’s battery, which died just before the 88th mile. Here is the record of my progress, using the awesome free app RunKeeper:

The extra 30-mile loop for the century started at about mile 69, with the farthest point out at mile 84. Those 15 miles were killer: lots of up-and-down, as we followed the road along the Guadalupe river. This first half was going upstream, and that meant a net climb of 150 feet. If I had started out here, no problem, but at this point in the day my reserve of energy was seriously depleted. When I finally reached the end of that segment I don’t think that I was ever so happy to see a rest stop as I was then! I rested up for a bit, drank a ton of liquids, ate some food, and then started on the return leg. It was definitely easier, but by then I was running on fumes, and every slight upgrade was a challenge. I had to accept the fact that I couldn’t climb hills at this point in the ride as aggressively as I had earlier, and had to instead simply pedal as best as my legs could manage. The few extra minutes taken by slowing down were not as important as continuing to make progress, and eventually that paid off. I made it to the finish line, got a big hug from my woman, found the RV that Rackspace rented for the event, and then settled into the air-conditioned bliss in a comfy couch with a cold beer. Ahhh…

A generous Racker who has a big house nearby was our host for the evening, feeding us, supplying more beer, and letting us sleep there overnight. They also had a pair of masseuses there to help soothe our aching muscles, and man, did I need that! It was a relaxing way to end a long day.

The following morning, the plan was to feed us and then take us back to the starting point for the return leg of the ride, but Mother Nature had other ideas. This was what we were greeted with:


That’s just a close-up; there were several lines of storm clouds behind that moving in from the north. With severe lightning, heavy rains, and the threat of spot flooding, the event organizers made the decision to cancel the second day of the ride. Oddly enough, I was very disappointed – you’d think that the morning after completing my first century the last thing I would want to do is ride another 58 miles, but I guess I had psyched myself up for the full two-day experience that it was a let-down not to be able to do the full ride. We ended up packing our bikes and gear into one of our trucks, and drove back to San Antonio.

It was a great experience overall on many levels, even with the pain and exhaustion of those final 30 hilly miles. Most importantly, though, was the satisfaction of reaching a goal I had set for myself a year earlier. Now that I’ve done a century, though, I think if I ride in next year’s event, I might just be content with the 70 mile route!

Great Customer Service

I work for a company for which customer service is the fundamental tenet, so when I see it in other companies, I really appreciate it. So I have to give big props to HomeDepot for their customer service. I’m remodeling my kitchen, and have spent quite a bit of money with them over the past few months, and this ensures that I’ll continue to do so in the future.

I bought the cabinets for the kitchen from them, and they were delivered about a month ago. If you know anything about cabinet installation, the base cabinets are installed last, to make it easier to work with the wall cabinets. So over the weekend I unpacked the cabinets, only to find that two of them were broken. One looked like it had been dropped on its corner, and another looks like it had been struck on the side. Both were unusable.

I went back to the store where I had bought them, and explained the situation. My designer, Paul, was very understanding, and told me to bring them back and they would exchange them for new cabinets. I mentioned that that would be difficult to do with my Honda Civic, so he offered to deliver the replacements to my house first thing Monday morning, and pick up the damaged cabinets. And yesterday he did just that. I now have two good cabinets, along with a great deal of gratitude to Home Depot for doing the right thing by me.

All This for Nothing

Looking forward to a new episode of Breaking Bad tonight. Last night I re-watched the previous episode, and while it was superb from start to finish, one line struck me the most: Walt was lying on the bathroom floor, insisting that Skyler never give up the money, and says “Please don’t let me have done all this for nothing“. It was clear then that once he realized the end was near, he came back to his original motivation for entering the meth underworld: to provide for his family after his death. As despicable as Walt’s actions have been, you could at least understand how he rationalized the brutality of his reign as Heisenberg. As long as he knows that his family is taken care of, he can face his upcoming mortality.

Contrast that with Jesse’s melancholy: he did all this for the money, period. He did it to get rich, and now that he is, he realizes the cost to his own sanity to have left such a trail of bloodshed was too much. That’s why he gave away his money: maybe by enriching someone else’s life he might feel that his actions have brought some good to the world instead of just death and suffering.

Bastrop Revisited

Bastrop, TX is a city about an hour or so away from Austin. It is also largely synonymous with the most destructive wildfire in Texas history, which began in September, 2011.

Last weekend I drove up to PyTexas, which was held at Texas A&M University, and my route led me through the Bastrop area. Nearly two years later the effect of the fire is still very striking: you’re driving along, passing through typical countryside areas, and then – black, burnt trees for miles. There is new vegetation springing up around these dead trees, but it just seemed to emphasize the destruction even more.

On my way home from the conference I pulled off the road as I passed through the area again, and took a few photos in this one small section of the devastation. I’ve posted them in an album on Google+. They don’t really do justice to the feeling you get driving through miles and miles of similar scenery, but they show the damage that was done, and how little things have recovered in two years.

PyCon Canada Review

It’s been almost a week since PyCon Canada ended, and I had meant to write up a review, but I was busy, so better late than never.

Besides an opportunity to learn more about Python, this conference served as a “training ground” for next year’s PyCon Montréal, which is where the 2014 US PyCon will be held. Yeah, I know, it seems silly to still call it PyCon US instead of PyCon North America, but I suppose it has to do with domain names, trademarks, etc., so I’ll refrain from ranting about that. So to that end, I volunteered to be an MC for roughly half of the total conference. Normally for PyCon you have two roles: Session Chair, who introduces the speaker, times the talk, and manages the Q&A session; and Session Runner, who makes sure that the speaker gets from the green room to the correct session room, and who handles any problems such as missing video adapters, etc. But for PyCon CA, this was changed so that there was an MC and a Runner. The MC was someone with experience from PyCon US, and they served for half of the day in the room. There were fresh runners for each session, but rather than just escort the speaker, they did everything that session chairs and runners do, with the MC guiding them and making sure that they knew what was expected, and who could help out if there were any problems. So in many ways, though I spent half the conference running the talks, I felt like I hardly did anything. The runners did just about everything, and I only had to help out a few times. I have no worries that they’ll be ready for the big leagues next year!

As expected, there were many interesting sessions. I’m not going to give you a summary of everything I saw that I liked, but instead I’ll touch on a few highlights. Probably the one that made the biggest impression on me had nothing to do with Python per se, but instead was about Sketch, a programming language designed by MIT to get children thinking about programming without saddling them with the tedium of learning syntax. This was shown in the keynote on Sunday given by Karen Brennan, who is an Assistant Professor of Education at Harvard University. Besides making it easy for the kids to get started learning about programming concepts, it also makes it easy for them to share their projects, or to take someone else’s project and add to it. In other words, they are teaching kids about the benefits of open source and shared code! And while it’s designed for kids, I think it would also be a huge benefit for non-technical adults by helping familiarize themselves with programming without having to get totally geeked out.

Another talk I enjoyed was Git Happens, which was given by Jessica Kerr. This was one of the talks for which I was MC’ing, and hadn’t otherwise planned on attending, as I’m comfortable enough with Git. But rather than be bored, her way of explaining how Git works was much, much clearer than I have ever been able to manage when helping someone else get up to speed with Git.

Brandon Rhodes gave an excellent talk entitled Skyfield and 15 Years of Bad APIs , which covered his efforts to re-write his astronomical calculation library. It was fascinating to see how decisions which seemed reasonable at the time turned out to be less than optimal, and how he learned from them to make the new version much cleaner. As an aside, if you haven’t seen Brandon talk, you’re missing something special. He blends insight with an extremely dry sense of humor, making for a very enjoyable session.

I’ve already written about Dana Bauer‘s Red Balloon demo, so I won’t repeat it here. Suffice it to say that it captivated the attention of everyone in the room.

My talk was basically the same talk I had given the previous month at PyCon Australia, but in a much shorter time slot: 20 minutes instead of 45! I spent much of the time before the conference consolidating my slides, and eliminating anything I could in order to cut the length of the talk. I practiced giving the session over and over, speaking as fast as I could. When the time came, I apologized in advance for the speed at which I was about to give the talk, and then blazed through it. To my surprise, I managed to finish it in 18 minutes, and had time for a few questions! Afterwards I spoke with some who attended the talk to get an idea how it seemed to them, and they didn’t feel like I skipped over anything that made it hard to follow, which was my goal when I was paring it down.

After the sessions had ended, I went with a fairly large group of people to a local restaurant. I didn’t know very many people, and those with whom I sat were all from the team in Montréal who were going to be running PyCon 2014. They started out as strangers, but by the end of the evening (and more than a few pitchers of beer!), we became friends, and I look forward to seeing them again in Montréal next April!