mergeconflict242 Frank: [00:00:00] All James: [00:00:08] right. Before we get into this week's episode, let's give a little update to our amazing listeners. First and foremost, we love all of you second. Um, we got some emails recently and we've both been promoting our applications and also, um, Putting out some new updates and doing some promotional stuff. Uh, I surrogate 3d came out and I believe that, uh, That's taken off like wildfire, Frank. Frank: [00:00:37] It has, it has, I've been very lucky, you know, uh, we're both always nervous when we're releasing new apps. And I think I said on the last couple shows everyone ha uh, welcomed it very kindly. They had very nice things to say, and it's sales have been good, which is even more important to me. I don't care if people hate it, as long as the sales are good. Now I'm just kidding. Um, but it's been going very well and yeah. I have been doing promotional artwork so much. In fact, I was live streaming coding on the app and I realized I've been doing so much promotional artwork on the app that I've actually forgotten how some parts of the code in the app work. Cause it's been so long since I've actually been doing the coding. I've just been doing documentation and screenshots and all that kind of stuff. That was James: [00:01:20] pretty cool. I mean, it's, it's nice to get your app out there, but then it's also. Nice nicest, take a beat, right. And just sort of admire that, Hey, my app is out there and in fact, I was releasing an app update this week and I had to test it first and foremost. Thank you so much for helping me test my application, um, on your 18 VMs of, of, um, Macko ass, which very smart by the way, what Frank does and what I should have done is insult VMware player, VMware player, or whatever, a fusion fusion, and then you can make like a snapshot of your current machine before you upgrade your machine. Yeah, Frank: [00:01:55] you can test. Yeah. Uh, creating Mac images is very difficult. Apple does not make it easy. You are legally allowed to run, um, your operating system and additional VM, especially if you're a developer it's in the license, it's all good, but they don't make it easy. So, um, there are newer versions of VMware that can, uh, restore from your recovery. Partitions, I believe is one way to do it. Um, restoring from. Back up snapshots. There's a few different ways to do it. Um, some work, some don't if I'm thoroughly honest, but once you get a working image, you're good to go. Just make duplicates of that and keep it around because, uh, what happens? So you were building on big Sur, but you were afraid it wasn't going to work on any of the older Macs. Right? I James: [00:02:45] was putting in these in-app purchases, like we talked about last week or two weeks ago or whatever, and yeah, it was the first time. Building an application with a new version of X code and a new version of Macko ass and putting it out. And I was just like, You know, it'd be nice. Like, you know, when I have my iOS, I have my, my slew of iOS and Android devices that at least as a few versions, you know, I have iOS 12, I was 13. I was 14. I have, um, you know, and you have emulators and simulators and you can do that. And I have a bunch of Android versions, like two or three, and when I'm serious about it and it's, and it's, I'm feeling like, Oh, this is a hefty update or a brand new application. I'd like to test it on multiple . But for my Mac app, I was like, I don't even know how to. Install it like installing a windows application is pretty tricky. Same problem with windows, right? It's just kind of updates and you'd have to do the same thing. You'd have to create VM snapshots of it somehow magically to get different iOS versions. So you luckily were able to grab my source code and recompile for me. Frank: [00:03:44] Yeah, which is always tricky, right? Like, but yours is open source. I guess you've had, it's been proven that I can compile on other machines, but not all my apps compile on other people's machines. I was like, I don't know, James, I don't really want to get the source code, but that's what I ended up doing. Now, if I was a better Apple developer, I would know how to resign packages and binaries, but that is. A big hole. In my knowledge, I am really bad at signing things. And every time I think I've learned exactly how to do it, like from the command line, you know, using the code sign tool, all that kind of stuff. I fail every time I can never get these stupid binaries to run. So just recompiling it, signing it yourself as a part of the build process is always easier if it compiles. Yeah. It's a good job programming. Yeah. If it James: [00:04:35] compiles. Thank you. Yeah, it, it, it worked. It's awesome. So I get to go. I'm very excited about it. I just got updates out for, um, for my stream timer on Mac and on windows and byte. I did another update to the Mac version. I didn't have any tasks cause I felt so confident in the compilation steps. It totally worked, but sticking with Mac and sticking with ICER, get 3d. I believe that the region you're creating promotional stuff is because somebody ding, ding, ding, Frank Bell got a special email from Frank: [00:05:03] Apple. Ooh, I did. I did. These are the wonderful emails you get from them when they want to promote your app a little bit in the app store. And it can actually come in different ways. I remember we were talking about this years ago because I think Apple did it for Calca and I think we did it, the story, James: [00:05:24] the whole story thing. Right, right. As all, like, it was like a deep dive thing. Frank: [00:05:31] Right, but this happens so rarely that I always forget like how to do it, what our org, they need, what's going to happen, all that kind of stuff. So it feels like a fresh new experience every single time. And so the way it works is they'll send you an email. And they'll say we want these additional pieces of promotional art. This is beyond the screenshots that you've uploaded. This is beyond basically everything else you've ever done, because they have some very explicit templates that they want you to fill in to provide the necessary artwork for specific parts of the app store that are going to be in. So I don't know if you've ever really noticed this in app store connect because my eyes certainly glaze over it, but there is a promotional artwork. Tab there and, um, Uh, app store connect for your app. And when you click there at the top, it'll say whether any has been requested for your app. And they'll email you to tell you if that's happened or not. James: [00:06:29] That's why I've never seen it because I've never gotten an email because my eyes aren't that important. Frank: [00:06:34] Uh, I'm sorry. It'll happen, James. It'll happen. Um, especially my stream tire. It's going to explode, but, uh, it's going to happen. Um, you know, one unknowing, super annoying thing about it, though, all their templates and they want the way they want you to submit the information isn't Photoshop document format, P S D, and you know, which app out there can make and read those files. What app called Photoshop and it's very expensive shop. Oh, it's terrible. So I had, um, I had a friend helping me out because when I did this for Kalka, I actually signed up for an entire year of Adobe junk and I was like, never again. Um, they have like cancellation policies where they charge you. If you try to like, get out of your software contract and all that kind of stuff, I'm like never. Paying for software from them ever again. And, uh, it's I had to have a friend helped me out with the whole file format James: [00:07:34] thing. This is a big deal because, you know, I think that one thing not to be overstated is that this is a big deal. Like I said it five seconds ago, but it's a big deal because you know how many people a day are opening the app store and how many people are going to that app tab or are on the today widget, you know, home and are going to see. What maybe whatever it is, how many deep it is. I mean, who knows how long it'll be there for who knows when it will go up. It's kind of a huge deal. So I want to say one, congratulations, Frank, because like, when this happened with Calca, this was a ginormous deal, I thought, uh, and I think that this is spectacular. Just it's it's amazing. And I. You know, when you put out good quality software like you do, and you put a lot of time and a lot of effort, a lot of energy into it. And we talk about a lot of the behind the scenes stuff. You know, when we do this podcast, we're literally talking about the things that we're working on every single day. And a lot of that goes into the things that we're building and the stuff that Frank is putting out just like this crazy apps or promotion stuff. And I think it's a huge deal. I'm just saying it's a huge deal, Frank. Frank: [00:08:43] And I agree with you. It, um, the app store is huge. Uh, we were talking before this podcast about how many podcasts there are out there, how many apps there are out there. It's really hard to differentiate yourself. Um, I named, I started 3d. I started 3d mostly because I wanted to like SEO off of myself, you know, like it's hard to differentiate over. I've got a name that people, some people recognize I might as well stick with that name. And that's really just an attempt to differentiate yourself. But, uh, Calco when it gets promoted by Apple it's sales go up 50 to a hundred acts somewhere between there, like this isn't like it's double or triple it's a lot. So you can tell how big the store is. If. Promoting an app increases its sales that much. So it's yeah. It's, it's super awesome. I don't know if that will happen for eyes or good 3d and Apple is super coy about like, Hey, we're thinking about promoting you. No guarantees. No, no timeframe. We won't tell you when it happens any of that stuff, but you know, you have to pay to play. So, um, hopefully they'll, hopefully they'll do it James: [00:09:59] now. I want to ask you one other question, which is, are you. Planning any updates to the app in the preparation that your app will be promoted and more people will be downloading it? Frank: [00:10:11] Um, no, but I was pushing really hard to get the Mac version out. Um, but no, I can't do features that fast. It turns out this is a really big complicated app and it's just not like that. You know, if there was a few more, one day features to throw into it, I probably would have, because. I spent so much time on it. What's another day or two. Um, so I've done all that. I think I've done a lot of the easy features already, but that's smart. I don't think I would do that because, uh, one thing I noticed is you get a lot more support. Emails when a lot more people buy your app, right? So it's not a great time to put risky new features in, you kind of want a really stable version of the app out there because the most people ever are going to see it all of a sudden, and just watching my own support queue. I'm like, Oh gosh, that. Bug and Calca that I haven't fixed in a year. Guess what happens when a lot of new people get the app, a lot of new people are frustrated by that bug. So I'm like, okay, gotta fix that bug now. Um, because it's just been amplified by all the new customers. James: [00:11:20] Yeah, it's kind of bittersweet, right. With, with more sales comes, more customers comes more support tickets. I mean, literally we were talking about Zencaster we're, we're a quarter podcasts and there's tons of a new rollout is new beta open beta with the video and all this stuff. And right now, Literally on their support tickets. It's like, we are so busy with our current release. We will get back to you soon, you know, like, like, uh, okay. Like, all right. I guess they'll get back to me Frank: [00:11:49] soon. Sometimes it makes perfect sense. I mean, this is like the best kind of problem to have more support means more customers. Great. You know, I'm fine. Happy, happy. Um, but yeah. You can't reply to everyone. It's just impossible. Um, cause they just keep accumulating and it turns out, um, I sleep at night, but people keep sending email at night. Somehow. Like the world seems to be daylight and other parts that I'm not in. I dunno, I haven't quite figured it out if the earth is flat and all that, but somehow the emails keep coming. Um, but that's fun too. Um, because a lot of it are feature requests and it's like new ideas and I always kinda love feature requests, but that's, when you say those are the easy ones to reply to you, right. That's a great idea. I'll super-duper try to get that in. What's your response to the feature requests? James: [00:12:41] Um, I don't know. It depends, you know, I definitely say that I'm like, Oh, thank you so much. You know, I'll put that on my backlog, blah, blah, blah. Right. I think that's the key of it is, you know, we've talked about it is you can't feature creep your own product with every single thing that every single person wants. I will say, though, I am totally doing that in my stream timer. Like I literally did. I literally do that for a lot of people. Is some of these people, I mean, people have great ideas though. That's the thing is I don't want to belittle people, you know, because, and just. Say that because sometimes I'm just like, wow, I wouldn't even thought of that. Like one thing in my stream time, or someone reached out to me to do, which was, um, they're, they're, um, doing a timer for a soccer match. Okay. And then has to count up to 90 because soccer matches are 90 minutes long. And the issue that they have is that how I format date time, like the time is I format it with our hour, minute minutes, second, second, which is. 60 seconds, 60 minutes, you know, 24 hours. Right. You know, and that's how, and then you do days and just, that's just the normal string format, time span on it. And they're like, it'd be really nice if you could. Do total minutes, right? You can do total minutes, total seconds or whatever in there. I was like, Oh, that's really smart. I was like, that would be cool. However, I'm going to have to provide a dropdown and say, you know, use custom, which is the default or use these type of predefined, you know, file format out. I'm just like, That's a great feature. I don't know what I'm going to do it, but, uh, definitely did put it on my backlog. Right. There's kind of like this, uh, joy when I'm like, well, that is a great idea. Right. And I start thinking about how am I going to implement it? And then I'm like, Oh, that's going to take way too long. Right. Um, but sometimes people get really excited. Like in my stream timer, I had it. So you could call a command via URLs, but it would, you could only send it to the. There's three countdowns. You can only control the first countdown and they're like, Oh man, it'd be really great. If I could control all three countdowns. And I was like, Oh, I can literally add that feature in 10 seconds because I just need to see if it starts with countdown one countdown, two countdown three, and then pass it to their product view model because the infrastructure is there. So one night I was banging on it last week. I'm just like feature added feature added feature added. But that person that really wants it for that soccer match. Right. I'm just like, I really want Frank: [00:15:06] to do your feature, but I don't know when I'm going to be able James: [00:15:08] to do it. So probably not. Frank: [00:15:12] Oh, it's hard. It's hard. Well, you know, it's funny. Uh, okay. Stepping aside from user features for a moment, I was thinking about what you were saying about that. Did you change the appar at all, knowing that it's going to get promoted? No, but I did realize I need to change my apps or something to think about a little bit more in the future. When I was creating the promotional art for the app, I really realized that I need a better solution to screenshots than what I'm doing today. Um, it's always a trick, right? Um, finding the right poses for your app and filling on men with trick data, example, data, whatever you want to say, promotional data and all that kind of stuff. Um, which I've gotten better at. Um, my apps usually have examples in them, so I can open an example, move the camera around a little, take the screenshot. It's a pretty simple setup that I have going there, but in the case of Apple, Apple, promotional artwork, they really want. Scalable vector graphics with alpha channels and that kind of stuff. They don't want screenshots. That's not what they're here for. Ideally, Apple wants you to hire an artist and make a million illustrations of your app. You know, hand-drawn cutesy little foxes running around a tree kind of stuff. Um, I didn't. I have that. And I didn't feel like hiring an artist at the time. So what I did was kind of coax my rendering engine and not even well, this, this ended up being a super manual process, but with a few tweaks here and there, I was able to simplify the process, but create alpha artwork, create nicely feathered, um, edges on things so that you could get these layer compositions. What I realized was like, that's just good. Promotional artwork for myself. I could use that on the website. I can use that in other places, but I realized like in some apps I need to think harder about, um, uh, screenshots and baking that into the engine a little bit more. James: [00:17:18] Yeah. I had a friend that, um, they were releasing a game on the X-Box one during the X-Box Indy, that idea to X-Box program. And they were asked for one 83 to give us a new, it gives a 32nd clip, right. They're going to use five seconds of it, but give us a 32nd clip of your game. Like the most amazing thing ever. And like, you need to be able to orchestrate and pivot the camera to us. So, so they spent. Like a month basically like updating the engine, doing all the stuff, like fine tuning, getting everything so they could adjust the camera, move the camera, do all this stuff, like do all these and make these perfect things for literally five seconds of promotional video that would be out there. And it delayed, you know, it ends up delaying the game, but you're like, all right, well, this five seconds is going to maybe be the most five important seconds of this. Promotional thing. It's going to be on stage three, all this big things. And yeah, you have to sort of think about that, but of course you don't know. Right. Cause what if your app doesn't get promoted and you're like, Oh my God, I spent all this time. But of course, if you believe in the product and you believe this there's there's good possibilities. I mean, I think for my cadence, like, which is an app, um, and Island tracker, I'm super proud of. If I was to really invest deeper into it, I could really make a stunning artwork for the app store and some videos and all this stuff, and it would take more time, but it would probably be worth it at the end of the day. But Frank, before we get into that, let's thank our brand new sponsor this week. I'm very excited about it. Is it a company called web Adams, web Adams dot? I N this is a really cool piece of tech and I'm so excited about it because it's something that I've had people ask me for a long time, which is okay. How do I pull in JavaScript? And run it inside of my Xamarin forms, applications. And how can I possibly run that stuff like in the browser? And that's what web Adams is. It's a JavaScript bridge for Xamarin forms. It works with pure JavaScript, but also with TypeScript. This is really, really cool. Okay. That means that you have the ability to sort of supercharge your xamarinforms apps. With JavaScript and TypeScript full up and you can run those applications on the web, um, on iOS and Android. Um, it. Additionally, since it's going to have this bridge, it will need me to do code push features, kind of like react native does, but for your Xamarin forms applications, um, you can also have all of the Xamarin forms, controls run directly in the browser to written a hundred percent in TypeScript. This is a little bit different, right? A lot of people are like, Hey, I want to run my XAML. I want to run my XAML all up on. The browser, but you can write TypeScript for years, Amerind forms, applications. This is really, really neat. I love it. It also allows you to reuse existing C-sharp code in Java script, and you can integrate this into existing applications. So you have a little bit of an existing app. You want to pull it in. You can do that. You can sort of think of it as MVVM. In JavaScript for your Xamarin forms applications, you can transition from C-sharp to JavaScript with breeze with one way in two-way data, binding with all of that crazy dependency, injection stuff that you know, and love. You'll get instant refresh from web servers. You can reduce your deployment times and you can even do side-by-side versioning. This is really neat. Tech, because a lot of people are thinking about how they bridge the gap between web and desktop and mobile and web Adams is a really cool piece of tech that are really, really am into, and definitely say, check it out. What's cool is that they have an entire playground, like you would expect for a web tech right in the browser. You go to web Adams that I N slash play. We're just going to web Adam web Adams dot I N, and check out all the cool things that they're developing and thanks to Webb Adams for sponsoring this week's pod. Frank: [00:21:07] Thank you, Brett Adams. And I did not know they were sponsoring us. And I think that is super cool. I love, um, mixing languages like that and being able to break down those walls so you can make your app more internet. I like the fancy tech kind of stuff I used to be into. Well, Frank, James: [00:21:26] I had something completely different that I wanted to talk about this week. I don't know if they have time for it, but it kind of revolves and I think is pertinent for. Mac and probably iOS and iPad iOS, and maybe with I circuit 3d. And it's something that has been out in the world of iOS for like a year and a half. And I don't know anything about it because I only write iOS applications with Xamarin forms. So I don't. No about this thing, but apparently it's the new thing that I should know. And it's called a scene delegate. Frank: [00:22:05] Oh, a seen delegate. Yes, sir. I think we've alluded to this puppy before. Are you talking about our UI scene? Delegate? Just so we're on the same page here. Yeah. It's James: [00:22:18] like a UI responder or it's a UI scene delegate face thing. It's the replacement for app delegate, but it also like works with an app delegate. I'm so confused, Frank, and I think it comes from Mac, but like now it's on iOS and I'm so confused and people are asking me questions. I don't know. I need to ask an expert. And that is you Frank. Frank: [00:22:43] Oh, this is wonderful because I was just doing this myself. I was upgrading continuous to support UI scene delegate and yeah, it's a brand new feature. I think it came in iOS 13. If I had to guess, do you happen to know whatever? Yeah. Around there? I believe so. Yeah. I believe so. And it's most important on what Apple calls iPad as developers. We don't really talk about iPad iOS because, but yeah. What it allows you to do is have multiple windows on iPads. Now that is not the terminology. Apple uses. It's the terminology, everyone in the world uses, but it's not the terminology Apple uses because we've had UI window forever. Right. Our apps have UI window, but. You couldn't ever technically there's one James: [00:23:34] way, one, you could Frank: [00:23:36] technically, you could technically make a second, but it didn't really appear unless you had a second monitor or something like that attached to the computer. Well, um, iPad. Oh, S you can now have properly distinct different. I'm going to keep, sorry. I'm going to call my windows, but distinct windows, um, in different, uh, scenarios. So like one might be pinned to your messages app, or every time you open a photo, it might open a new window instead of reusing the same window. So one app could be, uh, Could be in the task manager multiple times and more importantly, James, when you take that app and make a catalyst version of it or run it on an M one Mac. Those actually become distinct Mac windows properly. So it's your way using UI CA and iOS to create a multi window application, but they call them scenes. Okay. So take everything I just said and replace the word window with scenes. And that's the trick James: [00:24:43] not to be confused with scene kit. Frank: [00:24:45] Correct. Just, yeah, I know they already had UI window. They were stuck. They were just stuck. James: [00:24:54] Well, you would think they would just say multiple windows, but they didn't want to have windows because it's windows. Okay. So let me get this straight is okay. I definitely understand it on a Mac, which is, Hey, here are multiple windows. You can have. So example, let's say I'm in office and I want to. I'm on like a file browser inside of office. Right? I don't know if this is a real use case when I'm using optics. I use it every day and in office, I open a document and it opens in a new window and that other window where I could select documents is still open. So I could open another windows and I'm like editing two documents at the same time on a Mac. That makes sense. I guess you're saying on an iPad, I could. Also in like the app side by side, like the two side-by-side app thing. Frank: [00:25:41] Yeah, exactly. Well, number one, it'll come up in the app switcher. So let's say I have I circuit on there and I opened one circuit in one window and then I opened another circuit in another window. I can use like the four finger swipe. To bounce between them. I can go to the task manager by swiping up from the bottom, or I can pin different things to the different windows and create those different scene kind of things. The important thing is now your app has multiple background foreground events on different scenes because you still have. This kind of single app at a time, roughly like, um, on a device at a time. So instead of your app, delegate being told, you're coming to the foreground, you're going to the background, the app delegates not told that anymore. Instead for every single one of these scenes, windows, whatever you want to call them. You have the UIC navigate as you were discussing, and that has your coming to foreground go into background stuff. So now you have to think that your app can get many of these foreground background messages all the time. James: [00:26:54] Okay. So what they've turned it into is like Debbie BF. Frank: [00:27:02] Is that right? I don't remember how, uh, WPF handles multiple windows, but yeah, I mean, it, it, it, it is simply that it's open those they're called scenes, um, for reasons, uh, it's, it's really not too bad. The hardest part is if you want to support older iOS versus new iOS, the decision I made was if I'm going to support UIC and delegate, then I'm going to require iOS 13. Simple because it's too hard too. It affects the low level architecture of your app. Now, if your app doesn't do anything with backgrounds, and if you can't think of any possible reason why anyone would ever want multiple windows in your app, then don't do anything. It's fine. It's fine. But if you got to think of a scenario where someone would want multiple windows of your app, then I think it's completely worth doing. James: [00:27:53] Got it. And that kind of makes sense, like in, you know, bigger, more complex applications, especially if you're focusing in on iPad. Like I think this is what you've told me is it makes a lot of sense on iPad and that's the push. Is it do anything on normal iOS? Like on my iPhone? Does it do stuff there too, or, no, Frank: [00:28:11] I don't think so, but don't hold me to that with those plus size phones. Sometimes those get some iPad features. Um, It's very possible. So what you'll notice is apps that support this. When you go into the task manager kind of mode of your phone, there'll be a little plus in the upper, right? And that's kind of a way, so multiple windows in your seat, multiple scenes in your app can be created different ways. You, we, as programmers, we can just create a new one and tell the operating system ha we created a new one. Or the operating system can tell you, Hey, you got to create a new one and then it's your job to do that. So that can happen. Those multiple different directions. The user can do it, or they can do it from your app. Um, I can't quite remember what the differences between. Phone versus iPad. The huge difference, the important differences on Mac, because we have all these iOS apps that have just been thrown onto the Mac and Mac is a multi window environment. So it's kind of frustrating to have apps stuck. In a single, uh, single environment like that. Something I should make clear too is you're not restrained to one kind of second window. You can have multiple different kinds of seen delegates. So if I have a media app, I might have a player, uh, an audio player window versus an image viewing. Window. And they could be two totally different UIs for those different specific scenarios. And that would make it a good Mac app because then it could have multiple windows and you can manage it that James: [00:29:51] way. That was really, really fascinating because it's not, I want to get this straight. It's not multiple instances of the app. It is multiple windows of an application. So like on, on visual studio for Mac, right. You can say. Create new instance, great new instance. And that's a full new instance of the application or is that a new window in it? But when we're talking about office or I circuit or things like that, right. You could have Calca and you could have every single file you open as in a new window of Calca. Is that a good explanation? Frank: [00:30:26] Yep. You got it. Um, Apple has some Higgs suggestions. Like even though you can have multiple types of windows, they think that each one should be able to get back to the root of your app, whatever that happens to be in your app, your kind of home screen. But aside from that, there really aren't any. Conditions or anything like that. I don't know their point to make, but it totally slipped my mind. Um, ask another question. James: [00:30:51] Well, so are you, so you said you're actively upgrading your applications. I'm looking at my apps. I'm trying to understand this. I'm trying to understand the impact that this would have, um, on, on applications. And what I'm really thinking about is like, is Apple going to enforce this at some time? That's what I'm thinking. Frank: [00:31:10] I don't think so. Although technically the foreground background event, things on UI application delegate, they have been labeled deprecated, so they could. In the future do it, but they're going to break every app out there. So I don't think they will. Uh, that, that's what I just remembered that I wanted to add. You were asking, um, are these separate instances or not? No, this is a single instance of your application, which is a little funny because it's going to act like multiple instances, but it's one process, one UI thread. So you gotta be, um, You know, if your app is a little bit UI thread hungry, if you're not always hitting your 60 frames per second. Someone could open 10 windows and now you're really going to be hurting. So it's, when you say, what is the impact on your applications? Just make sure you're not doing anything on the UI thread, because now you're going to be sharing it with a whole bunch of windows and things like that. So that's definitely something to be, uh, to think of whether will they require it, will they require it? I mean, in some ways it's supplants, UI application delegate, like. You could have a single window application and using the scene system instead of the UI delegates system. So it is possible that in the future they would do that. James: [00:32:36] Yeah. Yeah. They're just like move all of the events from app delegate into the scene delegate. And they're like, Hey, yeah, this is the thing, you know, you may never have multiple scenes, but like, this is how we're going to control it and remove that other thing. Frank: [00:32:49] Yeah. And now the tricky parts with, uh, are your restoration. Stuff, because if you're like me, you're used to restoring one workspace, basically. What was the last file they had open or, I dunno, what was the last item they were looking at now, when you do your restoration stuff, and this is either a custom code that you write or you opt into Apple's restoration logic kind of stuff. Uh, I have to think through, Oh golly. I can't just use James is setting app settings app and say, this is the last file I had open. Now I have to, uh, I have to have like a dictionary of work of seeing names and then restore all those scenes when the app comes back up. Imagine if. Uh, the user had eight scenes open. They hit a bug in your code, the app crashes, they reload the app and now all eight of those windows are gone. That's just not a good app. So then I have to look into your restoration logic and along those lines, there is, um, What's what's the magic technology, um, that makes, uh, max talk to iOS devices through UI user activity event handoff. Yeah. So. If you have an app that's running on the Mac and then run an app that's running on your phone or something, you're probably going to want to make handoff work. And handoff, is it handoff shares the same technologies for restoration as the scenes do. So it's kind of like you need to opt into that whole system and then base your app around that for the full maquinas James: [00:34:31] for the full night. I remember back in my day, Frank, when all I had was a three 20 by four 80. Pixel display that I had to hardcode values Frank: [00:34:40] for. I miss it. I miss it so much. It's why I love the iPhone because it's complex, but here's some pixels put some boxes in there, have fun and then submit it to the store. Maybe put a screenshot in that they even require screenshots. I don't remember. James: [00:34:58] Just give us a name. I, I, I will say I have been having a lot of fun building Mac applications with Xamarin forms, and it's a very box. It's very, you know, I literally have a hard coded height and width of the application. We can't make it bigger. You can't make it smaller because I'm treating it. I'm treating it like a mobile app. And I'm very happy with that. And I ran into it bug in which my gave my UI. I was, I was, I was, my, my window is too small and my padding was too big. So the buttons. We're getting way too small. And they were like shrinking down when you'd be like click on a button. But, uh, because I was displaying other texts, but you know, I, I really enjoy, I enjoy simple apps, right? I enjoy coding simple apps because I'm not doing this a hundred percent for a living like you, Frank would make these beautiful applications where you are doing it for a living where you have to think about these things. So I am not envious of you and all this complexity. However I do like what Apple is doing here. Which is slowly and surely trying to blend in a functionality into iPad iOS that will make Mac applications better. Because I do think in the future, there's going to be more and more Mac applications that are just project catalyst and I'm one applications at the end of the day. So they have to add these features, right? I think you're going to see less and less apt kit, no app kit, app kit, and more and more UI kit applications. On the Mac, right? It's just going to be how it is. And like you said earlier, a good Mac application does these things. So they're going to have to bring it in, but there has to be incentive, right? There has to be incentive to the iOS and iPad iOS developer, and hopefully those operating systems can fit up a little bit. And, but I always, I always think these advanced features is can you get the majority. Of the developers using these features, right? Can you get the 50, 60, 70% of people using. This new feature to make it. So the operating system feels alive and it feels like these applications were built for, it's always the struggle of adding new features after, right. We have seen this all the time with Samsung devices or a lot of these new dual screen devices from Samsung. And even at Microsoft, what they do, all right, you have to add these features or a touchscreen, um, with, uh, you know, different, um, Um, stylists is and multi windowing and things like this is you have to add it into your application and it's a support matrix right now. You've got to support many, many more things in your application. And, you know, I think the thing that I'm going to keep talking here, which is I got it. I had to tell myself that I'm going to keep talking to, so you knew I was going to keep talking, but you know, the thing that really got me into mobile development back 10 plus years ago, uh, was. The ability to craft inside of this box, that was limited, but not a hundred percent restricted. Right? You could do a lot of things in this box that. Your users weren't expecting more of it. You can't just like span your iOS iPhone application across multiple displays and do this, like on a windows machine and a Mac machine. You have all this real estate, but you're restricted in the real estate. And I thought that was the beauty of it is this restriction of real estate that had to really make you think of how you laying down your controls of what your user experience is and coming from the printer. Industry before that, where we would just throw out new dialogues and all these crazy controls. And you were just, you know, doing all sorts of stuff. It was really invigorating to have this. I'm not going to say sandbox, but this restrictive box and device that I could craft this really cool experience for. And we've talked about on the podcast and I sound like an old cranky old guy, but I'm turning 35, 30, 35. So I guess, you know, I'm getting there and. I liked the potential of this all mocks, but I think it makes it hard for the independent developer to really optimize and crack the code. How are we going to do it? How are you? And I are going to sit down and do this. I know it's, you're living and you're doing this in your applications, but it seems like it's a larger and larger support matrix that makes it complicated to, to really do it. And all the applications. Frank: [00:39:24] Okay. You got like four different topics in there when we try to remember them. James: [00:39:29] That's what I do, Frank. This is Frank: [00:39:30] what I do. Yeah. Okay. Um, support, matrix. Okay. Let me start with that one. I don't think it's going to be so bad for Greenfield apps. I think our file new templates are going to, instead of having a UI app, it'll still have a UI that's still required. I should say you still have one. It's just its role as minimal. Now instead you'll have the UIC and delegate. And our final new projects will be like that. And it's just how the world works, but I completely agree with you on the constraints breed. Uh, creativity kind of argument. We had a little box to fill in. It was inspiring and its simplicity. It was inspiring. And what they were doing, asking you to do it made you think as a designer about optimizing yeah. Work flows about really thinking about what you are trying to achieve and not just presenting. Here's a whole bunch of junk, but presenting like. Well, a stuff people will be interested in and the current contextually aware stuff and animations. So you can see the correlation between those kinds of things. But, um, in this case, this is a feature that is benefiting a lot of my apps in particular. So just going to continuous for a moment. Because I'm stuck in that one little rectangle. I had to do a weird kind of solution Explorer, I think continuous as an IDE, if you've ever used an IDE, you know what it's like, I just tried, I've tried to make it a lot, like how visual studio works and. As you know, visual studio, you have one solution open at a time. And if you want multiple solutions, you need multiple instances of VMs, or I think on Mac now on Mac, you would still do multiple instances. Usually they can technically you can technically open multiple solutions, but no one does it. You want multiple windows? Um, Now that the M one is out continuous runs on a Mac, and I want to make sure it runs well on a Mac and it'll be nice to have proper solution explorers. So what I have in the app right now is you can open multiple solutions and it's a little bit weird, cause like no dotnet developers accustomed to that. They're open, they're accustomed to one window, one solution kind of set up and now I'll finally be able to give that to the app. So while constraints, breed, creativity, constraints, also breed, weirdness and things people aren't comfortable with. So I'm really excited to be able to make the app a little more standard, a little more of the way people would expect of like a visual studio type app to work. James: [00:42:07] Yeah. And I guess if you got really crazy, you could have a single code file pop out into a new window and then. Counting digital studio does. Right. And then it floats into the ether and then you can put that on one monitor. And the other monitor is like the full suit. Frank: [00:42:21] Yeah. And I'm going even farther than that. If you open a script, I'm going to present a slightly different UI. You know, there's no reason I need to show you a solution Explorer and things like that. So with a multiple windows setup, I can actually. Be a little more creative and give you a little more custom tailored experience for exactly what you've opened within the app. James: [00:42:41] Cool. That was cool. I mean, I'm excited for this. I don't understand it yet. And I think because I live in this magical world of this, but I remember seeing on the dotnet Maui, um, get hub that it said it was going to support a multi window and I didn't know what that meant. And then when somebody asked me about this today, this is, you know, top of minds have half of our podcasts are top of mind. I was like, I don't understand any of this. And I only know one person that knows any of this, and now I know what they're talking about. So I bet the default templates for Donna and Maui this fall winter are going to, and I bet they're upgrading it from app delegate to support this thing, which is very, very fascinating. Frank: [00:43:21] And I should say Xamarin forms already supports this. So the kind of apps that are going to be hard to port over, if you have an older app, are the ones that I used to write, where I put tons of code into the app. Delegate. Well, like, that was my that's where I put all my statics. That's where I put all my random junk functions. I didn't know where else to put them. That's where I did gross things like inspect the view hierarchy to find out what the top, most window and things like that, that kind of code. Not going to work. You're going to have to throw that kind of stuff away. But if you've been a more disciplined iOS developer, where your view controller and your view controller hierarchy is doing the majority of the work, then you're going to be fine because you're just going to put another route. Will you control on the other scene instead of just having the one window, you'll have another window, no biggie. And if you're doing Xamarin forms, same thing, you'll just put a page. On that other window. So while Zimmerman forms was never designed for multi window Apple, didn't break how UI kit works. It's just a new API and you can do this with your forms app today. If you wanted to, you would probably have to, um, Either get rid of the built-ins Xamarin forms, app delegate, or just override a whole bunch of parts of it, you know? Um, but I generally don't even use the Zimmerman forms app delegates. So what else it's not needed. James: [00:44:51] Interesting. Um, I want to see how you do that one day, but I think that'll be for another episode, I am excited. I've been getting more and more into the dinette Maui world. Obviously, as we start to approach spring, summer into the fall, everything is going to happen very quick this year. I think as we lead up to Don at six, which I'm, I'm ever excited for, I believe that the more I play around with Donna at five, a player on some of this new technology that's coming out inside of, um, IOS and Android that I definitely want to. Um, just get all this good stuff and I want all the hard work to be done for me. Thanks. Xamarin forms, team, just saying, Frank: [00:45:31] yeah. Um, I'm a little bit nervous for the summer because if we have an Apple beta and a.net beta, that's going to be rough. I'm actually kind of hoping the, that one gets like postpone to like November, because I really don't need to beta things happening at the same time. So, uh, Hey, dotnet team feel free to. Not released the summer, but I'm excited for the future too. I just, I hate to betas James: [00:46:00] beta summer. It's coming all the betas all the time. Well, Frank, Frank: [00:46:05] I hope you're ready for it. My poor little heart, not that sex is going to be real though. The problem is.net six is so huge, so I'm sure we'll be talking about it for the next year, but, um, it's shaping up to be huge. James: [00:46:22] Yes. Well, especially for us Amarin developers, you know, I think that's the one thing is people were like, Oh, I'm kind of, you know, disappointed a little bit that Xamarin and, you know, done it. Malleable stuff is kind of not coming in down at five is coming in down at six. Yeah. I'm like, I'm actually super happy because I got a whole nother year to wait on this stuff and figure it out later. So I don't, I'm happy about it, but, um, that's the, that's the. Yeah, James inside of me, I guess, but I am excited for Danny because I will say this, there is something to file new Don at five and just like all of the features are lit up, like all the done it, all the C sharp nine features all the done at five features like everything's lit up for you. And I'm really excited about that is that I don't have to hack up CS proj or whatever to get things working. It just won't work. And then really when I look at Donna at six, and this is a whole nother episode, is. From there on all the workloads are basically included. So everything is just going to get updated at the same time. That's exciting. Yeah. Frank: [00:47:21] Yeah. I think it's that reason that we're all going to suffer through the betas because we all see the light at the end of the tunnel and we're like, yes, yes, unification, unification. Good. We will get through this, uh, putting on our big boy shoes and get through it somehow. James: [00:47:38] Yeah. Yeah. Well, let us know if you've updated to seen delegate, or if you even knew anything about seeing delegate at all had emerged conflict that I found. There's a contact button up there. That's a direct email. You can tweet at us, or you can hop in our discord, which is super fun. We've been active in there listening to what everyone has been chatting about and chatting back as well. Now don't forget. We have a bunch of new Patriot subscribers and one, thank you so much for all of our new subscribers in the last few weeks, since we've been promoting it. I want to let everybody know that we are releasing weekly bonus episodes every single week on our Patriot. And additionally, new episodes drop on Patrion first, not exclusive, but first bonus episodes exclusive every single episode early, as soon as I'm done editing it, that is when I publish it to Patrion. And then schedule it for Monday at minutes. If you want to get your podcasts. Early check out our patriotic patrion.com/merged conflict FM, or just hit that Patrion button at the top of a merge conflict of FM. All the information is there, but that is going to do it for this week's emerge conflict. So until next time I'm Jay's no, and I'm Frank: [00:48:46] Frank Krueger. Thank you for listening.