Upgrading the security system

Four years ago, I installed a full-perimeter hardwired security system in our house. This probably ranks as the single largest DIY project I’ve ever undertaken. All told, it took me about four months, working alone, and splitting the time with my day job as well as household chores and other projects. Would I do it again? Actually, now that I have kids, I’m not even sure if I could do it again. It ate up almost all my spare time even without kids. I think my wife was about ready to divorce me. But, in the end, we have a great, professional grade, monitored system, and I have full control over it to make changes, upgrades, etc., which brings us to the actual topic of this entry. I’d like to add a few zones (for a very basic intro to alarm system terminology, see this FAQ) to the system, but I’m running out of expansion room. Because of the layout of our house, I laid the system out in sort of a star topology; the panel is near one end of the house, and I have a “zone expander” installed near the other end. Each zone is terminated at either the panel or the zone expander, depending on which is closest. The zones I’d like to add are near the zone expander, but the expander (which provides 8 zones) is full. Matter of fact, it’s overloaded — in a couple spots, I’m doubling up devices which really should be on separate zones, becuase of the lack of space. Not only that, I’m up against the maximum auxiliary power load that my panel supports. If I add any more powered devices (motion detectors, glass break detectors, sirens, etc.), the panel will be overloaded in that department too.

So, before I do anything, I’m going to need to upgrade the system to allow for the additional zones and power draw. Here’s the current plan:

  1. Install an additional zone expander and mount it near the current one, to provide 8 additional zones.
  2. Install an auxiliary power supply and battery to handle additional powered devices.

I’m hoping I can fit all of this gear into a single metal enclosure. If necessary, I can move the existing zone expander, which will requre splicing several wires, but shouldn’t be the end of the world. The shopping list then becomes: metal enclosure, zone expander, power supply, battery, and extra wire, for a total price tag of around $250. Of course, these days, the real cost includes finding time to do this, as there are a lot more demands for my spare time these days. I’m thinking this project probably won’t get off the ground until close to the end of 2006. But we’ll see.

3-month Palm Review

I’ve had my Palm Tungsten E2 for about 3 months now. The verdict so far: I’m getting my money’s worth. I’m using it more, and in more ways, than I did my old Palm m105 a few years back.

First though, let’s dispense with the bad stuff. The only thing I’m disappointed with is the overall fit-and-finish of the unit. Specifically, mine has something that rattles around inside it every time it gets jarred, turned upside down, etc. It’s extremely annoying. But, it doesn’t seem to affect how it works, so I’m just putting up with it. Once my warranty expires, I’ll pop the case open and see what’s going on in there. Also, I’d like to have rubber covers to protect the headphone jack and the SD card slot. As it is, they sit there wide open, waiting to collect dust and debris.

With that out of the way, here’s what I’m doing with the thing:

  • PIM. The PIM stuff (particularly calendar and tasks) is improved somewhat from older versions of PalmOS, and it’s very useful when combined with good sync software. This is what I bought a PDA for, and so far I’m happy with it.
  • Games. Great for chewing up time. There are a lot of good freeware games out there, but finding them amongst the lemons can be a challenge. Some of my favorites are: FreeJongg, Vexed, and StaBu362 (an Othello/Reversi game).
  • Music. With an SD card, a pair of headphones, and the bundled RealPlayer app, the Palm turns into sort of a poor man’s iPod. It works pretty well. RealPlayer leaves a bit to be desired (it’s very bare-bones and the interface is a bit klunky) but it’s certainly usable. There are supposedly some other MP3 players available, but I haven’t tried any of them yet.
  • Books. This one was a bit of a surprise. At first I thought the Palm would be a horrible platform for reading books. Anyhow, I stumbled across the University of Virginia Etext Center, which has hundreds of classics available in Ebook form for free, so I downloaded “A Tale of Two Cities” and tried it out with the bundled eReader software. I actually like reading books in this format. I can search for specific text, and read in total darkness, neither of which I can do with a paper book. And apparently if I buy an electronic dictionary, I can also tap on words to get definitions. I’m sure not everyone is going to like this format, but I’ve become a fan of it.
  • Photos. The color display does a pretty good job of displaying photos, so I can keep updated pics of the family handy.

The Tungsten E2 is reasonably priced for all this functionality you get, but you do have to factor in the cost of add-on accessories and software. I’ve purchased several things that I would consider essential to getting the full value out of the Palm:

  • Missing Sync for PalmOS ($40). Absolutely essential for synching with a Mac. Really should be bundled with the Palm. Palm should consider offering this to Mac users in lieu of Palm Desktop.
  • 1gb SD card ($99). Required if you want to play MP3s. Great for storing data like music, photos, ebooks, etc. and for transferring files to and from other computers. Shell out the extra money and get the fastest card you can find; it’s worth it.
  • Softick Card Export II ($15). Makes the SD card show up as a USB mass storage device, so I can mount it anywhere and use it like a USB key drive. This is great for getting files and applications on and off the device. It’s another app that really should be bundled with the Palm.
  • Cheap pair of headphones to listen to music at the gym ($15). Nuff said.

All in all… the Palm has been worth the money so far. We’ll see how it goes.

iCalendar timezones…

I took another look at time zone data in iCalendar, to see if I could include time zone info in my downloaded Oracle Calendar data. This isn’t a super high priority thing, as the only thing that it affects is how my Palm displays my meetings. The meetings are displayed correctly, but they include a UTC time identifier at the end. Not a huge deal, but if I can get rid of it easily, it’d be a win.

A quick Google search on “vtimezone” turns this helpful page up. Based on the info therein, I was able to craft a working VTIMEZONE section for US-Eastern, that includes daylight savings rules for both pre-2006 and post-2006. To wit:

BEGIN:VTIMEZONE
TZID:US-Eastern
LAST-MODIFIED:20060101T000000Z
BEGIN:STANDARD
DTSTART:19671029T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10;UNTIL=20061029T070000Z
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
END:STANDARD
BEGIN:STANDARD
DTSTART:20071104T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
TZOFFSETFROM:-0400 TZOFFSETTO:-0500
TZNAME:EST
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19870405T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=20060402T070000Z
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
END:DAYLIGHT
BEGIN:DAYLIGHT
DTSTART:20070311T020000
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
END:VTIMEZONE

Now, this is great, but the problem remains that all of the times I pull out of Oracle Calendar are in UTC. So I guess if I want to take advantage of this, I’ll need to manually convert all of these times from UTC to US-Eastern. This seems like too much work for too little gain, so I’m just going to leave it the way it is.

Love those non-cash donations..

Well, being that it’s tax time again, I just have to say how much I love giving our old junk away to charity. Lately, our favorite charity for this kind of thing is Vietnam Veterans of America. This is just such a win-win for all parties involved, that I can’t say enough about it. Consider:

  1. We get rid of stuff we don’t need any more, that was cluttering up the house.
  2. We get a tax deduction for it.
  3. It’s easier than having a yard sale or selling on EBay.
  4. The stuff goes to a good cause.

For this past year’s donations, I tried out H&R Block’s DeductionPro software, which includes a large built-in database of valuations for various items. The only reason I tried it was because they threw it in for free with my purchase of TaxCut, but I have to say I like it. It simplifies the record-keeping process and keeps a running tally of the total deduction amount. If it stays free, I’ll certainly continue to use it. If not, I’ll weigh the benefits of using it vs. using a spreadsheet or somesuch. We’ll see.

An important part of this is picking the right charity. The cause itself is important, of course, but the charity also needs to be reliable. When you go to the trouble of scheduling a pick-up and dragging the stuff outside, you want them to show up and take the stuff. After a couple bad experiences with other charities, we’ve found VVA to be very good in this department.

Again.. can’t say enough about this.. get rid of junk, help a good cause, get tax writeoff. It doesn’t get any better.

More on VNC

Well, it’s been a little over a month since I first played around with VNC, and now I wonder how I got along without it. Mostly, I use it to access my Linux box in the basement office. For awhile I grabbed its main X11 display using the XFree86 VNC module. This works OK, but it’s still slow. Then, I tried starting a dedicated VNC server on the Linux box (it opens a new virtual X11 screen on localhost:1), and the performance difference is like night and day. It’s so fast that sometimes I forget that I’m working on a remote desktop. It’s even fast when I access it from the Mac over the wireless.

The only issue with this setup is access from the Linux desktop itself. I have to open up a VNC client to access the desktop running on the same machine, and I have to remember to start apps that I’ll be accessing remotely (gnucash, etc) inside the VNC server. This seems a little inefficient/redundant, but it’s a worthwhile tradeoff considering the performance is so much better. Plus, I can re-enable direct rendering on the native X desktop now if I want.

The hassle^H^H^H^H^H^Hlegacy of PINs at UMBC

So, we have this new campus portal at UMBC. And for the most part, the launch has gone pretty well. As part of this whole thing, we’re rethinking some of our old, outdated business processes and changing the way they work under the new portal. One of these is the PIN (Personal ID Number). Waaaaay back in 1996 when UMBC first launched web-based course registration, we required all students to enter a 4-digit PIN to log in. There was also a service where students could register by phone, that used the same PIN. Flash forward to 2006. We’re now using a campus-wide single signon system, the telephone registration system is gone, and we’ve done away with PINs as part of the login process. So, since students aren’t using them any more, we can just get rid of PINs altogether, right? Wrong. Problem is, we’re still using our old, crusty HP3000 mainframe as system of record for registration, so when we do online course registration, we have to play by the HP3000’s rules. The HP3000 is still running circa-1996 registration code (written in Cobol), and PINs are so deeply embedded into that code, that there’s no way we’re ever getting rid of them as long as the HP is around. We can rework things so that all the PIN stuff is handled behind-the-scenes, and users never see them or even know they exist, but on the back end, they’re still going to be there.

Now.. the HP3000 stores everybody’s PIN in a database table. But initially, that table is not populated until a user accesses the system for the first time. Then, the HP figures out an initial PIN for the user, and uses that to populate the PIN table. It then sets a flag that the user’s PIN needs to be changed. The HP will then refuse to do anything on behalf of that user, until they change their PIN. The mandatory PIN change happens when the user logs into myUMBC. With the old version of myUMBC, they would see the mandatory PIN change screen immediately after logging in, at which point they’d need to change the PIN before doing anything else in myUMBC. But again, this behavior is a relic of the days when most activities in myUMBC centered around the HP. It also prevents certain users (people who lack the appropriate data that the HP needs to generate the initial PIN) from using myUMBC at all. If we’re going to move forward, we need to get rid of this behavior.

The first step towards this goal, was to eliminate the mandatory PIN change check on initial login. Now keep in mind that we have to submit an initial PIN change request for every student, before they can do anything that involves the HP. So, I’m now doing the mandatory PIN change only when the user requests a function that uses the HP. So rather than seeing it when they first log in, they see it when they try to register for the first time. A small but significant step.

This works great, except it broke the online student parking registration app. Student Parking Registration has the distinction of being the only external (not part of the monolithic legacy myUMBC code) app that talks directly to the HP. If a student goes to this app before changing their PIN, the HP will refuse the parking registration request and the app will fail silently. Yep, this was a fun one to debug. It’s still broken, until I figure out the best way to fix it.

Lessons learned about check deposits..

I have this credit union account, which I keep around solely because there’s an ATM I can walk to from my office. I get the convenience of using the ATM for check deposits and cash withdrawals, and in return, the credit union gets to keep a nominal amount of my money and pay me practically zero interest on it. Any balance over and above the aforementioned nominal amount, gets transferred into my brokerage account (where it earns much better interest) as soon as the check clears. In general, this works out pretty well. But, there are certain rules which must be followed, which brings us to today’s tale of woe.

Monday, January 23, 2006: I went to the ATM and deposited a check for a few thousand dollars. As usual, the ATM receipt showed that $100 of the deposit was available immediately, and the rest was on hold until the check clears. Now, ever since the new Check 21 system was implemented, the credit union has been clearing my checks much more quickly, a lot of times by the next business day. Sure enough…
Tuesday, January 24, 2006: I checked my account balance online at the credit union, and it showed that the check had cleared and the entire amount was available for withdrawal. Going by this, I scheduled three transfers into various different brokerage accounts, to be completed on Thursday the 26th.
Wednesday, January 25, 2006: I checked the credit union again. Oops.. seems that my funds were mysteriously no longer available! The same day I get a snail-mail letter (handwritten, btw) stating that a “special hold” had been placed on the deposit due to the large amount. The hold was for 4 business days, meaning the funds wouldn’t be available until the 27th. It’s too late to cancel my transfers, because they’ve already gone to ACH for processing. Bummer.
Thursday, January 26, 2006: The transfers all get bounced back, and I get charged $81 in overdraft fees.
Friday, January 27, 2006: The funds become available at the credit union, and I start making phone calls to get this mess straightened out.
Monday, January 30, 2006: After two calls and about 30 minutes on hold with the credit union, my $81 is refunded. Thanks guys.
Today: I reschedule the transfers to the brokerage accounts and cross my fingers.

So, what have I learned? #1, there’s something to be said for going to the bank and making the deposit with a teller, because they probably would have told me about the special hold then and there. #2, when making a large deposit at an ATM, don’t touch the money for a week, and don’t trust the online banking system to give accurate info WRT funds availability during that period.

Can I scream now?

Affinities affinities affinities…

As expected, the whole uPortal affinity thing is really drawing folks out of the woodwork. For those of you who came in late, uPortal uses a totally different scheme from the old portal to determine who sees what content. Let’s take the “Faculty Options” channel as an example:

Portal You see faculty options if…
old myUMBC You are in AUTH_CLASS or TEACHER SIS tables, or have faculty LDAP affiliation
uPortal You have faculty, staff or instructor LDAP affiliation

As I said… totally different. Now.. most folks who need faculty options will satisfy both portals’ conditions, and will see the content in both portals. However, there are always special cases, and as expected, we’ve run into a few. First, not everyone in AUTH_CLASS has one of the three magic LDAP attributes. Case in point, the education department has graduate assistants that do course authorizations for them. These people need to see the faculty options, but don’t get them in uPortal.

What we really need to do here, is rethink how we’re doing some of these affinities and who’s seeing what content. Some of this will just involve creating new PAGS groups to correspond with various affiliations. But, we may also need to create additional affiliations in LDAP to cover certain cases. Membership in AUTH_CLASS would be one of those cases. uPortal allows me to specify Person Attributes based on DB queries, so for some of these I might be able to go that route. But I’d prefer to keep this totally LDAP based.

In the meantime, I’m making things work for these people by granting them temporary staff affiliations in LDAP. Can’t have them unable to do their jobs while we’re figuring this out.

Sharing address books

Now that I’ve got my calendar stuff all figured out, it’d be nice to do the same with my address book and contacts. Right now, the “reference” version of my address book is stored in the Mac Address Book application. From there, I use Missing Sync to synchronize it with my Palm, and Apple’s iSync to send it to my bluetooth-enabled cell phone. This all works pretty nicely. The missing piece is making the email directory available to my mail client, Thunderbird. Now, this would be relatively easy if I only ran Thunderbird on my Mac. There are a number of tools out there that will take exported Mac Address Book data and import it into Thunderbird on the Mac. The problem is, I also run Thunderbird on various different Linux desktops at work and at home. It’d be great to have the same address book available on every mail client I use.

The other day I ran across this site which describes how to build a shared address book using a private LDAP server. This is a great idea that hadn’t occurred to me. Thunderbird has built-in Support for accessing remote address books via LDAP. If I use OpenLDAP (which is conveniently available as a Debian package), I can even run slurpd and keep replicated servers at home and work. This should be fun to try out.

Once the server is in place, the issue then becomes getting the Mac Address Book to synchronize with the LDAP server. That is probably going to be the biggest challenge of the project.

The drawback to this approach is that there’s no way to automatically update the LDAP database from Thunderbird. It essentially becomes a read-only data source. However, there are a few free web-based LDAP admin tools floating around, so I could probably adapt one of those to suit my needs. It’s not a perfect solution, but it might work.

Mortgage escrow analysis demystified

Just found out what my mortgage payment is going to be for the next year, and the escrow amount jumped a bit more than I had expected. So, being the accounting buff that I am, I decided to try and figure out the formula the mortgage company is using to determine the monthly escrow amount. In the past, this has always seemed like some kind of arcane art shrouded in mystery. I would get my escrow analysis statement in the mail, give it a blank stare or two, note whether I was getting a refund check, write down the new mortgage payment, and move on. Well, it turns out that it’s actually pretty simple:

  1. Take the total of last year’s disbursements and divide by 12, to get the base monthly escrow amount.
  2. Multiply by two to get the minimum escrow balance required (two months worth).
  3. Starting with the escrow balance on the anniversary date, figure out the projected escrow balance for each of the next 12 months. To figure the balance for a given month, take the balance for the previous month, add the base monthly amount (from step 1) and then subtract any disbursements that were made in the same month last year.
  4. Find the month where the projected escrow balance is the lowest. If that number is less than the minimum balance from step 2, subtract the two to get the shortage. Most mortgage companies will let you either pay this amount as a lump sum, or spread it out over the next 12 months. In the latter case, divide the shortage by 12 and add the result to the base escrow amount (step 1), to get the final escrow amount.

I broke out my favorite spreadsheet and crunched the numbers for my own mortgage, and came up with exactly the same numbers as the mortgage company. So at least I know they’re not cheating me. From analyzing this method, it seems that it is definitely in one’s advantage to have most of the disbursements happen towards the end of the “mortgage year”. If the payments are skewed towards the beginning of the period, you end up with a higher payment (to satisfy the minimum balance requirement) and a larger balance at the end. If you end up with an overage (projected low balance greater than minimum required balance), the mortgage company is required to refund this to you, but you’re still giving them an interest-free loan (at least in most states).

Then, there’s the question of whether to pay the escrow shortage as a lump sum, or spread it out over 12 months. The answer is pretty simple: crunch the numbers both ways, figure out which method would result in the lowest average monthly escrow account balance, and go with that. In my case, paying the shortage over 12 months was the clear winner.

The nice thing about the escrow analysis process is that it’s very predictable, everything’s based on the disbursements made in the previous year (there’s no hand-waving or estimating of future bills going on). In my case, as soon as I get my July property tax bill, I can figure out next year’s mortgage payment. I’d just as soon not have an escrow account at all (I’m perfectly capable of earmarking the money myself and earning interest on it to boot), but at least I understand the process now.