The Old New Thing
Practical development throughout the evolution of Windows.
Latest posts
The Top Gear Winter Olympics 2006
I know nothing about cars. Driving fast scares me. But I still enjoy the British car show Top Gear. The hosts clearly enjoy driving, and they don't hold back in their commentary. ("This was the first seven-seat 4×4 designed by someone who had children, not by an engineer who read about them in a book.") Last week was their Winter Olympics Episode, and it did not disappoint. They drove a biathlon (with Jeremy of course cheating unabashedly). They raced a Jaguar against a speed skater. Plenty of other events. But the highlight was sending a Mini down the ski jump. Watch it. (Warning: One-hour video.)
Why can't I disable the Cancel button in a wizard?
The macro lets you manipulate many of the buttons on a wizard, but the Cancel button remains elusive. Why can't you disable the Cancel button or the "X" button? Because our users tell us they don't like it. Observation of users in our labs and interviews with them reveal that wizards that disable the Cancel button cause them stress and frustration. Put yourself in their shoes: You've started some operation, the wizard asks you a few questions, you answer them, and then, uh-oh, it asks a question you can't answer, or you realize that you don't want to do it after all because the wizard told you that completing...
That $9 you got from the PayPal settlement? Taxable income.
If you're like many people, you signed up for the PayPal class action lawsuit and got around $9 for filing a claim against the Statutory Damage Fund. My read of IRS publication 4345 says that this constitutes taxable income. Note: This is just my personal opinion. Consult with your tax advisor before taking action. As for me, I reported it. Given my previous experience with the IRS, I'm willing to fork over the $3 to avoid getting audited.
Enumerating threads in a process
The tool helper library is sort of the black sheep of Win32. It grew out of the 16-bit TOOLHELP library, which provided services for system debugging tools to do things like take stack traces and enumerate all the memory in the system. The original incarnation of Win32 didn't incorporate it; it wasn't until Windows 95 that a 32-bit version of the tool helper library sort of got bolted onto the side of Win32. Disowned or not, the functions are still there, so let's give them a spin. Running this program prints a list of all the threads in the system (or at least all the ones you have access to). This i...
Games give you hand-eye coordination and spatial intelligence together with map-reading skills
Australian comedy group Tripod performs a song that I'm sure describes none of my readers in any way whatsoever. (Courtesy of my good friend The Knitty Professor.)
The performance cost of reading a registry key
The registry is a convenient place to record persistent cross-process data in a uniform and multi-thread-safe manner. It roams with the user if you store it in , and individual keys can be secured (even on systems that use FAT, which doesn't otherwise support security). But that doesn't mean that it's free. The cost of opening a key, reading a value, and closing it is around 60,000 to 100,000 cycles (I'm told). And that's assuming the key you're looking for is in the cache. If you open the key and hold it open, then the act of reading a value costs around 15,000 to 20,000 cycles. (These numbers are estimates f...
In pursuit of the message queue
In 16-bit Windows, every thread (or "task" as it was called then) had a message queue, end of story. In the transition to 32-bit Windows, this model broke down because Win32 introduced the concepts of "worker threads" and "console applications", neither of which had much need for messaging. Creating a queue for every thread in the system would have been quite a waste, so the window manager deferred creating the input queue for a thread until that thread actually needed an input queue. That way, threads that didn't use the GUI didn't have to pay for something they weren't using. But once you send a message or peek...
In pursuit of Michael Cassini, "the king of con"
Michael Cassini used forged documents to pretend that he was a Microsoft millionaire and managed to con people out of over $4.5 million before he was finally caught. Cassini claimed a net worth of $12.3 million, an annual income of $700,000; $8 million on account at Barclays Bank, and more. It was all right there on paper. And it was a complete lie, numbers plucked from the air, court records show. (Wow, $700,000, putting him in the nearly same range as Bill Gates, Steve Ballmer, and Jim Allchin, who in 2003 each earned approximately $850,000 in combined salary and bonuses.) The Seattle Times...
How the study of languages influences one's appreciation of international competition
One of the consequences of studying another language for me is that I develop some sort of mental connection with the people who speak that language, despite having no innate cultural basis for it. When I studied German, I found myself cheering for the German athletes in the Olympic Games. And in the men's 4x10,000 cross-country relay yesterday, I was cheering for the German team, the Swedish team, and the Norwegian team (especially the Norwegians), but it was all for naught as the Italians proved too much for all of them. (Yes, I haven't started studying Norwegian yet, but, as my Swedish readers already know...