Blog

  • Two-Speed pool pump motor: Worth it?

    With electricity prices set to skyrocket in the Baltimore area this summer, I’m once again looking at ways to cut down on our consumption. And in the summer, one of our biggest consumers is the pool pump. I’ve read that a two-speed pool pump motor can cut down quite a bit on energy usage. A standard swimming pool pump runs at 3450 RPM. A two-speed pump can also run at half speed, or 1725 RPM. The interesting thing is, although it’s running at 50% of normal speed, a typical model draws less than half (about 30%) of the current that it would draw running at full speed. So in theory, you could run the pump at half speed for twice the length of a normal-speed run cycle, do the same amount of work, and use less power. Now, this might be wrong. I’m not well-versed enough in fluid dynamics to say whether, for instance, 10 hours at 1725 RPM would turn over the same amount of water as 5 hours at 3450 RPM. But, for the sake of argument, let’s assume it would. Running at low speed would certainly consume less power, and longer pump run cycles are good for the pool water because they keep it from stagnating (I’ve also heard anecdotal reports that sand filters “work better” with lower flow rates — take that for what it’s worth). Of course, that’s only one side of the story. There are also some caveats..

    1. I can’t run the pump on low speed 100% of the time. I have a pressure-side pool cleaner (Polaris) with a booster pump, and I’d need to run at full speed while the cleaner was on (3 hours a day, 3 days a week or so). And, I’ll want to run on full speed for 3 hours or so after adding chemicals, to get them distributed as quickly as possible. Any time the pump is on high speed, it cuts into my potential savings.
    2. The pump motors I’ve looked at all consume somewhat more current (1 amp or so on models I’ve looked at) on high speed, than equivalent single-speed motors. Not quite sure why this is, but it seems to be a fact of life.
    3. Initial cost for a two-speed setup is high, even assuming I’m only replacing the motor and not the entire pump. The pump would need special wiring, and a new timer/control to control high vs low speed operation. Plus, I’d need a new shaft seal. I’m probably looking somewhere in the $350-$400 range when all is said and done.

    A couple years back I made a spreadsheet to estimate potential savings using a two-speed pump, and concluded that the payback period was too long to justify the initial effort and expense, given what I was paying for electricity at the time. However, with the pending rate hike, it’s probably worthwhile to crunch those numbers again..

  • Web Proxy channels and cw_person parameter

    CWebProxy provides a channel parameter called cw_person, which is a comma-separated list of person attributes. If this parameter is set, CWebProxy is supposed to fetch the listed attributes and pass them to the back-end web application as CGI parameters. This is a potentially handy feature, because then we can develop “smart” unauthenticated apps which present content tailored to individual users. For example, in our case we’d like to develop a “campus links” channel, which presents different sets of links to different users based on their LDAP affiliations. In theory, with cw_person, that should be easy to do.

    Well, I tried this out, and as usual, what sounds great in theory isn’t always great in practice. There are two issues with this feature:

    1. If a user has multiple values for a given attribute, CWebProxy only passes one of them (presumably the first one returned by the LDAP query). Example: I set up a test channel with cw_person set to pass the LDAP affiliation attribute. My LDAP affiliations are “staff”, “employee”, and “alumni”, but CWebProxy only passes “staff”.
    2. When the channel is refreshed (e.g. by switching to a different tab and then going back), it seems to stop passing the attribute. Not sure if this is user error, or if that’s just how it works. But if this is going to be any use to us, it needs to pass the attributes every time the channel is rendered.

    These two problems will probably prevent us from using this feature to do what we want. Yeah, we can probably hack CWebProxy to make this work, but I think a better solution would be to write up a custom local connection context. That will give me complete control over what gets passed to the back-end app (and when), with the added benefit that we can use it with a CGenericXSLT type channel and aren’t limited to using a web proxy.

    Incidentally, for anyone trying to set up a channel with cw_person, there’s one big “gotcha”. There is an additional channel parameter called cw_personAllow. This parameter is a list of attributes that the channel is allowed to pass to the back-end app. The default is to disallow every attribute. So if you’re like most people, you’ll set up cw_person, ignore cw_personAllow, and then wonder why it doesn’t work. To get it to pass your attributes, you can either set cw_personAllow to ‘*’ (meaning “pass any attribute”), or specify an explicit list. This can be done in the channel definition, but there’s also a global default in portal.properties called org.jasig.portal.channels.webproxy.CWebProxy.person_allow. Yes, this is all in the CWebProxy documentation, but you have to dig for it. A tutorial would probably help.

  • Tractor deck…

    I put the deck back on the tractor yesterday, and I’ve got the skinned knuckles to prove it.

    Every fall, I take the deck off the tractor. The sole purpose of this is so I can take the blades off to sharpen them. Now, it’s really, really easy to take the deck off the tractor, and it’s really, really hard to put it back on. But, because I take it off at the end of the mowing season, I can wait 4 months to put it back on. Of course, the 4 months go by quickly, and before I know it, I’m out putting the deck on, skinning my knuckles, and cursing up a storm.

    My tractor was a freebie that came with the house. I really can’t complain too much about it, because it runs pretty well. It’s a “Powr Kraft”, which is the Montgomery Ward house brand, which should give you an idea of its age. Of course, like every other house brand, it’s built by MTD. My theory is that MTD tractors are made by guys who hate tractor mechanics. There are about 15,000 little lifter arms and cotter pins that attach the deck to the tractor. To put the deck on, you first have to slide it underneath the tractor. Well, while you’re doing this, you have to keep moving the little lifter arms out of the way, because they are always catching on the pulleys, belt, etc. Then, you have to perfectly align the deck with the tractor, and slide this metal rod through both of them. But, it’s hard to do this because the belt is in the way. Etc. etc. etc.

    This year, I tried jacking the tractor up, and it did make it easier to slide the deck underneath. But, I couldn’t set the tractor back down on the deck, because the 15,000 little lifter arms kept getting wedged on stuff. Net result: Jacking the tractor doesn’t make it any easier.

    One of the reasons I keep putting myself through this, is that I only have to do it once a year. After a year, I tend to forget what a pain it is. Remember the old adage, “Time heals all wounds?”

    If I could figure out how to remove the blades with the deck still on the tractor, I wouldn’t have to do this any more. Problem is, I’d have to get underneath the tractor with my impact wrench somehow. That would mean raising the tractor about 2 feet off the ground. Then I’d have to replace the blades from underneath too. Somehow, that sounds like just as much of a pain as removing/replacing the deck. But, it’s worth trying once, if I can figure out how to do it. Maybe this will be the year..

  • Plumbing project finally completed

    Well, I wasn’t sure I’d ever see this day, but the basement plumbing project is finally finished. It went smoothly and pretty much according to plan. No more leaky fitting in the basement, and I now have a working frost free sillcock outside by the pool equipment. I started at 8:30am on Friday, and finished up at around 1:30pm, with lunch and a couple of breaks in between. Lessons learned along the way:

    1. I had originally suspected that our house shutoff didn’t fully shut the water off, but it looks like it does after all. It just takes a long time to drain the house plumbing. When I first cut the pipes apart, I had a persistent drizzle coming out of the cut pipe. At the time, I had opened every faucet in the house except for the bar sink. When I opened the bar sink faucet, the drizzle stopped and I was able to sweat the pipe without using any bread.
    2. I tried to solder one of the joints while there was still some standing water in the pipe near the joint. It took a loooong time before the pipe got hot enough to melt the solder. In the process, the heat from the torch boiled the water off. Despite my worries, I still ended up with a leak-free joint. Next time though, I’ll make sure the joint is a dry as possible before soldering. Barring that, make sure there’s an opening somewhere for the steam to escape.
    3. Don’t hold the torch directly below the joint, or solder will drip into it and foul up the torch tip. Fortunately, they’re cheap..

    This was the biggest project I’ve ever done involving copper sweating. I’ve found that as long as the joints are fully cleaned and fluxed, it’s pretty hard not to end up with a leak-free joint.

    Really glad to finish that one up!

  • Draft Schedule of Classes

    Just a quick note on the UMBC web schedule of classes thing…

    There’s a “draft” version of the schedule of classes, that the registrar occasionally likes to populate. The URL of this version is http://www.umbc.edu/aboutumbc/newschedule. Access to this page is controlled by a simple .htaccess file. There’s a single username and password that the registrar disseminates to all interested parties.

    All of the updates to this schedule happen behind the scenes. There’s a parallel job on the HP3000 that handles this version of the schedule. The web version is built from the same verter.pl script that handles the regular version. The only real maintenance involved with this is occasionally changing the password at the request of the registrar. The password file is located at

    /afs/umbc.edu/admin/www/umbc/htdocs/aboutumbc/newschedule/.htaccess

    The registrar will typically request that the password be changed right before they start mucking with the draft schedule. They asked me to do it today for the fall 2006 schedule.

    Once they’re done with the draft schedule, they may request that access to it be disabled. I do this (again) by changing the password.

    You may ask, why not use a webauth-enabled .htaccess file? Well, that would be more maintenance, because then we’d have to maintain a list of users who have access to the page. They way it is now, all I ever have to do with the thing is change one password. It works.

  • Plumbing!

    Friday’s the big day.

    Friday is the day I’ve set aside to finish the never-ending basement plumbing project(tm). My goal is to finish this before the baby comes, and before the yard/pool work starts. The trick is picking the day to do it. Ideally I need a day when I can have the house to myself for several hours starting at around 8-8:30am. The job really shouldn’t take too long, but with plumbing projects, you always have to allow for unexpected complications. Anyhow, most Fridays fit the bill, so I just had to pick a Friday, take off work, and go for it.

    With these types of projects, it’s always good to have a plan, so here’s the plan.

    Before Friday:

    1. Order and receive remaining supplies necessary to complete project (expecting these today).
    2. Clear space in boiler room for access to pipes.
    3. Make sure we’ve got some bread on hand that I can use when sweating pipes.
    4. Disassemble a 3/4″ stop & waste valve for sweating.
    5. Check side-by-side play in branches to make sure I won’t have any problems getting couplings on them.

    On Friday: For phase 1, disassemble the old pipes and sweat a new stop & waste valve onto the 3/4″ supply line. This will give me a positive shutoff for the branch (the main shutoff is a gate valve which doesn’t seem to shut the water off 100%)

    1. Take shower and fill up drinking water pitcher, water bottles etc.
    2. Shut water off. Open faucets (including outside sillcock) to drain plumbing.
    3. Disassemble the old branch starting with the compression fittings and working back to the 3/4″ supply in the boiler room. Have buckets and rags handy to catch drips and plug pipes.
    4. Put new 3/4″ supply line in place. Clean and flux new supply line and disassembled valve.
    5. Stuff bread in existing supply line. Clean and flux. Put joint together and sweat.
    6. Reassemble stop & waste valve. Make sure valve is shut OFF. Turn water on at main. Check for leaks.
    7. Turn valve on to eject bread (can I do this without a helper? Not sure..)

    For phase 2… hook up the rest of the branch, with the main turned on and the branch shut off via the new valve.

    1. Trim, deburr and dry-fit the new branch together.
    2. Open all faucets on the branch to allow steam to escape.
    3. Clean, flux and fit the “tee” fitting, and two of the three branches. Wrap wet rags around existing soldered joints. Sweat together and allow to cool.
    4. Clean, flux and sweat the remaining branch. Allow to cool.
    5. Remove aerators from all fixtures on branch. Shut all faucets off.
    6. Turn branch on and check for leaks.
    7. Turn each faucet on in succession and run till water comes out clean.

    That’s about it. Wish me luck!

  • Onion Grass: The Harbinger of Mowing Season

    Welp, the onion grass has started coming up in my front yard. That means that it won’t be too long before I have to mow.

    I’ve learned after a few years on my property that onion grass pops up in late winter/early spring, mostly goes away during prime growing season, then pops up again in the fall just before everything goes dormant. So it serves as sort of a bookend for the growing season. This year it seems a little early, I guess because the winter has been mild. We’ll see if the lawn follows suit.

    Every year I tell myself I’m going to remember the first (and last) day I mow the lawn. And of course, I never write it down, so I never remember. I do know it’s always after my annual March Madness trip (which for me, is kind of an “enjoy the last week of winter and its associated lack of yard work” trip). This year, I’ll record the dates here for posterity.

    I guess this means I’ve only got a month or so to put the deck back on the tractor. I’ve put that thankless chore on the list for this weekend.

    Speaking of the March Madness trip, ESPN Bracketology has us seeing two #1 seeds again, for the second year in a row. This really sucks… (Why does it suck? Because we like to see competitive games, not #1s blowing out #16s.)

  • $#%!!? FAR

    It’s Faculty Annual Report (FAR) season again.

    Last year, FAR season was not fun. The FAR mysteriously “lost” a bunch of faculty reports (my theory was that it never saved them in the first place, but I digress), and many unfun hijinks ensued.

    The author of FAR still works here, but he’s been sucked into the Peoplesoft black hole (don’t get me started), so yours truly ended up with the bulk of the FAR hassle last year. This year, yours truly is going to be out for most of FAR season with a newborn, and to put it mildly, that doesn’t break my heart. But that’s not the real point of this entry… Really, I just wanted to document a coupla things for future reference.

    The FAR app displays 3 different due dates to users, and these dates change every year. The past 2 years, I’ve had the fun of updating the due dates, and each time it’s taken a bit of searching around to figure out where the dates are stored. Long story short:

    The due dates live at [server-root]/etc/far/due_date.txt. This file can be human-edited, but there’s also a module within FAR that allows certain users to edit these dates via the web. To get this ability, your username has to be present in the table FAR.FAR_AUTH. Then, in the FAR app under the “Report Options” dropdown, you will see an option titled “FAR Due Dates”. Select this, and you can edit the due dates from there.

    Also, it seems like every year, UMBC adds more academic departments, so it’s fairly common to get requests to add these departments to FAR. FAR maintains its own lists of departments (should it really do this? Probably not. Will it ever get fixed? Probably not). To add one, just add it to the table FAR.FAR_DEPARTMENTS.

    That’s all for now.

  • Gripe du Jour: Palm eReader

    I think I’ve figured out why eBooks are not more popular.

    I’ve recently warmed up to the concept of reading books on my PDA. It’s actually a much more pleasant experience than I expected. The PDA came with a free eBook reader, and the books I’m reading are in the public domain, so my total outlay on this new hobby so far has been zilch. So, why am I complaining? Well, I refer to a dictionary fairly frequently when reading books. Currently, I use a printed dictionary even with my eBooks. It would be really cool, though, if I could just tap on a word, and see the definition. To do this I’d need an electronic dictionary on the PDA, and support for it in the software. Well, I can get this, but it’s not free. For $9.95, I can get the “full” version of the eBook reader, which includes a dictionary with software support. That’s a fair enough price for the dictionary and the functionality. I have no problem paying that. So, again, why am I complaining? The dictionary bundled with the $9.95 package is Merriam-Webster’s “Pocket” Dictionary, which has only 40,000 words. That means that most of the obscure words which I want to look up, probably aren’t going to be there. If I want a “real” dictionary comparable to my dead-tree version, I need to get the Merriam-Webster “Collegiate” Dictionary, which eReader.com is selling for $23. Now, what’s the problem here? Amazon.com sells the dead-tree version (Hardcover, no less) of this exact same dictionary for only $15!!!

    So, let’s get this straight… The electronic version of this dictionary costs essentially nothing to reproduce and distribute, yet eReader.com is charging 50% more for it than the dead-tree, hardcover, much-more-expensive-to-produce version of the exact same dictionary. If I want the electronic lookup, I have to shell out $9.95 for the “full” eReader software, plus $23 more for the wildly-overpriced electronic dictionary, for a total of $32.95. For that price, I’ll stick with the dictionary I already have, thanks.

    eReader.com isn’t the only bad guy here — I checked several other online sources for eBook-friendly dictionaries, and the prices were all similarly inflated.

    There’s a lesson for the eBook vendors here — you need to price your products competitively (read “cheaper than the equivalent dead-tree copy of the book”), or people aren’t going to buy them. Let’s hope they figure this out soon, because it truly is a great format with lots of potential.

  • Demystifying your U of M Paycheck

    Until recently, there’s been something I’ve always wondered about the paycheck I get from UMBC. We’re paid biweekly, which translates to 26 paychecks per year. Now, the University gives me a certain dollar amount as my annual salary. But if I add up the gross pay from each of those 26 paychecks, it always comes out to slightly less than what the University claims is my annual salary. Being the paranoid type, I always assumed the University was short-changing me. Happily, I was wrong. The figure the University gives me is for 365 days (or 366 days in a leap year). My paychecks cover 26 14-day pay periods, or 364 days. So, in most years, I’m receiving paychecks that cover only 364 days. To get my actual annual salary, I need to take the sum total of all my paychecks, divide by 364 to get the per-day pay rate, and multiply the result by 365 (or 366 in a leap year) to get my salary for a full 365 (or 366) day year. When I do this, the result always matches the annual salary reported by the University.

    So what happens to the remaining 1 or 2 days worth of pay? It gets rolled into the following year’s pay, and every so often, we end up with a year where we get an extra paycheck (for a total of 27 paychecks). To an unwashed employee like me, this seems like a confusing way to do accounting, but it does all add up in the end.

    While I’m on the topic, I should plug what is probably the most useful site on the State of Maryland’s website (at least for state employees): The Central Payroll Buerau Net Pay Calculator. You basically enter your gross biweekly pay, all pre-tax deductions, and number of exemptions from your W-4, and it tells you what your net pay will be. Very, very handy when you get a raise, or your pre-tax deductions are changing, and you want to see what effect it will have on your net pay.