Satya Nadella and others – Day 2 Keynote
Day two started with Satya Nadella orchestrating an amazing keynote with Scott Guthrie, Scott Hanselman, Josh Twist, Jason Zander, and David Campbell. This amazing lineup of speakers showed multiple demos, including live coding, covering the most recent developments – mostly around the Windows Azure Platform.
Satya’s point of view on the current state of Windows Azure is that it is a complementary offering to Windows 8 and Windows Phone 8, in that it provides a great backend for mobile apps. This great backend is not just words – it’s Windows Azure Mobile Services, announced just a few weeks ago and progressing at an incredible rate. (I have taken a great interest in WAMS, and even managed to squeeze it into my Node.js talk at the local Azure UG last week.)
For example, here’s what you need to do to authenticate a user using Facebook – yes, seriously:
var user = await MobileService.LoginAsync(MobileServiceAuthenticationProvider.Facebook);
Josh Twist from the WAMS team announced support for Windows Phone 8 – alongside the existing support for Windows 8 and iOS. I bet Android support is coming as well, which will make WAMS an ideal backend offering for your mobile apps on every platform. In his demo, Josh showed how easy it is to integrate data tables in your mobile app, to send push notifications from server-side scripts between devices, and how to perform user authentication using identity providers such as Twitter and Facebook.
Alongside with that great backend, Windows Azure powers more than 200 Microsoft services, including Bing, Office 365, and Xbox LIVE. Scott Hanselman hopped to the stage to build an ASP.NET web site with third party identity providers and a Web API service, and continued to use it from a Windows 8 app.
At this point Satya said that Windows Azure “takes the grudge out of building cloud-scale services”. Indeed, Scott Guthrie demonstrated how Windows Azure Media Services – which you can try online without downloading the SDK – streamline the process of uploading, encoding, publishing, and streaming media to a huge variety of devices. Scott also demoed SignalR and announced the Windows Azure Store with third-party add-ons, including New Relic’s free monitoring and analytics offer for all existing Windows Azure customers.
Towards the end of the keynote, Jason Zander announced that the Team Foundation Service is coming out of preview and is available for free to teams of up to five people. This is great news for small teams looking to bootstrap their source control and continuous delivery environment.
Don McBrady, Jim Radigan – It’s All About Performance: Using Visual C++ 2012 to Make the Best Use of Your Hardware
This was one long title, but a very interesting and informative session for C++ developers. The room was almost full; Jim and Don quickly went through the concepts of superscalar execution and vectorization in modern processors, and explained how the C++ compiler in Visual Studio 2012 determines which loops are safe to vectorize and emits parallelized and vectorized loops when possible.
This is the kind of hints you can give the compiler to automatically vectorize and parallelize your loops – and there’s a math library optimized for vector operations at your disposal:
for (int i = 0; i < _countof(arr); ++i)
double s = sin(arr[i]);
double c = cos(arr[i]);
arr[i] = sqrt(s*s + c*c);
Many more parallelization and vectorization opportunities are available, and Visual Studio 2012 is just a first glimpse at what’s possible. Because the same compiler is used to build Windows, Office, and SQL Server, the compiler team has to be very conservative and cautious with optimization opportunities – so some things simply didn’t make it into the first release. I will definitely watch the space of further optimization improvements in the Microsoft compiler.
I covered some of these topics in the past on my blog [SIMD, auto-parallelization], and some tips on vectorization, instruction-level parallelism, and even C++ AMP have made it to Chapters 6 and 10 of Pro .NET Performance. If you’re more of a .NET guy, it might be easier to digest than this C++-oriented talk 🙂
Towards the end of the talk, Don demonstrated C++ AMP with a live “cartoonizer” demo, in which the performance was improved by two orders of magnitude as a result of offloading CPU-bound image-processing code to the GPU. This and other impressive demos are something you can do today: just pick up C++ AMP by Kate Gregory and Ade Miller, and start getting your feet wet with C++ AMP.
Josh Twist – Azure Mobile Services
Josh, a Senior Program Manager on the Mobile Services team, introduced the capabilities of Mobile Services using a long demo in which he built a voting app for categorized events. In just under 50 minutes, he was able to cram the service creation, data tables, authentication using multiple providers, push notifications for both Windows 8 and Windows Phone 8, and most importantly: server-side code with insert and read scripts.
Brandon Bray – Evolution of .NET
In this historical perspective talk, Brandon recalled the design goal of the .NET framework – having developers fall into the pit of success. Indeed, .NET has increased its platform reach (with the embarrassing exception of Silverlight’s untimely demise), and maintained a consistent API surface that you can use across Xbox, Windows Phone, Windows 8, and desktop apps.
Brandon showed some funny videos and PDC slides from the last decade, including Bill Gates elaborating on how every application will become a website and how it will become increasingly important to sync and transition experiences between multiple devices. It’s interesting to see how these trends are even more relevant today, as the line between apps and websites is becoming even more blurry.
At the end of the talk, Brandon discussed some of the performance improvements in the recent CLR versions, including background server GC, multicore JIT, and automatic NGEN. He also briefly mentioned the CoreCLR’s resurrection in Windows Phone 8, where it powers the next generation of Windows Phone applications. Compile in the Cloud, the subject of a talk I plan to attend on Friday, brings machine-dependent IL to the phone, which is much faster to JIT and has a much smaller footprint, resulting in better performance due to better optimization and faster startup times.
Finally, Brandon mentioned the improvements in Compact Framework 3.9, coming to Windows Embedded Compact 2013 that targets less powerful devices, with 256MB of RAM or less – generational GC, code sharing server (like in WP7), and improved code quality for ARM processors.
I am posting short updates and links on Twitter as well as on this blog. You can follow me: @goldshtn