mergeconflict325 === [00:00:00] James: This week's up episode, it's brought to you by sync fusion. Yes. We love sync fusion, and I know you will too. No matter what you're building, they have beautiful controls, widgets and gadgets for your applications, whether it's web apps with blazer, flutter, APA, accord, JavaScript, angular, react view J Qury or mobile with Donna Maui, fluter zer and UWP JavaScript, or even desktop apps, wind forms. WPF. When you UI down in my letters, Amber UWP, all the platforms, they have every single thing that you possibly need. They have hundreds of beautiful controls that are drop in ready and awesome dashboards and other solutions, including document processing for Excel, PDF word, and so much more. You gotta give sync fusion to try and go to sync, fusion.com/merge conflict to learn more and thanks to sync fusion for sponsor in this week's pod. Frank Don at seven is here. I'm all. Um, game RRC one installed, ready to go. Newest visual studios, updating every single library, updating every single application. I'm all in babe. [00:01:04] Frank: Oh, my gosh, no, no people promised me in 2020, the time didn't exist anymore. And I could just live in 2020 for the end of the, did we even have.net six and 2020 James? Wow. Dot net seven. I don't know, man. That's a lot of updating. I just I'm. I'm getting through the beta summer. I don't need [00:01:22] James: a beta fall. We're on, I, I like to call, you know, when you're in Heathrow or you're in an amusement park and you get the fast. um, [00:01:32] Frank: I never get the fast pass, but I, I, I, I look with envy upon people with the fast pass. What, what [00:01:38] James: has happened here for us developers using Donna developers, building for client, client developers specifically. So who client, client, client, client devices, like, you know, client apps, desktop, mobile apps, client. Client consumer consumer, consumer apps, consumer apps, consumer apps, client apps, right in and [00:02:04] Frank: vote. [00:02:06] James: yeah. Let us anyways, mobile and desktop, um, with. Don ISIC specifically iOS, Andrew Mac Zin, Donna Maui, all that stuff because we got that official release midyear and then the tooling kind of trickled. I kind of feel like we fast, fast, tracked, fast pass to. Got at seven, like yeah, Donna six was here and then there was a cool bye. And then I'm like, okay, like, I guess I'll just like change this TFM and like, oh, well I'm done here. [00:02:37] Frank: Good to go. Yeah. I'm pretty sure you could rewind about six months of episodes and go hear me complaining that.net seven, whatever preview zero, or is out or something like that. Um, yeah, the writing was on the walls too, because I think, yeah, the first.net seven preview came out just as the. Maui release candidate came out. So you're like, uhoh they gotta get in sync with each other. Um, but you know, I've been rocking the visual studio for Mac preview 17.4. It's a lot of version numbers, everyone mm-hmm but, um, that's the one that. Really officially supports, um, net six and iOS and Android and all that stuff. And Maui, of course. And it's been, it's been good. Uh, it's it's a real good update. Everything feels kind of stable. Like we're, we're finally hitting a nice stable point. And then you come onto the episode and tell me there's a.net seven and I'm like, oh no, James. Oh, no. But I, I have a feeling that, like you said, we're, we're going a little bit fast and it's, it's more of a, a, I always get the TikTok metaphor messed up, but maybe a talk year, something like that. [00:03:47] James: Oh yeah. You know, I was in a call one day at work and they're like, oh yeah, it's the talk. And I was like, Wait, no. Wait, that doesn't make any sense. We're talking about software development. I was like, did someone post something on TikTok? And they're like, no. Oh no. Tick the tick and the talk. And I was like, like the, I was like, I don't know what y'all are talking about. I was so confused that someone I explained TikTok to me, that's like a rhythm of the business type of thing. It's the tick. And it's the talk. And I was like, I don't, I think we gotta come up with something new, cause it's way too confusing. Um, I [00:04:17] Frank: think it's an Intel thing, but you see apple do it, or at least in the past, they always did the iPhone four. Then the four S then the five, then the five S so whichever one, the S is, is the ticker, the talk, I always get that part backwards, but it's really more of just an idea of you do a bunch of big feature releases. And then the next version, you just kind of stabilize do a bunch of feature releases stabilize. Yeah. That's kind [00:04:39] James: of the rhythm we're talking. For mobile developers, let me, I'm gonna make a blanket statement. This is a James opinion, not officially endorsed by anyone, but James, a Monte Magno himself. LTS. Probably not me. Yeah. LTS and current releases don't matter. They don't matter. Every single release is the most. You should just keep, keep it rolling. You know what I mean? Because we're gonna need the latest and the latest stuff. Like we talked about, like the support and stuff like that, but like, you know, I'm gonna update the Don seven before cuz Frank, what happened when we. Have those releases like iOS 12 came out and what did we do? Frank? We literally updated like the exact moment we possibly could to start building against the latest stuff cuz we have to. So I think that even though this is a current release, which has no impact on quality only is on the support life cycle. By the time it's outta support, I'll be on doned eight or Don at nine or whatever. But mm-hmm, Frank. Here's one thing that's been very fascinating is because of this delayed. Tick, if you I've only now just started actually like updating all of my libraries to Don techs. I didn't have to worry about it. My beta summer was like, eh, like I'll wait for stuff to, I'll wait for people to start upgrade and doing stuff. I don't really care, but I recently have been doing some documentation. I've been updating some plugins. I've been rewriting, some plugins, my net billing plugin. And more recently I've been having to go through an update. Oh like my settings plugin, which let me, [00:06:09] Frank: let me, let me tell you what, oh, it all, it comes back around. Our very first conversation ever was talking about app settings. Oh, I'm so excited for a settings discussion. Now, [00:06:20] James: even though the settings, the settings, um, stuff is built into Donna Mau and the Donna, you know, stuff, it's all in there. [00:06:29] Frank: Hit, hit, hit me with a name space. Do you recall which names. Uh, where that are, they called the extensions. I'm just completely blanking on what all those little helper things are called, where they're put, [00:06:42] James: so it all used to be in zer and essentials. And now it is inside of Microsoft dot Maui dot, like application model or networking or connectivity or stuff like that. Right. They'd [00:06:53] Frank: moved it in the last previews. Ish. Yeah. That's. [00:06:57] James: I'll give you a link to a doc and everybody in the show notes, you go to docs.microsoft.com, which is now learn, do microsoft.com um, slash.net/maui and there's platform integration overview, and it outlines all the name spaces, all this stuff. It's very good. Um, it's all done. Okay. [00:07:12] Frank: Yeah. So this is the, in the box version of what used to kind of be your plugins libraries. [00:07:17] James: Yes. And not, I didn't, you know, not like Annette billing never made its way, which should never make its way. Cuz it's terrible. But settings is like core foundation, but Frank, I cannot get away from updating this and I thought about it, um, because my plugin. Are, you know, they're not just like net standard two. Cause if they were just not net standard two and they didn't rely on anything, no dependencies, they'd be good to go. They're platform code. So yeah. For example, you know, some things have breaking changes and done net six. So even the backwards compatibility didn't, you know, actually work. And I also wanna support Mac [00:07:51] Frank: catalyst. End float. That's always end float. Oh, by the way, [00:07:56] James: I just updated my media plugin, which has a bunch of end floating and Ning around. Ugh. Oh boy. That's the worst. Oh, [00:08:04] Frank: dig one global usings. Are your friends in that case? [00:08:08] James: Yes, it's very true. Anyways. I digress now, [00:08:12] Frank: Frank. Okay. No, I, I wanna interject and just say, um, I do feel for you. I don't have too many cross, uh, I'm sorry. I don't have too many native libraries that have like native dependencies like that. And then I have to update, um, most of mine are all like super cross platform and just work everywhere and their net standard and are wonderful. And I would like to report, they remain wonderful. You can still Adam net standard lives on everyone. It's great. Um, but I do have. Two drawing libraries and a few other libraries plus a library. I want to pitch you at some point and what they're all native. Yeah. I love it. So, so [00:08:48] James: Frank pitches, I, I understand Frank pitches, Frank implements. Profit. [00:08:55] Frank: Yeah. Is that, is that how the poster goes? [00:08:57] James: I think so. Where am I in that though? I gotta be in there too. [00:09:01] Frank: Uh, you get 1%. [00:09:03] James: Okay. We both profit. Perfect. Cuz you pitched it to me. I guess I have to be work. OK. So. My settings, plugin officially supports. Are you ready for it? [00:09:12] Frank: I, I, I'm excited. I are, are we gonna get a very long list of TFM right now? [00:09:17] James: this one. One, every single one of these is a TFM and oh boy, everything builds in CI in Azure DevOps. And that is quite amazing. I have to say, [00:09:29] Frank: thank, uh, sorry. Interjecting again. Thank goodness for that. Cuz gosh, I remember building these things by hand in the old days and thank goodness we can just script of this and get it done. So it is terrible. How many platforms you're about to say, but at least it's NCI. Please continue. I [00:09:47] James: Goza and IO. Z Android windows 10 UWP, Z Meza TVs, Z. And watchOS do net net framework four, five net six. Yeah. Dot net F yes. Someone requested WP, baby ties.net for iOS, which is.net six.net for Android, which is Don six. The windows app SDK win UI three, which is the new hotness for Don ES six, Don net for Mac catalyst and.net for Mac. Ooh, [00:10:17] Frank: you're doing the Mac version still. Good for you, buddy. [00:10:19] James: Yeah, I got you, bro. I got [00:10:21] Frank: you. thank you. Um, You know, it's not so bad. Cuz what, three of those are repeats of each other. One's just old Samin versus net six 14. And then I think the real clunker is four five. Does, can you use like C 10 with.net? Four. Five? Yeah, [00:10:41] James: no. Yeah, you can, you know why? Oh, yeah's because it's, as long as you use compiled features, um, not runtime features like if you were to use, um, right. Someone, the new interface thing or whatever, like you can't do that because it's not a compiled, like if it compiles. Okay. You know what I mean? It works. [00:11:00] Frank: That's cool. Bet. They make that distinction. Mm-hmm good. Yes. Uh, no value twos for you. Probably. [00:11:06] James: I wonder you can install the value two new get package, which does backwards compatibility. [00:11:12] Frank: fantastic. Um, Okay, so, uh, yeah. So are, are, you're gonna be you're shipping in the box, but you're still gonna be maintaining these libraries for the rest of eternity [00:11:25] James: as well. I guess, I guess I have to. Well, here's the thing now that this thing updates to Don net six, I, once Don net seven comes out. I don't need, unless there's a breaking change, I wouldn't need to target.net seven. Like it should just work. Correct. [00:11:39] Frank: Frank. I believe we outlawed breaking changes in.net seven. We're like.net six is enough people don't chew. Dare . So, um, I, I actually don't have too many fears of updating to the.net seven because it's mostly just a runtime thing in additions. So I'm excited for that. Plus I saw that Maui has better boot times on it, so yes. You're gonna be fine. Knock on wood. I haven't installed the RC one yet. [00:12:05] James: but should be good. I'm pretty excited about it. I did spend a lot of time. Yeah. Everything in Azure DevOps is working good. I'm pretty excited about it. I push this out only because people ask for it. And here's what I thought, as I said, you know, I haven't done a lot of testing and I just want people to be able to upgrade seamlessly. Like yeah. Especially if they're like, oh, I'm gonna wait for Don at seven. And then they go to like migrate. There's Aerin and Amerin forms app and then their plug-ins don't upgrade. And that's a problem. We talked about that. In fact, I'm going through a problem right now with the Bluetooth blue, the blah, [00:12:37] Frank: blah, blah. the it's Bluetooth, Bluetooth always. Cause it always causes trouble. You have an app that just displays a number and you have so much trouble with it cuz of the Bluetooth [00:12:48] James: uh, I did the poor request. The poor request is pending. Oh. And we just finally went green on CI, which is very, very exciting. So this is a library and I've talked to Alan Richie who does shiny, his was a great library. Mm-hmm and that does all sorts of stuff. He said, you should just use shiny. It already supports Dynas. And I said, I don't wanna rewrite MyCode. [00:13:08] Frank: it's so sensitive. There are it's statements. I don't understand timers that make no sense. I really shouldn't have used better variable names. [00:13:16] James: Yeah. Yes, I get it. I don't want to change anything. So in that vein, I started down the process of upgrading my own plugins at the same time, which then led me to upgrading a few apps and writing some samples. Frank and I stumbled upon a curious upgrade story of the one end only SQLite PCR. [00:13:41] Frank: Oh, oh no, I'm scared. But before we get to the horror story, that is me. Um, clarify. In your.net, six to.net seven imaginings. Do you plan on putting both a net six and a net seven version of your thing in there? Or are you gonna try to just be at like net six and use that as your lower net [00:14:05] James: number? Well, um, I think in my internet billing, great question. This is a fantastic question. Ooh, what a great question. So I would approach this the, the same way that I approach. um, the backwards, I think it actually makes it easier than Zin iOS. Okay. Cuz I look at it like this in the xamerin days, at least on iOS, Android was a little bit different Android. You, you had mono Android like 10, 11, 12, you kind specified the SDK mm-hmm iOS was this outlier, which, you know, really was kind of a bummer because it was only zer and iOS 1.0 yeah. Like you just always specify that, which means long. Long live. It was whatever you're building against, like is the thing that you're building against. And that's kind of also not great because if I'm building against a version that's newer than your version and I'm using an API that you don't have, then you get into problems. So with the in-app billing, um, plugin is a great example of this is I have to assume that apple in iOS. What version are we on 16 or 17, we'll add new features, which means I will want to access those new features. And if I continue to target only net six, I won't be able to add those new features. So I will have to conditionally compile some of that stuff in there and do version checking at the same time. So it is a little bit more helpful because right now it's kind of Yolo. Whereas in the future, With this sort of system in place, it should enable me to lock it down a little bit nicer when I wanna access those new APIs. Although I'm not actually sure how that works. If I want to target, let's say, let's say 16.4 comes out and they new at a new API. Like, I guess it's still done in seven. I can't be like net 7 0 300. I don't think that works right. [00:16:08] Frank: Uh, no, but you might be able to do other nasty tricks, like lock down the workload version, which would contain a set of the APIs. Mm. I don't know how compatible they plan on making the workloads between different run time or SDK versions. Hmm. So I, I don't myself want to get into that trick too much. I think I'll just, like you said, get into more of like a yearly cadence. Yeah. But yeah. And just handle it from that [00:16:36] James: perspective. My plan definitely is to not like, I'm not gonna just go in and add a net seven one just to add one, unless for some reason it doesn't work. Okay. And then I will add. [00:16:47] Frank: That was my follow up question. I was gonna say, so if there aren't any new w bang UI features that you wanna take advantage of, would you stick with net six? And I, you just said, yes, we won't hold you to it, but that's the current [00:16:58] James: plan. That is definitely the current plan. I definitely do not want to change that. So my, my plan here would be continue on the net six train, unless I have to add a net seven or net eight feature. And in that case, then I would multi target. So I'd continue to install. Yeah, that version of net six and then maybe not seven. And I'd like to see how that works in the CI system. Right now, what I'm doing is a.net, you know, install, command, and then I'm doing.net workload installs. So I think I could install six, install the workloads, install seven, install the workloads. Yeah, just take a while. Like every time I install a.net, it's gonna slow down my machine. Yeah. You know, CI. So I wanna limit that. I wanna limit. [00:17:42] Frank: yeah, I wish GitHub would come up with a solution for that, where you're like, look, I just install these exact things all the time. And yes, uh, there are Docker things and all that, but at least for me, I run on Mac platforms. and Docker does not run on Mac and no, I know Docker runs Linux on Mac. Doctor does not run Mac on Mac, which is what we would want. . Yeah. Which is funny actually, because new Mac can run Mac on Mac pretty easily. And so I've thought about building like tiny little build servers. They made, um, creating virtual machines really easy. There's an API, right in them Mac OS API to just bring up a virtual machine of Linux or Mac and they even have a nice demo in the WWD. On how to do it. Anyway, that was a long way for me to say, I have plan BS and CS. If all this versioning stuff gets outta hand . Um, I, I, I do wanna play devil's advocate just for one moment, just because you got me thinking, um, you were saying. It was bad in the examen days because yeah, we would target the same thing. I had no version number, essentially, cuz the version number never changed. And so it was always kind of luck of the draw if you're using the correct one or not in your CI on your build machine, all the different places. I will say, um, in trying to solve that problem, we created this terrible versioning thing. where there's millions of versions everywhere. And at least in the old days, if it, if the API wasn't there, you know, it just didn't build. And it gave you a pretty clear error message. I. Just playing devil's advocate. I do wonder if that error message was simpler than 8,000 version numbers that now we now have the track, like you saying, I'm gonna update to.net seven. I have absolutely no problem updating to.net seven. My problem is I have 15 different libraries out there. And I don't want to go update all of them every year, just because there's some feature I'm not taking advantage of. Uh, I was working on one of my old libraries and I noticed in the CI it kept popping up a warning cuz it was using.net. Uh, three point oh.net core 3.0, and it's like, this is so out of support right now. You really don't wanna be using this. And I was like, I don't know, works fine for me. It was still compiling, still running its task, still working fine. So I think I'm, I I'll probably bump everything up to net net six, but I'll probably camp there for a very, very long. [00:20:13] James: Yeah. I think as long as I possibly can, will be my goal. I think, uh, only because like, like you said, I don't wanna have to go and update it and that's the, that's the joy of it. So, you know, the idea of net standard. Right. Donnet standard was standardization across these platforms that weren't unified. But now that the platforms are unified, you know, Donnet six is the new standard. Like Donnet six is the new updated standard for all intents and purposes. And now that. Everything is on it. You know, I think it's a good time to say, okay, I consider net six, the, the lower, the lowest barrier. So unless I need to access new do net features, or I need to access new iOS or Android or windows features. And I don't actually need to upgrade accordingly. Um, there, as long as. , you know, I keep my dependencies up to date. Uh, oh, [00:21:10] Frank: uhoh we're we're coming back to me one more time. I think, um, Just like, I want to camp on net 6.0, I want to camp on net standard for all my cross-platform stuff until the compiler people force me to move off. Um, but I totally agree with you. I think net six is a decent standard for moving forward, but I think I'm still gonna. I don't know, I just like net standard a lot. So , it took us so many years to get it that I'm just still so proud of having it. So, yes, James dependencies, let's talk about dependencies . So I have a library, uh, SQL light dash net, which will is, is, is, and will forever be. A net standard library. yes, because it's a cross-platform library. It has native code associated with it though. Not directly. Uh, it's it's an independency and otherwise it's really not asking much out of the run time. It's a very lightweight library and all that stuff. It just has that one big, uh, native dependency, which is the sequel light library itself. The actual database code needs to be accessed. I don't ship it instead. I access it through, uh, Eric sink's, uh, sequel, light, raw library, which gives you, uh, low level API access to a sequel light database. And what happened, James? My dependencies came to bit me. You sent me a text message saying the world is destroyed. Sequel. Light is dead. It's it's all broken and. No idea what to do because I'm terrible at version numbers. seeing the beginning of [00:22:49] James: the show. I wrote a new document called.net Maui, local databases with sequel light. Ooh. Um, I updated one. I basically, I think Craig had written the other one. I updated it to be Donna Maui. And there's a, the sample I pointed to you earlier. The link doesn't work right now and this new one, but, um, basically I wanted to update. You can tell me if don't review the code now and thing, but regardless I wanted to upgrade it just to like take advantage of a few other things that are inside of it. Um, and I need to update a few of this stuff actually, but I, I wanted to update it basically to, you know, show a few things and it, and test it out. So I kind of create a dot Maui sample. And when I did that, funnily enough, windows worked. iOS worked, but on Android, I got a crasher and I was like, that's so weird. Like how does two outta three work? But this one doesn't I was like, it's just, and I know your library. I was like, this is just an ORM on top of it. So I frantically frantically. Texted you. And I was like, Frank, , everything is broken. Oh my gosh, help me. Help me. Help me, help me. [00:24:03] Frank: Well, it was the worst kind of crash because if you said something like Frank, you're getting a null reference exception. I, I would just roll my eyes and be like, how's that possible? but you're like a crash. And whenever a programmer says a crash, like doesn't fill in details, you know, it's ugly, you know, there's like no lag or something. Um, but fortunately there was an error message and I forget what you told me, but. Uh, you were able to track it down to like some missing method or something like that. And so we at least had some breadcrumbs to fall, but it was weird because like it's a net standard library. It's supposed to work everywhere. Um, but I have not done. Anything to update it to net six. So I've done zero work. I've done a lot of fretting and worrying about it, but I've done zero work and it's still just a net standard library. So it was a, it was a scary problem, [00:24:55] James: honestly. Yeah. And the last time it was updated was one year ago, 9 2 20 21. ouch. Okay. [00:25:02] Frank: I'll get a, I'll get an update out with people. Well, oh, PE people may say, [00:25:06] James: people may say, well, does that mean that the libraries didn't, they. That just means it doesn't need any that's good. It's good. It's chilling. Let it chill. Let it [00:25:14] Frank: bake. Let it chill. It's bug it's bug free. Why would I want to add bugs to it? [00:25:18] James: so, so here is the fascinating part, which is something must have changed in do net for Android and Don net six. Compared to zer and Android, right? Yeah. And what the problem was is that it couldn't find, and it couldn't figure out how to read the SQLite PCL raw library from our good friend, um, Eric sync. So in that instance, Right. That was, that was the problem that we were running into. So, [00:25:50] Frank: which is scary, which is scary. When, when, when you sent me that error, I was like, oh no, what just happened is like some kind of packaging thing. It's some kind of dependency thing. Is it a new get thing? Is it a.net thing? It's, there's so many things involved with getting packages to work. Yeah. So I was worried. [00:26:09] James: Do not fear Frank, because you were smart and you said, well, just, can you update the latest version cuz here's what Eric is. So your library is a net standard library. Yep. Okay. Which means I can install it anywhere and if I install it into Android, it also has one dependency and it says the sequel light PCL, raw bundle green or whatever that thing is, the dependency. What happens is if I install it into a done net six project, it's gonna go look at the version that you specified and go try to install that. Now the problem is that the version that you reference and you not even compiled against, but the version mm-hmm that is installed is a version from like a year ago, right? Yeah, because that's when it came out. Luckily for us. And all of us users is you specified version two and greater basically like, yeah, it's fine. But how new it works is it doesn't install the latest version. It installs the lowest version. So it's actually kind of different. I dunno how MPM works or if that's there's different things of specifying it. I think there's different identifiers, but. I will [00:27:22] Frank: interject. And I do prefer Python's way where they force you to say greater than, or equal, equal, equal, less than or equal, you know, they, they make you be explicit. Uh, the default in.net, like you said, and it's funny because you can actually put these, like Eski art, you can use parentheses and brackets to change this behavior. But like you said, yeah. So you're dependency, they resolve to the minimum version that satisfies the dependencies, not the maximum. So, yep. Just, they had to make a choice. It's fine. As long as you remember what the choice is. Uh, so once again, um, I, I love that my library has proven to be just a very thin rapper. it? It has like very few problems and I like that. You can easily override, uh, dependency problems like this by just making an explicit reference to an exact version number of something else that you want. So I rolled the dice and said, James, try out the newest version. Hopefully Eric sync fixed it for me because I just on the premise that I knew my library was tiny and does very little, it's just a cute little rapper that makes your life. [00:28:30] James: And luckily for you, Eric sync did update his library to compile a.net six version for iOS, Android, Mac, and windows and all that good stuff. Now, I don't think he actually has a Mac catalyst version, so we might. Ping him on that. Yeah. Uh, and Mac version, but yeah, there [00:28:50] Frank: are funny new get rules. I think the Mac catalyst will resolve a net iOS library. Not guaranteed though. Darn it. You know what? I'm not sure if that rule survived. They were playing around with those rules a lot. in the early days on that. Yeah. We'll have to ping Eric. Yeah, I do everything at Mac catalyst now, you know, I don't use the iOS simulator nearly as much. I use the, uh, I use Mac catalyst now. It's great. [00:29:17] James: yeah. Oh, absolutely. I think it's, it's like the go to, and I think what was, I think what was happening is, yeah, I don't really know. I don't know how or what happened, but pretty much what happened is, you know, it was picking the wrong thing. So now it's picking the right thing and for you, Frank, what's great. Is. You actually have to make zero code changes. You just have to update the minimum version number of the new get yeah. And go you're done. Yeah. [00:29:42] Frank: Uh, it should be that easy. I'm I'm I feel like I should do some testing. I always test on Mac and iOS, but I don't test on Android enough, but yeah. Uh, theoretically it should be like a three character change or two character change or something like that. And we're, we're gonna be good to go. And I, I have complained a lot about, um, breaking changes in net six, but fortunately for cross platform libraries, there really haven't been any, and that's why it should be that simple to just, well, sorry, it's that simple? Just because thank you, Eric sync, you did all the hard work and I, I just have to change a number [00:30:23] James: I love it. It's very, very cool. And like the nice part is that yeah, you get to automatically have things work. And I think it's really, really neat and you get to stay net standard. I know you were worried. You're like, oh my goodness. I'm so worried that this is not gonna work. I mean, it [00:30:37] Frank: is weird because I'm a net standard library, but. With the magic new get rules. Now you're gonna get the net six version of his library. Yeah. It's a little weird to be honest. but it's, it's all good because it does what you want it to do and that that's good. I'm from, yeah, I, and so this all started because I asked you a simple question, James, should I add. A net six let's let's say I just, I leave the net standard one in there. Should I add a net six version of my library, even though from all accounts? I don't need to. [00:31:17] James: Woo. That is a great, great, great question. Well, sir, the fascinating part is that, you know, Eric does target dot. Six, which means as well as net standard and iOS, Android, and Don net six, all that stuff. So if you wanted to start taking advantage of Don net six Fe features, you know, newer features of yeah. Don net six to make your library faster, then yes. I would say cuz there was all that new stuff that was added in like Don at five for, I don't know, shenanigans, I don't know things that are, you know, things that I don't understand, but things that are faster than. Yes. Probably if you want to do that. [00:32:05] Frank: Yeah. I think for this library, I, I think I won't need to, at least for a while because, uh, like you've said, um, There are compile features and runtime features. And I don't think I can really take advantage of too many of the runtime features or anything like that. and.net six will consume the net standards, Amer will consume the net standard. And I probably won't take advantage of those APIs. There are things like. Span and such, but I think those were even work in net standard and everything. So those are fine too. so on the, on the should argument, I, I think I'm, I'm gonna stick to the side of sticking to net standard at least for another year and maybe we'll reevaluate in another [00:32:47] James: year. Yeah. It really ends up becoming like how much work do you wanna do? And that's what ended up happening for me with like my media library. As I was like, okay, I can update it to net six and I'm gonna fix all the weird errors for end float mm-hmm and some other oddities, like there's some other things that were removed and I go, okay, I can fix those up. But then. I probably wanna support all the platforms that Donna and Maui runs on. So I'll just slap Mac catalyst in there because I'm like, you know, it's iOS, I'll just say, use the iOS stuff, which is nice. Cuz for Mac, you'd have to write the Mac stuff. Here's the problem is that Mac catalyst does not have all the libraries that iOS has specifically my media plugin, which I despise with. Passion because oh, [00:33:36] Frank: media media, the taking [00:33:39] James: photos, picking photos, doing the stuff that code is literally from. Very very, very, very, very, very, very, very, very, very old library called zin.mobile, which is like 12 years old. is that old? I, I poured it. It was like from the, it was the original essentials plugin, stuff like that, but the problem that I have there are, and this gets back [00:34:06] Frank: I'm. I'm sorry, I'm talking over you, but there are like camera APIs, right? You're just using some old APIs, [00:34:12] James: maybe. The camera APIs. Aren't too big of an issue. The biggest problem actually is my photo picking. And I use the asset library instead of pH photo, because I don't wanna upgrade a code and I don't wanna learn pH photo, but I use pH photo in some places, but like, uh, it doesn't like it. So there's a bunch of APIs that like, I like remove. So like, let's say you wanna. You know, do some stuff anyways, it's a pain in the butt and I'm like, I really don't want to do it. So there's, there's like a custom picker to do multip picking mm-hmm and that one was poured over by somebody. So I literally. If not Mac catalyst include everything. Oh, okay. Like, sorry. This one does not work on Mac catalyst. Cause I'd have to upgrade all the code and do a bunch of stuff and [00:35:00] Frank: rewrite. I get it. I get it. Yeah. Yeah. [00:35:03] James: Um, you're fine. You don't have to worry about that. You you're fine. Standard. [00:35:09] Frank: How many users do you have for that library? But it's obviously enough that you're doing it so good for you. Uh, yeah, I. Sticking with it. Rest of my life that's standard forever net. Even though I saw a tweet saying that the net standard GitHub repo has been archived and I was. Uh, oh, , uh, that's not a great sign from Microsoft. It doesn't mean that standard's gone. It doesn't mean that standard won't work or anything. In fact, I wanna be clear, like I keep talking about releasing SQL I four net standard. That's the minimum dependency. Most likely I'm gonna use do net six and seven to build it because why not? That's true. And so it's kind of a joke, right? So it's really just whether I put, you know, Now that I've put it that way. James cause I was gonna say it's really just whether I put it into the, um, target frameworks mm-hmm in the project file. Maybe I should just throw it in. Okay. I think I just converted myself cuz I realized it's like a, it's a five word change and. It'll be fine. [00:36:08] James: It, it truly is. The question becomes if letter, well, it depend, well, I guess now there's multiple T FMS. The real question is, yeah. I think if you do, I think as long as you're not doing exam or any stuff, because for XY stuff, you, you, that stuff wasn't in the, so, okay. God, God, this topic is crazy. Library creators. Why do we do this? I know. Here's the interesting part about all of it. Frank is the new SDK style stuff. Like the new hotness. That's amazing is awesome. Okay. Because you can multi target with ease. Yes. [00:36:51] Frank: Yes. As long as your IDE supports it [00:36:55] James: and your TFM supports Itza and TMS do not support that stuff. [00:37:03] Frank: Right. Right. So I've had to do see some terrible, ugly hacks in CI where I just use said, and I literally replace target frameworks with exact ones that I wanna build at the time, because it's not been good enough to do it from the command line sometimes. Um, the. The Ms. Build scripts will pick it up and freak out. And there's a weird bug where solutions that contain Amarin and net six really don't cooperate with each other. So I've had to do some very ugly hacks, uh, to avoid that kind of stuff. But, um, you're running into those problems. What, what kind of problems are you running? [00:37:44] James: No, no, no. I use like the Ms. Build extra stuff for you. You are already using Microsoft net SDK, which is Donna San two. Oh. So you can just change target framework to target frameworks and you are just living the dream. Frank living. The [00:37:59] Frank: dream. I, I like how I've completely flip flopped during this episode. I'm like, there is absolutely no reason for me to adopt net six and let's talk about all the virtues of net standard. And by the end, I'm like, you know, it's like a five, five character change. I'm just gonna put it in, whatever. Uh, again, all, all thanks to Eric sync, actually doing the hard work now. I'm gonna have to do what you're doing with the plugins, for my graphics, libraries, mm-hmm and maybe two other libraries, but, um, I've already done a lot of net six conversions, and aside from end float, it's pretty smooth. [00:38:40] James: yeah. The, uh, yes. And float. Yes. [00:38:44] Frank: Just and float. They, they, they renamed all the colors too. System background color is now called system background. I'm like, I get it. I get it. Let's all be pedantic, but you know, it was kind of, it was fine that it ended with the word color. There was [00:39:00] James: one on, on end. This was actually a fascinating one. I found the other day is there was I think on an in or end something I think on end, end. Yeah. An end. You could do a convert to 64 or N 64 or something like that on it. You just do.to N N 64. and then that extension method was removed because that was a like exam or anything. And then I was like, oh man, like where did this go? I like it's, I'm like basing coded thing or how do I do this? Yeah. It's in convert, like convert. Oh, I was like, oh, that makes sense. [00:39:34] Frank: Can you explicitly cast it? I thought they had a lot of nice casting for it. [00:39:40] James: Probably. That's scary. [00:39:42] Frank: Yeah, it is. It is. Um, and F sharp and, and is now called native and. And yeah, it's only, you know, an in native, N a I a T I V E five letters more. I don't know. I'm still a little bitter that I have to add five letters all over my code. going from an to, native's fine. It's [00:40:08] James: fine. It. Fine. All right, Frank, I made a full request to your repo to update my SQLite. Raws go get it. Did you target framework? Me too? No, I didn't target framework. You got too many new gets [00:40:24] Frank: It's true. [00:40:25] James: I think there's like more project. I think the only ones you have are these two, which is the SQL cipher and the net STD, the standard. [00:40:33] Frank: Uh, I have one more base. [00:40:36] James: Um, oh gosh. But that one does a depend. [00:40:39] Frank: Yeah, it's, it's a funny thing with SQLite. You know, I I'm gonna bore everyone with dependency hell here. oh, it's there. I see it. Um, so the normal SQLite net PCL that you all should get and use that uses raw green, raw green is a sequel light library that initializes itself and ships with a version of sequel, light seeking. You're guaranteed that raw green is gonna work everywhere that you just wanna run code. It's gonna. If you are crazy and wanna ship your own explicit version of SQL light, the native library, then you wanna use the base version of SQL light dash net, which, uh, does not have a hard dependency. And you can, you can, you can say good luck world. I'm gonna manage my own native dependencies. Don't do it. Don't do it. It's for very specific people who had very specific problems. . [00:41:35] James: I love it. I love it. Well, I just did it. Frank we're updated. Well, let us know if you're gonna update all your libraries or if you've already updated your libraries. What are you doing for down in seven? Let us know right into the podcast. Merge conflict. Do FM, there's a button there also let's see how we're doing on our apple. We only had like one day since our apple podcast. [00:41:56] Frank: Why were there three commits to change one version number? Oh, cause I have files everywhere. Sorry [00:42:01] James: James. Cause I'm doing it in the browser cuz I'm real lazy. That's cool. Love you. Also I could have just hit dot and then edited in like the, you know, code edited. But I was like, no, I'm just doing one file dime. [00:42:15] Frank: Oh, I didn't know. You could do a PR from the code editor. Oh yeah, [00:42:18] James: yeah. Open it up. You just stay right there. You code the all day, every day. [00:42:24] Frank: I have to, um, approve you for running checks. That's a new feature on the GitHub. That is a new feature too. I can't, uh, Bitcoin mine off of PRS [00:42:33] James: anymore. Nope. Not a lot. Not a lot. Do nice. [00:42:37] Frank: Well, there it is. My whole business. . [00:42:41] James: Yeah, I'm learning all about the, the workflows. And there's like, there's like, you can do environments now. You can have like a staging environment, a pro environment. So you could have a PR and then you can have a step be like an approval. So you could be like, oh, I want this to be an approval to like push to beta. And then, you know what I mean? It's kind of, yeah, crazy. I mean, I do that in getup or Azure DevOps, but they're the getup actions are really building out. I gotta do a whole new thing on that, but. [00:43:08] Frank: All I wanna know is why am I paying for Mac O S when this could build fine on Linux? That's all. That's all I wanna [00:43:15] James: know. Yeah. Or on windows. Why are you doing that? What are you doing? I'm crazy. Yeah. You're paying money. A bunch of money [00:43:22] Frank: Mac, unless you have to cost. [00:43:26] James: Cause [00:43:26] Frank: there's, um, Mac is 10 X or something. Yeah, [00:43:30] James: don't do stop that. Stop [00:43:32] Frank: that Frank. Stop it. [00:43:35] James: Uh, oh yeah. And windows is too. Does it work on Linux? [00:43:39] Frank: Yeah, I, I build all my libraries on Linux. Wow. Mm-hmm it's fast. You should, it comes up fast and it's cheap compared [00:43:48] James: to Mac. You should probably do that. Frank, go save some money. [00:43:52] Frank: uh, thank you for the patch. I will get this in. [00:43:55] James: Perfect. Super exciting. Oh, and also I kicked off. There's gotta be a feature that, yeah, I canceled your other two, right. Yeah, it did. Okay. Perfect. Okay. Anyways, thanks everyone for letting us ramble. If you made it this far, go leave us a review, click a review button down there, apple podcast, Spotify we'd like that. Um, yeah, we're trying to hit a hundred by the end of the year. That'd be great. We got zero so far this year, but let's do it. I'm ready. I'm [00:44:18] Frank: gonna beg on Twitter. That's what it's gonna take. Lot of begging. Yeah, [00:44:22] James: do it. Thanks. Thanks everyone. Well, what's gonna do for this weeks merge complex, so let's end it like we've entered. Uh, let's end it. I'm just gonna keep that in there. Let's end it like we've ended all 200 and 500 and 345 episodes. That's gonna do it for this week's podcast. So until next time, I'm James Bon, Magna, [00:44:40] Frank: and I'm Frank Kruger. Thanks for listening. Peace.