Vacation 2011: Kentucky

Woodford Reserve Distillery Vacation this year took me from St. Louis through Lexington, Kentucky on our way to the Asheville, North Carolina area. First, though, we had a bit of an unexpected adventure planned for us.

As we rolled out of St. Louis, the MODOT electronic billboards informed us that the I-64 bridge was closed in Louisville, 260 miles away. We made it to town and started to meetup with the detour, after fighting through a bit of traffic. As we merged on the interstate to cross the river, the car gave a bit of a rough drive and I realized we had a puncture. We pulled over on the side of the interstate, pulled everything out of the trunk so I could put on the spare. Meanwhile, we looked up a tire shop, finding one just across the river. We drove into Louisville at about 45 miles per hour on a spare and headed to the tire shop, unpacked the trunk (again), and waited for a new tire to be put on. Then we repacked the trunk (and each time we did so the trunk was better packed than the previous time!).

After that little adventure, we went to a fabulous little joint called Toast on Market for a bit of brunch: toast and eggs and bread pudding pancakes!

Woodford Reserve DistilleryBack in one piece and fed, we rolled on toward Lexington. Our original plan was to make it to the Woodford Reserve Distillery by their last tour, but we assumed at this point our detour in Louisville meant we wouldn’t make it in time. It turned out we missed the tour by a matter of twenty minutes. We still got samples (yes!), hit the store for a bottle of this fine bourbon and went on to our hotel.

That night we went to another great place called Saul Good for pizza, salad, and a most amazing banana foster desert served atop a Belgian waffle!

New rotatelib version out now!

I just pushed a new version of my python library for rotating backup files and database tables (aka, rotatelib) to Github. The new version, which was available separately in a different branch for a little bit, is exciting set of changes for the library because it now supports Amazon Web Services. The version number of the master branch has now jumped from version 0.2 to 0.6, but what has changed?

Amazon Web Service Support

The library now supports S3 buckets and EC2 snapshots. For S3, we support this as though it were a filesystem. You can specify your bucket and even a portion of that bucket to search.

EC2 is a bit different because we are only look at the snapshots available to the credentials you provide. By default, the library will try to parse a date from the description of the snapshot. Failing that it will look at the start time of the snapshot. You can also trigger the library to only pay attention to the start time, if you that’s what you need.

This support comes via the boto python library.

New Criteria

We’ve added some new criteria: startswith and except_startswith. The new criteria even accepts a list as well as string, so you can check if your backups start with one of many strings (or doesn’t … it’s up to you!).

An Example

Using boto to manage Route 53

Recently there was a bit of an issue with MediaTemple’s DNS servers. So to get a few of our clients back online, we added their DNS info to Amazon’s Route 53 service. As of this post, there is no official interface to manage this information beyond the REST API.

Luckily the latest editions of the boto Python library supports route 53, but there aren’t many examples of how to handle some of the code with boto. So here’s what I did:

Note that you’ll need to likely get a version of boto from the source to get the Route 53 functionality.

Death by Hills 2011

The Team Seagal crew was at it again with a new edition of their DBH road ride. In 2010 I realized that this ride is best completed with any kind of wussy gearing you can get your hands on: compact, triple, mountain bike casette. Did I listen? Nope. Showed up with the same standard gearing (52×39 rings and 12-27 cassette) and suffered it out. I mean, I’m in better shape, so it shouldn’t be that bad. Right?

So I got there late. I thought the ride started later and so I was behind the group by about 20-30 minutes. So I bypassed the first climb (see all the other suckers in a video here) and the second loop of the route. This gave me enough time to catch onto the fast-guys group. I have 0.1% chance of hanging with riders like this, but there were a few that were just out having a good ride and hanging out. So I was up at the front, riding with a good crew and we snapped off the Eureka loop and as we rolled from the gas station a good 55+ riders showed up. The group had grown! So I decided while pacing myself up the Allenton climb, to go hit the Scenic Loop and wait for the rest of the group.

After they had suffered the Wall, I joined on for almost the rest of the ride. As we approached the second gas station stop, I was feeling the effort of the day. I put a foot down on the evil Cremin’s Green earlier, but was suffering in the ride through Babler. Doberman hill seemed twice as long as usual. Back at the rest stop, I stocked on some calories and kept on but that only lasted for about another hour. When we reached the road back, I opted to skip another loop and just finish the ride with 80 miles. This was my first ride over 4 hours this year and I was feeling it.

Not only did guys crush the entire ride, there were three that did it all with a single gear! Total damage: 80.25 miles and over 7,000 feet of elevation gain.

Now only if we could get some dry trails, then I could get ready for the 1st mountain bike race of the year in 11 days!