The Old New Thing
Practical development throughout the evolution of Windows.
Latest posts

On the ambiguity of uniqueness

The MSDN documentation for says [T]he implementation of GetHashCode provided by the String class returns unique hash codes for unique string values. This is another case of ambiguous use of the word "unique". The intended meaning is "for each string value, the same hash code is returned". Even though "unique" means "one and only one", the domain in which the term applies is often left unsaid, as here, where the domain of comparison is "all the hash codes returned for a specific string value". If you instead misinterpreted the domain as "all the hash codes returned for all string values", then you end up...

We Microsoft bloggers do talk to each other occasionally, y’know

Every so often, somebody will spam all the Microsoft blogs with a survey or a plea for a job or some other boilerplate message. Don't think you're fooling anyone. It's not like each blogger lives in a separate world and never talks to anyone else. In reality, we exchange information quite freely and even occasionally get together—usually under the aegis of our overworked leader Betsy—for an informal face-to-face (usually lubricated with beer). Which reminds me: That April get-together was held at Fadó Seattle, and at some point during the evening, I excused myself and went into the main p...

Experiencing the world from flight level 210

Here are some airline-related web logs that I follow. Ry Jones recommends FlightAware, a web site for all your planespotting needs.

Your debugging code can be a security hole

When you're developing your debugging code, don't forget that just because it's only for debugging doesn't mean that you can forget about security. I remember one customer who asked (paraphrased) We have a service, and for testing purposes we want to be able to connect to this service and extract the private data that the service is managing, the data that normally nobody should be allowed to see. That way, we can compare it against what we think the data should be. This is just for testing purposes and will not be called during normal operation. How do you recommend we do this? Remember that the bad guys...

On the inability to support hardware that nobody makes any more

Windows Vista will not have support for really old DVD drives. (The information below was kindly provided to me by the optical storage driver team.) When PC DVD drives first came out in 1998, the drives themselves did not have support for region codes but instead relied on (and in fact the DVD specification required) the operating system to enforce region coding, with the further understanding that starting on January 1, 2000 all newly-manufactured drives would support region coding in hardware rather than relying on software enforcement. For the purpose of this discussion, I will call the two types o...

The not-entirely-unwitting victims of the Daily Show interview

NPR's On the Media covers the world of the fake news interview, the leading example of which in the United States is The Daily Show with Jon Stewart. Despite what you may think, the people interviewed by the likes of Ed Helms and Samantha Bee actually know that they're being interviewed by a fake news show and go along with it anyway. But that doesn't mean that they know what's coming. In a related story, MSNBC looks at what happens to some of those interviewees after the episode airs. [Typos corrected 9:30am]

Using a physical object as a reminder

On our team, we have a mailing list where people can report problems. Those people could be testers from our team or they could be people from elsewhere in the company. Everybody on the team is expected to keep an eye on the messages and debug problems in their area. The job of monitoring the mailing list to ensure that every issue is ultimately addressed rotates according to a predetermined schedule, and in addition to receiving a piece of reminder mail at 4pm the business day before it's your turn, you will also find a Mickey Mouse ears hat on your desk when you arrive in the morning. I bought this hat in Dis...

Rory Blyth explains the difference between 720p and 1080i

720p vs. 1080i - The Great HD TV Debate EXPLAINED and SOLVED. So now you know.

Whimsical embarrassment as a gentle form of reprimand

A few months ago, I messed up a cross-component check-in and broke the build. I'm not proud of it. (In my excitement over finally having passed a few weeks' worth of testing requirements, I absently submitted only one of the components for check-in! My change was 99% within one component, and I forgot about the other 1%.) My submission cleared the "single-component check-in" queue at around 4:30am, and before I got a chance to fix the problem at 8am, a complex job was submitted into the "multi-component check-in" queue. That job failed, of course, because I neglected to update the second component. A few hours ...