April, 2008

  • The Old New Thing

    News flash: Alumni give to colleges and universities to get their kids admitted


    April is the time of year when applicants to colleges and universities in the United States typically find out whether they have been admitted or not.

    Researchers have determined that alumni give money to colleges and universities in order to increase the likelihood that the school will admit their children.

  • The Old New Thing

    The double-click time tells the window manager how good your reflexes are


    The double-click time is sort of the dialog unit of time. It's used as the basis for many user interface time values that don't have their own custom setting. Here are just a few examples, along with the values you get if you leave the double-click time at its default of 500ms:

    • The default tooltip timeouts are based on the double-click time. (Initial: 0.5s, autopop: 5s, reshow: 0.1s.)
    • Incremental searching in list boxes resets after 4 times the double click time (2s).
    • When you click and hold over a scroll bar arrow, autorepeat begins after 4/5 of the double-click time has elapsed (.4s), and autorepeat occurs at one tenth of the double-click time (0.05s = 20 repeats per second).
    • The menu speed used to be 4/5 of the double click speed (0.4s), but now it has its own setting (SPI_SETMENUSHOWDELAY).

    If you go into the mouse control panel and speed up your double-click speed, then you'll find that other user interface operations tend to speed up as well. The double-click time is a sort of barometer for how good the user's reaction time is. If you set it too low, you may find that things just happen too fast.

  • The Old New Thing

    The concrete pedestrian bridge in the Washington Park Arboretum claims another victim


    Spanning the main road through the Washington Park Arboretum is a pedestrian bridge, formally known as the Arboretum Sewer Trestle (you don't need me to explain why). The bridge is marked Clearance: 9'0". There are warnings posted far in advance. There is even a laser sensor above the road which triggers flashing yellow warning lights if an over-height vehicle approaches.

    Despite all these precautions and warnings, people still crash into the bridge with alarming frequency, at least according to one of my colleagues who drives under that bridge every day. (If you ask the Department of Transportation—as my colleague did—how often vehicles strike the bridge, you'll get a number far, far below the actual number. Probably because most of the incidents go unreported.) The evidence by the side of the road suggests that the accidents are usually caused by somebody who forgot that he's pulling a U-Haul behind him.

    Or maybe it was a bus carrying a high school softball team.

    The driver of the bus was blindly following the instructions of his GPS navigation system and never saw the flashing lights or the clearance sign. He figured the route must have been good, because he set the GPS to bus mode. You can read the article to find out why that didn't work.

    Remember folks, it's great that you have a computer to give you directions, but it's still your responsibility to drive the vehicle.

    Bonus chatter: My bridge-obsessed colleague also introduced me to the Om Nom Nom Nom meme by forwarding a picture of the crash site with a pair of googly eyes drawn on the bridge overpass. Here's an interview with the source of the phrase om nom nom nom.

    Oh, and my bridge-obsessed colleague also wishes somebody would install a web-cam pointed at the bridge: When the laser detects an imminent collision, it starts recording!

  • The Old New Thing

    The contradictory dialog: Click Finish to begin


    I was installing a program and its setup wizard said, and I am not making this up,

    Click Finish to begin installation.

    But wait, the weirdness doesn't end there. After you click Finish, the program installation completes, and then you get another page that tells you to click Close.

    This is misuse of the Finish button. Finish does not mean Almost finished. If the user clicks the Finish button, that's it. No more wizard pages. It's finished.

    The last two wizard pages should have read

    Click Next to begin installation.
    You have successfully installed LitWare 2.0. To close this wizard, click Finish.
  • The Old New Thing

    Fell the force


    Engrish, the whimsical term applied to poorly-translated or downright bizarre English used in non-English-speaking countries, is not restricted to East Asia, although the most well-known examples certainly come from there.

    While in Lisbon, I saw someone wearing a t-shirt that said Fell the force.

  • The Old New Thing

    Windows doesn't close windows when a user logs off; that's your call


    Commenter Peter Kankowski asks why Windows doesn't send WM_CLOSE and WM_DESTROY messages when the user logs off.

    That's what WM_ENDSESSION is for. To tell the program that the Windows session is ending, and that you should get done whatever last things you want to get done before the world comes to an end.

    Windows doesn't send the WM_CLOSE message because sending WM_CLOSE becomes complicated once there is more than one window. What is the correct order for sending WM_CLOSE when there are multiple windows? Besides, many programs don't respond to WM_CLOSE by closing. Instant messenger programs typically treat WM_CLOSE to mean "hide" rather than "close". Notepad displays an unsaved data warning when you close the window. And of course, you can't close a disabled window.

    As we saw with Notepad, sending a WM_CLOSE would just repeat actions that were taken during WM_ENDSESSION, which is particularly bad because the time for user interaction is over. WM_QUERYENDSESSION is the time to say your last good-byes. If Windows sent the WM_CLOSE message during logoff, Notepad would display a "You have unsaved changes. Do you want to save this file?" message after the user already said, "Go ahead and exit without saving," when Notepad handled the WM_QUERYENDSESSION message. "Stupid computer. Why is it asking me this question again?" Even worse, what if the user says "Cancel"? It's too late; shutdown has begun. Your chance to cancel it was back when you got the WM_QUERYENDSESSION message.

    Asking for the WM_DESTROY message is even weirder, since that message is not sent explicitly but is rather generated when DestroyWindow is called. You can't just send it outside of a destroy sequence.

    Besides, why spend your time closing windows when the session is about to go away anyway? Ooh, let me clean up this and destroy that, I know you asked to shut down, but this'll just take a few seconds. It's like taking the time to steam-clean the rugs before you demolish the building. Wasted effort.

    Now, you might respond, "Yeah, sure, these are problems, but we should just require programs to address them, such as not putting up additional UI if they get a WM_CLOSE after a WM_ENDSESSION." Of course, this argument contradicts the rationale for the original question, since the question was inspired by programs that didn't handle the WM_ENDSESSION correctly in the first place! "We have a problem with programs that don't handle the WM_ENDSESSION message correctly. Solution: Make WM_ENDSESSION more complicated."

  • The Old New Thing

    Special advance screening of five seconds of True Lies


    In response to Perhaps the movies made too literal a translation, Steve Sinofsky reminded me that everybody at Microsoft got a special advance screening of the movie True Lies, or at least five seconds' worth.

    The computer that Arnold Schwarzenegger's character infiltrates runs the Arabic version of Windows 3.1, and the Arabic version of Word 6 appeared on screen as well. Steve was in charge of the Office division at the time and managed to get permission to show a clip from a rough cut of the movie at the 1994 company meeting. He explains, "I had to run to the airport and pick up a beta tape, show it at the meeting, and then return it via air-courier."

    It was like some sort of spy movie.

    Oh, wait.

  • The Old New Thing

    Proto-Microspeak: Center of value


    I have only one citation, so it may not be proper Microspeak.

    With all of these features covering the scenario end to end, we wanted to create a new center of value.

    I still don't know what it means.

  • The Old New Thing

    Baby Names for Dummies


    While waiting in the check-out line at the local grocery store, I saw a book titled Baby Names For Dummies and amused myself for wondering what its goal was.

    1. Maybe it was a book for dumb people who don't understand what baby names are.

      "You see, babies, like many things, have names. It is considered polite to remember the name of a baby when you are introduced. Baby names are often very similar to names for adults. For most people, their adult name is the same as or very similar to their baby name."

    2. Maybe it was a book for dumb parents, looking for a name for their child.

      "You just had a baby, huh? And the hospital gave you this form asking you to give it a name. What's up with that? This book will help you fill out that form." (Though, personally, I think it would be better if the book went something like this: "Are you a dummy? Thinking of having children? Don't do it.")

    3. Maybe it was a book for giving names to dumb babies.

      "So you have a dumb baby and you have to give it a name. If it's a boy, you might want to consider Cletus." (My apologies to fine people named Cletus.)

    Bonus chatter: One of my colleagues proposed a fourth interpretation: Maybe you are a store employee who dresses mannequins and you want help coming up with cute names for them. (On a related note, you might be ventriloquist who is starting an act with a dummy that is a baby.)

  • The Old New Thing

    One-line batch script to delete empty directories


    You don't need a whole 260KB program to do it. This batch file does the trick just fine:

    for /f "usebackq" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"

    I call it rdempty.cmd.

    This is the long-forgotten follow-up to Performing an operation in each subdirectory of a directory tree from batch. We're using the same technique as in that article, but pumping the result through "| sort /R" to reverse the order of the enumeration so we enumerate the directories bottom-up rather than top-down. This is important for deleting empty directories because you have to remove the subdirectories before you remove the parent.

    Disclaimer: I doubt anybody actually enjoys working with batch files, but that doesn't mean that tips on using it more effectively aren't valid. If you would rather gouge your eyes out than use the confusing command prompt batch language, then you are more than welcome to use the scripting language of your choice instead. At no point in this article am I saying that this is the only way or the best way to do it. But it's definitely smaller than a 260KB program.

Page 2 of 5 (41 items) 12345