Main

December 21, 2005

It's a mute point anyhow

File this under "things that make me want to quit the computer industry and become a florist":

iis loose-lose

"Loose"? Come on, people. Let's show a little hustle with the grammar, huh?

December 01, 2005

Words of software wisdom

If you're using malloc to instantiate a C++ class, I'd like to throw you in a sack and toss the sack in a river and hurl the river into space1.

Not knowing what an assertion is shouldn't dissuade you from being a developer, but not caring what an assertion is should.

Casting everything to Object is not the right way to fix compiler type warnings.

Comments can be used for purposes other than skipping over code that won't compile.

1 with apologies to Futurama 2ACV12, The Deep South.

November 22, 2005

Yogurt and security: a tale of two things

Security is hard.

When people talk about security, they usually mean that they want to prevent some action from being take against some object: “I want to prevent the money from being stolen.” “I want to only teachers to be able to change the grade records.” “I want to keep attackers from gaining entry to the computer system.”

Security is really about economics, weighing costs against benefits. The goal of security is to make the cost of taking some unwanted action against an object greater than the benefit of securing it plus the value of the object itself. If you say “I want to prevent the money from being stolen,” you really mean “I want it to be more expensive to steal the money than the total value of the money plus the cost to protect it.” That’s why we feel secure in keeping 50 dollars in our wallet, but we hire armored trucks and guards with shotguns to feel secure in dealing with 500,000 dollars.

Sometimes the simple and obvious security solution—guards with shotguns—is the right solution. With security, however, the devil is in the details.

Consider: “I want to make sure that the yogurt I buy isn’t spoiled.”

Continue reading "Yogurt and security: a tale of two things" »

November 10, 2005

Out the door

Visual Studio 2005 was the last product I worked on before I left Microsoft, and I'm very glad to see that it's been released and is available to the public now. It's especially nice to see that Microsoft decided to make the Express versions of all the VS products available for free download (at least for the next year). That means that if you want to try out one of all of the Express versions of the VS2k5 product, you can get them here:

Congratulations to my former teammates on shipping; I think it's a fine product. [via]

October 09, 2005

Because you never think to look there

If the iPod Nano fits in your change pocket, what percentage of people will wind up accidentally putting their iPod through the wash?

September 22, 2005

New Ook

A new version of Ook, v2.2, is out. Some things that changed:

  • Ook has a proper installer now.
  • Updated documentation
  • Fixed a bunch of bugs nobody but I noticed.
  • The source distribution now includes the regression test suite (such as it is)

Enjoy.

September 11, 2005

Introducing Ook

Since I posted my entry on Outlook's annoying IMAP behavior, I've gotten a few requests for copies of the program I wrote to automatically dismiss the bothersome error dialogs.

I was a little surprised that there were other people who find this behavior as frustrating as I do, but I suppose that's just more evidence as to the disservice Microsoft does to their customers by not fixing these obvious kinds of bugs. (I only wonder how many people have simply switched to another better IMAP client simply because of this issue.)

Anyhow, you wanted it, you got it. Introducing Ook: the Outlook dialOg Killer. It's a little .NET app that just sits around waiting for a dialog it likes and then gives it the ol' WM_CLOSE treatment. I spent some time cleaning up the app and the source code, and I decided to release both under the BSD license. I even put together some rudimentary documentation. Ook isn't the prettiest app or the best code I've ever written, but it gets the job done--for me, at least.

I hope some other people find it useful. I welcome any feedback you might have about it.

September 06, 2005

The hunter lies in wait for the rare North American dialog box

I've been reading "flow | state", a fascinating UI design weblog by ex-microsoftie Jan Miksovsky. His recent entry, "Situation normal, all fouled up" had me laughing, particularly because of this part:

People who use Outlook outside of an enterprise struggle along with support for POP mail that hasn't improved appreciably in years. While POP isn’t great, at least Outlook's POP driver is reasonably solid. Outlook's IMAP driver, on the other hand, appears to have been left for dead in the jungle, where it was raised by apes.

I (grudgingly) use Outlook's IMAP support for basically all of my email needs, and the lack of fit-and-finish there is terrible, bordering on the ridiculous. For example, as Jan notes:

Among its many deficiencies, the driver can’t properly cope if you use two different machines (say, at home and at the office) to check your email. This scenario is one of the reasons for IMAP’s existence, and most IMAP clients handle this situation gracefully: if they see another client is checking the mailbox, they wait for a while then try again. If you try to use Outlook this way, however, the IMAP driver throws up the following error:

Your IMAP server has closed the connection. This may occur if you have left the connection idle for too long.

This is such an incredibly stupid behavior that I have actually written a program that does nothing but wait for this dialog to appear and then dismisses it. (It works for Outlook 2003, and if anyone would like a copy just let me know.)

And to add insult to injury, the IMAP support in Windows CE has the exact same behavior! I have my smartphone setup to check my IMAP email as well, although at much less frequent intervals than Outlook. If the two devices (my phone and my desktop) happen to check for mail at the same time, the smartphone displays an error as well!

My friend Melinda is a tester in the Office organization, and I told her that if there was a position open for someone to test (or heck, to develop) the IMAP driver in Outlook, I might just consider applying for it. I was only half joking.

[Update:] I've made my Outlook dialog-killing app available for download.

August 23, 2005

On regressions

My friend Nate asked me via email:

You said: "I tend to get nervous when the answer to 'How often will the user exercise this code path' is 'all the time.' If nothing else, changing an often-used code path increases the risk of causing a regression. As much as I hate shipping software with a bug, I hate shipping software with a regression even more." What is a regression?

A "regression" (really, a "regression bug") is the recurrence of a bug that was previously fixed.

Consider a product in which Bug A was fixed weeks ago. Then, in the course of fixing another Bug B (which may be completely unrelated to Bug A), the fix causes Bug A (or a very similar bug) to re-appear in the product. The recurrence of the previous bug is a regression. And we would say "fixing Bug B caused a regression of Bug A."

Sadly, these bugs (i.e., regressions) are more common than you'd think, especially as the complexity of software grows, and more especially as the dependencies between different independent software teams become more numerous. (This is somewhat analogous to the increase in communications required as you add more people to a software project, as set forth in Brooks’ Law.)

Continue reading "On regressions" »

August 13, 2005

The anatomy of a bug, revisited

I suppose that the saying "the Internet never forgets" has some truth to it. (Maybe a more accurate version would be "Google never forgets" but I suppose the nice folks at MSN Search wouldn't like that one as much.)

As I posted a while back, I made the decision to remove all of my old entries when I gave this site its most recent makeover. This wasn't an attempt at hiding or erasing anything I had written, it was just a personal decision. Anyhow, Google (or more appropriately, Google's cache) never forgets. I still see a bunch of 404s in my logs from people following old broken links (Mark Pilgrim would not approve, but that's just tough).

Much to my surprise, I've actually gotten an emailed request asking about one entry I wrote in particular, called "The anatomy of a bug".

Someone was nice nice enough to ask for it, so I've re-instated the entry: The anatomy of a bug

I've never been one to ignore the (reasonable) demands of my readership, so there you go. Enjoy.