Archive for the ‘Geekery’ Category

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.

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.

My new laptop
A first look at my lovely new toy, “Snowbird”, named after the best precision flying team IN THE WHOLE WORLD.

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.

FedEx tracking Day 3
My laptop is in Indianapolis. That’s close enough that I can feel it calling to me.

In other news, my iTopper skins arrived today. They look awesome, and I can’t wait to post pictures of them on the laptop.

FedEx Tracking Day 1
My new laptop has shipped. It’s still in Shanghai, but it’s shipped. Woo hoo.

My previous laptop was named “TiBook” because it was a Powerbook Titanium. My current one is named “AlBook” because it’s an aluminum Powerbook. So what should I name my MacBookPro?

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.

All The Screens
I just got my new work machine today, after 6 years of using the old IBM Intellistation. The Intellistation is dog slow, and noisy, and the new machine is fast and quiet. I really can’t complain, though, about how long I went without an upgrade because 3 years ago when I was offered an upgrade I said it was fast enough for me so I didn’t need one.

The most salient feature of the new one, besides the fact that Eclipse can rebuild the workspace in less time than it takes me to type this sentence, is that it came with a 21″ flat panel display. The screen doesn’t have as much screen real-estate as the old 24″ CRT I was using, but it did include dual display capability. So just for the hell of it, I attached the CRT to it as well, and now I’ve got a wrap-around screen.

The new LCD is much brighter and sharper than the CRT, so I may end up dumping the CRT after a while, but for now here it is. I feel like I could get a suntan off all this light hitting me from all directions.

The only problem is that the new display uses DVI connections and the new computer uses USB for keyboard and mouse, so the PS2 KVM that I only managed to snag a few weeks ago is now useless to me. If I want to use the SafeType keyboard and external mouse with the laptop, I have to physically unplug it from the work computer and plug it into the laptop. And I don’t have anyway to remote the display onto one or both of the ones connected to my Linux box, short of installing VNC.

In other news, my new MacBook Pro has just been received by FedEx in Shanghai.

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?

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!

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.

My new computer skinIn anticipation of today’s announcement of the new MacBook Pro, I ordered the computer skin a few days ago from iToppers.com. Today the guy producing it sent me this image of what it’s going to look like.

I can hardly wait. I hope there is an airshow nearby where I can get the team to sign it.

A few hours ago I was complaining to a bunch of friends how annoying it was to do Photoshop with a ball mouse. My optical mouse broke (the first button went down and didn’t come back up) a few weeks ago so I’m using this old ball mouse, and no matter how carefully I clean the rollers, it seems that when I click and drag to the left, the mouse will stop. If I just move the mouse without with the button down, no problem, it follows it all over the place. But it takes multiple attempts to drag anything to the left.

One of my friends, Harry, is an extremely experienced graphic artist, and he said “forget the mouse, buy a Wacom Bamboo tablet”. At first, I was reluctant, because the logo for this thing looks like the word “Bamboo” drawn on an Etch-a-Sketch, which doesn’t say much for its drawing ability. Also, the Wacom promo stuff talks only about it as a device for mouse-replacement and handwriting, with absolutely nothing about using it for drawing or other artistic work. But I found a couple of user reviews where they pointed out it has force sensitivity, which is not something you need for handwriting and mouse-replacement. They said it was an excellent tablet for amateur artists, as well as something professionals might want to put in their laptop bag for use on the road. So on the way home from lunch we stopped off and bought one.

I’ve been using it continually since then, and as far as I’m concerned I should throw away all my mice and buy one of these things for every computer I use. I’m using it for general mouse-replacement and it’s great. The only thing I reach for my mouse for is for the scroll wheel, and that’s mostly force of habit since the tablet has scroll buttons on the top. This thing is extremely great.

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.
Continue reading ‘Oops’ »

I’ve been thinking a lot about working overtime, mostly because I’ve been doing a lot of it. I haven’t taken a day off since the day after Christmas, as I struggle to meet an impossible deadline.
Continue reading ‘Some thoughts on overtime’ »