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 (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.

One last ending

It’s been fun here on, but it’s time for me to move to my own domain.

Please come and visit me at my new home, Read This Blog!, because everyone is entitled to my opinion.

Where’d the week go?

I’ve been running heads-down all week, making some progress on several fronts, but not enough on any of them.

At work, I’ve had three major projects going this week:

  • writing what I hope will be a significant report to the CIO’s office
  • building a combination blog and status report aggregator for my team (in other words, working with a colleague to put WordPress on a machine that he controls, playing with the theme, and pointing people at it)
  • trying to migrate a wiki from MoinMoin to MediaWiki in hopes of getting it off the machine in my office before what I thought was going to be a lab-wide powerdown for the long weekend. There is no clear path between the two wiki syntaxes; I got partway there by writing a new formatter for MoinMoin, one which produces something close to MediaWiki markup, but the results still need manual fixup. But the good news is that they don’t plan to turn off power in my wing after all, so there’s no urgency.

At home, I’ve been spending too much time doing work — e-mail is never-ending, it seems. But in my spare moments, I’ve also been working on building a migration path from Manila to WordPress (well, most likely to RSS2.0 so that I can use the existing migration tool in WordPress from there); I’ve learned a lot about Python’s SOAP support in the process, since I’ve had to get around some non-well-formed XML produced by Manila (pages with subscribers or trackbacks are the ones affected). I’m not quite there yet, but I have hopes of moving content this weekend.

That, of course, assumes I do anything with the laptop at all this weekend; last night, I was sufficiently beat by the time I got home that I left it in the briefcase instead of working. And I enjoyed not working so much that I didn’t even check my mail this morning until I arrived in the office — and, sure enough, the world did not stop spinning because I waited. I’ll have to keep that in mind next week.

It looks like a great weekend for geocaching, too — temperatures are going to be very pleasant, and we don’t have anything on the calendar after services tomorrow (Diane’s reading Torah, so we have to be there). I picked up a Zire 31 at the Shir Hadash gala earlier this month with the specific idea of using it for paperless caching — it’s time to act on the idea.

Hmmm…3:37 on a Friday before a three-day weekend…I think that’s close enough to a full day for me!

Car update

State Farm called yesterday to tell us how much they’d give us for the totalled Prius; the number was quite reasonable, but we’ll still be well short of the price of a new Prius. I was pleasantly surprised that they also will repay us for the unused registration and for the sales tax on the car (well, for the amount they cover) — I hadn’t thought of that at all.

So now we’re on the waitlist at three dealerships so far, and I should call some others over the weekend, on the extremely limited chance that there’ll be a blue BC available locally.

Still getting set up

Thanks to Ed Costello, I discovered that I had a backlevel of WordPress, one which didn’t properly create the RSS and Atom feeds. So I updated the site yesterday, and that should be fixed.

I’m amazed that people have actually found this blog already; I wasn’t planning to advertise it until I’d figured out how to migrate the content from Defenestration Corner. I guess I’d better get busy on that!

It’s only a movie…

Diane and I went to the movies bright and early this morning; the IBM Club had bought the Century 21 Theatre for a special showing of Revenge of the Sith. We got there too late to get great seats, but we weren’t forced to sit at the very front of the theatre, so it wasn’t too bad.

There was one interesting byproduct of going to a private showing — no commercials and no trailers. The first thing on the screen was the Lucasfilm logo, followed by those magical words: “A long time ago in a galaxy far away…”.

It’s a shame nobody can tell George Lucas when he’s going overboard — I thought that the battle scenes went far too long, and the first hour of the movie dragged a bit. But eventually, I got into it and quite enjoyed the last 75 minutes. I was pleased that George took care of the loose ends (like C-3PO’s not remembering Tatooine in A New Hope), even if he was less than subtle in a few places.

We’ll probably go back and see it again — I want to watch all six movies in order, and I’ll be very surprised if there isn’t a boxed set available in time for holiday buying. And a rewatching of Spaceballs and Hardware Wars is in order, too.

Moving in

I’d been thinking of moving my blog to its own top-level domain (and onto WordPress) for a while, but I couldn’t decide what domain to use. Until this weekend, when the name “ReadThisBlog” popped into my mind. I would have liked to have had, but it’s parked at Network Solutions — but should do just fine.

As time permits, I’ll move my old content here, but in the meantime, please visit Defenestration Corner for a historical view.

I’m still playing with the format here, too — what looks good on a 1400×1050 screen isn’t so great at 1024×768 (and I don’t want to think what it looks like at 800×600). So expect changes.

A month of endings

So far, May has been a month of endings:

  • Enterprise and Jack and Bobby broadcast their final episodes
  • Episode III finally arrived, bringing the saga to a triumphant middle (or so I’ve been told — Jeff’s seen it, but we won’t until Sunday)

And now our 2002 Prius has come to the end of the road. The insurance company called this afternoon — the estimate from the body shop had reached $13,000, and they hadn’t even taken the dashboard off yet, so they decided to total the car. I wasn’t surprised, but I’m still not happy about it. We’ll find out next week how much they’ll pay us for the car, and whether they were able to rescue the CD that was in the player.

I had hoped that if the car was going to be totaled that they would have told me yesterday, because Kehillah was auctioning a 2005 BC at the first annual gala, and we would have bid. But we didn’t know, and decided to be optimistic that the 2002 could be fixed. Oh, well; if we had bought, we would have wound up with two silver Priuses, and that might have been confusing.

We’re now on the queue for a Seaside Blue 2005 BC, and I will be calling more dealers over the weekend in hopes that there’s one available in the wild.

Progress on the car front

This morning, I visited Hertz and swapped the Cavalier for a Prius. I am much happier, even though the car is missing some of the bells and whistles that our new Prius has (like the Smart Entry/Smart Key system, the navigation system, and Bluetooth). But it’s wonderful being able to sit in the car without hurting!

And the insurance company called me — they needed me to contact the towing company to have the car moved to the body shop of my choice. Since I have no body shop experience, I asked them for a suggestion, and they suggested Swanson Collision Repair, which, by strange coincidence, is in the same building as Hertz. So I called the towing company, who told me I’d have to come in and sign a form before they could move the car; fortunately, they were only a few blocks away. And as long as I was there, I grabbed everything I could out of the car (including one of our garage door openers!), and took a picture of the damage:

Ouch!: I’m waiting to hear whether they’ll repair the car or not. I hope they let me know soon.

Still nasty

The insurance company called us today, wanting to know where the old car had been towed to, and what our favorite body shop was. Unfortunately, I didn’t get the message until after the adjuster had gone home for the day, but I left answers to the questions (we don’t have a favorite body shop, so I’ll let them pick one) on voicemail, and maybe things will happen tomorrow.

Hertz will have a Prius for me to rent tomorrow morning, which will definitely be an improvement over the Cavalier. I mentioned my dislike of the seat, and the person at Hertz said that they advise customers to bring a pillow — I find it hard to believe that Chevy could design a car which is so uncomfortable. Maybe that’s why GM is losing billions?

And Jack and Bobby got cancelled today; it wasn’t much of a surprise, given the ratings, but it was still disappointing news. Wonder how long before it shows up on DVD?

A nasty little car

This morning, we headed off to Hertz to rent a car to hold us through the duration. Since we’re paying for the car out of our own pockets, I wanted to get something inexpensive, and $23/day seemed like a tolerable price, even if the car was a Chevy Cavalier.


I’m not sure I’ve ever driven such an unpleasant car — the seat doesn’t quite go up all the way, the steering wheel seems to be at a slight angle, the seatback is lumpy — in short, the car is a piece of junk. I don’t know if this is a typical Cavalier or if it’s been specially mistreated by previous renters, but I’m getting rid of it as quickly as I can (with any luck, tomorrow morning). Paying a few bucks more every day will be worth it, though I hope it won’t be for very long.

On a different note, I also called Toyota to ask why the side airbag didn’t inflate; they said that it’s basically there to protect against impact into the B-pillar (the one between the doors). The door itself is reinforced and foam-filled so that it’s able to absorb the impact of a vehicle hitting directly on the door, which is what happened in our case.

I haven’t heard from the insurance adjuster yet; I hope to hear tomorrow.

Swab, ye hearties!

Diane and I have just finished collecting DNA samples to send to the Genographic Project. I found it very strange that the only information required when you send in a sample is a form stating what sex you are — I’d expect that to be obvious from the DNA. (The form is also the consent form to allow one’s DNA to be analyzed — it is an anonymous consent form, which, itself, is an interesting concept.)

The collection process is very simple — you use a swab to take a little tissue from your cheek. And then eight or more hours later, you do it again (I chose to use the other cheek :-)) to make it more likely to get a good sample.

Then you put the samples in the mail, and in a few weeks, you check the website, input your random id (Diane’s and mine differ significantly, even though our kits arrived in the same mailing box, so there is a good deal of randomness in the assignment), get the results, and the opportunity to contribute your data in the aggregated results the project is creating.

The most painful part was paying for the kit!

Suddenly, I need a disclaimer — and that's good news

“The postings on this site are my own and don’t necessarily represent IBM’s positions, strategies or opinions.”

This has been the case ever since I started blogging, so why am I saying it now? Because IBM is now encouraging IBMers to join the conversations in the blogosphere, and so it’s a good idea to make it clear that I represent myself here, not the company.

Sixteen years ago, I was heavily involved in bringing Usenet into IBM (for purely selfish reasons — I wanted realtime access to, and the easiest way to do it let me gateway Usenet to our internal conferencing system as trivial extension), and that made a big difference in opening the company to the rest of the world, and an even bigger difference in helping IBMers understand what was happening on the other side of the Blue Curtain. I don’t now if encouraging blogging will make as much of a difference, but it won’t hurt!

Good timing

Diane wanted to go to the doctor this morning to be checked out after yesterday’s accident. The office opened at 9, and we showed up at 9:02, just barely walking in ahead of another person. It took the receptionist a few minutes to deal with us (they’re not very efficient, I’m afraid), and then we had to wait a while before Diane got called. While Diane was being seen, I heard the receptionist tell callers that they’d have to wait till 1pm — so it was a good thing that we hurried to be there right at the opening bell.

The word from the doctor was about what we expected — take ibuprofen as required, expect some soreness, call back if you’re not recovered in a week, and don’t sign off that you’re completely OK for the insurance company for a month. Well, the last bit was a surprise, but I guess it’s good advice.

Next steps: rent a car on Monday, and wait for the insurance company to tell us what they’re going to do about the Prius.

Definitely Friday the 13th

Let’s start with the good news: Diane is OK, just shaken and a bit sore.

I was supposed to make dinner tonight (my variation on “How to Boil Water”‘s chicken stir-fry recipe), but I didn’t get out of the office on time because I was having too much fun fighting a technical problem. So when my phone rang at 6:12, I wasn’t surprised to hear Diane, nor was I surprised when she asked where I was.

The next thing she said did surprise me, though: she was at the Y, and had been in an accident, was OK, but wasn’t sure she could drive the car home. I asked if she wanted me to pick Jeff up on my way, but she asked me to come directly to the Y, so I did. I suggested she call the police, too, in case there was more than $750 worth of damage.

There was. When I got to the Y, I saw her car parked, with the driver’s side door badly bent in. Diane was on the sidewalk, talking with one of the cops. I parked and came over and saw the rest of the damage (I didn’t think to use my cameraphone to take a picture) — there was no way that anyone was driving the car any time soon.

The police had called AAA, who showed up just as they were finishing taking the reports, so we took out stuff from the car (things like CDs, minus the one that was stuck in the player) and headed home to call the insurance agent.

With any luck, we’ll hear from the insurance company on Monday (but they said it might not be that quickly); in the meantime, we’ll go rent a replacement car to tide us over for a bit. I don’t know if they’ll choose to fix the car or not; if not, I guess we’ll get on line for another Prius. This one stood up to a Chevy Tahoe and kept Diane safe, which is all I can ask of a car.


One of my colleagues and I have written a series of articles about “Needless Complexity”, and the last one was finally published today on IBM’s Think Research website.

The four articles are:

[Updated, November 12, 2014: The articles on Think Research have vanished; I’ve reposted them here.]

And the nice folks at Magnolia Audio-Video just called to let me know that the TV is fixed and wanting to arrange a delivery time. I’m afraid it’s going to take longer to arrange the delivery than it took them to repair the TV, since I’m stuck in all-day meetings at work for the next few days.

50 is better

Magnolia showed up on time this afternoon and took our TV away; they left us a Samsung HLN507 as a loaner. It’s slightly smaller than our TV, but it’s very nice to have a big screen again.

It took me a while to get the Harmony 688 remote set up for the loaner, but I’ve mostly got it behaving.

Passover is over, and as if in celebration, a new KrispyKreme has opened in Saratoga, a mile or so from the YMCA. If I were to walk from the Y to the KrispyKreme, I’d probably break even on the calories, too.