The Ballard Locks will be empty this week

The Hiram M. Chittenden Locks (more commonly known as the Ballard Locks) are a common attraction in Seattle. But if you pay a visit for the next week, you’ll find that the large set of locks will be empty. And not just empty of boats. Empty of water. The chamber has been emptied of water…

9

Just because a method is called Refresh doesn’t mean that it refreshes what you want

Here’s a question from a customer: I made some changes related to my shell extension [details omitted], but the changes don’t show up in the Explorer window when I refresh it. Any suggestions on how to solve this problem? When we asked how they were refreshing the Explorer window, we were expecting something like pressing…

21

Welcome to the 2008 holiday shopping season

Yes, maybe you’re one of those crazy people who camps out in front of a store so you can be the first person in line to get this year’s hot toy, or so you can snag one of the doorbuster deals. But be judicious in your rush, because the police are out there too, and…

4

Not my finest hour: Getting instructions on doing something I’ve already done

Last year, I sent some email to the people who run our team’s check-in validation tool asking how I could add a new rule to the validation tests. One of the members wrote back, “You do it just like this guy,” and sent me a reference to another check-in that added a validation rule. That…

24

The cost-benefit analysis of bitfields for a collection of booleans

Consider a class with a bunch of BOOL members: // no nitpicking over BOOL vs bool allowed class Pear { … BOOL m_peeled; BOOL m_sliced; BOOL m_pitted; BOOL m_rotten; … }; You might be tempted to convert the BOOL fields into bitfields: class Pear { … BOOL m_peeled:1; BOOL m_sliced:1; BOOL m_pitted:1; BOOL m_rotten:1; ……

68

Yes, I filed an expense report for a hair dryer, why do you ask?

Back in the late 1990’s one of my colleagues (who is now in Office Labs—check it out, they’ve got some pretty cool stuff) filed an expense report for a hair dryer, and it was accepted. But what valid business purpose would there be for a tester to buy a hair dryer? At the time, my…

25

When you’re walking around a city, you usually forget to look up

When you’re walking around a city, you usually forget to look up. It takes a landmark building to prompt you to admire anything above the ground floor. For those in the Seattle area, the Seattle Times included a brief walking tour of Seattle architecture. The article doesn’t mention one of my favorites: The roll-on deodorant…

7

Consequences of the Explorer view model: If you create a view, then you succeeded, even if you’d rather fail

Commenter Anonymous asked why navigating to a drive with no media displays a dialog instead of showing the error message in the view. This is an unfortunate consequence of Explorer’s browser/view model. The shell browser binds to the IShellFolder and asks for the view by calling IShellFolder::CreateViewWindow. The view window calls IShellFolder::EnumObjects to figure out…

60

Rachmaninov had big hands: An illustration

Rachmaninov’s Prelude in C# minor, Op. 3, No. 2, performed as it is written, by classical music comedy duo Igudesman & Joo. I tried to learn that piece once. I didn’t last long.

19

The great thing about priorities is that you can always go one higher

The phenomenon I call priority inflation has spread to product planning documents as well. Back in the old days, there were three priority levels: Priority 1: must have. If you don’t accomplish a priority 1 item, you may as well just cancel the project because it ain’t shipping. Priority 2: should have. If you don’t accomplish a priority 2…

42