February 03, 2004

Helpful error messages

I spent a while today trying to make an appointment for something online. After filling out the 234 fields describing all aspects of this appointment, I finally got to pick a location, date, and time. Then I got this note:

Unable to service request. Some error occured!

Error: java.sql.SQLException: Io exception: Broken pipe occurred in TimeslotEntryNew pos 2 empty URL

Oh. That's just great. Very helpful.

Posted by Mike at 11:47 PM

February 05, 2004

Tablet PC

I had a five hour offsite today to do a design session around the system we're building. I took notes using OneNote by handwriting on my Tablet PC.

And it was just great. I can write and draw diagrams as easily as doing it on paper, except that at the end of the day, I can convert all of my handwritten text to actual text, and then email the notes around for everyone else to see. It's really a qualitatively different experience working this way.


Posted by Mike at 09:59 PM

February 08, 2004

Old-school video games

Meredith and I picked up the Atari 10-in-1 game this weekend. It's a joystick, modeled after the original Atari 2600 joystick, that has 10 of the old 2600 games built into it (including Missile Command, Centipede, Asteroids, Pong). I just played Asteroids long enough to roll the score over. I had forgotten that you could even do that on the old games.

Totally fun. :)

Posted by Mike at 08:41 PM

February 13, 2004

Meredith is on her way ... I hope ...

Meredith is off to Atlanta today to visit college friends. I would have gone, but couldn't get off work, unfortunately.

Or, at least, I hope she's off: I mis-set the alarm last night, so we wound up waking up just over an hour before her flight was supposed to leave from SFO. Oops. We made it there half-an-hour before her flight, though, so it was probably OK.

Posted by Mike at 08:50 AM


I see that there's an article on VeriSign's plan to bolster their profit margins by exploiting parental fears online safety for children.

"The token, which plugs into a computer's USB port, will allow children to encrypt e-mail, to access kid-safe sites and to purchase items that require a digital signature, said George Schu, a vice president at Mountain View, Calif.-based VeriSign."

So I suppose that if you have a kid-only web site, the idea is that this would prevent child-molesting adults from logging in.

Sounds like a great idea. All you have to do is insure that not a single USB dongle given to a child (all ~48 million of them in the US) is lost or stolen. Oh, and that Verisign never gives a key to anyone that isn't a child. Of course, they've previously given out keys for microsoft.com to someone fraudulently posing as as a Microsoft representative -- and there's only one Microsoft, not 48 million -- but they've probably worked the bugs out of that process by now.

This really sounds like a problem that Verisign has invented. Even if you think this is a real problem, it's really hard to see how this can possibly have any positive real effect.

Posted by Mike at 11:55 PM

February 18, 2004

Imposing your own values

As could be predicted, various conservative groups are falling over themselves condemning and trying to stop San Francisco's decision to grant marriage licenses to same-sex couples.

Here's my favorite quote, this one from Randy Thomasson, executive director for the Campaign for California Families: "The renegade mayor of San Francisco is violating the state law. He's pretending to be a dictator. He's imposing his own values upon the citizenry, and he is really out of order." *

Hmm. Perhaps he means these citizens?

"The line to get a marriage license has at times stretched through two floors of City Hall, out the front door and around three sides of the stately stone building. Gays and lesbians have come from around California and 22 other states, including Texas, Hawaii, Alaska and Florida." *

Clearly not them. Maybe this group of citizens?

"As newlywed couples emerged Monday from the rotunda of San Francisco City Hall proudly holding their marriage licenses, they were greeted by trumpets, a mariachi band and showers of bubbles. Cars driving by often honked their horns in support and the crowd outside cheered." *

Probably not them, either. If you're driving by honking your horn in support, you probably don't feel like it's something that's being "imposed" on you. Could it be business interests he's referring to by "citizenry"?

"And it has been great for business as newlyweds throw their money at the neighborhood's florists, jewelry stores, liquor shops, bookstores and photo processors." *

Oh well. Beats me. Guess he's just a bigot.

Posted by Mike at 08:31 AM

February 26, 2004

How to know you're getting email from a virus

Today I got an email purporting to be from a pastor at a nearby Methodist church (not mine). It had a zip file attached, and the message read "you are sexy in this doc!"

I'm thinking that he probably didn't send that ;)

Posted by Mike at 09:33 PM

February 28, 2004

Yet another reason to love C#

This past week, a co-worker of mine tracked down a memory corruption bug in some C++ code of mine. The bug was that I had allocated memory using one of the numerous ways of allocating memory, but had failed to dispose of it using the matched method. To allocate something, you might use new, malloc, CoTaskMemAlloc, or QueryInterface (to get a COM object). The matched set of dispose operations would be delete, free, CoTaskMemFree, or Release. (I'm sure there are even more pairs -- those are just a few that I can think of off the top of my head.) Use the wrong dispose operation, and if you're lucky, the program will crash right away. In this case, of course, it didn't -- I had allocated a buffer with new, then it got disposed with CoTaskMemFree, and that worked most of the time. But when it did crash, the heap was corrupted for no obvious reason.

The cost of this bug? Days of QA being frustrated that the program crashed occasionally and trying (unsuccessfully) to find a reproducible case. More days for development to try to understand what was happening. More time for PMs fretting over the bug.

The bug was my fault, no doubt about that -- but why do I have to remember how I allocated something? Aren't computers supposed to keep track of this for me?

So, how does this work in C#? Simple: you don't ever even think about this. You allocate objects, and then later on, the garbage collector gets rid of them. How did you allocate the object? Doesn't matter.

And that's great. The computer knows how it was allocated, so it knows how to dispose of it. I don't have to think about it, which means that I can't screw it up. Since I can't screw it up, that's a bug that can't ever happen and won't cause us days of slip six months later in the project when the bug is finally triggered.

Posted by Mike at 12:21 AM | Comments (1)