My takeaways from BUILD 2016
There was a lot of information to ingest at BUILD this year. Whether you're working with Xbox, Azure, Windows, or even containers on Linux, I would find it surprising if there wasn't at least one announcement that touched your development universe. Even though there were no toys given away and it was way too over crowded, I felt it was one of the most interesting BUILD's in years. With that said, here is a quick overview of what I took away from the event and what I'm most looking forward to in the coming year.
.NET Core 1.0
If you've been following the beta and the community stand ups from the ASP.NET and Core teams, then you already know about the shift to v1 Core. Even though this change was costly in terms of time, it's a good move for the long term. Core is absolutely the future of .NET. It delivers on what most .NET developers have wanted for years, true xplat development. With Java now in an Oracle choke hold, this will make .NET even more attractive to SMB's and Enterprises. Core also sheds so much of the Windows weight, making if feel and operate more like Node...and that's a very good thing. Finally, with bringing Mono into the fold, this paves a very clear path from full .NET/Mono on Windows/Mac/Linux to a Core only future. Competing xplat frameworks for .NET is not good for the community, so this is a hugely positive move for the future. For all things Core, check out the Github site.
Conversations, Intelligence, and Bots
The day 1 keynote was littered with information on the new conversation based platforms of the now and near future. If you are already a Slack user, a Siri/Cortana/Google/Alexa user, or even a veteran IRC user, then you are no stranger to bots. The big difference now is the intersection with machine learning and the ubiquitous adoption of webhooks in our applications (integrations). Basically, we've moved from sandboxed bots, to learning bots that can talk to each other. This "new" platform opens up the entire world to advanced application interactions via the interface or "head" that we are already used to. Think how easy it is to use voice dictation or thumb out a text message. If you can do that, then you can book a flight, make reservations, schedule appointments, you name it. We can move beyond complex native apps or the mobile web...the interface we need already exists. The devices we have already know so much about us, it's about time we put that to good use. You provide the language, your device/service provides the context, and the intelligent bot does the rest. This entire area of development and technology has been a personal interest of mine for the past couple of years and I'm excited to be a part of the platforms future. DevOps was essentially born from this, so I see this next step, the intelligent conversation, as a natural evolution to the automation and integration story. For more in-depth information, check out the Microsoft Bot Framework and Microsoft Cognitive Services.
WebJobs are dead, long live
WebJobs Azure Functions. In a clear answer to the AWS Lamda service, we now have the Azure flavor of event based on-demand code execution. This particular need has been especially confusing, if not impossible, to implement in Azure over the years. Should I use a worker role? A WebJob? A Node job on the Mobile app service? I could go on. We all have jobs we need to run. Some need to run based on a specific event and some just need to run on a schedule...Some may need to just run on demand. Given that there are so many use cases, no single app model has solved this with the promise of all the cloud has to offer. Functions answer the call by offering simplified triggers, making it easy to get data in an out through bindings, and handling the container bits for you...It feels like a complete solution that is enterprise ready. Getting production code running reliably without having to dwell on cost, scale, or availability has huge implications. Where did we deploy that Slack slash command webhook again? Functions is a big step in the right direction and I look forward to using the :poop: out of it. For more info on the full announcement, check out the Azure blog.
Service Fabric is here
Demoed at BUILD last year in it's bare form and touted as the battle tested system that many of Microsoft's own services run on, is finally generally available to the masses. Microservices are here to stay and if you are not already building your services this way, then you will be soon enough. There are huge advantages to segmenting your services, like independent updates, versioning, and scale. Not only that, but the fabric also maintains the reliability of your services, dealing gracefully with failures, and even managing state. In addition to microservices, it also supports the virtual actor pattern via reliable actors. So if you've looked at or are familiar with frameworks like Orleans, then you will feel right at home here. I'm currently working with Orleans on a large project, so I'm especially interested in how I can leverage service fabric and it's actor implementation. For the full run down, carve out a couple of hours in your schedule and head over to the Azure documentation.
Bash and Linux on Windows
Seriously. No VM here, this is Linux on Windows running natively. While some might see this as pandering, I see real productivity value here. The ability to apt-get packages and get development environments setup easily is a huge boost to local development. Redis, Mongo, you name it, will be so much easier to setup...not to mention the plethora of support on the web. I currently use both Mongo and Redis in my .NET azure apps and both do work on Windows as well, but this will be my preferred method of development moving forward. Can even install emacs if that is your thing, but for those that just want to get more comfortable with Linux, then this should be a very welcome addition to Windows 10. Not all packages will run just yet, but you can expect this feature to keep getting better over time. Scott Hanselman has a nice writeup on this feature over on his blog, check it out.
Xbox, UWP, and Hololens
Xamarin for all
This one was expected, but it was great to hear it officially announced. I did find it surprising that even the community edition will get full Xamarin support...and they even one-uppped that by open sourcing the SDK. They made some really nice tooling improvements for the Visual Studio integration, especially the iPhone emulator display. You still need a Mac connected, but it's one less thing you have to do in order to test your iOS app. The most impressive part of the Xamarin stack to me was the Inspector/Workbook. This app allows you to inspect your WPF, Android, iOS, or Mac app in real time. It also functions as a REPL by allowing you to execute and evaluate code in line. It's Linqpad meets the quick watch debug window. To top that off, the entire workbook is stored in MarkDown format, so you can actually build interactive documentation by simply loading your repo's README.MD file. There are so many applications for this. I highly recommend you download the Inspector for both Windows and Mac, you'll have a lot of fun with it. I also recommend you check out Miguel's session in which he demo's a lot of this functionality on the Mac.