mergeconflict226-1 James: [00:00:00] Frank Krieger. How are you doing? Frank: [00:00:12] Hey, Jay. Uh, I'm excited because just before you hit record, you said I've got a good one and I love it when you come up with a good topic. So I'm excited for tonight. James: [00:00:24] I mean, it's not. Maybe the best topic, but it is a topic we can say that, Frank: [00:00:31] uh, I I'm in the mood for anything tonight or this morning. Cause we're releasing at midnight. James: [00:00:36] Okay. That's perfect. Well, as I watched the sun go down on the horizon and we soon, you know, get the dark at, I don't know, is it going to be daylight savings times after this one comes out? When it's daylight savings that now we fall back or do we move forward? What am I'm about to lose an hour? Frank. Frank: [00:00:53] I don't know. The, the internet hates that. I hate it. Um, I believe daylight savings is during the summer and yes, we're falling back in the fall. Uh, so I guess we're going to standard time. I don't know, you know, if the internet has its way or we're going to have this thing abolished, but it doesn't seem like the internet is going to get its way James: [00:01:11] November 1st. Oh my gosh. It's happening everybody. You just got, well, good thing we released is on a Monday because then it would be like, we're releasing it, but then really it'd be like one o'clock man. Daylight savings is the worst. That's not the topic by the way. Um, but I had a few to two options, but I picked one. You don't know what the first option was that I didn't pick Frank. Oh, Frank: [00:01:31] are we going to ruin it? What if we want to use that one for next week, but, uh, yeah, I definitely James: [00:01:36] want to hear it. So I really was interested in talking about real time, um, vehicle automation with machine learning built in with stereoscopic cameras. Frank: [00:01:50] Nice. James: [00:01:51] I like this hour as now, we're going to talk about Frank. Um, because you know, these these cars, they can stay in their lane. They can like break for you automatically. They can like speed up. They can speed down for you. Like it's it's and there's like eyes in vehicles now. That's really crazy. Frank: [00:02:09] Oh, are we doing a car episode? This is really exciting for me. James: [00:02:14] No, what I want to talk about my night Frank: [00:02:16] actually keep teasing me. This is not fair, James. They really are amazing. We should do a car episode. James: [00:02:22] What I want to talk about tonight is application security that Apple and Google have been enforcing upon. The world, basically in recent updates. And this has a little bit to do with NSRL, but not a lot to do with NSU RL. Okay. Frank: [00:02:40] Uh, it just for a little behind the scenes, I keep pitching an episode topic called NSRL and James keeps shutting it down. But one of these days, I think he's teasing me yet again, that I might get some NSRL talk in here, but carry on. James: [00:02:56] Oh, we can talk about it a little bit because on each operating system applications themselves can have unique. Data schemes that can open them. We've talked about this pretty heavily, uh, both, uh, Island tracker, for example, uses data schemes to automatically open the application on the device. And this is a nice way that you can let the system kind of open it automatically. This is, you know, my application is AC Island tracker colon slash slash Frank May have one that's like I circuit colon slash slash it's similar to HTTP. Right. But it's not HTTP. It's. A specific URL scheme for your Frank: [00:03:35] application. Yup. Yup. And they've been on one round for awhile. It's our first form of interprocess communication on iOS. Android has always had better interprocess communication, but it's all that we've had on iOS. Uh, they got kind of nerdy in the early days. Uh, we were doing like X callback URLs. Like we're trying to get fancy with integrating with amps apps. Other apps. And then I think we went through a little bit of a recession. Like I hadn't seen many people doing much with them. And then, uh, we got shortcuts and widgets, and I think these things are making a pretty big comeback. Um, universal links. Have you used the hub app for iOS? James: [00:04:25] You know, I installed the GitHub app and I enjoy the new updated version that they released. However, for me, I just don't want to have another glaring blue dot, just staring at me the entire time of all the issues and updates. I think back in the day when I was just working on my own projects, it wasn't so bad. But now that I'm in like the Microsoft org and I'm on all these reposts or like the dinette website, like docs, I'm going to learn like all this stuff. It's like, there's just a constant inundation. I'm like, I don't want to, I don't want to have this power on my phone. Frank it's too much. Frank: [00:04:57] Oh, that's funny. Is it actually a blue dot? Not a red dot. James: [00:05:01] No, a blue dot. When you go to get hub.com, it'll start you in the face. And there's a big notification blue dot. Frank: [00:05:07] Right. James: [00:05:07] Okay. But, you know, I just imagine that that blue dot has been carried over into the, into the app. It probably has, but I mean, on the home screen, it is a red dot, but, um, Frank: [00:05:16] yeah, it's a pretty thorough app to the point where get hub has decided to take over, not just URL schemes, like you're talking about, they take over HDDP URLs. So if someone gives you an HDP URL to get hub, the app takes over and launches into the app. At first, I thought that was kind of clever and neat. And then I deleted the app because there was no way to turn that feature off. I think it was the universal links feature, but it felt even more universal than that. And the problem I kept running into was though I love mobile apps and I make my living off on mobile apps and the get hub mobile app is pretty good. It's not as good as their website. And I kept getting frustrated that they kept following me James: [00:06:07] into their app. Yeah. And I think that Google and Apple are having this, this. Split decision of how much they want to push people towards URL based HTTP routes to support it in their apps, or to have these custom schemes because Google, they wanted to index the world and they had this app indexing, you know, blitz basically that said, if you let us. If you can map your mobile app to your website and URLs, and we can, you know, when people search, we can say open in the app from the Google and then they can open and you can deep link and people can send you a URL. And if you click on it, it'll open the app. If it has the app. And that, and that's nice because only one person can. Own a domain name. Right. And then the verification process is, uh, you know, a P a file that is on that web server. And that's a sort of universal link, but then. Sort of, I, you haven't really heard too much about it. And then you're right, you got the shortcuts. I have other sort of deep linking technology and those all require custom, you know, URLs to some extent where you can do custom things you could take in additional, um, query parameters. You can, you can react in different ways, um, which are really, really nice. However, in the most recent releases of Android, at least it is now matching the complexity of iOS, which is that when you are an app developer and I let's say one to call into another app. So I'm, I'm I'm circuit circuit simulator, 5 billion, and I want to open something and I circuit and we want to be best friends. Right? This is a nice compliment. Um, I would probably query to say like, does, does this user have this application? Is there any other applications that support this URL? Right. And the problem is that now you have to specify all of this information in either your info P list or in your Android manifest file. And in fact, Frank, what. Google has done is that there is many ways to open an application there called intense. So you can be like, this is a dial, this is a view, this is a SMS or whatever. There's different intense, because it's even more complex. I like that. Like a data scheme can have like, you know, a specific type of, um, um, um, intent or action instead of just open. It can be like it open, but really open with the intent of making a phone call. So it's like very specific, um, Now, what they've done is they said you have to specify normally the intent that you would like to query, but you also have to specify the data scheme. Right. Which is crazy. Cause, so if you want to say, does my device have a web browser? Like, you know, and as an app library, developer, I probably want to do this as a good citizen. So if someone's using my library, it doesn't blow up. If they don't have a browser, for some reason, I have to then tell the developer to go update their Android manifests with this crazy code to specify. So it's like, they're there. They're encouraging the use. But also at the same time trying to tamper it down. Does that make Frank: [00:09:23] yeah, yeah. It's funny because, uh, the similarities to iOS, uh, bound, uh, in the latest iOS 14. Yeah. Apple has the concept of UT I's universal type by identifiers. And it's a really complex system, the simple version of it, or what's something similar to it are mime content types. So all of our HDP requests tell you the data type and that's called the mime type. And that tells you what the data is. Hopefully, hopefully it's not lying and Apple didn't. Subscribe to that because I think they had the system before that they have the UTI instead. And what you see now is like, in the old days, if I was writing an app, I would say a file open dialog box, show me all files of star dot TXT, or start off doc or something like that. But instead on the Apple side, what you do is you specify these UTI eyes, these, uh, Universal type identifiers. They look like URLs, they're Rover, reverse domain notation kind of URLs. Um, so you'd have calm.microsoft dot word would be like one of these things and there's a whole hierarchy of them and they're very complex. And so I just find it funny that, um, All these systems are mirroring each other, all these weird data hierarchies. James: [00:10:58] That's true. Yes. The uniform type identifier, a UTI. It is, it's almost like a collection of it. So it says for like, here's a JPEG, for example, it may be defined in one of the following a four character, Japan dot JPG dot J P E G, or image last JPG and like the. The UTI replaces all of these with a public string called public dot JPG. Like, I don't know if that's any better, but like, okay. I guess, you know, at some point, but you're right, then you can do the, the, the, the. The actual, um, the public ones are public, like HTML, plain text text, and then yet you're right. It's like, here's, you know, calm.my company, not my app slash my specific file type. I just, I don't know how people are supposed to keep track of all of this stuff in general. Like, I'm going to, I have to put this. Image into it. So I love that this image is also a gift. So I'm going to post this in here. It's cause it's not a gift at all, by the way, it's just like someone saved this image. With a gift on top. So it's like sort of a, a breakdown of how, like for example, um, these data types could work. So for example, a public dock movie could be a calm.apple dot QuickTime slash movie, or a public dot peg, right. Or they could kind of group in that way. But I love that this image is a. Yes, which doesn't sense at all? Frank: [00:12:24] Hey, it's a good file format. It was around before PNG. The neat thing about UTI is as they form a hierarchy and there's almost like an inheritance scheme. In fact, it's weirder than that. There are two hierarchies, there's the data hierarchy and the content hierarchy, and you can merge them into different document types. It's complicated, right? That's why they have cute little pictures like this. Um, the neat thing though, is when you're defining new data types, you can give them a parent data type. So when I registered CS project files for continuous on iOS, I said that project files inherit from XML files. And that means anything that can understand XML files. On iOS, anything that opens a dialogue forum, anything that edits them can now is now knowledgeable of the fact that CS proj files are also XML. The neat thing is every app defines a small hierarchy and all those hierarchies get merged together into the operating system to form. Um, the means by which people can share data apps can share data between each other. James: [00:13:38] So have you used any of these sort of custom data schemes and different types of UTI types for you to, cause I figured a lot of your applications are file-based. So I have to imagine that this is. You know, uh, of issue. And also, you know, when I think of continuous, there are tons of other applications that perhaps could, you know, be launched, like get, get things and file things and a whole bunch of other things. That'd be fascinated to see if like you've run into issues or the complexity or how you went about figuring out all this, because it's not super straightforward. Frank: [00:14:09] No, it's not. In fact, it took years to kind of learn, learn the UTI system because I made all the mistakes you can possibly make, uh, in the past. But I want to say first off, it's not just for files. It's also how the clipboard works. On Mac and iOS. Whenever you say what's on the clipboard, they always say, what format do you want the stuff on the clipboard? Because if you ever get like an advanced clipboard viewer for Mac and you hit command C on something, you might see, it's actually stored in a million different formats. There's an HTML version of it. There's a plain text version of it. There's probably a JPEG of it because why not? You know? So it has all of these things, right? And so, uh, like for my current app, I created, uh, a UTI type specifically for my clipboard objects. So I can still use the Apple clipboard, but I make it clear to Apple that, uh, some of the data on the clipboard is my own private type. So it's like calm dock, Kruger systems dot circuit. And then other bits on the clipboard are, um, uh, uh, public, uh, public thought texts. So I'll try to put a text version of the circuit there. And that way, if someone pays, if they hit copy in my app, go to like a word processor and hit paste, they'll get some textual representation of what they had copied. And it's neat. So whenever someone hits copying your app, you can decide all the different formats for the data that you want to put. Up there. James: [00:15:43] Oh, cool. So you can have sort of a priority scheme of saying like, yeah, I want my type of data first and then anything else I'll fall back Frank: [00:15:50] on. Yeah, exactly. So, um, the, the, the word app could paste in the text and then my app could very first query to see if there's the circuit data. If that's there. Great. I can just de serialize that and inserted in directly, otherwise, you know, I can figure out what to do based upon all the data's there. It's a, it's a neat system. Um, do you want to talk about the details of it or are you interested in that? James: [00:16:17] Yes, but let's first take a quick break and thank our amazing sponsor this week. Sync fusion, listen, you noticing fusion. You love seeing fusion. You should probably be using sync fusion because they have the world's best UI components suite for building powerful web desktop and mobile applications. No matter what you're developing. Or what you're developing with. They have something for you. I'm very partial to the Xamarin UI controls and seeing fusion. I love that my user graphs, their charts, their lists, views, their drop downs, their sliders, their digital gauges, basically anything that's hundreds of controls built right in they're beautiful and they're animated and they do everything that you just simply need. And you're like, Oh, who doesn't want more controls? And if you are a data processor and you have a lot of data as well, they have awesome libraries like PDF Excel word, that'll help you process, or even create those documents on the fly for any operating system. So give them a look, go to sync, fusion.com/merge conflict to learn about all the great controls that you began using today in your applications that sync, fusion.com/merge conflict. And thanks this infusion for sponsoring this week's PA. Frank: [00:17:23] I think fusion James: [00:17:25] that do a lot of their controls. Frank: [00:17:28] Yeah. James: [00:17:28] You say that every week, you, you should. Frank: [00:17:32] I should I, because, because I should, it's the truth. I'm just reminding myself that, uh, I'll totally forget. Uh, so the nitty gritty of these UT I's are that Apple defines a whole bunch of them and you can Google around and find their list of predefined ones. So if you're just working with normal data that's around there, chances are it's already an Apple's list, but then we get into the realm of custom data. And there's two ways you do this and your info P list file. You create, um, a document type in there. And what you can do is either import UTI or export UTI James: [00:18:17] app is either opening them or, or serving them up. Frank: [00:18:22] Yeah. Yeah, exactly. You're, you're either defining them. That's when you export them or someone else define them, but you still want access to it. So here's a, here's a hypothetical, uh, someone writes a markdown editor. And they want to have marked down, uh, UTI support, but they didn't invent the markdown format. So they actually import Mark down. They say import it, um, it's calm dot daring. Fireball, doc Gruber is awesome. You know what, whatever the type actually has, there is one out there actually for it. So that's an important case where you would import it. I actually made that mistake in Calca. I export it because like, yeah, I didn't understand. Like, I'm like, well, it doesn't exist. So I'm creating it. But what that did was forced my app to take over everyone else's apps. Who've, might've registered for that because I was saying I am the creator of markdown defer to me for all decisions. James: [00:19:26] Classic Frank. Yeah, I was trying to take credit from our Gruber's work. Frank: [00:19:32] It wasn't my fault. I just didn't understand the system. So what I should've done was important, but for other things like, uh, circuits, uh, I export for Calca actually its native format I export. Uh, but if you're, um, I'm trying to think of one Microsoft word or PDF, that's a good one. Uh, you would import that one because Adobe created it. The trick is even if you're importing it, it's not like there's a magic online database. You still have to provide all the data for it. So what I literally do is go to my applications, directory, find an app that can already open the things, open the app, a package, go to the info fee list and drag their UTI definition into my app. It's kind of the best way to do it. James: [00:20:24] Yeah. It's confusing too, because whether it's a custom data scheme or one of these, a UTI or even a mime type. There's. I mean, my times are a little bit better to find, but I feel as though with these, it's not like there's a database of them sitting around. There was at one point a data scheme website that you could go to if you were a developer, I don't think it's up to date or isn't even around anymore. Because I remember when I was developing the Xamarin evolve conference app, I wanted to be able to open like Twitter or tweet deck, uh, directly. And what was nice about that is that you could open directly to a user's profile page or directly to a tweet instead of just launching the app. Um, and this was sort of before the URLs, but that was the other thing is. Okay. So if I have a URL, like I wanted to tack like, okay, maybe you have tweet deck installed, like use the tweet, deck stuff, Elsie use the other thing. And then, then open the URL. Whereas if it's just a, uh, uh, HTTP and I open Twitter or only Twitter Twitter's app could open it. Right. Tweet that couldn't open it because it's tweet deck doesn't own twitter.com. You know what I mean? So they wouldn't be able to register that HTTP. So there's. This complexity around. Well, the right thing to do is that multiple apps could maybe handle an HTTP or a specific type, or they could export a specific type, but then they don't have ownership of it. So it's like this, this pull this tug and pool between the creators of maybe a service or a specific data type, and the developers that are trying to enhance that ecosystem. And it makes it really complex. And then when. It's even more complex to add this metadata into an info PLS list or an Android XML file. And as a developer, you just, your mind gets boggled. I can't, where do I find the thing? How do I, where would I share it with people? Like, how do I even go about this in, in, it just makes it. Powerful and then sad at the same time. Frank: [00:22:32] Yeah. It's the wind 32 registry all over again. Associating file types. It's funny. When you were saying like, um, where do you even go for this information? I go to Wikipedia, oddly enough, they list mime types and things like that on Wikipedia. So whenever I'm confused about what, what the correct mind type is for something, I don't think they list UTI though, but there are. Couple good reference UTI sites out there, but it definitely is a problem. Uh, especially with the way Apple's works is that there is no definitive database out there it's actually per machine or per user. I don't know actually how it works. I do think there is a way to get an export of it though. So you could think of like, Finding a death machine, installing every piece of software you could ever imagine on it and then doing an export. And then that way you could get all the stuff. But the truth is, uh, at least in my case, you install the app and look around. Do you remember way back in the day? A, you used to be able to just query the operating system and be like, Hey, does this URL scheme exist? Yeah. And then they're like, well, that's not cool. So instead in your info P list, you have to list all the ones that you might query. James: [00:23:52] That's what I'm saying. Yeah. Frank: [00:23:54] Yeah. And then do you remember like Facebook or Twitter or someone abused it? And they listed out like 10,000 apps in there? Cause they just got an iPhone installed every app on it and kind of did that little export and got a giant database. So I bet you, if you paid some money, you could get that James: [00:24:13] database. Yeah. You can Upwork sad or something like that or five or just go install and fate and do all these steps. But no, it's, I mean, that's, that's definitely a problem, right? It's you. You, they enforce these things, but again, you could just, I could have a, an Android manifest that has to be ginormous, right? It's a ginormous file that has all the things. And I know why they're putting it in there because they don't want just certain apps to arbitrarily be able to do stuff. But I don't know exactly what the harm is. In general, there must be some harm. And that's the thing that I can't figure out. Like there's this additional layer of complexity and security that Apple and Google, what do you think it is? Frank: [00:24:50] It's trucking. You can figure them print someone based on which apps they're using. It becomes a tracking ID. So let's say I have a database of 10,000 apps and I do. Binary. I do a little bit vector of which apps do you have installed? Chances are that's pretty unique in the world. If it's a large database of apps, and now I have a tracking ID without having a tracking ID that follows you everywhere. You're going. So there are a lot of this in general is called fingerprinting. So you're just looking for anything traceable about a user, and it's not so much that it's abused in the. At Mark. And I'm saying that because I'm thinking of iOS and not Android, but it's definitely abused on the web. People are looking for any possible fingerprint out there. That's not a cookie, that's not a tracking image, you know? So that's where these things come from fingerprint. James: [00:25:45] Yeah. So sort of like an ad network, they could perhaps attempt to be scanning for. I said known apps. Like, can I open this URL? Like w when the, the ad advert opens and then they may not have any information about you, but they have information about a thousand apps that are on your phone and they could like, Oh, you have 10 fashion apps on your phone, or this game, like, you might be served up X, Y Zed. Oh, that's mischievous. And that makes sense, Frank: [00:26:14] I guess. Yeah. Yeah, ads. It's just, that's it's escalation, because you know, back in the day they would just put a goo on your machine and it would just track that code around. But security has prevented that. So people have to be more clever about all this stuff. Um, you know, putting some limits on it, have to have other benefits too, but that's the one that came first to my mind. James: [00:26:39] This makes sense. Oh man. Frank: [00:26:41] Okay. You're a bit you're depressed. Okay. So which apps do you have that consume or look for data and other apps? Like w what are you thinking of here? James: [00:26:52] Oh, I don't know. There's none, but, well, you know, I think that whether, you know, the, the problem where this, uh, you know, Booted up and was that Android 11 came out and there was a bug that came up on the Xamarin essentials repo. And someone's like, Hey, like the, the phone dialer or whatever, the email thing, it doesn't work anymore. And it says it's not supported. And I was like, Oh, that's weird. Like, how would it just not be supported? And what we were doing was internally, we have like an is supported flag that we call, well, the API that says open email, we have our own internal is supported and. If we'd attack that there's no email application that can support the data scheme mail to then we, you know, return false, you know, we're like our throw an exception that's like on supported. So once this developer. Um, compiled against Android 11, right? So it only happens when you compile against it. And it's a lot easier to not compile against the latest on Android compared to iOS. But once this developer did it, it reared its ugly head. And I had to go dive through the stuff I had to get John and the peppers involved, Leibowitz involved. And sure enough, I wrote a whole blog post on this old Lincoln in the show notes, but it's a brand new feature called. Uh, package visibility, like packages are no are invisible, unless your application specifies that it would like to peek in the hood under the hood to see these, which is similar to the info Piela stuff that you were saying. So for our library, anybody that just wants to open an email, send an SMS or open the phone dialer, or even open the browser because. Even what we do is we say like, is there any browsers installed? Well, you got to now specify that I want HTTP and HTTPS. And you're like, Oh, that is annoying. That's that's all I got to say. It's a little UN, a little annoying bit Frank: [00:28:45] piece security, always mentioned app development without security be so nice. It's funny that it's male too. Like, that's a pretty important one. They, they locked down that one or were you doing something fancy with mail too? James: [00:29:01] It's every single data scheme, every data scheme is locked down. Unless here you can't query so you could call it. So that's, that's the, that's the thing, even on iOS, right? You could call mail too, but if there's no mail app, it'll just return false or not doing anything. So. It's only when you query it. Right. And you say, Hey, does anything support mail too? And if you don't specify that in your info, Pellicer Android manifest, then it returns zero results. And it says, no, there's nothing installed. Even though there is something installed. Frank: [00:29:33] Is that true? Is that true on iOS? James: [00:29:35] Also a hundred percent true. Frank: [00:29:38] I that is interesting. I always just blindly. Wow. Truth James: [00:29:42] is I use an open, Frank: [00:29:43] I use the built-in. What is it? MF composer, MF, composers. James: [00:29:49] Ready? Frank, get ready. Frank, get ready for me to blow your mind because that entire API is completely broken because on iOS 14, you know what you can do, Frank: [00:30:00] you can change your default email app. James: [00:30:03] Exactly. And you know what? Doesn't work. So there's two, two bugs, one Frank: [00:30:08] belt and mouth. Are you you're killing it? No, you're killing me right now. James. James: [00:30:13] Welcome to my life. It's a living hell right now. So we're trying to figure it Frank: [00:30:17] out. Male thing in all my apps. Like it's, it's just a little thing. You, you know, you put set a couple of fields, you say show presenter thing or whatever it comes up. I love it. James: [00:30:26] So what we're doing now is we have to, and the funny thing is mailed to doesn't really support it. Doesn't support. From my understanding attachments at all right. If you just call a URL, like how are you going to do that on Android? You can attach data packets and that's how it's always. Yeah, but on male, on iOS, on the MF male compose view controller, um, yeah, you can do it. So here's the two things. One M F male compose view, controller.cam, and send a mail. That's an important API, right? That you think you would be checking iOS 14. They. Always returned. True. They never returned false. Even if they have not said it or the is disabled, the mail app doesn't matter. So it's always, always false. And then if you were to query, can open URL, which would be an NSA URL from string mail to then of course you need to then add that into your info P list. Frank: [00:31:27] Yeah, I'm going to have to review this in my apps. Great fun. Um, Hmm. You've made me depressed. So I'm going to say something kind of fun. Uh, male to colon is way more advanced than I ever think it is like, yeah, it has subject. It has to have some things. But you can put like HTML and coded stuff on there. And I'm sure I could jam in a mime and coded image in my HTML email. So there'd be like some really weird ways you can do attachments with it. O S dependent, of course, because at least in the old days, there used to be a. 1,024 byte limit on URLs. I'm sure it's not true anymore, but it used to be around, James: [00:32:10] uh, scary. We have a nice one. Yeah, you can do body subject, multiple twos, multiple CCS, multiple BCC'd. And then I think you can also do what do we do? Yeah. There's multiple parts as it really crazy. It can really do. I'm not sure about attachments, but I'm imagining you're probably right on the, doing something in there. It would be. Kind of gross something gross. So yeah, what we're thinking about is letting the developer like ideally Apple would fix this API. Right. And we would say, okay, well, if in an ideal world, Frank Krueger, see Apple's gotten themselves into this hole, which is, is, was it like the data schemes weren't really popularized, but now we have default applications which have to implement data schemes, but then. Like the MF male view controller, which would be awesome to use, like why can't Gmail open that up? Right. If, if Gmail is the default, it should be able to open that thing. Right. And it should, it should, it should, I don't know. It should work basically, I guess. I don't know. It's crazy. Frank: [00:33:18] I'm sure it will eventually. So Apple has some mechanism for that, the, where they're able to host apps within an app. So they have it all figured out from a security model standpoint. So I figure it's just a matter of time before we have that before you have Gmail compose within I circuit for all that working, but you know, Apple, it'll probably be a different API. They'll probably deprecate MF mail tempos, or whatever it's called. James: [00:33:44] Yeah. And know, and I'm okay with that. I w I would be fine with that. If I was fourteen.one or 15 came out and they're like, here's the new thing. I just, right now, we're in this interim place where they've done this with a bunch of different, different defaults where like, on, on Android, it's never really been an issue at all. Um, because every intent, anybody can open anything. It's a magical, it's a magical world where Gmail doesn't get priority access for like a special API for email. Um, just, they, they just, they implement mail too. Right. And, uh, that, that kind of handles it. So this is a situation where Apple provided this beautiful API, but they just opened the world up just a little bit too much. You know what I mean? Just, just a little bit too much. And then it makes us beautiful API, not as a beautiful Frank: [00:34:32] anymore. I agree. Um, it's so much better when they write every app and every background image or everything, but no, I, people have been wanting this feature for a long time. I'm. I don't. I was going to say, I'm a fan boy, but I'm not a fan boy. I'm locked into the mail app because I just don't want to deal with anything else. It's funny because I actually host my email with Gmail. And so I could a hundred percent use Gmail for some reason. I'm just kind of hooked on Apple mail and it's all I use mostly because of the OS integration. Uh, I'm not sure. I might just be a little too brainwashed to ever stop using it, but at least now there's a little potential there. Huh? James: [00:35:19] Yeah, we'll see. I just went, I only have just Gmail on my phone and that's it. So I feel like since I never had anything else, how they're using the built-in mail app for everything. So, uh, I think that most people do, but I'd be fascinated to see if any of these issues that we've talked about has nipped anyone in the butt. Um, You know, as you're developing your app, upgrading your app, we talk about the beta summer, but it has turned into, um, GA fall because I'm still tweaking and tuning. Frank, I'm finding new things. Like how is it that I didn't find out about this until a month after the GA? You know what I mean? I'm still finding things have like little tweaks and tunes for both iOS and for Android. It's kind of crazy to Frank: [00:36:01] me. Uh, yeah, but it's definitely been happening. I was upgrading file support in continuous and it took me forever. I think I said, well, I'm going to give myself four hours to do these little upgrades. I have my mind for it. Took me a week. You know, just a week to get the full security model implemented the caching layer. Correct. And even then I tested it, tested it. I was so proud of it. I released the app and someone showed me a very easy repo RevPro where I screwed up the security model and the app doesn't update. So it's just like great. The very first person to talk to me about it found a bug in it. The stuff's hard. Turns James: [00:36:46] out it is hard. Uh, all right, Frank, I think that's going to do it for this week's up. Podcast data schemes, explanation cast. Frank: [00:36:59] Yeah, it is. I, I can't believe I got to talk about UTI before I got to talk about NSC URLs, but that's the way the wind blows sometimes, I guess. James: [00:37:09] Yeah, there you go. There you go. All right, everyone. We'll definitely write in to see if this has a. Nipped anybody before. And, uh, if you're still finding new tweaks, I would love to know if you're finding new, crazy, crazy bugs as well. Um, that are just popping up and by bugs. I mean, it's a bug now in your app only because there was an operating system changed. So not, not, not really an operating system bug, but it definitely let us know. I'm right into the Shogun emerge conflict that FM, or you can hit us up on Twitter at merge conflict FM, or that James Monson, Magna, or at McLaren, you can find those links of course, on the website. Like I just told you, so check it out. And of course, if you like this podcast in any, just any level, like just any bit at all, feel free to maybe. Yeah, leave us a little review and you know, Apple podcasts or the podcast app of your choice. It really helps the show and helps new people find this amazing podcast that you're listening to right now, that's going to do it for this week, merge conflicts. So until next time I'm James Monteith Magnum and I'm a Frank: [00:38:05] bright cruiser. Thanks for listening. Peace.