Author: cdwan

Tales from the Support Trenches

Good support call: Introduction, blah blah, Chris is one of our experts, blah blah. Question: Which port do I plug the wire into, one or two? Answer: Two Thanks! Bye!

More involved support call: Introduction. System not working as expected. <…hour long diagnostic conversation…> Really? The machine was submerged in water, then allowed to dry, and hasn’t worked correctly since? Please demonstrate that you have a working machine, then blame my software. In that order, thanks. Here’s a nice diagnostic for you to run. Okay? Gotta run…

Yet more involved call: Why did the machine reboot while I was changing the network settings to fix it? We wanted to help!!! Is it done yet??? We have work to do!!!! The machine wasn’t working!!!! We rebooted!!!! It’s still not working!!!! Please stop helping me.

Time to go climb a wall

Evil Network

Spent the morning on the phone with a real, live customer and I may have actually been able to solve his problem. Guy had a cluster, see…and…well…there were some technical details, see…and now he has a WORKING cluster.

I think.

Then Chris and I met for sushi-lunch. Since I still don’t have an ID badge that lets me into the office, and since I was the last one there when I left, I’m on the train home. Hopefully I can squeeze a couple more productive hours out of this evening, so I can kill this first piece of software I’ve been writing and move on.

House is coming along. We’ve got the kitchen mostly unpacked, we think. It’s hard to tell. We were remarking last night that it’s like a tiny Christmas every night. We open these boxes and find (for example) all of redmed’s right shoes (she’s only been wearing the left ones since breaking her heel, so they were packed). Or, we find the towels, so we no longer need to share the one that we packed every day. Or, silverware! Precious, non-plastic silverware.

Okay, my standards may be low, but I’m generally a pretty happy guy that way.

Tomorrow, I think, will be a major yard work day. I need to kick some ass on these weeds that are trying to consume my new roses. Maybe detailed plant pictures too. I’m sure everyone out there in livejournal land is just desperate to know what plants are now in my care.

Who cares if you don’t want to know. It’s my journal.

Train train train

Tried to work from home yesterday morning. No dice. The still-packed boxes kept calling out to me: Chris, unpack us, unpack us! Unpack us, you obsessive compulsive freak. You know you can’t rest until we’re unpacked…

So I took the 9:50 train in. That sucked a *lot* more than the early train. With the commute bookending the workday, it sort of evens out. In the morning, I’m not really awake for the first half hour of the ride anyway. In the evening, I’m ready to zone out a little and watch the pretty rail-yards and low-rent housing go by. Taking the train in the middle of the day, I was fully aware of how I wasn’t being very productive.

Got a head shot for my publications yesterday. That was sort of fun. Apparently, I need to keep my chin up when being photographed. Don’t know yet how it turned out. If the statistics from the wedding hold, then 2 of those 20 pictures will be pretty good.

They keep telling me to find my feet because we’re about to get really busy. Woot!

Bowels

So, contrary to all good opinion and intention, I find myself back in the guts of the 10 year old C / C++ monstrosity that is BLAST. For those who aren’t bioinformatics geeks, BLAST is the Basic Local Alignment Search Tool. It’s the very most popular piece of software ever created for analyzing genetic sequence data. It’s also a big pile of C, written by biologists for biologists. One of those pieces of software inside of which you really don’t want to look.

So anyway, we have one architecture (Alpha E40, running Redhat 7.2, thanks for asking) for which BLAST barfs on a particular alignment. If I feed it two very specific sequences it dumps core. So far, I’ve rebuilt without optimization, upgraded gcc to the very most recent version, and examined the core file. This showed me that it’s an “Arithmetic error” in a particular function. Turns out it’s the line:

return searchsp * exp((Nlm_FloatHi)(-Lambda * S) + kbp->logK);

Everything is cool until that outermost multiplication by a very small value. Example idiot prints:

Entering BlastKarlinStoE_simple
^^ searchsp: 351649.000000 Lambda: 1.374063 S: 489 logK: -0.341642
^^ -Lambda * S: -671.916867
^^ exp((-Lambda * S) + kbp->logK): 1.101132e-292
^^ searchsp * the above: 3.872119e-287
Leaving BlastKarlinStoE_simple
Entering BlastKarlinStoE_simple
^^ searchsp: 351649.000000 Lambda: 1.374063 S: 518 logK: -0.341642
^^ -Lambda * S: -711.764697
^^ exp((-Lambda * S) + kbp->logK): 5.446862e-310
Floating exception (core dumped)

The part that gets me is that this works *fine* on other architectures. Unless I get this done in pretty short order, it would have been cheaper for me to upgrade the system on which the code runs than to spend my time debugging it.

Hate.

Phrases I’ve Heard Enough This Week

“Space”: Our application is poised to become market dominant in this space
“Grid”: Our application is grid compliant, grid aware, and grid integrated to compete in this space
“Best of Breed”: Our best of breed grid services application will control the P2P space
“Web Services”: The web services / grid convergence represents a best of breed synthesis for this space
“Pattern”: Emergence of distributed, grid, web services applications follow the emerge – hype – fail
pattern with shocking regularity (in this space)

In other news, some buzzwords seem to by dying a merciful death. I didn’t hear anyone talk about new paradigms, synergies, and there was only a little blather about objects.

In other news, my fruit smoothie is tasty.

Public Policy

I heard a conversation on the radio this morning which was a classic example of how to lose (win) a political debate. The topic was transportation policy. The occasion was an ongoing strike of the bus drivers (which sucks all around). The participants were the president of the “taxpayers league” (or some such activist/advocacy group) and a member of the Minneapolis transportation board.

It was very one sided, because the taxpayers league guy would never give any plan or statement beyond vague platitudes. He was therefore the winner. The transportation board woman had specific ideas: “Increasing the number of lane-miles will decrease congestion.” His response: “Sure, for the rich white folks who drive on the highway. Instead of catering to your rich cronies, couldn’t we give the working class, the people who make your sandwiches and clean your home, couldn’t we give them a chance to get to work too?”

At that point, the correct (and only possible) response is: “I think we agree on that goal. I really do. We agree that fair, balanced transportation policy for all people, regardless of income level is a goal. I’ve given one possible approach, and you’ve raised an objection to it. Now I’d like to hear your proposed approach, so that we can discuss them and come to some sort of middle ground.”

As it was, she rose to the bait and was destroyed on air by someone who would never give anything more specific than “I like babies. I disagree with you. Therefore you hate babies. Baby hater, how can you hate babies!” “Wait, what are you talking about? I just said…” “BABY HATER!” It was excellent rhetorical technique, and I’m sure that a lot of listeners were left with the impression that the taxpayer guy is very smart, and the transportation board lady was very stupid.

This happens *all the time* in political discourse, and it makes me sad. I would much rather deal with people with real, testable opinions than with good debaters.

Jamie Zawinski has a page somewhere (which I can’t find at the moment) dedicated to the fact that if he was going to carry a sign with a slogan on it, you’d be able to deduce his stance on some issue from the words physically present on the sign. “A living wage for everyone!” or “Peace, not war!” don’t qualify. Instead “Raise the minimum wage” or “Never sell weapons to another country again!” See how this works?

A simple rule of thumb: Imagine the opposite of the position you’re arguing. The dead, absolute opposite. Now ask whether there is even one person in the room who supports that opposite. If not, maybe your argument needs a little refinement so we can tell what you’re talking about.

Then again, if you just want to win arguments…this is a great technique.