Kam Kam

Niner since 2004

It's my job to make Windows look drop-dead gorgeous. Prior to this, I worked on a product called MSN...


  • New Vista GUI Stuff For Devs

    Sorry for coming to this thread so late after the interview. Rory promised me a "heads up" before it got posted, but I didn't end up seeing it until now.

    I know some folks are asking for the source code for the demo that was shown, you can download it from here. This sample was based on some code that was written for other demos we did internally, so if the part of code to extend glass into the window looks familiar, that is why.

    There's been some lively discussion on this thread, so I'll take a moment to address some of the comments.

    DigitalDud mentioned the need for new display drivers to do composition. I've talked about the benefits of composition in the past, but it's worth discussing the new driver model briefly. The new driver model is really a separate thing from Desktop Composition.

    With the new driver model, the biggest change was moving a great deal of code out of kernel mode into user mode. There were meny motivations for this - including, but no limited to One motivation behind this was that video drivers are increasingly doing a great deal more language processing than they had in the past, due to new functionality like shader processing at the pixel level and for geometry.  Moving this processing up into user mode means it's less likey that an application can cause the driver to crash in kernel mode - in other words, far fewer blue screens.

    Desktop composition does take advantage of the new driver model, in that it enables better support for more than one application using the GPU simultaneously, sharing graphics memory, and managing graphics memory together.

    DCMonkey asked about resize behavior. The biggest challenge with improving resize behavior is application compatibilty. For new apps, like those written in WPF, we had more latitude to change what happened in the application by default when you resize it. In WPF, you don't manage your DC or your DX surface directly - the framework does that for you. So we can make sure that the framework does something "DWM friendly". For existing Win32 applications, and even some Windows Forms applications, we need to make sure that we don't do things that change the expectations that applications already have. Some applications do processing on the resize loop by listening for and reacting to WM_SIZE messages. Sometimes those applications don't get that work done in less than 16ms (which would be required to do a resize at 60FPS assuming no system overhead). And of course, the system does have overhead so the applications don't really get their whole 16ms - what they get varies from system to system based on hardware.

    There are a number of approaches that can be taken to keep these things in sync and looking smooth - one way to do it is to not update the window frame until the contents of the window have drawn. The downside to this, is that then the window updates will lag behind the mouse-pointer movement. Apple's OSX exhibits this behavior pretty commonly (at least Tiger does on the Mac Mini we have in the office). Another approach is to have the window frame track the mouse, and use a default brush to fill the new window area until the window gets around to repainting - that's what we do in Windows Vista.

    If the application chooses to draw glitchy stuff in that resize loop, there's not a lot we can do. The one thing we can do is focus on making sure that the amount of processing that happens in DWM.exe during resize is minimal, and we spent a great deal of effort on that front.

    There was some discussion of .NET 2.0 executable shipping in Windows Vista. It's true, there are none (to my knowledge). That doesn't mean that Microsoft isn't investing in great experiences built on the .NET framework. The Max project was probably our first major public endavour in building a great user experience on .NET. That project has closed now, but there are other things happening as well. There are the Expression tools, and there's also the new Windows Live for TV Beta, which is an extension to Media Center on Windows Vista that was built using the framework. I'm sure there are more things like this coming as well.

    Thanks for all the great questions & comments on the interview. Its always fun to do these, and be able to participate in discussions like this! If y'all have more questions, I've cross-posted this note to my blog and I'm happy to take more questions there as well.

  • Kam Vedbrat - Is there one thing in Longhorn that really excite you?

    We learned from the process we used in MSN when we started working on longhorn but the design will not be all that similar. There are two reasons for this:

    1) Technology - w/ all the new stuff in longhorn provided by the new graphics platform, we can do a lot more than we ever could in MSN (which had to work the same on Win98, Win2K and XP).

    2) Customer Focus - MSN was (and still is) a consumer product first and foremost. This meant we could be a little more colorful and a little less business-like in our design. Windows is different in that over half a billion people use it, and they all use it in very different settings and the design needs to be more flexible and appropriate for all the different uses.

  • Kam Vedbrat - How are user expectations changing now that computers are being used longer every day?

    Thanks for the great comments!

    Sidebar -
    I'm a huge believer in giving folks a home for their apps they use to "just watch stuff". There are tons of scenarios for this sort of thing, and the 16x16 pixels you get in a Windows XP system tray icon are just plain not enough.

    Worse yet - we've never really created a "place" in windows for this sort of thing, and the result is that you have a mix of solutions with varying levels of quality and feature-set. Some apps can be made "always on top", others can dock to your taskbar, some are just floating windows that you can't easily get out of your way when you need to.

    The sidebar is about providing a platform for creating these applications, to enable some consistency in feature set around the window model they use, while leaving plenty of room for the application itself to provide the functionality it was written for. This allows developers to spend more time making a great app (stock tiker, buddy list, battery monitor, blog watcher, whatever) and less time worrying about how to implement stuff like "turn on my deskband when I get a minimize message" and "should I pop up the menu when users right click or left click on the tray icon?".

    To address some common fears - 

    It will be very flexible - we're still iterating on the exact model for auto-hide, always-on-top, and resizing the desktop for the thing. We know lots of people use their PC's very differently (some want stuff always in their face, others want things available at a glance but not in their way), and lots of PC's have very different size/resolution displays (google separately for IBM T221 and OQO ) and this thing has to work w/ all of them to be successful. Lots of options will be there, and we understand that the devil is in the defults.

    Iterating on ideas -
    Someone mentioned in the thread that Neptune eventually became MSN. While lots of folks from the Neptune UX team went on to work on MSN, they were very different products w/ entirely different code-bases. A lot of the UX ideas from Neptune did show up in MSN, but the thinking around what makes up a great OS stayed in Windows, and much of it shipped in Windows XP (Automatic Updates and Online Crash Analysis are some great examples).

    Switching from games to diagnostic tools -
    timw had a comment on needing to quckly switch to his admin and diagnostic tools. Tim - have you looked at using Fast User Switching as a solution for this? You can set up one user which always has the diagnostic tools running, and then another user where you play UT. Then you can easily switch from one to the other using WinKey-L. It's not exactly what you're asking for but probalby a useful workaround that you can use on XP today.

    Painting the walls -
    I'm actually scared to admit that I actually don't know what the rules are. My manager didn't say anything other than "nice color", so I don't think it was a big deal.

    Here's the story - I moved into a window office about a year or so back, and the walls were kinda dirty. I thought about asking facilities to come and take care of it, but rather than spend shareholder $$ on getting the office professionally painted plain old white, I decided to make a run to home-depot and get a nice blue color that I'd enjoy better. I didn't mind buying the paint since I could choose the color.

    Full Screen Apps -
    Jamie - hang in there. We're definitely doing some thinking about how to things easier for folks who use more immersive apps like photoshop, corel, etc. That's about all I can say at this point.

  • Kam Vedbrat - Is there one thing in Longhorn that really excite you?

    Wow - lots of great feedback! Thanks all. Sorry for taking so long to respond on the board - I've been a little tied up getting this Aero thing built... Wink

    So lots of questions here - Lets take them in order.

    On hardware: You shouldn't have trouble on most modern hardware.I use two machines at work - one is a 1.7GHz w/ 512MB of RAM and the other is a 2.8GHz w/ 1GB.

    Age: I'm 29 years old. I came to MSFT in 1998 right after graduating from Purdue University (go Boilers!), and this is my third major role at Microsoft. Before Longhorn, I spent a few years working on the MSN Client software (MSN Explorer and later MSN8) and before that, I worked on the installer for IE5.

    The BillG school of public speaking: Funny! Gotta admit, I've never heard that one before. I was a little dismayed at how much I was slouching in that chair during the interview. Gotta work on that.

    Steve - when are you coming? Hurry fast, so we can ship. Wink

    Please keep the comments coming!