 Welcome to our very first live show of Visual Studio Toolbox. I'm your host, Leslie Richardson, and today I'm also being joined by my co-host, Robert Green. Hey, this is exciting. Yeah, shoot, our first live, first time live, so feel free to comment away, ask any questions as we go. There might be some hiccups along the way, but that's part of the fun. So first off, a couple of housekeeping things. So this is not going to be a one-off show. We will have multiple live shows of Visual Studio Toolbox down the line, kind of shooting for at least a once a month or once every other week sort of cadence. And definitely you don't want to miss two weeks from now when we talk about all the brand new features available in 16.9 of Visual Studio 2019. It's going to be really exciting. A lot of the Visual Studio team is going to be there to showcase what they've been working on and why you should definitely hit that update button on your installer immediately afterwards. So stay tuned for more info about that on March 9th. So that's, and then on March 23rd, we're going to have Mickey Goose set on to show us GitHub. And we're going to do source control, GitHub actions and work items and anything else we can fit into only an hour, only an hour. Yeah, yep. So we're saving the long form stuff for live content and we'll still have our pre-recorded episodes with all of our awesome guests here to show us some really cool tools and features that you should definitely take advantage of. Yes. So, and shout outs to everyone from around the world seeing the chat, greetings y'all. And yeah, so let's just dive right in. So today we're going to be talking about the Uno platform and Robert, would you like to introduce our guest? Yes. So our guest is Jerome Labin from the Uno platform team. There he is. Hello, Jerome. Welcome back to this program. Thank you, it's been a while. Yeah, well, everything seems like it was so long ago now. Yes, we did a couple of episodes on Uno back at the end of 2019. We had Martin Zickman do kind of a gentle introduction to it. And then we had you guys on one of our traditional deep dive episodes where you really went into the plumbing behind it. Yes. That was fascinating. And so for our first live one, we thought, well, there are people that have heard about Uno. There are people that maybe they've seen it but not necessarily have played around with it. So we thought that you could be our inaugural live guest and start from scratch show us how to build an app with Uno. Yes, that will be amazing. So again, show you all the things that we've been doing. And rather than do it as four 15-part episodes or three 20-minute episodes, four 15-minute episodes or three 20-minute episodes, this is the perfect venue for the live. So we got a whole hour without having to work. Well, we'll run out of time regardless. Yeah. But not for an hour. Well, that is too much because I may fill it up. You've already got some fans in the chat too. Yeah, I can see that. Excellent. Hi, John. How to start out with what is Uno? So Uno, actually, so let's show my screen already. It's probably just explaining all what that is. So Uno is about bringing XAML and C-Sharp to the web. So .NET and C-Sharp to the web and iOS and Android and Linux and so taking all this and getting to all those platforms with single code base, Pixel Perfect, everywhere .NET runs, all of that goodness that's been happening lately with .NET 5 and 6 and beyond, which is a third-party ecosystem that's available as well. And that's one of the good things and that's free and open source. That's one of the things that may Uno just go, you know, rock it with a number of contributors and people interested in it. And the base idea is that we take the WinUI, XAML and API and we make those available for non-Windows platforms. So browsers, iOS, MyCoS, Android and Linux. We have quite a few people interested in Linux recently. So it's quite nice, especially in the IoT space and we can talk about that afterwards. But that's the base idea for WinUI. So it's taking the WinUI API and making it run everywhere. Okay. So I guess we'll get this one out of the way first. I can think of at least one other product that does something similar, XAML, C-Sharp, multiple platforms that of course is Xamarin. So why Uno when we already have Xamarin? So Xamarin first, why Xamarin when you already have Uno? Yeah, it's a very good question. So Uno started a very long time ago, actually when before Xamarin Form started and the idea behind creating Uno was about the company that was writing applications. So Inventive, it's a company that's the parent company for Uno and we were developing a lot of applications for Windows like I think it was Windows 7 series at the time, then Windows 8, then Windows 10 and all the civilized. So we had a lot of background and skills and a big team that was able to do that kind of development. And we said, we know about doing all those applications on Windows and then people were asking us, well, you know how to make Windows applications, so why don't you help us do iOS and Android applications? And so we started bundling of all that and said, well, let's say we take this out that we have which is close to the civilized one at the time and try to make it run on iOS and Android. So when we're talking about, I think it got just renamed from Monotosh to Xamarin iOS at the time. So it's a very long time ago. And that's where it started. And then we continued and the WinUI team that's on the Windows team and now the WinUI team have been developing WinUI with all those screen sizes in mind, so that means that the API set has been improving and having all those concepts in mind. So it goes from hover states to touch and put to Bluetooth to holographics and things like that. So lots of those APIs are there and they're well-defined. And we said, well, that's not reinvent anything. You know, we're taking the API that exists and implements that to make it run on the other platforms. So now the difference with Xamarin Forms is that Xamarin Forms is not a state of APIs. And it's a different ones, which targets more of a mobile side because it was developed specifically for that one, even if it moved to other targets afterwards. But on our end, the idea is, if you know Civilized, you know XAML, you have a UWPF application or you have a UWP application, well, you can take the ecosystem that runs around it and have your application run on the targets that we provide support for. Okay, so basically, if you already know the Windows XAML, then you can just get going without, I mean, obviously Xamarin Forms XAML is very similar, but it is different. So if you already are expert or have experience in Windows XAML, then you just start from there. Exactly, exactly. You see, yeah, it's, they're very close. You know, the Xamarin Forms XAML and the, and they say WPF and when you why, but there are several differences, like the naming is a difference and the propagation of properties is not always the same. So there's the, that's the kind of things that makes it a bit different. And for WPF developers that know, you know, some of very specific keys and especially enterprise developers that want, they want to go really deep into doing things in XAML. And that's some of the things that are missing in some cases in Xamarin Forms. When you have, when you why, it does not have all those yet, but that's one of the discussions that we're having with the when you why team as well, like adding features that are WPF developers have and want to have in when you why. And they're listening. They're adding stuff into, into when you why. So that's really good. All right. So let's, let's switch to demo. I know we could easily sit here and talk all day, but I want to shut this up and get the demo. We can't see it, it didn't happen. Exactly, exactly. So I'm going to be showing you, so the way we're, we're providing support for, for UNO in Visual Studio, that's the main development environment for now, but we're expanding to others, but let's use for Visual Studio for 2019 for now. I'm using a preview bits because there are lots of things that Microsoft are, you know, the, so the when you why team and, and a visual studio team are adding to help us have a better experience. And we're actually waiting on 16.10 when there's a, there's a something that's coming up that's going to help us significantly. So that's, that's going to be, that's going to be fun. But the, the starting point is installing the, the UNO extension in the, from the store. So you basically add that and the new platform solution template. So that's going to provide you a set of templates that you can have when you do find your project. That's free, right? It is free, all of it is free. There's nothing to do else from installing Visual Studio and, and playing and playing around with that one there directly. So you have a cross-platform app that's available. So that's the one that have behind that, that screen. But there's also another one that allows for creating. So that one is a bit larger. And the reason for that is that there's a new feature that I enabled on my machine, which is a dot net new templates that are appearing here and there are duplicates. And I want that to be fixed somehow. So I'm discussing, discussing that with the team that does that feature and it's amazing. So quick question. Speaking of deploying UNO on Visual Studio and installing it and stuff, we got a question from Machat asking, can UNO be deployed on virtual machines? So, I mean, UNO is a library in the same way that you would install something like, you know, it's pretty much the same thing as Emory informs in terms of deployment mechanisms. So if you install, you have a new get package, you create an application from the templates. And then if you want to run Visual Studio in a virtual machine there, sure, you can do that as well. There's no specifics aside from installing that new get package and extension inside of Visual Studio. So yeah, cool. So that's the default application that's created when you're getting to, when you created the application using the template. And what you will see here is that there are lots of platforms and one shared project. So the idea is that the code for your application is basically in that shared project. And that shared project is referenced in all the other targets that are around here. And those targets are pretty much empty. There's nothing added there. Like I would say if we open, for instance, the UWP project, there is a Apex manifest that provides the metadata for the application to be installed. Some assets that are specific to the store for UWP. And that's it. There's nothing else. The rest is located inside of the shared project here. Same thing for the others. Like Android iOS, Mac OS, you get, so what we're calling Skiya GTK support. So I'm gonna be showing you that afterwards. Tizen, WPF to allow your app for running on Windows 7. We've had quite a few requests for that. And WebAssembly. So that's all the heads that are available for running in Uno. So now if we go to, let's say, we start the flow with running on UWP, we can run the application directly on the machine. So we select x86 and then start the application using the debugger. So let's see where that goes. So one of the things that we like here is the fact that the team in the, the Visual Studio team has been working on the XAML IntelliSense, not IntelliSense, XAML Hot Reload feature. That was nice. So I'm putting that on the side and then I'm putting my application on the site here and I can run my application on the side there and then try to modify the application directly. So if I change something there, you can see that the application just got updated right away. So let's put that one on the site. So that's the kind of things that we can do with that. So you can see here, a few of the squigglies that are appearing there, that's the kind of things that the dot in Visual Studio team is gonna help, are going to help us with in 2016-10. So that's why we're waiting on that one. There we go. Yeah. We'll be sure to notify you when we do 16-10. So yeah, it's the kind of things that we were eagerly waiting for and that's gonna help with debugging. So there's a few things with rebuilding that make that go away, but that helps. So we can see here that, let's say the trimming at the top is on the right one. So we can have things like, let's say a bit of padding here and it moves right away, without having to adjust anything. So that's the beauty of updating all that with not having to restart the application and- Is that a new feature? No, that's not a new feature. Interestingly, it's not a new feature, until a few years ago, I think a year or two ago, that bar wasn't there. And so it was not known by a lot of people. So I'm showing it, every time I get the minute to show it, I just show it because it's important to say that you're able to not restart the application. And in the future coming up for.NET 6, there's going to be the C-sharp hot reload feature that's gonna work on all platforms. And if you're eager to follow that, there's interesting developments and on the done that runtime issues and PRs where new APIs are added as we speak for adding support for hot reload for all targets. So that's gonna be nice. So you can change your C-sharp and then it just updates the app, the live running app, live running app, so with the new code, so without having to rebuild. So that's gonna be a big time saver. So that's the kind of thing that we can do. And another thing that we show generally is that you can have, let's say, let's say something like a stack panel, one of the things that I like the most about this is being able to change bindings. And I'm doing that, if you've seen one of the demos that I've done already, it's something that's gonna be very familiar to you. But the idea is that I just added that and then I can change the binding at the top to have the binding to the value here. Nope, not that you fall back. And change the element name to the slider and then my slider just updates right away. So that's the kind of things that is possible to do with hot reload. Now, let's say we've developed our application and we want to push it to another platform, then it's a matter of just stopping the debug session and then go to, let's say, WebAssembly, for instance, and start the building of the app and the application is gonna be built. So you can see I'm using .NET 6 already, so we're already in preview, but it works. It's pretty stable so far, so that's pretty nice. So while that's building, we have an interesting question from Pablo on, how does the XAML compare to WPF to other things in terms of limitations? Yes, so there are many flavors available there. So the XAML itself, when we're talking about the XAML, so the file format itself, it's the same everywhere. There's no modification of any kind, so it supports pretty much everything. What's different is the API supported underneath. So let's say, for instance, if you're having a property inherited, it's something that, if you say it, let's say, the text color on top of one specific set of the visual tree and then you want that to be inherited down to something else, then it can get complicated to do in some of the platforms. So it's something that's available explicitly and for developers when WPF. On WinUI, it's not available, the framework uses it, but it's not available to developers and it's not available completely when using XAML reforms, for instance. On the other hand, there are features that are available in XAML reforms, like sometimes the grids, they took the liberty of changing the way the XAML API was done in WPF at the time to enhance some scenarios that makes them more interesting. But then if you're talking about bindings, for instance, WPF has multi bindings. It's something that's not available in the others, but WinUI has something that's looking similar which called XBind function bindings for which you can add multiple properties there. So that's the kind of things that makes it more interesting to develop at that point. So it's kind of a, there's things that are available in some and not in the others, but some kind of compensate for the missing features that are available in the others. So it's kind of a pick and choose. But the idea is that Microsoft and the WinUI team is trying to get most of the WinUI features, most of the WPF features that people are asking for. Multi binding is one, markup extensions is another one that's going to be added as soon as WinUI. I think it's even added in the latest WinUI. We'll probably kind of have to take a look at the issue but I think it was there. So that's the kind of things that is moving and is gonna make WinUI more interesting in the months to come. Cool. Well, actually, while we're still on the subject of features and components that Uno can use, we got another question from Haqqan. I apologize if I get names wrong, but is it possible to establish a database connection in an Uno platform? So it depends on the platform as always. There's an, it depends that that's there, but it's not because of Uno itself. It's mostly caused by how the application is running. So let's say for instance, let's take two that are dramatically different or three. Let's say you're making an application that looks like, so you're targeting Uno, WinUI, and you're running for, let's say, WinUI for desktop. On the desktop, you can do pretty much anything you want and you're running WinUI 3 so you can do TCP connection or UDP connection or whatever is available for your database provider and then you can go to that database without any hurdle. Now, if you're on iOS, then you may start to have a bit of differences. So you can do things, you can have TCP connections, but you cannot, you have limitation with the way applications are behaving. So you may not be able to have an explicitly, an explicit constant connection to your device because your application may be stopped at any time. That's the kind of things that you may have as a difference. And then there's WebAssembly and now WebAssembly is another beast because it's a browser. You cannot do TCP connections. So you cannot do, you cannot connect to anything you want except for WebSockets. So if you have a database provider that has a WebSocket provider, then you would be able to do binary, anything you want type of connection that's close to TCP. But other than that, it's HTTP connections and then there are limitations there. So yeah, it depends. No worries. There's always a clause to any other feature. It's like, yeah, this feature is here, here, here, not here. Regardless, you can connect to a service that talks to a database. Yes, yes, exactly. And this kind of questions about databases is generally something that enterprise developers that are used to have a desktop application connecting without a middle tier, connecting directly to the database. And that's fine in local scenarios somehow. But once you get to a model where your application is running in, let's say, in a browser, connecting to the database directly may not be a good idea. I mean, you can if it's possible, but you're faceting with a web API or something like that is generally better. Cool. Cool. So the application started. And we can see here that the application that I did with UWP is now running on the web. So same thing. So I got my slider moving around, and that's good. And I can do things like, let's say, for instance, my background here is not the right one. I can choose and do and go red if I want. And that's the kind of work that I can do. So it's possible to change all of those things directly and move around and experience the applications in the right way. Now, one thing that is interesting is when we go to iOS. So let's start that same application on iOS and see how it behaves. So the idea is that same thing. It's the Xamarin tooling and soon to be .NET 6. So Uno stands on this. So that means that anything that the Xamarin team and now .NET team is able to do as part of the features provided there are going to be accessible for Uno apps. So anything that goes along with startup tracing and any other kind of new development that's available in Xamarin or .NET 6 is going to be available in Uno apps as well, which includes catalyst support. And that one is going to be an interesting one. So it's about making iOS application running on macOS without recompiling them. So that's going to be a fun one. Cool stuff. So yeah, it's lots of things changing in that area. So that's my application running on my Mac and on my iPad emulator here. And you can see here that the top it's not weird. It's probably too close to the top. So and there's iOS guidelines that said that it has to be better than that. So let's change that a bit. So it didn't update for iOS. So that's probably going to be something that I'm going to have to take a look at. That's the kind of things that we're looking at as well for 16.10 because of the updates and the way applications are running. .NET 6 also is going to be helping us there because the way projects are the new fancy new project, SDK style projects, are those that they've been developed from the ground up by David Keen and the team. And those are running really well. So that's why it's working best on the others. But so we'll see what's going to happen with that. .NET 6, but we're hoping it's going to go way better than that. So that's the kind of things that we can do with there. So let's go back to our, let's go to another target actually. So let's go to GTK. So GTK, it's what we're doing here is taking the application and making it run using a different way to render the UI. So when we're talking about WebAssembly, if I- What is GTK? Yeah, what is GTK? I'm going to go back to that because I want to explain why we're talking about GTK and it's going to be easier. So when we're rendering an application here, when I select the, when I go to Debugger here and I select, let's say, for instance, a zero here, you can see here that in the browser, I can see there's a P element. And then there's a kind of a div here that is styled with color, background, energy be here. And all the elements that are there, you can see windows.ui.xaml.shapes.retangle. So all the visual tree that was available as part of the XAML that I wrote is going to be represented as HTML elements that are going to be in the page. That's the way we render things in HTML in the browser. On iOS and Android, we're doing the same thing. We're taking the XAML. So the text block here, we're generating something that goes to the iOS representation of a text block. Same thing for this. We can represent the actual slider bar that's available there. And the problem is that in some platforms that can't be done. We can't reuse what's available underneath either because we didn't have the resources to do that at the time or because it makes sense, especially for IoT, which don't have anything that may not have a UI toolkit to do that, to use this KIA rendering backend. So what we're talking about is KIA here. We're saying we're rendering all the pixels one by one. That means that there's nothing that we're using to draw something on the screen aside from using this KIA rendering engine. So KIA is the engine that's used by Chromium to render itself. So that's a pretty efficient way to render stuff on the screen. And we're using to create it to render the application. And GTK is actually a toolkit that's used on Enix platforms to, let's say, create graphical applications. So we're using this to create a window, a cross-platform window that can run on Linux, on Mac OS, and on Windows. So when I start this application, what's gonna happen if I selected the right one? Yes, I selected the right one. My screen's so big that I cannot see. That 4K life. Yeah. So that's the same application running here. And so you will see that. So it's a Windows frame here, and it behaves the same way. So I can just move around and it behaves the same way as the other application. The other thing different here is that everything's drawn as pixels. There's no control or anything that goes along with the platform underneath. So it behaves the same way. So what is interesting there is that we can now say that that application, because it's a GTK app, which is compatible with Linux, we can go and select WSL2 here, which is a feature that was added in 16.9. I think you're gonna be able to talk about that in two weeks. Yeah. Never know. And tune in to find out. And it was added there. It was a separate feature that was added there as a different V6, but now it's installed by default with Visual Studio. And I'm starting also an application that's called XVC SRV. So it's an application that allows to display Linux Windows for when running on Windows. So that's the interesting part. And when I click this, what's gonna happen? And I'm gonna put a break point so you can see that I'm not faking it in any way. I have WSL installed. So WSL is a Windows subsystem for Linux. We're not allowed to faking on this show. Never have. We're not allowed to faking on Visual Studio. Never have. 100% honest. Oh, well, so no, in this case, no faking of any kind. And so WSL is about running Windows Linux, Windows, no, sorry, Linux applications on Windows. So you have an, let's say, a Moodoo shell here and it's actually running the actual Linux there. So WSL one was about just having the user land applications running on Windows. So they were faking it with Windows processes and kind of making it them look like they were running Linux. And WSL two is actually running a VM with the Linux kernel inside. So that's the actual application running. So I don't have a, let's say, why don't we name here, it says Linux. So if people are familiar with this, it's actually running there. So now- So quick question. While we're on the topic of Linux, Max asks in the chat, do you need to install Mono or Xamarin for Linux to use the UNO platform? Not at all. Not at all. Not at six. All of them are not at five actually. Not at five and six. There's nothing else. And actually when you install the WSL two extension, if you just install WSL, so you install WSL and then you enable that feature in Visual Studio, it will just install everything for you. And you don't need to do anything there. It installed everything for you because that's pretty cool. So I started the application and you can see here that the paths for the DLLs that have been loaded are the Linux ones. So they're not running on Windows. So the only thing that runs on Windows, but it actually, it's taken from my Windows machine in some sense, is the DLLs that I just built. So you can see here, it's the MNTC and my path to the demo here and the DLLs, but the rest is loaded from Linux. So it's the slashes that change sides pretty much. It's not all business there. But the cool thing is that you can put breakpoints on code that runs on Linux. So if there are things that are not behaving properly, then you can see it right away. So that's pretty cool. And when I just let the app run, it's gonna be the same thing. So I'm scrolling down to the application running. So it's loading up stuff, but there it is. And that's my application running. So 4K screen is not helping a lot there, but that's the idea. So that's my application running there. And same thing. I mean, if I go here and change that amazing white thing here and change that, this is Linux running and the application is still updating. It's both. It's kind of a, you know, there's a rainbow kind of debugging that you can do. You know, when something doesn't display right, you change its colors to make sure that it's supposed to be there and it's not. So that's the way for debugging things. So on the topic of design and rendering and seeing what's getting displayed in the app ultimately, Patrick asks several questions about design. So first up, what's the story with, you know, and in this blend does, you know, have its own rapid design tool? Is there support for developer designer separation of concern as you get with blend? Of course. So the answer is yes for all of them. Well, maybe except the first one is there's no yes for that one, but the point of developing with Uno is about developing your application using UWP. So you make your application using Windows and then hopefully if we've done a job right, most of all the application, all the code that you've developed for your application is gonna run in the other platforms. So with regards to MS Blend or whatever design tool you're using, if it's working for UWP or when you want two or three, then it's gonna be compatible with Uno. That's the idea. So we're not developing anything on top of Visual Studio to help there because Visual Studio already has it. Cool. And as far as developer designer separation, well, I mean, it's all about, you know, the XAML, you know, separating the concerns with the code and MVVM or any other type of patterns that are available there. So yeah, it works with UWP, then you have it. Awesome. So, yeah. So let's take a look at a few other things that we generally show. And one of the things that people have been asking is the tree view. If you're an enterprise developer, it's something that you need pretty much. So let's go add the controls there at the top. And I'm gonna paste, let's say, let's put that at the side. Let's say, let's add a tree view, for instance. So if we paste that and we save, then we have a tree view. All right. So that's the tree view that's coming from WinUI. And that's one of the things that's been very interesting with when working with the WinUI team is that we get their support with bits and pieces that may not, you know, for the details that we need to get to get all this running properly. So, yeah, I mean, this is the code that's, this is the code that has been ported from the public WinUI source stream. So we took the C++ source code for tree view, ported it out over to C-sharp, and then added that to Uno. And then there it is. We have all sorts of fancy examples of the bindable tree view that's available as part of this. And it runs on the next, which is cool. Thank God for hot reload too, seriously. Yeah, exactly. Stuff like tree views and tables get so frustrated when hot reload doesn't exist. Definitely. For all the third party controls, right? Yes, yes. I'm gonna be showing you that as well, but we have a few others that are quite amazing, notably in Fragistics and Syncfusion. In Fragistics, they're doing amazing stuff. I'm gonna show you afterwards. It's gonna be fun. Another control that we ported is the info bar control. That's a control that can be used to do things like that. So you basically have a kind of a box that you can show and pop up at the bottom, and then it supports all sorts of things about you changing the type, colors, and you can close it afterwards. That's the kind of things that you can do with the info bar. So that's all controls that we have not developed. Those are coming straight from WinUI 2.5. We just ported the code over to Uno and it works. So that's why we're getting speed around adding support for more of the WinUI supported controls. That's all great. Cool. Another one's out there. Also on the topic of support, and I believe we were joking that this is gonna get asked behind the scenes. Marco asks, is this Naoi or what's the difference? No, I'm Maui. Okay, so no, this is not Maui at all. We're basically, Uno is its own piece of code. The only thing that we're relying on for iOS and Android and macOS is Xamarin. So the base bindings that allow you to develop C sharp applications on top of the underlying frameworks. So Android, iOS and macOS, and later on Catalyst. That being said, it's something that we're looking at as part of providing support. Let's say for Maui, let's say if we want to go to the web or something like that, there may be things that we can do there in the same way that we've provided support for the web, for Xamarin forms. We have things around that. If you're interested, we have a section about that on our website too, which I do for the inside there. But no, Maui is definitely moving. So we're on the lookout. That's for sure. Understandable. And there's also the new portions about XAML support, no XAML support, how do you develop your application? Especially do you want to develop using only code pretty much what other platforms are doing? I mean, when UI is able to do that kind of things as well, you're not forced to use XAML in any way. So it's up to you or your choosing there. We have people that have been developing applications using F-Sharp and published applications using F-Sharp and UNO. So that's the, and there's no XAML there. It's just pure F-Sharp that creates UI's. So that's the kind of breadth of things that are available. All right. One other piece of feature that is getting asked a lot is the tab view. So my UI's a bit too small there, but it's actually the tab view that you can have when you run the Windows terminal, the new fancy terminal. So that's the same code that's available there with the ability to add stuff there. So that's pretty cool. I mean, it's- I like that all this code is able to be recycled, essentially, for other purposes. Exactly. It's reused as is. And it's the same thing that we did when we put it over the Windows calculator. That's the Windows calculator we did a while back. It runs in the web. It runs on iOS, it runs on Android, it runs on even on iPad when there's no calculator provided by the system for whatever reason. So yeah, that's the kind of things that- I use on my phone. I don't use the built-in calculator. I use this one. Thanks for your support. Amazing. Yeah, if it ain't broke, yeah. Exactly. So another- I'm just gonna show you one last demo about that one, but it's gonna be a good one. One of the things that people are asking a lot about is the how can I use the Windows communities we'll get. And we have put it over the community toolkit as well, and we are maintaining that as part of the code that we're doing for enhancing the experience for developers. And there's a control that's called the range selector. Don't mind the spaces there that I'm pasting from one note, and it for some reason adds spaces there. So probably gonna have to fix that for next time. But the idea is that here I have the range selector control that's coming from WinUI, from the community toolkit. So let me just add some more space so it's visible. So it's that controls with the text blocks and range selector. You can see all the content there. And with data binding and X bind, that's just two bindings there. So that's the kind of controls that we can use. And we can use other controls, and that one's a lot better. I'm gonna have to stop the application for that one because it needs to be adding a new class. But I'm gonna be adding a class for customers here at the end of my, oh, actually I have it already. So it's a customer here with first name, last name is new and other things like that with a few customers. So completely static. And what I'm gonna be doing is add a data grid as part of what I'm gonna be removing my stack panel here. And that's my data grid running here. So it's binding to the customers functions here that I've using X bind. So I have a customer function here. It's data binding directly to it. It's auto generating the content. So if I run the same application using Linux as well, you're gonna be seeing the same kind of behavior that you can have there with a data grid. So that's the Windows Community Toolkit data grid running on Linux using Skiya. That's cool. That's really cool. And yeah, so it's the same thing here. If I run it for WebAssembly, so that's the kind of things that we can get running there. So it supports all the fancy things like new grouping and sorting and resizing and all the things that developer need to have there for they need to. If I remember correctly, I think that control was created for civil light a very long time ago and got ported over by some folks at Microsoft and now it's running in the web and Linux. That's too cool. So on the topic of resizing and as you mentioned, and you know, 4K monitor problems, Pablo asks, does UNO improve app size overall for mobile? So we're using Xamarin. So that means that the size of the application is gonna be pretty close to what applications are. When you're making Xamarin forms, not Xamarin applications. So the way that can get improved is by enabling the linking. You're making sure that your linker settings are configured properly and that you're mining all the details that you're adding there like assets and things like that. So that's the thing that's there. I don't know if Apple is gonna be providing some, let's say additional relaxation of their guidelines for using interpreters. So the interpreter may be something that is going to be helping for the size of applications. I know that the linker on .NET 6 is getting improved a lot. And that's needed a lot by WebAssembly. So they're working on that as well. So I wouldn't be surprised if for the .NET 6 timeframe, the applications for iOS and Android and other targets would drop down significantly as a result of those linker changes. Cool, cool stuff. So Jamie had an interesting question about Mac and Visual Studio Code. And then he followed it up with talking about M1 Mac. So what's the story if you're on the Mac as there's support for Visual Studio Code? Okay, so the story for Visual Studio Code is developing. It's something that we're very interested into developing with and labeling the story. It's already available. You can use Visual Studio Code and use the command line and development of the, you can start your application using the debugging tools that are available there. That being said, there are things that, especially with OmniSharp that are causing trouble, especially with regards to source generators that we're using a lot. So there are issues that we've been opening with the C-Sharp team there to ensure that that works properly. But that being said, other than that, if you're using Visual Studio for Mac specifically and not Visual Studio Code, you can develop your application pretty well. That's gonna work nicely. And if you're on the other platforms, let's say Linux, Visual Studio Code works as well. We have Pete Gallagher that's been doing quite a few things like running his robotic arm using a Raspberry Pi on Linux. So he's been developing directly on that device. So that's quite amazing. That's so awesome. Yeah, that's pretty nice. So using code is possible, definitely. But we're on the lookout for enhancing the experience, for sure, for Visual Studio Code. It's time. And what about? I know you made it big. You're seeing the robots keeping the program with your library. Yeah, I mean, it's two sliders. You're moving the claws here, I don't know what that is, and moving the arm itself, and turning it around using the three sliders there. So that's pretty amazing. Pete is live coding on that specifically every Tuesday, I think, so if you're interested, just follow him. Wow, that's awesome. Question about Wasm, the Uno Wasm app compiled unlike a Blazor Wasm app. So it depends. So that's another thing. So the answer is yes, but it depends on the target. So the idea is that with the Blazor, there are two modes. Actually, let's talk about what's underneath. So there's .NET underneath, there's .NET for WebAssembly. And let's actually take a look at the calculator here. There are two modes for Blazor, for .NET. There's the interpreted mode when you take the IL from the assemblies and run them as part of using a runtime that's compiled down to WebAssembly. But it's taking the instructions for the assemblies one by one. And this has advantages for size. New assemblies are pretty small. That means that they're downloaded pretty quickly and for the debugging experience is pretty nice. So in Visual Studio, you press F5 and you're gonna get something that's running pretty quickly. But if you're going for the performance, then there's a problem with the fact that it's interpreted. And it can be somewhere around 30 times slower than the equivalent WebAs... Compiled down to WebAssembly equivalent. And we've been supporting for, I think it's a two years or a year and a half somewhere. I don't recall exactly, but compiling down to actual WebAssembly. So taking the DLLs that are the DLLs of your application and compiling them down to WebAssembly. And if you take a look at the Windows calculator here, I'm gonna be reloading the application so we can see that. When we're loading the application, there's a file that's called .NET.Wasem here. And you can see that the application is that file, which is all WebAssembly for that application, is 5.7 megabytes on the network. So compressed and 26 megabytes uncompressed. And the reason for this is that the Windows calculator as parts of the application compile down to WebAssembly to make it run faster. So Blazom does not support it yet, but the .NET team is working on that as we speak. So, but in Uno, you can do that already. If you use the tooling that we have, we have a AOT mode and what we're calling PGOT. So profile AOT that run pretty well for your application there and make them go faster. That's awesome. So on the few other things that you were talking about ecosystem and partners, I have one application that's from the InfrasisticGuys and that's their control that it's doing. So basically what you have here is an application that when I move my mouse on the screen, it takes the colors of the pixel that's under my mouse and renders the colors as part of a chart that's below. So let's say if I go to the red here, you can see that the red is, you know, red. And the other colors are there. So you can see when I move to the green, same thing. So that's the kind of controls that it provides. So that's a web application that's using their controls and we're gonna be doing a small session, I think a few in a few weeks from now when they're gonna be showing some of their new stuff around those controls that are available for that. And it's amazing. Just take a look at those controls. We have a blog post about detailing what's available for that. So that's pretty cool. They have all sorts of charts and data grids and other kind of things that are available. So that's pretty cool. So that's one of the partners that we have. And another one is Syncfusion. And Syncfusion also has a set of charts like columns, bar charts. And with the abilities you have to show the kind of content, pie charts, donuts, and with the fancy images and all the cute stuff that you have when you have components providers that are providing their controls for those platforms. So all that is available cross-platform as well. That's amazing. Yeah, because on the subject of partners and open source as a whole, like what is the overall community like and for open source for you know? Oh well, it's quite amazing. We have quite a few contributors that are helping us shape up the platform and adding new features. And the idea is that you know, in Uno the API surface of UWP and WinRT is so large that we obviously have not implemented everything. So that means that if you're trying to do something and it's not available, you can take a look at the source and help us there. I mean, all the source is available. So let's say if you wanna go to, let's say for instance, let's say you would go to Uno here and then, well, actually let's use go to file. Let's go to stack panel for instance. You found the bug in stack panel. And then you can go to that stack panel here and say, well, I'm gonna fix that and add some unit tests and things like that. So that's the whole code that's available for you to poke at and take a look and see how you can fix it if there's something that doesn't work. Same thing goes for other types of libraries that are features. Let's say you have a Bluetooth low energy that needs to be implemented or that you need, then please help us. So that's the idea. Yeah. Open source is always a bonus for consumers and creators. There was a LNP also that did some funky things with smart buildings and sensors and all of that. So you hear the kind of a temperature, humidity and pressure in a Uno app read from, I don't know what that is, micro something. There's Raspberry Pi running there. And you also, all sorts of things. Looks like a microprocessor I used in college. Yeah. That's so cool. It is very cool. It must be really exciting getting pictures of that stuff to see new products. It's amazing. Yeah. The other things that people have been asking for is everything that goes along with Fluent and Material. And we've added also something that helps for people to develop Fluent and Material applications. So you can just style your application in which way you want. So that's the Material styles and the Fluent styles. We're even looking at adding a Cupertino style as well. So if you want to use the same style everywhere or use the style you want in any platform, that's the kind of thing that you can do. You know, and yeah, it's the kind of things that we enable for running and providing. So we have a large page that's available on the Uno platform site to enable those scenarios. If you have designers that are picky and want to have all that running in your application, that's the way to go. Jerome, can you show us the code samples quickly? We did get a question about what kind of samples are out there. Samples for, in general? Yeah, Coach, I'm so specifically wanted to know if you had anything that connects to a database or SQLite or to do. Oh, SQLite. SQLite, I like that one. So SQLite is one of my favorite demos. So I call that the TechSoup because it's the way it's built. The idea is that this is on the site code, C-sharp code that you have here, and this is the result of this. And when I click that button, what happens is that that code is parsed using the C-sharp Roslin compiler, the full one, without going to the web. So it's downloaded all to this sample page. And what it does is it creates a SQLite database running inside of the browser and connects to the database through entity framework core. And then queries the database to show you that content. So to show you that I'm not faking it again. Always important on the show. Yeah, exactly. Let's go for toolbox here. If I click Execute, that code is going to be parsed again. And you can see here toolbox.msdn.com. So that code is in samples on your website, is that right? Yes, that's on samples. So if you go to, I'm sorry, let's go back to Uno. You can go here, oh, sorry, it's at the top. You have all the samples that are available here as part of this, so live web assembly apps. All those samples are there with the source code that's available, including the calculator, the gallery that I've shown you, our playground and a few others. And we also have a repository that has many other types of samples in Uno platform that is called, I don't know where tab opened. Let's go here. It's called the Uno samples. And then if you go there, you're going to find quite a few samples with a chat for SignalR, dual screen samples, maps. Perfect. SQLite examples, SQLite and others. Excellent. So I think we got to wrap up. I told you. Yeah, I think we were initially worried we wouldn't get enough questions from the chat, but we got awesome questions and everyone seemed really engaged. So yeah, the close things out. Where should people go? What are the next steps for Uno platform and how should people get started? So platform. Uno is the way to go. You get to the getting started there. We have documentation and samples and all the others that are available there. And depending on the target there. We're also on Twitter, GitHub. We're all, I'm personally life coding the Uno platform on Tuesdays, on Twitch and YouTube. And we're on Discord as well. So if you have questions, just join us on Discord. So y'all are everywhere. So really there's no- Pretty much. You had any additional questions that we didn't cover today? Exactly. Thanks so much for doing this. Good to see you. Yeah. It's for being our guinea pig. Of course. And good luck for the next ones. Yeah, absolutely. And thanks everybody for attending our first live show. Hope you enjoyed it and definitely stay tuned for our upcoming live shows as well as our prerecordings which we try to put out every Thursday. And especially stay tuned for the 16.9 what's new in Visual Studio. And Jerome, we will let you know when we do 16.10. Definitely. Thanks very much. Eagerly waiting on that one for sure. Yeah. Awesome. Thanks everybody. Happy coding. Bye.