ASP.NET Community Standup - .NET 9 Roadmap for ASP.NET Core

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] yeah 2 [Music] [Music] three [Music] [Music] [Music] 2 [Music] [Music] [Music] Eng all right wow this is an exciting one welcome to the aspnet community standup and we are here for a first look at the road map for net9 it's a party so I'm joined by a cast of thousands and I'm gonna have you introduce yourself but first I I was thinking I'm just going to go through community links at the beginning and then I'll just turn it over to you and you can do your thing so sound good all right all right Community First John Community First all right let's do this okay community links are here they are posted in the show description they're in the comments they're in a banner coming soon right here there's so many places you can find the community links and I have just a few of them because I'm quite excited to dig into all the net9 road map so first of all um Jordan has a post here here on uh getting started with net 8 and AI using the quick start tutorials so this is really cool there's some um uh and this is kind of the beginning of our our vision here you know this is starting to roll out some uh some ways to get started um I'm having so much fun in my spare time whenever I get to do some coding I'm loving AI fun stuff and um so I'm excited to dig into these um okay this is great from Frank this is looking at generating local.net user secrets from Azure deployments so a lot of the time you'll get an application maybe a sample app or you'll be working on a team and you'll have uh ASB based deployment and so this is really slick this is just a short little utility that's generating net user Secrets um based on bicep so it's it's going through the bicep deployment and it's got a simple function U Powershell and it's just going through and generating a net user secret set and so I love this because it's kind of integrating with best practices fromn net we always tell you use your user Secrets it's it's the secure it's the best place to do things um so this just goes through and uh does that great little tip and then he ends up with a a video demonstrating it all right important thing to know about um so the new get repository is updating uh the signing certificate so if you are verifying your new get packages using a number of different things using um there's the the verification settings there's the new get verify command Etc you need to update the uh fingerprint for the certificate so seemed like an important thing to know about passing it on all right net9 Preview 2 is out as a reminder we're we're leveraging uh discussions on GitHub for most of the releases at this point so all the preview releases you're going to see the discussion out on GitHub uh discussions and uh you'll see them more on the blog as we get closer to the release so here there's this main one this is the net9 preview 2 and then it links over to release notes for the feature teams so for instance as a you know you're watching the aspet community standup you may be more interested in these these notes so this is where the both the notes are at and then also if you have comments or want to get in this links to the discussions and uh how you can get involved there yeah so all that content we used to put into a preview blog post which was honestly more like release notes than than anything else we now have proper release notes for those things for all the the net n preview releases so if you're looking like where's where's the content on what's new in net9 you can find them on on GitHub in those release notes and they're all linked to from those announcements Y and what's great with this you know the release notes like you said Dan these are maintained they're localized they're like it's a a lot of time it's it's painful when you're looking for information you find a really old outdated blog post that hasn't been updated the code's no longer valid right so this this is a good kind of more um professional place to what release noes so all right um uh and then uh Aspire preview four so this is exciting there's podman support there's updates for the dashboard including uh being able to run the dashboard uh Standalone which is you know a really cool Aspire feature so great to see these uh there you know here's an example these are release notes out on the docs and this goes through and shows all the stuff there and we will get the team on to do more Aspire stuff coming up soon but I want to uh give you folks maximum time to talk oops to talk9 let's get there okay so I think I'm going to Jeremy oh well first let's do round introductions sound okay so let's go I guess clockwise I'm John I'm the host I'm just here to say hi so sopia yeah I'm sopia I'm a software engineer on the aspet core team I am here to help answer questions I'm Dan Roth I'm product manager on the asp.net core team I work specifically on Blazer and our webui Frameworks like NBC and razor pages I am Jeremy lickes I'm product manager for aspet core backend so I get to drive the data through apis to the Blazer apps that Dan was talking about and I'm Mike kler uh I'm also a product manager in the aspet core team uh new to the team actually since uh last December so uh happy to be here uh I'm working mostly on Signal R and Orleans but also helping in other Cloud native areas hello everyone I'm arak the engineering manager on the Blazer team awesome okay so I think we're gonna start on Jeremy's screen correct that's the plan yes I have it queued up okay all right so here all those lovely people that you just got introduced to I think ad wasn't able to make it today but we have sfia here to to represent on that side so today the plan is to talk about what's coming what's what's happening for asp.net core for web developers inet 9 we're actually we're already in the the throws of this we just shipped net9 Preview 2 early this week that's what John was showing so features are already starting to come off the conveyor belt into your hands to try out and give give feedback on but we're gonna go do a broad overview of the the road map of everything we're planning to do for this release uh and answer questions and take any feedback that you have on our on our current plans so for doet 9 in ASM core a big theme for this release is just general quality and fundamentals so think security performance observability you know just making sure that everything gets faster everything runs better across the the stack um we're doing uh more work on on apis to improve our API story make sure they're nice and uh introspect so you can have great tooling around your apis um some work on validation we'll talk about all the the details on each of these items in just a minute on the runtime side work on distributed caching data protection and more work on authentication that we started in netet 8 uh Telemetry and metrics of course are really important for all those Cloud native workloads like having great observability so we have a bunch of work planned around making sure your asp.net core apps show up uh really well in like that Aspire dashboard where you're looking at your distributed traces looking at your metrics and then of course for people building web uis we have lots of improvements planned on the the the Blazer front now you can find all the the details on the aset core road map on GitHub at aka.ms aspet roap that's where where you'll find the full listing of all the GitHub issues tracking all these items subject to change of course you know as we progress through the release you know we find out oh some things take longer than we expected or other priorities come up that we need to adjust so you know you can you can find the latest data uh at that link as well we we update that row map as the the release progresses but this is our current thinking about what we're expecting to do for the release and we're going to start with with Jeremy who's going to start telling us about uh the work we're planning to do for apis okay yeah I'll dive right into that it's a little bit misleading because I think you only got one bullet Dan but you've got a lot of Blazer Improvement so we'll get to that as well but uh let let's talk about apis in in net 9 and so there's two key things that we're focusing on the first is a built-in open API generation so that's actually producing the the document as part of the the process in the Box shipped with aspnet core there is a discussion on GitHub and we can grab the link and and Link out to that I'll post it in chat or or something around that but we've got a design discussion open so that uh developers out there interested in open API generation can uh talk with us tell us what features you're interested in what's important to you I I'll give you an example so we're very focused on the Json schema generation but there are other formats you can use such as yaml and so we've heard from some individuals that they're using that in their their workflow so we take that feedback and and build it into what we're doing with the road map the other piece of this is built-in support for model validation so this uh closes the loop on being able to use the apis to to do things like pull in your annotations and rules and validations and models and is also useful for what we're planning and mapping out with aot and being able to build capabilities into that so uh moving on I distributed cash in and hybrid cach so we provided some uh capabilities in previous version and uh we've got uh our our report card here repetitive and error prone verbose and complex with limited features and so what we're bringing out is the the hybrid cache improvements that is focused on Simplicity just working in most cases providing you with the advanced options that you can dial into when needed and then we've got uh some of these enhanced features that we can dive into to more details of as needed the Stampede Pro protection I I don't know if you knew that stampeding was was an issue but there is a protection for that tagging inv validation L1 L2 in process out of process support and much more and the important thing to note is that all of the existing cash backends will keep uh working so we're not breaking with this and I'm going to I guess I can't Advance the slide here so we'll Advance it here so data protection is uh something else that is is uh uh developers run into this especially when you have a distributed workload which is something that you know we've been focused on with the the Aspire and it it's still blowing my mind that we're in March so we're already a quarter ended to building this out but basically if you're using antiforgery and if you're using authentication data protection something that factors into it and it's a set of libraries that help with with some of the I guess cryptography and other uh aspects of that and the defaults work great for single instance apps when they're tied to a single machine but when you get to a distributed environment there can be challenges and so part of this focus is providing a way to make it easier for you to use data protection in those distributed environments because we know that's what people are using and and moving to and so that default experience needs to improve and so that's what the uh data protection pieces are about moving forward authentication so we tackled authentication in the the previous release we looked at a very specific use case for those of you who are standing up applications that need some self-contained authentication but uh we also recognize that there are third-party authentication providers and we have our own intra provider that has uh the capabilities to scale out through the organization and have different applications authenticate with each other plug into oidc workflows and O and or ooth and and Etc so what we want to do for you is provide those in related samples uh with the new blazer web app so the the issue is we've had the the prior template that were based on Blazer server and we had the web assembly but we have these new rendering models and interactivity models and we need to update the samples to work with those and once those are updated so that you have those the other aspect of this is we can then work with our tooling teams to provide you with the capabilities to scaffold and use connected services to configure connection strings and basically take your existing applications and plug this into it so we recognize that a lot of the times authentication is something you add into a project and so we want to make that uh streamline for you when we talk about more and better samples this is continuing to work on different cases whether it's a combination of application types whether you're using a front-end JavaScript framework Etc we want to have those samples for you to know how to to plug in authentication and and quite frankly a straightforward authentication where you're using one type of provider is a pretty well documented story but when you start to use multiple authentication schemes or maybe a different provider based on context or the user Etc it can get more complicated so we want to have those samples for you to reference and see how to do that and finally the pending documentation item so we believe that a a big part of authentication we've heard the feedback from from you that sometimes we have good documentation but it can be difficult to to find and landing on the right level of documentation is key and so one of the examples of what we're doing documentation wide is providing what I call a navigator document which is sort of the Choose Your Own Adventure so you tell us what you're interested in are you new to authentication you need to learn about it are you just looking at how to implement it withn net are you working on a mobile application and the goal of the document will be to guide you to the right documentation that gives you the samples the tutorials the how to and the information you need to be successful with that and so we'll be taking that on for this release as well Telemetry and metrics this is so important to see what's going on with your applications and we began that story in in net 8 we're going to be extending those metrics we have the low-level chestal metrics we have the feature to exclude request Blazer and Blazer server Telemetry so you can see what's going on with those applications this new hybrid cache I talked about and then uh support tracing implicitly in asp.net so taking out that extra step of a dependency and pulling in a package but making it part of what we ship and then uh this isn't if we have time as Dan mentioned earlier you know these aren't commitments these are goals and and that we're working towards but we very much understand the importance of getting quality Telemetry from authentication authorization identity and so that is going to be a focus it's prioritized behind some other items but we hope we have time to get to that and drive that now all of this is happening on the back end this is how your services are presenting data pulling data exposing data communicating data Etc but once you take that on the front end and start to do something with it that's where you get into Blazer territory and for that I'm going to turn it over to Blazers PM Dan thanks Jeremy okay cool yeah that all sounds great so what's happening then for webui development trying to get some pixels on the screen what's happening for for Blazer net 8 obviously was a very ambitious release for Blazer and net 8 which shipped back in just just this past November we introduced tons of new features for Blazer you know new render modes that you can choose even at runtime we added static server side rendering capabilities and also uh Advanced Progressive enhancements on top so you can really use Blazer now for for all of your web UI needs no matter what type of web UI architecture you want to build Blazer now supports those scenarios and it's really now our recommended solution for building webui with with net MBC and Razer pages are still great and still fully supported but if you're building a new project and you want to have all the flexibility and all the new capabilities Available to You Laser's honestly where it's at in doet 9 we're going to take some time to really focus on the quality of those features and improving the developer experience with using them so DOTA 9 is going to be a much more quality focused relase Rel for Blazer less transformative so quality and fundamentals is is top for us in the the9 release for Blazer including work on performance uh security and observability um we know from user feedback that there are some rough points with how the uh the new blazer web app features uh compose or integrate with each other so we're going to do work to smooth out the user experiences um with blazer web apps and fill in some of those user experience gaps U we are going to do some uh targeted work for Blazer server applications or for interactive server rendering uh to address some longstanding issues you know improve performance and also improve the experience uh with uh disconnects uh or reconnection uh we have ongoing investment in Blazer web assembly as well so we're going to continue to invest in the net web assembly runtime and also look to do performance work on the load time of Blazer web assembly based applications and then lastly we have a a bucket of of work to improve the general developer experience for Blazer you know improvements to to tooling uh and to Blazer's component model and I'll go through each of these in in some some detail so let's first talk about Blazer web apps in in net9 so like I said based on feedback we know there's some some areas where Blazer web apps uh could use some improvements uh the first is performance uh performance is a big part of everything we do in net um but we really didn't get enough time in net8 to do all the performance tuning that wanted to on the new static server side rendering support uh in Blazer so we're going to take some time in net9 to to do that to make sure you get as much throughput as possible when doing static service side rendering um we also plan to make it possible to statically render a page when you're already in an interactive context and what does that mean well today with with net 8 we already have the ability to do the opposite like you start rendering a page you can start rendering a page statically you get a request start rendering some HTML but then you want to add some interactivity like in just one part of the page in Don at8 you can you know decorate an interactive render mode on a specific component or even on a whole page and light up interactivity for just that part of the app um but what you can't do really well is the opposite where if you've decided you know what I really want most of my app you know globally I want my app to be interactive oh but there's this one page or just this one set of pages that I want to be rendered statically that's that's it's possible to do with doet 8 but it's it's not very clean in doet 9 we're going to make sure that you can go from an interactive context like an app that you've set up to be globally interactive and be able to render page statically uh pages statically from within that that application this will be for both when doing page navigations and also um when dealing with uh the response to a request from an interactive form like if you have an interactive form and you just want the response to be a normal post and and get the rendered response okay so using static side rendering from interactive context is the second one uh detecting the current render mode uh sometimes when you're building a component you want to adjust what that component renders based on how it's uh on what its current render mode is for example you might want to render uh interactive UI elements as disabled uh when you're doing pre-rendering which is like static rendering but it's going to become interactive later uh or you might want to render a completely different UI elements when inter activity isn't available um we're going to add apis in nit 9 so you can detect the current render mode and adjust your component rendering logic accordingly so detect the the current render mode apis all right persisting uh component state with enhanced navigation uh in donet 8 we made a change to Blazer uh when you're using the Blazer web app model to always pre-render your your pages so they're statically rendered initially and then set up for interactivity on the the client that way you get pixels on the screen as as fast as possible um when you're doing pre-rendering and your component is uh initializing any state particularly asynchronously like maybe you're going after to and calling an API and getting some data or you're doing a database query um you if you're doing pre-rendering and you have that type of component you end up with this problem where you you acquire the state on the server so you can pre-render and great shows up immediately to the user but then when the component uh gets set up for interactivity it needs to acquire that state again otherwise you can end up with these like flashing situations where you you know you you see all the data that was nicely pre-rendered but then the component renders interactively and it's like hold on I got to go get the data again and so it you know wipes out all the data that was just shown and shows a loading dot dot dot or some sort of loading spinner again and then the data comes back so you see data then no data then data and the way you can fix that is we have a feature where you can persist the the state that was used during pre-rendering so it can be reused on the client and we have an API that allows you to to access that persistent data unfortunately it doesn't currently work with the enhanced navigation pattern where we inter where Blazer intercepts when you're doing a page navigation and you're getting the data from the server so we're going to fix that in at9 so that um um persistent component State works also with enh enhanced navigations um we're all because this pattern of using a persistent component state is also now becoming more common we're also going to do some work to um add a declare comparative model for p handling that uh persisted component State instead of you having to write a bunch of code to save the state and then check to see if it's there and extract it out we're going to give you a declarative way where you can Define some properties annotate them and say you know what I've got some some persisted component state that I want here in this property please save it for me so I can access it uh it later and that should make um dealing with u that component State easier we think this work also acrs to a a longer term investment with being able to persist circuit State like when you're using Blazer server or doing interactive server rendering um that state normally just stays in memory and if the circuit goes away it's lost U we think this declarative model will also give us a way in the future post doet n uh to be able to save and rehydrate uh circuit state so that your uh interactive server components are also more resilient so that's what we're doing for Blazer web apps for Blazer server apps or when you're using interactive server render we also have some improvements planned um we've already enabled um websocket message compression in in net9 this takes the the the payloads that get sent over the websocket connection when you're doing interactive server rendering and runs compression on them so they're much smaller so they're faster to transfer and you use less less Network that's on by default Now with uh net9 Preview 2 so if you're using net 9 preview2 you should already be seeing that that benefit um we're going to do some work to improve the observability of BL laser server apps uh today when you're looking at the distributed traces uh for interactive server rendering you basically just see this one long websocket connection request and you don't really get any uh visibility to what's happening inside that connection like all the UI events that are occurring or or rendering uh we're going to add distributed uh tracing activities uh to Blazer server uh so that you get uh more visibility into what's happening in your uh interactive server rendered Blazer apps and then last ly um we know there's a um some some pain points around the uh reconnection user experience when using interactive server rendering interactive server rendering is a stateful connected model in order for the UI to work you got to have that websocket connection with the server and if anything happens to the Circuit then there's there's nothing that will automatically save that state and and and uh reestablish it for you and so often users end up in a can your end users of your app can end up in a disconnected state where they have to like you know manually refresh the browser and they lose whatever they were doing uh we want to improve that uh that user experience so we're going to start uh some uh reconnection logic improvements in net 9 and uh I was going to show you a quick uh early prototype of what that uh that what that might look like so let me pop over here to my desktop machine and we'll do a quick demo so this is a Blazer server uh based application and what I'm gonna do I'm just going to go ahead and run it I'm going to run it from the command line and that's because I don't want Visual Studio jumping in and refreshing the browser for me when I'm restart starting the app I want to try and simulate what really happens with this app during production so let's just go ahead and do actually yeah no that was it so this and net run to get this up and going and we'll take a look at what the the default experience is with blazer just to to understand the the problem here okay so here is a Blazer server app and we've got a little form um we've got a button that we can click like a counter and then we have some some fields and a form we can add some some data in here and we can see this form is interactive all that stuff is is working and we're able to you know adjust the rendering of this form as I type in stuff so Co demo and bl Okay so we've got a form I've been filling it out and let's imagine that something happens um to the app where the user gets disconnected from the server in this case I'm going to simulate that by actually shutting the server down just going to control C servers down and then what do we get oh we get that the dreaded white screen of death right like the the the user's now in a disconnected State and by default Blazer puts an overlay over the whole screen to let the user know hey the the UI isn't going to be working right now and it's letting the user know that it's trying to reconnect to the to the server and this is kind of a you know honestly it's a cool feature that's that's being shown here if it was just a transient network connection Blazer will will hold on to the Circuit State on the server for a little while while the client tries to get back to that state and says well maybe maybe I just went in a tunnel or whatever and I if I can just reconnect then will everything will will be good now in this case obviously um the server is completely down and the circuit state was is gone so even if I bring back up the server let's let's run the app again to say the server is now up we should be able to at least connect on the network now first thing to notice is server's up but it's still saying it's trying to con uh connect and that's because there's a fairly long reconnection delay with each time it tries to reconnect I think it's like 20 seconds by default you can you can change that but the default is is pretty long which isn't great for your end users but eventually if I talk long enough there it goes it will say oh the server's back oh but darn my circuit is gone like the the the the state that I used to have is no longer present because the server went completely down and sorry user this only thing you can do now is refresh the page and and Blazer doesn't do that for the user it asks the user to do that manually so you know I can click here refresh the page and of course now on my form everything that I was doing you know my my counter is gone all The Forum fields that I filled in that they get they get lost the user basically has to to restart so that's that's not great that's the current reconnection experience with with blazer server we'd like to try to do a little bit better so let's do this I'm going to shut this down again and I'm going to make a change and this is a prototype that Steve Sanderson put together actually it was last year and this is public on uh on GitHub you can find this on his uh his uh GitHub account um and I'm just G to add this little stateful reconnection component here and we'll restart to see if we can have a better Experience soet run this again let that build then see if we can do a little bit better so there's a couple tweaks that uh that we're looking at doing one is uh you know can we have a at least a better ux for when this the connection gets lost so here we are back same same functionality as before you know add some text box check some check boxes or whatever uh and now if I shut down the server let's let's simulate the loss of connection again okay you know new fancier UI so it's not just overlaying the whole screen with a whitewash it's it's it's you know slightly better user experience also if I bring the server back up see there that goes okay so the server oh server's back up and IM almost immediately the app gets back into a functional state for for the user um we reduced in this prototype the reconnection interval to just one second so it's much more responsive and you'll notice that um even though the circuit was was lost in this uh this demo um I I don't end up on a broken screen I actually I'm seeing the the application so we automatically are refreshing the page for the user so the user doesn't have to click the button and you can do that manually yourself today with net8 or earlier releases but in this prototype we decided oh maybe we should just start doing that for you and you'll notice that actually a bunch of the forms State like all the form fields that I had started messing around with um they got rehydrated like it persisted some client state for me and repopulated the the form now you may also notice that well with the server size State like the value of the counter that still gets lost so this this prototype doesn't do anything to try to persist server State and rehydrate it that's something like I said earlier that we are looking to provide um help and mechanisms to make that easier uh for data 9 we're still expecting that that will be something you'll have to handle in your app yourself like there's ways you can do it um inet you know post9 we hope to make it simpler to do but uh for server side State this this doesn't help but for client side state faster you know reconnection for the user you know automatically refreshing the browser hopefully these are some user experience improvements that will make people using your Blazer server apps um happier so that's what we're looking at doing there hey Dan we got a question how does it save that state is that it's just client side client side States being persist in local storage in the in the browser and then the blaz you know the Blazer server script the Blazer script is like uh identifying oh I have some State here that I can repopulate into into the app okay one other question is uh can you tell on the server side if the client's disconnected um yes in fact the like the server knows if when it has a circuit and the client has gone um it knows that and that's why there's this thing that the server does right like it will it will hold on to the Circuit state for a little while and saying well maybe the client will come back um you don't want to hold on to that state necessarily indefinitely because then you end up in a you know potentially a Doss like like situation where people keep opening up connections and then clo then closing the connection and now you've got all these circuits that are building up so they will eventually time out the default timeout I believe is about uh three minutes you can you can extend that if you're if you're in your environment it makes sense to hold on to those circuits longer or make it shorter if you want um but yeah the server knows if the connection is gone cool and one one last question did you didn't have to do anything to like wire that up to local storage that's just kind of magically handled for you that would in the Prototype it's magically handled now we're still working through the exact details of what we'll ship in doet N like these are some experimental ideas that we're playing around with that's why we're sharing them with folks to to see what people think um yeah the the the model around dealing with the client side state is C certainly an interesting set of problems you know how much we can do there how much do we save how how can you participate in that that process U we'll be working through those set of design problems uh as part of the9 release cool all right cool so that's better Ser Blazer server reconnection and that's the set of Blazer server items we're planning to do what about Blazer web assembly what if you're doing things purely client side so we're doing a bunch of work uh for um web assembly based rendering as well uh the first thing is we're going to start and this is actually kind of a broader than just Blazer web assem mbly um for your static web assets U we're looking to start fingerprinting those assets with a hash of the content of the file that actually becomes part of the file name and this is like a build step you know as you're building your app we take your static web assets you your JavaScript files and so forth and we uh fingerprint them so that they have a unique file name and this is useful for a number of of reasons um with blazer web assembly uh the way the caching works we really want a consistent set of files that get downloaded to the browser and and run and Blazer will carefully check like it will it actually has a manifest there's this like blazer. boot. Json file that has a kind of a list of all the static web assets that make up the at least the client part of the app with hashes to make sure that it knows okay these are all the files that should be used together and if it downloads all the files and finds that the hashes don't match then you can end up with these Integrity check failures like letting you know like hey you're you've only got like part of the of the app here some of it is potentially stale um normally that shouldn't happen like normally you of course publish your whole Blazer web assembly app and and one go and you have a nice consistent set of files but due to some environments you that you might still end up with some inconsistencies like maybe you're using a CDN and all the files haven't propagated everywhere so you end up with some staleness or maybe something gets cached by like a CDN and it's just stale and hasn't been updated and people end up seeing these errors when they're uh trying to update their their Blazer web ass apps so to avoid those Integrity check failure problems um this we think this fingerprinting technique will make uh your deployments much more robust um they're also useful for helping us optimize the page load time and the startup time of your Blazer web assembly app so we're going to do a bunch of optimizations in net9 to help your Blazer web assembly apps load faster and also just to make any static web assets in as minut core that you're downloading uh download faster so this is sort of a summary of all those optimizations we're doing so aggressive caching you know now that we've got like a fingerprinted file with you know static static content um we can aggressively cach that file you know tell the browser download this once and you don't need to ever download it again um to uh to to make sure that uh your apps load quickly um we also will do work during development to make sure that your files are always always fresh so you don't end up with stale files while you're trying to develop locally on your machine when you're making changes and you want to see the the latest um pre-compression this is a trick that we already do for Blazer web assemly apps but only for some of the files like for the the runtime and the uh the assemblies that make up the the code of your application when you publish we run broadly pre-compression on those files to shrink them down as much as possible so that um the amount you have to transfer over the wire is smaller in Don at n we're going to expand that pre-compression support to basically all static web assets so even you know JavaScript files CSS files basically anything that's not already compressed like you don't want to do this on a already compressed image or or video that sort of thing or fonts but anything that's not already uh compressed we will support pre-c compressing those files so that they're smaller to to download um bundling uh for the and this is really about the bundling of the JavaScript assets that we ship in Blazer some of them are you know blazer. web.js is is not not a small file um we're looking at you know using more modern but techniques to shrink that size of that file down as much as as as possible um preloading U we're planning to do work to generate uh link tags so that you can preload static web assets when we know that you're eventually going to need them this will avoid you having like a Cascade of requests where you have to like wait for you know you request blazer. boot. Json now you know all the files to download so you request all those and you have this sort of cascade that happens by um using uh link tags we can preload content so you kind of get everything all at once thanks to the the the help of the the browser and the web platform and then lastly doing optimization on our startup performance um one of the things we learned from doing the new auto render mode which really optimized the download time for the net web assembly runtime is that there's still actually quite a bit of time that gets spent even once it's cashed to get it up and running like just starting theet web with suly runtime takes a little bit of time running Blazers initialization logic takes some time that's why you can still sometimes see a delay even if you're using the auto render mode and you've already U uh downloaded and cached the app we're going to do work in do and9 to shrink that part of the the load time down so that it's h faster so your Blazer web assembly apps load faster okay and then the last one for web assembly is multi-threading um you know we've been working on multi- threading for a long time I think it's currently still our top voted uh feature request for for Blazer is to support multi-threading on the web assembly runtime and we have made really good progress like our friends on the runtime team have have uh have got pretty much all of their uh test Suite now passing on the donet web assembly runtime which is which is amazing um the remaining work work is actually on the Blazer side we have um some cases in in Blazer web assembly where we assume a single threaded runtime that we need to now clean up and make sure that it will function properly in a multi-threaded runtime but to show that you that we actually have progress on this this feature and you saw the tentative there it's not it's not we we're we don't think this is actually going to be ready for production use in in net9 but we hope to at least have it available in full preview support so you can use it with your Blazer apps but to show you that uh what the current state of things is um let's close down this app and I'm G to open up a multi-threading app so this is actually with net 9 Preview 2 like using the bits that we just shipped earlier this week and I turned on the multi-threaded uh runtime for this app and the way way you can do that is uh you just set wasm enable threads true in the client project that will say client project I want you to use the multi-threaded runtime not the single-threaded one and then there's one other thing you need to do to use multi-threading you actually uhu multi-threading is implemented using some fairly powerful browser features it uses shared array buffers under the covers and in order to use shared array buffers in a browser you actually need to um put it in what's called a cross origin olation state which basically says you know don't don't allow like cross origin communication with like other frames or windows with this application I wanted to isolate it to just the the origin really that it came from and so there are some headers that you have to specify um when loading this app in order to make uh shed array buffers and multi-threading work uh we did a little bit of work to help you set those up so when you're adding your interactive web assembly render mode we have this new API that's uh served the multi-threading headers you just set that to true and that will put the browser in Cross origin isolation State you know things that this will affect like um if you if you have a popup U that's a cross origin popup in your app then this will prevent it from interacting with the original app and that can break things like Federated off uh Federated off flows that are using popups or um like some payment patterns also I think you we use a cross origin popup this way so something to be aware of multi-threading inherently just because of the way the web platform form Works U requires this this constraint but once you've done that we should now be able to run this application and this is a normal Blazer app I've got the counter page here where I have the normal counter button that I can click and the count goes up but I added this start thread button where I can actually create new new threads if we look at the counter here's the code second button right here and it's got this start thread event handler for onclick when I call start thread we're just doing a task run and this is just going to Loop five times and do a you know have a one second delay and then call invoke a sync to um increment the count and then call stus change so that it renders so this would should start a thread that basically increments the count uh every every second okay so if I click on start thread then we should see the counter start to increment on its own and if I mash on this a little bit it should increment faster because now I've got multiple threads that are incrementing the the current count so that's working it's cool like this is something actually can start trying out unfortunately there are a bunch of known issues like if I uh show just to show what you know set your expectations appropriately like if I browse to another page right now then the the net web assembly runtime throws an exception because Blazer is doing something synchronous with a a synchronous JavaScript interrupt call and that that's that can create Deadlocks and so we need to clean up Blazer's logic to make it work properly fully in this multi-threaded uh world but that's that's where we're currently at so attentively foret 9 we hope that this will be available at least in in preview form in your in your Blazer apps all right so that's multi-threading right lastly improved developer experience U these are just some you know uh General improvements to the Blazer's component model and also to like the tooling and uh experience so we just added in9 Preview 2 support for Constructor injection in Blazer components uh I know was Mr M I think I saw Mr M on the the the chat I think briefly I think this was his his GitHub issue that he opened a long time ago and we finally got it done it's again highly upvoted uh item this means you can inject Services into your Blazer components using the standard Constructor pattern in addition to the existing you know at inject property based uh service injection pattern so both both will continue to be supported but now you can use uh Constructors with your Blazer components um adding metrics for Blazer across the board we we did a bunch of metrics in donet 8 um we haven't and it was mostly at the lower levels of the stack like at the runtime layer you know Kestrel and those types of things in Donna N we're going to start adding metrics into into Blazer so you can see like how many active circuits you have and those types of things we continue to work on hot reload to uh have it have support more edit types uh to be faster and be more reliable uh on the tooling site for razor editing the Razer tooling team is uh very hard at work and in conjunction with the rosin team uh doing performance work reliabil reliability work and correctness so that you always get you know good and accurate completions and that the tooling is fast and and stable uh and then also we have been adding Blazer scaffolding so that you can scaffold out your your Blazer components and I have a quick update on that that I'll show you um we just shipped the Blazer crud scaffolder in 17 Visual Studio 179 so you can now take an any frame core model and scaffold out a bunch of pages uh in 17710 uh we now have in preview of the Blazer identity scaffolder so you can scaffold the identity code into your existing Blazer web apps um and we're looking to add also a scaffolder that will just allow you to like enable Blazer in your a minut core app like if you're not using Blazer yet but you want to turn it on like maybe side by side with your MVC code or your razor Pages code giving you a scaffolder that makes that that easy and I'll show you just real quick what that looks like so if we hop back into Visual Studio let's just create a new project Blazer web app that looks goodnet this this this works with net 8 as well so it's not tied to toet 9 we'll just keep all the defaults for this Blazer web app and you know I didn't select the individual user accounts options so I don't have any oth in this app yet but I now I decide oh I want to add it darn do I have to do file new project again no we can just scaffold it in so I'm going to do right click on the project and add a new scaffolded item and then if we go under identity now you can see we have the new blazer identity scaffolder so I can select that and if I have a DB an identity DB context I could just pick it uh I don't believe I currently do so yep don't have one so I just go ahead and create one so add that we can pick which database provider we want we can create a custom user class I'll just uh select the defaults for those and then you sit back and this is the wonderful thing about scaffolding right you just sit back and let Visual Studio figure out all the code to to write for all this stuff you know the the login page out Pages user profile Pages all the ability to do you know multiactor authentication and so on just going to add out that code for me into the existing project again this is this is with the you need the visual studio preview channel to to try this out but it is public you can uh do this yourself and after this finishes generating there we go so if you look over here in like the account folder we've now got you know all the pages for uh for uh blaz the default Blazer ident UI I do need to run um migrations in order to run this let me just do that real quick so I'm bring up the I like to do this from the command prompt. net EF migrations add initial I guess would be fine give it a name and this what this is just doing is this is just uh looking at the schema for the database that that you want and then I you can update the database with that with that schema so that the database is ready to go when you run the app if you don't do this then when identity tries to connect to the database it'll be like well there's no database here so net update sorry update database will then run some SQL to to set up the database for me and then we can see the app in action U what is it the the yeah database upd reverse to my parameters there and we should see some SQL spew there it is okay so now I should be able to run this and then if we bring up the browser we can see all the normal identity pages are now here and I can register a new user registering user pick a a dummy password for demo purposes and then register that and that should work fine that will send it into the database this is just a little um Dev UI for confirming the emo account and now I should be able to log in with that new account so easy to now add Blazer identity to an existing app without you having to copy a bunch of code over from the uh the templates we're logged in got all the user profile information as well and you could run the crud scaffolder on this as well to add some data based off of your EF core models that all now is fully shipped and supported but I think we've shown that before so I'll I'll skip that demo so I'm holding most of the questions and comments till later but there were a few that are scaffold related that I thought I'd throw up there so um yeah do it question here can you run the scaffold CLI for non-visual Studio users yes so the the scaffolding engine does have a CLI experience for running the scaffolders from the command line so yeah you can do that um um I mean it's a little I mean it's a little harder because you have more parameters to pass in like all those things that I'm specifying in the nice wizards like which DB context do you want to use do you want a custom user type do you what database provider do you want to use you have to specify all those on the the command line but they are they they are runnable from the command line as well and the crossplatform you can run them on the you know on your on your Mac or your Linux machine cool um let me see so um one here about scaffolding from a Swagger file to generate Blazer AP or app from an API oh like uh something that takes an API schema and then generat some UI for that that data that's kind of interesting it's kind of like analogous to the uh EF core data model but instead using the the API as sort of your data model yeah that's cool you know um one thing I know that the scaffolding team is working on is the extensibility model for the scaffolding to improve it so it's much easier for you to write your own custom scaffolders that can then plug into visual studio and be usable from the command line uh so that might be something that the I know they're working on that for the current 1710 release so I would expect to see hopefully I haven't hopefully I haven't over promised them but but I know they've been working on it um hopefully that will come out and then you can try out the new extensibility model to to build something like that we don't have that one in our plans but we can certainly uh talk about and consider doing it awesome okay great idea love that okay quickly on Blazer hybrid for all you native Client app developers out there um the big thing we're doing for hybrid uh development is um we're going to put together a solution template so that it's easier to set up both Blazer hybrid and web like if you want mobile desktop and web U today you have to create both projects and kind of stitch them together with a Razer class Library we are working on a template to just make that easy to to do and make sure it um follows all the best practices with the new uh render modes that we added in in donet 8 there's also a bunch of just general doit Maui improvements that will ACR to Blazer hybrid developers you better hot reload support in Maui a bunch of improvements coming for desktop development like web vi2 drag and drop I know is something we've been working on with the web view2 team um and better Windows publishing and of course the uh Visual Studio code tooling the new the new Maui extension for visual studio code uh I know there's also a big documentation effort just to make it uh easier to figure out how to do some of the more common scenarios with blazer hybrid apps that the Maui folks are also working on all right so that is all the blade stuff and that's that's the entire net9 road map for for as core um again the all the details are at akms asinet roadmap um we also have public uh discussions already in uh in place on in GitHub discussions on the aset core repo for discussing the road map or asking questions but we were going to take the rest of the time to hear what folks on the call would like to to talk about any any feedback you have or any questions you have about the road map we're happy to to to answer them we got everyone here to to hopefully got all the all the subject matter experts involved to cover all the topics I'll leave this slide up so I starred some and then folks watching if you want to St any other ones and then people watching live this is your chance uh give us your feedback if if uh if your question didn't get like feel free to ask it again if we miss it um okay so question here uh distributed caching are you plan planning to handle dis backed caching um I am not the expert on distributed caching but as far as I'm aware from the implementation it provides abstractions for swapping out what your backing Cash Store is um show so this should be possible assuming I've understood your question correctly I'd also recommend engaging with the design issue that's been opened up about the hybrid cash work which we can um pop a link to in the in the video okay cool um let me see hot reloading is still not smooth and takes too much time especially when rebuilding the project any Improvement planned for net 9 yeah I can take that one so yes there are major improvements that are in the works they are they are big things that are are are changing like in I suspect I mean correct me if I'm wrong but a lot of the performance issues that we hear about uh hot reloader not are not being smooth often are involved with hot reload and Razer and some of the reasons for that is that Razer is a compiled language right we take the Razer files or cshtml files and we turn them into C which then gets turned into your your donil and visual studio does very complex things with those razor files to give a good developer experience there's actually two different code generation paths that are used for Razer one is like the design time code that's used to help Drive the tooling and then there's the actual runtime code that gets compiled into your app and with hot reload this mies things very difficult because hot reload wants to like make a code change and then figure out how to apply that to your running application and when the code change might you know needs to be reasoned about both from a design time and a runtime perspective it makes things hard and that can slow things down as well so that's a a big source of problems the fix there is we're gonna we're trying we're unifying those things we're going to have one Cen path for for Razer that will hopefully simplify hot reload and make it faster and more reliable there's also just aspects with how um the razor tooling works and how it interacts with Roslin that are being addressed they're going to start co-hosting the two the language servers which should simplify a bunch of things um so yes you should expect some improvements I do apologize that is taking some time like I know these uh complaints about hot reload are are not are not new um some people have have you know described some very long hot reload episodes to us and we are aware of that and tracking it in Telemetry um but there is substantial work that's happening and I would expect things to get significantly better this year all right um let me see questions are flying in which is awesome so kind of related to that but anything specifically related to vs code or extensions Improvement for net 9 I can speak to this one as well I mean we are we we are having uh we have the new C devkit extension for visual studio code as well as the the Maui extension so we are building a full great the dentists have a great developer experience in Visual Studio code for net for blazer for as core for Maui for the entire net platform um so we are continuing to invest there like hot reload for example is one of the features that's uh been in the works for vs code that is that is coming um with the c dev kit um and you you should expect General improvements across the board for the vs code experience as well cool um wow lots of great questions coming in um let me see will you update the UI for the disconnected ER I think people were really happy with that cool looking one for the reconnection or like they don't want the white screen anymore like we keep the white screen if people that that's that's the thinking that's the current proposal um if yeah if you have have thoughts on what that default ux experience should actually look like feel free to to to let us know um but that is currently the thinking that we will have a that something like what we show I'm not going to promise it's going to be exactly what you saw but something along those lines cool um all right uh will you provide BFF o examples for WM apps in net 9 I can take that one um there's actually I posted a link earlier to a GitHub um pull request that we have a oidc oo2 based example that actually uses the backend for front-end pattern and if there are other uh specific examples we need to provide we will but that is definitely a pattern we're aware of and support and I we do have one sample that has that out there okay for folks that don't know what BFFs BFF is do you wanna want to Define that one uh yeah sure so so it's backend for front end I mean the the the thing is the the browser is um something that you don't want to have secrets leak into right so if I'm building an application that securely connects to another application the last thing I want to do is expose the secrets in a way that someone can compromise them and the problem is if your application lives in the browser where are you going to put it local storage isn't safe anything that uh you you put in the browser you have to assume someone can get to so backend for a front end says instead of storing it in the browser let me let my browser talk to an endpoint that it trusts and is secure y on the same host same domain basically the the API backing the application that application that back in API will handle the secret and handle the handshake with whatever resource it has to do and then return the result so you're basically offloading it to the server so it can happen behind the firewall if you will and uh keep keep those secrets from leaking out cool um all right okay here's a fun one well do net9 finally introduce a solution that can be used for cqrs instead of us having to use media yeah I think this one I think this might be related to some of the conversations we've been having about exploring adding space um adding support for an venting framework in um aspet core um so the answer is no uh mediator is about implementing the cqrs pattern using inproc um messaging um and inmemory storage the the work that we are exploring um is about out of Croc messaging and end durable message cues um so for the time being if you're using C um if you're using mediator to implement the cqrs pattern with in proc messaging that's still going to be the way for you to go um in doet n and Beyond okay uh few questions about just kind of like default UI and stuff like that so here uh wouldn't it be nice for an alternative to Blazer came with pure web component based structure that is free from complexity to me what came to mind here is is thinking of like the fluent UI for Blazer which is built on Fast which is web component I know I know there was questions about fluent UI as well this one you know if you want your front end to be just based purely on on web components and you don't you don't like it says alternative to bler so I assume they're saying like not even using Blazer I mean that's certainly an option like there are obviously many uh really uh high quality ja front-end JavaScript Frameworks out there and some of them are now just based purely on on web components um I'm trying to think of uh was the one you if you just I mean you search there's probably a new one every day it's JavaScript but there are a bunch that are just like I just want to do web components only um as opposed to having its own separate component model so you can pair that that style of JavaScript framework with an asce core backend and that's totally a valid thing to to to do and we know we have lots of people that are doing frontend JavaScript with their asp.net core apps um Blazer is targeted more for the case where you really want to do the whole thing using uh C sharp and andn net but yeah that's a there are options definitely are options out there okay and then the related question just asking why isn't flu fluent UI the default for a Blazer app it's a great question you know i' I've thought long about this um for people aren't familiar with fluent UI like that's the design system that Microsoft uses for a lot of our products and we provide components for you um using fluent UI both for many popular front-end JavaScript Frameworks there's react ones there's web component ones and we have a Blazer component library for doing fluent UI um it's uh it actually has its own templates already so if you want a Blazer fluent UI app there is a template pack that you can just install using uh on the the net CLI and then you can net new blazer fluent or whatever the I forget the exact template name but is it's already available um whether that should also be the default in Blazer like out of the box you know that's something we have considered um we we we actually held back on doing uh any major changes to the Blazer template content inet 9 in part because of that one the desire to focus on quality fundamentals you know less disruption this release more like let's just improve the experience with what we've got so we're not actually G to we're planning not to do any major uh shuffling of the the Blazer templates in this release but we will I'm sure talk about that again in in net you know v- next about what should the uh what's the right set of Technologies to start people out with in a Blazer app and fluent UI components are certainly a great set of components cool okay um switching it up a little bit but there's a question on um how can a beginner Start Learning Net core so Microsoft road map but yeah I don't know John do you want to talk to the Learning Materials like we have Microsoft learn is a great set of resources let me just share this this is this is our if you go to.net learn this is kind of our you know our top recommended getting started information so this links to these different learning materials for different sections and so we have some getting started tutorials um some of these are on you know in browser where you can go through and type code directly in browser um which is pretty cool um and then also linking to video you know beginner videos and then down here in our learning materials and we um are you know constantly updating these so for instance if you go into web these are all these you know like front-end web development backend web development with some faces you'll see on screen here so um so this is kind of our top recommended learning materials and um yeah we put a lot of work into these so this is this is my recommendation here someone was asking about they say C programming but I assume they mean c because like why why would why would you want to do c when you can do c there's also a beginning video series for beginning c development I think wasn't it David Fowler and uh and uh hman that did that one it was recently they did yeah let me see C video series so those those if you like learning by by YouTube or learning by by video series there's a a bunch of nice ones that are available yeah that one the what is c one is there go through as well and of course also the uh there's also the free code Camp C yes um track right yeah so we have uh working with free code camp we came up with a certification and uh it's integrated in with the um the learn the net learn um or Ms learn for. net content so that's also um linked to somewhere in here too so cool all right uh let me see going back to the questions okay another cash question is there another is there a way to load data from cash before first render um I'm not sure if that's like more of a bla Blazer question or a caching question um I mean when you so a component like if you're doing Blazer a component has a life cycle and you can hook in when the component's being initialized to say I let me run some code here to initialize this component like you override the uninitialized or uninitialized async methods and that's where you acquire any state that you want to then use when rendering that component and that might involve like going to some cach someplace and saying well do I have any data in reddis or or wherever that I'm going to to use to you know render this data Grid or whatever it is that that you have so yeah um U there's definitely places where you can load any data you want whether from cash or otherwise before doing a page render um otherwise it might be very difficult to do that render because you don't have your data but I don't know if there's some uh I don't know if there's other like specifically to the hybrid cache Fe set of features I don't know sopia does that uh yeah I think this tracks to me as a Blazer question maybe about dat loading so your response uninitialized is your friend that's where you you initialize your component with whatever state you want okay I I'll give I'll give our talk some screen time here there a question about zaml and I saw you just answered that there thoughts on adding zaml for design UI no thank you we we we support that for Maui like if you're doing native app development or WPF like those are zaml based sucks but we have no plans to add that for uh for web app development awesome okay um let me see I will have to start wrapping these up so if you got questions you haven't asked yet get them in there I'm gonna ask this one just because I like the use of the pro the proper use of the word crypto any crypto news like rsfe and web assembly so any cryptography not in not in net9 um so there are some like we have the net crypto apis right and uh um they are I think that the issue is that the bunch of them are synch like the platform apis are synchronous but they really need to be async in order to um interact with the browser uh web platform appropriately um we do have some items on our backlog to like add like um async API surface area so that you can do crypto operations using the browser's uh um platform crypto support from from web asembly but I don't think any of that's scheduled for do n okay all right let me see uh can we expect a Blazer Community tool kit it's like the Maui one I think iume is what they're asking yeah um that's you know something we could discuss if people really like that that engagement pattern I mean there's lots of Blazer Community tools and and libraries out there and we we strongly encourage and and and you know need that that that Community involvement to to help the Blazer uh framework be successful um but we don't we don't have any plans to like set up like a formal Blazer Community toolkit our ourselves if someone's interested in spinning something up as like an organized thing with the community that that would be great cool okay um so we're not getting into smart components yet we have a show lined up for this but video came out asking um so can can they be used in Native Maui applications so okay so people haven't heard of smart components this is a uh the the latest Steve Sanderson project where he's been working on making it easier to build AI powered uh user controls that do you know you leverage AI Technologies to make uh improve user experiences and so he has a bunch of pre-built Blazer components and NBC tag helpers and razor Pages tag helpers that you can uh just drop in and use and get cool stuff to happen in your apps um they the current set of components that uh he's put together are for web they are web targeting so if you're building a blazer hybrid app you can use the you should be able to use this I believe the smart components in a Blazer hybrid app because they'll render within the the web view um there are of course discussions about like like these these components aren't just use useful for web they're also us for useful for Native client development so you know should there also be Maui components like native Maui components you know native WPF native Wind forms like these are all things that are being talked about but uh they're not not available in their current form this is it's an early experimental relas so we're uh we're kind of trying to see like are these how how useful are these components did we build the right ones before we start building you know n copies of them and then realize oh wait like we need to do something slightly different here so okay cool all right let me see uh question regarding cache how can I prevent caching JavaScript files inore content I run this issue every time I publish because the cache version is missing a new function would this be fixed by the fingerprinting thing you were talking about yeah yes it will so we will for files that we generate and links those files that um we create U we will use the finger printed file name by by the by default so this that will avoid this this type type of problem um for places where you you are referencing the file like you have a link tag or a script tag or whatever it's your code we will give you apis so that you can map the file name to the the fingerprinted file name your yourself you can opt in to using the the fingerprinted file name so that both those things will be available but because the stuff in underscore content that is a a thing that we generate that will just start working by default awesome okay several questions about diagnostic improvements I I know you mentioned some but I don't know any any other thoughts on diagnostics I I I think that there were some slides on diagnostics right is and several points anyone want to take this one I don't know help trou sh I I think some of the the Telemetry and the depth time experiences that you get with a spire and the dashboard are really helpful uh for debugging issues um this question can can span a couple of different directions there's also lots of improvements um in the debugger and visual studio um that I think are helpful here so I feel like this particular space um is one where we like incrementally keep making improvements in different fronts whether it's in the platform in the editor um or in the tooling um so I guess that that's my take on is there there's always improvements it kind of just depends on which which part of the stack you want to look it's it's a pretty broad question I was yeah lobbing it out there okay moving on uh any changes for having async components or calling async methods directly in razor so that is something you can do today like you can you can async logic inside of of Blazer the oh actually maybe what this is talking about is Mark the in the rendering logic we requir the rendering logic to be synchronous so any async logic you you have needs to be like in vet handlers or in component life cycle methods um in the rendering part of your component the rendering logic needs to be sync needs to be synchronous that's a that's a hard constraint no plans to change that in terms of how Blazers rendering model works [Music] think John's is John's audio breaking up for anyone else yeah okay question for sopia hopefully I'm back yes okay you're back is the Eventing Library going to support distributed patterns such as Saga message and enrichment Etc um good question there's an Etc there so I'll just speak to the ones that are listed um sagas are not something that we plan on supporting out of the box um message enrichment we do plan on providing functionality similar to aspet cores middleware and filters that kind of will support this effort to be able to modify or enhance messages with metadata um I would recommend taking a look at the issue for some of the feature um sets that have been been outlined with regards to that okay cool um I'm trying to finalize a list of questions here they're coming in Fast and Furious um if we don't if we don't get to everyone like there is also GitHub discussions like we do have actually a specific discussion for the road map that you can hop on there ask your questions and product team members monitor that as well if we don't get you here so I know there a lot of questions all right I'll try and lock down to the list I've got starred here um and some of these are already asked okay um guide for using razor components without HTML for example custom rendering oh wow um no I mean okay I mean there's some history here right like like you Razer started out with aspirations to try and be a very general purpose templating engine not just for HTML like you just you know C rendering strings of stuff as we've evolved Blazer over the years it's gotten more and more tied in with specifically HTML rendering like we we really don't think of BL of of Razer anymore as a general purpose you know template any content you want uh system we we we think of it's a way to generate HTML um so yeah I would say no you probably want to look at something else I think you'll you if you you might get some progress trying to use Razer to template arbitrary content um like we actually in some cases use it that way ourselves um but I think in in many cases we've started uh moving away from that using other things so you might want to try a different tempting system razor okay seems like my computer is glitching again oops sorry uh do you am I live yeah you're live okay my browser is hanging which is making it difficult for me to collect the next questions um I'm going to see if I can fix it otherwise we may um uh okay having issues I wonder there it is it's awesome here okay I'm going to minimize and refresh okay my browser is completely locking um I think we should post the link for the discussion if we can yeah I get that let me see if I can wonderful um there it is my browser's coming back hooray okay so that was that one that's twitch now I may be out of luck here just streamyard is locked okay um I'll give it one more mess around here if I'm a maybe I have too many tab this is weird that it waited for the very end um and closing closing all I'm closing so many things okay one last look here I may need to wrap it up if I can't control back here um I think we got through most of the questions we can get into the um we can uh make sure that the link for the discussion is in the um is in the is in the description and uh I think I'm going to I'm GNA try Closing one more thing and see if I can okay I'm going to refresh my browser so I'll drop momentarily this is only temporary John G will return we should put up a little technical difficulties uh picture actually I think it'd be appropriate just to have the uh the Blazer loading like with the the pulsing there there go there he is am I back you're back I'm back okay let me let me wrap up let's let's just go to that we've gone really long let's go to um so the best discussion I don't know can someone uh Dan you've got your ending slide here I got a link to the to the road map and I can the road map itself has the discussion Link in it so if you're looking for discussion and you remember the road map you could you'll find it that way perfect but let see if I can quickly do a thing here back that's the one you see that this is great okay reloaded I hot reloaded it into my PowerPoint presentation very very nice okay I think this is awesome um and then of course we'll have more deeper dive uh Community stand-ups going into these as as these develop uh thanks thanks all of you so much for your time and I'm gonna play us out with the ending music which is very exciting so awesome thanks every thanks for [Music] attending
Info
Channel: dotnet
Views: 15,333
Rating: undefined out of 5
Keywords:
Id: dOCSc37zdos
Channel Id: undefined
Length: 82min 39sec (4959 seconds)
Published: Tue Mar 19 2024
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.