2006 end-of-year link clearance

A few random links that I’ve collected. How to be an 31337 hax04 and send mail to a DL to which you don’t have rights. Suggestions on what to do if you have only one day to visit Seattle. Original anchor article by the Seattle Times staff. Broken down by category. Reader feedback. More feedback….


Stop the madness: Subdirectories of My Documents

As a follow-up to the difference between My Documents and Application Data, I’d like to rant about all the subdirectories of My Documents that programs create because they think they’re so cool. Visual Studio Projects My eBooks My Received Files Remote Desktops My Scans My Data Sources My Virtual Machines My Archives I’m sure there…


Linda Hunt’s advice for Oscar-winners

Academy-award winning actress Linda Hunt reminds newer Oscar-winners, “It’s not about you.”


The social skills of a thermonuclear device, part 3

Some years ago, a group different from the one I worked in invited me to “volunteer” to help them with serious problems they were having with their product. They asked to “borrow” me for one week so that I could magically resolve all their issues. I wasn’t really that familiar with their product, and I…


I can’t believe they actually can’t think of a name for the recent storm

The Seattle Times reports that the National Weather Service is inviting suggestions from the public on what to call the recent windstorm. They’re baffled because “the storm didn’t fall on a holiday.” Huh? The storm blew in on the evening of the 14th, but its effects weren’t really felt until the morning of the 15th,…


The first parameter to VerQueryValue really must be a buffer you obtained from GetFileVersionInfo

The documentation for the VerQueryValue function states that the first parameter is a “pointer to the buffer containing the version-information resource returned by the GetFileVersionInfo function.” Some people, however, decide to bypass this step and pass a pointer to data that was obtained some other way, and then wonder why VerQueryValue doesn’t work. The documentation…


The Old New Thing book will also be available electronically

We interrupt this religious holiday for an important commercial announcement. As a special Christmas present, my new best friends at Addison-Wesley sent me an advance copy of the dead-tree edition of my book. (Obligatory plug: Order it from Amazon. You know I want you to.) One commenter asked whether my book would be available electronically….


The evolution of version resources – corrupted 32-bit version resources

Last time we looked at the format of 32-bit version resources, but I ended with the remark that what you saw purported to be the resources of shell32.dll but actually weren’t. What’s going on here? The resources I presented last time were what the resources of shell32.dll should have been, but in fact they aren’t….


The unanswered Explainer questions

Slate’s Explainer column answers questions about current events. Sometimes they do it multiple times, as they did when I asked them how to pronounce the name Pinochet and they said Pee-no-CHAY, then later corrected themselves with pin-oh-CHET, and then again re-corrected themselves with Yes. Yesterday, the Explainer provided a selection of the questions they received…


The evolution of version resources – 32-bit version resources

Last time we looked at the format of 16-bit version resources. The 32-bit version is nearly identical, except that everything is now in Unicode. Each node is stored in the following structure (in pseudo-C): struct VERSIONNODE { WORD cbNode; WORD cbData; WORD wType; WCHAR wszName[]; BYTE rgbPadding1[]; // DWORD alignment union { BYTE rgbData[cbData]; WCHAR…