mergeconflict246 James: [00:00:00] Frank. There's one thing that we love to do, and that is create desktop applications. Me and you together. It's true. Frank: [00:00:16] Oh, Oh. Are, are we losing our cred as mobile developers, but it's, I I've been making desktop apps forever. I I'm a mobile developer by day job, desktop developer by night. Does that work? James: [00:00:28] What is a mobile developer, if not a desktop developer on a device that goes with you like a laptop? Frank: [00:00:34] Um, you know, I was going to say the best that's top device I've bought recently was a laptop. So, you know, just saying, James: [00:00:40] Oh my goodness, uh, Frank, I totally sent back my DTK. Uh, and ah, did I get my credit? Did you send yours in? This is totally, we weren't even going to talk about this today, people, but let's just detract for one second. Did you get your credit? It had happened. Is it going. Frank: [00:00:56] No, because I'm a lazy bomb. I printed out the mailing label the very day the email came and it's been sitting on my counter. There's a pandemic. I don't go outside. James: [00:01:06] You got to do it. Frank, you only have 15 days from right now to get it done or else you're going to lose your, all of your apps will be delisted. Frank: [00:01:17] Oh, okay. You just made it real. I guess I'm going to the post office tomorrow morning. Oh my James: [00:01:22] goodness. Um, I'm going to see it's Oh, I got it. Apply promo code $501. They gave me an extra dollar Frank. Frank: [00:01:30] Oh, that's okay. That's a weird tax thing. I don't know. That's awesome. Did you say on Arab, what you're going to spend all your Apple money on? James: [00:01:38] I don't know. I think a Mac book, Mac book, air. I think that's what I'm going to do. It's awesome. I think so. I think that's what I'm going to do. I mean, the thing is you could just get an Apple Mac mini, but that just don't have anywhere to put in or have any monitors plug it into. And there's not one to, I think the Mac book I'll actually use because I have the old Mac book 2013 and that's just going to go caputs pretty soon. So, uh, I think that's what I'm going to do. I don't think I'm going to max it out quite to your level. I want to keep it in the realm that I'm not spending too too much, but I did turn it in. I got my credit. You have to go back to the same page. That you got earlier. It's quite weird. So, but that's what I'm going to do. That's what I'm going to do. Frank: [00:02:20] Yeah. Uh, and I should say my laptop has been in clamshell mode pretty much the entire time I've owned it, but I'm sure I will be traveling once again and actually need a mobile computer. So if you want to just get the mini, if you're listening, just go get the mini. James: [00:02:36] That's fine. Yeah, that's what I was thinking about. Uh, all right. Um, we both make desktop applications. They are mobile applications. In fact, half of the time now mobile applications will just be the application on a desktop, because with, with Matt catalyst shipping with dotnet six Frank. Frank: [00:02:53] Right dot six, preview two. Can you believe I still haven't installed it, but yeah, this is a version that has catalyst support. Is there IDE support for ther campy IDE support for it? This is like command line stuff. James: [00:03:07] Everything has command line. I just did a video today on my YouTube, um, as of day recording, which is, um, walking through dotnet Maui and both iOS and Android on.net. Six preview too. So I walked through it. I was only did it on windows, but there is support from visual studio, at least on windows and Mac to do iOS and Android on Don at six, but not Don and Maui yet. And in there is vs code support for Android, but not iOS yet. And then everything else has command line. So basically what I'm saying, Frank is. Everything is command line. Frank: [00:03:44] Yeah, I was imagining so, um, I'm still excited though, because this release also has support. I don't know how thorough that support is, but I can't wait to find out because, uh, I think I've complained in the past. Um, the Rosetta going through a jet can be a little bit slow. I love you, Rosetta too. You are amazing, but you're a little bit slow wouldn't do on both of those things. So I'm excited to get some M one versions of dotnet James: [00:04:13] totally, I'm excited to bundle up some of my iOS applications into, to catalyst upgraded on and Maui. I'm really thinking that, um, You know, my, my cadence will be a great, great way of doing it. A lot of people plug their, their laptops into their TVs to do exercising. I think Island tracker will be good, um, to put over. I think those will be really, really great. I mean, I'm excited just to kind of see how it goes going forward, but you know, the one part of this, you know, desktop application of applications, um, and just building desktop applications in these. Sandbox is if you will, because when you think of UWP or even Mac apps that you put into the app store, they're sandbox to some extent, you know, and just like Apple and Google have put restrictions on apps that you put on your phone, both, you know, Microsoft and Apple for, to certain extents have put a little bit more limitations on the desktop applications. They want their desktops to be super performance. And I know one issue that I ran into on both. Windows and on Mac, um, in this sandbox mode was, um, with my stream timer, you know, my stream timer is an app that just counts down and writes to desk. But the biggest issue I ran into was that when the user starts the countdown or count up, it will set off a bunch of processes that will be running and counting down and starting every second, writing a file to disk. But if the user. Puts the application into the background, like into the background of an application, like behind applications or minimizes it, the operating system suspends the application, Frank. Um, so what I had to do in the most recent version is kind of to the maximum stent I could disable minimization on windows. I just, you can't on Mac. You can, um, and then. Also on Mac. I can make it above like go above everything. And I think I did that on, I don't know. Did I even do that on windows? Everything is different and everything is really complicated, basically is what I've, what I've found. Um, and on windows I use this extended execution model. It's basically, they don't want you to do what I'm doing, but I want to do it Frank. Frank: [00:06:37] Right. And you know, of all that apps, you've written James, this is the app I use constantly every week. Every time I do I, my Twitch stream, I'm using, uh, my stream timer. Okay. And this has gotta be the worst part of the app is how the app, it was always in the foreground because of some weird technical reason. You know, it's a weird technical reason. It's always in the foreground. Uh, You know, and I remember when you released that. And I remember thinking back to a tepee WDC years and years ago, but it was all cloudy and foggy, but I remember Apple being very proud of how much the kernel. Is now going to start these scheduling apps and this isn't just sandbox apps. This is any old app that just happens to be not updating its UI and just kind of chilling in the background. They're doing a background task basically. And. They are super aggressive about it. Now you were getting suspended. You said I wasn't witnessing that, but I bro an app to train neural networks and that takes a while and it was like, the app would be doing great. And then I would start, you know, like reading Twitter or something and I would notice it slow down and then I would click on it and it would speed up again. And then it would slow down again and I'm like, what in the world is going on? And then I remembered back to WWDC and thinking, Oh my goodness, they are deep powering me and feeling very betrayed. James: [00:08:19] Yeah. Th that I didn't experience that, but I, I, I did experience, I experienced a pause, basically the application would just pause. It would go. In the back and it wouldn't slow down a wind speed up, but, you know, OBS is sitting there reading this file and it would just not update. And then I would bring it to the foreground and it would update right away. And of course it saves everything. So it's not terminating the app or memory. It's just stopping long running processes from doing it. And, and, and I mean, to be honest with you, This makes sense, because, you know, if someone minimizes an application, you don't want it to be hogging up the Ram and doing a bunch of stuff, right. When I minimize edge or Chrome or Safari, I wanted to do away with a memory, get, you know, and, and, and purge where possible, where it possibly can. And when I bring it back up, it should be delightful. Um, you know, even though I have 64. Gigs of Ram. It should be, you know, I don't, I don't want it to use everything. And, uh, and, and the system is good. In fact, right now, if you bring up at least on windows, you can bring up, um, the process manager, everyone's favorite task manager. And if, as you scroll down, you'll just see a bunch of things suspended, just suspended, suspended, suspended, and that's how I found it is like I would open my stream timer and then I'd minimize it. And then I'd see this little green little. Come on up and I'm like, huh? What's that mean? Huh? Huh. And it says this UWP process group is suspending processes to improve system performance when you hover over it. And I didn't have this problem when it was WPF because WPF, this is whatever I want, Frank. It just says, wow, is it whatever, you know what I mean? But UWP being this great app model and a lot of benefits that come with it starts to enforce this a little bit more. Frank: [00:10:16] Yeah. If you had poked me, I would have said it was somewhere around like snow leopard or lion when all these power considerations came in. And for good reason, like you said, this is a good thing because on laptops that's, what's giving us our battery life on laptops is that everything gets the scheduled. And that's just how I think of it because. I hooked up, um, X codes, instruments, performance, profiler to it eventually, and I would just watch it and you could see there's all my background threads burning away, using up all that wonderful leaf energy that you have. And then they would just stop. And then they would pulse for one second and then stop pulse for one second and then stop. And that was the operating system basically just saying, Nope, I'm not going to schedule you right now because I'm saving power and it's not even, yeah, that's crazy. Huh? It's not even just the re it's, it's mostly a CPU thing, I think. And I think it's going to happen even more with the M ones, especially where you have the high performance cores and a low performance cores. So I'm sure the operating system is going to be switching you around between the speedy ones and the Slowey James: [00:11:25] ones. That, that makes sense. Yeah. And, and, you know, as time has gone on, I think you've seen this a lot with, with iOS too, right? The benefit of iOS is that when somebody clicks the home button or swipes up to put your app into the background, mentally, it's a different model. You are, you have been trained in the world of mobile app development to understand that. Pretty much everything stops at that point, because if you're running animations, if you're processing stuff as yeah. And you're good. Right. Um, and if you're going to do long running processes, there's been an API built in to, to Android and iOS and even windows to do long running processes. For example, let's say you're going to upload a file or upload a video there's background worker processes. That can be smart. And they're so good nowadays, by the way, especially. The the, the Google one is really good on Android. The background, uh, job scheduler work, work manager. There's like eight they've, they've changed it like 20 times, but you can say, you know, run this process when they're, it's plugged into power and it's on a wifi and it has above 50% battery and it'll figure out all the bits and pieces and let you run as much, or as little as, as it needs you to. Um, in, in that, in that, in that vein, however, you know, that while is a great API. When I started development 10 years ago, Frank, back in my day, you could just set up a service worker and you can just do whatever you want on Android. Does that go to town, just do as much processing as you want, and that's what apps did. And then your phone's got slow. iOS I think was always pretty clamped down, right from the very beginning. Frank: [00:13:11] Yeah. They flat out did not allow background tasks until. I can't even remember I was size six. Is that it wasn't that late after two? I don't know. It's been so long. I realized brainstorm stuff. James: [00:13:25] Yes. For iPhone, for maybe 3g. Frank: [00:13:28] Like it was, it was three or four times. The tricky part is iPad came out with iOS 3.5. So I don't remember if they had it or not. I don't think they had it. So like maybe four or five. Yeah. Somewhere around there. And you're talking about that Android. I'm like. God that's glorious. That is not how it works on iOS. On iOS. You set a flag in your info PLS file that says, Hey, Hey, Hey Apple. Um, I would like to do a little background fetching. It's just, just me just doing a little Fetcher. Just just want to fetch some things, especially, and just veteran, just veteran Apple. And, uh, so if you're lucky, they will execute you to do a little fetching from time to time. If you touch anything on the UI, they will throw you down, slam you, crash you very hard. If they will tell you how long. You're given. If you go over that time, they crash you. Um, if you use too much memory, they'll crash, you they'll crush you under pretty much any circumstance they care about, but it's kind of fun because we were talking about how that mentality has covered all the software right now. I just assume all my software can crash at anytime. So it's fine. Uh, The tricky part is they use user here, risk sticks to tell how often to actually execute you. And that's a poor phrasing. I apologize. James: [00:14:53] Right? Execute a process method in your application. Yes. I knew what you were talking about, correct? They do not literally kill your you or your application, but your, your application, they trigger a callback function that does something. Long running. Yes. Frank: [00:15:12] Right. So that is the fair, very well phrased. You shouldn't get a pod. Yes. I should have gave James: [00:15:18] you one of those. I want to get one of those new fangled podcast things. Talk on this. I mean, yeah. Well, Frank: [00:15:23] so that is the background fetch thing, but there is another thing going on where if you were to do a long-term process, like you're talking about, you were supposed to start a, I forget what the actual thing is called, but like a background task, a signal to the operating system. That I'm doing something along. And the neat thing there is, if someone puts your app into the background, it won't immediately get de scheduled. They'll actually let you keep running that background thing up to certain time limits. And you know, you're not allowed to break the time limits, all that kind of stuff, but that was your, um, that was always your I've already put 10 minutes into this operation. I don't, I only have one minute left. Just let me finish kind of stop gap. Yeah. James: [00:16:07] There's something in. Um, what it's inside of my media plugin that I haven't updated forever, but it is UI application dot shared application, a begin background task. And then you have to end the background task and do stuff basically for my understanding. And that's what would tell it to be okay. Frank: [00:16:26] Yeah. Yeah, that's pretty cool. The thing is that doesn't really exist on Mac so that I had a vague memory of that. I had a vague memory of that WWDC. But I just couldn't put it together. I'm like how in the world am I going to find this? And so I just kept searching Google, like app keeps slowing down in background and it turns out there's just no good results for any of that. Or my Google food was way off. The actual big tell that you get is on stack overflow. People notice sometimes their NS timers stop firing. And that's when they start doing hacks, like forcing themselves to be in the foreground constantly so that their NS timer stops going. But I wasn't satisfied with that. So I kept Googling. James: [00:17:16] Kept Googling. And you landed on our sponsor this week, web Adams, that I N Webb Adams. Listen, do you like TypeScript and JavaScript and you want to write a mobile application or you want to put a little TypeScript JavaScript into your Xamarin forms application. That's where web Adams comes in. They're basically JSX and TSX for years. Amerind forms, applications. Enabling you to even hot reload your application in production, because it's a web technology you can interact between your C-sharp and your XAML and your type squid, TypeScript, and your JavaScript using MVVM data, binding all things that you know, and love. So leverage all of that amazing code that you already know and start integrating it into your mobile applications today. What's really cool about web Adams is you can explore everything in the browser. Frank, I just opened up a CQL light. Demo where I am learning about how I can use their sequelae service and SQL Lite connection to open database. Seems like some I just did with and execute SQL Lite commands. I'm doing it all from the power of C-sharp, but communicating with TypeScript is kind of really cool. I am writing TypeScript over here inside of my Zimmer reforms application. And it's bananas go to web Adams. W E B a T O M S dot Diane, or find the link in the show notes below and check out why up Adams for all the really cool stuff that you can do with the power of web and native mobile applications, web Adam's Diane, thanks to web Adams for sponsoring this week. Ah, duh. Frank: [00:18:49] Uh, thanks web Adams. That was an amazing transition and it's, it's worthy of their amazing software because it's blending the web and. Native mobile. Like that is insane. James: [00:19:01] So you decided Frank that it wasn't good enough to do what my stream timer does, which is be a terrible application. I'd always on top. You said I'm going to dig, dig, dig, dig, dig. And you found, Frank: [00:19:13] I found. And S process info. My old nemesis. Well, it took a while. James, I'll be honest because like the Google wasn't working. So I just went into the Apple docs and I started with NSF application and this application delegate and S workspace. Did you know there's an NS workspace? I didn't, I did not. No. Nope. It's there. Then there's like a, there's even one other and I just kept looking through every option. Finally and as process info, finally, there is a function on it called begin activity and, and activity, and you know what you can pass and then a function, James, a beautiful, beautiful that says things like don't turn off the display. Don't suspend me, don't suspend anything. There's actually a lot of flags in here. It's actually really powerful and scary what you can do with this thing. As you read the docs, it's just full of these, like, Hey look, uh, some of these legs mean you're just going to make the computer use more power, but as long as, uh, you know, we're doing this for the users, we have a way out, James, finally, James: [00:20:22] you know, I fight for the users. So, um, it definitely makes sense. This is really cool. I see. Flag required the screen stay powered on prevent idle, sleep, prevent sudden termination, automatic termination, uh, that the user initiated it, that the user initiated allowing idle system sleep flight to indicate the app is performing a user request action. Whether the system can sleep on idle. No, actually probably. Yeah. Maybe activity, background, flag to activity. The app has initiated some kind of work, but not as the direct result of a user request. Oh, this is a cool check this out. Activity latency, critical of flag to indicate the activity requires the highest amount of timer and IO precision available. Oh, I'm totally. Yeah, Frank: [00:21:07] no, they say that's only for like a video and audio where like real time is really important though. I am tempted to turn it on for, I started at three. So if I do it for ice circuit 3d, you can do it from my stream. James: [00:21:20] This has important, very few applications should need to use this constant. That's what it says. That means somebody introduced this and, uh, they really regret their decision. Yeah. Frank: [00:21:34] Uh, so the docs talk about this as basically, well, there's two big operations. It's either a background operation or a user. Uh, activated one. So in the case of your app, your a user activated one, someone's pressing a start button. Uh, but they give the example of background. One might be indexing files, or I don't know. What do you w what did we do in the background? We check for Twitter updates, you know, that kind of stuff, the stuff you're just doing there. But the, the one that's actually the most powerful is that user one, because by default, that's going to turn off a lot of these things and you went through them pretty quickly, but the big ones are, can the monitor stay on and off and can the computer stay on and off, you know? Uh, system sleep or not. And those are the big decisions that you get to make. Like for my neuro network one, I don't care about the monitor. The monitor can turn off all it wants. What I want to prevent is my app or my process from sleeping and the system from sleeping until it's done for years. I think you're roughly in that neighborhood too, because they're all streaming. It's not like their mind. If their monitor turns off, it's not going to kill your James: [00:22:44] app. Sure. Yeah. Yeah. And I'm sure that OBS probably already has a bunch of these flags set on Mac anyways, and they're playing games or you're doing stuff. I don't want my application to be the reason that your company turn, because if your computer turns off or it goes asleep, that's your fault? Not my application's fault. So I'm assuming the beautifully named the longest one. And as activity, user initiated, allowing idle system sleep would be the one I want to go to. Frank: [00:23:14] Yeah, probably you, you want to go to sleep, right? Yeah, no. Yeah. It's just whether you're, you should allow the screen too. Absolutely. I agree with you. Yep. So, okay. Let me tell you why I was suspicious of that one. I have a fancy external GPU attached to this computer and it's so fancy. That if I'm running a workload on it and the computer goes to sleep, the kernel panics and shuts down the computer. Hmm. That's how fancy it is. So there, I have this really annoying issue. If I ever leave anything training on that, uh, And that thing and the computer falls asleep. Guess what? There go all my apps. There goes everything. So I am very much interested in keeping the system awake for myself. So I am not doing that one. I am keeping the computer awake until it is done. You will finish your job, Mr. Computer. So did James: [00:24:20] you tell us how did it actually work? Frank: [00:24:22] It works. Yeah. I mean, that was the big question, right? Like, yeah. You know, just because an API says something doesn't mean anything. Um, there is a difference between user initiated and background. So if I flagged it as background, I would still get the scheduled just as before, but as long as you're flagged as user user initiated, which actually, if you look at the is actually a combination of a lot of different flags. It's kind of the one that gives you the most options. The user initiated. Uh, activity, uh, once you have that one, it works beautifully. Now I didn't test your app, your apps up and sources. And then I guess, James: [00:25:05] no, it's there. I have a, I have a. A little bullying, um, setting that actually allow the user to turn on and off, stay on top. And the latest version it's on by default. But it seems as though with this, I could turn it off by default and then say, Hey, if you're running into issues, turn on, stay on top, which is actually screensaver mode. That is a fun fact for all of our listeners, is that if you want your application to stay on top screensaver mode, which doesn't actually make any sense for Frank at all. Frank: [00:25:35] Insert the largest grown I can possibly produce. Talk about using the operating system API, not how it was intended. You're flagging your app as a screen saver so that you can write a text file every second. James: [00:25:48] That is correct. That is what I do, Frank. That is what I do. Okay. Frank: [00:25:51] Just checking. Yeah. So James: [00:25:55] my app is a screensaver, Frank and it's great. And it counts down. No, don't Frank: [00:26:00] believe me. No. Um, I did have to be careful in my code. I don't know how good of a code or you are, but I can not get a little bit, I can be a bit sloppy with my air handling. So, uh, they make it very clear that if you go and enable these privileges, you better tell the operating system when you're done. So in the.net world, that basically means tri finally is over any code where you use this. It'd be kind of neat, I guess, to get like an I disposable version, then we could use using to do all this. Have to add that to a San Marino centrals. I guess James: [00:26:36] the question is, let's say the user once a timer to run for two hours, is it okay if it just goes for two hours? Yeah. Frank: [00:26:45] Okay. Because especially because like you're allowing the screen to turn off. If they walk away, like your use cases that they have ops running, you are not doing anything to that computer. That ops isn't doing 10 billion times worse. That's true. My ear, I assume you're using a timer and you don't have like a hot loop checking every microsecond, whether the timer is expired, you are not hurting that or not. James: [00:27:11] I would, I would, I would now need to figure out here's the conundrum is I now need to figure out when no timers are running, cause you can have four timers running. So. Frank: [00:27:27] So you could technically do an activity per timer or you'll have to make your code more complicated and figure out when there's timers and when there's not timers. So you have to figure out your begin and criteria. Got James: [00:27:41] it. Oh, does it return a. Frank: [00:27:46] Yeah, it returns an object. So you can do multiple activities, which is actually suggested. So anytime you're doing a big, long activity, this is how they want you to use this API. They, they understand that people don't want to be D throttled constantly. So anytime you have a long running thing, they recommend doing this. Now, though, they even say, though, uh, this does not apply. To the UI thread. And I noticed this in my app, uh, just on a whim. I started training models on the UI thread and I never got the throttled. So it's really only background threads that you have to worry about this stuff for which includes like tasks. And C James: [00:28:25] sharp and tasks and timers cause timers around tasks. So that makes sense. Yeah. So I, this is great because my code is already architected to have individual view models. So there's literally a button that says start and stop and pause and I can do all that. That's amazing. I'm totally going to try this out. And finally, finally, finally, at least on Mac, I don't know about windows yet. If anybody knows the magical secret sauce for getting it to work on windows, I tried everything. I. I got it really good. I'm pretty sure I got it. So the application doesn't have to be the forefront, but just doesn't have to be minimized. I think I'm not positive. I dunno. Frank: [00:29:08] Yeah. It's you know, and I'm still confused about how exactly this works with iOS, especially in regard to, um, the background activities that exist in UI kit. It's a little bit confusing. Because this is on an S process info of a very old type that's been around forever since foundation. Um, but because it's an iOS, it's a Mac catalyst too. So who knows? I imagine I'm just going to start doing this for anything that I think is going to take more than, and I should say just from my own observations, the OSTP would de throttle me after about 45 seconds. I have no idea if that's normal, you know, this is big, sir. It's an Intel Mac. I don't know. Uh, but after about 45 seconds, I have no idea how that plays out on iOS. James: [00:29:56] Yeah, I noticed there was about a minute or so, 30 to 90 seconds or so on, on my stream timer, that was for sure, uh, on, on what it was doing, but it also depended. I think there was a lot of dependencies on like when, when that was happening, but that's pretty fascinating. Frank: [00:30:13] Yeah, isn't it like chaotic you're just so it was driving me a little bit nuts because I was working on the performance of the neural network trainer. And it's tricky with neuro networks because you need to feed the GPU as much data as you can. And so you want to prefetch data, you know, you want to like pull things off of a network pre-cash them and then start feeding them to the GPU. And the network can be kind of slow and finicky. So the app would keep slowing down. I'm like, well, that's just my network acting up. And the number of times, James, I just left it running in that like super slow downstate and didn't realize it. And just then hours and hours that I've wasted because I didn't know about this thing anyway, that's my I'm hoping. Anyone out there writing apps for Apple that have long background tasks. Please look up this API and use it. James: [00:31:11] There you go. There you go. And if anyone knows anything equivalent on windows or just wants to do a pull request to my stream timer and fix all of it, that'd be much appreciated links in the show notes below, but that is going to do it for our desktop adventure stick tune after stay tuned after. The credits because we're going to buy a Mac. Thanks everyone for tuning in this week, go to merge conflict.fm, to learn all the things linked to our Patriots who get weekly bonus episodes and this episode, and every episode early, go to patrion.com/merge conflict FM to learn more. We super appreciate every single one of you. And of course, Every single one of you that are listening to this podcast today, we love all of you. Definitely make sure that you subscribe and give us a review if that's humanly possible. Um, if you got some spare moments that would be super appreciated, but that's gonna be for this week's emerge conflicts. So until next week and I'm Frank: [00:32:01] Frank Krueger. Thanks for listening. Peace. James: [00:32:11] All right, Frank. So I'm on. Apple.com/shop/buy a Mac slash Mac book, air there's hyphens in there. So you might as just go to the website. I, I Frank: [00:32:20] I'm racing ahead. I'm going to get that or Mac book air. Are we really doing this? You actually going to buy this thing? Well, I'm going James: [00:32:26] to put it in the card and then have a conversation and do a thing. Um, so, okay. There's a word I don't, I don't quite understand. I don't know why they, why do they even give you two options? It's kind of upsetting in a weird way, because if you look at this. You're like, okay, there's an Apple M one chip with an eight core CPU and seven core GPU for nine, nine, nine or eight core and eight core GPU with double the storage for $1,249. Like is that one extra core GPU worth Frank: [00:32:59] it? So I would say if you're doing neural networks, every little ounce counts, if you're not. Uh, no, I'm sorry. The other use case is if you're going to hook a million monitors up to this thing, but if you're just going to hook one monitor up to it and you are not training neural networks, you are fine with the seven core GPU. Okay. James: [00:33:21] Cause it's only, so here's the thing is if you were to upgrade the SSD. That extra core is 50 extra dollars. That's actually how much it costs is $50. Frank: [00:33:34] They're terrible like that. So you might as well get it. It's what do they call that in marketing that like middle item where they try to upsell you to the expensive items? James: [00:33:42] The question is, do you think that the base model nine, nine, nine, eight gigs of Ram to five, six gigs of storage is good or no? Frank: [00:33:56] The two 56 gigs of storage is a little tight for me. Um, James: [00:34:04] he takes over for him is also tight. Frank: [00:34:06] Well, that's the problem, like have both of those be tight, like, cause you're going to be swapping with a cakes around. So you're going to need lots of swap space. I would rather have, I would say more Ram than hard drive because you can Cloudify most things nowadays. And therefore keep less data on the computer. So I guess just being programmers and we're generally running really memory hungry apps. James: [00:34:35] Yeah, because now we're looking at, so really it's the Ram Frank: [00:34:39] upgrade James: [00:34:39] costs 200, $200. It's everything's $200. Frank: [00:34:43] So that it's a hard drive is 200 and Ram is 201 or the other, which way are you leaning? James: [00:34:51] I don't think I'm just going to go both, I guess. I mean, that's a problem is like, you know, to the point, we all know too. To, you know, I don't know, two Frank: [00:35:04] 56 is doable. I think I only had a computer with it before. James: [00:35:10] I think then you can get into the camp. If you do two 56, you can do the base model with memory, keep two 56, and now you're saving $250 and that's pretty decent. I think. Frank: [00:35:27] Yeah. What are you going to do with this thing? It's just going to be a build server, right? James: [00:35:32] Um, I'm going to install a, here we go. See, I'm going to install visual studio for Mac and I'm going to install X code. So that's about what? 180 billion gigs. Frank: [00:35:45] Let's see. What is visual studio is currently taking up 2.4. Gigabytes. Dropbox is using up one gigabytes. Uh, X codes like 20 code. Yes. 700 Meg. That's not true. There's not a project open. There's nothing open. James: [00:36:05] I was like on disc storage, right. So you got to go into Frank: [00:36:08] on disk. X code is giant. I ran out of hard drive. James: [00:36:13] Okay. I think, I think you need the 16 gigabytes of memory, but I think you can live with two 56 gigabytes SSD, but I think you gotta be willing to not have any of your Dropbox stuff constantly clean out your folders. Right? And we just got to Frank: [00:36:27] put cloud mode for all year data sinking apps. James: [00:36:30] Exactly. Yeah. Frank: [00:36:32] Everything. Yeah, James: [00:36:33] but you just bought here, you just bought here's the test. You just bought your Mac book, air Frank, go, go into your little Apple icon, go into your little thing and then tell me what, how much storage you have left. Frank: [00:36:47] It's asleep. We'll see if it wants to wake up. It's been kind of a little cranky and clamshell mode lately. Did that. Okay, give me one moment James: [00:36:58] waiting for Frank. Cause then so as, as we wait for Frank, cause then we're really looking at $1,200 minus $500, $700. That's not bad. That's a good deal. Frank: [00:37:15] What that is. James: [00:37:17] I want you to go into the system memory one. I want to know how much space you're using on your computer. Apple about my computer. I thought you said this computer is fast, Frank, Frank: [00:37:31] uh, I'm going to have to do math in my head. I am using 289 gigabytes. So James: [00:37:41] more than what I would be buying, Frank: [00:37:45] what am I doing? What's on this thing. James: [00:37:47] That's what I asked myself. Whenever I opened up my Mac book, I have five 12 on the 25th. This thing is like, I'd be buying a laptop and. 2021 that has less storage than my Mac book from 2013. Frank: [00:37:59] You were trying to do the spark and basement either. You're you're are you trying to build a power machine here or what do you, how James: [00:38:06] does, why does eight gigs of Ram cost $200? Frank: [00:38:10] Yeah, just throw smarketing. James: [00:38:13] It's just how it works. I, you know, I upgraded this computer here with an additional 32 gigs of memory for $200. Now that seems like a good deal, but anyways, um, okay. I think I'm going to go with this. I'm going to go with it because it's not really 256 as of active storage. That's the other thing, right? Um, man. I don't know if you you've made it this far, leave comments on the show or hit me up on Twitter. What should I buy from a Mac book air? Are you giving up Frank: [00:38:49] that I fail James: [00:38:50] a yes, you failed and you've not recommended me at all. And that's where we're gonna end this podcast with Frank failing me. Yes. Again. Frank: [00:38:56] I'm sorry everyone. I'll try to get them to spend money next time. No, you're James: [00:39:00] good. You're good. All right. Thanks everybody for tuning in. I hope this was fun and we'll talk to you next week. Frank: [00:39:05] Bye.