My Thoughts on the Microsoft Build 2020 Conference

Delve deeper into Microsoft Build 2020 with my extended reflections, following up on discussions from Episode 361 of the Microsoft Cloud Show podcast.

By Last Updated: May 25, 2020 10 minutes read

Last week, Microsoft held their annual Build conference. Unlike previous years, this event was entirely online due to the current pandemic. It’s quite an undertaking switching gears just two months out from the show and taking an in-person 100% digital, especially when everyone involved is limited to collaborating virtually in today’s this work from home environment.

Overall, I thought it was a good event. They got some good press from the usual players like The Verge, but also picked up some accolades in areas you don’t normally see, such as CNN!

Chris Johnson & I shared some of our thoughts on the conference in this week’s episode of our podcast, the Microsoft Cloud Show: Episode 361 | Microsoft Build 2020 Recap (to be released on Tuesday, May 26). In this post, I want to spend a little more time reflecting on the event.

Build - Logistics & the site

The show opened with the typical keynotes & these were distributed via the livestream. The livestream was available from the conference site, Channel9, and the Microsoft Developer YouTube channel.

The keynotes where the presenters tried to be funny or play up the work from home aspect were annoying. We get you’re working from home… but guess what? So is the rest of the world! Calling a PM to talk about a new feature and interrupting them walking their dog or stopping in your kitchen for a drink while you talk to the CEO of GitHub? Lame… I don’t tune into a technical conference for comedy or entertainment, I tune in for the news. If I want entertainment, I’ll pay Netflix, Amazon Prime, Hulu, HBO, Apple or Disney+ for that.

I found it odd the the livestream was in multiple places, but ok… I get you’re going for mass exposure. However, once we moved into the breakout sessions the frustration started to rise. Search didn’t work when looking for a session as it wasn’t finding keywords I knew were in session titles, the filters to show live/pre-recorded sessions weren’t working and mixing things up, and the “sessions on now” was mixing in pre-recorded content.

And while it was an entirely live conference, why did they wait to post recordings of the live sessions until after the event? Then you had to hunt for sessions between the multiple sites I listed above?

Ultimately I gave up on the conference mid-way through the first day and decided I’d come back on Friday, May 22 when the show was over.

The next conference like this is Ignite in September. I hope the consolidate things down to a single site, or at least make that single site the portal for everything. If it’s a virtual event, why not take a page from YouTube TV & use their interface as inspiration. You’ve got a place for live content split across channels & a DVR section for recorded content.

General developer news

In the general developer category, two things stood out to me.

HttpRepl

The first being HttpRepl. This is a slick cross-platform command-line tool you can use to test REST APIs. This is alternative to Postman for those who like to work the command line.

Codespaces

The other thing that caught my eye was Visual Studio Codespaces. This is a slick way to get a project running quickly without having to configure your local dev environment. Codespaces uses a container as the host to clone your project and install dependencies. You then access the code with a web implementation of VS Code. GitHub introduced their (Codespaces)[https://github.com/features/codespaces] a few weeks back at their Github Satellite conference..

Learn more about Github Codespaces

Check out the breakout session from the GitHub Satellite conference on Codespaces: GitHub Satellite: How to get from idea to contribution in minutes

CJ and I talked about Github Codespaces in episode 359 of our podcast. Check it out: Episode 359 | Github Codespaces, NFL Teams Teams, and the News

Azure

Static Web Apps

The big news from Azure at Build was around Static Web Apps. This is a simplified getting started approach to how I set up my blog using Hugo.

There are quite a few things to like about Azure Static Web Apps (SWA), most importantly the set up process is quite simple, especially around setting up custom domains. The authentication capabilities are neat, but I question the usefulness of authentication in a static site.

The way Static Web Apps handle PR’s is also quite novel, giving you an easy set up for previewing content before you push it live. However, it seems like it’s overkill and more work than most people need. I prefer the set up I have with a single preview site a bit more.

All in all, a slick offering, but I think I prefer the manual set up that yields a bit more control over your set up & configuration.

Catching up with Mark Russinovich

The interview Seth Juarez had with Mark Russinovich in Mark Russinovich on Azure innovation was fantastic. I love hearing the behind-the-scenes of Azure. Mark also talked about Dapper and showed how it can be used with Azure Bastion… that was pretty slick!

Azure external identities

The Microsoft Entra ID team introduced some slick management features around external identities. These external guest users can be a pain to manage that have kept many organizations from enabling them in their environment. The ability to segment users to specific apps, auto expire unused accounts, unified social logins and more are great improvements.

Microsoft.Identity.Web is FINALLY a NuGet package

I think Microsoft could do a much better job simplifying authentication and authorization with Microsoft identity. Case in point is the need for this huge code library to handle wiring up Microsoft identity to ASP.NET Core, MSAL & OWIN middleware. Last year, I worked on some content for Microsoft that dealt with this “library”… the instructions in Microsoft’s official documentation was to copy this huge project into your project and make some edits.

No sensible organization would do this. It was crazy to expect someone to copy a ton of code into their project even if it was from Microsoft. How are fixes communicated or rolled out? I, along with many others within Microsoft, were shocked this was even introduced.

Thankfully they got their act together and released it as a NuGet package: Microsoft.Identity.Web.

Microsoft 365

Unfortunately, there wasn’t too much news in the Microsoft 365 developer space this year.

Microsoft Lists

Their big news was around Microsoft Lists, yet it has nothing to do with developers. Strange time to make this announcement… seems like this could have come next week or the week before so it wouldn’t get lost in other news. But… oh well.

It appears they’ve taken the list concept from SharePoint, promoted it to a first class app, gave it a UX treatment and “re-introduced” templates we previously had. I see how end users will like this, but I can’t shake the feeling that I’m missing something. Microsoft had a large marketing push for this “new” feature from podcast interviews, blog posts, videos and more. Seems pretty simple to me, but their marketing makes it sound so much bigger.

Adaptive Cards

This is a cool bit of tech that isn’t new, but has some good momentum behind it. Adaptive Cards, based on the actionable message format, can be used to define forms or data presentation elements using JSON and allow the hosting application render them as they see fit. They are supported in Windows, Outlook, Microsoft Teams and many more clients. Developers can use the SDKs to implement Adaptive Cards in their own apps and experiences as well.

In their session from Build, they shared updates around the templating library, design updates and a look at Adaptive Cards v2 as well as a roadmap to where they are going in v3 and beyond!

Microsoft Teams VS & VSCode extensions

This was probably the most disappointing part of Build. A few months ago I had an opportunity to preview the VS Code extension. It appears from the session at Build, the team hasn’t incorporated or considered and rather dismissed the feedback they received. This mindset is so frustrating… more and more, it seems like the Redmond motto is “One Microsoft & One Microsoft Teams”.

These extensions are supposed to make it easier to start building a Microsoft Teams custom app. Unfortunately, the group decided that if they didn’t build it, it doesn’t exist, so they’ve completely ignored the popular community project Yo Teams their own docs even highlight. The Build session stated you’ll be able to import an existing project into their tooling, but that’s doesn’t work in the preview release today.

In addition, their extension only supports JavaScript based apps, not TypeScript. The extension also seems to think developers will publish their customizations straight to the app stores either for their organizations or the public stores straight from their editor. Hardly anyone does this or wants to do it! This is such a bad practice to encourage. Submission of a custom app to a store should be part of a bigger process. Promoting bypassing automated tests and the like is crazy.

One of the best parts of VS Code was moving away from this “one massive IDE that does everything.” VS Code is for CODE… yet this extension uses it like host for their extension. It’s not clear how this differs from App Studio, the app that’s already in Microsoft Teams and does a lot of the manifest editor stuff this extension does.

It’s disappointing the team decided to create two new extensions for developer environments to solve tasks that partly already are solved by App Studio or, in the case of validation, add capabilities to App Studio.

Learn more about Microsoft Teams developer extensions

Fluid Framework

This is a strange one. The Fluid Framework & components are intended to let people collaborate across apps on documents, bits of content, and more. For example, you can embed a table in a Word doc and we can collaborate on it from Word or straight from an email. Cool tech, but… what’s the real-world use?

We keep hearing this is going to be the next great thing from Microsoft 365 for developers but the scenarios just aren’t there. From my POV, they started talking about this way too early (Ignite 2019) and have yet to answer a simple question: this looks like a Microsoft-centric implementation of web sockets that will only work in Microsoft apps - why would I use this over web sockets for my custom apps? I get why I’d use them in Office apps, but that’s not a developer solution, that’s a power user or collaboration or productivity solution.

For me, jury is still out. I don’t get it yet… maybe Fluid Framework is going to be epic… but it’s got a long way to go from messaging to substance before I can see it.