I appear to be in some sort of programming craze this week. Today’s entry: NCIDpop.
Back when we moved to St. Louis, our phone line came with Caller ID, basically for free with SBC DSL. But since we don’t own any Caller ID hardware, we couldn’t use it. Eventually, I realized that the modem in the ancient FreeBSD box I use as a router supported Caller ID, and I found John Chmielewski’s Network Caller-ID package, which let software running on the FreeBSD machine (with modem) notify my other computers when there was an incoming call.
I’ve never been 100% happy with the ncid client, though. It’s written in Tcl/Tk, which means that it’s nicely cross-platform, but since its only mode is a window with a listing of recent calls, it took up window space, and a Dock/task bar slot, and I spent far more time dealing with the window than the volume of calls I receive warrants. To add insult to annoyance, when there actually was a call, I usually couldn’t find the window quick enough to check it before I needed to answer the phone.
So I wrote my own client. NCIDpop makes use of the native facilities in Mac OS X and Windows 2000/XP (the three OSes I run most of the time) to stay out of my way unless there’s a call, in which case it does its best to get in my face. So I can always keep it running and never worry about having to hunt for the Caller ID info.
It was fun writing a small cross-platform network app. I got to brush up on my UDP sockets and Win32 programming skills, and I finally found an excuse to write code to emulate (badly) Address Book‘s “Large Type” feature, which I’ve always thought was cool.