So, I’m starting my second winter season commuting by bike, so I figured I’d use the blog to record notes on my rides, including clothing I wore, which bike I rode, etc. The idea is to get a better sense of what works best in different weather and road conditions. So here goes.
First sub-freezing morning ride today (28°). Partly cloudy conditions with twilight at the beginning of the ride and sunlight at the end. A glaze of snow, mostly in shady grassy areas, left over from the snowfall at the beginning of the weekend. Some wet spots on the road, and a bit of ice here and there, but not too much.
Took the fixed-gear bike and rode through Patapsco State Park on the Grist Mill Trail. Total distance a little under 15 miles. Trail was actually in better shape than I expected 2 days after a snowfall. Ilchester foot bridge had a glaze of snow and ice, so I got off and walked over. A few puddles here and there that I rode through slowly (no fenders), but other than that, no problems.
Clothing: arm warmers, polyester athletic t-shirt, “Under Armour” long sleeve athletic top (mostly polyester), Performance “transformer” shell/windbreaker, thermal tights, wool socks, neoprene toe covers, neoprene shoe covers, REI helmet liner, medium weight cycling gloves. This was comfortable for 90% of the ride. Feet starting to get cold toward the end.
Summer’s over, and that means that the joys of cold weather bike commuting are right around the corner. I’m still trying to find an all-season commuting tire that provides the best combination of speed and resistance to flats. And of course, nothing provides a better test bed for tires than Maryland roads in the winter.
The ultimate tire for flat resistance (at least in my experience) is the Specialized Armadillo. I’ve ridden a set of these for over 3000 miles, until the sidewall wore out, without a single flat. They’ve worked as advertised for me. The only problem with them is they’re heavy and somewhat slow. I’m not racing with them, so that’s not a huge problem. But if I can find something a little lighter and faster with the same resistance to flats, so much the better. If not, I have no problems sticking with the Armadillos.
Last winter I ran a set of Vredestein Fortezza SEs. These are more known as racing tires than as all-seasons, and they also have the advantage of being relatively cheap at under $30/tire. The Vredesteins rode well, but the back tire only lasted around 2000 miles before it started flatting on me regularly (the front tire is still going strong).
After buying a second bike this past summer, I now have 2 bikes to use for commuting, so this winter I’m putting 2 different tires through their paces: Continental Ultra Gatorskin on the road bike, and Bontrager Race Lite Hardcase on the fixed gear/single speed bike. Both sets are 700x23C, and both are new as of this writing. I’ll be running both sets at 110psi, give or take. NB – I never seem to get flats on the front tire, so I’m only comparing performance for the back tires. The fixie has a set of 2 Bontragers, and the road bike has a new Continental on the back and an older Vredestein on the front.
It’ll take a little more time to get the results in, as I’m now splitting my commutes across 2 bikes, so it’ll take longer to rack up miles on the tires. But I’m looking forward to seeing which tire lasts longer under similar conditions. Took my first ride on the Continental this morning, and surprise surprise, it rides a lot faster than the Armadillo it replaced. Stay tuned!
Thinking about brewing this yummy-sounding brown ale this fall…
Oak Leaf Brown Ale
6 2/3 pounds light malt extract
1 pound crystal malt (80L or higher)
1/2 pound chocolate malt
1 pound dark brown sugar
1 ounce Kent Goldings hops (bittering)
1/2 ounce Perle hops (flavoring)
1 package British ale yeast
3/4 cup corn sugar (priming)
Place crystal malt and chocolate malt in water and steep at 155 degrees for 30 minutes. Remove spent grains and bring water to a boil. Add malt extract, brown sugar, and Kent Goldings hops. Boil for 1 hour, adding the Perle hops after 30 minutes. Cool the wort and pitch the yeast. Ferment for 7 to 10 days. Bottle, using corn sugar. Age in bottle for 7 days.
Original Gravity: 1.044
Looks pretty easy. The recipe is from “The Homebrewer’s Recipe Guide” by Higgins, Kilgore and Hertlein.
At the same time, we’re going to brew a second batch of the holiday ale we brewed in 2007, which turned out really good.
The big question is, when are we going to find a free day to brew 2 batches of beer? Hoping to do it in early October, when the basement should be getting to a good temperature for ale fermentation. Stay tuned!
Spend 30 minutes with the leafmaster, vacuuming up all the junk at the bottom of the pool from the storms last night.
Achieve pleasant sense of accomplishment and well-being as I begin to remove the leafmaster from the now-clean pool.
Watch leafmaster bag separate from leafmaster as I’m pulling it out of the pool, spewing all the junk back into the pool where it immediately settles back to the bottom.
Mutter some choice words as I attempt to re-attach bag to leafmaster while it helpfully sprays water all over me and the pool deck.
Check that bag is secure and repeat step 1.
Pull leafmaster out of pool, this time with no mishaps, but now, instead of being happy, I’m sweaty and irritable. But at least the pool is clean again.
Ever think you might want your own pool? Forget it and go join the neighborhood pool. Thank me later 🙂
So. We were without air conditioning in our building for awhile today. Fortunately it’s a nice day out with unseasonably low humidity and a breeze, so I was able to open the window to make it tolerable.
It’s amazing how much beeping you hear in populated regions (like college campuses) nowadays. Seems like all day long, there’s beeping somewhere from a truck backing up. There’s so much of it that it just kind of fades into the background with other stuff like birds chirping. After awhile you don’t even hear it. Something about the sound makes it carry over really long distances, and it’s also very non directional, making it hard to tell where it’s coming from. It could be right around the corner, or it could be a mile away. You can’t tell. It’s just sort of “there.”
Last fall I put fenders on my road bike, which I use daily for commuting. They work great, but they make the bike really noisy. Now that summer is here and the weather is drier, I decided to try to figure out why the fenders are so noisy. I took the front fender off and rode to work with just the rear fender. The bike was TONS quieter without the front fender. I think that’s the culprit. The fender itself doesn’t rattle, so apparently something is vibrating against the bike frame. My front fork doesn’t have dropouts to mount fenders, so I had to use zip ties to attach the struts. Could be the struts vibrating against the fork, or the front of the fender vibrating against the underside of the brake, or who knows what else. If I can’t figure it out and make it stop, I may end up getting a clip-on fender to use on the front. Or I could replace my front fork, or I could forget about fenders on the road bike and get a hybrid or cyclocross bike (with better clearance for fenders) to use in wet weather. One can certainly never have too many bikes…
So.. another summer is upon us. Howard County schools finally let out at the end of this week. I remember when I was a kid, summer vacation was almost 3 months long, and now it’s down to barely two. Instead, there are tons more random days off during the school year, for “professional teacher work days” and the like. Not sure if it’s a step forward or back, but I think if I was a kid I’d feel a bit gypped.
Three weeks after uncovering, the pool is finally clear, clean and up to a reasonable swimming temperature. It was more of a swamp than usual this spring. Over 3 weeks I’d say it took 20 gallons of 12.5% sodium hypochlorite, 10 pounds of dry acid, 15 pounds of baking soda, and 3 pounds of aluminum sulfate (a flocculent) to get it cleared up. I had to vacuum to waste 4 times, compared to twice on an average year. Not sure what the deal was this year, but I’m sure the April heat wave didn’t help. It also didn’t help that the pool was already starting an algae bloom when we covered it in late September. Didn’t feel like dealing with it then, knew at the time it was going to give me headaches come spring, covered it anyway. Lesson for the day: Never put off fixing pool water problems.. they never go away, they just become bigger problems over time.
The big new thing for the pool this summer is the salt water generator. I installed it over the winter and early spring, in the hopes that it would cut down on work and help prevent water problems. One of the problems with manual chlorination is that during the summer, you can’t neglect it, even for a single day, or you will end up with algae. Automatic chlorine feeders are a step up, but you still have to buy, store and handle the chlorine, and you have to remember to keep the feeder full. With the SWG, you dump an initial amount of salt into the pool, then you set the SWG and forget it. Obviously they still require maintenance, but they eliminate the day-to-day drugdery of manual chlorination and eliminate the need to handle and store lots of chlorine. Now, I keep a little bit on hand for “shocking,” but that’s it. The jury will be out on the SWG until I’ve had it for a whole season, but up to now, it’s lived up to the hype and seems like the best thing to come along for pools since automatic cleaners.
I got an early start on the commute this morning, so I decided to try an alternate, longer route to get from Elkridge to UMBC on the bike:
West on Montgomery Rd
Right on Rockburn Dr
Right on Montgomery Rd
Right on Kerger Rd
Right on Ilchester Rd
Left on Beechwood Rd
Left on Bonnie Branch Rd
Right on Montgomery Rd
Right on New Cut Rd
Left on College Ave/St Paul St
Right on Frederick Rd
Left on Oella Ave
Left onto Ellicott City Trolley Trail
Straight onto Edmondson Ave
Right on Melvin Ave
Left on Frederick Rd
Right on Mellor Ave
Bear right onto Hilltop Rd
Ride onto campus
Sort of a 1-hour tour of Elkridge, Ellicott City and Catonsville. Total distance around 18 miles.
Almost all of my morning commutes take me through Patapsco State Park, so this was kind of a departure from the routine. I’m looking for options for longer rides, and I wanted to see what the traffic was like on this route. Turns out the traffic is not too bad, except for Ilchester Rd between Kerger and Landing, and Frederick Rd in Ellicott City. But Ilchester is only busy on school days, and I’m only on Frederick Rd for about ¼ mile. So all in all, I’d say this route is a winner. Other observations:
The route has some challenging hills, but not until more than halfway in, when I’m fully warmed up. Also the descent into the river valley on New Cut Rd. is much nicer than my usual white-knuckled descent down Ilchester Rd.
I swear I must have gone over at least 30 speed humps. Next time I’m going to keep count just for kicks. Maryland: Traffic Calming Capital of the World.
Not sure I’ll be riding on the Ellicott City Trolley Trail again. Parts of it are pretty torn up by roots. Not too road-bike-friendly. The alternative is to take Westchester Rd, which shouldn’t be bad.
I’m a frequent shopper at my local big-box home improvement warehouse chains. I’ve got my pick of them, too — at last count there were 3 Lowes and around 8 Home Depots within 30 minutes drive of my house. Welcome to the Baltimore-Washington corridor.
I’m also a web surfer. I like to plan projects at home and then look for the stuff I need online before I actually get in the car. I’m sure there are many more like me. And for the longest time, neither of these two retailers seemed to “get” this. Searching for stuff on their web sites was mostly an exercise in futility. In most cases, the search results I got back were either incomplete or totally unrelated to what I was looking for.
Lowes has made some improvements to their web site in recent years. Case in point: recently I was looking for some PVC electrical conduit and fittings. Both Home Depot and Lowes carry a fairly complete line of PVC conduit manufactured by Carlon. I went to both retailers’ web sites and searched for “carlon.” Lowes’ site worked great, returning several pages of relevant results. Home Depot’s site “helpfully” corrected my search term to “gallon,” and returned several pages of shop-vacs and pressure washers. Guess where I ended up going?
I guess the moral here is that retailers need to start realizing that their web sites are extensions of their store fronts. Online catalogs should be easy to search and results should reflect what’s actually on the shelves in the stores. I’m sure that’s much easier said than done, but ultimately, modern consumers are going to be driven to the stores that have the best web sites.
I’m in the process of installing a salt-water chlorine generator (model DIG-60 from AutoPilot) for my swimming pool. As part of this, I need to plumb the salt cell in downstream of my filter. The cell is part of a big inline manifold which includes a 3lb spring check valve. The valve’s purpose is to limit the water pressure going through the salt cell, theoretically extending the cell’s life. Anyhow, as I was preparing to install the manifold, I dropped it (don’t ask) and the check valve broke away from one of its adjoining tees:
What to do here? The whole manifold is solvent-welded together, and the tees are attached to proprietary unions. At first glance there appeared to be no way to fix it other than ordering a replacement manifold, at a cost of over $100. By contrast, a replacement check valve can be had online for $15-20. So I decided to think outside the box a bit. The check valve is made by Flo-Control and is commonly sold as an air check valve for spa blowers. It has a 1½” socket and a 2″ spigot, meaning one can either attach a 1½” pipe “inside” it, or a 2″ pipe “around” it. AutoPilot ships it with 2″ tees cemented to either side, which attach to the pool’s plumbing. My pool has 1½” plumbing, so I would ordinarily need a reducer bushing to attach to the tees on the manifold. When the manifold broke, the 1½” socket end of the valve was left stuck inside the tee. Eventually, it occurred to me that if I cut the other tee away from the valve, I could flip the tees around and cement a new valve to the intact ends. The other ends, with the remains of the original valve, would then accommodate my 1½” plumbing without the need for reducer bushings. It seemed like a great plan, so I pulled out my trusty miter saw and cut the intact tee away from the old valve, leaving me with 3 pieces:
I then went online to look for a replacement valve, and promptly ran into another problem. It turns out that this particular valve is sold in a bunch of different spring weights: .75, 5, 10, and 15 pounds, to name a few. The version that ships with the AutoPilot has a 3lb spring. And here’s the problem: I wasn’t able to find the valve with a 3lb spring anywhere. It’s not even listed on Flo-Control’s web site. They’re apparently made special-order for AutoPilot.
Undeterred, I wondered if I could remove the spring from the broken valve and reuse it in a new valve. With the help of a couple of makeshift “spring removal” tools I fashioned out of copper wire, I was able to extract the spring. As a proof-of-concept, I then replaced the spring with the help of some needle-nose pliers. Encouraged, I went ahead and ordered an identical valve with a .75lb spring. I chose the model with the lightest spring I could find, figuring it’d be the easiest to get out without damaging the valve. The valve arrived a few days later, and happily, it was identical to the original valve, other than having a different weight spring and not being broken. The lighter-weight spring easily came out of the new valve, and with a little effort I was able to insert the 3lb spring. Turns out direction matters when re-inserting the spring: it initially wouldn’t seat properly, but when I flipped it around it went right in. With that, I had a working, non-broken 3lb check valve. I then cemented the two tees onto either end of the valve, completing the repair:
All that’s left to do is plumb it in and make sure it works. Assuming it does, my little accident (dropping the manifold) cost me a lot less than I had feared.
I’m doing a bit of tidying-up of my online music library for consistency.. editing tags, renaming files, that kind of thing. My library consists mainly of FLAC files ripped from my CD collection. My music player of choice on my Ubuntu box is Banshee. Banshee has an “Edit Metadata” feature which looks very handy on the surface, but it appears to have a bug where it doesn’t actually save the metadata edits back to the file. It does, however, update the metadata in Banshee’s internal database, so in Banshee, it appears that the changes have “taken”, but when I play the music files elsewhere it becomes apparent that the changes haven’t been saved out to the files. Of course, I didn’t discover this problem until I had made edits to 250 files or so. Nothing against Banshee here of course.. it’s free and no warranty was ever implied or expected. But, I did have some files to fix.
Fortunately, as I mentioned earlier, the edits I made were saved in Banshee’s internal SQLite database. So all I really needed to do was whip something up to compare the database with the actual tags in the files. First, I dumped Banshee’s SQLite database to a flat file:
sqlite3 banshee.db 'select * from Tracks'
Then I wrote a quick Perl script that extracted the FLAC tags from each of the files in the database dump and compared them to the corresponding fields in the SQLite table:
#!/usr/bin/perl
use URI::Escape;
use Audio::FLAC::Header;
print "Key\tPath\tFLAC tag\tDB tag\n";
while (<>) {
chop;
my %dbTags = ();
my($path);
($path, $dbTags{ARTIST}, $dbTags{ALBUM}, $dbTags{TITLE},
$dbTags{GENRE}, $dbTags{DATE}) =
(split(/\|/))[1, 3, 5, 9, 10, 11];
next unless ($path =~ /^file:\/\//);
next unless ($path =~ /\.flac$/);
next if ($path =~ /\/untagged\//);
$path =~ s/^file:\/\///;
$path = uri_unescape($path);
if (! -f $path) {
print STDERR "Can't find $path\n";
next;
}
my $flac = Audio::FLAC::Header->new($path);
my $tags = $flac->tags();
# Strip extra date info..
$tags->{DATE} = substr($tags->{DATE}, 0, 4);
for (keys %dbTags) {
if ($tags->{$_} ne $dbTags{$_}) {
print "$_\t$path\t$tags->{$_}\t$dbTags{$_}\n";
}
}
}
exit 0;
This script outputs a tab-separated file that shows all of the discrepancies, suitable for loading into your spreadsheet of choice. I only had to make a small number of edits, so I made the changes manually with EasyTag. But if I had wanted to take this farther, I could have had the Audio::FLAC::Header module actually save the corrections to the files.