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.

I hate trackback spam

It’s inevitable that within seconds of posting to this blog, the new posting gets a trackback spam. Since the only other trackbacks on the blog are internal links between my posts, there doesn’t seem to be any point keeping them. So I’ve turned off the ability to do trackbacks. Sorry, spammers.

Looking for recommendations on big external USB drives

I’ve had a series of bad experiences with cheap-ass external USB drives. I’ve bought some that sucked right away, and some that look like they’re working right at first but which get slower and slower and slower. One I have now that I’ve had for years is working perfectly, and another transfers a few files quickly and then bogs down hugely and gets slower than USB 1. I’ve also got a couple of Seagate Free-Agents that are working perfectly (after I discovered how to turn off sleep mode).

So I’m thinking that from now on I should stick to the known brands. Also, my backup needs are getting bigger, so I’m thinking of getting a 1Tb disk. Does anybody have any specific recommendations in that size range? Stick with Seagate? Right now the price leaders seem to be Iomega (the company that brought you the term “click death”) and LaCie. Any experience with them, especially as TimeMachine drives or doing hourly rsync backups on Linux?

The best advice you’ve been given in your life

I host a bunch of mailing lists that use the absolutely excellent mailing list software called “Mailman”. Some I run myself, others I just host for others and somebody else does the actual list membership management and stuff. Every month, on the first of the month, Mailman sends out an email to each member of each list with the names of the lists they’re on, the passwords they’re using for that list, and how to unsubscribe or update their memberships if they want or need to. Since some of the mailing lists are low traffic, and since list traffic which bounces often doesn’t indicate the actual subscriber’s address (because they’ve forwarded it from one address to another or because the bounce message doesn’t clearly indicate who it was sent to), the monthly reminders are a good way to weed out invalid addresses, as well as helping remind people that they’re on the list and what to do if they don’t want to be on the list any more. So I always see a small flurry of people unsubscribing or modifying their subscriptions right after that reminder comes out, which I see as a good thing.

But inevitably, some idiot gets the email, and rather than actually reading the instructions contained within, they hit “Reply” and tell me to unsubscribe them. I reply back and say that they were emailed detailed instruction on how to unsubscribe just yesterday, and they should try reading those instructions and following them. And if they’re like the idiot today, they say that they tried but it wanted a password, and bemoan the fact that I’m being unhelpful. To which I reply pointing out that the email whose instructions they supposedly followed included that password.

I also point out that “when you’re given instructions, you should read them and follow them” are the most helpful anybody has ever been in their entire lives, because this doesn’t just help them in this case, but for everything they might want to do or accomplish for the rest of their lives. How many other people have given them help today that will change them from needy whiners with an overdeveloped sense of entitlement incapable of doing anything on their own without hand-holding into bold, confident go-getters who can meet any challenge with aplomb and vivacity?

And do you think they thank me? Never!