Q. When is a deadline not a deadline?

A. Evidently, when it’s given to you by your boss’s boss’s secretary.

Every month, we have to fill in this stupid charge code thing. It’s especially stupid for me, because I only ever have one charge number, so it’s just a matter of pulling out my timesheets for the month and adding up the numbers. But it’s always due on the last business day of the month. So we get a reminder email saying “Please have your [foo] hours in by noon on Friday” about a week before. Then we get another reminder at the beginning of the week. Then a few of us get another email a few days before it’s due. And then today, 21 hours before the deadline we were given, my boss forwards me an email from the secretary saying “I sent these guys three reminders already and they still haven’t put in their time”, and a note from the boss saying “PUT THEM IN ASAP!”. WTF? If the deadline is noon tomorrow, why can’t I put it in tomorrow morning? I wrote back to her saying “if noon Friday isn’t the real deadline, why were we told that was the deadline?”

The way I see it, I have a very good reason for waiting. I’m paid hourly. That means if there is nothing for me to do, (and or the weather is nice for flying or kayaking), then I have a duty to bugger off and stop costing them money for nothing. So I don’t put in my hours until the last minute, because I could end up putting in my hours on Thursday morning and then run out of task so need to take off Thursday afternoon.

So I guess it comes down to: do they want accurate numbers, or is this just an exercise in bureaucratic masturbation?

Update:
Oh, it gets better. Here’s an email from my boss

Curious why you can’t just complete a simple little task without making a big deal about it and copying in the rest of the team. In doing so you take up additional time on their parts as well as mine. Mike and Wanda review the input prior to noon to ensure it is correct. Noon is the actual cutoff time in the system. I find it absolutely ridiculous the amount of time it takes us chase all of you down each month. You have an entire month to put your time in – why wait until the very last minute to do so?

Developer dumbassedness

Every morning, there is an ISO of the new build of our software in the drop box. If any of your code is new in this build, you’re expected to “integration test” your code to make sure it at least doesn’t make anything worse. Most people do it on the Integration Test Plex but some of us have our own mini-plexes cobbled together out of obsolete equipment.

This morning, I installed the ISO on my mini-plex as per usual. Only problem: my entire content directory was missing, and none of the software would run because it had evidently been compiled with Java 1.6 and the mini-plex has Java 1.5 installed on it. It turns out that one of the developers who doesn’t work with us very closely put together a new installation procedure that requires a special DVD instead of our normal installation procedure that is supposed to reformat our content directory as XFS, and upgrade it to CentOS 5.1. When I complained that nobody told us that we needed to follow a special upgrade procedure, he said “why didn’t you wait until it passed integration testing?”. Because I was trying to integration test it, dumbass!

Some upgrades work, and others don’t

After yesterday’s success upgrading Gallery, I decided it was time to upgrade the Browncroft Neighborhood Association CMS. It was running Drupal 5.1, and I see from the Drupal web site that the currently supported versions are 5.7 and 6.1. So first I tried upgrading to 5.7, and that worked fine. Then I tried upgrading to 6.1, and that failed horribly. Fortunately, both times I made a copy of the site on a test address in order to try the upgrade, which allowed me to try a few different approaches.

The upgrade to 5.7 didn’t require all the stuff they always tell you to do, like turning off all the optional modules and setting your theme to the default. The second upgrade failed silently a couple of times until I did it by the book and *did* turn off the optional modules. And that’s when I discovered that the upgrade script failed on some “ALTER TABLE” commands, which makes me think that it was expecting a newer version of PostgreSQL than the one I have installed.

I note that Debian Etch has both PostgreSQL 7.4 and PostgreSQL 8.1 packages available. I installed 7.4 because it was the default. But from work, I know 8.1 has more “ALTER TABLE” commands than 7.4. So now I’m trying to figure out just how I go about changing my 7.4 installation to 8.1 without breaking Drupal, Gallery, and all my custom configuration. So, lazyweb? Anybody out there do that upgrade and know?

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.