Computer Trouble |
2004-11-26
|
Computers and I have not had much love for each other the last two weeks. Last week our office server's hard disk crashed badly. All sorts of sectors lost, and so on. Luckily I had backups of what mattered. Which reminds me, need to prod some employees to mirror the backups. The hard disk was broken so badly that during attempts at getting data off of it, which was very slow by itself already, after some time the kernel code completely gave up on the drive and it wouldn't even mount it anymore.
The easy solution was to buy a gizmo that seems to be all the rage these days: an IDE-to-USB kit that costs only about 25 euros. You put your drive in it, connect it, then attach it through USB, and presto. It's not quite perfect yet: you still need a power adapter for the external drive to work, and you still need to screw the damn thing open. I'd prefer having had some slide-in solution or whatever. Anyway, this is great news for all my old harddisks lying at home collecting dust.
Of course, it would have been nice if the manual had said that the drive needs to be set to master for it to work. But after fixing that, FC3 just automounts all the partitions when I plug in. Which would have been great except for the crappy partition labels that FC always assigns, but I'll save that pet peeve for another day.
Meanwhile at home, while working on the newish home machine, I went for a drink and when I got back, both that machine and the home server had switched off. A short power outage is very regular here in Spain (I should buy a UPS). Only this time the work computer didn't want to start anymore. Started cursing, dismantling the machine, switching to a different power supply, reseating cards, trying a whole bunch of stuff. With a quickly sinking feeling, I spent two hours trying things until I gave up, packed motherboard and processor into a box and started going through my Spanish dictionary to arm myself in the fight with the technician.
Next morning, go to the store, hand in the motherboard, look at the guy trying to find the problem (there's always this small window of time where there's a possibility you'll end up a total loser because the technician manages to get it running or finds obvious signs of maltreatment on the equipment, causing you stress). See him give up after twenty minutes as well, and he replaces the motherboard for me after showing that it works.
At night, come back home, try to put in the motherboard and notice that the riser bits for the motherboard screws to be screwed into were of course left behind attached to the old broken motherboard. And all the risers I scrapped from other machines were all too high. And of course I remember having a whole cup of crap like this at my old place before moving to Spain. *sigh*.
Anyway, some filing, scrapping, and cheating later, my machine was sort-of-working again. Overheating slightly, but it runs.
As for the softer side, I spent a big chunk of yesterday evening fighting with our applet's ant build. I finally realized that behind my back it was actually using gcj to compile in cases where I wanted to try the Sun compiler. The problem we had with gcj and jikes was that the applet compiled nicely, but didn't actually run on Internet Explorer because it complained
about missing sun.audio methods. I tried to get the build to give me reproducable end-user errors, before trying to tackle
the actual problem.
The actual problem was not that hard after all. You see, Wim had written a stubs directory containing "fake" sun.audio classes, with the methods in it that he uses. I was under the impression that this was a standard trick being used by Java people, since Wim is a respected Java hacker, and that I could trust that part to be correct. But thinking it through and thinking about what I learnt up to now about Java from all of my painful debugging, it was actually possible that the class and method signatures were not entirely correct. And Java looks up methods by looking at the full signature.
So in a nutshell, a signature that you infer from a use of the method in a program can of course be different from the actual signature of that method. Or, different signatures still allow the Java applet to compile. So after luring Wim into decompiling the sun.audio class files, we extracted the correct "fake" implementation, and after that it Just Worked. So the applet now compiles with both Jikes and GCJ and runs on the old 1.1 Java implementation in Internet Explorer.
Of course, Johan brought down our good mood the next morning by showing us the source code for Java that he downloaded from somewhere which obviously contains the correct signatures as well...