mergeconflict264 James: [00:00:00] Franklin. Frank, have you ever heard of open source software? Frank: [00:00:15] That's when there's a zip of the source file on the BB ads, like you go into the download section. Yeah. And you can browse sometimes you'll find doom there. It's cool. When you find the dooms or James: [00:00:27] code or Wolfenstein, who knows. Frank: [00:00:29] Yeah, it's GPL. James: [00:00:33] Yeah. You can just Frank: [00:00:33] do whatever you want. Open source software. Yeah. James: [00:00:37] It's free. It's out there. And I think that there's a fund out there from Microsoft that you may have heard about. Frank: [00:00:47] Uh, I recently heard about James. I have, uh, is a fund called the FOSS fund from Microsoft. This is Microsoft free and open source software fund. It is, I don't know what to call it a humanitarian initiative to help the open source community by giving them. Which is a wonderful way for large companies to help the open source community. And I found out because they selected we this week. Oh, UI as a recipient. And that's super cool. So I want to do a whole episode where I just break it up. James: [00:01:29] Yeah, that's a one pretty much amazing. And I want to know what is up with we as well. Now, I don't know how or why, you know, your project got in here, but maybe we can give a little overview first of the, the program itself and why it's sort of important. And I can. Give my perspective a little bit. Cause um, the Microsoft open source team, uh, works on this and I know Jeff Wilcox, um, also worked on this team and I was a bit, I was chatting with him for a year or two ago, uh, because this has been an ongoing thing. So it's actually been going on for two years. He's just been going on for two years. Frank: [00:02:09] No, I was completely blindsided by this. Um, it was something I think you had just noticed it. So you must've been looking at this website or you are paying attention somehow and you're like Frank pay attention to this website. It's important. Uh, so I was completely blindsided. I didn't know about this. James: [00:02:29] Yeah. So the phos fund, which are ready to the free and open source software fund provides a direct way for Microsoft engineers to participate in the nomination and selection process to help communities and projects they're passionate about. So this is kind of cool because as kind of like, Hey, people on Microsoft, all Microsoft, not just on this, there's like everything. Right. Select basically things to be nominated for. Um, and it says, you know, they provide a $10,000 sponsorship to open source projects as selected by those employees. And it's to help drive an open contribution culture across a Microsoft employees are eligible to select projects for the fund when they participate in projects that are not governed by Microsoft. So somebody obviously was participating in. Looking at the we, and it was elected alongside a bunch of other projects. But when I say that, you know, this spans all sorts of things. We're talking about, like IES, lint, runt, uh, rust, analyzer, image, sharp, um, network, time Frank: [00:03:36] protocol, slow down. We got to go through these. I it's kinda cool. All the libraries that are actually here. So at first, when you first told me about this, I thought it was going to be like a.net thing, but oh, absolutely. So the very first thing they seem to have funded was a JavaScript thing. Then they went on to rust and then adopt net bank. That was fun. Number three, six labors image sharp. Uh, where do we go from there? What are these next two? Are these C plus plus, or are these, James: [00:04:04] I don't know what these are NTP, which is network time protocol. That. Frank: [00:04:09] Yeah, that's very important. Like the entire internet uses NTP to synchronize their clocks with each other. And so that's interesting. I can't believe they didn't have funding before. Wow. I'm in good company. Well, they James: [00:04:23] had, they had funding, right? This is just, I mean, they may have had funding, but this is like, Uh, one time. Yeah, a little bonus. And then there's, this is in 2020, then there was the non visual desktop, which is a screen reader for the blind that is recognized by the communities that leading screen reader to interact with the web and windows. That's awesome. Yeah. Frank: [00:04:44] Number six. I thought was kind of interesting too. It's a library I use constantly and Python map, plot lib. It's got a long name to say, but anyone who does anything with neural networks in Python or any kind of numerical stuff, we all use map plot lib. So that's kind of cool to see all the Microsoft employees recognize that line. Right. James: [00:05:06] Yeah, that's really neat. Like you said, that's a Python library and there was home assistant, which is a open source home automation that puts local control and privacy first. That seems kind of cool. I don't know what that is written in. That seems to be B Python. Frank: [00:05:22] Yeah, so we're getting a little bit of everything. Uh, wait, I love this one. I L spy was also a recipient. I L spy and I don't give them enough credit, uh, powers, the D compilation engine and Phuket. So if you ever have gone to Phuket and clicked on something to see the source code source code in scare quotes and scare quotes, because it's actually a D compilation of a DLL. Thanks to I L spy. So that's really cool. Okay. Microsoft help them out. James: [00:05:53] Yeah, that ones. Awesome. And then also sharp lab. This one's really neat. If you never played around with sharp lab, sharp lab.io, this is crazy neat. Uh, it is a dynamic code playground that shows intermediate steps and the results of code compilation. This is a little bit different. It's it's not, uh, like tried on net or something, but what it does is you can pull in your C-sharp code and it will show you the compiled output, basically. Frank: [00:06:25] Yeah. And I remembered I'll show you that I L will it also show you x86? Like if you Git it or AOT it, James: [00:06:33] it will show you D it says, so in here there's you can do any language, and then you can say what platform you want. So what versions of C-sharp x86 net framework platforms, and then the results you can do, ill Git ASM, which I don't even know in Judaism. Yeah. Frank: [00:06:52] Oh, that's the assembly generated from the Git. So it's not the assembly from the AOT, but it's the Jew assembly, which is just as important because most dotnet code runs under the chip. So that's pretty perfect. Got James: [00:07:04] it. It also gives you a syntax tree, which is kind of crazy. And then there's other things where you can actually run it and experiment. You can say debug or release, which obviously modifies your code as well. So Frank: [00:07:16] that is a pretty great one. DBA tools fund a number 10 May, 2021. DBA tools is a PowerShell module that you may think of like a command line, SQL server management studio, O a SQL front end. Of course, everyone needs a good SQL front end DBA tools. That's a new one to me. I have to check that one out. I don't do much power shelling. Do you, James? James: [00:07:43] UI use terminal on windows, but which defaults like a PowerShell, but I just run like command scripts, like nothing. So I'm not a command line person, you know what I mean? Frank: [00:07:53] Yeah. Yeah. Uh, yeah. And I still use like bash actually. I don't even use bash. I use fish fish, shell. It's the cool shell. Uh, so that's fun. I brought us all the way up to may 20, 21. And then it was in June, 2021 that they did a bunch of, uh, What do you call it? Sponsorships? Yeah, this James: [00:08:16] is yeah. One time sponsorships and normally how this works. And this is a very interesting, and that'd be fascinating to have our listeners are active in other communities because we're mostly in the.net community, but obviously this is more than.net. Uh, you know, What's fascinating is normally there's a bunch of nominations and then there's a selection process and whatnot. And normally there's a $10,000 over 10 months, typically a thousand dollars payments or whatever it works. I'm just reading the Remi here. And there's all sorts of stuff like that. It's very open and transparent of the nomination process works and all this other stuff, and they show you what's, what's eligible. What's not eligible, things like that. Um, and then, yeah, I don't know what happened in June, but basically they just pay. A bunch. They're like, we're just going to double it. Basically they double the double, like almost doubled the amount that they output and they picked 1, 2, 3, 4, 5, 6, 7 of your, of all different backgrounds, uh, which is crazy, including we and on a neat nano framework too, which is really neat. Frank: [00:09:17] Yeah. I was really excited to see dotnet nano framework there, uh, that one's been around for forever. And I forgot that it's basically community supported at this point. So it's nice to see Microsoft giving back to that community. I had a, I have to poke a little bit of fun. One of these is sin, a parser, a parser for Russ source code. And also fund number two was a rust analyzer and experimental rust compiler front end for IDs. So a lot of people working on Russ compilers these days, that's kind of funny. I didn't see that. It's funny how I live in my little dotnet bubble and I don't see all these things coming a lot of need for rust compilers, I guess James. Yes. James: [00:10:00] And a lot of, a lot of red, there is a whole like Microsoft rust get hub thing. They like rust for windows and a bunch of other stuff, too. That that is, uh, th th this truly also shows like how, um, how many different pieces of technology Microsoft has embraced across the company. Right? Because like it says that these are normally projects that like, people at Microsoft do use or have support, or like it's good for the community or X, Y, Z. Right. And they're all different backgrounds. And I thought this was really neat because I get like internal emails about it too. And I remember, uh, Uh, we popping up on there and it kind of, I was, I was like, whoa, I'm like, I know, I know that library. And I know most of these lines, a lot of these libraries that are on there, but I don't know all of them necessarily. So I thought this was really neat. And, uh, it's cool. So the description they had is we pronounced, we is a small cross-platform UI library for Donna to use web technologies, and we've talked about it and we've done a bunch of stuff. And I run a website on wi um, that uses Xamarin forms. XAML for the UI. And, uh, it's great. And I loved it. And you have recently sort of gone back in and been updating and stuff like that. But when you found out about this, like how you've done an open source software for a long time, but when you found out all about this, and not only that we were selected, like what went through your mind? Like what happened. Frank: [00:11:20] Uh, what went through my mind was, oh, geez. I better get the quality level up a lot more people are going to find out about it now. Um, well honestly, what went through my mind was I was just very excited. So obviously that was all fun. But I, I was, we had just talked about we not too many episodes ago. And I think I had made a promise that I think I'm going to start looking at Maui versions of it. And I have actually been doing that on my Twitch show and it's been going pretty well. So when this happened, I felt like, oh boy, now I really got to work on that Maui version because a lot of people are going to be expecting. This is the library that runs the mobile libraries, you know, where mobile developers. So that's why I've been focusing on San Fran forums and now Microsoft Maui. So. Uh, I felt a little obligation to be a little bit honest. I felt like I need to increase the code quality a little bit. You know, I was just listening to a really good interview from the developer. One of the developers, the main developer of SQL Lite. Not my little front end library, but the actual database engine. And he was talking about how he took a year off from features and whatnot, and just wrote unit tests, just. Tested every single line of code in that library and to an absurd standard. And I'm got to say, there's that because you mentioned like some book you can get out there that talks about ways to thoroughly test something like this is beyond a hundred percent code coverage. It's a hundred percent code coverage. Plus you're coming at it from the multiple different angles, like calling functions from different call spots in that. So you're trying to achieve that. And listening to that episode, all I thought about was I really need to increase the quality of my code, but that's just me. That's what I turned to James: [00:13:22] immediately. I like that. I mean, that's a, that's a good point now, obviously this was granted, but th there wasn't like it. No an ultimatum, like, like, oh, you better do this, huh? Or we'll see, uh, I assume Frank: [00:13:38] this is just it's my personality, you know, like if someone says something nice about, so they're like, okay, well I got to go make sure it's really good. Then that's all it is. Well, and, um, It is the library is getting, uh, attention, you know, so I want to make sure it's good. I talk about it a lot. We spend time talking about it. I don't want it to be a piece of junk. And so that's what I think about. But, um, no, this nomination is just pluses just makes me. James: [00:14:06] I like it. Well, let's talk a little bit about dotnet Maui web with wi uh, but first let's take a quick break and thank our amazing sponsor this week. Sync, fusion, listen, you know, sync, fusion, you love sync fusion. I love sync fusion. I talk about them all the time on the podcast because I using fusion. I use it because they have beautiful. Controls and you, I widgets for my applications when I was building island tracker for iOS and Android was Xamarin forms. They gave me all of the inputs, the charts, the graphs, the data entry of beautiful design for my application and all the controls that weren't in the toolbox. I had all the things. When you go to sync, fusion.com/merge conflict, you'll find. All of the amazing controls that they have out there for basically anything that you want to build, whether it's a Xamarin app or a UWP app or asp.net or blazer or JavaScript or angular view, they got it. And when you look at their controls, they have everything. I mean, I talk about charts and graphs, but they have calendars and schedulers and tree maps and, and buttons and switches and list views and parallax views and cards and PDF and word and steppers. And. Chatbots and PDF viewers and everything, and you name it, they got it. They got you covered. So what do you need to do? You need to go to sync, fusion.com, um, slash merge conflict. That'll take you over there and you can select right up top products or anything. They not only have great developer platforms, but they also have an entire analytics reporting, all sorts of great stuff that you can integrate into your workflow. Check them out. Sync, fusion.com/merge conflict. And. For sponsoring this week's pod. Frank: [00:15:46] Thank you. Think fusion. Yeah. Trees, trees. I put trees in all my apps. I need to use James: [00:15:52] their trees. Trees, you know, don't don't rewrite though. Don't don't write your own. Just let sing fusion handle it for ya. Yeah. I give Frank: [00:15:59] a quick shout out that interview that I was talking about was on the co recursive podcast and it was the July 2nd. Episode and it was Richard hip. If anyone's interested, it was real good interview. James: [00:16:14] You got a link you can put in the Zencaster chat and then boom, Frank: [00:16:17] I'll try. I'll try Mo Mo casts is a little funny about links these days. Copy James: [00:16:23] just a little copy link and Frank: [00:16:24] say, copy just a little copy and paste them. James: [00:16:27] Oh my goodness. All right. So I recently I did a pull request for. I done two poor requests to dinette Maui. Can you believe it? I did that. Frank: [00:16:38] Are you a developer again? Keep doing this? James: [00:16:42] No, that's a, yeah, no, I don't know about Frank: [00:16:46] that. Okay. All right. So what, what, what, what were you doing? James: [00:16:51] Okay. So the first thing I did is I've, there's this, there's this another initiative cursive I'm Adam. I heard the podcast. Uh, so two things happen. One, there is this project at Microsoft and it is called the, what did we call it? It's the thing that I'm working on at work. It's called the con the con contributor community experiment. Okay. And Frank: [00:17:17] tributary community experiments. God, James: [00:17:20] trust me. We spent five meetings talking about this name for the repo, but that's what the repost called. And the whole idea is. Is trying to grow and strengthen the communities in Microsoft open source projects. I'm about open source, right? So this is about there's responsiveness productivity, transparent newness, inclusivity, and approachability. And I'm working on the approachability part, which is that users are recognized. They're welcomed. You know, they want to engage kind of break down some barriers. So I've been working with Safia and, uh, bill and a few others. And the first thing I did is I did a pull request, not actually to the, into the repo source code, but I made a code of tour. Do you know about code tours? Frank? Frank: [00:18:09] I've heard the word, but no. Tell me. Okay. James: [00:18:13] Co tours are really cool. And what they enable you to do, it's a vs code extension. And what it allows you to do is create this little Jason file and hat. But as, as beautiful, you know, basically. Um, you know, UI inside of vs code. And what it does is it creates this Jason file at the end of the day. But what the Jason file does in vs code is it enables you to do an onboarding walkthrough to do a guided tour of your code. So you can, you know, pick a folder, a file, uh, a line of code inside of the repo. You can pin it to a branch, you know? So in case you change your code, But the idea is, imagine someone comes into dotnet Maui repo, and they say, how do I add a handler? Or how do I contribute to Xamarin essentials? Well, you could dig around for 15 hours and look through the repo and try to figure it out. Or you can do the code tour. You do the code tour and you just click next and it jumps around and shows you all the places in the code. As I enter tech. So it describes like what each part of the thing does. And that was my first contribution. And that's in a draft form right now and I'll put a link into it, but it's really cool. So the idea is like, especially for internal, but external too, is, is anybody could look at an open source project, open it in vs code or a code space. And boom, you got, you can walk through the code and you can have as many code tours as you want, which is really. Frank: [00:19:39] I have two responses, a super cool B, I find it hilarious. The things that you decided to put into the store, James: [00:19:49] I put in to two different code tours. One is control handlers, and the other one was essentially Sam or Don Maui, essentially. Frank: [00:20:03] Yeah, so it was the essentials I figured were a pretty, yeah, I figured those were going to come in, but you started with I button. I love this. So I have never actually run this and I am totally going to do this for my libraries because. Well, SQL Lite is just one giant file. So I figure everything's easy to find in it, but that's totally not true. So I am going to do this, but, uh, w what does, I'm sorry, I'm such a new bit, this w what does the UI look like and, uh, code that's code to it, or vs James: [00:20:33] vs code. So, yeah. You got all the pads on the left-hand side, you know, like the output and the watch and all that stuff that comes up over there on the left hand side. Um, well, one, when you open, when you open, if you were to take my, my, my, my, my fork here, and you were to open the branch when you open the folder and vs code and say, Hey, there's code tours available. Would you like to walk through a code tour? And it, and it pops up. Now, if you, if you say no, and you want to come back later and the bottom left, it'll be like, here's all the code doors, and you can just hit the plate. And it walks you through like an app walkthrough, right? Like, you know, how an apple like highlight a section of code or the section of the functionality and be like, next, next, next. So it'll walk you through the couture and it, and it opens the file. And if you have a line selected or whatever you want, it will highlight all this. Frank: [00:21:23] Oh, okay. This I'm going to have to take advantage of it's documentation. I feel like I still need to document more of my API, but I'll get on this too. Actually. I'm doing all right on my API documentation. Uh, super. Super. Cool. So, um, I know what you mean about being your first PR too. I used to do a few mano PRS. I did some when we were doing mat when I did back catalyst. Um, I did some, I've done bindings before in Santa. Those were much different experiences from the very early days. I used to do mano stuff also, but it was much simpler. Um, you wrote some changes, you turned it into a diff and you emailed it to your friend. And maybe our main may not, it would get merged into the source code. So that process seems to have changed. Now we have PRS. Now we have a whole thing and it is kind of intimidating and all that. So you must be a big name over at Microsoft. Lance. I'm assuming your PR just went in immediately, right? James: [00:22:26] I'll put it in draft. Cause I need to review this with the engineering team to make sure it's actually accurate or not. I think I know what I'm doing in here, but maybe not when this was a good experiment for me because. Uh, I, I would like to do this on my own repos. Um, and obviously the Xamarin essential or the Samara centrals, the dinette Maui essentials one was easy because it's based off of Xamarin essentials. And I, I helped contribute to that code with the team. So I knew the infrastructure well, but the handlers, I really didn't. So I documented down the chain. Like I button, I view, I framework the button, handlers, the other button handlers, the mappers, and. The implementations I'm like, and the tests and the samples. I'm like, I think this is what I want, but on my livestream last week, which I'll put a link to it in there, it's on my YouTube. Now I decided to, uh, do something which was getting started contributing to Donna and Maui. Cause I was like, I wrote a code tour. So obviously I know how to basically, you know, write down that Maui. And I kind of did like a kind of did, uh, But I will say this and I want to get into like how you've been extending. It is what I, what I plan to do was look and just do a walkthrough of the functionality of Don and Maui. And I walked through the button class and funnily enough, I was looking at the windows implementation. It was missing something. So I actually made a pull request to add a piece of functionality, but I really liked this handler architecture. Donna Maui and how works and makes a very simple abstraction and like this property bucket, it, it reminds me of the, the essentials implementation. Cause it seems to use like a lot of bait and switch almost where like, there is a, there's a common chunk of code that is called, but there's platform specific methods that get called and however they, you know, use object oriented. Of all the interfaces and the view handlers and all this stuff. A lot of the core cruft of like layout and text and this like in colors and whatnot, a lot of that is handled for you automatically. So when I look at the button code, it's like, I don't know, 50 lines of code to implement a button. And you're like, what does that, how, you know what I mean? Like, it's very, very minimal. To add a new property or to extend it or to just implement a new control because a lot of the hard work under the hood has done for you automatically. Now, at least that's what I saw. At least I don't, I don't know if that's an accurate statement or not the handler technology and you probably know more than I do it. Frank: [00:25:09] Uh, no, uh, everything you've said is spot on. I, I do like the handlers too. This handlers are the new renderers. What we called renders in San Fran forms. And what they've done is made the relationship just quite a bit more explicit between the two. For instance, if you had back in the day, Xamarin forms button, you could not really get the native. Button object. It was technically there. If, if you knew the tricky ways you could kind of get to it, but in this new system, the button is actually an eye button, which is an eye view, which isn't an eye framework element. Um, but they actually have a reference to their hands. Hm. And that handler has a reference to the native controls. So the one big improvement I see from the app developers side is that the views, the cross platform views still give you access to the native control. If you absolutely demand it. Like I usually do. I just. Cause I'm a, I'm an evil coder. I always, uh, take advantage of iOS and I want to push those things. And I was going to make fun of you for choosing your example as button, because of all the basic controls that one's the most complicated on iOS, because of all the like colors and default fonts and things like that, you know, label is the good baby one to start with, but yeah, it's. And it's all done through a big registry system. So these I view handlers are registered you register and in your startup code, this is all done for you. If you're doing like iOS and Android, but if you're insane like me and want to swap out the backend, then you can actually override which handlers are created for which view. So when we start up, for example, when, if you want to do your Maui on the web, you would just say like, uh, we install yourself into the startup and then we would become a thing. It handles all the buttons and the labels and the entry boxes and things like that. It's a pretty elegant architecture. I have some complaints about the nitty gritties of it, but overall, the architecture is very elegant and I think app developers will like it, especially for the swap ability. James: [00:27:31] Yeah, this, the swap ability and the extensibility and for, you know, control vendors like sync, fusion, and everyone else, you know, there's, there's ways to extend in light up and say, you know, wow, you know, yeah, there's a button, but are there or a toggle, but really this is going to be mega epic toggle, but like handle that base functionality under the hood, right. The layout stuff and not have to do everything. Um, but, uh, yeah, I, I really liked how you could, um, Basically add properties easily. So if, for example, the team or yourself wants to extend the control and say, oh, you know what? Like there's a button, but I really need some other event. You can easily add an event or another property or set some native functionality. Like a line of code, pretty much you just say, Hey, I'm going to add now a super deluxe color, and that's going to set the, something other on the native view and how each of these properties, um, work is they call like a method that passes in the native control. So you can easily get access to it. And like a line of code. And I was doing that on my stream. I was like, look how easy it is to extend this. And since you're in a multi targeted project, You can just, if Def compiles. So you could say if iOS, I only want to do this one thing to the button, for example, and then boom, you're off to the races. So I thought that that was really neat. Frank: [00:28:59] Yeah. So you keep bringing up the property mappers, which are, they're kind of fun because they're totally optional. In fact, they're just there to make it easier to implement these handlers because what, what do most renders and handlers. Things do they just go from one dot text, property to another dog, text property, another dot foreground color to the other dot foreground color. And it's a pretty simple mapping. And so if you have that very common case, pretty much, I mean, 95% of all controls are just property mapping. They have this nice little dictionary format that you put things into. You give it the property name, you give it the types and you give it the function to handle what to do. And the neat thing is that property mapper takes care of invalidation. So it'll do the change tracking the binding, the, you know, the stuff you don't want to do. It'll do all that nasty stuff for you. And you just have to implement the update function. Again, this isn't stuff that like, I don't think a lot of. App app developers will do it. Definitely. If you're writing controls, you'll probably end up doing a bit of the stuff. And I don't know, maybe app developers will do it. If you just want to override the default behavior of handlers, like in Xamarin forms, we had a facts you could override effects, or you could override renderers. And they were both a little bit scary and all that, but maybe because handlers are a little more friendly, maybe people will override them. James: [00:30:32] It could be, yeah. Or to, to light up the property buckets or whatnot. I think when you used to have to implement your own, I think when you used to have to implement your own renderer, it seemed like you were really yourself having to handle a bunch of the lifecycle events. And it seems as though this has gotten rid of a bunch. Frank: [00:30:52] Yeah. The big difference with handlers is that you generally do not do any event subscription. And one of the developers of Maui explained it to me. It was like, you know, with events, subscription, there's bugs, and they just kind of wanted to eliminate that class of bugs. We, we used to talk about it all the time on this show. Whenever there is a quote unquote memory leak and.net. It's usually some event on some root object that you just totally forgot about and it's hanging on to some point or of something that you just totally forgot what got added to that list. It's funny how events can create these kind of memory leaks. And so they just said no events. James: [00:31:35] Yeah. And for the, and for the areas in which you do need to maybe subscribe to an event on the native control. What they've done is they have, um, simple methods that are over rideable, which are connect handler and disconnect handler. And that's when you would register events or different handlers. And that's what I actually did do in the windows implementation is there's this pointer, press and point to release, like when you're tapping on the button. So you can do. You wanna touch up outside? For example, like someone in the chat, when I was streaming, I was like, what about touch up outside? And I was like, wait, have you used touch up outside ever in your code? Oh, I need it. I was like, okay, well then there's a, there's a released, you could just subscribe to released is that it clicked and. I implemented it in like three lines of code. It was so easy. It was like really, really easy to just add a piece of functionality in there, which was, I thought really delightful. And the names kind of make sense. There's like a create native view connect handler disconnect handler. I'm like, oh, why does he need to do. Frank: [00:32:34] Yeah. And it's especially easy when you're editing the Maui source code itself. They take big advantage of if deaths and all that stuff. If you're outside of the code base, it gets a little trickier, but definitely if you're inside there, it's easier. James: [00:32:48] Yeah. So what has it been like for you to be someone that is trying to. Create another front end layer for, uh, Donna to work with Don Maui. Like how has, how has that been? Cause your goal would be to use the.net Maui XAML or sharp or F sharp, the code that is creating a new button. So someone could reuse it on there. There, there. Devices and desktop. So their phones, their tablets and their desktops, uh, which would use the done MRI renders. But your goal would be to say, Hey, let's run this on the web and create a website out of it. And of course you would need handlers for, for a bunch of stuff. Frank: [00:33:33] Yeah, exactly. Um, and I want to rewind just to make sure I'm clear. When I was saying there aren't events. I was talking about the handler's side. The, I call it the backend. I think it's called the back end, not the front end. So we would be a new backend for. And what I was talking about. There being no events I was talking about on the handler side, of course, button has a tapped or clicked event. Of course it does. You know, that's not going away, everyone it's there. Don't worry. It's probably a command to who knows. But the neat thing is when you are writing a new backend for Maui in this architecture, I can actually ignore a lot of that stuff. That's called the Maui dark controls library. I believe it is. That has like all the events and everything on button. And that's the kind of XAML controls that everyone's used to. I think that as a front end, To Maui and there are other front ends, like, uh, Clancy's comment or some variation of it as a code first approach to doing Maui apps will be coming in as, or hopefully coming in as like a front end to it. But the backend is the thing that's responsible for actually, you know, putting pixels on the screen, the front end is kind of like the programmers API. And the backend is the handler's API that people who want to render out, um, Maui have to deal with. So let's say I wanted to create like a cool 3d Neo morphic version of Maui. I would have to do exactly what I'm doing for we, I would just reimplement the handlers instead of using a UI button, I would draw the button myself using the James: [00:35:14] handler. Got it. And then you would call specific methods like when there was a click event, basically. Frank: [00:35:20] Yeah, exactly. It's it's not too bad if you've ever written Xamarin forms renders before. So your, your question though, is how has it felt? Well, it's tough. It's tough. They have gone full in on the, if deaf style of programming and doing cross-platform, which is a little tricky, because that means not everything is abstracted. Where I would want it to be. And so, you know, it, I think there's a few other, uh, unofficial versions of Maui. I think there's a Lenox version out there and the repository that's running, uh, I don't think it's officially supported, but it's there. Um, every, everyone runs into their own issues, but you know, things that we want, you know, may not be abstracted out. Maybe the Linux one was a little easier. It's a little closer to those. Um, particular things. It's always weird stuff. I, um, you know, I want to implement my own I button, but I also have to override controls dot button because they cheat a little bit with the inversion of control and they register more specific classes than they should. So I have to file bugs against that. And then other weird little things because.net six is coming out. James. I don't know if you know that. But dotnet six is coming out and oh boy, it's changing a lot of things, especially when it comes to frameworks. So I'm still trying to figure out what kind of framework, uh, we Maui is going to be. But that's just all part of the crazy excitement of the merger and.net six. James: [00:36:55] There is a lot of moving parts and yeah, that's one thing that I definitely was experiencing and something I want to work with the team on this week. So maybe by the podcast is out, is just kind of. Kind of contribution guides of like, Hey, here's, you know, blah, blah, blah, blah, blah. Right. And like here's a developer guide and blah, blah, blah. You know, so kind of like updating it and doing different things. I'm kinda looking at that. And I think there is probably a guy that needs to be written, which is like how to do what you're doing and yeah, because you're kind of figuring it out. Frank: [00:37:26] Yeah. I, you know, darn it. You're making me kick myself. I kind of want to write a guide though. Now how to write a backend for. You know, Microsoft Maui what's right. That Neo morphic one I've always wanted to. I started it on my Twitch show. I really want that, like those white, soft shadows with the little glow from the cancel button, I think it's going to look gorgeous, James. And imagine doing that in SAML. It'd be hilarious James: [00:37:52] if you, if you can do anything, if you put your mind to it. So that is for sure. Um, yeah, I I'm, I'm, I'm excited that the. How it's progressing and that you're even able to do this. Right. I mean, it's not even released yet. It's in previews and you started this a while ago, right? I mean, in one of the very first preview. Frank: [00:38:15] I, I took a look and I got a lecture on it, but I didn't actually put code down until preview three. I decided to wait for that just because I knew a lot of things were in flux. They were deciding exactly. Um, which, um, IOC containers were responsible. Am I saying the right thing? I O C container. Yeah. In version of control, container, whatever, the big registry of types, uh, that, that thing moving around a little bit, but yeah. Um, I am currently caught up now, API coverage or anything up to preview five and preview six, those, uh, framework issues became an issue. So I need to talk to the team and figure out what to do for preview six, but, um, Yeah, it's progressing and it is it's hot moving parts. That's why I didn't want to throw a lot of time into it in the beginning, but like Maui is coming out in like November ish, at least some version of it. And I kind of want to move my apps over for, to it just because it's the future. And I often wait too long to switch frameworks and I don't want to be caught off guard again. So the moment Maui is released on switching my apps over to. James: [00:39:27] Yes. Uh, you know, dinette comp coming up in November, you're going to dinette comp.net. Uh, that is for sure. I'll just selflessly plug. So Frank: [00:39:37] what are you going to do? And if I got a lot of stuff is going to be announced and I'm sure we're going to do a whole bunch of episodes on all that stuff. So consider this one of the early Maui episodes, everyone, because we all have a bit of learning to do James: [00:39:50] totally. And if you do want to follow along, I'll solve asleep. Plug my YouTube. If you do want to follow along, I've been putting. Uh, videos I've been doing in my spare time as I'm kind of exploring and doing stuff. And I'm a manager now, Frank. I'm not in the code. I was never in the code, but I'm not as close to the code as I used to be back in my back in my day. Um, but you know, I, I interface with the team a lot, so it's, it's quite fun. And, and I don't try to sh you know, SIM ship the release and this and that. There's a lot of moving parts. So I sort of takes time and bop around and try some projects. And then, you know, and the weekend after the hike, I'm like, let me record a video on dynamic. So I've been doing dynamic. Uh, preview videos on my YouTube, youtube.com/james Monson magnet throw a link in there to the Donna Maui, um, playlist. And I I've done all the, all the previous. I've just done them all and kind of watch as it's progressed. Frank: [00:40:40] I love all your thumbnails. Have the best expressions on your face. James, go for just the thumbnail. James: [00:40:46] Sorry. Thank you. Uh, those are my good friends over at cinder design co. Uh, they do a great job of all the thumbnails, and I did find a really great service removed at BG. Um, they can take any photo and they remove your background. Uh, and you can pay like a, a fee or paper per photo and you can preview it first before you pay for the full Raza version. You get the low res version for free. But yeah, I, I literally have a, uh, photo album that's called silly James with just a tons of different poses, doing random stuff. Frank: [00:41:19] I was just about to ask that I was going to ask if those actually happen during the video, or if those were no silly James' folder, it's silly James' folder, silly, James: [00:41:29] silly James' folder. Although sometimes. Uh, uh, Christina, who works on this stuff on the team, she has a kind of a vision for what, like what, what I should be doing in the photo. And, uh, then I like take a photo specifically for that, but yeah, it's, it's quite quite fun. So yeah, they're, Frank: [00:41:48] they're really, she's the producer and you're the talent funny. It's all Hollywood. It's all James: [00:41:54] Hollywood on everyone. It was you tubes, so yeah, that's good stuff. All right. Cool. Yeah, it's, uh, it's, it's fun because you know, the. I've worked with the sender design code, my friend, Michael and Christina, and I'll put a link to their they're in their, in their show notes, a cinder design.co, uh, and I've worked at them for a long time and they did my entire self-branding. So, um, my, if that makes sense, I don't know. Does that make sense? Self-branding Frank: [00:42:28] it does in 2021. If you said that in the 1990s, I don't think we'd ever speak again. James: [00:42:34] Yes. I have an entire like color palette and this and that and all this different stuff. And they did the soundbite FM logo as well. The coffee cups that we've sent out, the stickers we've sent out. And most of those, yeah, I drank out of one today. Uh, and. So I worked with them, you know, to do my personal, you know, design and my palette and all the stuff we we've talked through all this stuff. So when I was like, Hey, I'm really thinking about. Just dabbling in the YouTube, but I want to have a strategy across all my properties, my Twitch, my YouTube, my Twitter. So when you go to my channel, there's like banners and colors and images, and they're all seamless across all the different properties that I have. And then they put all that together. And then we have a whole like board of, of doing thumbnails and this and that. It's quite fun. Uh it's it's, it's kind of like a mini. Like on, on the side. Cause I do all that stuff. Just like we do this podcast. It's eight o'clock at night right now in our spare free time. So Frank: [00:43:39] much spare free time. Oh, wow. See, I don't know whether I was, I was going to take back my compliment because like, I really like all your thumbnails and I'm like, well, someone else has seen it for you, but now I'm going to give the compliment back because just organizing all those people, I was like, Sliding out of my chair, as you were describing the team and everything, so good on you for being a manager when you're not being a manager, James James: [00:44:03] Bravo. Thank you. Yeah. And there's, there's some really good ones. So if you tune in there's, I dunno when I'm going to put this one on, maybe later this week, um, I have one called editing and producing a podcast, which is all about how we literally make this podcast. And now I edit and produce the podcast too. Uh, which is. And, uh, you don't Frank: [00:44:26] have to edit, I never speak over you there there's no need for an edit. James: [00:44:30] Yeah. Um, well the video, uh, is, is what it would claim elsewise. So, uh, yeah. Anyways, anyways, I'll stop self promoting myself, but it was thanks for everyone for tuning in. I got to go edit this podcast, Frank, cause you're going to get on a plane. I'm gonna get on a plane. We're flying to, I don't know, somewhere in the Midwest. That's a terrible idea, but we have to do it because of family. So Frank: [00:44:53] family gotta always do it for family. James: [00:44:55] Yes. Not excited. I mean, I love my family, but not excited about getting on planes again. So super excited. No. Anyways, we'll report back next week, if we've survived the flights. All right. Thanks everyone for listening until next time, this has been on the emerge conflict. I'm James Monza back now and Frank: [00:45:10] I'm praying Krueger. Thanks.