The beauty of attending conferences is not just about hearing the latest and greatest (which you can read on the internet anyway), but it's the time away from the daily job that allows you to really immerse yourself in new information. If you can, I recommend attending a conference in another time-zone so that the changes that you're checking your email or other collaboration tools are minimized. And it doesn't matter whether you're catching up with some technology or practice you've been ignoring, or just trying to pick-up some nice ideas that will help you during your next design challenge, it's all worth it.
So next to all the cool stuff about Microsoft's new universal platform and the cross-platform mentality that we've been seeing throughout the Build 2015, I've obviously attended numerous sessions not directly related to that. Not all were great. Heck, some were really bad, which is not to say about Scott Hanselman's sessions since he is by far the best speaker in the entire .NET ecosphere. Regardless, I collected a couple of takeaways that you might be interested as well.
Since my current client is using Amazon AWS, I've been neglecting Azure for the most part although I know that the number of features have increased considerably since Scott Guthrie took charge. This week, that same Scott claimed that there are now more data centers than Amazon and Google combined and they're running 1 million servers now. Irrespective of the truthfulness of those figures, the feature set of Azure is stunning. I think you can safely conclude that Amazon services are mostly about infrastructure whereas Microsoft is trying to solve real business problems.
Mark Russinovich (the co-author of Windows Internals) showed the Azure Resource Manager and how to build templates for complex deployments consisting of many resources (web sites, databases, networks, security elements) and how to parametrize them. I'm not sure how this relates to PowerShell DSC and how it compares to its open-source equivalents as Vagrant and Puppet. But after this session, I came to realize how little I know about Azure.
During my trip to QCon last year, I already concluded that the operational side of micro-services is going to be the biggest hurdle. And as expected, several companies tried to fill that gap, including Microsoft. Service Fabric is their micro-services hosting platform which supports both stateless as well as state full micro-services. The former would use a relational or NoSQL database for persisting state, whereas the latter can use something that Microsoft calls reliable collections and dictionaries. This reduces complexity by not needing any persistence mechanism. Service Fabric also supports a third type of services though Microsoft's own actor framework. It was used in all Service Fabric demos, so obviously it's still being developed actively.
Scott Hanselman demonstrated another Azure service called Azure API App Services. In essence, you're just looking at WebAPI controllers hosted in Azure, but enhanced with rich telemetry support and very sophisticated operational dashboards. Migrating existing WebAPI controllers to Azure API Apps appeared to be nothing more than adding a couple of NuGet packages. And if those services use Swagger, you'll make your DevOps teams very happy.
Swagger and Swashbuckle are fantastic for adding API documentation to your HTTP services. It's used by Microsoft internally to create the Azure SDK. Swagger can even serve as a kind of WSDL for those services. Both Azure API and the new Logic Apps rely on that heavily. You can do yourself too, for instance by using AutoRest to generate code from a swagger-enabled rest API that hides the HTTP ugliness. And if your services run in the cloud, you can use RunScope to debug HTTP APIs for debugging cloud-based web services.
Related to that, Azure Applicatoin Insights can do something similar on a much broader scale. Just add a NuGet package to your web site, mobile app or Windows application and access the diagnostics environment on Azure. The application itself doesn't even have to be hosted on Azure. It looked so impressive that I believe this can rival with AppDynamics or New Relics products. The speaker mentioned that you can also use it to monitor iOS and Android apps, but I missed the explanation on how that would work.
On Visual Studio 2015
- GitHub has been working with Microsoft to better integrate Github in the development experience. The first enhances the Git Team Explorer with GitHub-specific features such as two-factor authentication and pull request. The second add-on allows you to search directly for code on Github from within the Developer Assistant.
- Web Essentials, Mads Kristensen's pet project, is receiving support for ReactJS, a long term request.
- Visual Studio 2015 RC has built-in support for JSON Schema, is much faster than the CTPs and now allows you to edit-and-continue while debugging.
- CodeLens, a feature only available in the Ultimate versions of Visual Studio 2013 is now available starting at Visual Studio 2015 Professional.
- The performance analysis tooling in Visual Studio 2015 is pretty impressive as well. E.g. PerfTips give you the execution time of statements while your debugging your code. It tries to ignore debugger overhead as much as possible and is available in every edition of Visual Studio 2015. It also supports memory snapshotting and comparisons while debugging and provides many tool for diagnosing network usage and WPF/XAML rendering bottlenecks.
- Talking about embracing Android and Apple, there's now a Windows Phone emulator for MacOS. Go figure that.
Other random things
- AutoPoco is a nice tool to generate test data based on conventions and a fluent API to easily create semi-random or batches of similar objects.
- ManifoldJS can generate container apps from a mobile web app for all major platforms using a single command-line.