Microsoft Build 2022
This was originally published 24th May 2022 on Linkedin and 25th May 2022 on LinkedIn
Day One
Microsoft Build Opening
Satya Nadella shared how Microsoft is creating new opportunities for developers across their platforms where he asked what we can build. When Microsoft was founded 47 years ago there were recession, inflation and the energy crisis going on at the time. What can technology can do, Build is about realising what technology can do. What can we build and what does the world need us to build?
There are ten technologies to help developers from Microsoft:
1. Developer flow, make it easier to go from idea to code and this starts with GitHub, today you have to setup a new dev box when onboarding or starting something new, GitHub CodeSpaces were launched to help counter this and can even bring this environment to Windows Subsystem to Linux. But if building for Windows, PC or Mobile you need a Windows PC but a new service called Dev Box allows you to have a compliant fully featured virtual machine to work on which can be managed like any other device in the organisation and GitHub CoPilot brings you an-based AI Pair-programmer to help develop applications and this will be generally available later this year with free access for registered attendees throughout this process.
2. Cloud ubiquity means that Azure is the world's computer and can use Azure Arc to bring Azure experiences to their own environments, there's even Azure Orbital to bring Azure to Space including the International Space Station.
3. App ubiquity with apps distributed using the Microsoft Store regardless of how they are built. Microsoft Store Ads allow apps to be more easily advertised and can even use your own revenue engine or do revenue share with Microsoft. Windows applications can be accessed anywhere, can switch between Windows PC and Cloud PC with Windows 365 and can have the most diverse set of options and break free of device restrictions.
4. Cloud-native app development and this starts with writing a microservice with containers to get from code to cloud native such as with Azure Container Apps which has reached general availability and there's also updates to the Azure Kubernetes Service.
5. Unified data, moving to a world where apps can adapt in real-time. Microsoft Intelligent Data Platform allows accelerated innovation, achieve agility and build on a trusted platform. Can have real-time learning with models using Azure AI to offer the right things at the right time and be complaint with Microsoft Purview.
6. Models as platforms, infuse applications with intelligence, Microsoft AI, rich language understanding, language translation, visual recognition and with OpenAI have realistic image generation and advanced code generation with models as platforms providing AI functionality such as Azure OpenAI services. Allow people no matter their platform everyone should have a co-pilot and adding Natural language commands to 3D modelling tools.
7. Hybrid AI, supercomputer capacity distributed across multiple devices with Windows can draw on CPU, GPU and NPUs along with Azure compute. Allow for building of AI applications and optimise for devices where there are native AI components to run inference between client and device using the Hybrid Loop development pattern with the ONNX runtime and Azure AIU. Project Volterra is a device supporting ARM development with Visual Studio for ARM with NPU and will be available later in 2022.
8. Low code / no code - developer workflow influences how a company works and now supporting express design for PowerBI to convert designs to applications even from handwritten notes and add as many screens as you want or use Figma or use Power Pages to create pages without any developer or web skills.
9. Collaborative apps to make apps more contextual and people centric starts with Microsoft Graph to get information about people, their relationships and artefacts. 50% of Microsoft Graph tenants are using graph-powered and custom third-party apps and can build live actionable loop components with Adaptive Cards. Can describe how people worth together with the place they work together with solutions being created in Teams is growing up to ten times. There's also features like Live Share in Microsoft Teams similar to experiences like Live Share in Visual Studio, can go beyond passive sharing with co-watch, co-create and co-edit content and will available in Teams SDKS
10. Metaverse, immersive experiences in gaming can help collaboration in gaming or with HoloLens for training and collaboration and new solutions to deliver across all device platforms, adding intelligence and inclusive connections with Teams and hardware and blending digital and physical presentations. Presence is the ultimate killer application, can have digital twins with Mesh when don't have camera on or have ad-hoc meetings like the office watercooler. Mesh will be a platform service in Azure to deliver experiences to different devices such as HoloLens, VR headsets, phones, tables and more.
Rapidly code, test and ship from secure cloud developer environments
Make it easier to ensure security throughout the collaboration process and code and ship from anywhere. Unleashing productivity of developers is the focus and what developers within Microsoft use every day. Challenges including collaborative and remote working especially with today's hybrid working, get developers starting coding within minutes and deploy with hours and scale elastically as needed and get familiar with new environments as you type. Microsoft is committed to support developer workflows with three core components Edit, Code, Debug with Visual Studio, GitHub and Microsoft Azure to provide building blocks to create an application that scales and have scale of enterprise and nimbleness of a startup. GitHub Copilot to help with writing code by analysing code and comments to provide assistance and not need to go elsewhere in order to figure out how to use an API and developers feel higher satisfaction with their code. Moving dev boxes to be cloud based allows for consistency of environments between dev teams such as GitHub Codespaces to help reduce bootstrapping from 45 minutes to 10 seconds which matters when switching between versions. Microsoft Dev Box is a ready-to-code workstation for a hybrid team for Windows Desktop and Xbox Game development and is essentially a Windows Desktop in the cloud with Visual Studio or SQL Management Studio and more. Can also develop applications using MAUI for one set of libraries and UI frameworks with everything you need already installed on the Dev Box, you can have the tools you need installed on Dev Boxes to include the applications and tools you need.
As code is moved to the cloud need to make sure it is secure, can use GitHub Advanced Security to start secure and stay secure, get alerts when things are about to be checked in by mistake such as secrets, can use GitHub Push protection can allow this to be proactive rather than reactive. This is just one of the things to look out for, code needs to be checked for issues with dependencies but can recommend updates with Dependabot to have updates to packages create PRs automatically and then be checked against test to make sure this is safe to be approved and merged. When code is secure, need to know if it will scale - can use Azure load testing to check the performance of an application and that it will handle the demand and can even use GitHub Actions to check performance from load tests and enable resilient practices. This also helps you to use open source securely be continuing to check updates are always happening and vulnerabilities are quickly patched.
Scale cloud-native apps and accelerate app modernization
Developers are essential to the world we live in today and can use Azure to build applications and services. Need to support the elasticity of demand as dynamic usage requirements are increasingly needed by applications so this can be done with cloud-native applications, delivered with an automated dev-ops approach to deliver updates quickly to customers. Microsoft will meet you where you are with any programming language, tools of your choice or with hybrid, edge and multi-cloud. You can start to modernise applications with Azure Container Apps that allows you to focus on the apps and not worry about the underlying cloud infrastructure and can scale from zero instances with no cost to thousands of instances when needed quickly. You can bring apps to the cloud and get applications onto Azure quickly by update code to run from a container, you then get a serverless scale based on rules such as amount of requests, event streams or events from the database, behind the scenes it is powered by the Azure Kubernetes Service which can be used later if want to go beyond Azure Container Apps, which is also now generally available for everyone to use.
Azure Kubernetes Service allows you to scale your cloud native development further, the open source draft project has been integrated to help containerise any app and automatically generate Kubernetes artefacts, also have Web App Routing to get applications running and KEDA add-on for event driven autoscaling based on incoming traffic and can deploy Grafana dashboards to easily monitor Azure Kubenetes Service applications. With Azure you can take advantage of a complete cloud-native platform including CosmosDB which is the only peta-byte scale database and can have serverless capacity for lower cost usage. You can manage apps across hybrid and multi-cloud with Azure Arc on own infrastructure or other cloud providers such as AWS and Google Cloud with business-critical tier is now in general availability. You can run App service, function, logic app, API management or event grid on Azure Arc. Developing with Microsoft Cloud puts the latest technologies in your hands and allow you to build amazing solutions.
Create next-gen experiences at scale with Windows
Windows is the platform for the world's innovation and Microsoft delivers the tools to better blend the client with the cloud and delivering hybrid compute and build on the CPU, GPU, NPU and even with Azure Compute and moving between them will be seamless. With an open platform and an open store, new app building tools, new Windows Store feature, new AI capabilities and more. Windows is being invested in as an open platform and allow existing apps to be brought to Windows. Windows App SDK 1.1 is currently in preview, if developing apps in JavaScript can use React for Windows can also use .NET MAUI to develop applications for mobile. These capabilities are being leveraged in updates to OneNote with enhancements to inking and reply annotations that were made, can use the same input and Azure speech capabilities in your own applications.
One of the biggest investments has been in the Microsoft Store, including bringing more Win32 apps to the store and the new Microsoft Store has been built for those new needs, can bring any app that runs on Windows, thousands of apps have been brought to Windows 11 with the Amazon App Store, the new store has three times the number of visits compared to the original store. You can use the Microsoft Commerce engine or can bring your own and keep 100% of your revenue.
Microsoft Store Ads will help get applications and games in front of the right customers at the right time, increasing discoverability and conversions, when customers are searching the store these adverts can be shown to them. Win32 apps are being brought to the store by Microsoft already along with API for actions for CI/CD pipelines to get applications onto the Microsoft Store easily. Windows and the new Microsoft Store allow you to reach and delight customers and is helped by feedback from developers.
Windows offers an open hardware ecosystem with capabilities for different purposes and allowing for support of NPUs or Neural Processing Units with the release of Project Volterra which comes with an NPU to allow for AI development and Windows platform will have end-to-end support for NPUs. Windows x86 and x64 apps on ARM work well under emulation but native ARM apps are also a must and enabled with an ARM-native development toolchain including Visual Studio and Visual Studio Code with general availability by the end of the year and allowing for support of open-source projects to run on ARM, making it possible to create and run native ARM applications.
Microsoft has a vision to combine the cloud and edge together and make Azure the world's computer and leverage NPUs and AI to deliver reasoning and measure performance by the power of a neural processor. NPUs allow for more efficient low power AI workloads compared to the same usage on CPUs, can also perform concurrent and continuous operations and will free up CPU and GPU for other tasks. To make an AI run efficiently isn't easy, Microsoft are building technology to help compile, deploy and run AI and is unlocked with hybrid loop pattern development which blurs the line between your edge and the cloud and are cross platform to run on Windows, browser and more with a cross-platform ONNX runtime and there will be a new Azure Execution Provider to help run the largest models to power the Hybrid Loop. Using the power of software to solve the complexity required by AI and will help people solve problems that were never before imagined and will help drive compute and have experience that scale to help build magical applications.
Microsoft Build Keynote Analysis
Microsoft Build 2022 seems to be the most developer focused Microsoft Build for a while, the theme of automation and AI assisting developers with co-pilot for everything with what we are seeing with AI across the stack. GitHub Copilot allows developers to be assisted with their code but also apply these same principles to other applications, begin an application with the sketch of an application is the major frontier in no-code development to help people get going with building applications.
Microsoft Dev Box is a game changer to developers, to allow pre-configured VMs in the cloud where you can work with Azure Virtual Desktop for different verticals, the opportunities for this also could go beyond developers potentially. Cloud-native apps allow apps with greater performance and scalability but also don't have to manage a server just have to manage your application with any runtime and any programming model.
Launch of Intelligent Data Platform for unifying databases, intelligence and governance from Microsoft for Analytics and adds an incredible capability to companies. Developers have many opportunities to develop on Windows, open as a way of doing things is core to how Microsoft does things today. Microsoft talks about the Microsoft Store is the open store, to any type of application such as PWA or Win32 apps and allow developers to monetise their applications using Microsoft's payment systems or use your own and keep 100% of any payments.
Loop components being built with Adaptive Cards to integrate into Teams, Outlook and Outlook.com and then use the Live Share Capability into Teams adding even more collaboration into Microsoft Teams and not just passively live streaming content but having active participants. Project Volterra is a developer kit as a developer platform for ARM and has an AI twist of having a Neural Processing Unit built in and find out what the potential for developing on this kind of hardware to allow for hybrid loop software development approach.
Building great apps with the open platform of Windows
Windows has four areas of innovation with open app platform, rich app capabilities, cloud virtualisation and companion experiences. Open Platform allows bringing applications to Windows can use native features and take advantage of what Windows has to offer with deep system integration and helps bring more creativity to application with Windows. When you can bring the best expression using the technology of your choice shows the power of the open platform. You can also use web technology to bring experiences to Windows with Web Apps, you can use WebView2 with access to the full Windows Platform or bring Progressive Web Apps to Windows. WebView2 is an evergreen runtime that can be shared for all apps on the system, so your app always gets the newest platform features and security fixes, the shared runtime also allows for performance improvements and is available in all versions of Windows and is supported in WinForms, WPF, WinUI3 and WinUI2 plus .NET MAUI and React Native for Windows along with having option to host with a hWnd to use with Win32 applications and also take advantage of the Dev Tools. It is also possible to deploy apps that fully rely on web standards with the PWA platform to allow for fully featured desktop applications and more web standards have been added to allow for a more seamless integration with Windows.
WSL has become an integral tool for developers allowing you to match local environment with deployment and it has now been decoupled from the operating system and available in the Microsoft Store which allows for faster access to new features and can run WSL GUI apps alongside Windows apps from different distributions if needed, with file and clipboard integration. Windows 11 introduced Android apps with the Windows Subsystem for Android built in conjunction with Amazon and Intel to allow apps to run on a broad range of devices and everything works as expected, app compatibility will continue to improve with new features such as GPU acceleration and support for Android apps to launch Windows apps and it has been updated to the latest version of the Android operating system. WSA also makes it easy to build Android apps and then can connect to it rather than an emulator then can also take advantage of resizing an application window in Windows to see how an application will handle different sized devices when running on those devices.
Windows Native Platform gives access to software and operating system features within Windows such as pen input. It is okay to use a combination of technologies within an application, what makes sense and what works best. If already have a website then can use a PWA, then already have a Windows application can use WinUI 3 and Windows App SDK in Windows 10 or Windows 11. If want to target multiple applications with the same platform, can use .NET MAUI, Uno Platform and React Native. Template Studio for WinUI has been updated to help start creating applications easily. The .NET Upgrade Assistant has been improved to help moving from .NET Native with Universal Windows Platform to .NET 6, often this just works but anything that wasn't converted will have to-do comments to aid with updating the application.
Windows 11 and Windows App SDK innovates on the Fluent Design System leveraging WinUI with new controls that use softer rounded geometry. 50% of people updated to Windows 11 for the new design, which also includes rounded corners on Windows. There is also enhancements to accent colours, along with typography with new fonts such as Segoe UI Variable to ensure text legibility at any size there's also Segoe Fluent Icons. There are micro interactions in selected WinUI controls with animations to provide feedback as users interact with the interface. If using WinUI applications will adopt system themes automatically and can interact with these values though the Windows App SDK.
When using Azure Virtual Desktop and Windows 365 allow applications to be used in the cloud and allow for tailored environments to be created. To ensure apps run well in the cloud can check apps work well in Remote Desktop and can validate and support applications for virtualisation using remote app streaming.
There are two new opportunities to help with application engagement which is to develop Windows 11 Widgets as a new companion experience in Windows and it is build on the existing Adaptive Cards platform. The next opportunity to create content experiences to evolve beyond files and often files only exist as a URL, and needed custom save dialogs and other features as users will launch files as often as they will launch apps. Need to be able to build applications that work natively with cloud content and have integrations with Windows and File Explorer and together with Microsoft Graph and can have reference to custom content and can have any content for any app to the high engagement locations, the content doesn't need to be in the Microsoft Cloud, it is just a simple configuration to allow own apps to be launched and have seamless integration of this content in Windows so don't need to build custom UI to have cloud-native files.
Building great apps for Windows - Roundtable
What makes a great app? A great app is engaging for your customers. Based on experience what areas are important to consider for building a great application users love? Six areas for consideration are Accessibility, Privacy, Performance & Health, App discovery and management, OS integration and platform support, UI look and guidance adherence.
Accessibility - outreach for end users that have some sort of disability including low sight, mobility issues. There are various ways can build apps and test for this.
Privacy - how manage customer data, policies on data management.
Performance & Health - responsiveness and system impact of application. This is important for developers and end-users. When thinking about performance and health for an app what specific metrics are you looking at?
Metrics being looked at are Reliability - crash-free sessions, Responsiveness - time taken for specific scenarios, system impact - disk footprint, active / idle memory usage, power consumption - battery life + sustainability.
App discovery and managements - How easy is the application find, what is the install and uninstall experience and how clean this process this is, how are user created content folders or settings created.
OS integration and platform support - How well do apps integrate with the platform, hardware optimisation and features like Azure Virtual Desktop
UI look and guidance adherence - generally making the application look good in the operating system.
Mentoring in Open-source - Roundtable
Identify potential mentees using drive-by pull requests, users opening or commenting on issues, vocal members in Slack, Discord, IRC and users discussing your project on social media, blogging or creating streams / videos.
Understanding mentee goals. They use your code and want it to be better, to get involved in your project or open source, to get a job in tech and/or open source or to have fun and make friends.
Develop mentee growth. Coach your mentee on skill development with quality feedback, involve your mentee in your project planning, slowly expand your mentee's responsibilities over time and recognise mentee's contributions.
Mentee tasks include code contributions, documentation, translation, responding to community issues on GitHub, Slack IRC and Discord, pair programming or do code reviews with your mentee.
Connecting mentee with your network - this is the most powerful aspect of mentorship, introduce mentee to your mentors and colleagues, have mentees co-present at conferences and can promote your mentee and can grow your network.
Discussion, what have your experiences been as a mentor or mentee, what have you seen work or not work in your projects, how does mentorship differ between different upstream projects and enterprise projects.
Day Two
Community discussion on .NET mobile development choices
There are so many choices when developing now the main ones covered in this session were .NET MAUI, Avalonia UI and Uno Platform but the right platform for your next application may be one of these platforms.
MAUI is the replacement for the Xamarin platform and only recently reached general availability so is both the granddaddy and new kid on the block as a platform, supporting Windows, Android, iOS and macOS all using .NET and an evolved version of Xamarin Forms. .NET MAUI will be the multi-platform option from Microsoft ongoing and any new applications that would have used Xamarin can now choose to start with MAUI and existing apps can be ported to the platform.
AvaloniaUI brings WPF to more platforms and modernises it for Windows, Android, iOS, macOS, Linux the Web and more. Used by Unity to provide experiences as well JetBrains to bring Desktop Applications to the Web and other platforms and leveraging investments into legacy WPF applications to a path to Avalonia UI.
Uno Platform brings WinUI to more platforms including not only Windows but Modern Browsers with WebAssembly, Android, iOS, macOS, Linux and more. Leveraging skills from Universal Windows Platform or WinUI existing applications can be easily ported to the platform or new experiences can be crafted using Figma to then deliver these using Uno Platform. I was also honoured to be part of the discussion myself about bringing my Pomodoro App from Universal Windows Platform to Uno Platform which can be found at github.com/RoguePlanetoid/UnoPomodoro.
Build native apps for any device with .NET and Visual Studio
.NET 6 has become the fastest adopted version of .NET ever and the performance of .NET has continued to be improved and have made it easier to get started with features like Minimal APIs. Client development is important and as a developer want to reach as many devices as possible there is the .NET Multi-platform App UI and can support assets on all platforms, support native features of Windows with WinUI and can even share Blazor web components in .NET MAUI applications. Hot Reload in Visual Studio 2022 allows you to easily write code and see changes right away.
.NET MAUI can run on Android, iOS, macOS, Windows and even Tizen for Samsung devices. With .NET MAUI you can provide native experiences with Blazor Hybrid apps to call native APIs and have optimal memory usage and components run natively in the app with no WebAssembly required, components will be rendered in a WebView. With access to native platform features you can use the features of the platform it is running on.
Ultimate Productivity with Visual Studio 2022 for modern development, personal and team productivity and scale to projects of any size. There will also be ARM64 native support for Visual Studio 2022 to debug and run code on ARM64 with .NET Framework, C++ and .NET 6 with more coming and .NET 6 and MAUI apps will be supported on ARM along with a new version of .NET Framework 4.8.1 that will run on ARM!
Azure support for .NET 6 was available on Day Zero with Azure App Services, Azure Static Apps and Azure Functions, and going forward Azure will support new .NET releases on the day they are released. A common pattern is the Microservices pattern which allows loosely coupled services to be created and deployed and Azure Container Apps which supports auto scale, even supporting scale to zero. Container apps abstract away Kubernetes and allows you to focus on apps rather than the infrastructure and ready to run for any skill set. Support ASP.NET Web APIs, Minimal APIs, Background Worker services and more to get your code to cloud easily. You can also from code to cloud with GitHub and .NET 7 is currently in development and will be launched at .NET Conf 2022 between November 8 - 10 2022!
Ask the Experts: .NET and Visual Studio
.NET MAUI, Blazor Hybrid, Visual Studio 2022 with ARM Support and more are coming. In MAUI When embedding Blazor applications will be rendering HTML in a WebView, when you code in XAML you will get controls for those platforms such as WinUI will be used on Windows and can share web-UI and native UI together but can just use Blazor web technologies or just use XAML for MAUI and any existing code, examples, and materials for Blazor apply to using it with MAUI. UI tests will be coming for MAUI but can still use Unit Tests for now. MAUI is currently available in the preview branch and will be available in 17.3 of Visual Studio 2022 for Windows.
.NET Framework 4.8.1 will be the version of .NET Framework supported for ARM along with .NET 6 which will also be supported on ARM and will be able to be developed with the ARM version of Visual Studio 2022. It would be possible to have MAUI target Blazor if needed although there is no current plan to actually do this and would take a lot of work but could be done. Blazor Components on MAUI don't need their own access to .NET like they would with WebAssembly the code is being run in the native .NET process and only the HTML is being rendered in a WebView.
Linux for .NET MAUI is currently being looked at in a fact-finding stage and understand the kinds of applications that are being built and what would this solution look like but might happen at a later date. What will happen with .NET MAUI after general availability will be the upgrade assistant support and bring Hot Reload to Visual Studio for Mac, bringing profiling tools and some other quality of life changes and improving integrations with the tooling. Fixes are shipped on a monthly cadence and MAUI may hit the next preview of .NET 7 and focus on improving the code and performance and app size across the platforms. It is possible to create .NET MAUI applications from the CLI and edit code in any editor you want, anywhere you can develop .NET you can write with MAUI but will need more to deploy it but can develop using it relatively easily!
Develop Windows apps on and for a rich ecosystem of platforms and devices
Performance per Watt is the new Moore's Law, how much power is needed to execute a particular workload, want apps to be fast and responsive and users want new and innovative devices that last for hours on a single charge. Windows thrives on Silicon Diversity and to execute specific workloads such as GPUs for graphics and the new opportunities for NPUs or Neural Processing Units for AI workflows or additional processor types for specific workloads. ARM SoCs are becoming more populate and support for Windows on ARM can leverage ARM-based devices and allowed for the Surface Pro X and also support ARM-based services in Azure. Windows emulation on ARM are expected to run as usual and on Windows 10 supported x86 on ARM and this was improved on Windows 11 for unmodified x64 applications allowing apps to run on those platforms as expected by users.
Microsoft are working to deliver ARM-native developer tools and services such as Windows Terminal, PowerShell and WSL. There will be an ARM-native version of Visual Studio 2022 and will also support ARM native C++ and .NET projects on and for ARM devices and .NET 6 already supports ARM. Building apps to target ARM should not be difficult and support an effective developer workflow and helping ecosystem target Windows on ARM such as Electron to allow Visual Studio Code and Microsoft Teams to run natively on ARM. Microsoft Azure have ARM Azure Virtual Machines that could be used to build and test ARM applications as part of a CI/CD workflow. Where will you run ARM native tools, you can do this on Surface Pro X or Lenovo X13s, Project Volterra is an ARM-powered device to help developers build, test, package and deploy code but more details will be release about this new device later this year and it will support Qualcomm NPU silicon. Windows developers will have more opportunities to deliver applications though the new Microsoft Store and there's never been a more exciting time to be a Windows developer!