The Airline Screening Playset

Here I am sitting in the airport waiting for my flight to begin boarding. What better time to break out the Airline Screening Playset. I love the fact that the gun fits into the suitcase.


Sometimes the fault is not in our stars but in ourselves

An earlier name for Windows Server 2003 was Microsoft Windows .NET Server, and in the final weeks leading up the the product’s release, we received the following bug from a beta tester: When I call the GetVersionEx function on build 3773, the OS name is still reported as “Microsoft Windows .NET Enterprise Server”. I have attached…


The craft of UI design: flow|state

You can tell right away that Jan Miksovsky’s flow|state is about user interface design. I’ve had the pleasure of working with Jan when he was at Microsoft. Whereas I focus on the mechanics of making a user interface happen, Jan looks at the bigger problems of design and interface architecture. For example, in this entry…


Taxes: Geopolitics

One frequently-overlooked software “tax” is geopolitics. We’ve alread seen that the time zone and regional settings dialogs created international unrest. It appears that Google Maps failed to recognize the extremely sensitive issue of naming the body of water that lies between Korea and Japan, as well as stirring up international tensions with the way it…


Where does an IT guy from a major hotel chain stay at the PDC?

I believe it was Marc Miller who related this story to me at the PDC. He was chatting with someone whose name badge identified him as an employee from a major high-end hotel chain. Marc joked, “Well, I think it’s obvious which hotel you’re staying at.” “Oh no,” the gentleman replied. “They won’t let me…


Taxes: Hierarchical Storage Management

One of the taxes I alluded to some time ago when I broached the issues of software development “taxes” is Hierarchical Storage Management. The short description of Hierarchical Storage Management is that it is a way of archiving data transparently. When a file is due for archival, it is transferred to a slower (but less…


How to get Raymond to stop being interested in talking with you

I was at a party in New York City earlier this year, and a conversation went like this: Person: What do you do? Me: I’m a computer programmer at Microsoft. Person: <viciously> I hate you. If Miss Manners didn’t say so explicitly, I suspect she would nevertheless agree that snarling “I hate you” to somebody…


This video universally gets one of two reactions

When I show someone this web site and the videos they put together on how Microsoft main campus could be serviced by a system of self-driving overhead personal vehicles, I get one of two reactions. “That’s so cool!” “That’s so stupid!” (Or words to that effect. Use your imagination.) Yet another of their web sites…


What causes a program to be marked as "new" on the Start menu?

One of the features new in the Windows XP Start menu is that “newly-installed” programs are highlighted. Before discussing the rules, a quick backgrounder on why the feature exists at all. Research revealed that one of the tasks people had trouble with was installing a new program and running it. The step that the “new programs”…


Semaphores don’t have owners

Unlike mutexes and critical sections, semaphores don’t have owners. They merely have counts. The ReleaseSemaphore function increases the count associated with a semaphore by the specified amount. (This increase might release waiting threads.) But the thread releasing the semaphore need not be the same one that claimed it originally. This is different from mutexes and…