25 May 2006

OUTA SIGHT!

    Heavy decibels are playing on my guitar
    We got vibrations coming up from the floor
    We're just listening to the rock that's giving too much noise
    Are you deaf, you wanna hear some more
      AC/DC

How can listen to AC/DC's Back in Black and not air guitar? I'm just sayin'....

"Forget about the check. We'll get hell to pay!" How can you beat lines like that?

23 May 2006

Banging my head

    Why do I keep banging my head against the wall?
    Because it feels so good when I stop.

Yesterday I spent the entire day trying to resolve a configuration issue on a new server. The site I've been working on runs beautifully in my office on the computer I develop on. When I tried to deploy to the production system, it would not work, not work.

Would... not... freakin'... work.

I hate problems like this. You know there is some little configuration change you need to make, you just don't know what it is. Some checkbox somewhere will magically resolve the problem turing a cryptic error into a happily running website. You just need to find the damn thing.

My day goes like this: I spend hours googling error codes and re-reading documentation (yes, I actually RTFM). In general, get nowhere. Every so often, I come across a potential solution. For a few minutes, I think I've got it, I feel like this is definitely it. I click refresh on my browser and mutter obscenities when the error fails to go away. I repeat this process. Over and over.

Of course, one of the potential solutions finally resolved the error. With no warning, clicking refresh suddenly yielded the desired (if not expected) result: a happily running web site. I took no joy in the success, though. I don't feel like I've solved a challenging problem or designed an elegant solution. I just feel like I've been banging my head against a wall.

And it didn't even feel that good when I stopped.

18 May 2006

So-called reality

    This isn't reality. This is hell!
      Andrew
    Bravo was consulted on some elimination decisions.
      Top Chef credits

Two weeks (or three blog posts) back, I confessed that I'd been sucked into Bravo's Top Chef, a reality show that can be summed up as "The Apprentice" with chefs. Last night was part one of the big finale. It began with the three finalists arriving in Las Vegas for the final showdown. At the end of the hour, only two remained.

The oft-discussed problem with reality shows is that they are not real. Although the contestents and even the judges are real people, it's still a TV show whose goal is to entertain. Even the decision of who get eliminated is as much a question of drama as of fairness. I should, therefore, not be surprised of the three finalists, the one we all despise did not get eliminated. A final battle between two friends has nowhere near the drama that a battle between two bitter foes, especially when one is the clearly established villian.

But I'm still pissed! That chef deserved to go down! None of their dishes were the favorite. The other chef was eliminated mainly because they made only two of the requisite three dishes in the final round. Even though both of those dishes were well liked, the penalty for one missing dish was worse than for several dishes no one liked. How lame is that? The worst thing a chef can do is serve bad food. To make matters worse, once the the chef was all smug, as if they didn't just get a total pass. Man, I want to be there next week to see that chef go down.

Which is, of course, exactly what Bravo wants.

17 May 2006

Why the Impossible Mission Force is bad for America

    Since Hollywood execs grew timid and began making movies out of TV shows, no movie has so screwed with its source material. The hero of the TV show had become the villain of the movie.
      Erik Lundegaard

I read this commentary on the M:I movies last week and never blogged it. When I saw M:I3 was the top grossing film for the second week in a row, I remembered the commentary. It's good stuff.

There be dragons here

    Caution: There be dragons here
      Programmers' caveat

It's been forever since I posted anything. I've mostly been at a loss of what to post, mainly because my job has gotten interesting again, and I've been somewhat engrossed by what I'm working on. It's a new web development project using ASP.NET 2.0, SQL Server 2005, and VS 2005 (those who care will know what that all means). Anyway, I figure if that's what's on my mind, that's what I should blog about. So, a few thoughts and observations on comments....

Comments are bits of text in a program that are ignored by the computer. They are there for the sole benefit of other developers who may need to look at your code (not to mention your own benefit, should you need to remember what the hell it was that you did five months ago). They're akin to footnotes in a book, explaining the stuff that may not be obvious to the reader. Good comments are a hallmark of good programming.

Notice I said "good" comments and not "abundant" or "copious" or "numerous" comments. That is because comments, like food, is best in moderation. Not enough, and your program becomes an incoherent shell. Too many, and it becomes a bloated mess. Good programmers try to write programs that other good programmers can follow. Yet sometimes it is necessary to provide a some additional clues as to why your, say, multiplying that number by 3600 (it's in seconds - you want hours). Okay, programmers our there are right now saying, "You don't need to comment that! Any fool could figure that out." You're right, bad example, but you get my point.

Most of the time, one line is all you need. "Make sure the number is not zero," for example. Every now and then, though, you need to do something in your code that's a lot more complex and potentially confusing. Maybe five lines are needed. Then, there's the odd occaison when even you are disconcerted by the confusing nature of what you have just written. Yet, you cannot find a simpler way of doing it. There are many reasons why this may be the case. Often the vendor tools you're using have boxed you into the corner, and this obtuse mess you've just created is the only way out.

When in such situations, you often find developers leaving the comment:

Warning: There be dragons here.

Sometimes, they'll go so far as to say, "serious dragons." Generally this is to be taken, "Read the following code very carefully, or you might screw things up royally." After this comes a detailed explanation if what's going on. Often, there is also some justification of why it had to be done this way. It's an admission that the code is aweful, as in, "I'm really sorry you have to deal with this crap. Truly I am. But if you were in my shoes, you'd have done the same thing and you know it."

I'm writing all this because I'm coming close to the "dragons here" threshold. I am expanding and enhancing an existing tool, so I can claim that, in large part, it's not my fault. I've also found myself cursing the tool's original authors who, IMHO, did not practice good commenting. Some of the code comes close to what I like to call, "Heart of Darkness" code. This is code that is so bad that, when you finally make you're way through it to the other side, you're left muttering, "the horror.... the horror."

It is not the worst code I've dealt with, though. The worst code was very early on in my carreer. I had to find a bug in an X-windows application call xterm. When I openned the first source file, I found this comment:

WARNING: This code particularly, the tty setup code) is a historical relic and should not be confused with a real toolkit application or a an example of how to do anything. It really needs a rewrite. Badly.

And let me tell you, the author wasn't kidding. But at least they had the honesty of saying so up front. I printed this comment out and hung it on my wall.

03 May 2006

A Guilty Pleasure

    Short is the joy that guilty pleasure brings.
      Euripides
    Reality leaves a lot to the imagination.
      John Lennon

I admit it. I have been sucked in by the reality show Top Chef on Bravo. For those unfamiliar with the show, it's the same formula as Apprentice, done with chefs instead. Each week there are challanges, each week some gets sent home. Instead of, "You're fired!" they say, "Pack your knives and leave."

I have, in general, shown disdain for reality TV. I never watched Survivor, The Apprentice, or any of the other lesser shows whose names of which I can't even think of. But now I'm hooked. I want to see what ridiculous challange they give them. I want to see who goes down in flames. There are the chefs I want to see succeed and the one I wanted so badly to see get booted (and it was oh so satifying when they finally did).

I suppose the subject matter (food) brought me in initially. I love Food TV shows like Iron Chef, after all, so why not? But Iron Chef this ain't. It's pure "reality" TV. There is the requisite footage of contestents sniping and trash-talking. There is the overdramatic judging segments where the contestents get beat up by their "mentors." There is the annoying comercial break right before the final decision (okay, Iron Chef has that, but it's not the same). In short, it's Apprentice with knives and Chef's Whites.

Still, I keep watching. Call it a guilty pleasure.

02 May 2006

Seven Wonders of My House

    Makin' people happy, that's my favorite game,
    Lucky Seven is my natural name.
    Slippin' and slidin' my whole life through
    Still I get everything done that I got to do.
    'Cause I was born 'neath a lucky star!
      Schoolhouse Rock

Rob thought this up. Then I read Jeri's. I figured this is one meme I actually have ideas for. So here goes:

  1. My Children: They are truly wonders. Each day the surprise us, challange us, frustrate us, and delight us, sometimes all at once.
  2. The Family Room Bookshelves: My brother-in-law built them for one of his company's customers, but the interior designer gave him the wrong stain color. The color was just fine for us, so now we have custom-built beautiful recessed bookshelves. He also made us furniture to match!
  3. The Solar Panels: Turning each day's sunlight into the electricity that powers our home. Last July we had a $30 electric bill! I never tire of going downstairs to see how many kilowatt hours of electricity we produced and how many kilograms of carbon dioxide we didn't.
  4. The Kitchen Cabinet Secret Compartment: The search for the missing teddy bear cake pan led to the discovery of this seeminly extra-dimensional space in our kitchen. A muffin pan and strainer were also recovered, as was a glass lid we had never seen before.
  5. Franken-deck: This deck should have been torn down years ago. Each year I pull boards off the privacy screen to replace broken decking. I crawl underneath to shore up the rotting joists. One year we'll give in and buy a new deck. But not this year. (Knock on wood.) (If you can find any on that deck.)
  6. The Shelf of no Return: If you can't figure out where to put something, that's where you should put it. If you can't find something, that's where you should look.
  7. Sharon: Is there nothing she cannot do? I doubt it. Tremble at her awesome power. (Did I mention she's cute?)

I didn't mention the pets, so let me give them honorable mention here. Also the dining room table, which can hold food for eight and support a six-year D&D campaign.

Thanks again to Rob for a great idea.