Fruddled Gruntbugglies

Enthralling readers since 2005

Author: lpaulriddle

  • Finally got in the pool

    Better late than never, we took our first swim of the season today. It’s nice to finally be using the pool, because it makes the hassle of maintaining it seem more worthwhile. It’s not quite worth all the effort and expense IMHO, but still, it is nice to be able to hop in the pool on a hot day. And when it’s not full of leaves and other assorted crap, it’s nice to look at too.

    I got a pleasant surprise when I uncovered the pool this morning.. the algae clinging to the diagonal hopper walls was almost totally gone. So, it appears that repeated brushing and superchlorination is the ticket to getting rid of this stuff. Apparently I don’t need a steel-bristled brush after all (although it may hasten the process, so I may pick one up anyhow). In future years, I’ll try to be a little more faithful with the off-season chlorination so the algae won’t take hold like it did this year.

    Also, I made a test cut in the pool deck with my new diamond blade. And I must say, it cuts very easily — much more easily than I expected. As I suspected, the circular saw doesn’t cut quite deep enough. However, I can now go ahead and rent a larger concrete saw with the confidence that it’ll do the job. The current plan is to take a day off this week (work schedule permitting) and do it. Still not quite sure how I’ll do the curved sections. I’ll figure something out I hope.

  • Student Parking Registration

    I should have seen the writing on the wall 5 years ago..

    I’m busy fixing the online Student Parking Registration app, which has been sorta broken ever since the uPortal launch. Student Parking is a unique application. It’s the only app we have here that:

    • Communicates directly with the HP3000 mainframe via TCP sockets, and
    • Is not part of the monolithic ‘myUMBC’ Perl codebase.

    Combine these two, and you get “never-ending headache”. Five years ago, when the app was written, I had vague misgivings about it being developed this way, but due to a combination of laziness and busy-ness, I didn’t say anything about it. So it went up, ran for five years, and broke with the new portal. And now, I’m stuck doing what should have been done with it from the start: I’m essentially rewriting it and building it into the myUMBC Perl codebase. Once that’s done, it’ll be reliable, it’ll have better error handling, it’ll deal with mandatory PIN changes, it’ll have a UI consistent with the rest of the myUMBC SIS functions, etc. etc. In a nutshell, it’ll work the way it’s supposed to, and I’ll be able to stop treating it like some high-maintenance colicky infant.

    It doesn’t help that there are like 10 copies of the code floating around in various places, either. Half the fun was tracking down the version that was actually running in production…

  • Out with GUIDs.. in with Campus IDs

    OK, policy decision for our up-and-coming launch of uPortal 2.5.. I’m going to stop using the LDAP GUID as the uPortal ‘unique username’, and use the new UMBC Campus ID instead.

    Background: Every uPortal user gets an entry in uPortal’s user table, UP_USER. This table contains (among other things) a numeric ID for primary key, and a text ‘username’. Username is what uPortal uses as its security principal. For our current production installation of uPortal, we’re using the user’s LDAP GUID as the security principal. This works fine, but it causes problems with things like the Groups and Permissions manager, which allows you to search for specific usernames. The GUID is a long, unwieldy string that isn’t really human-friendly, so it’s not really something we want people using as a search key.

    Now, why don’t we just use the user’s UMBC username as the security principal? Certainly seems logical. But, down the road, we want to provide access to the portal for alumni, prospective students, parents, etc. These people will not necessarily have a UMBC username. If we use that as a security principal, we effectively lock these people out of the portal. We need a unique identifier that everyone in the directory possesses. Until recently, the GUID was the only thing that fit the bill. Now, we have the nifty UMBC Campus ID, which is a simple string of two alphanumeric characters followed by five digits. Unlike GUID, the Campus ID is intended for human consumption (we actually display it on our ID cards). So, while it may not be quite as search-friendly as a username, it’s much more so than a GUID, and everyone in the directory has one.

    Yet another happy byproduct of SSN remediation. I’m sure I’ll be cursing it next week after the SIS cutover, but I’ll say it again: In the long run, it’ll be well worth the hassle.

    Followup… looks like if I want to do this, I’ll need to do an extra LDAP call to pull the Campus ID out of the PersonDB record. Not the end of the world, but not a 10-minute change either as I had hoped. I’ll have to come back to this later.

    6/22: Looks like Rob is now including Campus ID in the Webauth ticket hash map. So, no extra LDAP query necessary. Cool…

  • New Boiler

    So it looks like we’re going to take the plunge, and get a new boiler put in. Several things are driving this. For one, a detailed heat loss calculation has revealed that our current boiler, while reasonably efficient, is about twice the size it needs to be to heat the house. It has always short-cycled, which has a bunch of undesired effects.. uneven heat, loss of efficiency, bad for the boiler, etc. A properly sized boiler will save money and keep us more comfortable — an unbeatable combo.

    The real, black-and-white measure of efficiency for an oil heat system, is the number of gallons of oil it consumes per heating degree day. This isn’t too difficult to measure empirically, using data from the oil company and the National Weather Service. Read your latest receipt from the oil company to see how many gallons were delivered at the last fill-up. Count how many days passed since the tank was last full, and divide by the number of gallons delivered to get the number of gallons burned per day. Then, go to the National Weather Service climate page, click on your state, and download the “Preliminary Climatology Data” for the time period in question. It’s published monthly. Add up the total number of heating degree days for the period, and divide by the number of days in the period, to get the number of heating degree days per day. Then, divide gallons per day by heating degree days per day, to get gallons per heating degree day. In theory, the lower this number, the better. I’ve been keeping track of our gallons per degree day usage with the current boiler, and it’ll be really interesting to see what effect a new boiler has.

    [More:]

    In an ideal test environment, gallons per degree day will give a perfectly accurate picture of a heating system’s efficiency for a given house. Unfortunately, there are a lot of factors that skew the measure, which make it hard to compare numbers from season to season. Among these are

    • Varying thermostat settings;
    • Other oil-fired appliances (in our case, a water heater);
    • Solar gain or lack thereof (not accounted for in the NWS data).

    So it’s impossible to get a really precise measure, but this is about the best approximation we have. In our case, in just over 4 years (including 5 winters), we averaged 0.2 gallons per degree day. Our usage has trended down over the longer term, as we’ve added insulation and tightened the house up with new windows etc. However, this past winter our usage was up somewhat (roughly 0.03 gal/hdd difference, which doesn’t seem like much, but translates to 150 extra gallons over a 5000 hdd season). I’m not sure why this is — we even had our boiler downfired (from 1.25 to 1.10gph), which I would think would reduce our usage.

    Our attempts to improve the house’s efficiency have had less of an effect than I had hoped, netting us maybe a .03-.05 gal/hdd difference or so per winter. I think (hope) a new boiler will have a more pronounced effect. We’ll see I guess. In any event, it’ll hopefully get rid of the uneven-heat problems which have plagued us all along with the current boiler.

    Followup 7/25… Details on our new system.

  • Funny CVS Snafu

    First the good news… we’ve decided to go to uPortal 2.5 for the fall, and switch from the buggy Aggregated Layout Manager (ALM) to the purportedly-much-better Distributed Layout Manager (DLM). I’ll be counting the days until ALM is history.

    With that in mind, I pulled down a fresh copy of uPortal 2.5.2 and created a new CVS repository for it. Except CVS didn’t import the whole thing. I tried again: same results. It was omitting two directories from the distribution, both named core.

    RTFM RTFM… Turns out that by default, CVS excludes certain filenames that it thinks don’t belong in repositories. ‘Core’ is among the blacklisted filenames, presumably because CVS is assuming that anything named ‘core’ is a UNIX core dump file. Except that these aren’t files, they’re directories. Hel-LO…!

    Anyhow… here’s the command I ended up using to create the repository:

    cvs import -m 'imported 2.5.2 source' -I '\!' portal/framework uPortal uPortal_rel-2-5-2

    The -I ! option tells it not to ignore any filenames.

    With that out of the way, onward we march to the brave new world of 2.5.x and DLM.

  • Pool’s open… don’t everybody jump in at once

    Yesterday we finally uncovered the big concrete hole in the backyard. The water looks pretty good, but due to my neglect over the spring, I’ve got a bigger problem with surface-clinging algae than in past years. There was the usual green stuff on the bottom which easily vacuumed out, but the steps and the diagonal hopper walls have this better-established stuff that doesn’t want to come off. However, the stuff on the steps cleared right up when I flooded it with 12.5% hypochlorite from my siphon hose, so I superchlorinated yesterday evening. This morning I noticed that the areas I had brushed yesterday were clearing up, so I went ahead and brushed the entire pool (clouding it up beautifully, of course). Cl was 8.8ppm. Tonight I’ll add more, until all the muck is gone.

    [More:]

    Still haven’t started the coping repair project. Today (Friday) I picked up a 7″ dry-cut diamond blade for a cool $50, and I’m going to see how it does at cutting the concrete decking. It’s not big enough to cut through the entire slab, but the hope is I can make a cut around 2″ deep and then knock the rest of the piece off with a cold chisel. If it works well, I’ll go ahead and rent a larger saw to do the complete job. Whether it works or not, I’ll still end up with a nice diamond blade I can use for future projects.

    The fun never ends..

    6/12: The crap clinging to the diagonal hopper walls is proving to be very tenacious. It will not brush off easily in spite of repeated superchlorination. I can’t seem to get enough force on my brush to attack it effectively. I think I’m going to need a stainless steel brush for this. Before I try that, though, I’m going to try flooding the area with chlorine. It worked with the steps, so hopefully it’ll work with the hopper walls. Only problem is, I could reach the steps easily with my siphon tube, but not so with the hopper walls. So, I’m going to try a slightly different approach. I went to Home Depot and bought 20′ of food-grade tubing (1/2″ O.D.). I’ll use wire ties to attach 4′ or 5′ of hose to the bottom of my telepole, then put the pole in the water and start a siphon. I should then be able to siphon chlorine from my jug and direct the flow wherever I want. I will probably want to do this with the pool pump off, and somehow attach the tubing to the chlorine jug so I don’t inadvertently pull it out. We’ll see how it works.

    6/14: Tried the above last night. It works, but it’s a little cumbersome. Attaching the siphon tube to the chlorine jug is an absolute must. I used an Irwin Quick-Grip clamp. Still, I lost my siphon and had to re-prime several times. It would also be handy to have some way to easily interrupt the flow while I move the hose to different spots. I suppose it would work to pinch the hose, or I could use a spring-loaded clamp. Still, this whole thing seems like too much hassle compared to using a steel-bristled brush, assuming the brush will work. I’ll try to get to a pool store and pick up a brush in the next couple of days.

  • Back from Vancouver

    Welp, faster than a blink, I’m back from Vancouver. Unfortunately, on my second night there I came down with this nasty GI thing that dragged me down for the rest of the trip. I managed to get out and do some walking along the Coal Harbor Seawall and in Stanley Park. But, my planned recreational activities were severely curtailed. The conference was good, although I missed a couple of meals and sessions due to the illness. Bummer.

    Verdict on American Airlines is neutral. check-in difficulties and a delayed connecting flight on the way out were offset by a perfectly smooth trip home.

    Hopefully, JA-SIG will continue to have occasional conferences in Vancouver. Next time, I’d like to take the whole family.

    Anyhow, now I’m back home and back to the daily grind. I’m slowly working through my beer stash. Tonight I tried Magic Hat Humble Patience, which purports to be an Irish Red. It’s a very good beer, but it seems a little chocolaty for an Irish Red. Then again, I very rarely drink this style (it’s not as common as other styles around these parts), so I’m not really an authority on it. Wharf Rat used to brew one; maybe I should get out there and try one for comparison.

    Magic Hat is all over the place around here. It’s interesting that it’s so ubiquitous, given that it’s brewed in Vermont. They must have a very good distributor network..

  • Back in Vancouver

    Well, here I am in lovely Vancouver, BC again. Today is my free day, and it looks like my hopes of hiking/sightseeing are going to be dashed, because of a steady drizzle. Oh well, I guess I’ll try to squeeze something in Tuesday evening, when the conference is over and the weather forecast looks more promising. As for today, well, I guess I can get some work done..

    So I’m here at this Comfort Inn for another few hours before I take the bus downtown to the conference hotel. Here’s a good one.. At the Comfort Inn, I have complementary wi-fi here in my room. At the conference hotel, which costs three times more per night than the Comfort Inn, I (well, UMBC actually) have to pay $14.95CAD/day for internet access in my room. What’s wrong with this picture?

    Now, the Comfort Inn is not fancy, nor is the area it’s in, but the room is clean and perfectly adequate and the wi-fi is nice. For the price, it’s a great value and I’ve always been a fan of the chain for that very reason.

    Today’s agenda is… get breakfast, sit around and watch it rain, head over to the conference hotel, sit around some more and watch it rain, and figure out what I’m doing for meals. Maybe I’ll check out the fitness room at the Westin. I think my biggest regret is going to be not bringing an umbrella. Sigh..

  • Bike to work: the month of May in review

    I was only able to bike to work 8 times in May, due to a variety of reasons.. early in the month, I caught a cold, and various obligations at home made it necessary to take the car on several days I otherwise would have biked. Later in the month, I had a week where I couldn’t drag myself out of bed in time to get moving (it’s amazing how much a single late night out screws up my body clock nowadays). I also had this mysterious dry cough that came out of nowhere and persisted for about 4 days. But, now it’s the end of the month and I seem to be back in a good routine. Despite the relative infrequency of my rides, I managed to ride in at least one day each week of the month. My average speed is now consistently over 14mph. This morning I averaged 14.8mph, my high for the season so far.

    This past weekend, I picked up two new pairs of biking shorts on sale at Performance. One has the standard chamois padding and the other has this gel stuff. The price was the same, so I figured I’d try ’em both. I’ve ridden once with each pair now. The chamois pair is fine, but the stitching on the gel pair bothered me a little bit. I’ll see how it goes as they break in, but so far I’m not crazy about these.

    I’ve also logged almost 1000 miles on my cyclocomputer, a Cateye Astrale. Verdict so far: It’s nice, and I especially like the cadence feature. However, I wish it gave some kind of audio feedback when starting/stopping the timer. There have been a lot of times where I’ve thought I’ve started it but it wasn’t actually running, and vice-versa, and as a result I haven’t gotten any statistics for a particular ride. Forgetting to start/stop it is one thing, but it’s really annoying when I’ve actually made a point to do it, and still don’t get my stats. Otherwise, though, I really like it. Cateye has come out with a newer model since I got mine, so I wonder if they’ve addressed this problem.

    June will start out with a week of no biking due to my business trip. However, I hope to get right back into it afterwards.

  • Next year’s pool project

    I’m already thinking about next year’s pool project, and I haven’t even started this year’s yet…

    For next year, I’m considering adding an automatic chlorine feed using a chemical metering pump, similar to the setup described here. The main goals of the project would be:

    • Save work;
    • Save money on chlorine by matching the supply more closely with the demand;
    • Provide a continuous feed of sanitizer, thereby eliminating the need for cyanuric acid in the pool.

    If I go ahead with this, I’ll probably also move the pool’s electrical controls indoors, which I’ve always wanted to do for convenience more than anything else. I’d also need to run a dedicated 110VAC circuit to power the metering pump, so while I’m at it, I’ll install a convenience outlet near the pool equipment. Right now, I only have 220VAC there.

    The metering pump can be had from Grainger for around $300, but I’m watching eBay to see if I can get a new one cheaper.

    I’ll add random notes to this entry as I think about this one.