We’ve moved

I’ve moved my blog to:


All of the riveting content that you know and love is there. Check it out!


Greetings Earthlings

I took a look at my long-neglected blog this afternoon, and realized that it has been about 2.5 years since I posted anything here. That’s right around the time I picked up geocaching as a hobby, and ever since then, I’ve been using my geocaching logs to get my writing fix. Still, it sometimes feels like I lost something when I abandoned the blog. There’s something to be said for just stopping to write whatever comes to mind, whenever the spirit moves me. It’s kind of like a public diary. Maybe I should return here every now and then. I’m here now, at any rate.

I am still commuting by bike regularly, although I’ve dropped from 4-5 days per week down to 2-3 days per week. The lack of bike infrastructure in my area, combined with the realization that no one is really doing anything to improve matters (in spite of talking a good game), has left me a little jaded. It actually seems like the area is getting less bike friendly over time. I no longer find myself looking forward to riding, although I’m sticking with it because it’s become routine, and it keeps me in shape. I hope the situation changes, but I’m not holding my breath. Maybe it’s time for a new bike; that might improve my outlook. Moving would also help. You can bet that when we eventually move, we’ll be taking a close look at walkability and bikeability of the areas we consider.

On the positive side, a year or two ago, I discovered that I can hike to work. I have to allow about two hours each way, so it’s not something I can do every day. But recently, I’ve refined and improved my route a bit, and am doing it about once a week. The majority of my route takes me through Patapsco Valley State Park, which is a really nice walk. The route is strenuous, and complements the biking nicely. I’m hoping that the cross-training will keep me more balanced, and help to stave off injury.

I also bought a kayak in late 2014. I’ve yet to figure out how I can incorporate that into my daily commute, but not for lack of trying. ūüôā¬† In the meantime, it’s been a fun recreational activity, particularly when combined with geocaching.

Hopefully will write more soon. In the meantime, keep moving!

Random Biking Notes

It’s been awhile since I’ve been inspired to write anything here, but I wanted to sneak a post in for April 2013, preserve my streak of blogging at least once a month.¬† Twitter is largely to blame for my lack of blogging, as with my current schedule, it’s much easier to fire off a quick thought in 140 characters than it is to formulate several paragraphs.

I’ve burned through another rear rim on my road bike.¬† I broke a spoke earlier this month, and upon removing it, I noticed that the rim was cracked in several places.¬† So, off to the bike shop for a new rim and wheel rebuild.¬† I blame the trashed rim on Baltimore County’s crappy back roads.¬† I think I need to put some wider tires on this bike and ride at lower pressure.¬† The problem is, I can’t fit fenders on this bike with anything larger than 23mm tires.¬† Maybe I should lose the fenders and buy another bike that I can use in bad weather.¬† You can never have too many bikes.

While the new wheel is on order, I pulled out my single speed bike, which I hadn’t ridden since last summer.¬† I used to ride fixed gear all the time, until I threw my hip out spinning downhill, and then I gave it up.¬† I flipped the rear wheel around to the freewheel side and have been riding the bike that way.¬† When I first tried that a couple years ago, I hated it because the gearing was too low to pick up any speed going downhill.¬† Now, I’m not as speed-obsessed as I was back then, and I don’t mind it as much.¬† Sometimes it’d be nice to be able to build up a little speed in traffic, but it’s a fair trade-off in exchange for the simplicity and ease of maintenance of a single speed bike.

That’s all for now.  Hopefully my next entry will come before May 31.  :-)

How to Save Money on Pool Chemicals

I’ve learned a few things about swimming pools after owning one for 12 years.¬† #1, pools are a huge money pit.¬† #2, pool chemicals, particularly when sold as such, are extremely expensive.¬† And #3, for a lot of pool chemicals, you can save a significant amount of money by purchasing the equivalent product from an alternative source.¬† You just have to know where to look.

This write-up is geared towards concrete/plaster pools with salt water Chlorine generators, but much of the info is applicable to all pools.


If your pool doesn’t have a salt water generator (SWG), liquid chlorine is generally the most economical way to chlorinate.¬† The trade-off is that it’s more labor intensive than using Trichlor pucks, and the liquid chlorine has a shorter shelf life.

For pools with a SWG, it’s still a good idea to keep some liquid chlorine on hand for shocking, opening/closing the pool, and off-season maintenance.

Standard Clorox bleach is the same thing as liquid pool chlorine, just in a lower concentration. Buy standard, plain old Ultra Clorox, with no added fragrances or other stuff. Check the label for concentration; you want at least 6.25% Sodium Hypochlorite. 2 parts of this is equivalent to 1 part liquid pool chlorine, which is 12.5% Sodium Hypochlorite. The weaker concentration also has a longer shelf life.  Look for house brands at stores like Wal*Mart, but make sure the label clearly shows the product concentration.

In my area, it is still more cost-effective to buy 12.5% pool chlorine in 5-gallon jugs. Namco Pool and Patio sells them for $17 (+ $6 refundable jug deposit) as of 2010, which works out to $3.40/gallon. At this price, you’d have to find Ultra Clorox at $1.70/gallon to get the same value.


If you have a SWG pool, you’ll periodically need to add salt to it.¬† Look for “solar salt” at Home Depot or Lowes, in 40lb and 80lb blue bags. It is sold for use with water softeners, and typically goes for around $5 for 40lbs. Look in the aisle with the water heaters and water softener systems. There has never been a discount for buying the 80lb bags, so I get the 40lb bags for ease in handling.¬† Don’t use table salt; it contains iodine and you don’t want that in your pool.

Alkalinity Increaser

Arm & Hammer Baking Soda (Sodium Bicarbonate) is the same stuff as the “Alkalinity Increaser” the pool stores sell. We buy the big bags of it sold at warehouse clubs. It’s typically less than half the price of the pool store stuff.¬† Another bonus: it’s classified as a food/grocery product, so in most states, you won’t pay sales tax on it either.

pH Reducer

If you have a plaster pool and/or use a SWG or any kind of hypochlorite product (liquid chlorine or Calcium Hypochlorite powder), your pool’s pH will tend to rise over time and you’ll need to periodically add acid to lower it.¬† Look for Muriatic Acid at Lowes, in the paint section near the turpentine and paint thinner. It is sold in gallon jugs. I have never found it at Home Depot.¬† Muriatic acid is significantly cheaper than “dry acid” or sodium bisulfate, which is typically sold for pools.¬† The trade-off is that it’s more hazardous to store, so be careful with it.¬† Be careful: you want the stuff with the orange label, not the “safer muriatic acid” with the green label.

One year at Home Depot, I scored several 8-pound jugs of Sodium Bisulfate (dry acid) at around $2.50 a jug. This is an amazing deal, probably cheaper than wholesale. I think it was around December. You can’t count on finding a deal like this every year, but sometimes it does pay to check the pool sections in big box stores during the off season.

Calcium Hardness Increaser

In plaster pools, it’s important to keep the water from getting too soft, or it will become corrosive to the pool plaster.¬† Look for bags of Calcium Chloride ice melter at the big box stores in the winter. In early 2010, I found 50lb bags of this at Home Depot for around $17, which is about ¬ľ the price you’d pay for the same stuff at a pool store. The catch is, you have to read the label carefully. You want pure Calcium Chloride, and it can’t be mixed in with any other chemical. Most winters, the box stores sell blends of different chemicals, which are cheaper by the pound than Calcium Chloride, but you don’t want to put them in your pool.

Cyanuric Acid

Sold as “stabilizer/conditioner.” Can’t really cheat with this stuff, unfortunately, as it doesn’t have many applications outside swimming pools. It often sells at $4-5/lb at pool stores. If I had an opportunity to buy this at wholesale, I’d stock up. But lacking that, I’ve shopped around for online deals, and the best price I’ve found currently is at Inyo Pool Products, at $70 for a 25lb pail. That’s $2.80/lb, plus a $5 handling fee per order. Dry cyanuric acid lasts forever, so stock up.

Test Kit Reagent Refills

These really add up, particularly the good quality reagents from Taylor. Surprisingly, the best online prices I’ve found are at Leslie’s Poolmart, where shipping is free for orders over $50.¬† As of 2011, you can also buy refills directly from Taylor on their web site.

Enumerating Contract Bridge Auctions with Lisp

I’ve been a fan of Contract Bridge for a long time. ¬†I’m really bad at it, but all the same, I find it fascinating and compelling. ¬†One of the interesting facts about Bridge is the astronomical number of possible auctions. ¬†For any given deal, there are over 128¬†√ó 1045 possible auctions. The exact number is:


That’s a lot! ¬†Being the nerd that I am, I decided to dust off my LISP skills (mostly neglected since college) and write a program to enumerate them. ¬†To wit:

(setf allbids
      '("1C" "1D" "1H" "1S" "1NT"
        "2C" "2D" "2H" "2S" "2NT"
        "3C" "3D" "3H" "3S" "3NT"
        "4C" "4D" "4H" "4S" "4NT"
        "5C" "5D" "5H" "5S" "5NT"
        "6C" "6D" "6H" "6S" "6NT"
        "7C" "7D" "7H" "7S" "7NT"))

(defun printMore (bidList bidStr)
  (if (null bidList) nil
      (mapcar #'(lambda (p)
                  (printAuctions bidList (concatenate 'string bidStr p (car bidList))))
              '(" " " P " " P P "))
      (printMore (cdr bidList) bidStr))))

(defun printAuctions (bidList bidStr)
  (let* ((matrix
            " P P Dbl"
            " P P Dbl Rdbl"
            " P P Dbl P P Rdbl"
            " Dbl"
            " Dbl Rdbl"
            " Dbl P P Rdbl"))
         (bidMatrix (mapcar #'(lambda (x)
                                (concatenate 'string bidStr x)) matrix)))
    (dolist (x bidMatrix)
        (print (concatenate 'string x " P P P")
               (printMore (cdr bidList) x))))))

(defun printSomeAuctions (startBid &optional (prefix nil))
  (let ((bidPos (position startBid allbids :test #'equal)))
    (if bidPos
        (let ((bidList (nthcdr bidPos allbids)))
          (printAuctions bidList (concatenate 'string prefix (car bidList)))))))

(defun printAllAuctions ()
    (print "P P P P")
    (mapcar #'(lambda (p)
                (printSomeAuctions "1C" p))
            '(nil "P " "P P " "P P P "))))

(printAllAuctions) will iterate through and print out every possible Bridge auction. ¬†Don’t hold your breath waiting for it to finish, though. ¬†The computer I was using, a Linux box running CLISP, printed out around 14,000 auctions per second. ¬†At that rate, it will take 291.4 √ó 1033 years to complete. ¬†That’s over 21 septillion (21 √ó 1024) times the age of the known universe.

ZyXEL WAP3205 – Not Recommended

Last Fall, I got it into my head that I needed to upgrade my home network’s wireless access point (WAP). ¬†I’d been using an old, but trustworthy, Netgear WG602V2 since around 2001-2002, and while it worked, I was hoping to get something with a bit more range, that supported 802.11N and various newer features. ¬†I decided to try out the ZyXEL WAP3205.

The ZyXEL started out OK, although it did not seem like much of an upgrade over the Netgear. ¬†The range and data throughput weren’t noticeably better. ¬†The problems started after a few months, when I upgraded my Macbook Pro to Mountain Lion. ¬†When I woke my laptop from sleep mode, the wi-fi would no longer automatically re-connect. ¬†I had to manually re-join the network every time. ¬†A pain, but not a show stopper.

The next problem started when I began playing around with AirPlay/AirPrint, both of which use Apple’s Bonjour service, which uses multicasting. ¬†With the ZyXEL, Bonjour was flaky at best: sometimes it worked, sometimes it didn’t. ¬†I couldn’t figure out any rhyme or reason to it, other than that the WAP was definitely the culprit, as Bonjour services worked fine over wired connections.

I read on a web site somewhere that the latest firmware on the WAP3205 addressed some issues with Bonjour. ¬†I was skeptical, because the firmware release notes didn’t mention anything about Bonjour, but I went ahead and updated anyway. ¬†This turned out to be a disaster. ¬†Not only did the new firmware not fix the Bonjour issues, it also messed up the networking on the WAP somehow. ¬†After upgrading, the wired ethernet interface on the WAP started randomly freezing up. ¬†The wireless was still active, but the WAP stopped responding to pings. ¬†This happened a couple of times. ¬†Another time, the interface stayed up for several hours, then froze up my entire LAN. ¬†None of my wired devices could connect to anything else on the LAN. ¬†When I unplugged the WAP3205, LAN connectivity instantly came back. ¬†Word of warning to WAP3025 owners: don’t install firmware version 1.00(BFR.7)C0 (released November 2012). ¬†This is the version that caused the instability with the LAN interface. ¬†I’d recommend waiting until a newer firmware revision is released before updating. ¬†Caveat Emptor.

After the LAN freeze-up, I ditched the WAP3205 and went back to my old Netgear. ¬†With the Netgear, Bonjour works great, I’m able to use AirPlay/AirPrint without any issues, and when my laptop wakes from sleep, the wi-fi reconnects without any problems. ¬†The Netgear isn’t perfect, though. ¬†I’m not able to get AirPlay mirroring working. ¬†The mirroring starts up and works for a few seconds, but then it shuts itself off. ¬†I had the same issue with the ZyXEL, so I’m not sure if the WAP is to blame for this or not. ¬†Searching the net hasn’t turned up a good explanation for this behavior so far, but I’m going to keep looking for a fix.

In short: If you need a reliable wi-fi access point that works with Bonjour, stay away from the ZyXEL WAP3205!

Riding in 2013 – Another warm winter so far

So it’s 2013, and I’m still riding.¬† A lot has changed with my riding routine this year.¬† For starters, I’m no longer recording ride stats in a spreadsheet.¬† I am using RunKeeper instead, and it’s been a great time saver.¬† I still plan to keep track of mileage for each of my bikes separately, though, so I’ll know when to replace tires, chains, etc.

I am also commuting to a new office, on the 6th floor of the Administration building at UMBC.¬† This requires me to ride the elevator to get in and out of the building, a prospect I was initially dreading.¬† However, so far it hasn’t been too bad.¬† The wait for the elevator isn’t bad, because it tends to be going the same direction I’m going, that is, up in the mornings and down in the evenings.¬† Although the elevators are sometimes crowded, I can wait for the next one and it’ll usually be empty.¬† The elevators aren’t huge, but the bike fits inside just fine.¬† Granted, it’s winter session and the campus isn’t crowded to begin with.¬† My tune may change in a couple of weeks when the spring semester starts.¬† We’ll see.

And finally, I’m trying out an Osprey Momentum 34 backpack, in lieu of panniers.¬† I really like the pack so far, and will write more on it after I’ve been using it for a month or so.

This winter has started off warm, similar to last winter.¬† I’ve been riding my road bike almost exclusively.¬† The past few days have been wet and drizzly.¬† A couple days ago, my rear fender started making this insidious rubbing noise.¬† It sounded like a leaf was caught between the fender and the tire, but I couldn’t find one.¬† It kept getting worse and worse, until finally I took the wheel off to get to the bottom of it.¬† It turns out that the silver mylar lining on the inside of the fender (Planet Bike Cascadia) was starting to peel away from the fender, and the loose end was rubbing against the tire.¬† I pulled on it, and about half of it peeled off the fender.¬† Now I have a fender that’s half silver and half clear, but no more rubbing noise.¬† I wonder how long before the remaining mylar starts to peel away.¬† The mylar seems to be totally cosmetic, and the fender is 5 years old and still fully functional, so no complaints.