Archive for the ‘Rant’ Category

Successories

Tuesday, April 1st, 2008

Great Wall

I’ve got an idea: When you’re trying to motivate people, don’t try to promote the concept of “Teamwork” by showing something that was built by slaves at the whim of a despot, which killed millions of the people involved in its construction, and which failed miserably at its design goal. Just sayin’.

My management secrets handbook

Saturday, March 29th, 2008

If I ever write a book about management, my first rule will be:

If you don’t trust your experienced employees, then the only people who will want to work for you are people who know they can’t be trusted.

Unfortunately, that’s the only rule I have, so the handbook will probably have to wait.

I have seen the future, and it sucks

Thursday, March 27th, 2008

Today the developers were invited to see what our new usability expert has come up with. Evidently he hired some local company to do the graphics, and somebody else to whip it up into a fancy all-signing all-dancing Flash demo. It’s all eye candy and very little substance, and it looks childish to me. But evidently all the suits and managers love it, so it’s going to go ahead. I can’t tell you what it looks like, except the back drop looks like it was copied from the default background/splash screen/packaging of a certain fruit-based cat-themed operating system that was recently released.

The fact that the interface looks like it was designed more to impress suits than to help the people who are going to use it day to day isn’t the part that sucks. The fact that it’s all going to be written in Flash semi-sucks. The fact that it’s apparently going to be designed without talking to the people who’ve been working on the program for 6 years semi-sucks. What really sucks is that the project leader is talking about either outsourcing the entire Flash part of the user interface, or hiring their Flash programmer away from them. It was left to my cow orker Rohan to speak up and say “the reason you hired good people in the first place is that with a little training we can do anything, including Flash”.

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”?