New Fun Blog – Scott Bilas

Take what you want, and leave the rest (just like your salad bar).

Build Conference 2011: Tuesday

with 2 comments

I’ve been at Microsoft’s Build 2011 conference. Over the years I’ve gone to a handful of Microsoft conferences – Gamefest, Meltdown, Gamestock, Windows World (if you go waaay back). Mostly gaming related. Build is the merger of PDC and WinHEC, neither of which I had attended in the past. Unlike the gaming conferences I’ve been to, Build has serious money behind it. It’s been incredibly well-managed.

I sent out notes about the conference to my team and figured I’d post them here as well in case it would be useful to anyone. Stripping out any Bungie-specific commentary that wouldn’t be generally applicable of course.

Important: some of these are out of date and superceded by later notes I took after talking with Microsofties. I’ve tried to mark them as such where I remember with a [*].

Notes From Tuesday

I’m writing these up while it’s still fresh in my head..

Two big takeaways for me:

  1. Windows 8 will actually be really awesome. Seriously.
  2. It won’t matter to production tools developers. Business as usual.

As a consumer, I am really looking forward to Windows 8. They did what needed to be done in order to live in the modern world: new API, breaking of backwards compatibility, heavy integration of touch and gestures, complete guidance provided for new design, large library and protocols for connecting apps together, support for web development on the desktop to bring in all those crazy kids, plus some really forward looking design…

But only for Metro – “the new stuff”. Windows 8 will run all the apps that 7 did, but there are now two classes: desktop apps and Metro apps. Desktop apps are 3DS Max, Photoshop, Word, Notepad, etc. Metro apps are 100% new. It is a brand new platform in just about every way. Really don’t even need to call it Windows.

Metro has clearly been the focus of Build and therefore Microsoft. So far today, the only thing I heard about ordinary desktop apps is that “they will still work great”. They all run within a context in Metro called “Desktop”, which is already seeming very antiquated, almost like Windows XP Mode was with Vista. Everything MS is talking about here is geared towards Metro. And it’s seriously cool. I look forward to switching all my home machines over to it, especially my girl’s Dell Duo. Win8 is fast, lean, and cool as hell.

So I don’t have much to report on the future of our platform: Win32/64 + WPF/.NET. I’ll be finding out what I can over the next three days.

I did take some notes, though. Here they are in no particular order:

Non-Metro:

  • No mention of WPF all day. Not even whispered. Is WPF rolled into Silverlight? Is WPF on life support? What about frogs? No word yet.
  • New C++ standards compliant compiler is shipping with Visual Studio vNext. I saw the “auto” keyword being used for duck typing.
  • They kept making a big deal about performance as a top priority, over and over again. This is a pillar of Win8.
    • Perf is even more important than in Windows 7 due to touch support, because people are unwilling to put up with any latency whatsoever when using a touch interface. So look for a lot of async support integrated at all levels.
  • Cider is gone. Blend’s designer is now integrated into Visual Studio. Big yay. Always annoyed me that something would work in one place and not the other, or vice versa. (Now we can have things not work in both places, but at least it will be consistent.)
  • There’s a new debug view that lets you view parallel stacks of async/TPL tasks as well as the program flow through the tasks. I’m going to ask them if this can be applied to our own scheduling system (or if we should switch to Task in order to take advantage).
  • Looks like they upgraded the remote debugging, way easier to set up. Even have remote Javascript breakpoints. Definitely won’t need Firebug in this world.
    • There is even a DOM inspector for JS that works over remote debugging. Not only are the UI elements hot as you hover/touch them (like in Snoop or Chrome dev) but you can modify properties on the fly while debugging. Remotely! OMG!
  • Blend has a crazyass new interactive mode where you can run the app inside of Blend, fully interactive, then pause it on the screen you want to modify and switch to design mode to update the Xaml. Sort of like play-in-editor. (Think Expanders or other state-dependent stuff..a bit of a pain to do right now.)

Metro:

  • XAML is coming to C++ which compiles down to native x86/ARM. Appears to be Managed C++ due to use of ^ ref modifier [* nope]. Makes sense. Don’t know how they’d make any of this work with pure C++.
  • Thankfully they’re not just copying Apple but fixing a lot of stupid UI problems on the iphonepodpad. My favorite is how they said that the modal rearranging of the home screen is crap and how folders bury things too far. Couldn’t agree more.
    • They are also expanding the “touch language” beyond existing standards of swipe-to-scroll and pinch-to-zoom/rotate. Selection, context bars, app switching..
    • Totally eliminating the “mouse-ish” stuff like holding down a touch to bring up the context right-click. All of those old Windows 4 Pen-isms are gone. This is why touch sucked on Win7/Vista and is finally usable on 8.
    • BTW if you have any time at all, be sure to watch Jensen Harris’s “big picture” talk from today (should be posted online sometime on Wednesday). I thought it was superb.
  • Metro apps do not have access to Win32 api’s (such as MessageBox or anything in GDI)! – no overlapping windows etc
    • All graphics are done through DirectX only.
    • Metro apps are totally different. Don’t even have a message loop. [* not true]
  • I saw examples of the “await” and “async” keywords a lot in the demos. This is a key part of delivering high perf UI. Their expectation is that nothing is synchronous.
  • WinRT (windows runtime, the new API) appears to be a true new API and not just a forms/.net style wrapper.
    • This one appears designed well from the start! Takes advantage of modern design patterns and not held back by obsession with backwards compat.
    • They said several times that this is definitely not a “layer on top” (like how winforms wrapped up user32 etc.) but talks straight to the kernel. [* mostly true]
    • Fully object-oriented, has reflection, even in C++.
  • Async support features are implemented in all languages.
    • For example in Javascript, known as “promises”: mediaCapture.initializeAsync().then(function() {…}) type stuff.
  • The javascript integration is pretty damn cool. Has data binding even. Hope this brings web devs in to make things for Win8 (obviously MS does too).
  • Can write native C++ to reference-in from javascript. They gave a demo of HLSL compute shader-based image processing lib written in C++ and used in Metro javascript app. Neato.
  • Single file .appx package for distro. Yay finally. No more installers! Turns out this is just a zip file too, like Java did with jars. Yay, no more proprietary package formats!
  • They have a very cool Metro simulator that runs your app through a fake local RDP session that makes it easy to test different rez / dpi / orientation without needing a VM or separate computer with the correct display.

September 16th, 2011 at 8:41 am

Posted in conference,windows8

2 Responses to 'Build Conference 2011: Tuesday'

Subscribe to comments with RSS or TrackBack to 'Build Conference 2011: Tuesday'.

  1. JFYI: auto (together with lambdas) is already shipped in VS2010; VS2011 brings some new C++0x features, but those were already in (although lambda support was improved).

    Parallel Tasks is also in VS2010 (though may be VS2011 version is enhanced?). I believe it’s Task-only, but it may work with a custom TaskScheduler (not sure about that, sort of interested in the answer myself).

  2. Ah, thanks. I hadn’t really used C++ in 2010 yet. Forgot about the parallel stacks etc. windows but the main new feature in VS11 is apparently that Parallel Stacks works across processes. Cool, though probably limited to web or WCF apps in its utility.

    Scott

    17 Sep 11 at 2:59 pm

Leave a Reply