mergeconflict377 === [00:00:00] James: Welcome back everyone to Merge Conflict. Frank has no idea what's happening right now, but it is the first podcast with. No hair, James. [00:00:08] Frank: Looking good, buddy. You look good. I didn't want to say it on the last podcast. That's not good to compliment your friends too often. Uh, so here, here's my one compliment looking good, [00:00:18] James: buddy. Back to classic retro James. And, uh, I did a little YouTube short just today. I just sent all of my hair out to, um, uh, charity. So, uh, that. They can turn it into a wig. Uh, it's for, uh, kids with, uh, children with hair loss is the charity. I was going through a few, there's like, uh, wigs for kids. And there's a bunch of other ones that are out there. And I had about 10 to 12 inches of hair. Eight is kind of like the minimum. Some places went 10, some places went 12. Uh, but this was, uh, pretty good. It was a lot of hair and three years of hair. a three and a half inch change and yeah, it was fun. It was mixed bags, when I went in to get my hair cut, the person caught it, my hair was excited, I was donating it. The person next to them was like blasphemy and then the other person was kind of indifferent. So the three stylists, oh, they know what it was [00:01:08] Frank: back, right? I mean, if you're lucky enough, it grows back. [00:01:12] James: Yeah, exactly. The person that was like, blasphemy, like, how dare you? And I was like, it can always grow back there. But will it? Will it? Yeah, it will, it will based on. The Montemagno lineage, yes, it will grow back, uh, in general, until maybe I'm about fifties or so, then it starts sort of thins, but doesn't maybe go to that length, but done. Yeah, and, uh, it's out there. And we're going to keep it this way probably for a long time and we'll go from there. So if you're watching this on the YouTube, you can see that already in my recent videos. I just wanted to surprise people and put out a video and like, here it was, boom. And it's out. [00:01:51] Frank: And it's great that you're donating. I have a friend that does that also. He grows out his long red hair. And so I'm sure. Some people are lucky to get his hair. Um, my hair is not so great. I do want to cut mine also. So I hope to, uh, follow in your footsteps, but, um, my hair is atrocious and I wouldn't wish it upon any child. So I probably won't donate it. [00:02:14] James: Yeah. And I was pretty lucky while I do have some streaks of gray. There's some places that don't allow gray hair, but like often they'll take it out and they go through stuff, but yeah, like it's, it's an interesting process, but I'm sure that even Frank with your hair. People, they'll turn into something great. You just got to condition it. But lots of conditioner in that hair. [00:02:30] Frank: They got to take the gray out though. I feel bad for that intern. That intern is going to have a rough day. [00:02:36] James: Yeah. The yeah. It's like wigs. I think if they were to take your hair or my hair to turn into a wig, it's, it's like several thousand dollars. Like. It's like a production. It's like a huge thing. Anyways, that's it. That's fascinating. No, it's actually why I didn't cut it for a while because Heather had donated her hair a long time ago and then she told me about that. Whoa, that's cool. So it wasn't the reason I grew out my hair, but it was a nice side effect of it. Uh, we have three things to talk about Frank Krueger. Um, I think three things. We're going to break it down into kind of like, not really a lightning talk, but like kind of a lightning esque talk type of thing, I think. It's, [00:03:09] Frank: it's always three things with you. You know, it can never just be one. That'd be boring. Two, both sides. And three, that's the right number. Except for when it's lightning. Yeah. Uh, I thought we were going to talk about one. So this is going to be fun. I'm excited to find out what the other two topics are. [00:03:26] James: Let's get the... The first one out of the way, which is, uh, NET 8, RC1. It's available, Frank. I did a whole video on NET MAUI and RC1. It was actually available, I guess. Two weeks ago we kind of forgot about that somehow. We're talking about new iPhones and such. Uh, and we, we talked about me installing the NET 9 preview and alpha and all this other stuff. Uh, but it's out and, you know, with the RCs, there's a GoLive license, which means that, you know, that's sufficiently supported. So this week I spent some time and I. Upgraded some apps. Upgraded some NET MAUI apps. Upgraded some APIs. Uh, I did a bunch of work and surprisingly, it was pretty simple, uh, in general. Uh, I did run into a few older projects, NET 6 projects, that were built off like the original templates. There was some quirks, I would say, and some Windows y packaging things, and a few other attributes and things removed. But in general... It was pretty straightforward, um, but I wanted to talk to you mostly, and maybe you know, maybe you don't know, is there's a lot of Mac Catalyst changes in this release. Do you know about these changes? Have you heard about these changes? Do you know what's up with these changes? [00:04:43] Frank: Oh boy, I'm scared because I don't think I know what's up with these changes. I, I was all prepared for a story about upgrading there and now, and now you got me scared about Matt Catalyst. James, what's going on with Matt Catalyst? It was fine. [00:04:56] James: Uh, I think in general, it's still fine. Okay. I don't want to put any, um, worries in your little branium cranium, Frank Krueger, but there. is some changes to the templates in File, New Project that I think folks should sort of be aware of. Uh, and the first one specifically is in and around the architecture type of your application. And you can change... The architecture type more easily now, uh, when you're creating the project. So by default, there's a big, there's actually a big blob inside of the projects that says note for Mac catalyst. It says the default runtime is Mac catalyst X 64, except in release configuration, which. Case, the default is Mac Catalyst 64, semicolon Mac Catalyst ARM 64. When specifying both architectures, use the plural run time identifiers instead of the singular run time identifier. The Mac App Store will not accept apps with. Only Mac Catalyst ARM64 indicated, either both runtimes must be indicated or only Mac Catalyst X64. Can you actually decipher what the heck that means? I have no, I, I kind of don't, I mean, I know X64, ARM64, but like, what is the rationale, what's going on back here? [00:06:19] Frank: Okay, yeah, this is confusing, because I got confused by this, uh, it's probably been over a year now, but I was working on a native library, so taking a bunch of native code, and I wanted to run on all the platforms, including Mac Catalyst, but... Okay, so here, let, let's just start with how is T net organized ? Because we all know the target frameworks like nets six, net seven, net eight, those are our target frameworks. Mm-hmm. . Now we got net eight hyphen, iOS hyphen, iOS simulator, hyphen Mac, catalyst, , all the hyphens, hyphen, Android hyphen, whatever else you got. Um, do all those hyphens. Okay. Those are still frameworks. And in a lot of ways, think of those as just sets of libraries. We're still not talking about the machine that it's running on. That's left over for the runtime identifiers. In the past, with one project, you would have a target framework and a runtime identifier. The runtime identifier is almost always implied by the target framework. You target Windows, you're going to get a 64 bit app. You target Mac, you're going to get a 64 bit Intel app. Apple went and pulled a curveball on everyone's switch processors. And so now we're all still catching up a little bit. And, um, So the runtime identifier, uh, would let you say now ARM64 on Mac. So you could do that. And there, okay. So, okay. All that works. Great. Fine. Lovely. Now let's talk about multi targeting. This is where, like, this is where the craziness starts to happen. So not only can you specify one framework in a project, you can specify multiple frameworks and then just like multiple frameworks, you can specify multiple. Run times to use. And now think about that permutation or that combination table that's going to come out from that. You can't say, like, oh, I want MacCatOS to ARM64 for iOS Android. No, that combination doesn't work. This combination doesn't work. That combination doesn't work. So there's just a lot of bookkeeping, basically, that they have to do. Um... Basically between Nuit, between MS build, between the distribution system, between the workloads. So, um, if, if you build an app and you specify all these things, you'll notice it doesn't end up in your bin directory. It ends up in Bend. Target framework slash runtime identifier, and. That will be a specific build for that specific platform. It's all terrible. And then, to throw all the real complications on top of it all, Apple wants those unified into a single executable. And so, um, what you see in front of you is the ridiculous caused by large combination explosion between target frameworks, runtime identifiers. Apple, Apple processors and merging it all back into one EXE in the end. Lovely. [00:09:28] James: Isn't it? I gotcha. This is, this reminds me if you're an Android developer, you could select the ABI, um, that you wanted to support. So you would often put X64, ARM6, ARM7, ARM8, et cetera, et cetera. And just like you're saying, so this is kind of reminiscent of that is, is, is you would put that in a configuration and then when you just built it. And it bundled into one thing. You're like, here you go. Now it's kind of different on windows, because if, if I'm bundling up a windows app, I actually kind of like right click publish, and then I select what do I want to output, and then what that normally does is it will like output like a bunch of different files and also give you like a merge thing that you upload to the store. So it sounds as though it's just happening. to happen at different parts of the build publish cycle, basically, of selecting these things. And there's inherent defaults that I'm assuming are smart defaults, but if you might want to override those, for example. [00:10:25] Frank: Yeah, and that's kind of what you're discussing here is the defaults changed. Um, because we've done this on iOS forever. We've had our ARM builds for the phone, and then we've had our x64 builds. Um, for the simulator. The nice thing there was there were two different target frameworks that kind of distinguish between them. And so like Nuget packages could get away with only specifying the target framework and they would be... Um, if they had like native code, if you're just writing IL code, you're fine. That's just going to work everywhere. This is, this is really only a problem with native code. Um, uh, people could get away with just putting the target framework, but I learned my lesson a year ago. Um, you really had to specify, um, in the new Git, like not just the lib directory, not just lib slash target framework, but like lib slash target framework slash the runtime. Uh, to really make sure that the right native bits are being put into the right spots and all that kind of stuff. And it's a little bit annoying from the library developer's point of view, but the good news is you just don't write native code that often, ideally. Uh, so it's only stressful sometimes, but it is kind of terrible, uh, from the library perspective. But from the app developer's perspective, uh, what I meant by the defaults changed is, um, they didn't require the... Arm version before because I think Apple was really pushing Take your iPad apps and run those on the M1 processors, But I think we're all like, I don't know, Apple platforms, like an OS is an OS. And I'd rather, if I'm going to have a Mac catalyst app, I think it would be good to have an M1 version of it. So I'm here for this. I'm excited for [00:12:12] James: it. That makes sense. Sorry, [00:12:15] Frank: Mac apps too. [00:12:17] James: Oh, gotcha. That makes sense. Yeah. The thing that I was curious about also, there's another. Conditional in the templates that if you're in release, so, so now you can specify different, uh, code sign entitlements between the two platforms. But then additionally, you can. Or by default now, well, not, but I guess not by default, but now in the templates, at least it says use hardened runtime as true in release. So should you use a hardened runtime? Yes, [00:12:49] Frank: yeah, it's fine, everyone. Um, yeah, uh, that's been a req, okay, it hasn't been a requirement on Mac, um, like a hard, hard requirement, but even when I wrote Appstat, like, years ago, the little menu app that tells you your app sales and all that kind of stuff, everyone go buy Appstat, it's on Gumroad. Um, Uh, if you wanted to get your app signed by Apple, you had to have a hardened runtime. They were starting to enforce that on the operating system and not so much enforce it, but you know, they would give you that the ugliest dialogue ever. If you tried to run the app without the hardened runtime enabled and it's an entitlement, um, it's really not that bad. Um, it's. It's about as restrictive as the App Store has always been. Um, I think they're really just distinguishing. They're really locking down Mac apps these days versus how Mac apps used to run in the past. [00:13:50] James: And I guess the question is, if I'm uploading it to the App Store, do I need the hard and run time? Or no, it's like implied basically. It doesn't, [00:13:57] Frank: see, that's where I'm a little confused. I, I think that they were gonna start requiring the hard and runtime at some point, and I just don't know if that point is passed or if it's, yeah, I don't know if it was five years ago or if it's two years in the future. I, I honestly can't tell you because, um, I tend to just enable it just because, yeah, I, I play within the rule books. I don't, I'm not trying to do anything fancy with the os. [00:14:23] James: Gotcha. Uh, well, that's it. That's my update. Uh, I have a whole video on NET MAUI NET, so you can go take a look at that. And of course, uh, um, update your apps. I just updated my apps from [00:14:35] Frank: three. I was trying to get an old CI working and I'm like, Oh wow, this CI is using NET 5. I should upgrade that to at least NET 7. Yeah, I should have updated to 8, but at least up to 7. And then I realized like there were projects in there that were targeting NET 3. That was a little embarrassing. I just kind of hopped in, changed that NET app 3. 0 to a... Net 7.0 and everything worked fine and I moved on with my life . [00:15:06] James: Nice. Yeah, I think one thing that's been nice going now in the rcs to make it easier is like, it's easier to get like the GitHub actions working to get code spaces working and just like all that stuff has been pretty seamless for me. 'cause now you're just like, oh, I've just changed seven to eight and you're. Yeah, it just basically works, which is really nice. And, uh, uh, Stephen Tobe's annual performance improvements blog is out. So if you've missed that and you have, uh, about a year to read it, you can start now by the time NET 9's out, you're, you're good to go about all the improvements and NET 8, which is cool. And then that's not even including, um, the, the team. He's always putting out more blogs on, you know, NET MAUI, ARM updates, you know, all the things. That's just like the base of it, which is kind of wild. So, I think about two [00:15:49] Frank: years ago, we at least tried to get through most of the blog. And then I don't think we even tried last year. And then I'm not sure I have even opened it this year. I am so sorry. I do want to read it. Um, I feel like I need to like get a book printed. Of like the last five years of these things. So I can just sit by the fireplace and read through NET performance numbers. [00:16:12] James: Yes. Uh, I think last year I worked with Steven and, uh, Nish, and then we made a, uh, PDF out of it, which was nice, like official one. That was like really nice. You put it like on your Kindle or whatever. Oh, I got to do it this year for him. He asked me about that. I got to figure out how to do that again. Um, but yes. Uh, anyways, go read that stuff. I'll put some links somewhere, probably, um, just. You know, go to NET and you're good to go. Um, but yeah. Um, there was a Windows event talking about new things in the world of Microsoft. There was an AI plus Surface event, which was mostly AI related. Um, I like started with the hardware first. New laptop? [00:16:52] Frank: Yeah. Always hardware first, man. I'm here for the hardware. I'm always here for the hardware. [00:16:58] James: Three new pieces of hardware. I want to say a Surface. A Surface Laptop Go. Surface Laptop Go. A Surface Studio, Surface Studio Laptop, and a Surface, a Surface Enterprise y thingy in general. Yeah, Surface Go, Surface Go, Surface Go, Surface Laptop Go, Surface Studio Laptop. And then Surface, which is the big enterprise Surface. Oof, there's only one that we really care about because for me, it's really the Surface Studio Laptop, which to me is like the killer dev device. Hanselman's always raving about it. That's the dev one. [00:17:40] Frank: It's a big one. Okay. So the Go is your, is your lightweight kind of iPad competitor almost, right? Does that still have the light keyboard and everything and is detachable keyboard and [00:17:51] James: all that? Yes. Correct. The Surface Go. Yes. [00:17:58] Frank: Um, that's what I have. Love it. Mine's so old. That's good. [00:18:02] James: Mine's super old at this point. Yeah. The first one. This one is, they said, they said it's. 100 percent faster than the original. That's what they said. [00:18:12] Frank: I kind of believe it. Um, how could it not be? No, I'm just kidding. Um, okay, so what was the dev one and contrast that with the other one? Because now I'm all confused in the naming scheme. Ah, [00:18:24] James: the Surface Laptop Go is the Surface Go, but with a In a laptop form. So it's, it's the same, but it has a dedicated keyboard, uh, keyboard attached to it fully 100%. It's a laptop, smaller 12 inch boom, comparable to not going to say a Mac book air, but kind of going for the student ask, you know, lower budget, lower entry. And then between that, the next step up would be the surface, a laptop. So Surface Laptop Go, Surface Laptop, which is the one I have. I have a Surface Laptop 4, there's no new one to those, but there was a 5 last year. And then one up from that would be the Surface Studio Laptop. Okay. Two. Sort of studio laptop. [00:19:17] Frank: Mr. Hanselman was raving about, not that he's getting a commission or anything, but I, I did, I did notice him raving about it. Um, so what, what, what's hot and new? So, [00:19:29] James: uh, this one has like the latest. Processor in it. It has, um, more ports. And then I think upgraded GPU. And then there's two, uh, two big things. Uh, one is I think there's like new, new, like inking and stuff that's on it and like the little, the little pen like hides underneath and it like can be charged, whatever the number one feature that. Uh, everyone's raving about is the, uh, touch pad. And additionally this year, one of the major features that they talked about was accessibility. Uh, they actually had someone on stage who was born without fingers and on one hand, and it's really hard for them to use. And you're almost nearly impossible to use the, uh, trackpad. Because of palm detection, uh, you know, when you're, when you are built into every thing is basically palm detection that we'll, we'll ignore that. That's really hard because that's, you know, if you look, if you think of their hand, right, accessibility wise. So normally they'd have to use a special mouse with different attachments, X, Y, Z. But this, uh, brand new service studio laptop. Uh, trackpad was built with this in mind. You can actually disable and put it into an accessibility mode to turn off that and really fine grain control the haptics that are happening inside of that in general. And people said it's like the best trackpad ever. And, you know, if you do have a laptop and you're doing it a lot, then, you know, this is it. So I think it's like a worthy update just cause it has all the latest and greatest. It's been a few years since the original one, but the other bigger killer feature for me is that the first time. In a surface line, you can get up to 64 gigs of RAM in this puppy. [00:21:15] Frank: Well, yeah, that, that's kind of, you should have left with that. Now the, the mouse thing, I'm just kidding. Uh, the mouse thing's interesting because, um, even a capacitive touch, which is what all these things are using, it took a while, like we had sensors for those for years, but it took a while for the software to get good enough to be able to like. Yeah, do palm rejection, figure out what's a finger, what's, what's an actual motion across it, and things like that. And it was all just based on heuristics, you know, a finger's about this size. And so we do this stuff. And so it's super cool to see that we're breaking out of the established heuristics and trying some new things there. And it's also good to know that Microsoft's making a good uh, uh, touch because uh, that was always Apples. On, uh, Apple's, uh, Premiere feature on all the laptops was always the touch pad. So it's, it's good that, uh, Microsoft has some competition there. [00:22:15] James: It's good. They're, they're building in, they have a, you know, they have, uh, the fingerprint unlock and a bunch of other features. Yeah. So the thing is, if, if I, you know, if I'm buying a Surface, if I'm buying a Windows laptop. I'm not a gamer, so I'm not buying a gaming laptop, but the Surface laptop or the Surface Studio laptop would be the ones that I would purchase, uh, and spec them out, um, for it because I love my Surface Laptop 4. It's fully spec'd out. This is my work machine and I really, really like it, uh, and I take it everywhere with me, obviously for work, but, um, it's my main driver. I have a, I have a Volterra machine here. Um, for which is arm based windows for my main desktop machine for work, but on the go, which I am quite often, the service laptop for is my go to, [00:23:00] Frank: well, I love that when we first started this podcast, we would never talk about machine learning and AI and then slowly I would beg you and we would talk about once in a while. And now it seems like every episode has it. Um, so I have to ask number 1, and this might be too specific. Maybe you don't know, but like, can you get NVIDIA GPUs? on those laptops. I think that's, like, coming from neural networks. Like, you just, you need that disgusting NVIDIA stuff on your computer. Otherwise, it's hard to get anything done. You totally can get other libraries to work with other hardware, but you really want that kind of stuff. And so Microsoft made a bunch of AI announcements, and I'm just thinking in the back of my head, I'm like, oh, I wonder what kind of GPUs. They're putting on these machines. [00:23:45] James: Well, I will tell you, but first let's take a break and thank our sponsor this week, Syncfusion. Listen, are you looking to infuse your apps with beautiful controls? Maybe you're building some AI stuff. Well, Syncfusion's got you covered. They have controls for every single type of application, whether you're building for beautiful service, a laptop studio, said it totally wrong by the way, service laptop studios, or you're building it for the surface goes, who knows? Or you're building it for a Mac. Or a windows machine or the web or an Android device or an iOS device or anything. They got controls, no matter what you're building with, with NET, with web stuff, with fluttery stuff, with whatever stuff it'll work everywhere. I've been using Syncfusion and all my applications for over 15 years. I simply love it from my first job to my latest job. I love Syncfusion cause they're with me, not only for great controls that I can flesh out my applications with, but for also all sorts of processing, PDFs, Excel, Word documents. All that good stuff built in. Head to Syncfusion. com forward slash merge conflict to learn more. That's Syncfusion. com forward slash merge. Confidence to Syncfusion for sponsoring this week's pod. All right, Frank, there are two big things that are inside the surface laptop studio. Two one. Yes, you can get a GeForce RTX for 40, 50, or 40, 60. And additionally, may I add, may I add in the surface. Laptop Studio 2, there is a Neural Processing Unit, an NPU, where is it? All that, because it's in my, it's in my, it's in here, it's in this puppy. It's in, no, no, no, no. It's in my Volterra. That was the big thing. Remember there was, there was a, right. Uh, neural, N P U, neural, neural, I don't know. It's in there. There's something in there. It's in there. [00:25:24] Frank: I'm a little bit annoyed with neural engines. Can we take a little side tangent down a little side road? All right. In the future, we need these neural engines because GPUs are just the wrong thing. They're big power waste. They're all these bad things. I've been working on an app on iOS and it runs a neural network and it's trying to run the neural network in real time. It's trying to run it at like 30 frames per second, which is a lot to ask out of a poor little neural network. They're trying to do a lot. You know, it's a lot of math. to be done. Um, and I was so happy because it was running great on my iPad and um, on the neural engine on an M1 processor running at real time. I put it over on the phone and it's running at eight frames per second. And it's overflowing numerically. Like, the numbers are wrong too. So it's slow and it's wrong. And if you force it, because you can control these things, you can, um, tell it run on the GPU only, switch these modes and everything. You can get it to run normally, but it runs more slowly, even more slowly as it's not running on the neural engine. So my little side tangent road is I'm very excited that everyone's putting neural engines into everything, but my, my little, my frustration right now is I'm frustrated with them right now because, um, they're not a silver bullet. Uh, they don't make everything super easy and super fast. I can't just take a neural network that I get off the street. One that falls off the back of a bus, you know, I can't just happen upon a neural network and throw it onto my neural engine and it just works. It actually still requires a lot of engineering and skill and I hate engineering and skill. And so side tangents over. Great job, Microsoft. I can't wait to use your neural engine. [00:27:24] James: Yeah, I, I think that the neural engine, the, the processor will just start to be more Windows devices and it'll go longer. I think it'll probably be things that are maybe more built into the OS, like camera stuff and backgrounds. Maybe different APIs devs can use, you know, things that need that processing. So I'm not really sure exactly where it's going, but that's at least how they demoed it at least. So I'll be fascinated to see how it goes, but they did also announce a bunch of AI stuff, and maybe that's what's powering some of that stuff, but pretty much they've. They, the company I work for, they, uh, I don't work for this division, so I don't know what's going on, but, uh, all of the things have been rebranded into just co pilot in general. They spent a lot of time with co pilot. They talked about DALI 3. I don't know if you've heard about DALI 3. They started showed a side by side of DALI 2 versus DALI 3 now built into Bing GPT shenanigans. [00:28:13] Frank: If you thought civilization was going to end with DALI 2, DALI 3 can get text correct. Like, the text in the image. [00:28:22] James: Really? Wow. [00:28:24] Frank: Wow, yeah. So, it is going to be the ultimate meme generator, and, um, use it only for good and awesome, people. Um, be careful with that one. It's going to be, it's going to be good. [00:28:37] James: Scary. That is cool. I'm waiting for the Bing image creator, which is powered by Dolly. I don't know if they updated it yet because that's cool. Even, even just doing numbers, it would really struggle with like, like put the letter, you know, the number eight in there. It's like, I don't know if I can do that. It'd be like really weird. Just, [00:28:57] Frank: it's really weird to give the poor neural network a break. No, not. He has to, like, understand language, but now it under has to understand typography. Yes, [00:29:07] James: it does. [00:29:07] Frank: And style. Oh, gosh. We ask so much of these little things. Of course. These are not running on your computer. These are running on giant servers with many, many TPUs of power. Who knows? I'm sure Microsoft's going to start building real TPUs at some point. Um, I, I'm a little jealous because I haven't even gotten access to Dolly 3. So if you get access before me, I'm going to be very upset, but hopefully I'll, I'll have that first. It's nice that they're integrating it because it really is a big step [00:29:38] James: forward. It seems pretty cool. I was, they, they show some side by side comparisons and that was really neat. The copilot stuff all seemed cool. I mean, it's in Office 365, summarizing emails, doing stuff. That seems good. Not your division, [00:29:51] Frank: but uh, it's your brand. Is Cortana gone? Is it all co pilot then? [00:29:59] James: I, I'm pretty sure like Cortana, I'd have to look at the analysis. I remember there was something about it, like the, the apps or whatever it was the left of Cortana going away, basically, instead of an assistant as a co pilot. I don't need a co pilot by my side at all times. Yeah, no, I [00:30:17] Frank: honestly, I, yes, please do integrate these things into the OS. Apple, Apple, listen, Apple compete with Microsoft, please. Because look, I'm not going to jump ship to back to Windows, but you're just going to make me jealous and guilty feeling with you and your co pilot everywhere. I want co pilot everywhere. Uh, Apple does have an update to the Mac. It will predict one word ahead of you and pretty much every text [00:30:45] James: box. Wow. One word. One word. I have, uh, it's fun. You know, it's, it's always hard for me to talk about what I see and what I don't see. Cause obviously in, it's like dog fooding, we get to see stuff ahead of time, but then I'm like, we're not really sure what's there, what's not there. Uh, but I am excited to use it at work because I do believe that there's a lot of things like summarizing emails or meetings or, uh, you know, doing graphs and charting and enhancing PowerPoint presentation stuff. That's like tedious work that I shouldn't spend a lot of time with, but it's like, hopefully that part will just make it better. So instead of having to. You know, spend time on that or try to ask a designer for help on stuff. Maybe it'll get me closer to what I want, you know, or make it easier when I do need to go to designer to do that stuff. [00:31:35] Frank: Have you ever seen that graph of the length of legal documents over time? There's just a graph of, you know, from 1910 up to whatever year this happens to be right now. And it goes up. It's a goes up graph. They usually are over time. But there is, it goes up in a ridiculous way around the year 1971. Do you know what happened in 1971? [00:32:01] James: The internet. [00:32:02] Frank: No. Word processor was. Oh. The type. So, like, typewriter sped it up. Word processor really sped it up. All of a sudden, people are shooting out longer and longer documents, and now we have Apple terms and services that are 30, 000 pages long that absolutely no one can read. That is all my preface to say, James, as you are generating emails and PowerPoint presentations. Please, try not to enter more banality into the world. Try to use Copilot to make your emails and presentations awesome! Not blah, not just mud. I I'm just, I'm afraid of like this mud of documents, auto generated documents being cast out into like Microsoft, Microsoft will stop writing any software because everyone's just auto generating emails to each other. So just use it to save time, but also use it to make it awesome. Be like, okay, please generate for me a PowerPoint presentation. And then when it's done, be like, okay, but make that a thousand times better. And make it do that. Cause like, it's a robot, dude. You can be mean to it. Inspect, no, better. Even better, more graphics, uh, animations. So like, use it for good and awesome [00:33:18] James: only. I'll try my best, Frank. I'll do it again. I'll try it out. Um, yeah, that, that's the, the biggest. Anything else from the, the, the event that you saw, that you watched, that you did some stuff on? Well, [00:33:31] Frank: they, they did show, um, running neural networks. on, uh, the computer. So all these big ones, you're talking to a server, you're sending the WinForms demo to a server. Yeah, the WinForms demo. I made fun of it a little bit on Twitter, but all in good faith. I hope everyone knows because it was the most classic WinForms looking app in the whole planet. And it just, Oh, I just, I just sighed in a happy little sigh. I'm like, Oh, look how everything's on the line. It's beautiful. Um, but they had, uh, the important thing was the neural network running on the computer, but the fun thing was the UI. [00:34:06] James: Powered by NET, baby. Uh, that's how you, that's a, there was, I think the one before that, I think there was like a WPF, uh, demo, or there was like another one that had WinForms. I like, I love it. It's not, they're like, Hey, this is realistic. We know you're writing WinForms apps. So boom, done. There [00:34:22] Frank: is a color selector on WinForms. There is a font selector on WinForms. You can make a good looking app on WinForms. [00:34:29] James: They had custom borders on those buttons and custom fonts on those, on those buttons. I'm pretty sure. They [00:34:35] Frank: did bold and fake italics, not real italics, fake. They did the standard italics. [00:34:42] James: Amazing. And nothing was lined up. I think someone tried to recreate it on Twitter as well. I think they were like doing a design challenge. Can you recreate this WinForms app? Oh, [00:34:52] Frank: that's amazing. Pretty good. Yeah. We should have a, we'll start a Reddit thread, improve this WinForms [00:34:57] James: app. There you go. I like that. Well, moving from, um, NET y stuff that runs everywhere to Microsoft y stuff. Let's hop over to the iPhones and iOS 17 came out. I got the notification on. Uh, my phone that it's done. It's here. It's happening. And I want to talk a little bit, just maybe about some of the highlights for. Developers that you might want to be like, Hey, um, maybe I want to incorporate this app in my app. Uh, the first thing you should do is test your app, make sure that it works. In fact, you probably should have been testing your app for the last seven months, like I have, and all my apps work beautifully. So your apps work beautifully, right? Frank, because you've also been testing all of your apps. The entire web, because you know, your livelihood relies on your apps. Mine doesn't. Mine are, mine are numbers on screens. But I'm assuming, Frank, that you've been diligent in the testing of your applications. It's been a hard [00:35:55] Frank: summer, James, and um, the beta summer got me. I had the betas installed. But, oh no, okay, here, here, long story short, no, my app keeps crashing on iOS 17 and I'm super embarrassed. I'm talking about, uh, Continuous, my IDE, my C sharp and F sharp IDE crashes, has a crashing bug on iOS 17. I did not catch it during the beta, because I was so busy working on a Vision OS app, because I want to be a Vision OS developer, that I neglected my apps. I'm a bad app developer, but um, I feel completely guilty about it. I'm working my butt off to get a fix out there. Uh, so I do highly recommend everyone, if you have apps on the store. Make sure you run every single one of them on the latest release. And you know what the problem is? This was a pretty smooth beta, but it wasn't perfect. In the early betas, my apps had, um, other bugs too. And then in the later betas, like, things would just clear up. I wouldn't get errors anymore. Everything would run normally. And so I tend, I tend, I tend, that's the excuse I'm going with. There's too many false positives, therefore I don't test at all. Yeah, that's, that's great. So, what I have to remind myself next year is, even though there are false positives, you still have to keep testing diligently up to the very end. Because, they got me. They changed something. And now I gotta get an, uh, release out ASAP. [00:37:27] James: Yeah. And I believe that also I was reading some things that between the last preview and the GA release, uh, it might've been an Xcode or the SDK or something. Now in iOS itself, they removed an API, uh, which was in news kit or newsletter kit or news, some newspaper, something I was reading on it. And that was causing a lot of crashes for people because. It wasn't getting linked, like the linker, however it works, however the build stuff works. And it would crash, cause it's like this API doesn't exist. Blah, blah, blah, blah. So there were some steps on there, how to remove that as you were waiting for the final bits to get it out. So that was kind of a, an odd one. Now I have not done any recompilation because I'm super duper lazy. Uh, and I have not even installed Xcode 15 cause I'm that lazy. However. I do obviously test all my apps, you know, I go for the winter. I like to wait for the winter. And if that winter comes early, because if the winter comes early, because my apps are crashing, then that's something. Um, but, uh, one thing I noticed that I think is really cool for developers. And maybe none of us are doing this, uh, because at least in the NET world, you'd have to build this in Swift, which is widgets. Uh, and this is really neat. They actually. Introduce, which I didn't even realize, but I was on my phone and I was putting away my keys and I have a bunch of widgets on my home screen and I have one for pocket casts, which is my podcast player and. There was a little play button on there. And I didn't really realize that my butt, my finger accidentally hovered over it and it started playing a podcast and I was like, Oh no, like audio came out. So I went to go swipe away the app. The app was not launched. The widget was playing the thing and I'm like, what is happening right now? Like this is wild. And as the interactive elements, you can now add interactivity directly. Into your widgets and live activities, which is super duper neat. And, you know, this reminds me of, I know Android users are like, we've cut, we could have done this for the last 18 years, which is totally true. You can make interactive widgets. Totally true. But I think for iOS, since I was 17 just dropped, this is a pretty cool [00:39:35] Frank: feature. Yeah, um, it was such a cool feature that I was actually thinking like, why am I trying to be a Vision OS developer? I should just be a widget app developer because it's almost like a whole new interface. It's a whole new place to play. And honestly, I think like hell has frozen over. I really didn't think Apple would ever do this. Add interactivity to the widget system. But I guess they keep throwing more into widgets. So I guess we're going to keep getting them. I really think I should have been working on like a Super Mario Brothers ripoff. Or something that you can just play inside a widget. That'd be cool. Cause like, who knows if any of like, the content stuff... Works for widgets, like, you know, like game content stuff. Anyway, um, yeah, I, I look forward to the new crazy world we're going to live in where apps are just on the screen. It's going to be terrible. I don't, we'll, we'll see which apps actually survive my home screen. But, uh, I'm also interested in, forever I've wanted to be able to put, um, Some stupid little app on the screen. So I just have to go back through my brain and think about all the apps I've dismissed because it was never a possible technology before, but man, now that this is happening, what's next? Are they going to allow us to put watch faces on the watch? Who knows? Who knows? It's crazy. I think what's [00:40:56] James: that app that you built for the watch? Uh, Spacey? [00:41:00] Frank: Spacey, Spacey should come back as a widget app. Yeah, that'd be a good [00:41:04] James: idea. Yeah, we put it right there, game on it. Boom, done, done, done, done, done. I mean, I thought that was neat. [00:41:11] Frank: Everyone just wants to play an infinite dungeon rogue like game, right? So like, that should just be always on your home screen. Just infinite rogue, boop, [00:41:19] James: boop, boop. I think that there's opportunities here and that's why I kind of wanted to mention it, is that it is sort of a new UI For developers to tap into. It was just displaying data before, which is also good. But now I think that there's opportunities to do the things that you're saying. So I, I think just like, well, this has been available on Android for a long time. I think for an iOS developer, uh, this might be something to double tap on and definitely do that. And like you can put stuff, you know. All over the place in live activities and which are built with widget kid and activity kid are now available on iPad. So there's all sorts of stuff that's happening. And the other thing I noticed too, is that Apple is really diving deeper into app shortcuts, which is sort of like deep linking and doing things. And that's mostly because. The iPad, sorry, the iPhone 15 pro has that new button. And one of the things that they really talked about in the video, which we didn't really talk about in our, our, our video last week or whatever, is that you can launch a app shortcut. So they're marketing the button as yeah, we've provided you a few niceties like the flashlight and blah, blah, blah, camera, but if an app. App developers supports app shortcuts, then you can, for all intents and purposes, now turn that thing into anything you want, uh, which is really rad. In fact, I use this app called Card Pointers, which, uh, gives you, uh, recommendations for your credit cards for, to maximize your points. And often what you have to do is you have to like launch it, see where you're at, blah, blah, blah. But now the developer added some app shortcuts, so you can just one tap on it. If you're out and about, it'll bring up kind of like the, the, the VR mode that will like, show you like, just point to where you're at, hit that button. And then it'll tell you what credit card to use to maximize your points, which is pretty cool in general. So, you know what I'm saying? There's probably little things that you could do in the app shortcuts. If you have that type of app, like for example, The Cadence application, MyCadence. Wow, I should add an app shortcut that's like, Start a thing, right? Boom. That'd be cool. [00:43:27] Frank: Um, I mean, you should add shortcuts for a million things. Like, I mean, between user activities and shortcuts. Those are the main ways apps talk to the outside world. These days, the share sheet interacts with them. As you said, like, just the whole scripting thing that you can do with shortcuts, you know, chaining them all together, making them conditional, having triggers run them. If your app should at all take part in those, you're probably already deep into this. But it is nice that that button's finally going to be semi programmable now. I tend not to, like, over customize things, but I am thinking of horrendous scripts that it should run of, like, a million things it should do in a million different apps. I'm going to try to keep it a little cool, but I'm going to have fun also in the beginning. I don't support too many in my apps. My apps don't lend themselves 100 percent to that paradigm. But, um, some new apps I'm working on. I've definitely looked into shortcuts. Between like, sharing with Mac, handling Handoff, making sure you're cloud compatible, making sure that you're Siri compatible, making sure that you're restorable, making sure all these things are happening, you just kind of have to like, dive into all these things, so. Yeah, super highly recommended. Um, you know what I was also thinking about was on the watch, they have the, um, gesture sense, um, gesture recognition now. So, single tap, double tap, I think making a fist, I think, is a gesture. Yeah. And so I've been meaning to look into, like, how you, how you capture those events in an app. I can't quite tell if they're only OS level events. Do they interact with the shortcut system, perhaps like the button on the phone is going to? I think that's always kind of the problem with Apple. They have, like, five or six different ways apps talk to each other, and the OS talks to apps, and you always got to figure out which one it is, but it's kind of fun to see, um, all the things the OS will provide your app if you opt into all those. [00:45:41] James: Yeah. Um, another thing in this one that I've been noticing, I've been diving through the release notes, there's quite small changes or some big changes like we've been kind of talking about, but the one biggest one so far that I have to mention, Frank, because it wouldn't, it wouldn't be a merge conflict. And James talking about iOS APIs, if we weren't talking about Storkid, that's right. Our good friend Storkid getting a huge update. Woo. Um, I'm not happy about any in app. Purchase updates ever. Stop it, everybody. Stop updating stuff. Why? Um, probably, I don't know, cause then I got to change my APS. [00:46:14] Frank: Didn't we do a whole episode begging people not to change? No, not you. I'm, I'm on your side. Didn't we like beg everyone, stop changing your store APIs. It's a shopping cart. Stop making it so [00:46:24] James: hard. is a lot. Google changed a lot recently. Apple changed a lot. There's new features. There's changes. There's new stuff in StorKit 2 only. I'm waiting for them to drop StorKit 1. They fixed a bunch of stuff, which means probably anything that I had hacky workarounds for. There's other stuff. Uh, yeah, let's just say there's a lot of changes in this. But there's some new APIs like you can now. Anything standing out? Yeah. Yeah, show manage subscriptions. There's a new API to allow your users to easily Show subscriptions and groups and all this stuff. That's nice. Um, that's a good one. Um, that's pretty much, pretty much it. There's, there's a lot of new stuff though. I would say in the in app subscriptions and store kits around displaying different, uh, things in, in the app automatically, that makes it a lot easier. We talked about that before. Uh, so I do think that's nice, but it is a significant, if you, when you go through the release notes, like it's, it's a significant. a chunk of change, um, which is not great. And it makes me sad. I mean, you're [00:47:28] Frank: making the face that I, I, I make also because, but for her unrelated one for the augmented reality changes. They just, they completely changed how ARKit works. Uh, I think I, we spent a whole episode on it, or maybe a half an episode, but it continues to boggle my mind. Uh, the worst part is, like, they changed it, obviously, to be in line with Vision OS, and for all that to be good, but the APIs aren't even 100 percent compatible between them. So, for example, if you want to do a custom shader to render your awesome 3D object in an awesome, cool, fancy way, You gotta write it one way for iOS, and one way for VisionOS, because, yay. And that's all on top of, uh, I think I finally found it in their docs, uh, their upgrade advice for upgrading from old ARKit to new ARKit. And they said something along the lines of, you should rethink how your app renders its AR content. And I'm like, hum. Uh, I guess I will rethink how my app renders it's AR content. [00:48:38] James: Yeah. All right. All right. [00:48:40] Frank: So, yep. So, uh, I just wanted to brighten your mood with a little shock and fright here. So I saw you had the frowny face. I just wanted to tell you about my frowny [00:48:47] James: face. Good. I like that. I like, I like frowny faces on the near end of every podcast. Uh, I will say that I used for the first time, uh, PassKit and logging into an Apple website. And it's a very lackluster experience. And you have to like scan a QR code and then you're like logging on your phone. I don't know. I'm like, it's very odd, but there's a bunch of new authentication APIs in iOS 17. There is a new tip kit, which is like about building tips and like introductory templates and stuff. I really actually. Do you think onboarding of applications is very, very important? So I'm happy to see this be part of the system. And I would love someone to create a cross platform tip kit. If you're out there people, that'd be cool. And ideally you hover over elements and do stuff. So I think stuff like that is important to be built into the, some sort of framework because onboarding people onto applications is super important. And if we can make that better for everyone. Why [00:49:44] Frank: not? Uh, that was good that you brought that up. I totally, I, I remember them mentioning it. I think I read a little bit about it, and then I totally forgot about it. Thank you for bringing it back up. I did a presentation for a conference probably literally 10 years ago now, um, where when, um, Await first started working on, uh, Um, Monotouch on Xamarin. iOS back in the day. We didn't have Async Await back in the day. And when we first got in, like, look at all these amazing things you could do. And the first thing I did was like a big tooltips overlay, walk you through the app. It would highlight something. It would Async Await for you to click on it. And then it would, you know, pop up something else and Async Await for you to do something else. And it was my little tutorial thing. And I, I always kicked myself for not like, Turning it into a good library that I used in all my apps. So maybe the Apple's done it for me, or maybe I'm just going to make, make me, make me want to actually finish my own that I started 10 years ago. [00:50:46] James: Yeah, that'd be good. Um, I'd like to go see that talk. That'd be a good talk. That'd be pretty cool to actually see if you can find it, dig it, dig it out. It [00:50:57] Frank: was a mono. Um, [00:51:00] James: space, space, space, space. Thank you. Monkey space, monkey space, [00:51:03] Frank: monkeys. It was one or the other. Cause it changed names. So it's, it's that old, depending on how old it was. [00:51:12] James: Uh, anything else you want to talk about in the iOS stuff? 17. I mean, at this point, you're not really integrating new features. You're just trying to get your app to work. Yeah, so [00:51:21] Frank: step one, recover. Step two, accelerate. Yeah, there you go. Yeah, but honestly, um, there weren't any real huge groundbreaking features in iOS 17. You can tell they put a lot of their attention into VisionOS and things like that. And so, I think that's my other excuse. I'm just keeping coming up with excuses for why my app crashes was, um, the OS seemed pretty stable, honestly, from an app developer's point of view. Uh, so I wasn't anticipating this. And so now, uh, get back onto my feet and then start adding [00:51:56] James: new features. I agree. I participated in almost all the developer previews and betas. And yeah, it was a pretty solid, uh, maybe because of that, right. They didn't change that that much. I mean, there was a few things obviously removed and updated, but in general, pretty solid, uh, but yes, go off and upgrade all the upgrade and done at it. Eight upgrades, iOS 17 upgrades, laptop upgrades, neural network upgrades, all the upgrades, Frank, Frank did it. Got a car upgrade. I got a haircut upgrade. Boom. All the upgrades. [00:52:26] Frank: I was trying to download the Apple upgrades over, uh, hotel Wi Fi. It did not go well. It went from two hours to two weeks to four hours to 30 minutes to you'll never get this update [00:52:38] James: Frank. Oh my goodness. Uh, all right. Updated. Uh, well, I think. I think 52 minutes in, I think we're going to wrap it folks. Let us know what your favorite features of any of the stuff that we talked about today is, have you upgraded stuff? Is there stuff working? Is it great? Let us know. Go to merge conflict. fm. You can find a contact button. You can find Twitter buttons. You can find YouTube buttons. You can watch this on YouTube. If you are not, uh, you just find it, Merge Conflict. You can listen to it on a podcast app. You can rate it or you can review it, share it with a friend. Um. And you can become a Patreon. We have a bonus episodes this week. We talked about garbage cans. So if you're interested in that type of deep discussion, check out patreon. com forward slash MerchConflict. fm. You can find a support button at the top or the bottom of the show notes, wherever you're at, but that's gonna do it for this week's Merch Conflict. Until next time, I'm James Montemagno. [00:53:27] Frank: And I'm Frank Krueger. Thanks for watching and listening. Peace.