• The Old New Thing

    Your profiling tools can manufacture performance issues where there were none


    When analyzing the performance of a program, you must be mindful that your performance analysis tools can themselves affect the operation of the system you are analyzing. This is especially true if the performance analysis tool is running on the same computer as the program being studied.

    People often complain that Explorer takes a page fault every two seconds even when doing nothing. They determine this by opening Task Manager and enabling the Page Faults column, and observing that the number of Page Faults increases by one every two seconds.

    This got reported so often that I was asked to sit down and figure out what's going on.

    Notice, though, that if you change Task Manager's Update Speed to High, then Explorer's page fault rate goes up to four per second. If you drop it to Low, then it drops to one every four seconds.

    If you haven't figured it out by now, the reason is that Task Manager itself is causing those page faults. Mind you, they are soft faults and therefore do not entail any disk access. Every two seconds (at the Normal update rate), Task Manager updates the CPU meter in the taskbar, and it is this act of updating the CPU meter that is the cause of the page faults.

    No Task Manager, no animating taskbar notification icon, and therefore no page faults from Explorer when idle.

    (A similar effect was discovered by Mark Russinovich when he found that Process Explorer's polling calls to the EnumServiceStatusEx function was triggering repeated registry access.)

  • The Old New Thing

    Jensen Harris joins the 7am club


    My colleague Jensen Harris from the Office User Interface team has joined the 7am club, posting fascinating glimpes into Office history and the upcoming version of Office code-named "Office 12". And they come out at 7am every weekday.

    Then again, maybe he's not real either. Maybe he's some kind of a robot.

  • The Old New Thing

    Running old programs in a virtual machine doesn't necessarily create a good user experience


    Many people suggest solving the backwards compatibility problem by merely running old programs in a virtual machine. This only solves part of the problem.

    Sure, you can take a recalcitrant program and run it in a virtual machine, with its own display, its own hard drive, its own keyboard, etc. But there are very few types of programs (games being a notable example) where running them in that manner yields a satisfying experience. Because most programs expect to interact with other programs.

    Since the virtual machine is running its own operating system, you can't easily share information across the virtual machine boundary. For example, suppose somebody double-clicks a .XYZ file, and the program responsible for .XYZ files is set to run in a virtual machine.

    • Start the virtual machine.
    • Log an appropriate user on. Hopefully, the user has an account in the virtual machine image, too. And of course the user will have to type their password in again.
    • Once the system has logged the user on, transfer the file that the user double-clicked into the virtual machine's hard drive image somehow. It's possible that there are multiple files involved, all of which need to be transferred, and the identities of these bonus files might not be obvious. (Your word processor might need your spelling exceptions list, for example.)
    • Run the target program with the path to the copied file as its command line argument.
    • The program appears on the virtual machine operating system's taskbar, not on the main operating system's taskbar. Alt+Tab turns into a big mess.
    • When the user exits the target program, the resulting file needs to be copied back to the main operating system. Good luck dealing with conflicts if somebody changed the file in the main operating system in the meanwhile.

    The hassle with copying files around can be remedied by treating the main operating system's hard drive as a remote network drive in the virtual machine operating system. But that helps only the local hard drive scenario. If the user double-clicks a .XYZ file from a network server, you'll have to re-map that server in the virtual machine. In all cases, you'll have to worry about the case that the drive letter and path may have changed as a result of the mapping.

    And that's just the first problem. Users will expect to be able to treat that program in the virtual machine as if it were running on the main operating system. Drag-and-drop and copy/paste need to work across the virtual machine boundary. Perhaps they get information via e-mail (and their e-mail program is running in the main operating system) and they want to paste it into the program running in the virtual machine. International keyboard settings wouldn't be synchronized; changing between the English and German keyboards by tapping Ctrl+Shift in the main operating system would have no effect on the virtual machine keyboard.

    Isolating the program in a virtual machine means that it doesn't get an accurate view of the world. If the program creates a taskbar notification icon, that icon will appear in the virtual machine's taskbar, not on the main taskbar. If the program tries to use DDE to communicate with Internet Explorer, it won't succeed because Internet Explorer is running in the main virtual machine. And woe unto a program that tries to FindWindow and then SendMessage to a window running in the other operating system.

    If the program uses OLE to host an embedded Excel spreadsheet, you will have to install Excel in the virtual machine operating system, and when you activate the object, Excel will run in the virtual machine rather than running in the main operating system. Which can be quite confusing if a copy of Excel is also running in the main operating system, since Excel is a single-instance program. Yet somehow you got two instances running that can't talk to each other. And running a virus checker in a virtual machine won't help keep your main operating system safe.

    As has already been noted, the virtual machine approach also doesn't do anything to solve the plug-in problem. You can't run Internet Explorer in the main operating system and an Internet Explorer plug-in in a virtual machine. And since there are so many ways that programs on the desktop can interact with each other, you can think of each program as just another Windows plug-in.

    In a significant sense, a virtual machine is like having another computer. Imagine if the Windows compatibility story was "Buy another computer to run your old programs. Sharing information between the two computers is your own problem." I doubt people would be pleased.

    For Windows 95, we actually tried this virtual machine idea. Another developer and I got Windows 3.1 running in a virtual machine within Windows 95. There was a Windows 3.1 desktop with Program Manager, and inside it were all your Windows 3.1 programs. (It wasn't a purely isolated virtual machine though. We punched holes in the virtual machine in order to solve the file sharing problem, taking advantage of the particular way Windows 3.1 interacted with its DPMI host.) Management was intrigued by this capability but ultimately decided against it because it was a simply dreadful user experience. The limitations were too severe, the integration far from seamless. Nobody would have enjoyed using it, and explaining how it works to a non-technical person would have been nearly impossible.

  • The Old New Thing

    The reverse-engineering of PDC 2005 pass colors


    Last night, the MVP Global Summit broke up by product groups for dinner. I was at the Windows Client product group dinner. The problem for me was figuring out who were the MVPs and who were just Microsoft employees looking for MVPs to chat with. Unfortunately, the people who made up the badges didn't think of making it easy to tell who is who. I saw badges of different colors, but they appeared to be coded by product group rather than by attendee status. More than once, I sat down next to someone and introduced myself, only to find that they were another Microsoft employee. (Hey, but I made Robert Flaming do a spit take. That's gotta be worth something.)

    One thing I was able to figure out at the 2005 PDC was the badge colors. Here they are, for reference:

    Black   Event staff  
    Yellow   Speakers  
    Blue   Microsoft staff  
    Green   Attendee  
    Orange   Attendee-Exhibitor  
    Purple   Exhibitor  
    Red   Media  

    The color-coding by attendee type made it much easier to identify attendees to chat with. Though I somehow have developed an unfortunate knack for picking a table where people aren't speaking English. At the PDC, I sat down at a table and realized that everybody was speaking Dutch. Unfortunately, although I intend to learn Dutch eventually, it's a few languages down my list. Last night, at the MVP Global Summit, I was about to join a table but realized that they were speaking in what sounded like a Central or possibly Eastern European language. There's nothing like an international gathering to make you feel linguistically inadequate...

  • The Old New Thing

    Raymond's 2005 MVP Global Summit event diary


    In case those coming into town for the 2005 MVP Global Summit were interesting in chatting with me, here's my event diary for this week. (Non-native-English-speaking MVPs can hover over the highlighted words for a translation from slang into "standard American-English".)

    • Even though it's not affiliated with the MVP Global Summit, I'll mention it anyway since it happens the same week: I'll be at CodeSlam on Tuesday night. The name is a play on Poetry Slam, but instead of reciting poetry, you share your code. If you're an MVP with a cool app you want to contribute to CodeGallery, and you want to be part of the biggest geek slumber party in Redmond, let me know. I can bring one guest. (However, since I am old and decrepit and have a job to go to the following morning, I probably won't last the whole night.)
    • I am trying to finagle a ticket to the Windows Shell/User MVP dinner on Thursday evening.
    • If I can't get a ticket to the MVP dinner, I'll definitely crash the Windows Shell/User MVP lunch on Friday.
    • I'll pop by the MVP Barbecue on Saturday to touch base with the MVPs in disciplines other than Windows Shell/User.

    If you want to be sure to catch me, drop me a line and I'll try to make time to see you. Note, however, that I'm doing this outside of my "regular job", so please be a bit understanding if a work emergency forces me to do some last-minute rescheduling.

    [Colors fixed 8:30am; sorry I was half-asleep when I wrote this entry.]

  • The Old New Thing

    Ten things I noticed at the 2005 PDC


    Supplementing Sara Ford's PDC trip report: Some of my own stories and observations from the PDC.

    1. Tip: If you're designing a hotel, don't put big noisy fountains right next to the check-in desk. Turns out that if you do that, conversation between a guest and the desk staff becomes rather difficult. Eventually, guests get tired of asking the staff to repeat everything they say and just nod politely.

    2. Tip: Go ahead, walk from the hotel to the convention center in the morning. It's good exercise, and goodness knows you need some exercise after all that food you've been eating. And who knows, you might run into a Dane named Mads [fix misspelling, 10am] and end up comparing the Swedish, Danish, and German languages for fifteen minutes, and be reassured by said Dane that Danish pronunciation isn't as difficult it sounds. Hey, it could happen.

    3. Observation: At the hip revolving cocktail lounge at the top of the hotel, there are two types of people. There are the cool people. And there are the nerds who are in town for a technology conference. You, my friend, are one of the nerds. (And you also would have computed that the lounge performs one turn in approximately 75 minutes.)

    4. Tip: When you're waiting for the elevator to arrive, don't peek through the crack in the doors if the elevator is external. You will see the sky and get all creeped out.

    5. Tip: If there is a police officer on a motorcycle waiting at a stoplight, don't jaywalk right in front of him. It turns out he'll notice and write you a ticket. (Actually, he might just let you off with a warning, but why chance it? Drivers in Los Angeles are crazy. He's stopping you for your own safety. Fortunately, I did not have to learn this lesson first-hand.)

    6. Observation: I'm sorry, I don't care how yummy it is. A fountain of chocolate is just plain wrong.

    7. Observation: They say the camera adds ten pounds. What they didn't say is that it also makes your left hand look all withered and deformed. In speaker training, they teach you to keep your hands up, closer to your face. That's why in all the pictures of Bill Gates giving a speech, his hands are at chest level or higher. I tried to keep my hands up, but my left hand tends to droop and turn into one of those claw things.

    8. Observation: Talking with customers for over eleven hours straight really wipes you out. It also gives you a sore throat (and I'm afraid I may have caught something but I'm doing a pretty good job of fighting it off so far).

    9. Bonus typo: At Ask the Experts, one of the sections was titled "Communcation".

    10. Tip: If you're going to go from the PDC straight to the airport, stuff an extra shirt in your day pack so you can change out of your PDC staff shirt and not wear it all the way back to Redmond. Because it turns out that if you wear a staff shirt outside the convention hall, you just look like a nerd. (See item 3.)

    I met up with Sara at closing time Friday since we coincidentally had the same flight out. Since the flight wasn't for a few hours, it was nice to have someone to chat with to pass the time. (And yet nobody took her up on her lunch date offer. What, were you scared of her? Really, she's a very nice person.)

    Boarding for our flight was announced and we waited our turn on the Jetway®. After a few minutes, an agent wormed her way through the line and headed for the plane. It was then that we realized, "Hey, this line hasn't moved for a long time. I wonder what's going on."

    Another few minutes later, a police officer walked down the hall and onto the plane.

    Everybody moved to the walls, clearing a path down the center. Because when a police officer gets on the plane, you know he's coming back off one way or another, and it's not going to be pretty. (It's not like the flight crew ask for a police officer because they would like him to sing a song.)

    Some time later, a second police officer got on the plane. And then two more airport employees. Everybody waiting in line was trying to guess what was going on.

    Eventually, a middle-aged gentleman walked calmly off the plane, followed by the two police officers and the airport employees. As the last of the airport employees went past, someone in the line asked, "What happened?"

    The airport employee didn't break stride and just said, "Idiot."

    As we got on board, everybody was trying to figure out what happened. I was seated next to two gentlemen who didn't know either; the disruption was at the back of the plane. Sara did a pretty good job of fact-finding and the story (fourth-hand by now) was that the gentleman had a ticket for a later flight but tried to muscle his way into a seat and became rather unpleasant when the flight crew asked him to leave. When the police showed up, he immediately backed down, realizing that the jig was up, and went quietly.

    There were, of course, no seats available on any earlier flights. Los Angeles to Seattle the afternoon after the Microsoft PDC, tickets are going to be scarce. Probably half the people on the flight were Microsoft staff returning home. This gentleman's effort to get home two hours earlier made an entire planeful of people late by ten minutes. And I suspect he's going to have a hard time buying a ticket from that airline for a while...

  • The Old New Thing

    Contradictory feedback from my 2005 PDC talk


    I was looking through the feedback from my 2005 PDC talk, and I noticed an interesting contradiction. The written feedback indicated that the first half of my talk (wherein I talked about memory management and "paying your taxes") was more favorably-received than the second half (on user interface issues). On the other hand, nearly all of the questions people asked afterwards were about the user interface issues. "Wow, that thing about parent and owner windows, I think that's why my program is crashing," or "Gosh, synchronized input explains this problem we've been having."

    I've been told that "the quality of the questions you get after a talk is the best indicator of a talk's success", so I'm inclined to go with the people who were more interested in the second half than the first half. (Of course, the increased interest in the second half might just mean that I did a worse job in that part and people needed to come up to me to clarify the things I did poorly!)

    Maybe my next title should be "Story Time with Raymond". It could be the only 100-level talk at the PDC.

  • The Old New Thing

    Coming to the completely opposite conclusion on Windows versions


    When I discussed why there is no all-encompassing superset version of Windows, people somehow interpreted this as an explanation of why there are so many versions of Windows Vista. I guess these people never even made it past the title of the article, which argues for fewer Windows versions, not more! Besides, the article talked about the server side of Windows, not the workstation side. The target audiences for servers are very different from the target audiences for workstations. (At least some people were able to follow my point.)

    The list of Windows Vista versions was news to me as much as it was news to you. It's not like everybody tells me what's going on at this company, or that I'd have the time to keep up on it if they did! (There's so much going on here, I can't even keep track of what my colleagues on the shell team are doing, and they work on my hallway! When I want Windows news, I turn to Paul Thurrott just like everybody else.) At least it appears that the people who want the all-encompassing superset version of Windows Vista Workstation will have their wish with the "Ultimate" plan.

  • The Old New Thing

    Black(out) humor at the 2005 PDC


    Trying to make light (get it? light?) of the situation, there were quite a few jokes about the power outage at the PDC. The Hands-On Lab was being set up at the time the building went dark. A bunch of us speculated what the technicians must have been thinking when the power went out just as they plugged in a rack of computers... Perhaps in reaction to this, the "Frequently-Used Tasks" section of the Hands-On Labs software included a new task: Cause Power Outage. I of course couldn't resist and clicked on it. "Shame on you!" it roared back at me.

  • The Old New Thing

    Giving fair warning before plugging in your computer


    That colleague who gave me the AOL CD that came with a big-iron server later received a prototype Itanium computer for testing purposes. The early Itaniums were behemoths. They weighed a ton, sounded like a weed whacker, and put out enough heat to keep you comfortably warm through the winter. (If you opened them up, you would likely see several carefully-shaped Styrofoam blocks with the label "Do not remove! Engineering styrofoam!" I never thought I would ever see the phrase "engineering styrofoam" used seriously. Note: Styrofoam® is a registered trademark of the Dow Chemical Company; consequently, it should be capitalized. The generic term is "foamed polystyrene". Mind you, the Dow Chemical Company also claims to have trademarked the color Blue [see **].)

    Never one to read all the safety labels before playing with a new toy, my colleague took the heavy-duty double-capacity power cables and ran them to the normal wall socket. Then he threw the power switch.

    And the power went out in the entire building wing.

    The power surge from the Itanium overloaded the poor wall socket and tripped the wing's circuit breaker. Everybody went through the standard power outage drill, while speculating amongst themselves what the cause for this one might be.

    It didn't take long for word to get out. "Fred plugged in his Itanium." (Not his real name.)

    After the electricians came by to check that everything was okay, they reset the circuit breaker and everybody got back to work.

    My colleague re-cabled the machine to be more friendly to the building's power circuitry. Then he sent out email to the entire team.

    "I'm turning it on!"

    Everbody laughed.

    And then hit Ctrl+S just in case.

Page 81 of 96 (960 items) «7980818283»