Thursday, June 26, 2008

Say it isn't so!

TPM is reporting that Obama is flip-flopping on telecom immunity. I hope this turns out not to be true. (The video isn't working so I can't tell if TPM's reporting is accurate.) If it is, it will mean that Obama is just another politician with no principles. I was really hoping for more from him.

A great day for murderers and child rapists

The Supreme Court handed murderers and child rapists a pair of legal victories today. Never would have figured the Roberts court for being a bunch of bleeding hearts, but there you go. They're soft on terrorism too so I guess you can call it a trifecta.

Oh well, at least they're still managing to keep the country safe from environmentalists.

Wednesday, June 18, 2008

In Fino Veritas

Every now and then the religious right slips in its carefully crafted rhetoric to show its true and hateful face. The most recent example of this was yesterday on Patt Morrison's show on KPCC in Pasadena. She was interviewing Karen England, executive director of the Capitol Resource Institute, about the recent California Supreme Court decision legalizing gay marriage. During the closing minutes of the show, Ms. England said this:

"This is about restoring the definition of marriage. The definition of marriage has never been committed loving relationships..."

You really have to listen to it to get the full effect. Her voice is just oozing with contempt as she says, "committed, loving relationships."

(The full context is here. The segment starts about 35 minutes in.)

Well, Ms. England, if you're right and the definition of marriage has never been about committed, loving relationships, then I say it's high time we changed the definition of marriage. Just as we've changed he definition of "voter", "citizen", and even "person" for the better over the years.

Sunday, June 15, 2008

A bugged life

The title of this post actually applies to two completely different matters. First, I saw a really great movie last night about life in East Germany before the wall came down. It's called "The Lives of Others". German with English subtitles. Highly recommended. One of the best films I've ever seen.

But what I really wanted to tell you about was an obsession that's had a hold on me for the past few weeks. Every now and then I am afflicted with a bout of nostalgia. I have a few boxes of memorabilia stashed away in the garage, and the other day I was digging through one of them and came across a box of 5-1/4 inch floppy disks. For those of you two young to remember, these disks are actually floppy. They bend. And in their day they stored a whopping total of 140 kilobytes of data. Ah, those were the days.

One particular disk caught my attention because its label said "P-Lisp". This was my very first Lisp back in the day, and it arguably launched my career in computer science. So I thought it would be cool to resurrect it and watch it run, for old times' sake.

The plan was fairly straightforward: buy an Apple II from Ebay, get a copy of ADTPro, make a disk image, and run in on an Apple II emulator. I figured getting the Apple would take about a week, and then it would take an hour or two to get ADTPro up and running and grab the image. Just a little diversion.

Little did I know.

I logged on to EBay and found just what I needed: an Apple IIe with two disk drives. The high bid was $5! What a steal! So I, being the naive EBay bidder that I am, bid $10 figuring I was sure to win.

Now, you EBay veterans out there -- I can hear you -- you can stop snickering now. As you might expect, I was outbid and lost the auction. But the person who outbid me backed out of the deal, so I got a "second chance" to accept the deal at my original offer. And because of EBay's auto-bid system I didn't even have to pay the full $10, I just had to beat the $5 bid that was in effect when I placed my bid, so the machine could be mine for $6!

That is, it could have been, if I'd gotten the email in time. The second-chance offer is only good for 24 hours, and I just happened to be on a boat when the message arrived. So by the time I got the message it was too late.

(For those of you who are South Park fans, I would now like to call to mind the episode where the kids are all excited about the fact that some TV network is going to air a program where the word "shit" is spoken without being bleeped out. (It's episode 502 in case you want to go back and review.) The program of course is self-referential, because the discussion of the word is not bleeped out, and there's a little counter at the bottom of the screen that starts counting up the number of times anyone says the word during the episode. The counter reaches an astonishingly high number before it's all over. What follows will be all the more fun if you keep that imagery firmly in your mind as you read.)

No problem, I thought, the seller had already re-listed the computer, so I figured I'd just bid again. This time, though, I had more competition and lost out at $20. (Heck, I'd almost had it for $6, why pay three times as much? Surely another single-digit deal will come along.)

One week and half a dozen failed bids later I decided to give up and order an Apple IIe from Top Micro [UPDATE: Top Micro seems to have gone out of business and their site has been taken over by malware spammers], which had several of them in stock for $20 each -- plus $40 UPS Ground shipping. Oh well, it's all for the cause of historical preservation I told myself. I still needed a disk drive, but I figured I'd figure that out later. There seemed to be a steady trade in Apple II disk drives on Ebay.

The IIe finally arrived. I plugged it in, turned it on, and it came up with the Apple II prompt. Cool! It works. I hit a few keys...


The keyboard was dead.

No problem, I thought, probably just a loose connection, and when it comes to old computers I'm MacGuyver. So I whip out the trusty phillips screw driver and open 'er up.

Inside I found a twenty year old puddle of coffee. Cream, no sugar.


So I get out a sponge and a shop vac and clean her up as best I can. No dice.

OK, this is obviously not going to work, so back to EBay, where I finally decide that I'm spending too much time on this and I'll just bite the bullet and shell out whatever it takes to get a working Apple with disk drives. "Whatever it takes" turned out to be about $100, but what the heck, it's all for a good cause, yadda yadda yadda.

While I'm waiting for the new machine to arrive I decide I now have nothing to lose by taking drastic measures to try to resurrect the IIe. So I take out the keyboard and give it a good wash with hot water. (You can actually do that safely to most keyboards as long as you dry them out THOROUGHLY before using them again.) No good. OK, here's my new Apple II+ with disks. So I put the IIe away and go to play with my new toy.

Happily, it works out of the box, and within ten minutes I'm actually able to boot one of my old floppy disks. A little bit of playing around convinces me that the drives are in good working order, and I finally work up the courage to try my P-Lisp disk.

Now, I should mention at this point that my P-Lisp disk was, as far as I could determine, the last extant copy on planet Earth. The Lisp community is not that large, and the subject of P-Lisp comes up from time to time, but I had never heard of anyone ever locating another copy despite periodic requests from history buffs to find one. So this is a pretty important disk.

Amazingly, considering all the things that went wrong on this project (and believe me, we're just getting warmed up here) that this one thing *didn't* go wrong is astonishing. I put the disk in the drive and booted it up and it worked. It just worked! There I was playing with a program that hadn't seen the light of day in over twenty-five years. I quickly made a copy of it, and to my amazement (especially in retrospect) that worked too. Cool, I thought, I'm nearly done.

I need to digress for a moment and tell you a little bit about ADTPro. It's a really cool program for resurrecting old Apple II machines. To understand just how cool it is you have to remember that back in 1979 when the Apple II came out they did not have ethernet ports and USB ports and Firewire ports. They had cassette ports. Like audio jacks that you plugged into an actual cassette recorder. That was your mass storage.

ADTPro comes with audio files that you can play back into an Apple II's cassette port to download bootstrap software so that you can get an old II up and running without any disks. This is quite an amazing thing if you think about it, and I can't even begin to imagine what would possess someone to put so much effort into something that is ultimately not really good for very much except nostalgia. But there it is. Anyway, I dug out a bunch of audio cables, hooked it up, and after just two tries (you have to fiddle with the volume a bit) I had uploaded ProDOS and was ready to upload the ADTPro client.

That was the last thing that would go right for a long, long time.

For some reason the ADTPro client just refused to upload. I must have tried it twenty times, with each attempt taking several minutes. The Apple doesn't give you any indication of what goes wrong, it just gets to the end of the upload and prints "ERR" and beeps at you. After about two hours I was about ready to throw that damned machine out the window.

OK, that was obviously not going to work. Happily, ADTPro can also connect via a serial port, which is a more robust connection than the cassette ports. But Apple II's didn't have serial ports built-in, they were add-ons. So back to EBay to buy an SSC and off to Fry's to buy a USB-to-serial converter (because things have come full-circle and Apples once again do not come with built-in serial ports, which is probably as it should be).

By this time my wife is starting to ask me when I'm going to get that damned Apple II out of the workout room.

I watched my Super Serial Card wend its way across the country via UPS's on-line tracking system. In retrospect, this should have been a sign that I was starting to take this project a wee bit too seriously.

The SSC finally arrives, and I breathe a sigh of relief. I can finally get this damn thing done! I plug it in, fire up ADTPro and start the bootstrap procedure...

And it doesn't work! AAARRRGGGHHH!!!

By this time I am completely obsessed. I am determined to get this damned disk image come hell or high water. I am MacGuyver. I eat bugs for a living. No stupid 8-bit machine is going to get the better of me.

Now, I am going to do you a favor and spare you all the details of everything that happened while I was trying to debug the problem I was having with the serial link. Suffice it to say that by the time it was over, two weeks had gone by. I had probably spent twenty hours on it (thirty if you count the trips to Fry's). I had bought three USB/RS232 cables and God only knows how many miscellaneous cables, adapters, breakout boxes, volt meters, crimpers, testers and null modems. I had a frankencable setup so scary it would have made Ridley Scott run screaming in fear.


Sometimes it's really hard to know when you've reached the point of diminishing returns. On the one hand I was fully aware that I was spending way more time on this stupid project than it was worth. But on the other hand I really didn't want to quit. I really felt like I was on the cusp of a breakthrough, and that any minute I would figure it out. And eventually I did.

My best advice in situations like that is to get a good night's sleep. I think if I'd actually followed that advice I might have figured it out in half the time. The problem turned out to be a nasty timing-related bug in the device driver for the USB-serial cable that I was using. But the way in which events unfolded turned out to be an almost perfect conspiracy to make this problem as hard to discover as possible.

The first thing that happened was that I bought one USB-serial cable. I chose the name brand (IOGear) figuring it had the best shot at being reliable. I installed the drivers, plugged it in, and it *mostly* worked. There was just one particular circumstance under which it failed, and ADTPro just happened to hit the one magic combination of timing that triggered the bug.

The second thing that happened was that the symptoms were intermittent data corruption. So my attention was naturally drawn to my cabling setup and the old SSC card, which seemed like a more likely source of random problems than a brand spanking new USB device.

The third thing that happened was that I wrote a little Python program that uploaded the bootstrap software successfully. That made me think it was a bug in ADTPro for a long time.

The fourth thing that happened was that I bought two more USB-serial cables, all different makes and models, and they all did exactly the same thing. Of course, they were all running off the same buggy driver too. But I didn't realize that at the time.

I eventually managed to reproduce the problem between two Macs using Python code, which proved that both ADTPro and the old Apple II hardware were blameless. And after another hour or so of sleuthing I finally decided to try a different driver, which solved the problem. Thirty minutes later I had my disk image. My Apple II is now neatly packed away. And I am MacGuyver again.


[UPDATE:] You can find the plisp image here.

Friday, June 06, 2008

Barbarians, take 2

There is no other word for a society where something like this has to happen before someone starts to pay attention.

The parents of a blind seven-year-old who was sent to a religious school in Pakistan have told how he was hung by his feet from a ceiling and beaten to death after failing to memorise the Koran.

It may not be all Muslims, but it's not just the fringe either.

While officialdom often turns a blind eye, the sheer brutality of the latest case has led the new prime minister, Yousuf Raza Gilani, to order an inquiry.

Allah only knows how many other seven-year-olds are out there suffering similar abuse but that we haven't heard about just because they haven't died in so dramatic a fashion yet.

Wednesday, June 04, 2008

Tuesday, June 03, 2008

Breathtaking chutzpah

In a display of truly breathtaking chutzpah even by her own standards, Hillary Clinton, who just two months ago was saying that Barak Obama was not fit to be commander in chief, is now saying that she'd be willing to be his vice president. This would be surprising if not for the fact that Hillary has already demonstrated that she has no principles whatsoever, and will simply do and say anything to claw her way into power.

I will be surprised and disappointed if Obama offers Hillary the veep spot. Hillary is a delusional pathological liar and she is not fit to be dog catcher, let alone a heartbeat away from the presidency.

Hillary has obviously not come to grips with the fact that Obama beat her fair and square in large measure because of her despicable behavior and that of her supporters. You have to repent before you can receive absolution.

As for all those Clinton supporters who say they will vote for McCain rather than Obama all I can say is: you and McCain deserve each other.