00:00.60 James Welcome back everyone to Merge Conflict, your weekly developer podcast where I am still extremely upset with Frank Kruger. How's it going, buddy? 00:08.79 Frank Oh buddy, i don't like to hear that, but I can think of a thousand reasons you'd be upset with me. Hi James, can I make you feel better? 00:16.95 James I don't think so. I don't think today because Frank, you and I have been friends for the last decade plus five years, 15 years. 00:19.28 Frank dang. 00:25.69 Frank Yeah, I guess so. At least 400 something episodes. 00:30.54 James I think it's been, i mean, yeah, it must be at least 15 years. mean, since I i started at Xamarin, I've been 13 half years ago, but 14 years. um I always looked up to you as someone that was like an archetype, a holy writer of pristine code, an elite developer, a pragmatic programmer, 00:53.98 Frank hu Okay. 00:57.98 James Somebody that knows UIKit to a T inside and out, no matter what. 00:58.10 Frank Oh. 01:04.81 Frank Okay. This is about one of my apps, isn't it? 01:06.14 James But today, today I've been dogfooding iCircuit, the app in which makes Frank all of his money in life. 01:07.61 Frank Okay. 01:15.19 James And Frank, I'm highly upset at so many UI decisions that have been made in two areas. 01:18.04 Frank Oh, no. 01:20.78 Frank Oh 01:22.03 James And I wanna discuss them today and understand, What's going on in this app? It's very upsetting in many ways. Frank Kruger, want to know what... 01:32.41 Frank Okay, I'm willing to have this discussion, but let's preface it with everyone go out there and buy it anyway, no matter what you're about to hear. 01:33.46 James like 01:38.73 Frank um Oh boy, I'm afraid to find out how I disappointed you. But the truth is, i already know I disappointed you a little bit because i got a bug report from you over the weekend. 01:49.59 Frank I think, was it like a Saturday morning I think you were testing my software? Like a good employee that doesn't get paid. Good job, James. 01:58.70 James It's at least I could do, you know, well, so the one good part about doing a lot of like AI development, I gotta get Heather into our, into our Netflix. She's like, I got the email. It says you're not in the household. Like I'm on it. 02:10.55 James Confirm update. Um, is because I've been shipping more and more software. I go in and in to, um, my test flight application more and more and more so much more like all the time. 02:21.46 Frank Progress bars. Oh, that's true. 02:25.49 James Look at all those apps, see all those apps right there. 02:27.41 Frank Yeah. 02:27.83 James And, 02:27.85 Frank Actually, most of my apps in TestFlight are your apps. So I like that we spam each other, basically. 02:33.18 James Yes. And I don't get too many from you because you know for external, for x so TestFlight is a broken system. It's completely broken for external developers. 02:46.13 James For internal, great. For external, it it's not, I mean, if you're using like, 02:48.70 Frank Yeah. 02:53.44 James CI CD, you can set it up where it will like automatically do a build, push it, assign it to you, and you can actually assign it to another external group. 03:03.77 James However, that app also needs to be reviewed. Sometimes it's Insta. 03:07.69 Frank Yeah. 03:08.62 James Sometimes it's not for some reason, if you haven't done it in a while, Which then leads to the problem is that you can't assign a build to a group if one is review and you also can't unassign it to the group either. 03:12.09 Frank Very not insta. 03:22.14 James And it's completely broken. In fact, what happened today, Frank, in to to prove to the point of how broken, prove it, prove it right now. 03:28.22 Frank Yeah, right. 03:30.66 James I'm proving it to you. 03:31.06 Frank Right now, right now. 03:31.34 James Go for You prove it. 03:32.18 Frank So I have um all good apps, as we know, have a.1 release. 03:32.46 James Prove it to me. Prove it to me 03:37.02 Frank It's just what happens. ah My app is especially good, so it's going to have a.2 release. That means I made two big mistakes in the last release that I'm trying to correct. um We'll get into what those are, but um one of them was reported to you, so I wanted to get a beta out to you with the fixes because I'm a good developer. 03:56.79 Frank So I put my app into TestFlight review because it's whenever you up the minor version. So as long as you don't change your version number, they'll usually yo get auto approved. So whenever you update your minor version, then you have to go through the review process again. And to your point, I was so sure that you were going to approve my Tesla beta version that I just went ahead and submitted the real app to the real app store review because i always do manual developer release. 04:30.84 Frank So if I'm not happy with the actual, um you know, if the beta is garbage, if the beta is blowing up on devices, then I can always developer reject and then resubmit later. 04:31.05 James Same. Yeah. 04:41.37 James Pull it back. 04:42.52 Frank But especially for bug fixes, I like to just get everything into the review queue right away. 04:42.58 James Yep. 04:47.04 Frank And i think the point you want me to make is my app was reviewed for the App Store, good for release within one hour. And it took, I think, about 10 hours for my test flight version to get not just not just reviewed. like um The whole process was about two days. 05:07.80 Frank But like in review for 10 hours, it sat there. Meanwhile, it took one hour for to get approved for the App Store. I do not know what is going on behind the curtain at Apple, James. 05:20.20 Frank Not at all. Not not one I mean, we all know there's different reviewers out there. They all they all go by their own playbook, I guess. And so I always just chalk it up to that. 05:32.98 Frank But, like, you would think, given how limited external testing is, that they just kind of approve the apps, you know? Like, the most damage I'm going to do is to, like, 30 people out there. 05:41.70 James Yeah. 05:47.00 James And it's like, yeah, it's like these people signed up for it, right? They're installing it, X, Y, z And especially in in a situation like this, where like you added more testers or did anything, you know what I mean? 05:56.01 Frank Yeah. Yeah. Yeah. 06:03.20 James It's clearly there. 06:03.96 Frank yeah 06:04.36 James And on top of the point, it's also a broken system because I'm sitting here and I open the application, auto updates on, didn't auto update. I go to my Mac for my own application, Tiny Clips, I open it, I hit i open it, auto updates on, didn't auto update. Sometimes I hit the update button and it's like, no, you're already updated. I was what do you mean I already updated it? It says update right here. Just like fix the thing. you know I'm just saying, I love the thing, but I hate the thing, fix the thing. 06:31.99 Frank Yeah. 06:32.03 James Kind of like your app, Frank Kruger. 06:34.01 Frank Oh, ouch. 06:34.11 James Okay. Ooh, I see, okay. 06:35.35 Frank What a segue. James, do you have any critical feedback for me? is that is that what I'm about to get for the next half hour? i hope everyone will run with me and enjoy this moment of being critiqued. 06:43.55 James Yeah. 06:49.78 James Problem one. 06:51.74 Frank Yeah, sir. 06:52.44 James One. Your top bar. 06:53.94 Frank Yeah. 06:55.52 James we're just install Go give Frank $15 and then let's critique this together. 07:00.18 Frank $13, but thank you. Yes. 07:03.22 James One. Compliment. 07:04.92 Frank One. 07:05.14 James Let's kick it off with a compliment. 07:06.65 Frank Oh, thank you. 07:06.94 James Ooh. 07:08.09 Frank I like that. 07:08.18 James When you hit the search, it goes up. 07:10.00 Frank Uh-huh. 07:11.03 James It was was nice animation. Ooh, that's nice. 07:13.20 Frank Compliment sandwich, so you have to end with a compliment too, you know, but thank you. I have to say that UI is baked in Everyone use ui document browser. it's all It's all set up for you. 07:23.35 James You don't have to use that, but it's there. I did that in the travel app that I built. um they they did They built that in. i was like, oh, I worked on i was like, oh that's nice. 07:32.78 Frank Yeah. ah Can I make a little complaint there? 07:35.15 James That's nice. 07:36.36 Frank My god, I've been doing iOS development since iOS 2, and the way search bars integrate with the nav bar seems to change on every single version. It's it's maddening, honestly, dealing with that stupid search bar. 07:45.50 James Totally. 07:48.72 Frank But yeah. 07:49.54 James Yep. That being said, your toolbar, it's very crowded. It's very crowded. It's got, it's got crowdiness all over. It's got, it's got a gear. It's got a gear. 08:00.15 Frank Yeah. 08:00.90 James It's got a, it's got a gallery. 08:01.30 Frank Every app needs a gear, James. 08:03.06 James It's got the word gallery. 08:03.29 Frank Yeah. Yeah. 08:05.87 James It's got a plus button and it's got a triple dot, which is nice. 08:09.95 Frank What's the triple dot do? 08:10.14 James That's nice. Connect to us. 08:12.87 Frank I'm not even aware of the triple dot. 08:13.16 James The, You can select connect to a server, do list name, kind, sorting view options. It's all your view options. It does very nice. Yeah. 08:21.41 Frank Oh, OK. Yeah. Right. So the gear is for settings. ah So I should say, I'm using the UI document browser. that Literally, the only thing you're allowed to do is add toolbar buttons. So I actually i fully admit it's getting crowded up there. 08:35.06 Frank um And the gallery could probably be an icon. It's probably at that point where I could have an icon for that. It's tricky, though. like what is What is the iconography for a gallery? 08:46.18 James Should be a tab. Should be a tab at the bottom. um um yeah 08:50.48 Frank Ideally. Can't do it. Not going to happen. 08:52.82 James Can't do it. No, because it is, everything is browser-based, but that it is a gallery. You know, it could be, it could be, could be like a thingy. 08:58.49 Frank Yeah. 09:05.46 James But yeah, no, agree. 09:07.01 Frank Yeah. 09:08.18 James But so you added gallery. i mean, it makes sense. 09:09.31 Frank I'll work on an icon. I'll work on an icon for you. 09:11.86 James and It makes sense to be gallery. That's a hard one, right? Because also, like, people need to know what it is. 09:15.58 Frank Mm-hmm. 09:18.14 James And they see an icon, it's like a little photo. You're like, oh, what is that, right? And and gallery is a hard one. 09:20.66 Frank Like, do you even know what gallery is? Like, it's tricky because, like, even the word I kept kept debating, but basically it's user submitted circuits. So it's it's it's stuff other people have uploaded, you know. 09:32.53 Frank So I just, I call that the iCircuit gallery and gallery for short. Yeah, it's it's tricky. 09:38.05 James It's a hard one. It's, it's great functionality. 09:39.49 Frank Yeah. 09:41.45 James That was the first thing I tested. I saw the, now here's the thing is, you know, the gallery button works. Cause I pressed the gallery button and was like, Ooh, and I got it. And I literally didn't have to sign in, didn't have to do anything. You can hit gallery. 09:51.81 James You can browse around, click on one download circuit and Oh, 09:52.70 Frank Mm-hmm. 09:55.12 Frank Mm-hmm. Yeah. 10:00.66 Frank No, no. Works fine. Works fine. dont No uh-ohs. 10:04.28 James though 10:07.87 Frank Now what did I break, James? 10:08.06 James Let me click another one. Did you break it? 10:11.31 Frank No. 10:11.32 James Download. 10:12.37 Frank It's fine. 10:13.06 James It's not downloaded for me. 10:17.19 Frank Great. Maybe I did break it in the beta. Thank you. Thank you, beta tester. 10:20.86 James oh. All Test that. Anyways, that that did work in zero, in one. That did work. 10:27.26 Frank Oh, beta. 10:27.39 James How come that didn't work? 10:28.40 Frank UI development's tricky. Yeah, there must be an error being swallowed. 10:30.39 James You click on it. Yeah. Anyways. Cause you probably changed the logic of your you UI pickers. Anyways, you click the thing. It it worked for me before. So that's cool. 10:40.90 James That comes up from the bottom. That's nice right there. A little gallery like that's nice comes up. You can see it it's like, you can see the back button. It says back. It says gallery. Now let me, let me, hint let me continue on my rant and critique of said crowded toolbar. 10:55.15 Frank OK. Yes. 11:00.76 James See, and no one can see this on YouTube, but if you have the app, you just want to scroll up, not down, up. 11:00.79 Frank Yeah. 11:07.77 James And notice that it says i circuit recents, but when you scroll up, it says i circuit re dot dot dot sloppy, sloppy, 11:19.16 Frank Yeah, I agree it's sloppy. um I have an excuse. My excuse is that's Apple's UI, sloppy Apple. 11:26.04 James I don't know if you even need the word up there. I think you could live without it because it's in the bottom toolbar. I don't know if that's to code, but it's there. 11:36.43 Frank But if I pitch to you, I have no control that. 11:39.58 James um I don't know, because if I go to browse, it's not there. 11:43.54 Frank Yeah. that's Just how it works. 11:46.74 James i don't know, man. 11:47.16 Frank Yeah. it's it's a little It's a little weird. 11:47.95 James Anyways. 11:48.96 Frank They put your bundle name up there. i'll i'll look into I'll look into getting rid of it. 11:55.96 James Elite hacker, Frank Krueger. We're nameless, man. 11:58.64 Frank Oh, it's always good to hack the Apple APIs. 11:59.01 James We're nameless. 12:00.72 Frank Yeah. 12:01.56 James I have no names. Okay. 12:03.42 Frank Yeah. 12:03.70 James Now here is the real gripe. Internet. Internet. 12:08.05 Frank I'm ready. 12:09.14 James You hit gallery. 12:09.85 Frank The internet is terrible. 12:10.20 James Beautiful. Right up. 12:10.97 Frank I agree. 12:12.25 James Look at that. You see the how I can just look at that from the bottom, just up. It's beautiful. 12:15.86 Frank It's nice, right? you You approve of that, right? 12:18.78 James Yeah. Now, ideally, the iCircuit gallery would be themed dark theme in in our year of Lord AI. 12:19.41 Frank That's okay? 12:24.73 James But digress. 12:24.91 Frank Yeah. 12:26.49 James Digress. um Okay. 12:27.96 Frank I should say, on an iPad, it comes up as a nice page sheet also. 12:32.09 James Ooh, I love that. 12:32.28 Frank Just saying. Okay. 12:35.19 James I will say, um if you do some of this development, like a Mac OS and like Mac, these things that are built in that you can just spice it up, it actually looks really good. Like when you're having the popovers and the thingies. 12:49.62 Frank Yeah. 12:49.88 James um Okay. 12:53.98 James That new button, it's like, did animate in? anyways Okay. The gear. I have a problem with the gear because it comes up the gear. 13:01.40 Frank Yes, sir. 13:03.77 James The gallery comes from the bottom. the gaput It comes from the bottom. 13:06.33 Frank Yes, sir. Because it's a paid sheet. 13:08.12 James But the gear comes from the gear. Now, it's a popover, but I'm on an iPhone. 13:12.86 Frank because it's a popover on an iPhone. On an iPhone. 13:17.32 James There are no popovers. Popovers don't exist on the iPhone. 13:19.67 Frank Correct. Right. 13:22.41 James Right? This is this the band of your existence. Okay. Okay. so This is fine. 13:27.55 Frank Uh-huh. 13:28.09 James This is a UI table view. 13:29.47 Frank It's fine. 13:29.81 James This is a monotouch.dialog. 13:30.65 Frank Classic. 13:34.33 Frank but It isn't, but it basically Okay. 13:39.26 James This is a monotouch.dialog. 13:41.11 Frank worse than that, it's from a library I wrote called Preclerum Forms. 13:41.99 James Oh 13:45.79 James my God. 13:46.71 Frank Anyone can use it out there. 13:48.92 James That's great. It's very touchy. It's very touchy. Okay. um so i look at good tester. 13:55.96 Frank Yes, sir. 13:57.62 James i was like, oh, maybe I should have an iCircuit account. 13:58.17 Frank Yeah. 14:00.14 James That'd be kind of cool. 14:01.63 Frank Mm-hmm. 14:01.69 James So what did do? I said, sign into gallery on this thing. Signed in. Boom. Went away. It flew back. The window flew back to the gears. Like, I'm out of here. Yeah. Yeah. 14:12.82 James And I told you, I said, it's broken, Frank. 14:15.38 Frank Yeah. 14:15.80 James um So let's start there. 14:17.37 Frank and And James, let's let's actually be informative. or should I not interrupt your critique? 14:21.62 James No, no, no. We have plenty of critiques to go. 14:23.10 Frank Why does it go to the gear? Because when you choose a model model presentation style of popover, you get to tell it what view generated the popover. So in that case, I'm able to say it's the gear icon um that generated the popover. So that's why the system knows how to animate to and from the gear icon. 14:47.29 James I don't want it to animate from the gear. 14:47.47 Frank I'll ah allow you to continue now 14:49.09 James I don't want it to animate from the gear. 14:50.10 Frank You do not want to. OK. 14:51.93 James Navigate, navigate, navigate, Frank. 14:56.06 Frank Yeah. 14:56.66 James no No, what other app does that? 14:57.78 Frank So, okay. 14:58.70 James No other app does that. 15:00.95 Frank It looks good on the iPad because so the problem is um yeah your classic modal dialogs are ah form sheet, page sheet, popover. 15:01.30 James I'm so mean right now. 15:12.18 Frank There's a few new ones, but let's ignore those. They don't count. 15:14.65 James Yeah. 15:14.81 Frank um And page sheet, form sheet, the big difference is is it top to bottom or does it get margins at the top or bottom on an iPad? This is all iPad kind of stuff. 15:25.82 Frank um So the gallery that you were mentioning that comes up from the bottom is a page sheet. So it does it works the way that you want it. And this whole sheet system was revised in what? Was it like iOS 8 or 9 or something like that? They got kind of crazy with the sheets. 15:41.40 Frank um The problem is because the settings, this is excuses, I get it. You're you're giving me good user feedback and I'm just handing you developer excuses. um The settings, because it's a table view, it looks terrible, in my opinion, when it's all wide as a page sheet. 16:00.34 Frank But maybe I should get over myself because in this modern world of people shipping basically iOS apps on Mac, and it's it's just a thing. 16:00.77 James Hmm. 16:09.14 Frank So those big those big table view rows, those bordered and background filled rows, They can be wide. I get it. It's not just 320 pixels anymore. We're not living in that era anymore. But i I still prefer it when the table views are narrow, not wide. 16:27.42 Frank And so that's why even on the phone, um I still put it in a popover. And the popover is anchored to the gear icon, and that's why you get all the animations from the gear. 16:37.70 Frank See, I thought you would like the animation to the gear. That's that's a subtlety. That's a nicety. You don't like it, though. Dang. 16:45.53 James The thing the thing is and the reason I don't like it, is because on an iPad, I love it. Because it's going be that nice popover. 16:55.55 Frank Mm. 16:56.26 James It's going like there. On an iPhone, it actually just displays as a modal. And you can actually see, and you can actually, and it scrunches down. 17:02.75 Frank Yeah. 17:06.25 James It's like a weird scrunchie. 17:06.88 Frank It's cute. Sheet system 2.0. 17:10.87 James Yeah. And so it's it's a very touchy sheet. So so for example here, if you it's very touchy. 17:15.84 Frank Yeah. 17:19.58 Frank Mm-hmm. 17:20.22 James very It's very, see I didn't even touch anything. It's very touchy. No good, no good. 17:26.03 Frank OK. 17:26.24 James Okay, it's very touchy. So what Frank would have to do to appease me is he'd have to either change it to be a modal, kind of how he has the gallery. 17:31.09 Frank Yes. 17:34.95 James That's an option. 17:35.13 Frank Mm-hmm. 17:35.59 James Then that'd be a modal, that'd be beautiful. It wouldn't be as nice though, but it'd be something. I do think on an iPad, this this also looks very good by the way. So like the app is very optimized for iPad. 17:45.83 James So I'm just on my iPhone cause don't have an iPad. So that's my iPad, just might as well. 17:49.66 Frank But, you know, my my user base, m I mean, I do look at user statistics. 17:50.67 James might as well. 17:56.23 Frank So as much as I love the iPad and I think the app shines on iPad, i have a lot of phone users. 18:02.15 James It does. 18:03.43 Frank and So I do have to make sure it works nicely and behaves nicely on phone. 18:08.85 James So why did, so what happened? So let's talk about what happened here on the sign in with gallery. Cause it wasn't just a sign in gallery. What ended up happening is I also was like, oh online resources. I circuit manual. Yeah. 18:19.26 James Nothing happened. Other buttons, basically, I was like, I feel like and my first inclination was this windowing system. 18:21.53 Frank Yeah. 18:26.23 James I was like, you know what? You got fancy on the iPad and you messed up the window and you're trying to open a new window, but there's no parent, so it can't find the parent. So it it no in no exception, you swallowed it and boom, it went away. That was my assumption, but I don't think I was correct. 18:42.61 Frank You weren't correct, but I assumed the same thing. We think alike, James. I'm like, oh, God, did view controllers, popovers, emulating on the phone. I thought the exact same thing as you. 18:54.37 Frank Because to be 100% honest, I wrote that settings dialogue 15 years ago. And it uses APIs that I really just don't think that much about. 19:04.62 Frank um But the iCircuit manual is important, especially for new customers. And there's a few other links on there. I know the email button works because I still get lots of feedback from users. Thank you, everyone. 19:15.35 James That one did work. I tested it. 19:16.10 Frank Yeah. 19:16.67 James That one did work. 19:16.73 Frank Yeah. 19:17.39 James Yeah. That, cause that was the main, that's the, um, I'm assuming that's using like the built-in mail dialog-y thingy. there's like a there's a u well There's an API for it that's sending the mail. 19:29.43 Frank Yeah, exactly. 19:30.26 James Like two lines. 19:30.43 Frank Yeah, so it's real easy to um merge into and that that API has been there forever. 19:31.29 James Yeah. 19:35.64 Frank um 19:35.90 James And now that API is very fascinating too because i use this API as well. And I really like it and it, but it only opens the mail app. If people like are using Gmail and that's the default, it like will not And they're like, they don't use the mail app. 19:50.46 Frank Oh, is that right? 19:50.53 James It will not. Yeah. It'll throw an exception. 19:53.14 Frank I thought the opposite. Dang. Okay. 19:55.32 James No, no, it only opens the mail app. Then it'll throw an exception. If you don't have it, you know, ask me how I know. 20:02.26 Frank And someone how would someone send you a bug report? They can't email you. ah 20:06.74 James Exactly. 20:08.38 Frank Well, the doesn't this always get down to like, it's the worst, developer devices are the worst. Like now what, do I have to set Gmail as my default email? I don't want Gmail as my default email. 20:18.74 James Yeah. 20:19.30 Frank So I have to add that to my test plan, I guess. um Yeah, i I'll investigate that. I thought it was smarter than that. So won't open, for example, Gmail or... 20:28.44 James Now it'll just, ah I think it throws an exception. um And then, so what I do is I swallow the exception and then I pop up a, oh, sorry, email me directly at this this email. 20:32.01 Frank Darn. OK, so. 20:37.16 Frank Right. 20:39.49 Frank Well, I will add that to the bug report. Thank you very much. 20:42.41 James Hmm. 20:43.18 Frank So no, what was happening is quite different from all that. So the iCircuit manual is a web page that I bring people to. I actually used to, the macOS version of the app ships with the manual integrated as a bundled HTML thing because Mac has a really nice help system. 20:59.89 James Ooh, I have it. 21:03.93 Frank And it's actually pretty easy to compile everything into a help file as the Windows people would know it. Mac has an equivalent to that. 21:11.29 James Oh, look at that. 21:12.06 Frank Yeah. 21:13.11 James Look at that. 21:13.33 Frank Yeah, really not bad. um On iOS, however, i just take people to... 21:16.85 James Cool. this but Wait, this this is built in? 21:22.39 Frank Yeah, forever. um since Yeah, basically since Next Step, as far as I know. 21:24.62 James Wow. 21:28.51 Frank like This is classic Mac stuff. 21:29.59 James Ah, very cool. 21:31.29 Frank um So if you're writing a proper Mac app out there, I highly recommend doing a proper help page. um It's totally worth it. You can just throw all your HTML into a little help bundle. 21:41.96 Frank And there's even um and a help indexing app that'll create like search terms and everything so that the the help menu bar integrates with your help system. 21:42.65 James Hmm. 21:49.17 James Wow. 21:55.71 Frank It's really quite good, honestly. 21:56.50 James Crazy. 21:58.32 Frank I think it's really so. um But iOS has none of that. That's one of the AppKit things that never made it to iOS. So in that case, I just open a web page. 22:11.80 Frank And now it's time for me to give you the excuse for why i wasn't working. ah In general, I do not like, I'm just going I have a ah naughty term for these, but I hate app built-in browsers because they're never full featured. 22:24.70 James Green eggs and ham. 22:33.89 Frank Oftentimes they don't share credentials. um ah They just put you, they're just a terrible browsing experience. And because I have that bias, um I basically kick people out of the app and open up real Safari. 22:42.30 James It's true. It's true. 22:50.90 Frank um This isn't so bad because it's you know Apple added the little back button thing in the top left and everything. So I bounce you over sorry Safari, whatever your default web browser is. 23:04.70 Frank And the manual opens. And if you want to go back, it's pretty easy. I think most people know how to get back to an app. ah think I think I'll agree with you, it's not perfect, because I know what your next complaint is going to be. But allow me to finish what the bug was. So forever um since iOS 2, UI application has been able to open a yeah URL. 23:29.69 Frank Open yeah URL, it's a perfect API. 23:31.61 James Open it up. 23:31.82 Frank You give it a yeah URL, it opens it. 23:32.53 James It's right there. it is good it's It's in the name. 23:35.42 Frank Can't really. 23:37.28 James It's in the name, people. 23:37.59 Frank Yeah. And it's actually surprising. um So you can do in-app yeah URLs also. So it'll delegate off if you've registered different schemes for different apps and things like that. So everyone knows OpenURL. Everyone loves OpenURL. James, did you know OpenURL no longer works in iOS 26? 23:56.91 James Oh, wow. didn't know that. 23:58.07 Frank Yeah, so it's been deprecated for a while. I believe in iOS 10 it was deprecated. So we'll go we'll just call that eight years. I don't know what the actual number is, but roughly speaking, it's it's been deprecated for eight years. 24:15.48 Frank But like all Apple deprecations, it's a little boy crying wolf. Apple deprecates everything, removes nothing. This is what I have learned over my whatever million years of writing iOS apps. 24:30.42 Frank And that's all totally true unless you start compiling with the new iOS 26 SDK, which is what I just started doing with my app. 24:43.45 Frank So if you compile with the old SDK, they run a little shim layer and OpenURL still works. James, but if you compile with the iOS 26, do you think that they perhaps remove that API? 24:57.97 James No. 24:58.21 Frank No. No, what they did instead was they made the API do nothing. 24:59.31 James No. 25:04.27 Frank It's still there. You still compile against it. 25:06.39 James So the ah the click works. The click works. so that That makes sense. 25:09.88 Frank The click works. 25:10.62 James Yeah. 25:10.96 Frank Absolutely no error is brought up. No error is logged in the console app. In fact, in Apple's documentation, they say, hey, this API is here, but it does nothing. 25:24.31 Frank Goes nowhere, does nothing. This has got to be the worst form of deprecation i have ever run into. Now, I should be clear with my iCircuit is still compatible with iOS 12. 25:33.41 James Bye. 25:39.74 Frank So I have no excuse. I really should have upgraded to the new API. But, you know, there's bigger fish to fry out there than chasing what Apple engineers think you should be using as an API. And it's always just been stable. I fully admit i do not thoroughly test the settings dialog on every release because you just assume that API called OpenURL is going to open the stupid URL. This isn't rocket science. Open the URL, Apple. Please just open it. 26:13.59 Frank Well, it no longer opens yeah URLs. So that bug got through and you were kind enough to report it to me. um It was so funny though, because like, yeah, I'm looking through all the error logs. i'm like, there is no error being generated anywhere. Like, what is going on? had to lower myself and read the docs. 26:35.19 James I, uh, it's one, it's funny too, cause yeah, open yeah url has been deprecated for a while. However, can open URL is still not deprecated. That still works. And so the funny part is instead of opening open URL, the, the actual API is just open. 26:51.80 James So, and then you give it a yeah URL silly and a few other options where you have external and you can do SF Safari view and all these other ones. Right. 26:58.42 Frank Right. So, I should tell everyone. 26:59.17 James Um, 26:59.50 Frank So, there's still an open yeah URL, but there's an overload for it now. There's open URL that takes a yeah URL, a set of options, and a callback function. Two parameters you don't need at all because you're just opening a yeah URL, but there they are, and you have to use them. 27:15.35 James Open it up. Gotta to use it. Open it up. Nope, not a allowed to. ah No, that's a good one because we've talked about on this podcast how yeah APIs, I mean, this is like my fear of like, ah of a store kit, right? 27:20.54 Frank okay 27:32.27 James Store kit, that's why I stopped doing, because I'm like, it's gonna stop working eventually and then I don't know what to do. 27:32.92 Frank Yeah. 27:37.94 Frank Silently, i from what I've learned. 27:41.29 James silently up it's just gone um so that's a pretty good that's a pretty good one okay that's good okay cool i'm glad you found it that's good 27:49.14 Frank Yeah, okay. so um So I think, and then maybe before the show, I'm just going to jump straight to your second criticism. um You said, why jump out of the app at all? So I should say there are alternatives now. I believe um Safari Kit, not WebKit. 28:08.60 Frank um has more of a full-blown browser that you can use in the app. And it actually does share cookies with the real browser and all that stuff, assuming you use Safari, though, I think, on all your other stuff. 28:14.58 James Thank 28:23.42 Frank So I probably could do an in-app browser. And in fact, I remember even starting a project to improve the help system on here and basically building in and an in-app browser. 28:36.44 Frank And hilariously enough, I do have an in-app browser for the Circuit Gallery. So when you hit gallery, it's bringing up my in-app browser. And it's not very good, to be thoroughly honest, because it's an in-app browser and they're all terrible. But um I can probably move a bunch of those so over SafariKit because I think they have a better one. 29:00.09 James It is, because I mean, I would say there's like pros and cons of this. And and I almost oddly, you you may have convinced me to like not, but I think you could make it an option, funnily enough. 29:09.50 Frank Oh, 29:12.56 Frank god. 29:13.03 James Like, you know, where do you want? 29:13.05 Frank the The worst, no. Yeah. 29:16.25 James Because here's the benefit of opening it in another browser is that I could go back and forth between documentation and my circuit. 29:20.53 Frank Yeah. 29:26.02 Frank Right. 29:26.26 James And I could be on different pages. The problem with the in-app ah So I think you're actually doing it correct, but by the way. 29:32.09 Frank Oh, whoa, whoa, whoa. 29:32.86 James The problem with the int... 29:33.33 Frank Can we get, did it everyone get that? 29:34.42 James Yeah. 29:35.41 Frank Everyone clip that? So there's your ringtone. Thank you. 29:39.35 James Now, maybe like suggest an improvement should be in app and not maybe jump me out. That seems a little bit... You know you want to keep people in the app. 29:45.07 Frank Okay. Yeah, I agree. 29:47.13 James um terms Terms in EULA, maybe that's not completely necessary to to jump me out of the application. 29:48.11 Frank I agree. 29:51.99 Frank Apple made me put that one in. 29:54.10 James Now the iCircuit manual I do think would make sense to jump outside because I might wanna flip back and forth between the app, back and forth. 30:02.14 Frank Yeah. 30:03.35 James And yeah. 30:03.45 Frank And on iPad, iPad actually has multi-windowing support, so it is nice. Now, you can finally put two apps side by side. Mm-hmm. 30:11.70 James unless Unless you were to actually make it super integrated And what I mean by that is like you you would like store the user's you know nav state as they're napping around. 30:27.54 James And then when I'm on a circuit, so let's say I create a new circuit and I go to to the gear down there, which is also different, then maybe there's a manual button and then it would open it so I could see the manual in real time, like in the application, but I'd have to remember where I'm at. 30:41.47 James Right. So imagine. having a manual that I can flip around anytime, kind of like on the Mac, right? 30:43.39 Frank Yeah. 30:46.23 James It's a different window. um So, yeah. 30:50.39 Frank Yeah, and there is multi-scene support. So technically, I could have a documentation scene. But those get a little bit funky too because technically, every scene in your app should be able to get you back to the root scene of your app. 30:56.42 James Ooh. 30:59.72 James Yeah. 31:05.43 Frank So basically, I'd be opening a whole second window of the app that just happens to have a full screen help system in it. 31:06.26 James Yeah. 31:13.24 Frank think help has always been a little bit hard in apps, to be honest. 31:17.02 James I feel like it. and But an app like yours does need like that sort of you know documentation. 31:22.78 Frank polish yeah mm-hmm mm-hmm 31:23.97 James It's pretty advanced. mean, it's a very advanced app in general. So I actually don't have too much else. um One, when you hit the new button, it does a nice little little animation thing. 31:33.98 Frank ah You're OK with my sign in and sign out buttons. 31:35.61 James And then it zooms in. 31:37.92 Frank on I was mentally preparing myself for you hating those um because i do have signing in and signing out of the gallery so that you can upload to the gallery. 31:48.44 Frank For that, I make you have a user account. You can download anytime or if that bugs not. 31:51.16 James That one pops up in the app because you have to. 31:56.89 Frank Oh, interesting. OK. Well, I thought you were going to complain. 32:00.18 James yeah so when you oh That's okay. 32:02.09 Frank Sorry, thought you going to complain because it pops up the Apple dialog box of, are you sure you want to go to icirca.com to authenticate? 32:11.90 James im I'm used to that. so I think you pop that up. 32:13.30 Frank Yeah, OK. 32:14.62 James The bug is when you go to sign in 32:16.06 Frank m 32:17.27 James And then you don't sign It's like, you're now signed out. I never signed in Frank. I never signed in. Come on. 32:25.14 Frank Written down, noted and approved, I'll admit, um I ran into that myself um and I was like, I should fix that. 32:31.64 James It's not the worst. 32:32.90 Frank And then I didn't fix it because this is this is proper developer excuse. 32:34.94 James Yeah. 32:38.22 Frank You ready for this one? 32:39.76 James Yeah. 32:40.67 Frank Preclerum forms can't refresh the form page. So I really need to close that page to refresh the UI. Oh, it's so embarrassing, the corners we paint ourselves into. This is... this is Can we just name this episode Frank's Embarrassment? um I do want to earn your respect back. 33:01.22 James Uh... 33:01.30 Frank um I do value polished apps, and I'm going to develop or reject this because I agree with you. um I was taking a shortcut by leaving that dialogue as it was, closing the settings, because... 33:17.73 Frank It's just easier. It's just easier. how how How many criminal activities have occurred because someone said it's just easier? I don't want to. I don't want to contribute to that. 33:27.77 James And like none of these little things, like no one's going to stop using your app because of the things that I pointed out. I call this the um the the the Hanselflexion point because well i worked for Scott Hanselman for so long, and Scott is like meticulous with details. I would like create... 33:50.33 James like this stunning app or a website and like this and that. And I'd like, check out this thing I made and this demo. And he's like, fav icons blank. so You know, I did. 34:01.46 Frank Dude, did you even try? 34:01.64 James yeah. 34:02.89 Frank Yeah. Mm-hmm. 34:03.98 James It's like, did you, there's like some weird padding over here. yeah He'd be like, point out the most, he'd it would be, and i i've and i i I unfortunately have adopted because I've worked for him for so long. 34:09.66 Frank yeah 34:15.48 James And he pointed out all of my failures over and over and over again, these little tiny micro cuts. But it what it made me end up doing is like doing what I'm doing now. And I now I think about the user flow, the little things that people don't think matter, but actually kind of do matter because the polish, right? 34:26.10 Frank yeah 34:30.41 James People, especially if people are going in also, I'll say why this in dialogue is important. It's the one dialogue that you can give Frank extra money by the way for iCircuit Pro. 34:39.44 Frank oh right very important yeah it's true gotta look good yeah 34:42.77 James it's It's the one area. People have a bad experience, they're out. bunch Can I long press? Ooh, I can delete. Ooh, it doesn't ask me if I want to delete, but sure. 34:52.02 Frank So um I 100% agree with the Hanselman and FlexionPoint, whatever you called it there. It's actually what drew me to Mac apps in the first place. I felt like Mac apps and Mac developers in particular um did spend a lot of time on this refinement and this polish stage. 35:12.66 Frank And it's what's drawn me to the platform. It's what drew me to being a Mac developer myself and wanting to create that kind of polish software. So um basically what I'm saying is your criticism is hitting me straight in the heart. 35:26.36 Frank And I can't really, I'm not going to hide. 35:26.84 James Nice. Oh, 35:29.24 Frank I'm just going to like, yeah, you're right. Thanks for the call out because it's important. And honestly, this is what I find frustrating about because we have to make every episode about AI. This is what I find frustrating about AI user interfaces. They often lack this kind of polish. 35:47.13 Frank And um if if I'm going to still live in a world of making artisanal software with my artisanal hands, then I need to keep the quality standards high. 35:47.32 James yeah. 35:59.51 James I hundred percent agree. um, have been working on this tiny clips clips manager, uh, pro deluxe version. 36:07.41 Frank Mm-hmm. 36:09.66 James And you it it's, it is polished. It's little tiny things. And it's some things that I can't know, actually spent a lot of time recently with, uh, having it understand retina displays and two X-ing what to actually save it at. 36:21.46 Frank Oh gosh, yeah. You would think it'd be simple, right? 36:24.26 James What's it is. No, it's not. 36:26.43 Frank No, it's not. 36:26.97 James ah It's not. So I spent a lot of time fixing a lot of stuff there. But then, yeah it it it it got a lot of things close because it's a pretty complex UI. it has a you know It automatically resizes. 36:41.11 James There's list views. There's icons. There's hover overs. There's favoriting. 36:44.44 Frank And it's tricky because you're not just dealing with user interface elements. 36:45.03 James There's... 36:47.76 Frank You're dealing with media resources. And there's a million ways to deal with media resources when it comes to scaling because there's metadata. 36:50.35 James Yep. 36:56.42 Frank There's the actual resolution of the thing. There's the encoded resolution versus the display resolution. like i know the pain you're feeling. 37:06.46 Frank And ah I'm just going to say, you better get it right, buddy, or I'm just going to reject that beta. 37:07.05 James yeah 37:12.73 Frank ah yeah 37:12.89 James um well yeah i guess let me double check the tiny clips yeah it's a it's definitely it's definitely a tricky one and i've spent the most time because most of tiny clips uh didn't really have a ui however the one thing i recently ah found out is, you know the nice little s slidey to the left UI, the little slidey thing? 37:39.42 Frank Yeah, yeah, it used to be called the sidebar. i mean, it's still called the sidebar. It used to have a cute cute name. I forgot. The drawer. 37:47.02 James The UI split view controller thingy. 37:47.48 Frank No, sometimes. 37:50.95 Frank That's what we use now. There used to be a thing called the drawer. And now you do a split view. 37:55.10 James Oh yeah. 37:56.43 Frank you put a table view or an outline view in it. And you give it the sidebar background style. And then you get all the nice niceties that you want. 38:07.96 James And the problem is 38:13.14 James that if you're not using a scene, a UI scene view kit thingy, it doesn't work how you want it to work. You have to actually use the scene and all this stuff. I had again, it was all these little things and yeah. 38:23.67 Frank you can You can do it in code. It's just hard because they don't document very well how to make all that stuff light up. 38:30.59 James No. 38:32.28 Frank And in particular, in iOS 26, like, toolbars changed. you know The documentation doesn't say it. The HIG didn't change. But I'll tell you what, I struggled with that toolbar because I still support Mac. 38:46.94 Frank I go back pretty far. I mean, it's why I wrote Cleanroom, so I could test some old versions of Mac. And making sure that my new toolbar looked great on iOS 26 and looked good on, think, macOS 12, something like that. 39:00.86 Frank um It's tough. And Apple does not document any of that stuff because, A, they've moved everyone over to SwiftUI and they totally pretend AppKit doesn't exist anymore. 39:11.26 Frank B, they keep changing how AppKit works. So it's impossible to keep up with how AppKit changes. Yeah. 39:17.43 James It's true, yeah. I've been struggling and it's it's been one of those things where I got a lot of stuff down. 39:19.22 Frank okay 39:23.02 James It's really that polished. So I'm just, you know, mostly agreeing with you. It's like really just that polish at the end of the day, right? That is so important to really get correct for your users or else you get a butt like me that's like critiquing you, right? 39:28.47 Frank Yeah. 39:34.68 James The AI doesn't have a me to to be a critique because I am the critique. 39:35.32 Frank Well, no. Mm-hmm. 39:38.26 Frank Mm-hmm. 39:38.36 James I got to code it, right? I got to really nurse the thing to get it right. I mean, it's good, but it's not hundred percent right. And we can make mistakes too. We're not like all user experience experts, but also sometimes you just got to ship the code. 39:50.13 James It's got to ship the code. 39:51.06 Frank Yeah. Well, especially when there's a glaring bug. So the glaring bug right now is you cannot log into the Circuit Gallery and you cannot open the manual. Those are pretty big bugs, in my opinion. 40:04.21 Frank So that's why I was pushing to get the app review done quickly, because I do want to just kind of push this thing out. So now I have to make the debate tonight of whether to push out a.2 and then prepare a.3, which has the James refinements, or um just take another swing at hopefully AppReview going quickly and get those refinements in. 40:25.55 James Yeah. Well, let us know if you've ah ever been in a situation like this where you had a dear good friend that loves you so much. that they tell you to your face, I hate everything about your application. 40:38.23 Frank You are a bad developer. 40:38.36 James fix it Fix it for me, even though i'm not gonna use your app. um ah Let us know. I mean, I think it's super fascinating because while I just critiqued, you know Frank's app pretty you know complicatedly, just like one screen, two screens. 40:52.17 James like This is what I've been doing because to your point, I want my AI to be better. 40:54.80 Frank Mm-hmm. 40:57.13 James I want to be better. i want it to to to craft those screens like I wanted to. right and Also, I have my own expectations of how good I want my apps to be and it better be as good as if I was hand coding it. 41:07.90 Frank Yeah. 41:10.86 Frank Mm-hmm. 41:11.01 James Artisanal gelato. 41:13.46 Frank Mm-hmm. 41:14.51 James It's a UI. right It's good. 41:15.90 Frank I always complain online that um the AIs are not good at user interface and someone's like, well, just write up a user interface markdown file describing all this stuff. 41:15.96 James so 41:25.70 Frank I'm just like, oh, ah okay, I just need to summarize 30 years of user interface lessons that I've learned into a markdown file that doesn't completely obliterate your context window. 41:35.35 James Yeah. Yeah. 41:38.34 Frank i'm like, OK, I can do that, maybe. No, it's impossible. like It's 30 years of experience of using software, having opinions, and building taste and quality standards. So it tragically hurts me in the heart that I missed my quality standards. I will hit those, James. They will be, we will up the qualities. 41:59.64 James Well, I'm looking forward to that update. Go get that update because by the time you listen to this, Frank will have a beautiful refreshed user interface for iCircuit. So go to iCircuitapp.com, iCircuit.com, what's the URL? 42:10.43 Frank I'd start with app.com. Yeah. 42:12.15 James iCircuitApp.com. Couldn't get iCircuit.app because that domain didn't exist 15 years ago. 42:13.91 Frank Awesome. 42:17.43 James ah That's going to do it for this merge conflict. 42:19.58 Frank yes 42:21.50 James Hope you enjoyed it. If you're at MVP Summit, maybe I'll see you there because I'll be at the MVP Summit when your this comes out and the MVP Summit's upcoming. 42:28.06 Frank so 42:29.74 James Then else, maybe I'll see you at Build. Go to build.Microsoft.com. Registration's open. Check that out. you know What's his name? Peter's going to be there. um claud The Claude guy. 42:40.75 Frank Ooh, open claw? 42:40.95 James The claw bot, open claw guy, Peter Steinberger. 42:43.14 Frank Claw. Claw. 42:45.55 James I swear I met him in person somewhere. 42:45.59 Frank so 42:47.27 James It's Peter Steinberger. 42:48.11 Frank Sweet. That'd be fun. 42:50.49 James Yeah, so check it out, people. um Opportunities are about in San Francisco. San Francisco. 43:00.26 Frank That's far away. 43:00.34 James Gotta go to the bay. 43:00.98 Frank That's in the sunshine state. 43:02.68 James It is, gotta get those airline miles. 43:02.90 Frank That's it. 43:04.48 James All right, I'm gonna go eat some pizza. All right, everyone, have a great night. going to week's merch conflict. So until next time, I'm James Mottemagno. 43:13.53 Frank And I'm Frank Kruger. thanks for watching and listening 43:16.92 James Peace.