mergeconflict394 === [00:00:00] James: Welcome back everyone to another merge conflict. We got a doozy this week because we're talking about some things that we already talked about, but then one thing that we haven't talked about, we've got three topics that we're going to cover today or so. We'll see if we get sidetracked, but we've had a lot of excitement in and around the world of just what's new in NET, what's going on in the world of Java for some reason, and additionally. Are we just super excited to slap some new goggles onto our brain name cranium. So Frank, let's first and foremost talk about the 1 billion row challenge. Last time we talked about it, if you go back a few podcasts ago, you. Uh, had it working in about 18, 000 hours to process, uh, 1 billion rows of data. And I think you've come a long way and there's a lot of ongoing competition in the space still, surprisingly. I thought it would just be over, but some people are really excited about it still. So, uh, what happened since we last [00:00:57] Frank: talked? Yeah. Okay, some follow up. Here we go. Um, uh, so when we were doing the show, it was early days. Like, I hadn't seen anyone else's implementation, and I really just had mine, and we mostly talked about mine, and that was silly. But, um, some, uh, great competitors came in, um, I decided to run a little bit of a leaderboard. There were a couple leaderboards going around, uh, just seeing who could score. Everything a little bit unofficial. Most of us were just running it kind of on our dev machines and that kind of stuff, but having fun with a little bit of a leaderboard. So yeah, my baseline didn't take, what'd you say, 18 hours or whatever? That's rude. So rude of you. Um, I was able to process 13 gigabytes of data in like three minutes Something seconds. Pretty good. Something, something like that. Yeah. Pretty good. That was the baseline. I couldn't help myself and had to implement a faster, better version. And I got myself down to something like 50 seconds. Five zero seconds. Wow. And I was pretty proud of myself. I'm like, look at that, down from three minutes. That's, you know, a six X improvement. That's pretty good. Did I do that math right? Who knows? Who cares? Um, uh, and I posted it on Twitter. I was very happy. And then someone came along on Twitter and said, that's nothing. I am so much faster than you. Um, so, Victor, um, I'm not sure how to say your last name, but I'm going to go with your username, Bybackoff, Victor Bybackoff, with an amazing speed. I forgot what I first measured it at, but, um, the current version I'm measuring is 2. 69 seconds. to parse 13 gigabytes of data. I forget what that speed is, but that's, that's around, I mean, what, it's, it's 13 divided by three, [00:03:00] James: whatever. Yeah, that's pretty good. Fuck it. [00:03:05] Frank: Um, couldn't be outdone myself. My 5. 0 second one, uh, was single threaded. And we talked about on the podcast, I said, I'm going to do the algorithm itself faster, and then I'll make it multi threaded. And so on the Twitch show, I couldn't help myself, had to make the multi threaded version, got myself down to three seconds. And then after the Twitch show, couldn't help myself a little bit more and got down to 2. 68, 2. 67 ish seconds on my computer. And. I kind of took first place on my computer between all the algorithms. And I was pretty proud of that. I feel a little janky winning by 10 milliseconds, but I'm going to take it because it was a reliable 10 milliseconds that I could win by. [00:03:58] James: Yeah. And I think since then. On Twitter, at least what I've seen is a bunch of other people that have been spiking different things and contributing still, but doing it on their own machines and rerunning stuff. And who knows, I think someone got it down to like a second or something like that back on the Java one. You know, if you looked at what you were running it on versus what they were running it on, it's, you know, quite very different machines. So all of these numbers and things are based on the machines that you're running and, and, and different means and things like that, they, at least they like you standardize that they standardize and other people and trying to standardize it. So it's been fun to see what they got it down to. And they got it down to about 2. 5 seconds or so, which is kind of in line, you know, kind of, kind of cool. It is, [00:04:45] Frank: and it's fun to think like, oh well, that is kind of cool. I can process that much data in a very short amount of time. I would never want to write real code that looks exactly like this, though. This is basically the old kind of C code I used to write as a kid. That's why I fall into it naturally, but this is not the kind of code I want to write on a day to day basis. But it's fun. And, and we've all gotten to the point in our code where we're basically machine dependent, like some people are using AVX instructions and that only works on some machines. So you can write NET code that is not cross platform, that only runs on certain machines. And that's totally doable. Um, I, I, I think I'm keep the code. Where I kind of left it. Nice cross platform, simple, but we're all basically at the mercy of the machines. Like my, my machine has a faster memory bus than the official test machine. So my results are just a little bit faster. I have more cores than the official test machine. So it's faster. It's a whole different operating system. The memory managers can be completely different. So it's hard to compare these things, except for on one exact [00:05:54] James: machine. Yeah, but it's cool. I mean, if you look at yours, it's like under a hundred lines of code. That's pretty impressive. I would say overall, not bad. [00:06:04] Frank: Yeah. And it's, again, it was a very simple problem. It was aggregate a bunch of rows in a CSV file, basically. And, you know, if it was more than a hundred rows, I'd be embarrassed as a programmer. Like it's even that number of rows, it's only that long because like you don't use any. numerical string parsing, you write the string parsing yourself. And so that's, therefore, it's a little bit longer. Like, I think the baseline of it is only like 20 ish lines of code. [00:06:39] James: Not bad. I mean, it's a fun experiment. It's fun to see. I'm glad that a bunch of people in the community and other communities, I think I saw one for Russ and I, you know, I saw this other stuff. So it's cool that, you know, you know, I'm not going to say that we spearheaded the NET initiative over here on merge conflict, but we may have pumped it on X quite, quite good. Uh, and I'm glad other people picked it up and ran with it. So it's kind of cool to see all these things, but here's the thing is to me, it's. Yeah. There's a lot of people that like mix it like, Oh, it's this language versus that language. That this now is about, I was not always about at all. You know what I mean? It's about a fun little challenge that we all have to see what kind of code, what kind of crazy code we can write. And even if at the end of the day, it's code that you never want to write again, because it's like, this is that type of code that is crazy optimized, but like not fun to write. I'm not going to run a whole thing like this, but it is cool to see it like get down to a certain level. So I'm glad that. You know, people picked it up and kind of went with it. [00:07:36] Frank: I just have to say, I agree with you. I was not at all interested in the Java versus NET, the C sharp versus F sharp. I didn't want to engage in that kind of stuff at all. Uh, if you listen to me on the episode, it was always a competition against myself. It's how fast can I make the code, um, versus. My, you know, my baseline version, I still haven't read anyone else's code. I'm very proud of the fact that I ran a bunch of people's code on my machine and was able to run it without even looking at their code and get everything set up. So I still haven't even, what I call cheated and looked at how other people have done things. Uh, it's still fun. It's still a challenge for myself. And if I'm, if I get in the mood, I'll try to beat my record, but I'm not really interested in beating other people's records. [00:08:24] James: Yeah. No, it was fun. It's fun to see what people did, but yeah, I agree. It's like a fun little activity. Uh, I'm glad that, that it picked up and you know, who knows where it'll go. I mean, if, you know, if you see other things out there, you know, uh, listeners of the show, let us know. Cause Frank loves a challenge. Not me. I don't got time for this. I have no idea. I do. I don't want zero desires. [00:08:44] Frank: We should acknowledge there are programming competitions out there. Like, there are things you can enter and do all this kind of stuff. Um, it's just kind of funny that it's like the professionals do that, and this was like the amateurs playing. Like, you know, just everyone are like, let's all do a programming competition, even though we normally would never devote the time to programming competitions. Because, yes, it's good to sharpen your sword, but you don't need to sharpen your sword every day. It's, it's a bit [00:09:10] James: much. That's pretty good. Well, any lessons learned besides just moving to multi threadedness? Like any big takeaways of things that you did like, you're like, Oh, I actually wrote a version like this would be something I could use and take back to my actual code of some sort, maybe tweak some optimizations that you found. Uh, [00:09:30] Frank: well, one more time, NET Trace was just a fantastic tool. So I love that that's built into NET now or something, whatever you get that. NET Trace yourself, and it's absolutely wonderful that you can do that with any kind of program. Um, hey, micro optimization is still here to stay. It's fantastic. Like, instead of calling int parse, if I just You were, I think, making fun of me, I was floating, I was storing my numbers as floating point, double precision, 64 bit floating point numbers. And you're like, Frank, do they really need to be 64 bit? Obviously not. Um, I went really drastic though, and I actually used fixed point arithmetic, and that bought me a lot. That's what got me down from 3. 30 seconds down to the 2. 7s ish. Oh wow. So just going from double precision math to fixed point integer math got me a lot. Um, garbage collector does get in the way when you're trying to parse 13 gigabytes of data, go figure. You don't want to be allocating, um, you know, a billion rows. It's, it's just a little too much pressure to put on garbage collector. So I stuck with, um, um, struct objects for most things, most things. Uh, Dictionary, Dictionary, Stupid System Collections Generic Dictionary is the fastest data structure on the planet. I do not know what evil tricks they play in the jet. James, I hand wrote, cause I was convinced, absolutely convinced I could make this thing faster looking at the profiles. Thank you, Dr. Chris. Looking at the profiles, I was like, I can make this faster if I eliminate a couple calls to the dictionary. I will handcraft my own binary tree and I will, I will walk the binary tree as I'm reading data in the file and it's going to be so fast. It's going to walk and it's going to, it's going to have, it's going to have the answer just as it hits the last byte. It's going to be Gorgeous. I coded all that up twice as slow as Dictionary. Dictionary, try to get that Dictionary insert. Oh, that stupid Dictionary is so fast. So, um, if you ever are blaming Dictionary for your performance problems, you're wrong. That thing is so fast. That's great. That's awesome. Yeah. Yeah, those were the big ones. And then obviously multi threading is what really it's, you want to flood the IO bus with requests and you need lots of processors to flood it with requests. [00:12:11] James: If you got the processors, use them all. I say, not many things do. [00:12:18] Frank: All the top scoring ones immediately, you know, I have, my computer advertises 20 processors, so I immediately spike to 2000%. It's hilarious. [00:12:29] James: Let it purr. Um, talking about things, uh, purring, um. Well, you have a cap, but not talking about your cap, but let's talk about the Apple Vision Pro. Cause we maybe have pre ordered one this pot. We, and we record on Tuesday days before it comes out. I am torn. I'm torn all over the place. Now, Frank, they have started. You can venture to an Apple store and they will give you the hour long tour of the Apple Vision Pro. Have you read about the process in store demo? Have you heard about it? [00:13:02] Frank: I, I, I heard about it, like, I think a few people, they were demoing it a few months ago, and I think I had read a blog or something about it, um, but no, nothing recent, so, uh, I'm a little bit nervous because I really do want the eyeglass corrective one, and I heard that you have to go to a store for that, but I'm totally not going to go to the store, uh, especially now that it's after I've hopefully ordered it, um, Yeah. Uh, no, please, please go on. [00:13:29] James: So you can demo it in store and try it out today. You can go in, do it now. I don't know. I think they said that like 10 to 15 units per store or something like that, which is not that many. Now, the fascinating part is that you have to like install the app. I think it's just the app store app or whatever, not the app store app, but the Apple store app, and you have to do a 3d scan of your face to demo the device. And the reason that, and you'll have to do it to buy it as well. And that is because they're matching your face in your head with the specific strap that they'll actually bundle it. So if you end up buying it online or in the store, there's this range. Of like all of these straps and they hand, like, I don't know what the box is going to look like, but I'm imagining it's like, everything's the same, except for like, here's where here's a person has put like a physical person is going to pick out the strap and then put it down for you into yours signed by. You know, John, you know, for Frank and like a handwritten note. What [00:14:39] Frank: is this product? [00:14:41] James: So now that's just like, that's like a, it's like a 10 to 15 minute process. And then they give you a 20 minute demo in store. They have to explain it to you to do stuff. Uh, and that's per person. Uh, in general, I was thinking also if I get an Apple vision pro. Can Heather use my Apple Vision Pro? Like is her head the exact same size as my head? Like, will it make a difference? [00:15:05] Frank: I'm gonna say all of this is just the icing on the cake, cause you know what it is, it's light leakage, um, it's gonna be, do you have the cheekbones to support it, or do you need a high strap or a low strap, everyone's face is shaped differently, and it's gonna be how much light gets in between the edges, so, I would say 100%, She could, but she's going to get a degraded experience compared [00:15:32] James: to yours. Yeah. They, so it's the strap and then it's also, you're right. The eye suction, the things that make sense. Um, yeah, we've been debating, like I asked her, like, should I get it? I don't know. I'm like, I'm not interested. I'm like, I'm not really interested either, but I feel like if Frank gets one. I need to get one and I don't know, you know what I mean? So we're hosting [00:15:52] Frank: the show in VR from now on. It's, I thought that was the deal, the little blood pact we had made. [00:15:58] James: We could, I don't know. I'm not sure. Okay. So there are some reports people have done it and gadget has a nice write up on it. Um, so both, uh, uh, Cher Lynn and Dana went to go see it now really fast. And now I'll give you a TLDR on this puppy, but they, they broke down, uh, fit and comfort of the straps, Apple immersion. Uh, Immersive Video and Spatial Videos, the Disney Plus App, Typing Experience with the Virtual Keyboard, Frank Krueger, uh, Meditation, Encountering Dinosaurs, and then Final ish Thoughts. Now, I thought there wasn't going to be a virtual keyboard, but I guess there has to be one, right? Oh, oh, there [00:16:35] Frank: is, there is, and it looks. Funny. Yeah. Apple finally built a 3D keyboard and it looks Have you ever used the typewriter that had the circular buttons on them? It looks like old typewriter buttons to my eye. [00:16:53] James: I know exactly what you mean. Yes. That's what I learned to type on. So I'll be right at home. Perfect. Okay. Good. I did. I did see a picture of it. Now I will say this, the review of the keyboard, it's pretty good. They're surprised. They're like, wow, way better than we thought. Now, talking about the strap and the fit, That was fascinating because it seems even though I did the whole scan, there was tweaking involved. There was tweaking involved. And additionally, uh, Dana, I'm pretty sure it was Dana on here. Oh, and Cher, they both got rid of the one strap and they went to the dual, dual loop band. They, uh, Dana said, after 10 minutes. The single loop hurt her head. It hurt. It was like too, too heavy. And they even adjusted it and everything. And then they put the dual loop band on and she was like, awesome. So every heads different, right? Different hair, different things. And again, what's fascinating is you have long hair now. What happens if you cut your hair? [00:17:57] Frank: Got to change your loops? I guess I am concerned. I am curious what the ratio is going to be in the end. Like, is this Apple trying to like push their cool single loop one. Cause it looks cooler, but is less effective than just two, two big straps strapping you in. [00:18:13] James: I think so. I think so. Um, besides that, they said everything was pretty good. Said Apple, Disney plus good typing. Good. Um, countering dinosaurs. Cool. Basically, here's what they said. They said it's the best VR, AR, MR headset. That's not an VR, AR headset that they ever tried pretty much for all intents and purposes. And it's very expensive. That was pretty much their, their overall review, which I think aligns with what we thought it to be. Um, but they, you know, they said it was mind blowing, mind blowing experience to quote, share here. And, uh, [00:18:53] Frank: But are they using it to spatially compute, you know, that, that, that's the thing, like if it's just another video game device, I'm going to be disappointed if I can find a way to actually do some spatial computing. Um, I'm, I'm going to be happy and I think it's all going to hinge on that, which I honestly think it's going to hinge on app developers because Apple hasn't shown an app yet, but, um, keep saying it sound like a broken record, but I haven't still haven't seen the killer app for [00:19:21] James: it. Yeah, and they did officially launched the app store and I did read a blog somewhere. We were complaining and not too long ago that. We didn't see, yeah, exactly. So they did announce a bunch of stuff for them. Um, I can't find it anymore, but basically there's going to be some apps, you know, I think it's even on the thing. So it's out there. There's going to be apps, apps will be in the store and. There we go. Let's see, iMore I think has them. So they're out there. There's going to be some stuff. More than what we saw, at least the, the, the, the deal. I don't know. I have a few days to determine what I want to do. And I'm really not sure, Frank. I'm really not sure. Well, no, you, you [00:20:10] Frank: had a couple of days, a couple of days ago. So you made a decision and I just hope it was the right one. Um, I I'm definitely putting an order in. Um, maybe I'll return it. Probably not, hopefully. Um, because I definitely want to try. I've, I've written four really bad apps for it, and I really want to see what they look like inside of it. And it's, we were mentioning in the last episode, like, how do you release an app before testing on hardware? And I'm kind of like, I can't. [00:20:43] James: I, I don't think I'm gonna have, can't do it in a soul . [00:20:46] Frank: Yeah. I, I don't think I'm gonna have any day one apps, so my, my goal is to buy it and have week one apps or week two apps kind of [00:20:55] James: thing. Yeah. Yeah. Well, we'll find out. You'll find out soon. You know, I will, if I, [00:21:02] Frank: um, do, I, I gotta say. I'm disappointed by the whole store experience. Like a product that needs someone to personalize it for you is not a great product. I want the impersonal experience. I want the brown box to arrive at my door. That's what I like in a [00:21:18] James: product. Do you think I should live stream my purchasing experience? Like actually buying it? [00:21:25] Frank: Thing. I think you should, I think you're gonna be swamped with YouTubers already doing that in your store. But [00:21:30] James: yeah, all I'm gonna do, I'm, oh man, I guess I gotta do it. I got, I get my business credit card ready. [00:21:38] Frank: Oh my God. I, I should actually make sure all my Apple accounts are right. . Yeah. I hate these, I hate these morning things. I installed [00:21:46] James: the, I I already did it though. I installed the Apple App Store app. That's what you have to install. I wish that they would let you, that the fuck. Yeah. There's a button to pre order, but then it's like, just get the latest version. I wish that they would let me pre, pre do my face. [00:22:07] Frank: Yeah. And I've always had bad luck with their apps. I don't know if it's because I'm an. App developer and I always click the wrong thing. I'm bad at UIs or I'm just too silly with UIs, but I always run into bugs in their apps, so I'm hoping for the best experience. [00:22:24] James: I guess I gotta, I guess I have to, I have to go in and change my. Payment system, because it's probably not my business ones. It's probably a different one. [00:22:41] Frank: You don't want to be typing in at five in the morning or whenever we have, whenever we [00:22:45] James: did this. Well, [00:22:50] Frank: I don't know. It's, it's also a little bit fun. Um. The spending the money isn't fun, but the whole waking up at 5 a. m. and trying to get it and then realizing the entire internet is getting it two weeks before you, because you're not fast at clicking buttons as everyone else. Yeah, it's still kind of fun. [00:23:10] James: It'll be fun. All right. 5 a. m. Let's do this. All right. Last topic over here, the importance of source control, Frank Krueger, and I want to tell a story about how. Everyone should use source control, just, you should just use it. And it's very important. [00:23:30] Frank: Did you delete some files? That sounds like, no, no, [00:23:34] James: no, no, no. This is a success story, Frank. This is a, this is a coming of age, Dale. Anyways, I've been migrating my apps, as you know, to the Maui of NET and in the process, you know, going through some stuff and, and I do that all in a branch. Inside of source control, inside of Git, it's very important. And what's cool is that I will be migrating my source control over to GitHub actions and GitHub actions can also work via branches. That's kind of cool. So it's not like I'm messing up my GitHub repository with a bunch of stuff because I'm implementing, you know, in my main. Nothing, it says if nothing has changed in a year. In fact, there has been no commits to my skiing app for like a year plus since last ski season. Hasn't been no, nothing happens in the summer? No skiing happening. Don't need to do anything. Sits in the store, hangs out. And um, the there's actually a really cool company out there. It's called Nordic pulse the North of Canada. And what they do is they. Are a SAS for cross country ski, um, places and to do grooming reports. So grooming is where they make the lines and they like spread it all out. So they do GPS grooming. So they load up the GPX maps and all this stuff, and then they give you real time grooming reports. Super cool. Great place here that I built the app for. Started using them last year, which means I could integrate these basically real time reporting via their API, which has Jason Blazes great. Cause this year they changed the API cause you're like two other businesses, it's time for a new API. Yep. few things changed the app somehow didn't crash. Cause man, I'm a great coder. Even though the scheme all changed on MEP. Amazing. Thank you. And, uh, And I was like, okay. It's still basically there, but some of the, like all the numbers of the percentage groomed are like zero and they're not getting reports anymore. I was like, ah, you know, it just started grooming. So we just got snow and contacted Steve and Steve got back to me and blah, blah, blah, blah, God and his company. And I'm like, all right, well. I guess I got to update the app. I know what I'm doing. It snowed 18 inches here on Saturday. So I'm like, I guess what I know I'm doing on Saturday is just can't ski. So I'm going to just work on the app. So few, few things haven't touched SAP in a year and several months. And, uh, a few things have changed. So one is. I could no longer release an app update based on the current source code because app or Google requires you to build against a later version, a newer version of the Android SDK. Of course, of course. Can't submit an update. You were too old. Apple, Apple probably would have been okay with it, but who knows what the Xcode requirements are. Should probably bring it up to speed. By up to speed, do [00:26:35] Frank: you mean, um, is this a Xamarin. Forms app or a MAUI app? [00:26:39] James: It is a Xamarin. Forms, well, Xamarin. Forms and a branch for NET MAUI. Right, right. Back to the branch. Back to the branch. Um, and you know, that's all just UI changes, a few other things changes. So surprisingly, there's not a lot of changes to the code. Very minimal UI changes, very minimal source code changes, not a big deal. So, so even though. To bring the stuff that I would change in this mainline branch in Xamarin, like, cause I'm not done with the Maui migration, right? There's a lot of testing. I need to do other stuff. I'm not ready. Right. And I know I'm like, I'm not ready yet. Now it's, it's double edged sword though, because while the Maui conversions much further along, I know that whatever's in the mainline in Xamarin. Forms world. It's still supported till May, technically, and additionally, I know it works and it's good and it's if I can get it to build, it'll be good to go. Still opens up in Visual Studio 2022. I'm a happy camper, bingo bango, and I know it's like close and I know the code base. Boom, the problem is. Man, a year and three months ago, I was using like all sorts of different in app billing stuff. I was using MapSUI, which is like their beta versions. And like, I'm like, all right, step one, can I just compile it as is? And the answer is. Yes, but also no, because of Android's new requirements, I have to update the version and then I have to update NuGet packages that are then compiled against that. And it's like. Ah, bummer town. You know what I mean? And it's a, it's a slippery slope because once you target 13, you also have to update the billing library at the same time, because they don't allow you to do that. So it's like, I have to upgrade billing and I have to upgrade the version number. And then at that point, I'm like, I might as well update every new get inside this. So Frank, I update every single new No, no, all of 'em. No, like let's do it. [00:28:36] Frank: That's the burnt Earth strategy. [00:28:38] James: I say, I'm like, let's do it. Burnt earth. I'm like, let's go, let's go. Um, so I, I I scorch earth and I'm totally good to go. Scorch earth. Yeah. . I scorch it. And um, there's only surprisingly the map sui team. Did really great. I was in a early beta and it's been like two years since that. I was able to integrate all API. Very minimal. It's cross platform maps in like 20 minutes. Like, they just moved a few things around. Got it all. Bingo, bango, boom. I'm going to town. Bam, bam, bam. Get all the stuff in. [00:29:12] Frank: I'm sorry, I just got a little, you're updating their user interface. So were you updating from Xamarin. Forms to MAUI or just updating the MAUI one? [00:29:23] James: Just Xamarin. Forms. No, we're not touching the MAUI stuff. We're not ready. No, no, not ready. No, not ready. I was not ready. All right, I got time. So they had [00:29:31] Frank: some breaking changes themselves. [00:29:32] James: Got it. Okay. NET MAUI stays in the NET MAUI branch. There's a new branch off of Maine, off of Xamarin. Forms, which is 2024 season. [00:29:41] Frank: I was going to say, it's called, it's, it's Maine 2, Maine underscore final. [00:29:47] James: Yeah, exactly. Underscore 2024. Um, And so much, I actually have like, like grooming. cs, which is like all the grooming reports and I have grooming 2024, so I could like have them side by side for the JSON deserialization, oh my gosh. It's, [00:30:02] Frank: it's, okay, look, you're making a joke, but this is, um, uh, advice I got from, now, I, John Carmack used to say this, but, um, I already totally forgot the advice. No, when you're replacing a system, keep the old system running. For as long as you can, while you add the new system, don't delete the old system. Try to get them running side by side. And then when the new system is working, then you can delete the old system. It sounds obvious when I say it like that, but you'd be surprised how many times I've had to catch myself. Don't delete the old one, Frank, until the new one is working. And it's good advice. Everyone follow it. [00:30:41] James: Put in a branch. I'm serious. So I'm like, all right, this is a great. So I get it all in, up and running. I head over to my good friend app center, good old app center. Just hanging out, just hanging out, ready for Xamarin Forms applications. It's ready. And sure enough, all the latest X codes are there. All the latest Android SDKs are there. Bingo, bango, getting it up. And what do you know? Within four hours, Frank, I got new apps. I got new apps in the app store. Of course, the next day after I got new versions, I got new, new versions. Cause I was like, oh, there's more things I could change. I don't know. So anyways. It's all up there. I got it all working. I'm very excited. So this is the importance of source control, my friends is now I will be able to take from main, put it into my Maui branch, figure out all the, because I figured out the naming stuff and how the stuff works, be able to easily merge back that stuff is very minimal changes, but I didn't have to, for all intents and purposes. Do something I wasn't uncomfortable with, right? I wasn't, I wasn't quite ready for it, right? And the great part now, maybe I never even have to worry about it for another year and a half. Yeah. Two years, who knows? [00:31:52] Frank: Um, I, I think like, um, the way I use Git as a single person dev team mostly, like it's, it's so simple. I very rarely have to deal with any kind of merges or anything. But even with a single person dev team, you definitely get into the case where you're working on version 1. 6, but then you want to do a little patch to your current running one. 1. 6 isn't ready to be released yet, but you still need to release and update. And I think that's, I think that's like the most common problem everyone runs into with version systems and that's when you. That's when you create your patch branch, and that's when you realize, oh dang, now I gotta decide if I wanna merge that into the 1. 6, or if I wanna rebase the 1. 6 and rewrite history, do bad things like that. Um, I'm, I'm happy you had good Git, uh, Git success, but that, that is still, and I know everyone who's good at Git, you're all screaming, no it's easy, here are the six commands to run. But you know, it's, it's, It's still scary when you're, when you're having to do those patch updates off of your like current real dev branch. [00:33:04] James: I don't know. No, that's true. Yeah. I mean, main is always, main is always shipping, but then that also creates its own complications at the same time. Um, but you know, you have that history in there. What I've done before is I've, you know. Um, done things in, in branches and I've shipped off of a branch. I'm like, okay, like, do I want to move to the center? Do I want to just, yeah, basically like you said, like take the changes and then re implement it in the new branch and just have like the browser open over here. Look at my changes. Look at the new branch, how far along things are. But luckily you have those, those changes all along and it's good. And I was pretty happy that the longest, the thing that took me the longest, Frank, new Apple certs, man, the process has not changed. Doesn't get better. Doesn't get better. It [00:33:47] Frank: hasn't, like, all these years. Okay, I mean, okay. Won't change. Ever. Oh, it's funny, um, I look forward to it every year because I do, um, three big CI CD builds in GitHub, Continuous, Kalka, and iCircuit. And every year, the stupid certificate expires and all the builds fail. Yeah. And it's just I know it doesn't sound like a lot, but man, it's tiring. Why can't they give us like five year certs, please? Apple five year certs. I know [00:34:19] James: I can, I'll buy, I'll get, give me two years. I'll give you 200 instead of a hundred dollars. How about that? That's a deal. That's a steal. I want [00:34:27] Frank: the six pack of years. Okay. I want six years in my throat of free [00:34:31] James: wood. So yeah, buy six, get wood free. All right. Well, that's going to do it for this week's Merge Conflict. Frank, three topics, 35 minutes. What'd you think? Was it okay? I don't know. And now you're wearing your Apple, if you're watching us on YouTube, he's got an Apple vision pro on, oh my gosh. Well, I think that's [00:34:47] Frank: the tricky thing. We we've really talked up this Apple vision pro, um, this thing either be the greatest device ever, or it better be the biggest stud and ever. So we can just make fun of it for a month. [00:34:59] James: Well, between the two of us, we'll spend more money on this single device combined than. The amount of money we've ever made on this pod. [00:35:09] Frank: Well, when you put it that way, James, happy, happy Apple day to you too. [00:35:15] James: Uh, not to mention for our exclusive Patreon subscribers, uh, you can go to patreon. com forward slash emergency conflict. fm. There's a link in the show notes. You can actually hear Frank's dilemma if he not only wants to spend the 3, 500, but does he want to spend an additional 4, 300 on a brand new. Apple Developer Setup. The Apple is, well, I, you know, last week's episode, I call it the Apple Vision Pro Developer Dilemma, not only for all the things we talked about, but also for the developer rig setup and it creeps in. This is the year of you giving Apple all the money, Frank. Wow. Oh, [00:35:49] Frank: it's, it's just, it's feels like. Prison? I don't know. It's like I'm paying bail. [00:35:56] James: I need to get out. I need to get my app in the store. I'll cut it. Don't worry, Frank. No, I won't. I don't cut anything for this podcast. All right. That's going to do it for this week's on that note. That's going to do it for this week's podcast. Um, so I hope that you enjoyed it. You can go over to, uh, X. You follow us there. Uh, you can follow the show on YouTube. You know, see us, it's just us talking to each other. I've gotten so lazy that I don't even make thumbnails anymore. It's just me or Frank looking at the thing. Um, that's it. Yeah, pretty much. And that's going to leave comments there as well. We like that. Uh, yeah, we might use that channel later on if we want to do little things here and there. Maybe that's where I'll live stream trying to buy the Apple vision pro. That'd be kind of cool. Ooh, yeah. Oh, we could do a stream. We both hop on, uh, well, yeah, that's what we'll do. 5 AM. I don't trust my [00:36:48] Frank: internet, so you're gonna, you're gonna have to take the live stream. I'm just going to focus on ordering and then I'll [00:36:54] James: join you afterwards. Frank Tracy will be able to. All right, well, um. Hit us up at all those places. Uh, we appreciate you share it with friend. If you like this podcast, it helps out the show, like, and subscribe to all things. So that's going to do it. So until next time, I'm James Montemagno [00:37:09] Frank: and I'm Frank Krueger. Thank you for watching and listening. Peace.