Another software developer who needs to be kicked in the balls

Whoever wrote the fucked up dependency checking in javac, and didn’t provide a way to turn it the fuck off.

I’m really sick and tired of having javac deciding that it needs to recompile something 3 directories ago in spite of the fact that both the jar file and the class file that it made about 3 seconds ago are in the CLASSPATH. This seems especially bad on directories that are NFS mounted, but if there is any clock skew between the NFS server and the NFS client, it’s less than a second and those source files haven’t been touched in weeks or months. It means that every time a low level class gets a new dependency, you have to modify the CLASSPATH in every fucking Makefile in the system because maybe, just maybe, javac will decide it needs to recompile that class for no apparent reason.

And don’t tell me “just switch to ant”. I have another rant building up against how ant and eclipse cause developers to forget everything they’ve ever known about partitioning of code and they start putting in calls to higher level stuff in low level code and causing circular dependencies.

Software Developers who need to be kicked in the balls

The following software developers need a good swift kick in the balls:

  • People who can’t let a boolean stand alone, and have to compare it to another boolean, as in "if (isOffline() == true)“. Why not be extra safe, and make that “if ((isOffline() == true) == true)“?
  • People who don’t realize that after you’ve modified a value in a Map, you don’t need to re-add it back to the Map to have it take effect. “get” returns a pointer to the original object, not a clone of it.
  • Eclipse (or maybe Visual Age) users who leave the code littered with comments that say “ * TODO To change the template for this generated file go to Window - Preferences - Java - Code Generation - Code and Comments" or Insert method description. Either configure the template, or turn off automatically generated comments.
  • Anybody who declares a method to throw “Exception”, and anybody who calls methods that have explicit lists of what they throw, but who surround it with a “catch (Throwable t)” block. I don’t care if all you’re going to do is print the stack trace and continue, there’s no excuse for that sort of laziness.
  • Anybody who changes huge swathes of somebody else’s code without asking the original developer if there is a better way. Especially if it’s code I wrote just a few weeks ago.
  • People who use ‘do {…} while(cond);” People who use “if (cond == true) do { … } while (cond == true);” need to be kicked repeatedly.
  • The entire staff of my company’s China office.

It’s HERE!

Vicki called me this morning to say she’d just signed for the laptop. Which surprised me, because as of this morning the FedEx site was still saying “Expected delivery 11 March before 11am”. I managed to contain myself and work until 4pm instead of heading for home immediately.

I tried installing the RAM first, but that caused it to go “BEEP BEEP BEEP pause BEEP BEEP BEEP pause…” I figured either I’d seated it wrong or it wasn’t as compatible as the Kingston RAM chooser said. So I put back the factory RAM and started it up. I used the “suck all your data and apps off the other machine” target mode thingy, and it was up and running in an hour or so. Then I installed the new RAM and this time it worked. Then I started a Time Machine backup.

I tried a few apps to make sure they worked (iPhoto is a newer version than the one I had before, and it looks pretty good. Photoshop still works. MacStumbler exits immediately. iTunes works, and this time I remembered to de-authorize my old computer before I wiped it.) Then I wiped my old computer and reinstalled Leopard on it.

While various things were going on, I actually watched an episode of Torchwood without it turning into a slide show or skipping bits . In the past, I’ve always had to stop everything, including Time Machine, or it would be terrible.

After the Time Machine backup finished in a mere 3 hours (instead of the 8 that a similar full backup took on my old computer), I closed the lid and installed the iTopper skin. It looks awesome and I’m going to have to take some pictures and write a full review. It wasn’t easy to install – I think I did something wrong with the soapy water mister and things stuck hard without me being able to slide things around, and it was really hard to get the top sheet off. I also think I didn’t get all the bubbles out in the end because of that, but it’s so light coloured that I can’t even see them so much as feel them.

Anyway, it’s a thing of beauty, and a joy for at least another 3 or 4 years.