mergeconflict245 James: [00:00:00] Right. Dang. I just put out a video on my YouTube channel called should I wait for dotnet Maui question, Mark. And, um, I know that you haven't seen this video because you don't follow me on the YouTube, but I had a very declarative answer, which was no, you should not wait. You should start development today. And literally. One minute ago, Frank, you told me that you were about to rewrite one of your applications in Xamarin forms. And I just thought this would be a fun time to talk about, you know, when new frameworks are going to be released, what should we do? Like, what are the advantages? What are the disadvantages? Because we are basically eight months away from dotnet six and the dotnet Maui launch. So what better time to talk about, you know, what are we going to do for the next eight months then right now, Frank? Frank: [00:01:00] That's a funny lead-up because you're saying like in eight months we're going to have mollies. So why should you not use Maui right now? Because it is available as a preview. Is that right? Or any version James: [00:01:11] of it out there? Yes and no. And yes and no. Maybe there's, there's, you know, bits of iOS and Android that run on dotnet six, but I'm pretty sure on the next preview. There's something, I don't really know. I don't work on the team. Frank: [00:01:27] Yeah. It's hot. It's hot. Okay. I haven't tried it. Right, right. So, yeah. Um, I was telling you that I want to rewrite ice circuit. And Xamarin forms now. I mean that with caveats, I am not touching the iOS and hacker versions, which are perfect in every way. What I am going to do are the Android and windows versions because they have been falling behind and support. And Xamarin forms is in like a really good place right now. I was just running a little salmon forms tool the other day and, Oh my goodness. It's good stuff. So to answer your question, I'm just hoping like Maui has some namespace changes. Like, I don't know, change the project files somehow. I'm hoping I don't have to do much for them. Maui fingers crossed. And so, yeah, I'm still going forward with chairman forms. James: [00:02:23] Nice. Yeah. And you know, if people are, you know, have been listening and they're in the Xamarin universe, or maybe not as Amarin developer dinette, Maui is the next evolution of Xamarin forms and Xamarin forms is a cross-platform UI framework for iOS, Android, and windows applications. I would say mostly focus on iOS and Android, but the windows I'd say it's. It's pretty close. There's a few features that aren't there, but like they're pretty close. I mean, you know, some of the advanced advance features aren't there, but this is pretty close. But down at Maui is the next evolution that sort of re architects. The architecture, OGs James' user words, user word, better words, James. But it, you guys, Beth, it's building from the ground up a new architecture of how the controls are displayed and how they are available for extensibility. So right now there's a lot of tightly coupled NES again, Xamarin forms have been like what, seven, eight years in development at this point. And we're at 5.0, which is an amazing release. And. Down at Maui is going to kind of decouple those things, allow things to be easily themed to, you know, fluent UI or Cupertino or accustomed drawn with SK-II or whatever, and make customizing those controls a lot easier and focus on performance and advanced tooling and things like that. But you're right. Frank, like Xamarin forms five, which is delightful in every single way possible. There's just so much packed into it. Frank: [00:03:54] Yeah. I mean, it's funny because, um, what you were saying about windows where maybe there's some features missing or things like that. James, I gotta tell you my favorite part of Xamarin forms is if there's a control, that's not behaving a way that I like don't like, then I go to the source code and I copy paste. That's renderer. Into my own source code and I change it to work the way I want it to, because it's open source. It's really easy to extend. You just put the little assembly attribute and say for this class type, use mine instead, mine's better. Ha. And so I find it really nice for working around things. When it comes to a platform context, we've talked about this a lot in the past. I'm much happier to start with a hundred percent code coverage, kind of, um, Code behavior, what am I saying? A hundred percent code share between all the platforms and then use my 10% difference to fine tune it to those platforms. But I'd much rather start with that good foundation. The only reason I didn't in the past was because I wrote all these apps before it existed, you know? And, uh, right. So let's start. There, I want to get into all the live editing tools and stuff like that. But do you agree with me that one of the most powerful parts of Zimmerman forms, leading question, sorry, your honor. Leading question. That's one of the most powerful features of it. James: [00:05:19] Yeah. The extensibility of even what's there today and that it's open source and you can grab the source code and the structure of it, I think is very, very delightful in to me. That was even more necessary in the past. However, now I find it almost not necessary. It's like the edge case, you know what I mean of it is like, it's really cool that you can do that. But for my applications that I've built recently and I've been building out just everything is sort of built. In there, like the, the whole drawing, um, API is inside of there, all of the collection view that carousel view, like shell, all this stuff, but I think you are right. I mean, that to me has always been that, but to me, it's also, Hey, I can reuse all my C-sharp and Don echoed across all these platforms and, um, you know, we've all done it. You and I have, we both built objective C apps. I built Java apps. We've built. IOS and Android apps without anything cross-platform, we've done file linking and project linking, and we've done, you know, crazy ways of sharing code, but there is something delightful to just have this, you know, Don at sander library, that's like, here's all of your source code and everything is right there. And it just kind of works. Magically is very delightful. Yeah, Frank: [00:06:35] and I should, uh, I should rewind and S I want to paint a picture of what a, what a terrible corner I've painted myself into mixing metaphors. So I have, uh, I, I did, uh, the kind of file linking style that we used to do in the past where 80% of the code was basically your, your model code. And then 20% was your UI rough numbers. You try to get that 20% down to 10%. Um, but that was just rough numbers. And I did it that way. The problem is that 10% or that 20% can really. Kill you after a long time. And it was never, um, like I could always go back and recompile. It was whenever I would want to create new UIs, new, new whole pages of user interface because yeah, I can reuse all the data pining, but I have to go into Android and do XML UIs. Then I have to go into windows and do SAML UIs. It's. A small amount of work, but, you know, I've just noticed over time, it's enough that I don't want to do it and I don't end up doing it. And then on top of that, I've painted myself into a corner in that the windows version of the app is the old windows eight SDK, which is not even supported in visual studio 2019. So I have not even been able to compile the app. Um, since 2019 came out and that's been rough. James: [00:08:10] Yeah. I just wrote a article. I don't know if it's out by the time this recording comes out, but I Xamarin blog. I wrote an article about, you know, creating. A beautiful setting screen. And I started, you know, with Xamarin forms and I was making my cadence over the holidays and I wanted something really quick and easy and just very low time commitment. And I just used the built-in table view and it was, you know, it was. Totally functional did the things I wanted it to do, but it wasn't a delightful experience, but for V1 shipping the application in the amount of time that I did, as you know, Frank, it was very minimal time was, was awesome. And I wrote like, Hey, I decided that after the week had been, you know, the app had been out for a few weeks and I've been using it a lot that I wanted to redo the UI. Right. And sure enough, like you just said, I. Went in, I created a new page. I just took all of the code behind that. I have a foreign, all the view models and stuff, and I just put them in this new page and I just, you know, spend an hour or two whipped up a new UI, made it all nice and fancy with light theme and dark theme modes and little toggles for the themes. And it just worked on iOS and Android and I was done. Frank: [00:09:31] Yeah, you're making me so jealous. There's this, uh, there's this feature in, I started that people have been asking for, for ten-ish ears. It's a frequency analysis of the circuit. It's a hard feature for me to do, but people have been asking for, for so long. I'm like, I just got to sit down and write this feature, you know? Just got to do it, but honest to goodness, James, like part of me doesn't I don't want to write the feature because I know I have to port the UI over to a hundred different platforms. And so part of this, uh, desire of mine to rewrite the code into Zimmerman forms. Is, although I'm not going to touch the iOS and Mac versions, I am 100000000% going to start embedding Xamarin forms into them. So any new UIs I create will be informs on iOS and Mac, even though, um, you know, there, uh, I have native UIs everywhere else currently, but I'm pretty confident with my experience with forms that I can make them fit in very nicely with the native UI. James: [00:10:41] Oh, yeah, totally. And I think even, you know, as things progress, it'll probably be even easier for you to do with Donna Maui since everything is kind of interface based and could probably even extend into your existing app easier. I'm not positive in that scenario, but I like where you're going with this, which is trying to get away from lack of productivity. That's what I call it. Right. Like the problem that. The world has every developer has, is that we need to create apps and we need to create them everywhere. Right. And there's, there's delightful frameworks to do that. I mean, if you look at what Apple's done, like I think with catalyst and the like their whole thing is right. Less apps. Right. That's kind of it, you know, you still gotta test your apps. Okay. Because just because the UI. Displays correct. It doesn't mean that the UI technology is perfectly, there's nothing spring rag. Native's not perfect flutter. Isn't perfect. You know, Cordova isn't perfect. Xamarin forms. Isn't perfect. Heck probably catalyst isn't even perfect either. You know? And that's the, that's the struggle or the Swift UI too, is the struggle of cross-platform UI. You, you can write a, once. You still got to test everywhere, but guess what? You were already going to test everywhere. Frank: [00:11:54] Yeah, I, uh, I, for me, that's the Android project. I'm like, well, it, it compiles. And if it's compiling, it probably runs James, but that's not actually true and tamarin forms because quite often I'll create a custom views. That just don't function at all without like a custom render. And that's not, I'm saying like how everyone should write their forms. It's how I write my forms. Cause I'm a weirdo. I love writing custom controls. I, yeah, all my apps are custom controls. Um, but, but, but, but so speaking of custom controls, you know, the best part is that, that. The live XAML thing actually works with them with custom renderers, James, you and I have worked on projects like this in the past. And custom renders are a bear to work with in these kind of live editors scenarios. But. That's kind of the feature that sold me on, okay. Xamarin forms is totally worth using and investing some time and right now for no other reason than that productivity. And I know it's kind of bad to say, like I'm picking this framework because it just makes me happier to use, but yeah, I'm kind of just picking the framework. Makes me happier. James: [00:13:13] No, I think that's a great, I want to put that on the website. Um, you know, I, you know, I, I've been working really close with the Xamarin team and Jake and Maddie and stuff, and I think they're whenever I talk to them, their focus has always been developer productivity, developer, productivity, developer productivity, and you're right. There's a lot of things that are really advanced and. Just aren't a delightful experience to use because of complexities, but the nice thing about XAML hot reload. So how reload that is now actually available across WPF UWP and all of Xamarin forms, including if you're doing Xamarin forms for UWP is crazy. It's crazy. Yeah. Is, um, That they all use now the same pipeline and the most recent release, 16, nine and 809 a V S and BS for Mac. They have this something called hub changes only, or apply changes or something like that. But it, it, it, what it does is instead of refreshing the whole page, it does like a Dom diff. So it'll only modify what's there and that's delightful. Like what you want to do is it debug and you want to modify your code and you want it to update in real time. And. Mobile, unfortunately is very complex because different versions of Android in different phones and different layouts and different SDKs and iOS is super complex. If you can just build it and hit debug, then this thing just works and it works with everything. Like I use it with, uh, I use it with all my sync fusion controls. I use it with all my costs, some controls. I use it with the Xamarin community toolkit controls, like a pretty much has works. Frank: [00:14:48] It, it still freaks me out when it works on the device. Like I'll just change something and then I'll just like, see it off to my left and change and put, Oh right. Live hot, super live hot. It's funny because it has, I don't want to say it. It has changed how I program a bit, because in the same way, writing unit tests makes you compose your app in a certain style to make it easy to test. I compose my app in a certain style to make sure it runs really well under hot reload. I don't want, I, you know, I want like fresh data in there. I want it, you know, usually you can get real data and there, but even if there's no real data, like I just flooded with stuff, you do all your, you don't even have to do interfaces. That's, what's so nice. You can just use your real data sources and everything. And somehow, because of that diffing engine at works. I I'm feeling a little bit bad, like, uh, we're not getting paid for this commercial here, but, um, Uh, so I should say it does fail from time to time and it fails in hilarious ways. It'll just crash or something like that. But the joke is it's so useful and productive while it's working that I don't even care if it crashes. I'm just like, okay, whatever, sip the coffee, reload. It's James: [00:16:10] true. It's like the two bits of the, of the spectrum. Right. Which is like, when you look at one end, which is. You know, Oh, I have to compile and deploy. If you can make that really fast, then. It doesn't have to be perfect. Right? Whenever I see I've been in so many conferences and watched, you know, all the hot reload state of flutter and also react native, and these are huge selling points, but you see the apps fall over. At some point, the state gets into some state, the Dom gets into some state, like it just is like, you've done too much here. I can't save you. You know? And some of those are really complex where they're more than two, the UI they're the app logic too. It's just like. Oh, my goodness. I can't do anything. And it's just like, and a big red screen and it's like, please reload. But you're right. If that reload mechanism. Is to like the app crashes, you hit debug again, if that thing is under five or 10 seconds or whatever it is, you feel like it's not a big deal, you know, ideally, hopefully it's not doing it every all the time. Um, but you know, um, yeah, I think you're right there, you know? Frank: [00:17:13] Well, I mean, we are doing it every time right now. Every time I want to change a color, I have to hit stop, run. Change the color stop run, but with hot reload, like you can do that infinitely. So I'm not trying to say like, it's fine that it crashes, but it's a hundred percent fine that it crashes. It doesn't matter because I can just stop and read because I'm doing that anyway a million times. So every time it doesn't crash, it just, it gets little brownie points James: [00:17:43] from me, our good friends over at sync fusion. They love us. They love you. And they have. Hundreds upon hundreds of beautiful UI controls for any of your applications, whether they're for a single product or platform or for every single platform that's out there. They got controls for Xamarin flutter, UWP, blazer, asp.net, core angular, reactive U J sorry, WPF. When you, I win forms, you name it. They got it. I use them in all my applications. I'm an Island tracker that I just shipped has all sorts of sync, fusion, um, beautiful controls in it. And they're finally optimized and tuned for every single platform. They have great documentation. They have not only all of the great developer platform, stuff of sync, fusion, essential toolkits for these applications. But they also have, um, a bunch of free products too. Like the Xamarin UI kit, which is a bunch of templates and a bunch of predefined pages that you can just use in your application. It's like, here you go. Boom. St. Fusion's awesome. I love them. You can get started for free with a free trial. They also have a free community edition, which is really, really nice too. I gotta do is go to sing fusion.com/merge conflict to find out more information about all the great things that sing fusion has I go to sync, fusion.com/merge conflict, and they sing fusion for sponsoring this week's pod. Frank: [00:19:09] Thank you sync fusion, and now I can totally obsess over putting in some sync, fusion controls into James: [00:19:15] the app. There you go. Yeah. Um, I think that, you know, there's a lot that has happened here and that's why I think like Donna Maui gets me excited because in my video, I explained that it is this evolution. So all of the things that are so great about xamarinforms spy with all the controls and the extensibility, the hot reload of the XAML, but also. There's another feature called Xamarin hot restart, which is the ability to plug your iPhone into your windows machine and hit debug and Xamarin forms app. And that just deploys onto your iOS device without a Mac and hot reload works in there is absolutely delightful. And that brings down the build time by like 80 or 90% when you're developing on a, on a, a windows machine, because you don't have to do full compilations. It's quite delightful. All of that stuff comes to Donna Maui, right? That's here. And in the video that I put out, I'm put in the show notes below. So if someone asks me, they're like, well, should I, I'm learning C sharp for the first time? Like I'm getting into development. Should I wait? And Frank, the answer is no, you should never wait. You should, you should do it now. Just go for it. Right. Am I wrong? I'm not crazy, Frank: [00:20:26] right? No, I, I, Y ever wait six months, that might as well, not even exist. Like time doesn't exist. The future certainly doesn't exist. So of course not wait, plus, um, I mean, it's think fusion, all the other control vendors out there. There there's so many options right now. It's. Just a big plethora of UI controls out there to build apps with. Yeah. It's a good situation to be in. Um, for me, why way is I'm like, Oh gosh, now I have to do MVVM for everything, but that's a, that's a different answer to a kind of a different question. Yeah. Because not all my apps are that nicely architected because I'm an MVC person. So a lot of my stuff is more of that style. So I have to do a small amount of rearchitecting in the app, but I'm a bit lucky that I've already done good chunks of that because I did have the windows version of the app and that was written in. What do you call? It was like the win eight XAML, but it's still XAML. It still had the principles of view models and binding and all that. I don't think I'll be able to use the XAML directly, but I'll definitely be able to reference it and use whatever view models I did create. James: [00:21:51] Oh yeah, totally. I think there'll be quite a lot of reuse that you can have. And there's the, alignment's not that too crazy complex to bring a lot of things over. And of course you want to update some things too, but yeah, no, I think it is a. Is a finicky thing, because what I say is, you know, had I waited for Don and Maui, right? Like I'm just sitting here in December. I'm like, Oh, it's coming in a year. I wouldn't have released the apps to the app store. Like I wouldn't be generating profit. Like by the time the Don Moe comes out, like you'll, you'll probably have it done. You know what I mean? Yeah. Frank: [00:22:23] Yeah, for sure. And you know, I'm super lucky, excited for dotnet six, but I keep saying like that that's actually an, a kind of a good spot right now. So dotnet six is just kind of icing on the top. It's just unifying a lot of things and just bringing all the platforms together. And then Maui is, as you said, it's just going to be. Performance improvements. It's going to break from my custom renderers, but I'll figure out how to rewrite them in Maui. I'm sure. Um, hopefully there'll be wonderful guides and all that stuff. For some reason, I don't know is ignorance bliss. Like I'm just, I'm not worried about that. Upgrade. Like for me, the hard parts are architecture app, so that you have, I notify property change everywhere, right. Stuff in SAML. So you can take advantage of hot reload. That's kind of the changes I I'm thinking about. James: [00:23:17] Yeah. You know, when I, when I look at the demos and some of the, you know, look at the GitHub repo of Donna Maui, that was the other thing I point on the video is like all of your XAML. It's going to work. There might be a few changes, like just optimizations. Cause they have dropped a few properties or renamed a few properties or things like that, but that's not a big deal. Right? Some namespace changes. There's going to be a try convert tool. But ideally I know all of your business logic, all that stuff's going to work when it comes over. And that's why I was trying to tell this person and the kind of this video described that like, Hey, you know, like you said earlier, that UI is only 20 or 30% of your app. Like. It it's a really important part of your application, but the other 70% or 60% or 50% or whatever it is, is just C-sharp and Don net, and that skill set applies across any thing that you're building with with C-sharp or.net. Right. So I think that's the other thing I look at too. And in this debate is like, should I wait? Well, even if you were to just. Wait to build your app later, you could be learning so much around the infrastructure, the architecture, and all those things are going to apply. And I think you're right. Like I'm not very worried about it. And for me, I also have a year to, to upgrade because the Xamarin forms five will be supported for a whole nother year and it's open source. You know what I mean? So, you know, I think making the switch over is I will do it in time when necessary, you know, Frank: [00:24:44] Yeah. Yeah, exactly. I have faith. Is that right? Um, the people in control that API APIs, my one, uh, critique of them is that they, they overthink everything, but. That's kind of a positive also it's like that interview question. What's, what's your problem? Like I work too hard. Well, they overthink everything, which is good and bad because it means we get some over-engineered things, but it also means they cover the bases. And so out of the things that I fear in.net, this is not one of them. I got people know that you can't break the API completely. Like sure. Change some namespaces and things like that. But, um, yeah. It is faith, but we've went through an API break with, um, iOS. When we switched to what we call it, like the universal system, like a unified, a unified unified, the AP, and it still shows up like, technically it still supports the old API. I don't know why, but, well, I guess I do have some apps that might still have it. Anyway, I've survived that namespace change it. Wasn't a big deal. I'm a little more concerned about my custom renders, but I don't imagine a lot of other people out there writing custom renters. James: [00:26:06] I don't know. Um, I believe also you'll, there's, uh, there's going to be some sort of backwards compatibility shim layer from my understanding from one of the community stand-ups I think is something like pack or something like that. Um, unconfirmed confirmed. I don't know. I know too much information, but like, I guess I can go confirm that with David if that's public knowledge, but I swear that was somewhere on the internet. Um, but yes. Frank: [00:26:30] Well, you heard it here now. I'm just kidding. Um, yeah. Yeah. So I'm excited. Uh, James, I met, I'm even doing the inversion of control thing because you know what happens? You create one class called a service and all of a sudden you're like, well, you know what? I should have a second service. Well, how are they going to talk to each other? Well, I guess I'll use a container and, Oh, it's a, it's a slippery slope, but so far I, uh, I've held myself back and I only use. Uh, IOC for surfaces. I'm not passing around data or anything like that. And that's basically me just cheating at global variables. I still feel that way, but it's a fun cheat to just be able to pull up that service wherever you want. And then I can feel like I'm a, I'm a moderate. James: [00:27:18] Nice. Yeah, you are a modern programmer, Frank. Frank: [00:27:23] I notified property change, all the things I, I import your MVVM helpers just way too often and to all my projects, but, you know, I cheat, I don't want to, I give you your new get downloads. So I just go to your get hub and I copy and paste the code because there's always something in it. I want to change. It's never exactly how I want it to work, James. James: [00:27:43] Yeah. That's, that's definitely how I, I made it because now the. Now the Xamarin community toolkit has a bunch of my stuff in it. Like I kind of told them, I was like, Hey, you know, Yeah, can you please take all this stuff? So I don't have to support this anymore. And they're like, that sounds great, but they didn't take all of it. So I'm like, okay, well, I don't want two packages, so I'll just copy and paste my own code. Cause it's right. It's like, you know, I just, there's a bunch of stuff. That's nice. Frank: [00:28:10] Does the community to have a observable object, view, model base? Did they put that kind of stuff in there? Oh yes. Oh, see, I don't know. You know, I've been so into native UIs for so long. I have not been keeping up with the Xamarin forms world. I have a bit of catch-up to do. Uh, I did see that the toolkit was recently updated or something. There was a little bit of a hoopla going around and that had some neat little James: [00:28:38] features in it. Yeah. 1.0 inside of it. And, um, it's, it's a cool. Collaboration between a bunch of people at, at the Xamarin team and at Microsoft and the community. Yeah. There's all sorts of like really cool, um, controls in like I use the tab view using, but tabs anywhere and make like, you know, weird buttons and cool stuff. They have a dock layout and expander and a shield control and an avatar view and badges and all sorts of all sorts of crazy things, which are nice. And there's yeah. Documentation. On it, they have a scene called the uniform grid. This is probably one of my favorite things. It's a grid that's uniform. Like. Right. It'll automatically adapt, you know, so stuff like that, where you're like, Oh, I could have written some custom code or a custom render. Like they just did it for me, Frank: [00:29:27] which is cool. Sometimes you just want a uniform grid. Yeah, totally makes sense. Uh, there was another one in there, the badges isn't that funny? Like that one just kind of comes up and you're like, Oh, glad someone else did it for me. Yeah. James: [00:29:43] Thanks for putting a little background color with a number on it. Perfect. Well, you know what Frank: [00:29:48] I kind of want for, um, your observable object. I kind of want weak references to all the on-property changes. Have you ever done a version like that? James: [00:30:01] I ha actually, you know what I think the most recent version of, and now we're really getting the weeds uses a week event manager by default. So your version Frank: [00:30:12] of it or the community too. Okay. James: [00:30:16] Good question. Frank: [00:30:18] Your version does well. We're, you know what, I'm not even going to make fun of you for that because people ask me questions about my libraries all the time. And I'm like, Hmm, good question. James: [00:30:28] Yes. Um, I did it because I was working with Brandon and a few other people in the community and I was like, Oh, I think I should do this thing and make it weak. Weak references by default. But I don't know, uh, for, Frank: [00:30:42] for those of you who are maybe wondering why I'm asking this question, there is a little trick and.net where if you don't unsubscribe your events, it's pretty easy to create kind of permanent references to objects and kind of eat away at your memory. It's not technically a leak because you can trace that object and find it the source of the leak. You know, it hasn't been lost or anything. Uh, it's a problem for a very long running things. If you load up a lots and lots of data, like lots of images or something like that. And so we like weak references so that we don't have that problem, but at the same time, it creates a little bit of a danger zone because yeah. Then you are missing rooted references, but it is an op a nice little optimization to have sometimes. Yeah, you don't James: [00:31:27] want to have it. And you know, I should really do this here. Right. I have it in. The commands I have an async command and a non-Asian command, but I don't have it in there. I'm going to add that. I'm totally going to, Frank: [00:31:39] it's technically a breaking change. Cause if someone's re no, I mean, it should be fine. I just saying there are, uh, you know, I'm trying to think of what the scenario would be for losing that rough. I don't know, it's tricky. I would make a separate class, like I would say like that a week observable object and maybe a week, a few thing. Cause it's safe under some circumstances, not safe under others. James: [00:32:10] That makes sense. Well, there you go. People, we have completely gone off topic from where we're talking about with Donna Maui and Damion forms into weak references. Because if you didn't know, they're probably important. Frank: [00:32:26] I've been tracking down a lot of memory bugs lately. So I'm sorry, it's just on the top of my mind. I apologize to everyone for that rabbit hole, but you know what you're getting into with this podcast? You do. James: [00:32:38] Okay. You kind of do. I think, I mean, most people think they do, maybe they don't, but I don't know. I am really fascinated to see. Some of the early previews, get my hands on some Don Emmalie goodness. But yeah, I'm, I'm going in file new right now. Great new apps do my thing. And so I'm excited to see what your, you know, I circuit days go because the Android and the windows version. Yeah. They, they could use some, uh, some sprucing up, if you will. Frank: [00:33:04] Yes. Yes. Thank you for saying it. That politely for me, it's really, um, the, the other way I painted myself into the corner was fine. I could still use visual studio 2017 to compile the windows version, but of course I've adopted C sharp and C sharp nine features in the code base. So I cannot compile that code in 2017. So. If for no other reason, it'll just be nice to have, uh, all those modern language features in, in that code base. So for that C sharp nine, that, that we have to do an episode on that. There are some funny little things in that James: [00:33:47] language. Another episode, I think we did one episode or lightning talks on, and I forget this. It was something. Frank: [00:33:53] No, I actually have some experience with it. Cause before, like we had just installed the betas and played around with it for a while now, but now I'm typing new parental parental, and it's getting the right object and it's James: [00:34:05] weird. Oh yeah. Oh yeah. Yeah. It's um, I think that's a. No. And just development in general is like, there's always new shiny toys. We have a lot of time to play with them. And in regards to even what we're talking about, C-sharp dot net, Donna Maui is like, yeah, there's always going to be new shiny things to play with. Right. That are coming out. Like, I look at like Swift UI, right. And like, even when Swift was released, like there's. There's a early adopter mentality, but then there's also the tried and true approach and easing into a technology. And this just isn't a Donna thing or zoom, this is anything right? Like you saw this with people moving from Java to Kotlin, right? Like that. When things are released in a V one state or even a pre V one state, like some, some things need some massaging. They need to be worked out of the system and it's okay to. You know, not jump ship. Right. You know, not jump ship, but not transition immediately. Right. Maybe if you're at the time and it's like, Oh, file, you know, file new. And it's November 20, 21 to date this. Right. And it's come out like, yeah, maybe start with a new project, but don't wait. You know what I mean? Like, Oh, I'm gonna, you know, you know, wait until that to actually start a project to me that, that's the thing that I like to encourage people not to, not to wait. Frank: [00:35:29] Yeah. And I mean, for me, it's the, if it ain't broke, don't fix it kind of thing. If I've already written a UI and I think it's a good UI, there's no real reason why I should pour it to a cross platform thing, unless it's causing me those kinds of problems and, um, as they are now. So like, until you get to that point, then you can switch over. But for green field, um, I'm probably going to do a lot more file news admin forms, projects, just because if nothing else, it's an architecture, it's an app architecture. It's a kind of an opinion opinion, a way of saying here's how you should kind of write your. UI app. And I appreciate that having some kind of formalism because otherwise it's kind of the wild, wild West. Um, I appreciate having some boundaries. James: [00:36:27] Yeah. And I think once you get into it a little bit, like, I always talk about like learning curve. Like there's some things that are immediately easy to get into, but then. Immediately get difficult Zara forms. If you adopt the MVVM approach, I think it is a relatively large learning curve. Like you gotta learn XAML and you gotta learn C-sharp and you gotta learn MVVM you gotta learn data binding, but you don't have to go all in on that. At first, like I have this one-on-one series I've been doing on my YouTube shout out to my YouTube and, um, I've been trying to slowly like ramp up. Like you don't have to do all that stuff I had, but I will say this. Once you wrap your head around that a one sec clicks, I think you become really productive. And I don't think the learning curve goes much higher from, from there. And there's always things to learn, but it's not like an ever increasing difficult thing. Like once you can get over that hurdle of understanding how the XAML connects to the code behind and the bindings work and the things like that, then I think you're on a really good pace to just go. I mean, I've been doing this for six, seven years now. My goodness, you know, You know, it's a five-year anniversary too, of the acquisition. Like I've been at Microsoft almost for five years. That's crazy. Right? It's like bananas. Frank: [00:37:44] Yeah. Yeah. That is bananas. But, um, I, I totally agree with you because when you were saying it it's a steep learning curve, I was like, well, I can't even remember my learning curve because I feel like I've been dealing with Sam on view models for, it feels like my entire career now. So I don't remember even learning that stuff, but. Yeah, it's it's it. The neat thing is once you have those down, once you have that general architecture down in your head of those four things, throw in services, thrown a little IOC stuff. Um, once you have that pattern down, you just apply that across the entire app. That's what makes it an app architecture. It's not, it's not, here's how you present a UI architecture. It's, here's how you do the entire thing. And so. You just, it just becomes multiplication instead of exponential, you know, there, aren't more things to learn. You just keep applying those same rules across the entire app, which is sometimes easy, sometimes hard, like nested data gets kind of weird depending on how you store and retrieve data that stuff can get weird. Everything can get weird that's app development, but at least you have this guiding star of here's a view. Here's your model. Here's a crazy Bergey thing. Good luck. James: [00:39:05] Everything can be as complex as you want it to be and can get as messy as you want it to get based on what your app is. No matter what you're developing in. Frank: [00:39:14] For sure. Yeah. Yeah. I create a mess in every app architecture. I promise you that I have not witnessed an app architecture that has not needed. Release valves of some sort or another, James: [00:39:27] I call them escape patches. You got to escape out of there, you know? Frank: [00:39:31] Yeah, exactly. Those things hooks. I think they used to call them. There you go. Yep. Should have a brand new app out in what, five days, right? This is rapid application development with XAML. I should be hot reloaded and right to the store. James: [00:39:50] I'm excited for your update next week, everybody, when Frank gives us this update of how much progress he's made and I circuit. Based on Xamarin forms. Uh, well, I'm excited, Frank, I'm excited for you and your journey and that finally it took you five releases, but you got their file. Newing Xamarin forms all day. Um, yeah, I'm excited. I'm excited about the future and we have a lot to talk about this year. As there's more and more C-sharp dot net, goodness. And cross-platform mobile stuff and hack who knows a Google IO and dubbed up D sees around the corner and builds around the Akuna. It's going to be an amazing year. I'm excited that all of you are here for us, but that is going to do it until next week. This has been another merge conflict. I'm James Matson mag now. And I'm Frank Frank: [00:40:32] Krueger. Peace.