I've been lucky enough to attend this years edition of Build on Microsoft campus. Incredibly lucky indeed, because I only managed to get through the waiting queue a week before the actual event, and also because of the generosity of my employer who's made this possible. So there you go, thank you so much Quorum.

Overall, what I consider to be the biggest success from this 4-day long set of seminars, is how the organisers managed to pack such an overwhelming amount of quality content in a very tight schedule. Covering all the gaps between the development of Windows Store Apps, Web Dev with HTML5 and CSS3, and the many new services that are now available in the Azure cloud. As well as up-to-date guidance on coding for performance, test driven-development and demos of the many new and upcoming technologies from Microsoft.

To top it all, to deliver the goods we had an outstanding good group of techies that were very engaging and incredibly open to the audience. Possibly, the best news for you is that you can now watch it all at your leisure straight from Channel 9.
I had a rather busy schedule myself and I still feel like that I have plenty to catch up. The following notes are the what I consider to be the most interesting points from the sessions that I attended.

Windows Azure

The Azure Cloud keeps on growing with more and more services. You can now enable the following preview features via your account management at no extra cost.

  • Azure Media Services is a very open platform that can be leveraged to facilitate Video on Demand (VoD) streaming to Flash iOS, Flash, Android, Xbox and generic HTML5 players. There is also support for external advertisement channels, closed captioning, DRM and CDN delivery. The media "ingestion" components also integrate a web-based version of IIS Transform Manager, allowing to schedule the automated transcoding of video streams to many different formats and encodings.

  • Mobile Services is a very neat way to provision service endpoints for mobile clients. With some simple Node.js-ish JavaScript tooling, it allows to easily relay web-based services with the addition of OAuth integration and push notifications in a nicely scalable fashion. This demo from ScottGu is all you need to get yourself started.

  • Virtual Machines and Virtual Networks support creating Windows and Linux machines from predefined templates as well creating your own images from vanilla OS installations. To spice it all up, you can also define complete VPNs with your custom configuration of IP addresses and DNS services.

  • Lastly, the Azure SDK for VS2012 brings the possibility to define multi-tier services straight from the IDE. This is extremely powerful when you need to setup different environments such as: testing, staging, UAT, production, you-name-it  and you don't want the infrastructure (or internal processes) to get in the way.

    Meaning that within Visual Studio you can now easily define, provision and even version control all your web apps, SQL databases, back-end worker processes and storage facilities. The finishing touch is that this will all be automagically load-balanced for you and will be capable of scale as demand grows. Cool huh?

Windows Store Apps, formerly known as Metro Style Apps.

(Yes, you might as well get used to the rebranding already ;) )

  • Kid's corner for WP8 allows to create a "guest account" with a limited set of apps and permissions, so you don't have to worry about your private data if you were to share your device with somebody else.

  • Windows 8 supports Near Field Communication (NFC) out-of-the-box, which opens up a much more straightforward development path than that of Bluetooth and its many stacks and profiles.

  • The Windows 8 experience is focused on providing a very responsive experience. Apps that do not comply with certain thresholds, e.g: memory footprint, time-to-resume from suspend state, time-to-complete a search query, will be ultimately "punished" by the OS.

    For instance, apps that fail to play by the book will become top candidates to be terminated when low on resources. Likewise, apps that provide successful context-based search results will automatically bubble up to the top of the search list.

HTML5 and JavaScript

  • Apps developed with HTML5 are first-class citizens. The WinJS API fills the gap providing support for all the typical thick-client interactions, such as: touch-based control, gestures, geo-location, camera and microphone access, local storage, etc. Development with HTML5 and CSS3 can be a very sensible (and portable) option in many scenarios.

    Let's consider the case of the Bing app for WP8, as it is entirely based on the web. The reasoning for this case is that it is lightweight enough to be downloaded on initialisation, whilst benefiting from not ever becoming out of date, as the user will never have to manually upgrade the client.

  • Microsoft also announced the release of the appendTo library, which is an open source port of jQuery that plays nicely with Windows 8 custom behaviours and its sandboxed environment.

  • Because of its unmanaged nature, JavaScript can be tricky to fully optimise for the best performance. The following tools have been created to provide a much more enriched development experience.

  • One-step profiling (Visual Studio > Debug > Start performance analysis paused)

  • Performance analyser for HTML5 apps (available for x86/x64/arm)

  • JavaScript [Memory Profiler](http://msdn.microsoft.com/en-us/library/hh696637.aspx "JavaScript Memory Profiler") (snapshot based analysis of memory consumption and garbage collection)

  • Another nifty little tool is the "Simulation Dashboard". Which is capable of reproducing varying network conditions and available bandwidth. The sim dashboard can also trigger "lock/unlock" events, so that you can cater for the specific requirements of Process Lifetime Management (PLM).

  • Finally, let's not forget the Web Essentials extension for Visual Studio which is an absolute must-have, as well as all the other tooling  published by Mads Kristensen.

Contracts

Application contracts are fundamental to provide a complete Windows 8 experience. With a few and very concise lines of code, apps can benefit from being fully integrated into system-wide querying and more straightforward data-sharing with other apps. The overarching idea is that you shouldn't have to write your own "filepickers" and "share-with-facebook" widgets.

Moreover, in the sandboxed world of devices with only one app in the foreground, copy-and-paste can be a rather clunky and limited interaction. Contracts facilitate moving data across apps without the additional friction of the contextual "touch-and-hold", which has somewhat become the new "right-click" for touch-based devices. Contracts are given a 30 minutes time-out to complete their actions, so that you can queue up a long IO operation in the background without having to rely on the app being the forefront.

The contracts that are currently available are: share source, share target, search, file open, file save, settings, playTo and cached file updater. The bottom line is that once you wrap your head around the new possible interaction scenarios, contracts can be the gateway for the smoothest UX. I wholeheartedly recommend this session from Jaime Rodriguez to fully visualise the scope of what can be achieved with contract interactions.

Visual Studio 2012 and TFS

The new revision of the flasgship IDE has been overhauled with very noticeable performance and UX enhancements. Visual Studio Express (that's the free edition of VS) has also seen some love, and it now includes all the necessary components to develop for the complete .NET platform, including TFS Express accounts for up to 5 developers.

On the TFS front

  • New projects will use "local workspaces" by default, allowing to continue development as per usual in a disconnected/offline scenario. (pre-2012 projects can also be upgraded)

  • Git-tf provides the "glue" for a hybrid environment where code can be locally managed with git and checked in against a common TFS repository (e.g: to maintain a side project with Xcode and iOS code)

  • The merge tool has been rewritten from scratch and provides great flexibility when reviewing conflicts. Mind you, Jamie Cool (Group Program Manager for TFS) claimed that this actually meant the replacement of the 20-year-old version of the tool originally shipped with Visual Source Safe, not bad!

  • The UI has also been majorly reviewed and what used to be chains of modal windows have finally been replaced. The new team explorer provides a much neater and integrated experience within a single dockable panel.

Visual Studio 2012

  • The tooling for testing has been rewritten completely, with the main aim of facilitating the needs of Test Driven Development (TDD) scenarios. Unit test frameworks (other than MsTest) can also be plugged in via Test Adapter NuGet packages, such as: NUnit, xUnit, QUnit, etc.

  • It also introduces the Microsoft Test Framework, which allows to define shims and stubs for loosely-coupled tests and frameworks. A big announcement was that of the upcoming SharePoint Emulator, which will effectively provide an environment to fully test SP code without having to have access to a deployed server altogether.

    Some of the new testing features are already available, but many of them will follow with the final release of CTP1 this November.

Open Source

At this stage it should not come as a surprise that Microsoft is making a huge investment into open-source and that is has largely redefined its strategies for software licensing.
Let's have a brief consideration of the following facts that were continuously reminded during Build 2012.

  • The ASP .NET stack is fully open source.

  • Git is now officially supported on TFS and Azure cloud.

  • Web standards are not only for the web! HTML5, JavaScript and CSS3 have been incorporated as first-class citizens for Windows 8 development, opening the platform for much greater interoperability and adoption.

  • The SignalR project will now be officially released as a Microsoft namespace, but with the original open source project being developed and maintained as an independent open-source project.

  • MPEG-DASH is the chosen standard for the future of video compression for Azure Media Services moving forward.

  • Microsoft is not only letting developers "see" the code, they are already accepting pull-requests from external and independent developers.

  • NuGet has become the tool of choice for enabling developers sharing frameworks and software patterns.

  • Visual Studio, ASP .NET, Azure and most of their platforms are now fully embracing the "release often, release early"  that has proven so fundamental to the success of the open source community.

What can I possibly add to all of these? Well, that this is an extremely exciting time to be a developer, and I'm glad that the new Microsoft is willing to side with all of us :)