The Adventure of Build 2012
This has been and exciting year for technology especially around Windows8. Shortly after Build 2011, last year, I began my work with Windows8 and completed my first book ever Getting Started with Windows 8 Apps. A large part of this year has been spent really understanding all the pieces of Windows 8 and the new Windows Runtime. That passion has extended further into really trying to get the message out and push others to embrace the true breadth of what this means for computing and our profession as software developers. At VSLive in August, where I was fortunately to be on the roster with some extremely distinguished speakers, I learned the extent to which Microsoft was really pushing this year with releases for virtually every product on the market. From all versions of Windows, Windows Server and Windows Phone, to Azure services from Office 365 to the new cloud based SharePoint offerings (codenamed: NAPA). This only intensified my passion and upon learning of a second Build conference I begun planning my next trip.
Unfortunately when Build registration opened up in early August I didn’t jump at the opportunity as quickly as others and by the time I finally went to register just 1hr and 20mins after opening it was already sold out. Despite my disappointment I registered for the wait list and kept my fingers crossed. Luckily for me they opened up registration a few weeks before the event and I didn’t hesitate this time.
Shortly before my scheduled departure I got word of the incoming Hurricane Sandy which, as we now know caused massive damage to my dear city of New York. The Sunday before my flight I spent over 4hrs on the phone with various parties trying to rearrange my travel in an attempt to reschedule my trip around the storm. After hunkering down for the duration of the storm, I woke to such devastation that I had already accepted the fact that my trip would not be happening. Luckily for my family and myself we escaped the wrath of the storm and awoke to power and internet unlike many of my friends and neighbors. With the family safe, I checked the status of my new flight (assuming it was canceled), and was shocked to see that it was one of the only 2 flights still scheduled for departure. Despite my skepticism, I left for the airport with such guilt and internal conflict that mostly killed my excitement about the event. In utter amazement I arrived in Seattle, WA on Tuesday night, just one day after hurricane sandy touched down and only missed 1 day of sessions.
I actually missed the day 1 keynote in person, but I had a chance to view it online. The biggest announcement of the day was the release of the new Windows Phone 8 Developer Platform (aka SDK). The real underlying theme of the event was designed to push developers to build apps and promote the next generation. To sweeten this message Microsoft gave all attendees a brand new Windows Surface RT tablet with touch cover (which I used to write this post), 100GB of SkyDrive storage, and a new Nokia Lumia 920.
While tablets and slates were used throughout the demos, I was happy to see Microsoft focus on the large (80in) screens, all-in-ones desktops, touch laptops, and the connected synchronization story around the ecosystem. The demos were nice and everything worked flawlessly.
Windows 8 was a big focus for the first part of the keynote, but there wasn’t anything that we hadn’t heard or seen at other venues. The day before the keynote, Joe Belfore announced Windows Phone 8 and all the features, like Kids Corner, NFC, and the all new Wallet app, among others. The Windows Phone team has done some great work, the features are great, but what’s really amazing, and what was highlighted at the keynote, were the developer features. The new Windows Phone 8 runs on the same NT Kernel as Windows 8. This is extremely important and enables cross development and shared code between virtually all aspects of the Windows ecosystem.
The day 1 keynote was all about Windows devices and Windows Phone 8, day 2 was about the cloud and Microsoft’s push for infinite scale. In previous announcements Steve Balmer has discussed the change in strategy towards a devices and services company. While Microsoft is continuing their push for consumer adoption of Windows Azure, they are using Azure to support the services aspect of their new strategy. For me this is reassuring as is promotes a commitment to improving Windows Azure to everyone’s benefit. In addition to hosting many of Microsoft owns services and websites like Bing, MSN, and Office 365, Windows Azure is being used to support many abstractions on top of their infrastructure, such as Windows Azure Website, Mobile Services, and Media Services.
In addition to the various Windows Azure demos, the stage was graced the with ever popular Scott Hanselman and the red shirt of Mr. Scott Guthrie. They showed off the numerous new aspects of Visual Studio 2012 and the simplicity of publishing ASP.NET apps to Windows Azure via the publish settings and Azure command line tools. They were followed by another iconic face, Jason Zander. He showed us all the new features of TFS and the latest ways to keep your team productive with this new service.
The keynotes at these conferences are typically littered with all the juicy announcements, but the real benefit of Build is the ability to meet and network with the Microsoft employees who are responsible for all these wonderful new features. It’s always difficult to decide which sessions to attend, but luckily they are all streamed online at http://channel9.msdn.com/Events/Build/2012 and I plan to follow-up on many sessions that I missed. The focus for me was Windows 8 as well as the new support for unit testing available in Visual Studio 2012. I’m going to use the remainder of this post to highlight some of the talks I attended and provide a brief synopsis from my point of view.
Graphics with the Direct3D11.1 API Made Easy (3-113)
While I’m not a C++ or game developer I was still interested in this talk. Phil Napieralski started by showing how developers can use feature detection to alter their games detail based on their hardware. This is something that I hope all game developers will take into account as I hope to play games on my Windows RT Surface and my desktop and they have drastically different graphics capabilities.
The team who build the AccuWeather app also graced the stage and talks about how C# developers can create hybrid DirectX and XAML apps using the SwapChainBackgroundPanel.
Performance Tips for Windows Store Apps Using XAML (4-103)
Now that the store is open and Microsoft is receiving numerous submissions for apps, various performance problems are popping up. Kiran has been involved in helping to troubleshoot many of these problems. In addition many developers are testing on development machines while their users use ARM based devices which can significantly reduce performance. Startup time was a major highlight for this talk and in XAML based applications, the number of XAML files that are parsed at startup can be the culprit. The primary recommendation is to reduce or delay any XAML that is not needed at startup to ensure the apps launches quickly. To do so, he showed how XPERF can be used in conjunction with WPA to analyze your app. There is a complex .bat file that is should be available for download on the session page and should help get you started.
Angle Brackets, Curly Braces, One ASP.NET and the Cloud (3-027)
Deep Dive into WinJS (4-101)
Josh Williams, the creator of the WinJS List Bindings, gave a nice overview of WinJS. It showed some fairly hardcore aspects of WinJS, but was not quite the Deep Dive I was hoping for. Chris Anderson also joined the talk and together they discussed protocol handlers, navigation, and promises. Protocol handlers is a great way to allow your app to communicate with other apps and with the desktop. It’s also a feature that I feel is often overlooked. In addition, I’m happy they discussed Navigation and Promises as I feel these are both areas that people will and have already gotten quite hung up on. Overall a great talk, I could have listened to them for hours.
Testing Untestable Code with Stubs and Shims in Visual Studio 2012 (3-015)
Unit Testing Windows Store Apps (3-017)
I was able to see both talks from Josh Weber and David Starr. It’s obvious that the team is focused on TDD and many other testing scenarios. They demonstrated techniques for creating tests around tests around statics and singletons using static type analysis versus IL emitters which most other Mocking frameworks use. You can have Visual Studio create Stub, an empty implementations for objects and interfaces, or Shims, a way intercept calls to objects out of your control (including System namespace objects like DateTime.Now). This is a handy bit of functionality that is built into Visual Studio 2012.
In the follow-up talk, the guys talked about the newly re-written Unit Test Explorer. The verdict is still out for me on this one (I still favor a grid/tree view), but they addressed that elephant immediately with examples of filtering, grouping, and sorting large lists of tests. They wrapped up the presentation with some examples of using the MVVM pattern to test a windows store app, a fairly trivial demo for anyone who’s been testing WPF or Silverlight apps, it’s a shame that Windows Store apps don’t support the new Stubs and Shims options, but I’m hopeful for the future.
Just like the preceding conference, Build 2012 was a terrific event. The staff was amazing and with the exception of hurricane Sandy everything went very well. I’m really enjoying the new Surface tablet and the Nokia Lumia 920. As I’ve said plenty of times and as is likely apparent by my overall enthusiasm in this new direction, this is a wonderful time to be a developer. For me I will be spending much of my free time working on some of my numerous app ideas.
I’d also like to take this time to reiterate the push from Tallan to work with our clients on realizing their apps. For anyone who is reading this article, I’d love to hear from you about your apps. Whether you are interested in friendly developer beta testers of more serious consulting for your app we are here to help.