This article is neither a comprehensive review of this year's Build conference nor does it represent an official viewpoint from my employer, purely personal thoughts on what I experienced last week.
Developer conferences like my employer’s Build Conference are a typically a strange mix of professional, personal, stressful, fulfilling, social, challenging, intense experiences that culminate in a feeling of “that was kinda good but thank god it’s over”. I just reached that milestone for this year’s edition and figured I might write down some thoughts this time around in the spirit of blogging more.
The theme of the main keynote this year was intelligent cloud, intelligent edge. I’ve personally struggled to relate to these terms in the past so it was good to get some time to hear more about what we mean by them as well as to translate them into tangible concepts and demos.
The three foundational technologies that were covered as part of this were ubiquitous computing, AI and Multi-sense, Multi-device experiences. Ubiquitous Computing is a no-brainer to the author; this article was written using several PC's, an iPad and an Android phone using Word. I was prompted would I like to continue as I move amongst devices thx to WIndows Timeline. Any application or experience that can't offer this from the get-go will struggle to gain adoption (which is also why i like Todoist so much as they started with this vision also). As more and more devices become intelligent and cloud connected, technology starts to melt away and become invisible as it simultaniously becomes pervasive.
Much has been written about this wave of AI which holds much promise and is an area that is exploding in many dimensions. One of the phrases used by Satya that resonated with me was that it is less about the breakthroughs in research, more about how those can be translated into frameworks and tools to enable devs to have impact in every industry: commoditize so that anyone can use it. This definitely speaks to the Innovation=invention + impact equation that I'm fond of. Where AI is concerned, it is also reassuring to have topics such as ethics and privacy front and center, and getting so much emphasis from Microsoft and others. The pace at which the frontiers of AI are moving forwards and opening up new opportunities is dizzying but it isn't just the tech it's how we build frameworks to incorporate into society, government, law etc.
The demos that really brought home the concept of intelligent edge to me were seeing both a DJI drone as well as a Qualcomm intelligent camera run the same ML models trained in the cloud, doing inferencing locally without the need to upload. As a photographer, the evolution of the DSLR into a SmartSLR has been rattling around in my head for a while now and I can really see that as a shining example of the intelligent edge. More on that in a future post. As a side note, the fact the DJI has an Azure Machine Learning SDK in beta has made the desire to pick up a drone overwhelming at this point :-)
In the same way that tasks are now accomplished using a wide variety of devices with the state stored and preserved in the cloud, so too are input modalities beyond the traditional taking off with speech and "intelligent speakers" showing the way with voice input. But why should you only use / interact with a single chosen / blessed solution? What if you want to mix and match different assistants for different tasks? The Amazon Echo / Cortana demo shows a solution that is, to me a user of Cortana, Google Assistant, Siri etc, encouraging as a trend: enabling interop between assistants. The demo showed Cortana summoning Alexa and vice versa to have each one accomplish tasks they are good at in the form of Hey Alexa, open Cortana and read calendar. I hope that in the future the trend continues to encompass more of the solutions between providers.
The remainder of Satya's keynote talked about the Microsoft Graph and how spatial and IOT data types are being incorporated via HoloLens to benefit / target "first line workers". This was brought together and portrayed by Lorain Bardeen in a "meeting of the future" demo powered by AI. I'm not going to attempt to describe / summarize this but is well worth watching.
Scott Guthrie Keynote
Scott Gu is obviously the man. I say obviously because a) he’s been an idol of mine for the past 15 years or so and is a big part of why I moved to the US and joined the company, b) he runs half of Microsoft c) he came out with the best line in all of the Build keynotes this year: upon taking a handheld mic from Scott Hanselman and holding it for him “let me add some value” so the “lesser” Scott could keep typing / doing his demo. Priceless. Oh and d) um yes OK he is now my boss as well. Aside from the overall greatness of the man himself, this keynote contained the following items that I plan on investigating further and or trying out:
Visual Studio Live Share: this is such a freaking cool idea / feature which enables collaborative / peer programing between different machines running different instances of Visual Studio and / or VS code. Instead of emailing a colleague to get help with debugging an issue, you can now start a realm-time collaborate and develop debug together, remotely. My only follow-on question here is when can I do this in c++ projects as well as .NET ones.
App Center integration with Github: this was such a slick demo that showed new integration between github projects and App Center for cloud build, testing etc. Having set this up manually using appveyor for the Audiovisualizer project the simplicity and capability really resonated with me, must give it a try for that and future mobile projects
Server-less functions / workflows: I was still mentally and physically transitioning from monolithic to micro services when the server-less wave came along so color me a bit on the back foot with this one. I have yet to try Azure Functions out in a real-world project (hopefully golang is supported) but was certainly inspired by the “Scott or Not” demo showing how easy it is to set up an API and also trigger cloud workflows without the need to set up a server: https://github.com/azure-samples/iotedge-scott-or-not
CosmosDB high performance multi-master write. I’m not a user of Cosmos-DB for any of my personal projects currently as I tend to do more mobile-centric things and hence prefer the offline first, REST-less approach delivered by the excellent realm.io cloud platform. However, the PXDraw demo (give it a try!) that showed off new mult-master write performance was certainly impressive and, coupled with global high availability, could be interesting / relevant in the future.
JoeB Day 2 Keynote
JoeB kicked off day two by setting out some of the vision around Microsoft 365 bringing together Windows and Office. Some highlights for me included Windows Timeline coming to iOS and Android and, gasp, making your PC a perfect "second screen" to your phone via a new app that let's you read text etc from the desktop. Times really have changed, haven't they?! He also showed off "Sets" that enable the grouping of windows / tasks together. Kevin Gallo showed ML powered grammar checking in Word, Linux line feeds coming to notepad and a new revenue sharing model for the Microsoft Store. And Charles Morris showed off Adaptive Cards and how you can use them to pay bills in the browser. That's my attempt to condense 90 minutes of content into a single paragraph :-)
Day Job: Composition and the Visual Layer
The Windows Composition team that I’m part of builds the Visual Layer for Windows: basically the rendering and animation stack that powers the user interface. The big news this year is that “modern” XAML can now be used not only in UWP apps but also WPF, Winforms and plain old Win32 using a new capability called XAML Islands. This is something we have been working to enable for a while now hence great to see it finally see the light of day. Islands make it possible for existing app codebases to incrementally adopt new UX tech without the need for a wholesale rewrite.
The foundation for this capability is a new API we shipped in the Windows 10 April update called DesktopCompositionTarget that enables rendering, effects and animation capabilities from Windows.UI.Composition.* to be accessed in Win32 apps, hosted in an HWND without the need for a CoreDispatcher (in case you are interested, DispatcherQueue is the new concept we introduced in the Fall Creators update that works in UWP and Win32 which enables a win32 app to create a Compositor object. Okay, okay too geeky). Expect to see a sample showing how to do this soon. On top of this building block, XAML Islands will provide a higher-level way of plugging in modern UI. To learn more check out Mike Harsh and Scott Hunters session as well as well as .NET Core 3 Present & Future again with Scott & Mike. TODO: .NET ROCKS
In addition to XAML Islands we also talked about and showed
Vector graphics in the visual layer and Lottie, along with new Fluent Building blocks like advanced physically based drop-shadow API's: Creating Innovative Experiences for Fluent Design using the Visual Layer, Danielle Neuberger, Sohum Chatterjee more on this coming soon.
Various Talks and Updates on Fluent Design: https://bl.ocks.org/clarkezone/raw/743bea584b960803ecaf2765e527618d/
In addition to the sessions, there was an expo that was expanded this year and included a bunch of teams / demos.. the Comp team were manning Windowing and Composition because we like composing stuff ;-)
Other sessions in my Queue
Since we are now shipping full support for C++/WinRT in the Windows 10 April SDK, it is dead simple to create a C++ XAML project in Visual Studio. Because of this, the time is ripe to learn more about C++/WinRT hence this one is worth a watch:
- Session: Effective C++/WinRT: https://www.youtube.com/watch?v=nOFNc2uTmGs&feature=youtu.be
- Session: How to Adopt Modern C++17 into your C++ Code: https://www.youtube.com/watch?v=UsrHQAzSXkA
I'm doing a personal push to update all of my Composition samples to C++/WinRT as we are seeing strong interest from ISV's keen to move their existing Windows desktop/centennial apps currently using WPF wrapped around custom C++ DirectX rendering over to modern XAML, Windows.UI.Composition, c++/winrt.DirectX12. More on this in a future post.
Windows timeline, Adaptive Cards, Sets
This set of tech is all inextricably linked and all pretty interesting.. it powers much of the multi-device ubiquitous computing tech that makes roming [sic] between device so easy. These sessions are all on my list
- Session: Developing for Sets on Windows 10: Developing for Sets on Windows 10
- Session: Adaptive Cards in Bots, Windows, Outlook and your own applications: https://channel9.msdn.com/Events/Build/2018/BRK2401
- Session: Smart UI with Adaptive Cards, Microsoft Graph and Beyond: https://channel9.msdn.com/Events/Build/2018/THR2437
Having spent the last 15 years or so working with .NET, and as someone who has yet to have a chance to dive into the world of AI / ML at all, I'm very intrigued to learn more about how we're going to bring Machine Learning to that community of folks, hence will be checking this out:
- Session: Introducing ML.NET https://channel9.msdn.com/Events/Build/2018/BRK3203
Progressive Web Apps are getting quite a bit of attention right now and are appealing for a number of scenarios. There were a couple of sessions that covered the topic.. this one is one I plan on catching up on for an update on Service Worker, Web manifest etc:
- Building progressive Web Apps for Windows devices: https://developer.microsoft.com/en-us/events/build/content/building-progressive-web-apps
Google IO aka flutterconf
Heresy! I'm referencing a competitor's conference in my post about a MSFT conference! By a strange quirk of scheduling, on day 2 of Build we had day 1 of Google IO including the main keynote(s). Unfortunately this conflicted with the JoeB keynote as well as travel into Seattle so I'm still catching up on these.
Having got to go to IO last year, I definitely plan on watching some of the sessions, particularly those on Android P as well as the new Flutter UI framework which Product Manager Tim Sneath as kindly arranged into a handy dandy playlist for nubes. Google IO sessions are really high quality and there is usually some great content there. Anything that Romain Guy, Chet Haase, Tor Norbye et al did this year I will be all over. Also extremely interested in the progress on Kotlin after the big splash last year. Also worth checking out:
- Google IO keynote in 10 minutes: https://www.youtube.com/watch?v=NeF0zpT4gNE
- Google Developer Keynote: https://www.youtube.com/watch?v=flU42CTF3MQ
- IO18 Mega announcement roundup: https://www.androidpolice.com/2018/05/12/google-o-2018-mega-roundup-every-announcement-covered/
As a sidebar, cross platform UX is heating up at the moment. Flutter is looking interesting / strong, and other's are emerging such as http://platform.uno/ as well as asp.net Blazor. Interesting to see how things move forwards in that space.
My favorite part of any dev conference is without a shadow of a doubt the people part.. catching up with old friends and meeting new folks, generally annoying people by taking pictures of them. This year was no exception on both counts.
I'm not going to attempt a summary as this is already way too long. Thx for the read and sticking through to the end, hope to catch you next year!