• The Old New Thing

    On the "Days without a pony" web page


    Reader Mark Eichin was curious about the "Days with a pony" web page. Here's what it would look (suitably redacted) if it were still operating:

    December 23, 2005: Still no pony

    From: Raymond Chen
    To: Xxxx Xxxxxx
    Subject: Laptop order
    Date: Mon, 27 Mar 2000 09:47:19 -0800

    I want a pony and a train set and an NEC Versa SX laptop (NECVS4E0E7A).

    Maybe you can help.

    Did I mention the pony?

    From: Order Management
    To: Raymond Chen
    Subject: Order Confirmation
    Date: Fri, 31 Mar 2000 14:28:19 -0800

    Your order has been confirmed. Please contact your Central Sales Representative if you have any questions.

    Customer PO#1174384
    Order Date3/31/2000
    Item # Mfg Part# Description Price
    A143831 VS4E0E7A-0300A0 NEC VERSASX PII400 #,###.##
    0373140 OP-570-69002 NEC BATT PK ###.##
    A021502 KTN-VSLX/128 KINGSTON 128MB OD V ###.##
    A025063 3CXM556 3COM MCD 56K CELLUL ###.##
    A025848 CE3B-100BTX XIRCOM CREDITCARD E ##.##
    A136063 OP-270-69002-1 NEC DVD PC ACCELERA ###.##
    Total #,###.##

    From: Raymond Chen
    To: Xxxx Xxxxxx
    Subject: FW: Order Confirmation
    Date: Fri, 31 Mar 2000 15:12:19 -0800

    What, no pony?

    The laptop itself is still operational, assuming you don't need to see anything. The LCD backlight died a few years ago, so you either have to type blind or work in a really bright room. For some reason, the video output also died, so the standard fallback of using it as a very small desktop machine (with external keyboard and monitor) doesn't work. As a result, the machine sits in a drawer unused.

    [Raymond is currently away; this message was pre-recorded.]

  • The Old New Thing

    Why do up-down controls have the arrows backwards?


    When you create an up-down control (some people call a "spinner" control) in its default configuration, the up-arrow decrements the value and the down-arrow increments it. Most people expect the up-arrow to increment and the down-arrow to decrement. Why is it backwards?

    The up-down control is a victim of Windows' reversed y-axis.

    Mathematically, the (0, 0) coordinate should be at the bottom left corner of the screen (and in fact that's where OS/2 puts it), with y increasing as you move up the screen. Windows, on the other hand, puts the (0, 0) coordinate at the upper left corner, with y increasing as you move down the screen.

    What does that have to do with anything?

    The up-down control can be positioned horizontally or vertically. Let's first look at the less problematic horizontal configuration. Windows and mathematics agree that the x coordinate increases to the right, and the right-arrow (the arrow with higher x-coordinate) causes the value to increase. (Let's leave right-to-left languages out of the picture for the purpose of this discussion.)

    Once you have the horizontal version of the control working, converting it to a vertical control is a simple matter of interchanging the x- and y-axes.

    That's why the up-arrow decreases the value. The up-arrow points towards smaller y-coordinates and consequently decrements the value.

    It's perfectly logical and simultaneously counter-intuitive. (It's slightly more intuitive if you imagine the value attached to the up-down control as controlling the y-coordinate of an imaginary object on the screen. In that case, clicking the up-arrow causes the y-coordinate to decrease and the object moves up the screen.)

    Fortunately, this wackiness doesn't last long, because the moment you change the range of the up-down control from the (not very useful) default of 0–100 to whatever you actually need, the arrows behave "normally" again.

    Perhaps intuitiveness should have won out over logic. But what's done is done, and, as noted above, the problem goes away soon enough.

    [Raymond is currently away; this message was pre-recorded.]

  • The Old New Thing

    The office disco party


    One of the long-standing traditions at Microsoft is to play a prank on someone's office while they're away on vacation. You can imagine what most of these pranks are like, filling someone's office with packing peanuts or other materials, or relocating their office to an unlikely part of the building (the bathroom, the cafeteria), or something more subtle like mirror-reversing all the furniture in the office. Redecorating an office is a common theme, such as turning their office into a French bistro or a golf course (with real grass).

    One particularly memorable office redecoration was from 1996 or so. One of the managers, let's call him "Bob", had a bit of a reputation for being "cool" in a nightclubby sort of way. While Bob was away on vacation, his team set to work. They emptied his office completely, painted the walls black, removed the ceiling tiles to give it that "industrial" look, and installed a disco dance floor, disco lights, and a stereo with turntable.

    It was Disco Bob's Party Palace.

    When Bob returned, there was quite a happenin' disco party waiting for him.

  • The Old New Thing

    "Pro forma" was so 1990's


    "Non-GAAP" is the new "pro forma".

    Remember the exciting dot-com boom days? Everybody was reporting "pro forma" results. Pro forma in the 1990's turned into a euphemism for "We just made this stuff up". But after the dot-com bust and a series of accounting scandals, the phrase pro forma turned into a bad word on Wall Street. People swore off that pro forma nonsense and returned to the good old GAAP numbers.

    But we all knew that that wouldn't last for long.

    But people aren't being so cheeky as to use the phrase pro forma. No, the magic phrase is now "non-GAAP". Punch that into your favorite search engine and watch all the people reporting earnings that do not conform to generally accepted accounting practices.

    Let's see how long before this ruse finally collapses. And how much money people lose as a result.

  • The Old New Thing

    Why does Windows setup lay down a new boot sector?


    Why does Windows setup lay down a new boot sector? Because the alternative is worse.

    You would expect that after installing an operating system, the operating system should boot. If your boot sector is damaged, say because this is a brand new hard drive with no boot sector, or because it was infected with a boot sector virus, you expect the operating system's setup program to replace the boot sector with a good one. If it didn't, you'd have an operating system that didn't boot.

    Not the greatest introduction to a new operating system.

    I know some people are going to suggest, "Why doesn't the setup program ask before overwriting the boot sector?" But think about it. It's Christmas Day, you're installing Windows XP on your computer, you go through the setup process, and it asks you a question you can't answer. "Gosh, the computer says that I have a custom boot sector. It says that this could be for legitimate reasons, or it could be due to a virus. How the heck am I supposed to know the difference?" That's assuming they even read the dialog. A much more realistic scenario is, "Eek! The computer is asking me a scary question! How do I cancel out of this? I hate computers. They're so hard to use."

    Yes, this means that if you are an ultradweeb with a custom boot sector, you will lose it when you install Windows. But Windows isn't picking on you. It even destroys itself. If you take a Windows XP machine and install Windows 2000 onto it, the Windows 2000 setup program will lay down a new boot sector that knows how to boot Windows 2000 but doesn't know about Windows XP. You'll have to restore the Windows XP boot files to restore that functionality.

    [Update 9am: Even if Windows Setup did give you the option of "don't overwrite the boot sector" you still wouldn't like it. Windows Setup would get to the point where it lays down a new boot sector, and it says, "Ooh, an unrecognized boot sector, and the user said they want to leave it alone. Okay, I won't touch it. Now, how do I tell the foreign boot sector where I installed this operating system?" Since the authors of Windows Setup are not clairvoyant, they don't know what kind of boot sector you're going to have, so they won't know how to tell that foreign boot sector, "Please add 'Windows' to the list of known operating systems, and here is how you start it." The result: You just installed an operating system and have no way to run it.]

    Things are a little better starting with Windows XP Service Pack 2 and Windows Server 2003 Service Pack 1, though. Those and future versions of Windows setup check the version of the NTLDR file and will leave a newer version of the boot loader intact rather than overwriting it with an older version. Let's just hope that you're not installing because you need a fresh boot sector...

  • The Old New Thing

    Music to slip into a playlist to see if anybody is listening


    When I was visiting my brother earlier this year, I found this CD in my sister-in-law's collection. Oy vey's mir! There's just something fundamentally wacked out about the whole idea. (Maybe that's why I liked it. Here's what other people think.)

  • The Old New Thing

    Beware the Image File Execution Options key


    Beware the Image File Execution Options key (more). Its power can be used for evil as well as for good.

    Its intended use is to force a program to run under a debugger regardless of how it is launched (and secondarily to alter how the system treats the program). It's handy if you need to debug a program "in the wild" rather than under the controlled environment of your favorite IDE. For example, you can use it if you want to debug how a program runs when it is launched by some other program you can't debug.

    Two things people often forget:

    • If you err in specifying the debugger, the program won't launch at all. For example, if you get the path to the debugger wrong or if you subsequently uninstall the debugger, you'll get ERROR_FILE_NOT_FOUND when you try to run the target program since the system can't find the debugger.
    • Remember to delete the entry for your program when you no longer need it. Otherwise you'll wonder why the debugger keeps launching for no apparent reason.

    Evil can be done with the Image File Execution Options key. Malware can install themselves as the "debugger" for a frequently-run program (such as Explorer) and thereby inject themselves into the execution sequence.

    Note that the ability to use the Image File Execution Options key for evil purposes is not a security hole. To modify the key in the first place requires administrator permissions. Consequently, anybody who can exploit this feature already owns your machine.

  • The Old New Thing

    The Dead Sea Scrolls are coming to Seattle


    Coming to the Pacific Science Center in September 2006 the Dead Sea Scrolls, "considered by many experts to be the most significant archaeological find of the twentieth century". Tickets went on sale yesterday. Volunteer opportunities also available.

  • The Old New Thing

    When hyperthreading is enabled, all the processors are virtual


    A common problem when answering technical questions is that people sometimes ask a question that can't or shouldn't be answered because it is based upon a misunderstanding. What's particularly frustrating is when they insist that you answer their question as posed, even when you try to explain to them that their question is itself flawed.

    It's as if somebody asked you the question, "Do I have to use the remote control to lock my kangaroo?" You could answer the question literally ("No"), but the person asking the question would walk away with the wrong conclusion ("Wow, kangaroos are self-locking!"). Robert Flaming recalls a similar analogy I made with balsa wood and nails.

    Here's an example of a question that betrays misunderstanding.

    I just enabled hyperthreading on my dual-Xenon machine, and Task Manager now shows four processors instead of two. Which of them are the physical processors and which are the virtual ones?

    When you turn on hyperthreading, each individual physical processor acts as if it were two virtual processors. From Task Manager's point of view, the computer has four virtual processors. The two virtual processors associated with each physical processor are completely equivalent. It's not like one is physical and one is virtual. They are both virtual and compete equally for a share of the one physical CPU. When you set processor affinities, you set them to virtual processors.

    To find out which virtual processors are associated with the same physical processor, you can call the GetLogicalProcessorInformation function.

  • The Old New Thing

    A note to headhunters: Check your links


    If you're going to try to recruit me, you might want to check that the links in your email actually work.

    Just sayin'.

    I'm going to mock you regardless, but you should at least make me have to work for it.

Page 349 of 450 (4,497 items) «347348349350351»