If you don’t hear from me after today…

…it’s because I’ve had to commit Seppuku to appease our Japanese customers.

A few days ago, based on a code review (which I unfortunately did on our 5.0 code base instead of the 3.6 code that they are using) and an examination of the customer logs, I confidently said that this mysterious changing value that they are seeing is due to one of them mucking around with changing values in Webmin. I found at least one case where that had happened, and like House my default assumption is that the user is always lying, because that’s usually the case. My confidence was reported up the line by my boss, and from him to the Japanese support people, and from them to the customer.

So yesterday I was taking another look at the logs, and I found that as well as the case where they had messed around with the values themselves, I found another case where the values had changed “spontaneously”. Oh oh. And then I remembered the cache of these values I’d put in in 3.1, and how hard it had been to get everybody who used the cache to understand that if they used the cache they had to listen for a particular message, and when they got that message they had to call a method to flush and reload the cache, and how some of the other developers don’t seem to get the concept of Singletons and how something they call in one thread can affect something that happens after that thread is dead and another one spawned off, and because of that in 4.0 I’d gotten rid of the cache entirely.

After apologizing, I’m going to have some backporting to do.

Why is it that when called on to apologize to the touchy Japanese customers I feel this Basil Fawlty voice in the back of my mind saying “Don’t mention the war” over and over again? I have trouble reconciling the delicate sensibilities of the Japanese and with the brutal butchers who bayonetted Canadian nurses in Hong Kong at Christmas 1941 or who casually beheaded surrendered prisoners being force marched in Bataan. I guess that’s not very culturally sensitive of me.

Today’s interesting discoveries

1) You can’t even count on your own project’s QA team members not to lie and say “I didn’t change anything” when they really mean “I manually edited this vital configuration file and totally botched the syntax of the start time parameter”.

2) If you need to get a screen dump of the login screen on a machine that isn’t network attached, and so therefore you can’t just use VNC to do it, you can do


chvt 7 ; sleep 5 ; XAUTHORITY=/var/gdm/:0.Xauth DISPLAY=:0.0 xwd -root > login.xwd

You youngsters might want to use the import program instead of xwd if it’s available. But then you’ll never know the joys of stringing together a half dozen pnm commands and getting it right the first time. Damn kids. Get off my lawn.

Firefox 1.5 really dropped the ball

Vicki and I both upgraded to Firefox 1.5 (on Mac OS X) in the last couple of weeks. Vicki went first, and she had a problem with something that went away when she uninstalled all the extensions she uses and reinstalled them. Then after a short time she found it was so unstable that she switched to Safari. Then I noticed that I couldn’t get Flash to work on any site. I tried uninstalling FlashBlock, and that didn’t help. I tried upgrading to Flash 8, and that didn’t help. Eventually I discovered that if I go into my profiles directory (in ~/Library/Application Support/Firefox/Profiles/foo) and deleted all the extensions related files and directories, Flash worked again. I installed FlashBlock and the Google Toolbar, but I can’t seem to find the BugMeNot extension. Oh well, I guess I’ll have to do that the old fashioned way.

But it seems like Firefox really screwed up when it comes to upgrading when you have extensions installed.

Random Geekery

Backing up just got a lot faster when I realized that copying a 12Gb file from an IDE disk to a USB 2.0 disk should *not* take 3+ hours. After some hints from the members of LUGOR, I discovered that last time I’d unplugged the USB disk for some reason, it had come back up as USB 1.1 “full” speed instead of USB 2.0 “high” speed, i.e. 12Mbps instead of 480Mbps. I replugged it and watched for the words “high speed” in /var/log/messages:

Dec 16 15:16:56 allhats kernel: usb 1-4: new high speed USB device using ehci_hcd and address 6
Dec 16 15:16:56 allhats kernel: scsi7 : SCSI emulation for USB Mass Storage devices
Dec 16 15:17:01 allhats kernel: Vendor: HDS72252 Model: 5VLAT80 Rev: V36O
Dec 16 15:17:01 allhats kernel: Type: Direct-Access ANSI SCSI revision: 00
Dec 16 15:17:01 allhats kernel: SCSI device sda: 488397168 512-byte hdwr sectors (250059 MB)
Dec 16 15:17:01 allhats kernel: sda: assuming drive cache: write through
Dec 16 15:17:01 allhats kernel: SCSI device sda: 488397168 512-byte hdwr sectors (250059 MB)
Dec 16 15:17:01 allhats kernel: sda: assuming drive cache: write through
Dec 16 15:17:01 allhats kernel: sda: sda1

On the Powerbook front, I’ve been playing around a bit with a program called “Quicksilver” that a few friends have been raving about. You’d think this would be right up my alley, since it allows me to control my computer with more keyboard interaction and less mousing. But so far, my reaction has been “meh”. It can do some cool stuff, but it’s a memory hog. I never thought I’d see the day when 1Gb of RAM in a laptop was barely adequate, but thanks to Firefox and Quicksilver, I’m there.

In other Powerbook news, I’m anxiously awaiting my replacement power supply. I tripped over the one that came with it and had to order a new one on Tuesday, and it still hasn’t come. Damn good thing I bought a spare power supply back when it seemed that Apple had never heard of “strain relief” and their power supplies kept dying with arcing from worn out insulation where-ever a wire went into a solid piece, or I would have had a dead Powerbook for 4 days now.

Speaking of inadequate memory – does anybody make 1Gb SO-DIMM PC-133? Vicki’s iBook has 128Mb built in and one SO-DIMM slot, which currently has 512Mb in it. I know, 640Mb should be enough for anybody, but she’s had to give up on Firefox because it’s such a memory hog and she misses some of her plugins. (Shut up, Jason.)