June, 2008

  • The Old New Thing

    There are only twelve function keys, and who says there's somebody there to push them?


    One of the proposals for adding hidden features to Windows Setup is to have a bunch of hidden function keys, one for each hidden option. Well, first of all, there are only twelve function keys and there are way more than twelve possible Setup features. (Yes, there may be a few function keys still active during Setup, but they exist only for compatibility purposes. No new Setup features involve function keys as far as I'm aware. And yes, there are keyboard layouts with more than twelve function keys, but think about what you're saying in context: "Yes, Setup should use function keys that are not available on most keyboards.")

    Furthermore, there's no guarantee that there's somebody sitting in front of the computer when it's running Setup. Indeed, 90% of the time, there is nobody there at all; Setup is running on a factory floor somewhere churning out computers day and night.

    Adding a command line option to Setup also runs you into problems: The command line gradually gets bloated with a bajillion options. After taking your several dozen customizations and cramming them onto the command line, you'll find yourself having to type 500 characters onto the command line to get what you want, and woe unto you if you typo one of those 500 characters. Can you imagine if somebody said, "To set up Windows the way I like, I simply type the following command," followed by a command that goes on for six lines? "This is total crap. I'm expected to type this monstrosity?"

    Windows Setup for quite a long time has supported so-called unattended installation. You build a so-called unattend file and pass it to the setup program as a single command line parameter, something like setup /unattend:unattendfile. (I forget the command line exactly; you can go look it up yourself.) Now somebody can post their favorite settings onto their Web site, and you can download it and pass it to Setup.

    For many years, this unattend file took the form of an INI file, with [Sections] and Key=Value entries. In Windows Vista, the Setup folks threw away the old parser and switched to XML. Because XML is the wave of the future, right? (I can imagine Steve Ballmer jumping up and down shouting "XML! XML! XML!") I don't know whether they've actually done it, but in principle, the switch to XML means that they can write a schema for the unattend file, and then all the standard XML validation tools become available.

  • The Old New Thing

    Money: The new plagiarism


    It appears that the country of Burundi used a freelance photographer's image on their currency without permission. (If the article goes down, BoingBoing saved a side-by-side comparison for your inspection.) The article adds that

    Fajack says he's talked about his case with several lawyers, editors and people experienced in photography and none of them has heard of any other infringement cases involving currency.

    I guess nobody remembered that the initial design for the Euro included images taken from the book Bridges: Three Thousand Years of Defying Nature.

    The theory must have been that there's no room for footnotes on a banknote. (Though the Bank of England found room for a copyright notice.)

    (On a tangential note, Kazakhstan misspelled the word "bank" on their notes.)

  • The Old New Thing

    Why are DLLs uninitialized in the "wrong" order?


    This is really just a corollary to Why are DLLs unloaded in the "wrong" order. Exactly the same logic that explains why DLLs are unloaded in the "wrong" order also explains why they are uninitialized in the "wrong" order. Once you understand the first issue, the second comes for free; just change DLL_PROCESS_DETACH to DLL_THREAD_DETACH in your analysis.

    Apply the logic to the scenario posed in this comment and you'll see why it too is flawed.

  • The Old New Thing

    Million Dollar Password: At least it shares a name with the original


    Password was one of the classic game shows. Its methodical pace encouraged thoughtful play, as opposed to today's game shows which appear to rely on dramatic music and ominous spotlights for their appeal.

    This is not a clip from the game show but rather a scene from the comedy The Odd Couple in which the two characters are contestants, and as you might expect from a sitcom, they fail spectacularly. But even from the clip, you can get a pretty good feel for how the game is played.

    The new version is nothing like it. It's really "try to guess a word which your partner describes in three words."

    The strategy of deciding whether to "pass or play": Gone.

    Picking up a miss from the opponent: Gone.

    It sounds like the folks at BuzzerBlog aren't big fans of the remake either.

  • The Old New Thing

    Why does OpenProcess succeed even when I add three to the process ID?


    A customer noticed that if you add three to a process ID and pass it to the OpenProcess function, it still succeeds. Why is that?

    Well, first of all, I need to say up front that the behavior you're seeing is an artifact of the implementation and is not part of the contract. You're passing intentionally invalid parameters, what did you expect? The context of this question is "We're seeing this behavior and we can't explain it," not "We're using this trick and want confirmation that it's okay."

    Now, you actually know the answer to this already.

    As we saw earlier, for convenience, the Windows NT kernel uses the handle manager to parcel out process and thread IDs, and the handle manager ignores the bottom two bits of handles. Therefore, adding three has no effect on the process-id-to-object mapping.

    This mechanism is peculiar to kernels based on Windows NT. Versions of Windows derived from the Windows 95 kernel have a different mechanism for mapping process IDs to processes, and that mechanism is unflinchingly rigid. If you add three, the OpenProcess function will reject your process ID as invalid. And I don't know how Windows CE handles it.

    Again, I wish to emphasize that the behavior you see in Windows NT-based kernels is just an implementation artifact which can change at any time. Who knows, maybe once they read this entry, the kernel folks will go in and change OpenProcess to be even more strict.

    Pre-emptive Yuhong Bao comment: "Process IDs on Windows 95 are a pointer to an internal data structure XORed with a constant to obfuscate them."

  • The Old New Thing

    Portugal TechDays 2008: A report


    Back in March, I agreed to make a brief appearance at Portugal TechDays 2008. My arrival was delayed due to heavy traffic: I had taken the number 15 tram, which was jam packed, and the traffic on the road didn't help either. And then when I found the building labelled Centro de Congressos, I found the doors locked. That's because the big sign facing Rua da Junqueira is not the main entrance. The main entrance faces Travessa da Guarda. But of course, when you're standing on Rua da Junqueira, you don't know that. And right next to the big sign is a door. Which is locked. And there's no sign on the door that says "You idiot, this is the side entrance. The main entrance is around the corner over there."

    All these problems getting to (and finding the entrance to) the meeting hall meant that I had eaten into my entire scheduling buffer and even gone a few minutes over. Fortunately, we operate on Portuguese Time and people were still settling in when I rushed onto the stage.

    The conference organizers had sent me a slide deck template. It went roughly like this:

    • Cover page - talk title, speaker name
    • Pages labelled Do not remove
    • A template labelled Agenda
    • A place to insert the bulk of the slides.
    • Template pages labelled things like Other Resources, Call to Action, Q&A.
    • Pages labelled Do not remove

    My completed slide deck therefore looked like this:

    As a result, my slide deck consisted almost entirely of the Do not remove mandatory content.

    When I was invited, the conference organizers had told me that I had a one-hour time slot and when I arrived, I asked, "So this is one hour, right?"

    "One and a half hours" was the reply.

    Oh, okay. Fortunately, I brought about two hours of material, so I had plenty of content to slip back in, but I had to adjust my pacing so I hit my conclusion at the right time. I also had to be elsewhere after the talk, and extending my talk by another half hour meant that it would be a tight squeeze getting to my next scheduled event on time.

    At about the one hour mark into my talk, people started leaving. Gosh, I'm sorry my stories sucked. Maybe they were too technical, or they were not technical enough? I don't know, because people who leave early don't leave feedback.

    I wrapped up at the 90 minute mark, got my polite applause, and packed up my things to leave. Maybe if I rushed, I could catch the 15 tram back to my hotel in time.

    A conference organizer person asked if I could do a short interview for a Webcast. Okay, we set up the camera and the microphone, and we were rolling. The interviewer then asked questions that I obviously can't answer, like "So tell me when Windows 7 is going to ship." I pointed out to the interviewer, "You know I can't answer that."

    "Yes, I know but our viewers want to know."

    As if I'm going to say, "Oh, I'm sorry, I didn't realize. Let me talk about something I'm not authorized to talk about so your viewers won't be disappointed."

    Fortunately, I have a standard story that I tell whenever an interviewer asks me a question I obviously am not allowed to answer.

    The interviewer continued by asking questions that I had answered in my talk. I thought this was strange, but afterwards I realized that the people who will watch the Webcast probably didn't see my talk. After all, who wants to see me any more than necessary?

    Each of the questions after the first two was of the form, "One last question. Blah blah blah blah?" I think there were five "last questions".

    The interview took about a half hour, and now I had no chance of making it back to my hotel by public transit. I hailed a cab and just my luck, I got an older cabbie whose farsightedness prevented him from reading the address I had written down on a slip of paper. I was forced to try to read it to him by reverse-engineering on the fly the pronunciation rules for the Portuguese language based on what I could remember from how the station names were announced on the subway speaker system.

    By some miracle, I was successful.

    What my cabbie lacked in short-distance vision he more than made up for with blood pressure. He drove aggressively through the streets, liberally honking his horn at everything in his way. The pictures I took out the cab window all came out blurry. I arrived at my hotel with plenty of time to spare.

    I glanced at the conference schedule included in my speaker ID tag. My talk was scheduled for 60 minutes after all. That's why people were leaving. And they must think I'm a jerk for going over my time slot.

    And I never did get my speaker shirt.

  • The Old New Thing

    Isn't the Learning Annex for total losers?


    Marketplace's Cash Peters pays a visit to The Learning Annex, home to classes like Bending Spoons with Your Mind and Lap-Dancing 101. But he signs up for How to be a TV producer. Listen to the story and you can save yourself twenty bucks.

  • The Old New Thing

    Why has my clipboard stopped working?


    You may be minding your own business and discover that your clipboard has stopped working. You try to copy something to the clipboard, and it's not there. You try to paste something from the clipboard, and nothing comes out. What's going on?

    The clipboard is a shared resource. (More specifically, shared among programs that run on the same desktop.) The window manager automatically closes the clipboard if a process terminates while it has ownership of the clipboard, but if a program opens the clipboard and simply forgets to close it for whatever reason, the clipboard will remain unavailable to other programs until that program exits.

    If you find yourself in this situation, and you want your clipboard back, you'll have to start exiting programs until you find the one that has been holding the clipboard locked. The Terminal Services Team discussed one case where the rdpclip program can become the "bad guy" that locks up the clipboard. (There's a second part to the story for those who can't get enough.) Or it might be a Virtual PC Virtual Machine Addition.

  • The Old New Thing

    Food products that are offenses against nature: Bisquick Shake 'n Pour


    Yes, it's another entry in the extremely sporadic series of food products that are offenses against nature. Today it's the incorrectly-punctuated Bisquick Shake 'n Pour.

    For people for whom adding a half cup of milk and one egg to two cups of Bisquick powder is too complicated, now they've even dehydrated the milk and egg and pre-measured the mix, so all you need to do is add a measured amount of water. Because you know, cracking an egg is so time-consuming.

    My colleague who tips me off to all the foods that are offenses against nature let me know by email that even she, mother to a three-week-old baby, was able to somehow pull it together and measure out the milk and crack the egg. "Oh wait," she corrected herself. "I made the pancakes from scratch."

  • The Old New Thing

    Dlaczego Microsoft zatopił Polskę?


    A colleague of mine stopped by my office to tell me that he got a telephone call from his father in Poland asking him why Microsoft sunk Poland. My colleague was somewhat baffled by this question, since his father isn't a computer nerd, but his father explained that he saw the story on the front page of the newspaper. Apparently, the story ran in the largest Polish newspaper, but it doesn't appear that they credited their source, demonstrating that quality journalism is hard to find in any country. My guess is that the jump into Poland came from this page, which does credit my article. I'm just guessing, though, since I can't read Polish.

    I just found it weird to see my stuff spreading all the way to general-audience newspapers in Poland.

Page 3 of 4 (32 items) 1234