Microsoft's annual developer conference in San Francisco recently wrapped, and there were many good things to come out of it. If there was one quick way to describe the event, I would say it was "mobile-first, cloud-first". Microsoft unveiled the new Windows Phone 8.1 operating system as well as the Windows 8.1 Update 1. It also unveiled many new features available in Azure, Microsoft's cloud solution.
The conference kicked off with the unveiling of the Windows Phone 8.1 operating system, which includes many new features, such a new action center with notifications and quick links. Also included are a new lock screen and the ability to add more customization to the phone in general. Another great enhancement introduced is the new "swipe" keyboard called Word Flow. Microsoft added more enterprise support to the phone--features such as enterprise VPN, S/MIME support and MDM support. And perhaps the biggest new feature available in Windows Phone 8.1 is the new personal assistant known as "Cortana". Cortana is Microsoft's answer to Siri and Google Now and then some.
With Windows 8.1 Update 1, Microsoft is positioning Windows 8 as a more usable version of its flagship operating system. It includes several new features such as:
- The ability to pin and minimize store apps to the task bar
- A task bar within Windows Store apps
- A start screen with a power and search button & right-click context menu
- App discovery via search results
Microsoft has managed to make Windows 8 more user-friendly to mouse and keyboard users while maintaining the necessary UI for touch users. As Microsoft continues to fine tune Windows, I expect it will become more and more user-friendly while achieving the goal of being the OS for all of your devices.
Microsoft also unveiled the concept of universal apps, which allow a single app to run across many different types of hardware. Apple has had universal apps since the advent of the iPad, and Android apps are typically written to adjust to the screen size. What differentiates the Windows universal app is that you still have a project for the store app and the phone app in the same solution with a new shared project. All of the shared logic, from business logic, controls, user controls,
IValueConverters, and resources can go in the shared project. Windows Phone now utilizes the WinRT classes and controls so almost everything can be shared. This makes it even easier to build one app and target Windows desktop and Windows Phone. The only logic that would go in each platform project would be the device-specific items such as views that might need to be presented differently.
The second day Keynote was dominated by Windows Azure improvements. The most prominent new feature is the ability to create and manage Virtual Machines from within Visual Studio. Users will be able to capture VM images and create new ones from those images, including any resources such as drives that might be attached to them. Microsoft is adding support to configure virtual machines via tools like Puppet, Chef, and PowerShell. One thing that really seemed to resonate with the developers at the conference was the ability to remotely debug on Azure virtual machines right from within Visual Studio--no more installing Visual Studio on the remote machines to debug.
Microsoft also announced several great changes to Azure Web sites. They will now have a Staging and Production environment, similar to what's been available for worker roles for a while now. You will now have the ability to deploy your code changes to Staging and ensure they work before promoting them into Production. It also means that if you do move your code to Production and things go horribly wrong, you'll be able to simply role back to the working version. They also introduced WebJobs, which are essentially processes that run on the same machine as the web site and can process tasks in the background in an offline way. This means that rather than making the user wait for a long running task to complete, the work can be queued up and the user can go about his business on your site.
Another Azure enhancement announced at Build is full WebAPI support for Azure Mobile Services. You can now build your Azure Mobile Services in Visual Studio as a WebAPI solution. This means that not only will you have the built-in Facebook, Google, and Twitter authentication available to you, but you can also have Active Directory authentication in your Mobile Service as well. Microsoft has included client libraries for all the major mobile platforms (iOS, Android, and of course Windows and Windows Mobile, and Mobile Web) to make integration with AD as easy as possible.
Microsoft spent a decent amount of time talking about "Roslyn", their next generation compiler for the .NET framework. With Roslyn, developers will have APIs available to build code analysis tools, and these are the same APIs that Microsoft is using to implement Visual Studio. Some of the cool "syntactic sugar" that Microsoft has introduced with Roslyn are things like using static types which brings static members into scope, primary constructors, new dictionary initializers, index member/pseudo member, and the ability to use the await keyword inside of catch and finally blocks.
Another big theme of Build was Microsoft's commitment to open source. Anders Hejlsberg released Roslyn to the open source community during his second day keynote presentation. The Microsoft developer community can download the compiler, modify it as they see fit, and contribute back to the project to everyone's benefit.
Microsoft also presented a lot of content around cross-platform development. Xamarin, a cross-platform development tool that allows you to build iOS, Mac, and Android applications using C#, had a major presence at the conference. In fact the Xamarin session was so large that it had to be moved to the main stage where both keynote presentations were both held. It is easy to see that Microsoft has embraced cross platform applications when you consider their support for Xamarin, the C# roadmap (compiled vs. JIT), and the new universal app paradigm for Windows and Windows Phone applications.
My overall impression of this year's Build conference is that Microsoft is really trying to get their developer network excited about doing .NET development again, particularly in the mobile and cloud space. During the conference I kept hearing the moniker "mobile-first, cloud-first" and almost all of the sessions were geared towards Windows/Windows Phone development or Azure. If Microsoft can inspire its developers to create applications for Windows Phone, then its Mobile platform can become a major player in that space. I can't speak for everyone that attended the conference, but I know that I'm excited about what the future holds for Microsoft.