Back to work, despite everything

I decided to ignore work for the entire Memorial Day weekend — I don’t even think I saw any IBMers other than Diane. Instead, we geocached our neighborhood on Saturday and Monday, and visited friends for a cookout on Sunday (caching their neighborhood while we were there). We also made our first trip of the year to the Los Gatos Farmer’s Market; wild salmon is back, as are ripe peaches, plums, and apriums. Yummy!

Tuesday, although the holiday weekend was over, none of us made it to the office (or school). The father of one of the girls in Jeff’s class had died during the weekend; school was closed so that anyone who wanted could attend the funeral and shiva lunch. Diane and I both know the family, so we wanted to attend, too, so we worked at home before and after the ceremony and gathering. I can’t say I was very focused on work, though I tried.

Today, we were supposed to get back to normal, and all was going swimmingly until I started the rental Prius. Or, to be more accurate, I tried to start it. The 12-volt battery had gone flat over the long weekend (I don’t think I left any doors open, but maybe…) and couldn’t get the car going. I didn’t have time to call Hertz for assistance, so we carpooled, and I only got to work 45 minutes late.

When I got home, I called Hertz, and they said they’d send out a truck to jump the car so that I could drive it back to them and swap it. While I was waiting, I decided to try again, and the car started (very reluctantly) — so I phoned Hertz to cancel the service call and drove to the nearby Hertz Local Edition. Usually, if I have battery problems with a car, I hope the engine won’t die again until I’ve had a chance to drive it far enough to recharge the battery — but with a Prius, the engine stops as part of normal operation!

I made it there with no problems; I even restarted the car, but I could tell that things weren’t quite right, and so I was happy to swap for a Kia Spectra. It’s definitely not as nice a car as the Prius, but it’s much nicer than the Chevy Cavalier I suffered with last week — my only real complaint with this car is that the radio doesn’t sound very good.

We’re still on The List for a new Prius at four dealerships in the area; two of them have given us ETAs of next week, which would be just fine. I suspect we’re not the only ones on multiple dealers’ lists, either.

Oh yeah, I mentioned “work” in the title of this post, didn’t I? Power stayed up in my wing all weekend, so I didn’t have to do anything with my wiki server (and I could have left my refrigerator plugged in, though defrosting it was a good idea anyway). And I am continuing to work on my report and proposal to the CIO’s office, with increased urgency; I have a call scheduled for next Tuesday to make the case.

Rexx – King of Languages

Howard Fosdick wrote about one of my favorite languages, Rexx, on OnLAMP earlier this week.

For many years, I did almost all my programming in Rexx, mostly on VM/CMS but occasionally on TSO or OS/2; it was a language well-suited to the environment and to the kinds of problems I had to deal with, especially when augmented with tools like WAKEUP (providing event handling) and RXSOCKET (TCP/IP socket access), as well as the invaluable CMS Pipelines. One of the best features of Rexx was its ubiquity on VM/CMS; because it used system hooks, it was available as a macro language for any program which needed one — and so it was far easier for a developer to use Rexx than to make up a unique language.

Back in 1989, Almaden’s only connection to Usenet was an AIX box, which dialed out once a day and fetched the day’s postings. I wanted real-time access to Usenet, especially misc.kids (this was long ago, before spam was invented, and so there was some actual content on Usenet), but our only connection to the ARPANet was on VM. So I wrote some Rexx code to gateway postings through VM to the AIX box (and back); it was probably about 2000 lines of Rexx and needed four virtual machines to run (CMS was single-threaded). Since the postings were traversing VM, it also seemed like a good idea to gateway them into our VM-based conferencing system — and at one time, that traffic accounted for 25% of the network traffic in IBM.

Rexx was the native macro language on OS/2, as well, and at one time, my OS/2 Gopher client had a hook to allow writing Rexx macros. Unfortunately, I never figured out any use for macros in a Gopher client, and so I never documented the hook (I think I removed it before the official release of the Gopher client). But Mike Cowlishaw took great advantage of the OS/2 support of Rexx when he wrote the OS/2 Gopher (and later Web) server, GOSERVE — of course, he was also the author of Rexx, so it was a natural decision for him!

I don’t use VM/CMS much any more (I still have an account, which I use once every 90 days to change its password); I still do have a mission-critical Rexx program which converts my paystub into QIF form so I can import it into Quicken. And my preferred text editor, Kedit, uses a 90%-subset of Rexx as its macro processor.

These days, I tend to write in Python — it has much the same “feel” as Rexx, and it makes it easy to get to SOAP, XML parsers, and the like. I tried Perl for a while, but didn’t like the style of the language. I’m playing with Ruby a bit, but haven’t really gotten down to writing anything real, and I can get by in PHP when I need to (for example, in customizing WordPress). But I still miss Rexx.