FP using new concerto

I’ve got my “new” P3-750 box booted up as concerto.ucs.umbc.edu. This post will hopefully confirm that b2evolution is working right. Things are looking pretty good. My calendar and photo album appear to be working. I set up my Oracle Calendar download stuff and it looks good. The RRBC mailing list is back up and running.

The new box actually has slightly less RAM than the old one: 512M vs 576M. The old box will be going home to replace my old 300mhz P2 server, and I decided that I could use the extra RAM there more than here. So, the home machine gets 640M, and concerto gets 512M.

Next, I need to do some memory, disk and video-card shuffling amongst the machines, so off I go to shut everything down…

sshdfilter config

I’m beginning to think I need to set up a Wiki for this stuff.. but later.

Trying to get the sshdfilter stuff up and running on my new Debian box, and of course I didn’t document the process when I did it on 3 previous machines awhile back, so here goes.

  1. Install sshdfilter script in /usr/local/sbin
  2. Edit /etc/init.d/ssh. Look for two lines that look something like

    start-stop-daemon --start [...] /usr/sbin/sshd -- $SSHD_OPTS

    Replace them with

    start-stop-daemon --start --quiet --exec /usr/local/sbin/sshdfilter -- $SSHD_OPTS &

    Don’t forget the trailing ampersand!

  3. Create an executable file /usr/local/etc/iptables.sh:


    #!/bin/sh
    modprobe ip_tables
    iptables -N SSHD
    iptables -A INPUT -p tcp -m tcp --dport 22 -j SSHD
    exit 0

  4. Modify /etc/network/interfaces. Under interface eth0, add the following line:

    pre-up /usr/local/etc/iptables.sh

And that should do it.

Reinstalling ‘grub’ boot loader

OK. Documenting this here for the next time I have to do this.

I’m working on setting up a computer that dual-boots into Linux and XP.

Rule 1: Always put Windows on the first primary partition on the drive. Linux can go pretty much anywhere else.

Rule 2: Always install Windows first, then Linux, so the boot loader will get set up properly. I knew this, but chose to do things the other way around anyhow (yep, I’m stupid that way). And of course, the XP install hosed the Linux boot loader, so I had to manually restore it, which was a big pain.

Here’s how I reinstalled the boot loader, for the next time I ignore my own advice…

  1. Boot into the Debian netinst CD, or Knoppix, or Tom’s Root Boot, or whatever flavor of standalone Linux you prefer.

    With netinst, you’ll need to walk through the install process until it gets to the disk partitioning part (this ensures that the disk devices are loaded). Then, hit ALT-F2 to get a shell.

  2. Create a mount point, say /disk, and mount your root filesystem there. Example: mount /dev/hda5 /disk
  3. chroot /disk
  4. Mount any additional filesystems you might need, like /boot, etc.
  5. grub-install /dev/hda

That’s all I needed to do, but it took several unsuccessful attempts to arrive at this.

References: here and here.

The hidden cost of bill payment services

I signed up for a bill payment service yesterday. While I was reading through all the legalese in the “bill payment agreement,” it occurred to me that although the service is advertised as being free, it’s really not. There’s a very sneaky cost to it built in, which must be weighed when determining whether using the service is actually cheaper than sending stamped envelopes.

Allow me to elaborate. When a financial institution offers bill payment service, there are several ways in which they can pay the payee. One of these is to actually mail a physical check. And here’s the clincher: most of these services will debit your account at the time they issue the check. The funds are transferred to a “holding” account owned by the financial institution, and the check itself is drawn against the holding account.

Now, when you write and mail a paper check, it never clears right away, because it has to go through the mail, then the payee’s accounts receivable department, etc., before it actually posts and the funds are withdrawn from your account. During that time, the money sits in your account accumulating interest for you. But with a bill payment service, it sits in the financial institution’s holding account, earning interest for them. And that’s the hidden cost: the interest you lose when making these types of transactions. The actual cost varies with the amount of the transaction, the account’s current interest rate, and the length of time it takes the lender to cash the check.

[More:]

Of course, the best way to illustrate this is to use a concrete example. Imagine a hypothetical payment of $100 from an account that pays 4% interest compounded monthly, and assume the check-cashing delay is 7 days. Also assume that a stamp costs $0.39 and a paper check costs $0.10. Using the compound interest formula with the above numbers, we come up with $.08 in earned interest on the $100 over the 7 day period. That’s less than the $.49 it would cost to mail the check, so in this case, the bill payment service is the less expensive of the two methods. However, if the payment is $1000, the earned interest over 7 days comes to $0.77. In this case, mailing the check is cheaper. Similarly.. if the payment is $100 but the payee takes 60 days to cash the check instead of 7, the accrued interest comes to $0.66, making the mailed check a better deal in this case too.

It seems that for most average transactions, the bill payment service comes out ahead. The ones to look out for are: large payments, and/or payees who take a long time to cash checks. For most people, the difference in cost is not going to be enough to be significant (I’m also not accounting for non-monetary factors, such as the convenience of the bill-pay service vs. physically writing and mailing a check). But, it’s still worthwhile to keep these things in mind as you’re trying to pinch pennies. A few pennies here and there will add up over time.

8/24/2006: I paid my first bill through Schwab Bill Pay this week, and it appears that my initial assumption was wrong. They paid the bill via a mailed check, but the check went directly against my account, rather than going to a holding account. So, the funds weren’t withdrawn until the payee cashed the check several days later. That basically kills the entire premise of this entry, and makes the bill pay service the clear cost winner in all cases (assuming there’s no monthly fee, of course). Bill pay services have apparently come a long way in the 8 or 9 years since I first tried one out.

Lots of fun stuff

A smorgasbord of various topics today.

I biked in for the first time since 6/21 today. A week of bad weather at the end of June, followed by a 5-day Independence Day weekend, then more unsettled weather the following week, all combined to keep me off the bike for awhile. Our boiler job starts tomorrow, which will potentially affect later rides this week, so I figured today was do-or-die if I’m going to get back into a routine. So, I did.

I also signed up for online bill-payment through our brokerage, now that they’ve kindly made it free. I haven’t used a bill payment service since the late 90s, and I’ve heard they’ve come a long way. I hope to try it out later in the week — I need to wait for some material to arrive snail-mail first.

And, lastly, I’m going to do a bit of computer shuffling..

[More:]

Currently, I have

Name Location CPU OS RAM Disk Use
sonata office P4 2.4ghz Linux 512mb 150gb Desktop
concerto office P3 450mhz Linux 576mb 8gb Server
doze office P3 700mhz Windows XP 384mb 20gb Windows Desktop
snorkelwacker home P2 300mhz Linux 384mb 16gb Server

Now that I’m running Remedy on a centrally-maintained Windows 2003 server, and I’ve switched from SQL Navigator to Oracle SQL Developer, I no longer need a full-time Windows desktop in my office. I actually will only need Windows when I’m watching my son, so he can play games. So, I’m thinking I’ll take the 700mhz box, add some memory to it, and make it my office server box. It’ll run Linux full time and dual-boot into XP on the rare occasion that Michael is here. Then I’ll take the 450mhz box home, make it my home server, and put my ancient 300mhz box out to pasture. That will buy me a bit of extra performance at home, and more memory (the 300mhz box is maxed out at 384mb).

For the future, I’m moving away from Linux on the desktop in favor of OS X. So, my next new desktop computer will most likely be a Mac, which will then free up the 2.4ghz box. Then, the bubble-down process will begin again. Fun fun!

Mortar for pool coping stones

I swung by Lowes today to see what kind of mortar (and mortar ingredients) they carry. Neither they nor Home Depot seem to carry white Portland cement, so unless I go through a supplier or lumber yard, it looks like my only choice is gray mortar. However, I’m not sure that’s such a bad thing. Most of the stuff is going underneath the stones, where it won’t be seen. Gray Portland is cheaper than white Portland. What about using gray mortar to bond the stones, then filling in the gaps and other visible areas with white grout? That might be a plan. I just need to look into what kind of “grout” (I put that in quotes, because grout, mortar, etc. all seem to be basically the same thing, namely portland cement, sand, and additives in varying ratios) I would need to get.

Lowes carrys Quikrete products (Home Depot carries Sakrete). They have a bewildering variety of different Quikrete products on the shelf…

[More:]

Number Description Bag Weight Bag Price
1102 Mortar Mix 60lbs $4.00
1125 Type N Masonry Cement 70lbs $8.00
1125 Type S Masonry Cement 70lbs $8.50
1136 Mason Mix – Type S Mortar 60lbs $4.50
1136-58 Blended Mortar Mix 80lbs $5.32
1124 Portland Cement Type I/II 94lbs $9.64
1103 Sand/Topping Mix 60lbs $4.00
1230 “Quikwall” Surface Bond Cement – White 50lbs $17.00
1962 Medium Sand 50lbs $5.00
1152 All-Purpose Sand 50lbs $2.90
1133 Vinyl Concrete Patch 40lbs $13.43
1585 Precision Grout 50lbs $14.00

The task now, is to go through all of these, check the Quikrete web site to see what’s actually in each of them, and determine which product(s) are appropriate for my job. Stay tuned.

Honeywell VisionPro 8000 t-stat

I just installed one of these to replace our existing Honeywell t-stat, which was a T8600 series (badged as a “Chronotherm IV Plus”). As part of our big boiler job, we’re splitting our main floor into two heating zones, and I’ll use the old stat for the new zone. The new VisionPro 8000 has a humidity control that will run the A/C when the humidity goes above a preset value. This is the first thermostat I’ve seen with this feature. I’ve always thought it would be a great idea, especially on cool, humid days when the A/C doesn’t run much and the house feels damp and clammy. It doesn’t take much A/C to lower the humidity in the house; just a few minutes to circulate air through the condenser. When you’re trying to change the temperature, you have thermal mass to deal with; that’s not the case with humidity. So, thanks to the new stat, we can have a comfortable house on cool, humid days, without using much extra electricity.

Aside from the humidity control, the VisionPro has a number of improvements over the old Chronotherm IV line. Among others:

  • A much more installer-friendly mounting plate. It has holes to fit a standard electrical wall box. Also, the wire entry opening is in the middle, with mounting holes centered on either side of it. The Chronotherm IV’s mounting holes were off-center, making it a pain to put one where there was previously an electrical box (I know this from experience).
  • One single model handles multiple powering schemes. The Chronotherm IV had three separate models: A power stealing type, a battery powered model, and a direct-wired version that used a common wire. For the VisionPro, they’ve dropped the power stealing option and included both battery and transformer options on the same model. If both are used, the batteries are used for backup power. To me, this makes sense and I’m sure it reduces manufacturing overhead costs.

Add to that a nice, slick touch-screen interface, and it seems like a great thermostat. We’ll see how it does over time.

Pool coping project underway

Today I officially got the pool project underway, after 6 weeks or so of procrastination. After a week of foul weather, I finally got a decent day, so I took off work and rented the concrete saw. It did the job quite nicely, and quickly enough that I only needed a 4-hour rental.

It took a bit of time to get the hang of the saw, but it was very easy to use. The blade had no problem cutting through the entire slab. The water feed did a great job of keeping the dust to a minimum, and it probably sped the job up by keeping the blade cool. I was not able to cut any of the curved areas, which I sorta expected. Not sure how I would handle these. A 7″ angle grinder might work for the area around the steps, but the corners are a little too tight for any kind of rotary blade.

Next I need to clear the joint and clean up the mess, which figures to be more time consuming than the cutting. The wet concrete dust forms a kind of pasty mud, which sticks to the deck and won’t fully vacuum up. I’ll probably end up using my pressure washer to clean it off the deck.

With the joint partially cleared, I can see that a lot of the fill around the pool has eroded over the years, from water seeping into the joint. I’m not planning on doing anything about it, as I’d need to demolish the deck (that’s a job for the next owner of the house). But, once I caulk the joint it’ll stop any further erosion.

Once I’ve cleaned the joint I may go ahead and fill it (at least partially) with backer rod, to keep junk from falling into it before it’s caulked. Hopefully I’ll be able to finish prepping the joint over the long weekend; then I can focus on re-mortaring the loose coping stones.

Oh, and the stupid Tulip Poplars have already started dropping leaves, and it’s not even July yet. It’s going to be a long summer..

The paradox of pool solar covers

We have a solar cover for our pool. It’s essentially a big, plastic sheet of bubble-wrap that sits on the pool surface. To remove it, we crank it onto a big reel — it’s pretty much a necessity to have a reel for these things, particularly with a large pool like ours.

After 5 seasons of dealing with solar covers, I’ve learned quite a bit about them. Contrary to what one might initially think, they don’t increase heating during the day when the pool is exposed to sun. In fact, they actually reduce daytime heating by blocking sunlight. There’s a bit of a greenhouse effect that heats the top foot or so of water, but the rest of the water sees less sun so doesn’t heat up as much. One desirable side effect of this is that it reduces chlorine usage during the day. So.. if you’re going on vacation and want to cut down on chlorine demand, put the cover on.

The biggest benefit of a solar cover is that it reduces heat loss and evaporation at night. So for the warmest water, you want to cover the pool in the evening and uncover it during the day.

[More:]

The drawbacks of solar covers are subtle and a bit paradoxical (hence the title of this post). The biggie: You’d think that using a solar blanket to cover a pool would keep the pool cleaner, but it doesn’t. In fact, you could argue that it actually makes the pool dirtier. It’s true that when the pool is covered, stuff will fall on the cover instead of into the water. And sure, you can even use a leaf rake to clear the larger debris off the cover before you remove the cover. But when it rains, the dirty and untreated rainwater will collect around the folds and creases of the cover, and then when you remove the cover, the dirty water (along with whatever debris is still there) all falls into the pool and fouls the clean water. Then, because most of the debris is already waterlogged, it immediately sinks down to the bottom of the pool. Contrast this to when the pool is uncovered: the skimmers collect all the debris before it sinks, and the rainwater immediately mixes with the treated water rather than puddling up on the cover.

Solar covers (like any cover) also encourage neglect of the pool. When the pool is covered, I find myself more likely to skip chores like adding chemicals, brushing, emptying skimmer baskets, running the automatic cleaner, etc. When you combine this with rain and extra organic debris, it can lead to an algae bloom pretty quickly.

Conclusions: Unlike conventional covers, these things really are not meant to keep stuff out of the pool. Use them only for their thermal properties (chilly nights etc), and keep them off during the day and in particular, when it rains. If you must use the cover when it’s raining to conserve heat, uncover the pool as soon as possible after the rain stops.

I’ve often thought about getting a leaf net cover to keep out debris. I think it would complement the solar cover nicely, and in certain instances the two could be used at the same time. I hesitate because I’m not sure how much trouble it would be to put on and take off, and how I would anchor it down to keep it from blowing away, falling in the pool, etc. When you think about it, another tradeoff with covers in general is that they are an impediment to getting in the pool. It’s much easier to go swimming when the pool is uncovered and ready to go. No one wants to spend time fumbling with a big, unwieldy cover beforehand. Still, in the late summer and early fall, when we’re swimming less frequently anyhow, the leaf net may be worth the hassle.

Revisiting legacy myUMBC session management

Now that we’ve entered the brave new world of SSN remediation, it’s time to think about taking another step with myUMBC: We should stop using HP-ID as the primary key for legacy session management, and use UMBC Campus ID instead. Here’s why…

All of our web proxy channels which use the old portal as a back end, rely on the legacy code for session management and authentication. These channels, by design, often contain content above and beyond stuff that involves SIS. However, they rely on the SIS database, and the presence of an HP-ID, to work. Only a subset of people at UMBC have HP-IDs (at last count, there were 280,645 people in our directory, of which 274,244 had HP-IDs). People without HP-IDs have issues rendering these channels and taking full advantage of the portal. To get around this, I generate “bogus” HP-IDs for these folks to use as a primary key in the session management table. That makes things “sort of” work for them, but there are still problems — for one, the link ACL stuff in the legacy portal doesn’t fully work because it does LDAP queries against the HP-ID.

How do we address this? Well, the ultimate answer is to stop using HP-IDs as the primary key, and switch to campus IDs. On the surface, this seems easy. However, it’s actually a huge can of worms, because of sloppy development in the past. Rather than doing any code-sharing back then, our developers all wrote (or cut-and-pasted) their own code to manipulate the session table. As a result, we have 5,000 (slight exaggeration) apps that will each need to be updated to the new scheme. We’re paying now for cutting corners then.

I guess I should look at this as an opportunity to clean up some of this old code and get all the apps using a single library. But, that takes time, which means that this won’t be happening right away. In the meantime, I guess we’ll continue to limp along and deal with the no-HP-ID users as best we can.