mergeconflict253 James: [00:00:00] Right. Frank. It is time to talk about putting XAML on the web. We've talked about this many times. There's many things that can do it. You can do it with some Muno. You can do it with other open source projects and you can do it with your own library. Frank, the Hoey, the, we, we, we. Why did you name me? Frank: [00:00:28] Cause I'm silly. I wanted a name that was silly and sure. But it does have a meaning object oriented you. I, because what I was, what I was finding was like, I actually didn't mind Dom programming, like HTML, um, JavaScript program. What am I saying? Manipulating the Dom through code. I actually don't mind. That API too much when I did mine was Java script. So what I set out to do, uh, the Dom is a very object oriented. The API. I wanted a very simple object oriented user interface layer for building simple apps. So we. Short and cute. And I like saying it, you know, it should, it should make you smile, your project names. James: [00:01:13] I thought maybe you were just in a French mood that day. And I took many years of French and just figure with, we were like, yes. Okay. Can you build it with we? Or can you do it? Can I put Xamarin forms on the web? We right. We Frank: [00:01:27] really, uh, yes, I I'm usually in a French mood. I studied French too. So anytime I can get. Get a little French joking. I'm totally there for it. Uh, shout out to JB JB. James: [00:01:40] So why are we talking about this again, Frank? Because if you remember, I'm going to go back. I'm gonna literally go into the Google being machine. I'm going to say Monte Magno, Xamarin forms, website. Let's see if this comes up building an asp.net core website with Xamarin forms. XAML and we. I wrote this blog post two years ago, three years ago, a long time ago, Frank that's a Frank: [00:02:06] long time. I don't know, James: [00:02:09] a long time ago, actually let me go to my GitHub. github.com/james Automato slash soundbite, FM soundbite, soundbite soundbite three years ago. I'll look at it. I'm going to look at August, 2018, nearly. Three over three years ago, over more, almost three years ago, I did this and we, I launched soundbites out of found the podcast network that, you know, it's a network. This is a private repos and no one can see it, but I put a hole. I put. Crap ton of XAML on the web. And it was interesting. It was a fun experiment in time. I enjoyed it and it worked great for my exact needs, uh, which was a website on the internet that, that I'm not good at. I'm not good at the web, but I did it and I never wrote a whole blog post about it. So why are we talking about this again, Frank? Frank: [00:02:58] Uh, we are talking about it because for years, people ask me what the heck is going on with wi and I wanted to go on record of saying a few things about it and how I see it and its status and all that. But also because someone sent out a really cool tweet of a website they made with it. And, you know, uh, pardon me. I was also waiting to see how blazer exactly shook out, because it wasn't always clear from the beginning, how big blazer was going to be, what could you do with it, that kind of stuff. And so I wasn't sure what, uh, we use place in the world was with, um, laser and all of that. But I think, um, I'm starting to make some decisions on all of that. And I just wanted to talk about the future of it, but also in a bigger context, because. One of the reasons I wrote it three years ago was because that was when we were, uh, getting.net core. That's what was coming out. And that was a very exciting product for me because they made it super easy to at the command line, say, dotnet new code up some C sharp or some F sharp, whatever, say dotnet run. And there you go, press Presto, bang. You have an app. And that was. Pretty much the smoothest scenario we've ever gotten to in.net. And I was so excited for it. And what I wanted was a stupid, simple cross-platform UI layer. And what is the. Simplest cross-platform thing out there. It's the web. So it's, it was born in an age when I was super excited about all this web stuff, but, um, the web stuff has certainly changed over time too. And it's made me think about whether we still has a place and all that stuff. James: [00:04:43] Yeah. So, you know, when you, like you said, when you created, we originally, I don't think it was even really for Xamarin forms on the web. Right. It was like, you wanted to put a. Like a button click thing on a, like a net Arduino or something like that. Like, what was it for? Frank: [00:05:00] Yeah, exactly. Uh, for a raspberry PI, I was running a lot of like little robot programs and for a little robot program, you want a little user interface, you know, a few buttons for commands, a few text boxes to display some numbers. And I wanted that to be the most minimal amount of code possible. What happened though was, um, I ended up copying like the Dom API, like I was saying. But that created a great foundation to build a backend for Xamarin forms upon. So what I did then was I built a backend for Xamarin forms. Xamarin forms has had a pluggable backend system for a while. That's how it works on iOS and Android and windows and Linux and the max, because you can change out the backend. So I wrote a, we backend for, um, San Fran forums. And that's what enabled people to take their iOS and Android apps and try to make a, um, a web version. James: [00:06:01] Yeah. And, you know, I think what was cool about your approach is it sort of is to some extent, well, reminds me of like the blazer server approach. Right. Which is it's kind of, well, it's using in that case signal are, but you're using WebSockets correct. Frank: [00:06:16] Yes, exactly. James: [00:06:17] Yeah. And, um, And then obviously blazer WebAssembly is like a WebAssembly version of it. So I was like running your C-sharp code in the browser. No. Now I think there is a web assembly version of wheat, correct? For Frank: [00:06:28] this. Yes there is. And I'm pretty sure I released before blazers. I just want to make sure given James: [00:06:34] Frank the crash and that's how UNO works too. So, you know, does that, but that's not a XAML or Xamarin forms, amulets like a UWP XAML stuff on the web as well. Um, and I'm sure there's other ones out there because like you said, it's, there's even Xamarin forms as a pluggable backend and you can really even take wee and then extend it. But what you did is you took kind of like here's asp.net core. And then all of your pages and your routing and stuff is all handled gracefully in that, in that, in that asp.net core system. But then you can also still build like a web API or blend in different pieces of other pieces of technology and ASP dot. Pay speed on net. Like you wouldn't have to have your entire app as we, I assume you could kind of plug and play because that's how I spit on a court Frank: [00:07:24] works. Yes, absolutely. But, uh, that was also somewhat of a design mistake. It's tricky when you're trying to write a general purpose framework, right? You, you want to satisfy everyone. And for me, the way I personally use Xamarin forms, I always use it as embedded Xamarin forms. You know, I start with the native app and then put in some San Fran forms into my native app. Hmm. A lot of other people don't share that and they're going for that a hundred percent code reuse, right. The app a hundred percent and sermon forms. And in that case exposed, probably my. Biggest design flaw in the current version of we, the biggest flaw I want to fix is I don't support the navigation stack. So while it's super beneficial, you can write, uh, any asp.net website and embed wi in it. So that's super cool. You can do things as you're normally comfortable with, you know, don't change anything, but this one page you want to make more reactive or whatever. Better in other words, and you can do that. But what I sacrificed was supporting Xamarin forms, navigation, and that's a place where blazer kicked my butt, James, and I'm like so angry that I didn't do as good a job at navigation as they did. However, easy web tricks, man, I can do it. So I'm excited to, uh, get Xamarin forms, navigation working. James: [00:08:54] Oh, very cool. Yeah. Cause like right now, at least I, you know, I have a pretty old version. I think I haven't updated in three years, I guess. Um, but it totally works. You can get a sound bite out of the feminine. Totally is right there. But what I did is I, you know, I create a controller for each one of my pages and then on the get index for that controller, it basically loads up the. We page for all intents and purposes, I create a new like index page or a feed page or a podcast page, um, which is, you know, XAML, and then I just shove it in there. And I say, here you go, you know, here's the element kind of how you had it. So even in that regard, it's pretty minimal. And then I think I made you, if I remember I made you create a. Um, where's my index page. It's it's a special, does Frank: [00:09:46] it? It's a special James: [00:09:48] it's I thought I made you do a like URL link or something like that on the label. Right? Is that a Frank: [00:09:55] thing? Okay. That was special. I forgot about that, James. That was special. Yeah. What did we, we kind of invented a news Xamarin forms control a little bit. Um, I forget exactly how that worked, but it, it navigation basically was my big design flaw because what I was concentrating on was single page applications. Yeah. And so I. Failed at the design of a multi page application, which turns out, you know, every real application has multiple pages. And sometimes you wanna do a URL link. Sometimes you want to do a Zimmerman navigation link. Sometimes you might want to do some tricky Dom thing because I give you access to the, to the Dom. So you can do crazy browser things. Also like just changing the dot location on an I-frame or something like that. James: [00:10:46] Yeah, we created a link view and the link label and a link view is kind of like a content view. You can wrap anything in it's. You can put an image inside of it. And then I'll link label is just that it has an, a trough in it. And, um, I'll tell you like, it totally works great for exactly what my use case was. And I think I even have. I don't know, I have some crazy logic. That's like his mobile, and then I do all these mobile adjustments. So if I know that you're on a phone, kind of like CSS, right. But I just, yeah, when you navigate to the page, I'm like, Oh, you're on mobile. Like, okay, shrink this stuff down and adjust these things. I spent a lot of time on it. I'm pretty impressed with myself, by the way, like it has converters and it has images and links and it parses, and it has lists of data inside of it and all sorts of good stuff. Um, it's I mean, if I'm building. If I'm building, building, you know, I'm not a web developer. So I guess I was building a website. This might be one of the approaches I would really take or I'd hire a web developer to like, Go make a really, really beautiful website, I guess. I don't know. Frank: [00:11:45] Uh, you know, um, I think my design was always for applications. So like in an internal enterprise, the kind of application, or for me personally, it was a dotnet tool. Cause I love how the. You can, uh, like.net install tool, global blah, blah, blah. And we've created a software distribution system. I love that. And I was thinking about using we to build UIs for that. But truth is, I mean, it's running on the asp.net. Tech stack it's running on the dotnet tech stack. It can handle public facing internet traffic, obviously. Um, but it is, it is not a Microsoft product and all that. So you don't really have anyone you can go to for support. I think that that's probably it's, um, other big failing, but I can't help with that problem. So I'm just going to focus on the technological problems. One thing I wanted to gloat about that I thought you were going to mention was you made me add a really important feature. Was. That is, um, although like your Xamarin form page should like load some SAML and initialize and then execute and then render the page. Uh, you wanted good SEO. So I pre-render all of the HTML into the page and I'd be Placer. So that one too. So it's actually good for SEO also. So if you do want to put this on a public facing finger, it, it works for that. James: [00:13:15] Oh, that's a good point too. Yeah. So in a lot of times when we're talking about, you know, a WebAssembly version, that's like an offline version of an app, you might bundle that up into like a desktop app, or it might just have it internally or something else. But here, what you're saying is that yeah, there's on every single page. There's information about it, SEO about it. And, and for all intents and purposes, it, it is, I use that as SEO friendly, so you'd be kind of good to go. Frank: [00:13:42] Yeah, because the easy way to implement a system like this is when someone contacts the website, the website says, ah, here's a tiny little script, please connect to a web socket. And then the web socket will tell you the rest to do, but the problem is you don't get any SEO for that. So instead what this one does is you contact with the website, it initializes your page, executes the initializer for your page. Renders that to HTML, spits that out, then tells it to connect to the web socket and then orchestrates the diff between the two. So it won't even send down the whole page again, very efficient. Oh, great. Well, I'm very proud of it. Yeah. Okay. But enough loading. Um, so the, the next big failing with it right now, and this is just totally my fault. Um, it does not have Zimmerman forms. Five support now just be told, not much changed in Zimmerman forms five, but the problem is when you're a backend, every little change affects things. And so while there wasn't actually a big API difference, there was just a small API difference. And therefore it doesn't work with Xamarin forms five, and that's just been my bad. Um, I should have had that out a lot sooner. Fortunately, there is a wonderful community around we and people have submitted PRS for it. So my job is mostly just do some code review and get that puppy out there. Yeah. James: [00:15:13] You know, I think the other biggest thing is like I was building just a standalone website that didn't have a mobile applications. Like it was totally fine. I didn't actually care what version of xamarinforms was in there because also you only support a certain amount of controls. I don't think you have every single control that's inside of Xamarin forms is I'm pretty sure you can correct me if I'm wrong, but only get like a carousel view or things like that in there. Um, but. You know, I think when you're, when you're going about and saying like, Oh, I have a mobile app and I want to create like a web thing too. You might want to reuse the code a hundred percent or at least be able to copy and link things here and there. And that might be another reason that it's important to have the version numbers, just new givers and it makes everything easier. You know what I mean? Frank: [00:15:59] Oh, yeah, absolutely. Uh, you know, me, I'm just aiming for an easy, easy, easy, and that's why I'm trying to get like everything under one framework and all of that. But, um, it's, it's, it's just tricky, uh, keeping up with all the platforms and things, plus. Uh, the another big change that has come up. You said that this also runs under WebAssembly and the way WebAssembly works is completely changing with dotnet six. And so I've also just been kind of sitting back kind of watching how it all has changed over time. I even did a Twitch show where I was trying to update Wes' WebAssembly support, but. It's such a wild wild West right now with dotnet five and dotnet six merging mano. And dotnet core that it just can't find anything links are unstable. You know what I mean? That works. One day doesn't work. The next day code gets moved from this repo to that repo it's mirrored in that repo, the CII server changes. All this stuff will shake out once dotnet six is released, right. Well, I've basically, we've basically had a year or more of instability, which is great, great things come out of instability, but it's just been, it's been hard to update we without knowing how it's all going to shake out. James: [00:17:26] Yeah. You also, at the same time, you know, are going to. Has the big flip and this fall, which is moving over to Donna Maui from Xamarin Frank: [00:17:34] forest, saving that for later. Don't jump ahead. But yeah, we got it. We'll get to that for sure. Yeah. Maui is the biggest change. Absolutely. Um, because Maui is the architectural change. So these little, the net 4.4 point whatever to five, that was just a few little API APIs appeared or disappeared. I got to change a little something. It's really not that bad. Whereas Maui is. Basically a rewrite and start from scratch because the way you write back ends and Maui is significantly different from how you do it in, um, James: [00:18:10] Zimmerman forms. And I think significantly easier from my understanding. Frank: [00:18:16] Yeah, it should be, it should be just, you know, I, I don't have the experience, so I'm like knocking on wood and I'm just hoping for all this stuff. Um, but they're up to like preview three or something and word on the street is they're gonna not change too much anymore. So hopefully I can start building against it and start getting at least some basic versions. Have we out there, I've actually talked to a couple of people on the Xero informs team and they said, they'd actually be interested in seeing the, we backend just to know that their, their backend API is nice and pluggable, like it should be. James: [00:18:53] Oh, nice. Yeah. That makes sense. That makes sense. So what has kind of been your feedback on this thing? Like, and as far as like moving it forward or progressing it at all? Frank: [00:19:05] Well, I think the hardest thing is, um, what is the difference between this and blazer and UNO, because those are the big contenders right now. If you want to write client side web applications, those are kind of your choices right now. Uh, and, and that's Xamarin forms through WEA. And, uh, so yeah. I, like I said, I was waiting to see what shook out and what shook out is people are still interested in this approach, you know? Um, I wasn't sure if it was going to be a flash in the pan, like people would say they're interested, but then move on to one of the other platforms. Um, because especially because blazer is so good and UNO are, they're both so good. You know, these are high quality products here. Um, but they're, they are. Different enough that people still have a desire for my approach to work. And that's been kind of inspirational for me. Uh, there was a tweet for T recently and I'm scrolling real fast because I don't want to get the name wrong here. Um, but, uh, Christian, uh, Gredo with, uh, Gretto RO on a new website, just maybe just a login page, but really nicely. Uh, done in San Fran forms, but executed through we using XAML built the login page. It's very pretty because they're a good graphics person and I love it. And it was inspiring. And I was like, gosh, darn it. I need to do better at my open source job and get at least Xamarin farms, five first, maybe navigation, and then a Maui version coming after that. James: [00:20:52] Cause. Yeah, I think that for me, the other use case that I've had, which I probably even told you about, but like not only for building websites, but the one thing that I did is I often build like plugins or little libraries for.net, like say monkey cash, for example. Right. And monkey cash supports everything under the sun when it comes to, um, this including asp.net. So I needed a test harness for asp.net when I was using this. And I went ahead and I just created a Xamarin forms app. And I think I had Xamarin forms for like everything gleaning, like Mac desktop, and like all of these, because I was wanting to test it everywhere in these different scenarios. And I literally, in my test project is I have a asp.net. It, you know, asp.net core website running, we as my test harness to test the API, to see what happened on the web. So it was like this other thing, which is to your point, it's like, Oh, I needed a button click thing on a raspberry PI. I'm like, Oh, I needed a website where I could like do a few button clicks. Right. And, and I'm not a, I'm not a, uh, a web person. Uh, I've done a little bit of blazer now, and I think blazer feels pretty at home for me, but then I was like, Oh, this is cool because literally I can, you know, copy and reuse all the same as the animal, um, in there. And that to me was intriguing. Frank: [00:22:16] Yeah, what I've kind of concluded is that blazer is amazing, but blazer is basically amazing asp.net because it's still your writing HTML templates. It's that style of programming and HTML template programming is different from XAML programming. It's a subtle difference, but it's, they're, they're both templating languages. They're both for building UIs, but, um, the data model. The way you approach the app, the way you think about threading, all, that's very different in those two programming models, even though they're both kind of this template based thing. And what I've decided is, you know, we're, we're mobile developers. I'm I think I'm going to get a bell for visual basic every time I bring it up, but visual basic has always been my GuideStar. I want to be able to right. Apps, very simple apps and various small amounts of code and Zimmerman forms gives you that the really cool thing is we is really small and it's only using the dotnet standard version of a Zimmerman forms, which itself is very small. So you can build a nice tight little app without bringing in a whole bunch of junk, um, using San Fran forms. And we, it's just a nice tight little package. James: [00:23:32] Yeah, that makes a lot of sense. And I I'm really intrigued. I think, uh, you know, there's the other flips, I would just like, Oh, I'm already a web developer and I want to go to mobile. And that's where, where you really see a blazer or the mobile bindings and dinette Maui coming to light this fall, the moment. Blazer buy things already there, but there could be integrated this fall in Donna and six and Don and Maui. And that's actually really exciting if you're a web developer that once you use razor and templating everywhere. And then the flip side of that is not quite the same. Yeah. Right. You know, there's only so many finite, um, days. Uh, hours in a day, days in a month. Frank: [00:24:11] No, James time does not exist. You know, it is funny though, like I'm excited for the blazer mobile bindings, because it's a programming model. It's a different programming model from XAML. It's a different programming model from visual basic. It's a different program. I'll foam fabulous. Which I also like and comment. Oh, those ones. And I don't know if I'm going to love it for mobile development or not, but I'm certainly going to give it a try. I'm going to write, you know, Frank stupid app, number six, actually, I should do that. That'd be a good fun show. Think of a silly app to write and just give it a go because I'm always interested in programming models. My goal is to write as small amount of code as possible when I write an app. So I'm always looking for good frameworks and that kind of stuff. But, um, my happy, comfortable spot is with object oriented UIs. That means objects, properties, and events, your new up that button. Yes. Assign yourself to that click event and yet move on with your life. James: [00:25:18] Oh, I'm happy with it. Well, I'm excited about the new different models and being able to, I'm always excited about everything. I think that's one really nice thing about, yeah. All the different platforms and stacks. I know it definitely.net since there's a lot of lineage there, there's a lot of different ways of building applications. Sometimes it's good. And sometimes it's bad. It's like almost too much choices if you're brand new, which is why I've always said, like, just learn the thing that's in the box. You know, I've always been a fan of. Oh, well, you know, should I learn this thing and do this thing and do this thing? It's like, well, learn the thing that's in the box because that's the thing that is going to be supported and the thing that's going to be the base for all the other things. And then if you want go over here, over here, over here, right? Like if you go just a we, and you. Aren't learning the fundamentals of XAML and data binding all this stuff. And that's not the world you want to be in. It may not be the right product for you at the end of the day or Xamarin forms or UNO or abalone or any of the products where there's so many different of these things out there, but it is nice to see. The fabulous, the common experiment, the different ways of coding and building different apps, because I liked what you said earlier, and I'm kind of rambling at this point 26 minutes in, but as is the simple apps, right? And sometimes you're, you're PO seeing something and you just want to get something out there or I'm building a test harness, or I'm just doing that. Because again, often we ship minimal apps to the app store like you and I. Should we ship minimal apps. Right? How many apps are in your apps or under your account? Well, like six or seven, maybe something like that. Eight. Frank: [00:26:53] Well, I have historical and Apple shows the eight year historical apps forever, but, uh, let's go with five or James: [00:26:59] six, right? I have, I have five or six in the apps are historically, maybe up to 10. You know what I mean? But how many apps have we? How many little, little tiny apps have we just created use for a little bit thrown away? Or use them as tests. Frank: [00:27:16] I mean, yeah. I mean, perhaps without exaggeration, um, that's how scary that is. Yeah, absolutely. Huh. Um, I like that. And that's what I was saying about that's what it's dot net inspired me.net core inspired me the simplicity of that programming model. I was like, okay, I want something. I want the UI library with that same simplicity. But, uh, gosh, I just got to thinking, um, that's something else I should promise on this podcast. Cause, um, I'm just making a whole bunch of promises on this show right here. Uh, I definitely want to make sure that fabulous is working with we also, because that's another fun programming model too, that I use a lot because I enjoyed writing little F sharp scripts and you know how it is like you start with a script. And then it gets a little bit longer. And then you realize maybe I shouldn't be hard coding all the input data at the top. So then you add a command line parameter, and now you've created a command line tool, and you're just like, I start feeling gross at that point. So what I'm trying to do is at that point, before I start adding command line arguments that I just put some weak code in there, or I just put some xamarinforms code in there and pop up a proper UI instead of, you know, Disgusting command line argument parsing, and yes, I'm being silly for a reason, but you know, you know what I'm talking about? James: [00:28:43] Oh, I know what you mean. I know what you Frank: [00:28:45] mean. Yeah. Uh, especially with all those.net tools coming out, like when, um, Miguel released, uh, gooey dot CS and gosh, darn it. Someone needs to finish that, uh, Zimmerman forms backend the gooey dot CS again. Yeah. So, uh, if you're not familiar, that is using the antsy. Drawing capabilities of modern terminals to do your classic old dos UIs. And I don't know what Unix UIs, you know, the text motor UIs, uh, Miguel thing wrote a wonderful library for that called the gooey dot CS. Um, but, um, we really needed San Fran forms, background backend so that we can build those apps in James: [00:29:31] XAML. Oh, that'd be cool. That'd be pretty awesome. I like to do that and then do a demo where it's like, I have the same XAML running and like a Linux, like terminal, like a windows terminal, and then the Mac terminal, just like the same. All right. That'd be cool. Wouldn't it Frank: [00:29:47] be fun? That's funny. So, at what point should I start saying Maui instead as Emma forms, you're just going to like flip the switch in my head. Right. And tell me when. James: [00:29:57] Yeah, I mean, you'll hear you'll you'll know. You'll join Frank: [00:30:00] the party. There's going James: [00:30:02] to be a, there's gonna be, uh, you know, there's going to be a time. Right. I did a video YouTube video, not too long ago, which was called like, should I wait for dotnet Maui or learn Xamarin. Right, right, Frank: [00:30:13] right, right. I think we did a whole episode on it. James: [00:30:15] Oh, he may have. Yeah. And I'm still under the, I'm still under the, the go, which is all in on Xamarin forms probably up until. Uh, I want to say, well, let's see. November is when Maui shifts. So September maybe cause like two months out, you know, whenever the RC drops probably. Right. That's when I would probably be like, okay, now I'm going to, yeah, but when is the documentation going to be updated? When's the learn right there. All these things get planned with time, like the website and all these things. You're like, I think you'll just naturally hopefully. Get an essence of, you'll see less Xamarin and Xamarin forms, things and more Dante Maui things everywhere. And then you'll sort of naturally know if the team is doing it right, at least, but you'll also because I work at Microsoft and I'm very close to this team. There will be a, there'll be a flip of the switch where I basically just go all in on that. But I still think that a lot of the. The basic building blocks of everything that you learned in Xamarin forms or the code that you wrote naturally apply and come over. Right? It's it's up to Frank in his backend data Maui, and then you to change a few lines, a few namespaces. In your code, right? I mean, that's the nice thing from a developer, a user of the, of the frameworks, uh, Frank: [00:31:31] point of view. So, yeah. Yeah. Thanks for making that clear. I don't know if I made it clear yet when I say I'm doing a rewrite that's because I'm an idiot and wrote a backend for a UI system. So, you know, you got to live with your choices in life. Um, th that's good too. And I, I realized I also made a mistake. One of the reasons that I was delaying on those Xamarin forms five is because I'm kept thinking, well, Maui is right around the corner. Why should I even bother? But, you know, obviously people love updating their new guts. Obviously I knew I should have realized that everyone's just going to update their new guts, regardless of any thing else, they're all going to go sand reforms five. So that's another one of my many excuses for why I haven't released this yet. James: [00:32:15] Well, you know, the nice thing was Amarin forms five, since it is the last major release, all it means is that they'll just be service releases, which shouldn't be. Once you're good. This version live on Xamarin forms fully goes away in a year and a half. Frank: [00:32:26] Right? So for all of eternity, yeah, no, a year and a half might be the support. And I think it's going to live on a little longer. Hopefully not, hopefully not. We'll get people to convert. We got to rewrite every blog that's ever existed. The public, get this thing converted James: [00:32:42] the time in which I won't, which will be when iOS or Android makes a significant. Yeah, breaking change. And for some reason, something in, in Xamarin forms fundamentally is broken that hasn't really ever happened. So yeah, Frank: [00:33:01] since iOS seven ish. James: [00:33:03] Yeah. And of course you can always and create a custom render. So it's like you could probably work around many of those issues without having to give her your code. So you're right. Like, yeah. Maybe the official supporting quotes may end November 20, 22 or whatever, but no, there'll be. Much much code for a long time in the world. Yeah. That's what Frank: [00:33:22] happens. That's how it, yeah. So, ah, uh, visual basic reference, insert visual basic reference here. There you go. Boom. Uh, Oh, that was fun. Thanks. Thanks for letting me do a little, um, public on air. We update. So in case I buried the lead, no, we as knocked dead. Yes. It was a little bit on hiatus because I wasn't sure about its future, but, um, now it's a little more clear how everything's shaking out and I will get back to work. James: [00:33:55] Yeah, stop slacking on your free open source project. Get back to work, Frank. Um, I wanna thank everyone tuning in. Don't forget that we do have a discord channel and go to merge conflict that I've found. There's a discord button again, go ahead and tap on that. Whereas I have a Patrion subscription to, or you can get exclusive podcast every single week. So if you like hearing Frank and I, every week, you can get an extra 10 to 15 minutes. That's it? Something there's something. There's something, uh, every week there's something there's literally something. Yes. And also you get the podcast early. So if you want our podcasts earlier, boom, you can totally get that. Um, but I think that's going to do it for this week. So until next time I'm James Montoya, Magno Frank: [00:34:35] and Frank Krueger. Thanks for listening.