mergeconflict302 === [00:00:00] James: we did a Frank release candidate of.net Maui walk, walk, walk. Wow. [00:00:18] Frank: This is great because this is breaking news to me. Hello, James. Um, you could have given me some warning here. Okay. Release candidate. That means they have to take all the bugs. I file a really seriously. [00:00:32] James: It's very, very true. In fact, you can go to the dev blog posts in our little sweet little chat over here. Uh, yeah, this happened like two days ago, Frank. So I don't know. Where have you been for doing. [00:00:44] Frank: I'm not going to, I'm not going to take that little jab that jab, you just tossed me. I'm going to say, thank goodness. I've been waiting for this for so long. It's funny because you know what I've been doing. James, I've been programming in dotnet six, but, um, I've been programming down at six preview. So kind of. And what happened there was, they kept breaking things, you know, they kept breaking the APRs and I just couldn't keep up. I was getting a little tired of it, but like preview 11 was working great. I've been a rocket and Mi'kmaq catalyst apps and everything. Uh, but I hadn't been keeping up. I hadn't been keeping up because I've been waiting for this RC thing, because hopefully everything will get kind of frozen now and, uh, we can start hacks running [00:01:31] James: away. Yeah. That's super duper exciting because like you said, the, the API is complete. I mean, at least for Don and Mallory, but I think the thing that's under the hood is important here. Right? Is the base underlying. Tech, which has kind of already been like, I feel as RCS for a long time or GA is for awhile plus or minus plus or minus is that Android iOS Mac cattle is now I do know though that I've been Mac and Mac. Yes. Amex. Yeah. Mac catalysts, Mac and iOS. And. Got all of them [00:02:03] Frank: collect them all. [00:02:04] James: Then this one, I think he got them off. Yep. They're in there. And that means that there's a go live support policy, which is an important go live, uh, which means that it's supported. Right. It's officially a thing. And, uh, this is pretty cool because, um, you know, I've been talking about Don and Mallory for a while, do a video next week on it this week, I guess when it comes out, I've been kind of waiting on stuff, but you know, in building the podcast app, I know. The actual Andrew and iOS teams have been doing a lot of work. Like the Android team specifically has been done doing tons of optimizations for performance and linking and, um, uh, to make apps smaller and faster and leaner and meaner and all these different modes. So there's a lot of like under the hood work, that's happening on top of the dynamic Maui. Cross-platform goodness. That's in there. And this one has a whole bunch of stuff in there as well. That we'll talk about. [00:03:00] Frank: Yeah, exactly. And, uh, to play catch up, like one of the biggest ones we keep going over it, but a Mac catalyst, it's a whole nother platform, everyone. Yes. The beauty of it is you can take your iOS code or your Maui code and it just translate over. Yes. But at the same time, it comes with a lot of little catch gotchas and all that. Like it's a new, new. Target framework, which is a little bit annoying, which means, you know, all of us new people have to ruin these, uh, versions of our libraries for dotnet six and get on that and update everything. So there's still going to be a little Rocky road there, but, um, that, like you said, that fundamental technology has been there working for a while. Now I'm currently doing a dotnet six Mac app. I have a.net, so. Matt catalyst and iOS app, like a shared code base kind of thing. And I also have a Maui app, which tries to be everything, but you know, me, I haven't run the Android emulator in a little while. Yeah. But, um, I love that. So all that technology is there. Uh, Like I said, the thing most important to me is the freezing the API. So I can actually learn everything in its totality. [00:04:11] James: Yeah. One thing that's the most important one. I'm going to send you a link and I'll put it in the show notes, the link to the migration to RC one. Now there are APIs in iOS, Android, and Mac and Mac catalyst, obviously that are underlying, but there's also APIs and done and Maui on one thing that. Uh, worked on for a long time with the engineering team and PMT was Xamarin essentials, which has turned into Maui essentials, which now is no longer essentials. Frank, it's literally just part of the thing. Um, so, so this is cool and this release, I never thought this was gonna happen, but, um, it looks like ma Matthew Leibowitz and John Dick pulled up. Pull the plug and, um, yeah. [00:04:54] Frank: Can I, can I just interject? I have to say, I believe there is now an interface over, uh, your, your services. Is that correct? James, are you willing to go on the record right now and say you are no longer just the static class that you are? And interface and congrats, by the way, we used to say, you're in the box now, congrats for making it into the box. He [00:05:14] James: is in the box. 100%. It is done at Maui, takes a dependency on these straight up, which is cool. And they were able to reduce a bunch of the overlap, which is amazing. But yes, Frank, it is a 100% official that every API has an interface. It can [00:05:33] Frank: be. You're making a lot of people happy. Sorry. I just have to say, Hey, you're making a lot of people happy with [00:05:37] James: that. It can be registered with the built in dependency, injection service through inversion of control, through constructor injection. All of the good stuff that's built in, which is, which is neat, which means it's also testable, injectable and all the things you'd ever love in life. And Frank bang, bang, [00:05:54] Frank: bang, bang, bang, Frank, Frank James yesterday. [00:05:58] James: That I hate all things. IOC, D I, all these things dry. Why Frank? Why do I hate them? [00:06:05] Frank: I can only remember my reasons. I hate them because they're just giant global variables around that you don't know their lifetime of, and you don't know who's modifying them and that you have no guarantees about anything. It's the most fragile way to write software. [00:06:20] James: Hmm. No, that's not why I didn't like that, but I didn't like it because it was never really was like in the box of Xamarin forms. Right. It never was. In it. And I always felt like this [00:06:33] Frank: thing that there now Xamarin forms, people would always say, please don't use ours. It was there just to support Samara informs itself, but you can't stop people. I used it. We all used it, [00:06:45] James: but it didn't have that new beautiful asp.net core constructor injection dependency, resolving magic right now with something. But dotnet man. Has it, it uses the same exact system, which means Frank, I officially love it. It's amazing. [00:07:05] Frank: Wait, did you just sell out? You sold your soul now I take, I we're, we're we're taking sides, extreme views here. Obviously these things are fine. Used in moderation control yourselves people. Um, not everything needs to be an interface. No, but I've been writing plays or apps like. And they're there, you know, they really force you into the IOC lifestyle. There, there are just things you can't do. You want the logger, guess what? You can't get a logger without doing this. You want to use HDB client? Guess what? Guess which one you're supposed to use? The injected one, you know, all this stuff. They forced inject shiny. And so honestly, I, I just try to keep up with the times. And so, although I am not going a hundred percent in M on my apps though, I have been known to write up one or two little services. Um, I don't absolutely hate them and I can, I can deal at least, like I said, xamarinforms always had it, at least now they just have the more powerful one that, uh, it's kind of a dotnet standard one, basically at this point. So it'll feel comfortable for everyone. [00:08:13] James: Yeah. Yeah, I th I like that it's all built in, it works with the navigation system. So you can like navigate to a page was a little injector view model, right? You don't need, I'm not a huge, you don't need an interfaces for everything, by the way. I totally agree with you a hundred percent. It's nice that it has them for people that really want these testable things. Yeah. Like my view models. I'm not going to create like an Eyeview model or something like that, but it's in moderation that you needed. Um, so I totally agree with you, but it is nice that things can trickle down so you can nicely navigate. It reminds me more similar of ASP on a corn. I like that model because I am going to be doing a lot more blazer, ask things in the world of blazer and I'm going to be doing a lot more Maui things and it's. similar and familiar, not 100% the same. You know what I mean? [00:09:02] Frank: Yeah. Um, now they did break up your Zimmern essentials into a bunch of namespaces. I see. So we have, I'm going to just name them because there's a bunch, I hope this is alphabetical order accessibility. I'm sorry. Uh, all these start with Microsoft dot. Got accessibility in this case. Fine screen reading. Great. Uh, then there's dot application model, whole bunch of stuff for playing around with the operating system, uh, dot communication, which seems to be like contacts related data transfer, which is. Clip board and maybe drag and drop in the future. I'm not sure what Maui is. Drag and drop story is outside of apps. Maybe you can fill me in there dot authentication because, oh my God, the world, let's not even talk about it. Doc devices, much more fun. You got battery. I flashlight, I device display. I device info. I vibration. That's the fun one. Everyone should use dot devices. That's sensors. Good stuff there. Barometer compass. Good stuff. There's so much here, dude. Not media screenshot, text to speech unit converters. Not sure. I agree with that namespace choice, but sure, fine. Networking connectivity. Sure. That's about it. And classic storage. Where is it? Where is it? There it is. I preferences. Beautiful secure storage. It made it, I file system. Oh, I'm scared. [00:10:30] James: Yeah, that one's simple. That one is just, um, like give me that one. That one simple. Let me just file system. Maybe not the best name when we created this one, but this one, this one is helpers for the file system. So it's like, give me the cash directory. Give me the app data directory, or like open a bundle resource. Cross-platform that's pretty much. Uh, as well. Yeah. [00:10:53] Frank: Okay. So it's more like. Yeah, I get you. That's a tough one to name. Yeah, but it's not an abstract file system. Uh, because there are a few new gets out there that people have written some abstract file systems, which are very nice. Um, like in continuous, I have an abstract file system so that I can read files and write files from a variety of locations, kind of transmit. Anyway, um, totally different from that. Cool. This is a, this is impressive. There's a lot here. Um, is anything new from essentials? No, I think, I think made spaces, [00:11:30] James: there's some new, there's some new, um, like updates to make things compatible and things like that. Yeah. And yeah, so it's super duper good. And I actually made an entire full day workshop on, on Don and Maui where you can like build an app from scratch and it uses all these new things that we're talking about. I'll put that in the show notes as well. Um, if you're really interested. You know, learning Donna Maui stuff, but I'm really excited that this stuff is all in there. It's all there. And they're like tons of documentation, which is super good. Uh, and I am pretty much ready to go all in Frank. I'm, I'm all about it. I'm ready to start building some apps. And, and, uh, I mean, I've already been building apps, but it's like, I'm ready to build some apps, you know, that are there. Um, but the one thing I want to point out, which a lot of people ask is, what about like you probably, like, what about Mazama and apps? [00:12:23] Frank: Yeah. Um, it's hit or miss. No, I'm just kidding. Let's go with 90% success rate. Um, so there is an upgrade path you have to do. I keep talking about breaking changes, but let me start by saying overall I've had a lot of success, uh, porting all my apps over. Donna to all of them, just because, you know, IDE support, things like that. So I've been holding back on that, but I've had a really good success rate. So the apps I'm talking about are native iOS apps. I mean the majority of my apps, aren't native iOS apps, but, uh, Mac apps. Okay, works just fine. And then a lot of those iOS apps, I've added the Mac catalyst target framework because why not? You know, it's actually a great debugging experience. Um, when you, when you do Mac catalyst development, it's way better than using the similar. FYI pro tip. If you're writing an iOS app, just switch your target framework over to Mac catalyst for a little while and do your development there. You're going to thank me. It's much more pleasant. Uh, so I've had success there. Now. There, there are a few hangups though. There are some big ones, so there are the breaking changes, but a proper big one is there isn't support for application extension. Which is kind of an important feature on iOS because apple for its security models keeps putting more and more fun features of your apps into necessary, uh, application extensions. For example, I circuit has an. Picker, uh, view browser file browser, whatever you want to say, document browser at the beginning of the app. And it needs to generate thumbnails. The correct way to generate thumbnails on iOS is to have an application extension that does work. It runs out a process. It can run in the background. There's, there's lots of good reasons for it. I love that it can run in the background. So even apps like the file Explorer can generate thumbnails because it can run my extension in the background. Oh, that's the say.net six. Doesn't it, it was a feature they obviously wanted to put in because a lot of people use them, but, um, it did get punted upon. Good news is there is a dotnet seven being worked upon, which is, and no one's promised me extensions for.net seven. They better promise me extensions for.net seven. So I'm going to be able to port essentially all my apps over to dotnet six, except for I circuit, because, uh, it requires that extension and who knows maybe, maybe we'll get a dotnet 6.1 and we'll get them to who knows [00:15:11] James: that's true. And the nice thing here to point out is. You know, the Xamarin life cycle two is two years after the, you know, release or whatever. So like technically everything is still supported in policy until November 20, 23. So it's like quite a long time. That's like a, that's done at eight, by the way. So all that stuff is supported there fully for like quite a long time to migrate. And I think you have it, you know, your applications. That aren't Xamarin forms. Those have been a pretty smooth progress process because like your core source code besides the inflows haven't really had to change at all, I assume. Oh, to get things working. [00:15:48] Frank: Uh, yes, uh, 95%, uh, and flow is painful. I just gotta to say, um, in C sharp, you can do tricks with the global usings and all sorts of nice little tricks and AV sharp. It's a much more strict language. So moving that type and renaming the type is quite painful. But it's, it's a pill to swallow to stay up to date, you know? Um, I just wished they hadn't done it to us so that one's painful, but easy, you know, it's, it's direct, it's just a rename. The really painful is they changed the memory layout of seeing kids make tricks class. And, um, I feel a little betrayed because I think I'm literally the only Xamarin user out there using seen kit. And I have a giant app which relies very heavily on. The matrix working as very specific way, the way it's always worked and they changed it, which breaks the entire app. So that's not fun. Um, I have to redo thousands of lines of mathematics and then [00:16:57] James: cause you create your own matrix that takes the matrix and then reverses the. [00:17:03] Frank: It's a little bit worse than that. Um, so when seen kit was very first bound when it was added, gosh, who knows? iOS seven, eight, you know, somewhere around there. Um, Microsoft has a convention for matrices that they've always used. It's a Microsoft thing. Basically. No one else in the world uses it. There everyone else in the world uses the open GL convention. It's the same convention, mathematicians use all that kind of stuff. Anyway, uh, when syncope was bound, which uses the open GL convention, it was bound using the windows convention, which was wrong, flat out. Pure wrong, definitely wrong, but that's the way it was. And if you wanted to ride seeing kid apps and as long as you knew that you could handle it, right. I knew the convention was backwards. And so I, uh, accommodated for it and my code, but now there's a breaking change where they. Oops, we did that wrong, but here's the thing. They, they changed the memory layout, but they didn't change the API. So now it's like a Frankenstein's monster matrix. It has the API of a windows matrix, but the memory layout of an open GL matrix. And so that just breaks all of my mathematics and it's terrible. And I can't wait to get in there and you know, that's going to take weeks to get. So anyway, I'm probably the, literally the only person out there affected by it. So everyone throw me a [00:18:33] James: pity party, please. Yeah. I'm pitying all over your party and, uh, but I still refuse to pay for any of that party. So, no, I mean, I think that, I mean, again, the nice thing is that you aren't forced to upgrade, like if this moment to keep working on your app and get new stuff, but eventually you'll want to, which makes sense as your apps are longterm in the world and I'm in the same boat where right now, I, I probably take more dependencies on third party libraries maybe than you do I feel, [00:19:02] Frank: is that a true statement? What do you think? Yeah. Okay. Yeah, for sure. I, I depend heavily on first party libraries. I love the apple API APIs and all that.net API APIs, but I am very picky and choosy. Now the one exception here is continuous because continuous because of its model pulls on every new kid on the planet. And so. That one, I did run into a lot of compatibility issues when I was putting it over to dotnet six, for the most part, things can be replaced. But for example, um, continuous has Xamarin forms. Built-in well, Xamarin forms does not work on dotnet six. So had to remove that. And it's places, Maui, which is, you know, just as good, but I am losing Xamarin forms. I'm gaining Maui, but I am losing salmon forms and there are a bunch of other weird ones out there. Um, a lot of, a lot of graphics libraries that use kind of native east stuff because of the whole end flow of thing, because of a few other things they all break too. Fortunately, um, most people have been keeping up and releasing dotnet six versions of those kinds of library. [00:20:07] James: Yeah. And, um, and I'm sort of in the boat where, since I do take dependencies on quite all my own libraries, so first and foremost, I take to kind of say my own libraries that I need to update. So you can blame me, which I have been starting to do. And there's been some breaking changes in this RC. So I'm updating some more libraries today, but then there's some other like Bluetooth libraries and a few other things that I use. That, uh, you know, I really want to update or I'm waiting for them to update. So I think I'm not in a rush right now to update my existing xamarinforms apps because, uh, to Don and Maui, because I have time and if it ain't broke and I don't need any new features and like I'm okay right now, especially until. I have the ability to ship on Android for another three years, you know, with the system updates that it supports today or two years. So I have a lot of time to migrate those over and that'll give plenty of time for the libraries to update, or I can just take the library and pull in the source code myself. But I feel like the ones that I'm using are pretty popular and going through. Mo, uh, upgrade of, of, of taking my libraries and adding dotnet six support to them has been pretty seamless because they're not like graphical intense. Right? So I'm assuming the Bluetooth libraries, like those core API APIs don't really change of iOS and Android. So when they poured it, like all the essential code over, it was pretty seamless because those. Pretty much identical, um, in Don at six. So that's a nice advantage, maybe some of the influence stuff, but besides that, it's like really straightforward. Uh, so I'm, you know, all my new apps that I'm going to create and obviously like demo and do everything with all be done at Maui, you know, going forward. Um, I was, you know, I tell everyone to wait until GA or to release candidates, state, but you should have been playing around with it for the last year. Right. So I've been experimenting. At this point, I'd say that I'm going to take like the lowest common denominator ones, like which ones have the least dependencies and update those first, like my skiing app. That one pretty much only relies on. Me right now. So, and I'm under the I'm under the, I don't even know if I want to use a migration tool. I think I'm going to do it all manually. I D I think, I think, I think because I want to take advantage of all the goodness in the single project and the cross-platform. So if I just want to, I'm just going to move all the code or I take the code file, new name at the right time. Drag and drop files over baby, just a drag and drop them over, put them over there and they mousse and then delete the old ones or like keep them there. But like, you know what I mean? Like duplicate the code, put it in the thing, then go into vs code, because code is the world's fastest control shift F Renamer find all the verbiage is of, of, you know, Xamarin forms. You know, cross it out. I think I will go that route. I don't think I'm going to recreate my UIs necessarily. I'm going to see what it looks like. They're going to look different, but I'm going to see what they look like and then take it page by page and go to town on it. I don't think there'll be a lot of work for a lot of my apps, but we'll see. [00:23:22] Frank: Well, it's going to be a lot. It's going to be a lot of work. I remember going from windows eight. Metro, whatever to UWP, they're all like, ah, very little change and honestly, very little did change, but it's still, it's still took like a good solid day of effort, you know, you can't, but, uh, it is going to be a lot of rote work, so you can put like some heavy metal on and just kinda get it done. And I just power through it. Like you said, uh, you're going to freshen up your reject skills, get, get better at search and replace and all that. [00:23:58] James: Well, and also I want to be able to take advantage of the new stuff. I think that's the hard part is if you're just like, I'm going to migraine, it's like, well, I'm not taking advantage of the new. [00:24:06] Frank: James, all my projects have shared code projects in them. Oh my God. Do you know how excited I am to get rid of those? It's going to be amazing. And I've learned so many other tricks. You know, it's been a while since I've done my projects from scratch, you know, I have ancient projects and there'll be a good opportunity to take advantage of things like directory dot props. You know, I never take advantage of that, but there's a lot of times where I just have shared. Properties throughout all the different projects and a solution. Did you catch God? We should probably do a whole show on this because I'm so excited. Nougat has some kind of like new. Solution wide global, uh, version things. So now in your project file, you can reference a package without a version about you can list all your versions, um, you know, like in the, at the solution level so that everything picks it up. It's a beautiful feature in dotnet six I'm, I'm excited to take advantage of all these dotnet six features and my. Kind of cuts, cuts, crusty old projects. [00:25:08] James: Um, very fast. Just the central package payment management system. Yeah. Yeah. [00:25:14] Frank: I'm so excited for this. You've worked on a project with me where I have these terrible scripts that I run to make sure all the new guts and all my projects are at the same version because there is one way to live life, which is update all concerts. And I, I think that's how you live and it's fun. It's adventurous. And then there's me, me when the version's working. Uh, I don't touch it. I don't want to update, I don't want to be notified of updates if, if it works, I'm happy and, uh, I am going to be so happy to keep everything in sync because I hate those build warnings you get when it's like, oh, you have a version of this there in the version of that there, which version do you want? You know, like, I don't care. Well, MVVM helpers. It doesn't matter which version [00:26:02] James: that's, that's pretty cool because for I'm looking at the, the workshop that I did, uh, I use something similar. This is like, there was a way to do this, but it wasn't as elegant as this new packaging system. So I'm not LinkedIn. You're not big. So you could do a directory that bill.target. And you could do an item group of packaged references there, which was very convenient, um, as well, [00:26:32] Frank: but then you're forcing the package into every project. Exactly. Yes. This one, all you're doing is picking up the version, which is all you really want to do. You wait to get your [00:26:42] James: things super duper cool. Yeah. That is kind [00:26:47] Frank: of scary. They didn't have it before to be honest. Yeah, whatever. Glad we got it. That's pretty new. Yeah, that might not even, um, because we, we started this episode talking about the workloads, so.net, sexist, broken to workloads. Now there's the core that runs everywhere. And then, uh, if you just do workload install, Maui, you get everything, but I've been picking and choosing, I've been workload installing, um, I believe it's called Mac iOS, uh, at catalyst iOS, Android. Um, and you can see the actual versions of all those as they come. It's been, it's been fun keeping up with those, but they are kind of a separate versioning from, um, the main line thing. And so I'll be excited to get the newest, main line thing here and then the release candidate for these workloads. [00:27:40] James: It's true. Uh, also, you know, as I think that the cool part about this as well, not just that it's an RC, but as this new process and I'm getting more used to. How th this thing, and the main platforms are going to ship, like you said, there are the dinette workload, install, Android and iOS in salt Maui that does everything, but you're going to get new versions of those things, like every month on a pretty good cadence, right. Because there's a new update to.net every month. And yeah, those includes we'll include the workloads too. So you're going to get new from, I mean, I don't know, every single month, but I'm assuming every month there's going to be. This is how I look at it is that I've always lived in a world when it came to mobile development, where, you know, as a customer and at Xamarin afterwards, like there was a cycle in which the team put out stuff, and it was a little bit more tied to visual studio, but it feels as though now he'll be able to do a lot more pinning of things. So for example, if you want to pin your CII system to a specific version, IOS, you just pin it to the version of.net that you want. And that is the version of the thing. You're going to go look up magical things. Oh, I want to pin to 6 0 2 0 2 or whatever, right. Or, you know, I, I'm not gonna update to six.one because maybe there is some changes or whatever, instead of I need to go look up this magical iOS Xamarin build number thingy. That's a nice little improvement. You're not gonna think about it every day. But yeah, you're going to get the updates. It's going to happen more magical in visual studio obviously, but you know, you'll be able to do it, but then what that also means, oh, it's mine, but I just figure it out is like you can pin with a global Jason. A project to a version of.net, which would pin it to the version of iOS or Android, why that is mind blowing. I didn't even think of that. Wow. [00:29:37] Frank: So, um, does glittery scent differentiate between the workloads and the main line things? So is there an entry for workloads [00:29:44] James: in it? Um, the workloads are pinned to a version of.net. [00:29:49] Frank: Okay. They are. Okay. So there, there is that kind of pending happening. Got it. I actually wasn't aware of that. So those ones are synchronized. Got it. Correct. [00:29:58] James: So for example, the release candidate of Donna Maui is in version six.zero dot 300, [00:30:05] Frank: right. And that's the one that adds the awesome new, good support. How [00:30:08] James: exciting exactly. Yep. Now, if you have the recent patch to six.zero dot 2 0 2 then or whatever, like that is not going to have it, that's going to preview 14 in it. This one will have release candidate one, which is really. [00:30:24] Frank: Now I am. Now that you've brought this up, I'm a little bit afraid of my hard drive, filling up the versions. Yeah. I hope they work on the uninstaller. i.net spent a little bit weak on uninstalling itself, so I hope they add some features. There, there is [00:30:40] James: a Ooh, Frank, I'm so glad that you talked about this because there's a new. [00:30:45] Frank: Um, I'm excited if you bet don't get my hopes up, James, don't get my hopes up because uninstalling has been [00:30:51] James: terrible. There's an uninstalled pool [00:30:55] Frank: about darn time and better not just be that random script. They make you download it better. Be. [00:31:01] James: Ah, no, it's a random script that you download [00:31:03] Frank: now. It's so gross. It's so gross. [00:31:06] James: Is this the thing while I just discovered it, but I think that's good. It's got to be a real thing, [00:31:11] Frank: right? They want you to download the script. I just don't understand why it's not thing. Yeah. [00:31:18] James: We got to ask the team anyways, but there's at least until to I, you know, what I used to always do is I just used to go to the folder and delete the folder. [00:31:24] Frank: Right. I know. And that used to be simple, but now there's lots of folders. And there's a few things you don't want high gas, you may [00:31:31] James: go into program files. You go into SDK, they're all there. And you just delete one. [00:31:38] Frank: Yeah. One. Yeah. It breaks every tool on the planet. [00:31:42] James: Oh no, I guess manifests too. Okay. [00:31:45] Frank: There's a fee file that used to be clean or they got a little messy with their directory structured and not. That's why we need the on installed tool [00:31:55] James: on assault told me nice. Yeah. At least there is something that exists. I do believe that if, if you are just using normal visual studio updates, I think it, no, I don't. I leave the old one. I think it leaves the old one. Yeah, it [00:32:08] Frank: does leave out. Yeah, because I had to go clean them out. At some point they were just getting to be too many. I had like betas of dotnet two on this machine that goes back far. Yeah. Anyway, it's not that big of a problem. You can go list those pretty easily. They should add like file size to dotnet info though. This is the case taken up this much room, all that kind of stuff. Anyway, I am happy that, um, we're going to have a decent cadence of releases, but you know, Samran had, they didn't lock themselves to a monthly release, but it was close. That's pretty much. That's pretty cool. Yeah. So I guess we're just locking ourselves to it. I'm not a big deal. I honestly, James, I'm probably going to use a global Jason and lock myself at different versions. So maybe I won't have the problem of installing a thousand of these. That's true. [00:33:03] James: Be interesting. Well, I'm excited, Frank, I'm excited. Just figure, you know, nice lightweight podcast today talking about some new stuff. And I totally, I saw the tweet come up [00:33:11] Frank: deal. It's a big, big deal. My goodness. [00:33:14] James: And we get to go new, get, go, you know, [00:33:19] Frank: I'm going to have to update fool, get new guy keeps advancing. It keeps growing. And I got to keep up with it. Did you know, they stolen a few of my features on their website. They didn't do it as well as I did, but you know, they try, well, you [00:33:32] James: know, Frank, that you can go to maui.graphics and that's a website. Oh, that's [00:33:38] Frank: sweet clickety, clack it out and everyone get ready Maui dock or out [00:33:44] James: onto a website. Cool. And, um, it links to the GitHub pages. You know, that Microsoft Mallory graphics is also baked in, which also gives you two ways of rendering natively or whisky sharp. So totally up to you. And you have a canvas that you can draw to. [00:34:02] Frank: I, I didn't know that they were offering both approaches. How do you choose between them or are they just fundamentally two different APIs? I don't know. Or you choose between them. You don't know. Oh, we'll have to do an episode on Maui graphics once I've installed it and learn what the heck it is, but I'm a big fan of skier. So it's good to see Skee ed. Yeah, that's [00:34:21] James: all right there. So it's cool. Is it? Yeah, it's built right in and says, uh, you know, the shapes and brushes and then like that's built in basically under the hood long [00:34:29] Frank: overdue. I've been wanting shapes for a long time. Yeah. Yeah. Good stuff in there. It's in the box and a new matrix. You know, people just can't help themselves. [00:34:43] James: Got to have the matrix in there. You gotta have it [00:34:47] Frank: transform. Yeah. Oh, it uses, it uses Microsoft conventions. Classic. [00:34:54] James: The good factors, like, you know, I get it. Oh, I gotta have my own vector. Cause I needed the special. Um, no. Yeah. [00:35:01] Frank: Hm. Hm. Well, I, I hope they don't have vectors. I really liked system numerics vectors. I think that's one of the best benefits we've gotten from updated.net is that library it's a little shallow. I've been wanting to write a dotnet numerics dot vectors dot extensions, which adds 8 billion mathematical functions to them. And [00:35:25] James: do you know about the menu bar too? Right? That's the whole thing. Did we talk about the mini. [00:35:30] Frank: No, but we'll probably have to, um, does that come up like in Mac catalyst apps or is that something different [00:35:35] James: jackpot? So check that out. I just linked it to it, but it's, it's a menu. Bars is new added in preview 13 or 14, but, um, it is for windows, Mac catalysts, and on the iPad. It's the shortcut shortcut stuff. It's all built-in fun fact. Did you know that Mac catalyst apps are limited to 50 menu items unless you override menu item fit. And the exports in the app delegate and then send me the click command. Do you know that? [00:36:04] Frank: Yes. No. I never got up to 50 menu items. I am glad that someone there has a test case that has 50 menu. That is hilarious. Um, you shouldn't put a space after your export bad form. Uh, this is really exciting. Um, you know, I write native apps and I'm probably going to continue to write native apps, but I'm totally going to be putting my native apps in a Maui shell nowadays, because there's a lot of, like, I think I haven't mentioned this on the podcast. There's a lot of build magic going on with Maui apps now, especially things like. Um, hot reload and all of that. So even though I'm writing native apps, they're totally going to be running, you know, scare quotes, Maui apps, they're going to be Maui apps and I'm just going to put my own views and whatever inside of them. But I, I just want all the Maui magic for my own stuff. Yeah. [00:37:00] James: I love it. I'm excited. I'm excited, Frank. I mean, I've been excited obviously, but you've [00:37:05] Frank: made a lot of YouTube videos, you know, you're, you're going to have to do a new YouTube video with your face, like a big RC, one coming at you and you, you like ducking away from it. It's gonna be amazing. I did. I [00:37:14] James: told, uh, I told the design team, I said, I'm like, we gotta have a photo of me, like real excited, like, ah, so definitely gonna happen. Oh man. [00:37:22] Frank: Cool. I love your reactions. I'm excited. Um, this was before. And thank you for surprising me, because I honestly didn't know this RC came out. So [00:37:32] James: you are welcome Franklin and go explore the world of cross-platform development and all the good things that are in there, but that's going to do it for this week's merge conflicts. We appreciate everyone that hung out with us at our 300th episode that everyone that put up with my raspy voice and me coughing and sneezing last week, I super appreciate. And back to 95%. So we're getting better than ever, but that's going to do it. So until next time, I'm James Montoya Magno [00:38:00] Frank: and I'm Frank Krueger. Thanks for listening. Peace.