I had a great time at BUILD this year. As far as significant announcements go, this had to be one of the biggest in recent memory. I wouldn't say that I saw an overwhelming shift in direction, as some articles I've read would have you believe, but I would say that the direction is more apparent than ever. We all knew there would be more open source, cheap or free windows, a bigger and badder Azure, and WinRT on all windows platforms. It's not about getting shocked anymore; it's about seeing those things realized and then getting them in the hands of partners and us developers. It's also just common sense. This is the competitive landscape now, and I fully expected Microsoft to embrace that and innovate as well. Seeing the realization of a universal app on the desktop, tablet, phone, and TV (Xbox) is a perfect example of that realization and innovation. Microsoft sees its future now, and I have to admit, I'm pretty excited about it.
Did I mention big announcements? Now while most of us expected more WinRT everywhere, this is where they exceeded my expectations. By targeting WinRT for your shared app code, you can bring that app to all screens, including Xbox One, with roughly the effort required to build a universal web application. That's a native app on every screen with one shared code base! It's a huge deal that only starts with the windows platforms. The no-brainer, of course, is the massive cost savings this brings to Windows app development in terms of broad WinJS support. You don't need a web team and an app team anymore; they can be the same team now. This will no doubt lead to an app explosion on all Windows platforms and start to finally marry the open web with a great native app experience. An experience no other mainstream platform has come close to accomplishing well. Even the great Gmail mobile web app can't touch the native Android app, it's a gap other platforms won't close without this type of innovation. This is the difference between embracing developers and tolerating them. The large mobile incumbents have not invested here because they don't need to love developers for developers to come to them. I think that's a mistake that will cost them in the long term. Just look at Microsoft and the web pre-Chrome & Firefox. Microsoft and Xamarin have this one right; this is the future...and for the first time in a while, the other guys will be playing catch up.
First, let's all take a deep breath and be thankful they didn't call this the Windows Phone Personal Assistant. Cortana is everything I hoped she would be in this release and then some. Natural language is the future of mobile input, and this piece of the Windows ecosystem was critical to get it right. THE number one thing that keeps me using a Nexus phone is its amazingly accurate voice input and dictation throughout the entire OS. It's hard to know just how accurate the new Cortana system will be without actually using it (huge letdown, BTW), but with everything demoed; I'm convinced the foundation is there to be as good or better than the mainstream competitors right out of the gate. The things that set Cortana apart right off the bat are her personal assistant focus and her deep 3rd party application support. She knows about your email, calendar, contacts, search, etc., and can anticipate your needs throughout the day, similar to Google Now. We also get the same engine and hooks as the Windows team. We can plug in our apps and take advantage of Bing's search and context capabilities while leveraging our custom functionality. There are some great talks on this already available online from the conference, which every current and potential Windows developer should look at. I'm just as anxious to see Cortana on Windows proper, but there were no official announcements. But you can easily see the future here, Cortana following you from your work computer, then to your phone, and finally at home on your Xbox... fascinating stuff.
The next generation .NET compiler. Roslyn is now closer to reality with its latest preview release, made open source on stage during the day 2 keynote by Anders himself. Gone will be the days of C# in with IL out on the other side, not knowing exactly what the compiler is doing. This project effectively opens up everything and turns the compiler into a platform. This could lead to so many new and innovative languages, language features, analysis tools, and C# scripting; the possibilities are so numerous that it's impossible to list them all. I'm already using tools that leverage Roslyn in my day-to-day, like SemanticMerge, which goes beyond a basic side-by-side diff and delves into what changed in your code. Imagine more tools that genuinely understand your code and can show you in-line refactors with actual code or real-time translation from c# to vb.net. Roslyn is going to open up the world of .NET to not only tool makers but other platforms as well. This will power the open, powerful, and cross-platform future of .NET, and I can't wait to leverage it in my tools.
The new community-driven foundation is charged with strengthening the future of the .NET ecosystem. Initially, this confused me a bit since I thought that was the mission of the Outercurve foundation, but they just released a post explaining how they will move forward with this new announcement from Microsoft. Either way, this is all very good for the .NET ecosystem. In my mind, this announcement puts an official stamp on Microsoft's commitment to open source and the future of .NET. This will ensure that .NET lives on with or without Microsoft. It's a big deal, and I'm happy to have been there to witness it in person.
There was so much Azure on day 2 that it's hard to keep track of everything. From my perspective, I won't get into the many launched features but rather take a step back and reflect on where this is going. The main takeaways for me are these. First, Azure is the platform that will drive the next 30+ years at Microsoft. Just as the future of games will be "cloud-assisted," so will be the future of Windows and other client operating systems. Need a new desktop, provision it. We'll all be surprised by just how fast this takes hold. There is too much potential to leave it bottled up on individual system specs. Hell yeah, I want my ultrabook to play Diablo III at the highest possible settings... spin up a couple of VMs for me in the cloud to get their render on and make it so. Client-server is out, and client with cloud assist is in. I know this is not a new concept, but it's finally on the verge of becoming mainstream in a big way, and Azure will be a massive part of that future. Second, Azure will be nearly impossible to ignore by developers and companies moving forward. Their unique PaaS offerings, most of which I've been using for some time, are first-class and are only getting better with each iteration. Websites and Mobile Services alone could power your entire business on any screen with any platform. Any client with any back end using any storage mechanism is powered by Azure. If you ever needed proof that Microsoft loves developers, spend a day on the azure portal and try it yourself. Finally, SMB private clouds beware because there is little need for you anymore. At this point, Azure has support for just about any IaaS management scenario that is both competitively priced and often superior in terms of features at the private level. What small company can afford private racks in 3 geo-locations, replicating in near real-time with automatic network load balance and failover? Even for companies doing that today, I can't imagine a scenario where they couldn't save a significant amount of money with a much better story using Azure or others. For better or worse, the enterprise internet takeover has begun, and Azure is on the front lines.