Build 2020

Sunday, May 24, 2020

Microsoft Build Conference 2020

The Microsoft Build conference was this week and although we are still sheltering in place from the COVID-19 virus I got to attend. The Build conference was 100% virtual this year and that didn’t detract from anything except the hallway conversations. There were session going on live for 48 hours straight from Tuesday morning at 8AM through to Thursday morning at 8AM. It was quite the experience. It was like drinking from the firehose, and the knowledge transferred did not disappoint. In the past only a few thousand developers have had the chance to attend. This year though I heard there were over 220,000 developers registered for the event! WOW! Let us look at what was announced.

.NET 5

Today Microsoft has a problem in that it has the .NET Framework v4.x and the .NET Core v3.1. This confuses the ecosystem and people aren’t sure what to code for anymore. At Build they demonstrated the coming attraction of .NET 5. It isn’t Framework and it isn’t Core. It’s just .NET. Preview 4 was released at Build and they showed it off. They announced that .NET 5 will release in November.

Blazer WebAssembly

Blazer is a .NET technology that allows a user to write web applications on either the client or the server. Blazer Server pages have been out since last November, but at Build this week they announced the new Blazer WebAssembly apps are now released. The difference is that with server pages you have a socket connection from your client side back to the server to run everything on the server. With WebAssembly though you run your .NET code in the client. Yes you read that right. What happens is they take a small .NET runtime (this being the Mono runtime engine) that is compiled to run in WebAssembly and pass it down to the client. Then your DLLs are compiled and passed to this runtime and your .NET code is run natively on the client. It’s pretty cool technology. Think Silverlight but without the runtime that needs to be installed. Every modern web browser has the ability to run WebAssembly. In theory that means that every modern web browser can run these Blazer client apps. I look forward to see what people do with this technology. At Build they mainly showed business apps with it.

WinGet

A surprise announcement for me was WinGet. This is a tool to install software on your computer using the command line. Think, winget install powertoys and the Windows PowerToys get downloaded and installed from the command line. There have been tools like this before, like Chocolaty, but they weren’t from Microsoft. WinGet is from Microsoft. However, that doesn’t mean that it is only for Microsoft products. You can create your own package for the package manager to install. Simple instructions provided in that link.

Windows Terminal

Last year at Build Microsoft showed a sizzle video for a new Terminal for Windows. Since then they have provided preview builds for us. I remember the first build of it they didn’t have an installer yet so we had to build it from code. Ahhh… memories. Anyway, at Build this year they released version 1 of the new Windows Terminal. They also announced a preview build so that going forward you can be on the preview release that will have faster updates to see what is coming before it is fully baked into the released version of the terminal.

Project Reunion

Should I build my app in Win32, or in UWP? Or maybe I should just stick with WPF. WPF has all the nice new technologies for fluid design framework, but I could use XAML Islands in my Win32 app. However, UWP apps are run natively on Windows 10X. There’s too many choices from Microsoft. Is UWP dead? Probably not, but the way I have been doing them is (JavaScript UWP Apps). So what’s a developer to do? That’s where Project Reunion comes in. Microsoft will make it so that the line between Win32 and UWP is blurred more. All of the system technologies that we are used to using in UWP apps will be available to Win32 apps, and the other way is true too. How this will work in reality land is beyond me right now. Hopefully it is more concrete than Project Centennial where they were going to make it so that Android and iOS apps would come to Windows easily.

WinUI 3.0

You want your app to be pretty. You want to use the most up to date components possible. But you have to satisfy a corporate customer that uses Windows version 1709. What do you do? In the past you would have to target 1709 and only use components available for that platform. With WinUI 3.0 however you can target the latest and greatest WinUI components and they will just work on 1709 or any version after that. How? Well WinUI 3.0 will decouple the UI Components from Windows and ship out of band. That means that the latest and greatest components can be used way back in 1709.

MAUI

Ahh, Hawaii. No, not that Maui. This is MAUI: Multi-platform App UI. Doesn’t that sound relaxing? Anyway, Xamarin Forms has a problem that you have to write separate UIs for Android, iOS, Windows, and macOS. The basic development paradigm is you have all your business logic shared, but then new UIs for each of the targets you have. With MAUI you can have a single UI target and it’ll pick the native components when it’s compiled down for each of your targets. This one is way out there though. Microsoft is looking at shipping MAUI in November 2021. In time for .NET 6.

Azure Static Web Apps

This site that you are reading this blog post on is written in Hugo and hosted in an Azure Blob Storage with a CDN on top of it to serve the pages. It was a bit of a pain to setup and maintaining it isn’t as easy as it could be. The setup of the Azure DevOps side was confusing, and although it works I am sure it could be done a better way. Enter Azure Static Web Apps (Azure SWA or just SWA). SWA allows a one stop shop for setting this up. It also uses GitHub Actions to deploy. You run through a simple wizard to get all the information for your either JAMStack or static web content site and poof! It’s live on the internet with free SSL and custom domain. It’s in preview right now so it is free to test. I tried it out and found that it is simple to setup and run. I have a site for my family recipes. It is also written using Hugo. Azure SWA took the data and pushed it to the web without any problems! The only downside is currently you can only point to a www domain. You can’t have naked domains and you can’t use something other than www. Also you have to have your code in a GitHub repository. I’m sure these limitations will be fleshed out sometime between now and when it actually goes live.

I’m sure there’s a lot more from Build as this was only what I got from it. There’s a lot more out there and I will have to dive into it to find out the other announcements. I know there’s Microsoft Lists, Fluid, and the Microsoft Graph. These are topics I’d like to investigate further. If there is anything you would like to see in more depth drop me a note on Twitter @spatacoli. Thanks!

WindowsBuildNETBlazerWinGetWindows Terminal

Build 2020 Part 2

Intel NUC 10