Archive for the ‘Rant’ Category

Q. When is a deadline not a deadline?

Thursday, March 27th, 2008

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

Tuesday, March 25th, 2008

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

Monday, March 24th, 2008

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

Friday, March 14th, 2008

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

Tuesday, March 11th, 2008

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

Thursday, March 6th, 2008

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

Monday, March 3rd, 2008

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

Monday, March 3rd, 2008

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!

Ethical dilemma

Friday, February 29th, 2008

I’m in the middle of a big refactoring job for my work project. I’m basically restructuring all the classes that make database calls so that they use connection pooling with a per-thread “DatabaseHandle” that caches PreparedStatements. It’s a big job, and it’s going to take a LOT of time and concentration, which means that home is a far better environment to work on it than at work. The problem and dilemma comes because I was on a roll when I hit 40 hours for the week. I’m not allowed to bill more than 40 hours, and I’m sure as hell not going to do it for free. Nor can I work from home without prior approval and that’s not easy to get.

So my question is, do I quit now and hope I can quickly get back in the groove on Monday morning, or do I work on it this weekend and then when I’m done spend an equivalent amount of time at my desk at work working on personal projects, like my photoshop stuff? I’m thinking it’s probably safest, although nowhere near as productive, to shut down Eclipse right now and don’t look at it until Monday morning.

Quick update in point form

Friday, February 22nd, 2008
  • Knees : stabby
  • Database code: not working 100%, but good enough to let QA start hammering it
  • Due date: today
  • Overtime: ending today
  • Airplane: booked
  • Weather: doubtful
  • Other plans for weekend: massive amounts of sleep and TV watching
  • Mood: cautiously optimistic

Oops

Tuesday, February 19th, 2008

I’m coming down to the wire of this database re-architecture task. I’ve been working 60 hours a week for 8 weeks now on this thing, and it’s due this Friday. Unfortunately, I have come to the stunning realization that there is a gaping problem in my design.
(more…)

Sigh

Saturday, February 16th, 2008

Eclipse dialogSee this dialog? I’m seeing a lot of it. I’m working on a very large project, and this one particular file is the main GUI for our system. The guy who started it was in love with Visual Age For Java, and didn’t like splitting his stuff into separate classes, and after I took it over I’ve pretty much continued along the same lines, so this file is over 10,000 lines long. Yes, you read that right, ten thousand lines of poorly documented code.

Just about every word you type into Eclipse in this file either leads to a long delay as the CPU maxes out and the disk churns, or this dialog. I’ve tried quitting everything else to provide more memory for it to work in (you’d think 2Gb of RAM would be enough for Eclipse, Safari, iChat and iTunes to get along, and you’d be wrong).

Sigh.

UpdateOk, what sort of moron declares a method to throw “Exception”?

My irony meter exploded

Saturday, February 16th, 2008

Last night, in a parking lot I saw a bumper sticker that said something like “Live lightly so that others may live”. A great sentiment, except I saw it on a gigantic SUV. And not one of the semi-practical ones that looked like it was on its way to a cabin in the woods or was full of climbing gear and skis, I’m talking one of those pristine, shiny, leather seats and chrome monstrosities that never leaves the pavement.

Updates and backups

Thursday, February 14th, 2008

Well, after I got home I tried Adobe Fucking Updater again. This time it popped up a dialog saying “no updates to be installed” so quickly I didn’t even notice how much RAM it was taking. Certainly a far cry from hours and gigabytes of memory that it took when I ran it at work.

Also, I did a Time Machine backup for the first time in a few days. I’d started it in the morning, but it was taking too long so I’d aborted it after about half an hour. I started it again when I got home, and expected it to take 5 or 10 minutes like it usually does, or maybe a bit longer because I’d just installed the Leopard 10.5.2 and Graphics updates. Instead it ground and ground and ground and finally finished 3.5 hours after it had started. I’m told this is because the disk was nearly full, and it had to re-arrange old backups to discard the appropriate old ones.

My God, Adobe, how much memory does an updater need?

Wednesday, February 13th, 2008

Adobe is not my favourite software company. I’ve ranted before about splash screens that cannot be moved or covered. Today I was browsing a PDF file in Safari, which was an excruciatingly slow activity for some reason. But then it got an order of magnitude slower, and I see the infamous “Adobe Updater” icon in the dock.

I try to pop up the Activity Monitor to see what’s up. It takes at least 5 minutes, and it shows Safari and Eclipse, the two main reasons for having this computer here at work, as “Not responding”. It also shows that Adobe Updater has an RSIZE of 1.4GB+, and a VSIZE of 3.0GB+, and both numbers are still growing. I kill the Adobe Updater, and Safari and Eclipse both take a while to finish swapping back in their active parts and start working again.

But 10 minutes or so later, the Adobe Fucking Updater starts again. This time I decided to humour it. I closed Eclipse and Safari and waited. And it didn’t take long for the AFU to take up all the memory I had, and then die. I think it got up to about 3.3Gb of VSIZE. And yet, doing a quick back of the envelope calculating, I’m pretty sure it could have sucked every Adobe software product I have on my disk into memory and still not used 3+Gb.

So what the hell is happening? Why is Adobe Fucking Updater so badly written? Why is it chewing memory like that?

I have a theory that it might have something to do with being behind the corporate web proxy (which also sucks mightily). Or it just might be that Adobe’s programmers are incompetent morons who should all be fired and told to never touch a computer again. Or more likely, both. When I get home tonight, I’ll try updating again and see if it really needs more memory than I’m willing to give it.