Empower Apps

Cihat Gündüz comes on to talk about how his WWDC 2024 wish list went, Multilingual Apps, and more.

Guest

Announcements
Related Links

Related Episodes

Social Media

Email
leo@brightdigit.com
GitHub - @brightdigit

Twitter
BrightDigit - @brightdigit

Leo - @leogdion

LinkedIn
BrightDigit

Leo

Patreon - brightdigit

Credits

Music from https://filmmusic.io
"Blippy Trance" by Kevin MacLeod (https://incompetech.com)
License: CC BY (http://creativecommons.org/licenses/by/4.0/)
  • (00:00) - WWDC In Person Thoughts
  • (06:13) - Cihat's Wish List Evaluation
  • (21:16) - WWDC Notes
  • (27:17) - Swift 6 Migration
  • (31:58) - Multilingual Apps and TranslateKit
Thanks to our monthly supporters
  • Steven Lipton
★ Support this podcast on Patreon ★

Creators & Guests

Host
Leo Dion
Swift developer for Apple devices and more; Founder of BrightDigit; husband and father of 6 adorable kids
Guest
Cihat Gündüz
Spatial-first Indie Developer | Projects: @SwiftEvolutionM, @WWDCNotes | Apps: @FreemiumKit, @TranslateKitApp, @CrossCraftApp, @Posters_App, @GuidedGuestMode.

What is Empower Apps?

An exploration of Apple business news and technology. We talk about how businesses can use new technology to empower their business and employees, from Leo Dion, founder of BrightDigit.

[00:00:00] WWDC In Person Thoughts
---

[00:00:00] Leo Dion (host): Welcome to another episode of Empower Apps. I'm your host, Leo Dion. Today I'm joined by Cihat Gündüz Cihat. Thank you so much for taking the time to joining me today.

[00:00:13] Cihat Gündüz (guest): Oh, it's an honor to be here. Thank you for inviting me.

[00:00:15] Leo Dion (host): Before we begin, I'll let you go ahead and introduce yourself.

[00:00:19] Cihat Gündüz (guest): All right. So I am Cihat, as you said, and I do IO development since 2011, so that's been like 13 years already. And I'm an indie developer, full-time in developer since two years. And I developed seven and published seven apps in the last six months. Yeah. And that's currently my thing. I used to work for an app agency as the iOS team lead, and.

[00:00:41] Cihat Gündüz (guest): After that I worked for like a product company for two years and built like an Android and iOS team as more like a manager there, but also doing technical stuff. Yeah,

[00:00:50] Leo Dion (host): Awesome. So I've followed your material for the last year. You had a really great article about Swift Six migration.

[00:00:59] Cihat Gündüz (guest): right.

[00:00:59] Leo Dion (host): And testing that stuff out. And then I got to meet you in person in California. This is my first post WWDC recording, so that's exciting. And I got to see you at one more thing, but was this your first time at WWDC

[00:01:15] Cihat Gündüz (guest): I was at WWDC actually when Swift was announced in 2014 as a student scholarship winner. I. So that was like, really, that was exciting times. And now I'm back. I was back this year for 10 years of Swift, which was amazing. Like a good

[00:01:29] Leo Dion (host): Yeah. We're doing our next episode will hopefully be with Desmond Blair, who was a student scholarship not a student challenge winner. Yeah, we'll be talking to him about that experience as well. Yeah. What was, I guess, how has the vibe changed? Both like. As somebody who's now more mature, I guess, and older but also just the way WWDC is run drastically different than it was 10 years ago.

[00:01:58] Cihat Gündüz (guest): Actually I was in like in, it was in San Francisco back then in Moscon West center. And I was there in 2015 again without a ticket. Because I felt like there's, there was the Alcon, which is like an alternative conference. I. And I actually thought like it's, it was not like the 2014 experience was amazing.

[00:02:16] Cihat Gündüz (guest): I, I learned so much. I met so many people and stuff like that, like 5,000 people inside Moscone West Center and all of them are developers. And also SWIFT was announced, so it was really exciting. Everyone was sitting there and downloading stuff and trying things out. And the next year when I was there for Alcon, I was a bit disappointed because most people were still inside Moscone West and it was hard to like really have the same feeling again.

[00:02:42] Cihat Gündüz (guest): Which is different now because Apple is not doing the full week thing anymore. So they just have things for one day, and then people go to the community stuff to the community events and stuff like that. So I got to meet all the people who also had a ticket, which was amazing. So I think it's like in that department it has I think, a different vibe now.

[00:03:02] Cihat Gündüz (guest): Even if you don't have a ticket, like if you have a ticket, also it's not such a big advantage anymore. Back then, it was a huge difference.

[00:03:10] Leo Dion (host): Just as a first timer, like I had an amazing time, like I'm totally

[00:03:14] Cihat Gündüz (guest): were there for the first time or you had a ticket.

[00:03:17] Leo Dion (host): No, I did not have a ticket. No. But like you said, it isn't as big of a deal as it would've been a few years ago before I. And just being able to go to so many different events I was like hopping around everywhere, going to every little event I could.

[00:03:32] Leo Dion (host): And it was amazing. I had, I talked about it in the newsletter, I'll link to it, but basically, yeah, there's just so much going on. It's hard to like. It's hard to have any quiet time, honestly. And I just, I was jam packed with stuff and social events and things like that, so yeah, I had a fantastic time.

[00:03:50] Cihat Gündüz (guest): Yeah, me too. I met so many people that I followed also on Twitter, Masterson, et cetera. And yeah, like you included, I like people I really admire. I really I follow their stuff. I listen to their podcast too. I read their articles and now I have a face and I have some feeling of knowing who that actually is.

[00:04:08] Cihat Gündüz (guest): That's really makes a difference.

[00:04:11] Leo Dion (host): it makes a huge difference. Was there any highlights you had from your experience there and one more thing or any of that stuff

[00:04:19] Cihat Gündüz (guest): You mean like the events and stuff? That's a good question. I think like the people are the highlights, right? Like all the people you meet and the friends you make. I also learned, I didn't know that before. I had a feeling that I'm based in Germany and I had a feeling that there are not that many iOS developers here, but I'm totally wrong.

[00:04:37] Cihat Gündüz (guest): When I was there, like so many people were from Germany. So that's something I learned and make connection connections there. And yeah, the people is. That's what it's all about. I think if you go there, because the sessions, they're online, so you could watch them online and yeah,

[00:04:52] Leo Dion (host): Yeah, that was one thing is I watched very few sessions while I was actually there,

[00:04:56] Cihat Gündüz (guest): I didn't watch any, I didn't watch any IM the,

[00:04:58] Leo Dion (host): yeah, because it's like I could do it anytime. It's not okay, that's that thing that's gonna be around forever. It's the, it's meeting the actual people

[00:05:06] Cihat Gündüz (guest): two. I visited the maybe the highlights in terms of events was the James Dempsey concert, which was yeah, I was there for the first time. I didn't even know James Dempsey really. Like I heard the name a few times, but I didn't know who he was. And it was a great concert. And the songs are amazing.

[00:05:22] Cihat Gündüz (guest): Like he started with a song called Hello hello World. And then he ended after we asked for one more song, he ended with one more thing. So that was like the perfect circle there.

[00:05:32] Leo Dion (host): Yeah that I did not get to go to that I like get up early the next day, but they had the some of the folks from Apple put together a community event. And I got to go to that and meet some of the folks on the actual Swift core team which was really cool. I enjoyed that and the whole One more thing conference.

[00:05:49] Leo Dion (host): I'm super glad that was organized and happened. That was really great. It was like a good central meeting place for a lot of stuff.

[00:05:56] Cihat Gündüz (guest): For sure.

[00:05:57] Leo Dion (host): so I'm really glad I got to attend it and participate in it as well.

[00:06:02] Cihat Gündüz (guest): Yeah, it was great. Like the panel you had with the three awesome speakers that was also great. Like I think that's also one of the highlights from the One More Conf itself.

[00:06:09] Leo Dion (host): Oh, thank you. It helps to be a podcast interviewer, I guess.

[00:06:13] Cihat's Wish List Evaluation
---

[00:06:13] Leo Dion (host): So I had all the questions already from doing a recording, so it worked out really well. Yeah, and hopefully we'll have that video up in the next couple months or so. So definitely look out for that. So we talked about all the things that you enjoyed.

[00:06:27] Leo Dion (host): So maybe now we're gonna get into disappointments. You put together a wishlist a few weeks ago about. Things you wanted. And I, there's some really interesting thoughts that you had. And I want to just let's touch base and see like where those things are now and or what what things we gained that maybe are a little bit closer to that.

[00:06:49] Leo Dion (host): And we'll I wanna start off just, we'll just go over the list. I'll put a link in the shout notes for people to look at. But I really thought this was interesting, and I don't know if you were the only one to say it, but a weather kit, like API for Apple Sports that, that would be really cool.

[00:07:05] Cihat Gündüz (guest): Yeah, I think so too.

[00:07:07] Leo Dion (host): do you think so?

[00:07:09] Leo Dion (host): We didn't get that did we?

[00:07:11] Cihat Gündüz (guest): No, we didn't.

[00:07:12] Leo Dion (host): Okay. We didn't. Okay. I just wanna make sure. They'd almost need to buy like a company to do that, right?

[00:07:17] Cihat Gündüz (guest): Maybe. Yeah.

[00:07:18] Leo Dion (host): I feel like that would have to be, that would have to be the thing is like they would buy a sports API company and then in two years we'd magically hear about some like new API called Sports Kit.

[00:07:29] Leo Dion (host): Isn't that how it usually works

[00:07:31] Leo Dion (host): With Build Buddy or workflow or any of that stuff.

[00:07:35] Cihat Gündüz (guest): Yeah I'm just not aware of all the companies they have already bought, so maybe they had already bought something in that regard because they are so

[00:07:41] Leo Dion (host): I don't remember hearing anything about

[00:07:43] Cihat Gündüz (guest): No, they didn't mention anything. But they are also invested into sports. And especially now that I have the vision Pro and I've tried like different experiences there.

[00:07:52] Cihat Gündüz (guest): I'm really convinced that the things that's going to sell the Vision Pro most to like the average consumer is live sports and.

[00:08:01] Leo Dion (host): Or live events,

[00:08:03] Cihat Gündüz (guest): events in general. Yeah. But in general yeah, things where you have a lot of fans and those fans are also willing to pay a lot of money to experience, get the best experience possible.

[00:08:13] Cihat Gündüz (guest): I think for concerts, you wanna be there live, like you can't make it better than the concerts itself, I think, because that's all about the music experience as well. But for live sports, I'm I have a different take on that because. The thing is with the Vision Pro you can have 20 cameras spread across.

[00:08:29] Cihat Gündüz (guest): For example I'm thinking about soccer right now. You have 20 cameras on the pitch. All camera cameras on different places, and firstly, you can't sit any as, as close as the cameras can. Can be. And when you are in the stadium, you can't switch the cameras either. So it's for sure the better experience to be able to switch cameras and be much closer.

[00:08:49] Cihat Gündüz (guest): And yeah I'm really convinced about that. So I think it would make a lot of sense for Apple to create this third party sports API based thing as well. That's why I hoped for this new API, but we didn't get one.

[00:09:02] Leo Dion (host): Did they improve their immersive video when it comes to sports? 'cause I heard not very good things about that soccer video

[00:09:10] Cihat Gündüz (guest): You didn't hear good things about

[00:09:11] Leo Dion (host): out with

[00:09:12] Cihat Gündüz (guest): I love it. I watched it 10 times or something like that.

[00:09:15] Leo Dion (host): Oh really? I heard people were just like, oh, they cut too fast. It was cut for 2D and not for immersive video. But you really enjoyed it.

[00:09:23] Cihat Gündüz (guest): I loved it. Like I have showed it, like my Vision Pro, I showed it to 25 people or so because we don't have vision Pros here. So people are really interested in trying it out and everyone was really amazed. Even ex soccer players, they were really amazed by the immersion and, but yeah they believe that the future of watching sports is going to be in like 3D like this. Maybe that it was not cut perfectly, but in general, the people, they loved it.

[00:09:49] Leo Dion (host): Loved it. Okay. Number two, add zoom modifier to scroll view and swift ui. Did that, did we get that?

[00:09:57] Cihat Gündüz (guest): I'm not sure. I think we did because we have now a new modifier. It's called on scroll, geometry change. And we do get like the inset and stuff like that. And I think what we can do now is somehow use that information that we have now specifically on scroll views to create like a scale effect on content that we have in there.

[00:10:17] Cihat Gündüz (guest): I haven't tried it yet, but I think you can now technically build a zoom like modifier, but we didn't get the modifier directly, so we don't have anything that's really easy to use, which I was really hoping for because. So scroll use should be zoomable. Like I have this crossword puzzle game where you have a crossword puzzle at the end, and I just use a scroll view for that.

[00:10:37] Cihat Gündüz (guest): And then I have like contents there and all the people ask me like, why can't I zoom in? Because I wanna zoom in and also zoom out to see like more of the crossword.

[00:10:45] Leo Dion (host): A pinch and

[00:10:46] Cihat Gündüz (guest): Exactly. That's exactly what they want. And I, I just couldn't create it because there are like workarounds where based on I dunno, a geometry reader and stuff like that for like images for example, you can zoom in them, into them.

[00:11:00] Cihat Gündüz (guest): But with a scroll view, it doesn't really work because it breaks the idea

[00:11:05] Leo Dion (host): think we just need another view for that? Like in UI kit, would you still use a scroll view for that?

[00:11:11] Cihat Gündüz (guest): You mean like a Zoom view or something like that?

[00:11:14] Leo Dion (host): It's like almost seems like a map. That's what I'm hearing. When you talk about like zooming and stuff, that sounds like a map to me.

[00:11:21] Cihat Gündüz (guest): Maybe. I don't know. Maybe we

[00:11:22] Leo Dion (host): I don't know.

[00:11:22] Cihat Gündüz (guest): maybe we need a new view, but I just look, I'm just looking for an easy way to

[00:11:26] Leo Dion (host): How would you do it in a UI kit?

[00:11:28] Cihat Gündüz (guest): I would have a scroll view and then you can, I think you can just change the, basically did you change the the offset and stuff? And I think you can also zoom, I think there is zoom offset or something like that.

[00:11:38] Cihat Gündüz (guest): I don't remember. It's been a few years since I lost you. U like it, but I know it's possible.

[00:11:43] Leo Dion (host): Okay, so fix swift data limitations on cloud kit. I don't, did they fix that? I don't think they did they? I.

[00:11:50] Cihat Gündüz (guest): They added, they,

[00:11:52] Leo Dion (host): were not a lot of swift data changes other than the history a PII was really surprised by

[00:11:57] Cihat Gündüz (guest): they focused on performance and software. They added like index stuff, but they didn't do anything else.

[00:12:02] Leo Dion (host): Okay. Okay. This is really cool and I wanna talk about this quite a bit 'cause I think we have the same app idea here. They, did they add anything for per what you have as persistent windows and volumes and vision os?

[00:12:16] Leo Dion (host): Did they add anything?

[00:12:18] Cihat Gündüz (guest): They did add a new option in the settings app that you can basically, and this is also opt out. So it's basically by default it's turned on. What happens is that you have the switch, which makes sure that when you restart your. Your Vision Pro, that's the apps you had last open that they reopen and the window positions also stay basically where they were.

[00:12:40] Cihat Gündüz (guest): I tested this in the beta one, and the first time I tested it didn't work, but now I'm testing it more and it works. But it's not what I was wishing for. What I was wishing for is that either the user or we, as the developers can say. For specific windows that those should be fixed, even if the user decides to long press the digital crown, which recenters everything, which is still not working.

[00:13:03] Cihat Gündüz (guest): So if even with the new option that you have, it still recenters all the windows and then yeah, you lose the real augmented reality feature.

[00:13:12] Leo Dion (host): So you have a app. You have a app or an app idea

[00:13:15] Cihat Gündüz (guest): have an app,

[00:13:16] Leo Dion (host): because you had the, okay. What's it called?

[00:13:18] Cihat Gündüz (guest): It's called posters. It's basically dynamic movie posters, which update every 15 minutes. You just open them, you just place them on your wall, so wherever you like to them to be. And then the idea is that they stay open all the time. And when you walk by, like new posters and then when you're interested, you just click it, watch the trailer, or where it's query or running, stuff like that.

[00:13:38] Leo Dion (host): Okay, because I had a, I have a similar idea where I can do photos on the

[00:13:45] Cihat Gündüz (guest): Like

[00:13:45] Leo Dion (host): So yeah, just pho little, like photos from your photo library. Like you just post 'em,

[00:13:51] Cihat Gündüz (guest): That was my first idea

[00:13:52] Leo Dion (host): your wall.

[00:13:53] Cihat Gündüz (guest): That was my first, I wanted to build like 3D frames, so that look amazing. And then you could just put your photos in there. But then,

[00:13:59] Cihat Gündüz (guest): I found the frame design was too complex for me, and the posters thing was easier to make as a first app.

[00:14:04] Leo Dion (host): okay. Yeah, how easy is it to do something where it's like mounted on a wall? Is that pretty easy or

[00:14:11] Cihat Gündüz (guest): there's no API like the interesting thing about Vision Os is you have these two modes. One is the shared space mode where you can have multiple apps open, and the other one is the full space mode where only your app is open. And if you're in the full space mode, you can use AR kit and inside AR kit you get things like planes and walls.

[00:14:28] Cihat Gündüz (guest): So you could do the placement on walls. If you are in a full space, but all my app ideas are more like augmenting the reality. So you can continue using the Vision Pro with other apps, with other experiences while those things just augmented your reality, like adding posters, frames and stuff like that, which needs to work in a shared space.

[00:14:46] Cihat Gündüz (guest): And we don't have an API to pin anything to the walls. It doesn't work. And also what I would expect is that vision always does this automatically. If a user places a window very close to a wall, it should like magnetically snap somehow. That's how I would expect to work.

[00:15:01] Leo Dion (host): So how does posters do it?

[00:15:03] Cihat Gündüz (guest): It doesn't do it like as a user, you have to walk and you just have to place it.

[00:15:06] Cihat Gündüz (guest): And then that's how it currently works. It's not

[00:15:10] Leo Dion (host): I mean they're, it's probably a privacy thing more than it is a technical thing, I would assume. But still, like, why can't they,

[00:15:17] Cihat Gündüz (guest): with a magnetic

[00:15:17] Leo Dion (host): why can't they?

[00:15:18] Cihat Gündüz (guest): don't think so

[00:15:20] Leo Dion (host): Or just

[00:15:20] Cihat Gündüz (guest): the thing about the shared space is you don't get positions of where your windows at all. You don't know where your window is, or the only thing you know is the size of your window. So if they added like a magnetically attaching window thing, it would not like the developer would not get any information.

[00:15:35] Leo Dion (host): So like with Arki, you could do it with AR kit, but then they can't run any other app while they're doing it. Okay.

[00:15:42] Cihat Gündüz (guest): That's how it

[00:15:42] Leo Dion (host): How easy is it to do it with AR kit?

[00:15:45] If you are somewhat if you've used ar kit on io I iOS basically it works pretty similar. So it relatively simple. But you, there's always, like with AR kit and all these, those 3D things, there's some mathematical calculation involved, which is doable, but it's not that, yeah it's fine.

[00:16:02] Leo Dion (host): Okay. We can just do this one quickly. Modal text input on T-V-O-S-I. I'm just surprised they'd ever do that, honestly.

[00:16:12] Cihat Gündüz (guest): I just like same app again. I have this crossword puzzle game and I don't, I didn't bring it to TD os for the only reason that when you wanna type in some like characters into the crossword puzzle, you get a full screen typing thing and this doesn't work for a crossword puzzle game.

[00:16:28] Leo Dion (host): Yeah. I mean, 'cause most of the time, yeah, I mean, could you kick it off to an iPhone like you can with the Apple Watch, where you'd be like, oh, you wanna do this text input, you can do it on your phone.

[00:16:41] Cihat Gündüz (guest): I could, I guess with my own app, but yeah, that's not perfect. Like I wanna do it with the Siri remote.

[00:16:49] Leo Dion (host): Yeah, no, I get it. Make string catalog editor mo more useful. Why do you want this? This would ruin your app. Don't get sherlocked. What are you doing?

[00:16:59] Cihat Gündüz (guest): The feature that I have in my app is okay I wrote this before I had this feature in my app, let's put it that way. And then I basically Rus Shanahan, who's the developer of happy Scale basically paid me to implement this feature in my app, and then I made it freely available to everyone.

[00:17:15] Cihat Gündüz (guest): That's basically why I have

[00:17:16] Leo Dion (host): talk about translate kit later. I don't want to give too much away, but, okay. We did not get Crate LLM app

[00:17:23] Cihat Gündüz (guest): No, we didn't even get any APIs for we, the only thing we got was you could create these images and you can place this image creation UI into your app. But you can't use the API directly.

[00:17:35] Leo Dion (host): When you say we get, we got it. I mean,

[00:17:38] Cihat Gündüz (guest): We are gonna, yeah, we don't have it yet. It's gonna, like they

[00:17:41] Leo Dion (host): don't have any of the Apple intelligence stuff,

[00:17:43] Cihat Gündüz (guest): they announced we're gonna

[00:17:44] Leo Dion (host): I'm assuming. Yeah. And I also feel like they're, if you ask them like, why don't we have a create LLM thing? They'd be like you're supposed to use these adapters and all this stuff they talked about, which we don't have now, but I would assume that's what we're talking about.

[00:17:59] Cihat Gündüz (guest): Yeah,

[00:18:00] Leo Dion (host): yeah. So

[00:18:01] Cihat Gündüz (guest): maybe it's too

[00:18:01] Leo Dion (host): I don't want to talk about Apple intelligence 'cause I haven't played around with it and I don't even know what it's gonna really be like. So, improved source, I don't think we got that. Did we

[00:18:10] Cihat Gündüz (guest): I haven't checked. I haven't checked. They, when they improve source control, they usually don't mention, they just improve it and it's just there. And I haven't tested yet.

[00:18:18] Leo Dion (host): Make swift UI previews work reliably. I feel like they at least tried.

[00:18:23] Cihat Gündüz (guest): Tried. They said one thing, which is that they're not building extra for switch previews anymore. So they're basically using the sim, the build that is already done of your app for the simulator for the switch. I previews as well. That's what I said. I haven't tested if it works more reliably, but like this should help in that direction because my simulator always works.

[00:18:43] Cihat Gündüz (guest): Like when I built my app, run it in a simulator. It always works. And if they somehow. Do something there also. This is, at least it's the right direction. I dunno if it's really improved though. We'll

[00:18:53] Leo Dion (host): And I know they added a bunch of like new macros so that like things that you would need to plug in like the swift data and a few other pieces. Like it's much more easier to have like test data, I guess, in your preview.

[00:19:08] Cihat Gündüz (guest): At preview viewable macro, which like you don't have to create an extra tructure if you have just some state you wanna change in your period, which is awesome.

[00:19:15] Leo Dion (host): Uh, screenshots. Explain what you meant by this. Screenshots for 50 I previews. What do you mean?

[00:19:20] Cihat Gündüz (guest): So my goal is basically to make it as simple as possible to create localized app screenshots for the app store. And the thing is that I, I used to use UI tests for creating localized screenshots, but UI tests are, at first they are slow. Second, they're not really reliable. Like they, they just fail sometime and they don't produce the same result.

[00:19:39] Cihat Gündüz (guest): And what I already have though is I have all my views and I have for my. Important views. I have great previews already, and also can configure 'em because I wanna see them in different states that they can be in. So I can actually yeah, basically improve the design with a quick feedback.

[00:19:56] Cihat Gündüz (guest): And so I, I already have everything there. All I need is just a button to make a screenshot of the current preview I'm seeing. And the second thing that. Actually Swift previous had at the start is changing the locale of the preview you're seeing right now. And the API is still documented. It's all online on Apple developer documentation that it still works.

[00:20:15] Cihat Gündüz (guest): There is like this, oh, I think you set some locale or something, but it just doesn't do anything right now. So it's broken. And with those two things like changing the locale and having a button to just create a screenshot, I could create localized app screenshots very easily.

[00:20:30] Leo Dion (host): Okay. Makes total sense.

[00:20:33] Cihat Gündüz (guest): Had an

[00:20:33] Leo Dion (host): we didn't get any improvements there.

[00:20:35] Cihat Gündüz (guest): not that I know of.

[00:20:36] Leo Dion (host): Okay. Overall, as far as announcements are concerned, do you have any thoughts? Last closing thoughts on your wishlist?

[00:20:45] Cihat Gündüz (guest): I'm a bit surprised that we didn't get any new framework that surprised us because the last few years we always got something like a beat swift data being, weather kit being,

[00:20:53] Leo Dion (host): Kind of got a framework, but

[00:20:55] Cihat Gündüz (guest): Which one

[00:20:55] Leo Dion (host): I would assume Apple intelligence is a new framework.

[00:20:59] Cihat Gündüz (guest): but it doesn't

[00:21:00] Leo Dion (host): The elephant in the room

[00:21:02] Cihat Gündüz (guest): It doesn't have a framework though. Maybe, yeah. Next year I guess we'll get a framework for that. I hope at least

[00:21:06] Leo Dion (host): Yeah.

[00:21:07] Cihat Gündüz (guest): we'll see. But yeah, otherwise I think the, they focus on more smaller improvements and I really like most of the small improvements. So I'm, overall, I'm happy with the API changes

[00:21:16] WWDC Notes
---

[00:21:16]

[00:21:16] Leo Dion (host): so one of the sites that you run is WWDC notes. You wanna explain what the site is and you, it went through a redesign of sorts. Yeah, I'll let you go ahead and talk about that for a bit.

[00:21:30] Cihat Gündüz (guest): Okay, so basically. If you have ever watched WWDC sessions, you know that they can be, sometimes, firstly, like videos as a format are already something where you can't really search easily. I know they have transcripts now, but still, if you wanna just know if they talked about something. The transcript, usually it doesn't really give a good idea.

[00:21:51] Cihat Gündüz (guest): You can't really skim it quickly. It's really a long text there. And the other thing is that you might not want to watch all those sessions because you don't have the time. I just watched a session today, which is 43 minutes long or 42 minutes, and it was like I didn't have to invest all the time to just maybe find an answer for a small thing that I was trying to find.

[00:22:11] Cihat Gündüz (guest): And WWDC Notes is basically a community driven website where people who do watch some sessions. They can just share their notes for the sessions that they wrote down. And it is based on doxy now. It was used used to like using a custom markdown format. I think it was based on Johnson DE's library.

[00:22:27] Cihat Gündüz (guest): But I decided. When I took it over last year because Federico used to do this website, like he created it, but he's not working for Apple, which means that he can't work on anything anymore that is outside of Apple. And so he searched for someone who could take it over. And I was I was the guy who had provided most sessions besides him.

[00:22:45] Cihat Gündüz (guest): Like he provided over 300 notes. That's really amazing. And yeah, I had 40 or something. So he asked me if I could take over and I did. And I felt I wanted to bring it all together in one repository because there were a couple of private repositories to, for the website, for the Twitter bot and stuff like that, and I decided I just do it in one repo and I would migrate over to Swift Doc CI.

[00:23:08] Cihat Gündüz (guest): Which is a documentation compiler that officially looks like Apple documentation, which I also thought maybe it makes sense as a ui. And yeah, that migration just finished two days ago. I migrated I the older sessions as well, like all the notes from the old website. And now if you was, it WWDC notes.com, you can see the new design and all the nodes.

[00:23:28] Cihat Gündüz (guest): They're already around 40 nodes for this year's session. The community was really amazing to provide them very quickly.

[00:23:34] Leo Dion (host): So what was it like? Transitioning to doxy? From a custom, basically a custom website.

[00:23:42] Cihat Gündüz (guest): Okay, so there are a couple of aspects to this. Firstly, I had to migrate the existing notes because I didn't wanna lose any of the existing ones, which was surprisingly easy because the doxy format is also based on markdown. Like all the articles there are markdown and I just copy and paste it.

[00:23:58] Cihat Gündüz (guest): Basically, the markdown, the only thing I had to change was the links to the images. Because the old website, it had like links to images and they were like in a folder named the same way the article was named, which was also easy to automate this because everything was very similar. But like the format was a little bit different.

[00:24:16] Cihat Gündüz (guest): And I just yeah, wrote a script, did that, and it just worked that, that part was easy. The more complicated part was getting Doc C to look like a proper website because documentation is not exactly the same as like a website where you wanna discover stuff. And the old website of the WWC Notes project also had a great overview of all the contributors, which I really liked, where you could see like all the people that are behind this community project.

[00:24:41] Cihat Gündüz (guest): And this was something very important to me because. It really shows that this is a community project, and this is the most important thing for me about the WTC notes, is that everyone comes together and provides this cool thing. And yeah, I have to recreate this and I have to play around.

[00:24:56] Cihat Gündüz (guest): And the, there are like some directives in Swift Doc seat that are not really. Openly documented. If you really search for it, you can find them. Like you can, for example, have multiple images in tabs. You can have columns and rows and stuff like that. But the most complex thing for me was if you have a documentation page, for example, I wanted to have, for each contributor, I wanted to have their own page where you can see which sessions they contributed.

[00:25:22] Cihat Gündüz (guest): And then when you link to that, I also wanted a preview with an image of that person, which was like there is a way to do that in the, it's called like in the, you can have a metadata directive there inside. You can have a page image and stuff like that, but there's an icon one and a cover one. I had to play around a lot of with these things,

[00:25:41] Leo Dion (host): yeah, it's amazing. If people haven't had a chance to take a look, definitely take some time to look and maybe even contribute. How much do you have left for WW 24 to contribute?

[00:25:53] Cihat Gündüz (guest): we have, so you can click on the missing sessions. It's on the left sidebar. And you'll see also the exact amount for of sessions missing for each year. And currently the amounts missing for this year are just above some above 80, I think 86 or something. Whereas 30, 37 were already provided.

[00:26:10] Cihat Gündüz (guest): So we are already quite there for just two weeks, but we still need a

[00:26:14] Leo Dion (host): Yeah. That's awesome. That's awesome. Definitely people should take a look. It's amazing. And yeah, the sessions are a lot better than they used to be, where they're like 45 minutes. Period. Like you can't make it shorter or longer. Whereas now they're a little bit more flexible. But this is a great way to just quickly take a look before jumping right in and just get the meat of the talk.

[00:26:36] Leo Dion (host): So this is really great. Thank you for putting this together. This

[00:26:40] Cihat Gündüz (guest): For sure, yeah, that I didn't start a project the things go ready to Federico who started this, but I'm trying to keep it alive. But what I re the cool thing is what you don't get with the videos is links. If there are things mentioned we can link to documentation, we can link to stuff, which saves a lot of time.

[00:26:55] Cihat Gündüz (guest): And you can also copy and paste the code and stuff like that.

[00:26:58] Leo Dion (host): Yeah. Yep. Cool. Was there anything else you wanna mention about WWDC notes?

[00:27:03] Cihat Gündüz (guest): There's a lot of things there, but I think it's too detailed. Yeah, I think I'm gonna basically suggest a few improvements for Doc C to the Apple team working on it, because there are a few quirks that I found out, but yeah I think it's too detailed to dive in deeper on it right now.

[00:27:17] Swift 6 Migration
---

[00:27:17] Leo Dion (host): So let's talk about Swift Six migration. You had that really great blog post about getting people into it and getting people started. How has it been for you have you tried moving anything over in the last couple weeks?

[00:27:31] Cihat Gündüz (guest): So the article that you're mentioning was like a year ago or something. I also, I'm also the author of the Swift Evolution Monthly newsletter, where I basically summarized the Swift evolution proposals that were accepted. And as part of that, basically when the, when I read about there is the new Swift.

[00:27:48] Cihat Gündüz (guest): Language modes and the new opt-in features that you can, there were these feature flags you could opt in into things that are going to be coming in Swift six already. That was basically for me because I was so into this Swiss solution thing, I felt like I could just summarize, I should just summarize as someone yeah who has the knowledge to do that.

[00:28:07] Cihat Gündüz (guest): How to already prepare for Swift six. So there is no. Big issues with like migration right now. And that was what the article was about. And back then I actually tried it out and it didn't take much time, but we didn't have as many data race safety features back then. I actually watched the session, that's the last session I summarized just today.

[00:28:26] Cihat Gündüz (guest): It's called Migrate Your App to Swift Six. It's the longest session this year. It's 42 minutes long. Most of them are like 10 to 20 minutes, so you're right about the. Various length, but 42 minutes long and it has a lot of details about SWIFT six and tips, how you can migrate. And I think it's really a good session also for like larger companies even to have some strategy and some structure to the migration.

[00:28:52] Cihat Gündüz (guest): And they also basically say there, there's really no stress to do it. And I actually just tried it out in one of my app just to answer the question because I was assuming that you're going to ask it. And I had no warnings basically regarding concurrency and stuff. And then I turned on Swift six language mode or the checked, the full checked mode.

[00:29:11] Cihat Gündüz (guest): To start with that

[00:29:12] Leo Dion (host): complete.

[00:29:13] Cihat Gündüz (guest): exact, exactly the complete mode where you get warnings for the stuff that would fail in Swift six. And I got around 20 warnings in my largest app in the crossword puzzle game, which I think is

[00:29:26] Leo Dion (host): What what were the most of the warnings having to do with.

[00:29:29] Cihat Gündüz (guest): They're all about like some of them are about that in you I have basically changed some properties that are in my views in tasks that are detached. So they were like in a different thread. They were not on the main actor. I. Not on main thread. So what I need to do to fix that is just say main actor run.

[00:29:46] Cihat Gündüz (guest): I think that's the easiest solution for those. And then in some other places I just got those I could actually open the project. But I got those, the warnings that also were mentioned in the session, which are basically that if you have like global variables and you change them in some other context.

[00:30:03] Cihat Gündüz (guest): You need to either, either mark them as main actor or do a task thing or yeah those kinds of things.

[00:30:09] Leo Dion (host): For me, what was surprising is I did a lot of this beforehand and I ended up, I think because I had some extra experimental flags enabled, I ended up with the issue with I. This is a new thing, and I think it's still experimental or upcoming, but you have to specify when you import a namespace or a module, you have to specify the access level.

[00:30:34] Leo Dion (host): So rather than just saying import foundation, you'd say internal import foundation or public import foundation or whatever. So I had a ton of those warnings,

[00:30:44] Cihat Gündüz (guest): Is that, do you have a modularized app or is it just one target?

[00:30:48] Leo Dion (host): It's modularized. It's all swift packages,

[00:30:50] Cihat Gündüz (guest): I think it's, there's also a difference between modularized apps because you get more extra features and things to handle like this specific import thing which is also not related to concurrency, though.

[00:31:01] Cihat Gündüz (guest): It's more related to making sure, yeah it's, I think it's about making sure that you are not basically making the dependency that you have internally. Also a dependency of the end product. So if.

[00:31:13] Leo Dion (host): Yeah. And I'm wondering too if it has to do with the explicitly built module stuff that they added this year,

[00:31:21] Cihat Gündüz (guest): Maybe

[00:31:21] Leo Dion (host): like somehow, if it makes it easier to optimize. So I don't know. 'cause I would assume, 'cause if you don't, if you're not gonna use it publicly, then you don't need that module exported, I guess.

[00:31:32] Leo Dion (host): I don't know. That's my theory, but I could totally be wrong on that.

[00:31:36] Cihat Gündüz (guest): Yeah, actually going back to my wishlist last year, I had a wishlist as well, and part of that was that I want to have something built into exco, to modularize to apps because the SWIFT package thing is more built for public repositories and public packages, which is not exactly what you need in apps where you maybe want to do some things differently.

[00:31:54] Cihat Gündüz (guest): But I think they're not gonna bring anything different than swift packages.

[00:31:58] Multilingual Apps and TranslateKit
---

[00:31:58] Leo Dion (host): Cool. So let's talk about one of the sessions, and I don't know if you even had a chance to watch it, but we have some advancements in multilingual apps that they brought this year. A lot of it I think, related to the machine learning stuff more expansions and things like that.

[00:32:16] Leo Dion (host): Did you get to watch the video by any chance?

[00:32:18] Cihat Gündüz (guest): Not the built mul multilingual ready, but I watched I think it's called something like meet translation APIs or something like that, which is also localization related.

[00:32:26] Leo Dion (host): Yeah. So what's your impression of like the localization advancements this year?

[00:32:32] Cihat Gündüz (guest): Firstly, like I not talking the new API that I'm the video I watched the video for with the translation APIs. It was also, I think, released in 17.4 already. I saw something from posted a master on or something. But basically what it does is you can basically say, I have this text in my app and I know it's not in the language.

[00:32:51] Cihat Gündüz (guest): The user speaks and I want to translate it. And the thing that already works in 17.4 is basically a modal showing up. Which is like a Apple built ui. You don't have any influence with what's in there, but it shows a translation basically. And what they have now in iOS 18 as a new one, is also a direct API that can, that you can use with your own UI inside your app, which is awesome.

[00:33:15] Cihat Gündüz (guest): But they're going to support, I think 15 languages or something like that. The same ones that they support in the Translate app, which is great. Good improvement there.

[00:33:25] Leo Dion (host): What do you so like you have, we'll talk about your fantastic app translate kit. So first of all, I'll let you go ahead and explain it before I do,

[00:33:33] Cihat Gündüz (guest): translate kit is actually my third translation helper app. But how that works is you basically just drag and drop you string catalog into my app and it localizes it for you. That's the basic idea.

[00:33:47] Leo Dion (host): Okay. And it uses, basically you would set up different accounts with different translation services. Most of 'em are AI based, ML based stuff, then it will, you would basically be calling those APIs to automatically translate

[00:34:03] Cihat Gündüz (guest): exactly. Yeah. That's

[00:34:04] Leo Dion (host): string catalog, right? Yeah.

[00:34:07] Cihat Gündüz (guest): All of

[00:34:07] Leo Dion (host): do you think?

[00:34:08] Cihat Gündüz (guest): of the services are also, they have all of free tier. And the free tier is so large. Any size app you can translate for free. 'cause they were built for document translation with large text For apps. This is not a big thing, so you can translate it,

[00:34:22] Leo Dion (host): Do you think do you think there's any gotchas with using these services as opposed to a more like hand driven translation service?

[00:34:32] Cihat Gündüz (guest): Obviously the one problem you can run into is that you're missing context specifically. Specifically in apps. You have short text, you have a button just with one word or two words, and it happens to me all the time when I translate safe, like the word safe, which you have in most of the apps to German, it translates as, which basically means save money.

[00:34:53] Cihat Gündüz (guest): Which is a different word in German than Han, or which is basically saving data. It's a completely different word. And then it can miss the context and it happens all the time, which is something would, could be fixed with an AI to where it give you some context. You say this is an app.

[00:35:08] Cihat Gündüz (guest): This is about this topic. And then you can add, additionally, add some glossary with some words that you have come up with because you might have like tabs with different feature names. And then when you refer to those tabs in some explanation text, you wanna make sure to use the same words and stuff like that.

[00:35:24] Cihat Gündüz (guest): Those things can get missed in automatic translation if you don't try to provide them. One thing I'm doing in my app is I have do you know the Apple Glossaries website? There is like this website with

[00:35:36] Leo Dion (host): absolutely. Yeah.

[00:35:38] Cihat Gündüz (guest): Basically Apple has provided in the past, I think they're not updating that anymore.

[00:35:43] Cihat Gündüz (guest): The localizations that have inside iOS and Mac os themselves. And what I did for the transit kit app is I basically read them all that they have in there. I accounted them, looked like, okay, which ones appear multiple times and which ones appear in multiple frameworks. So they're not only related to health kit, but they're more generally useful.

[00:36:02] Cihat Gündüz (guest): And I found 1,600 of those. That I built into translate kit, which if you get a match for those words, for example, privacy or save or

[00:36:12] Leo Dion (host): Okay.

[00:36:13] Cihat Gündüz (guest): I basically use apple's one translations.

[00:36:15] Leo Dion (host): Yeah. That makes total sense. That's awesome. So is there anything out of this here that you're like, I wanna use that in translate kit, or maybe developers should think about using in their app?

[00:36:27] Cihat Gündüz (guest): Yeah, the new translation, API is going to be my way to that. You don't have to set up any of these third party frameworks to get started with translate kit. You will just be able to use yeah, with one click. I'm hoping I haven't implemented yet, but I think it's going to work that you just,

[00:36:41] Leo Dion (host): How do you judge, like whether certain APIs should be used over others?

[00:36:46] Cihat Gündüz (guest): Yeah. I have four different services implemented. What I've done is I've checked like which ones are, have the best quality for which language, because in some languages also parameters and stuff like that can get broken. That's also one of the things that I fix in my app. If you have like percent ads, percent, the LLD and stuff like that, I make sure I match them across languages.

[00:37:05] Cihat Gündüz (guest): And check if they're available in all languages. If they were available in the automatic translation, I ought to fix them or I show you warnings. Stuff like that is built in there. And that's actually one of the things that Apple has improved this year is in string catalogs. You now get also this warning if you have a percent ad in one language.

[00:37:21] Cihat Gündüz (guest): And you have the percent d in another language translation. They say, Hey, this is not matching up, which is a feature that yeah, they don't do all the checks that I do. So I do more checks. And the string catalog editor, I have in translate kit that I had already mentioned before. This is a completely free feature, so this is, everyone can use that.

[00:37:38] Cihat Gündüz (guest): There is no, like my app is in general freemium, so anyone can get started for free. But this is completely free and it's, especially if you are using string catalogs. Together with translators, who own Mac, the cool thing is they can trans download my app and just translate it and just use the string catalog editor there and they don't have to install Xcode, this three gigabyte thing.

[00:38:02] Cihat Gündüz (guest): So for translators, it's also a great thing.

[00:38:05] Leo Dion (host): Yeah. That's awesome. Yeah. Was there anything else you wanted to talk about today?

[00:38:10] Cihat Gündüz (guest): I dunno. I mean, I like to talk about a lot of things that also you are doing, but I think your podcasts are always like interviewing other people and what have you been up to? I would like to know that.

[00:38:21] Leo Dion (host): Sure. You may as well know and let my audience know. So yeah, I'm working on trying to get some new features into bushel. And I just recently ran translate kit on it, so hopefully my French, German, Spanish, Japanese, Chinese, Arabic audience isn't confused by the interface to bushel when the latest beta comes out.

[00:38:45] Leo Dion (host): So yeah there's a few interesting new features with the virtualization stuff. Supposedly you can sign in on Apple id, I still haven't been able to do that. With bushels or with the visualization framework overall. So I don't know where that is. And then, yeah, I'm working on a refactor rewrite of my app part Twitch, using the latest technologies.

[00:39:10] Cihat Gündüz (guest): What's it written in?

[00:39:11] Leo Dion (host): a fun pursuit. What's that?

[00:39:13] Cihat Gündüz (guest): Is it an objective C?

[00:39:14] Leo Dion (host): No. It's in Swift, but it's it's like an old version, older version of vapor, older version of combine. There's just stuff that it's like at this point it's like I need to rewrite it. So yeah, that's what's been keeping me busy. I have a few other app ideas.

[00:39:30] Leo Dion (host): In the back of my head that I wanna work on. And I think I mentioned before, but I stream every Tuesday morning, so if people want to catch that I'll always be working on something interesting. And Tuesday morning, 9:00 AM Eastern. So what's that for you? Like

[00:39:44] Cihat Gündüz (guest): Sorry, I lost you for a sec. Can you repeat please?

[00:39:47] Leo Dion (host): what's 9:00 AM in your time zone?

[00:39:50] Cihat Gündüz (guest): It's currently 4:00 PM right now, so should

[00:39:53] Leo Dion (host): So 3:00 PM then Yeah. You can catch me at 3:00 PM Eastern time and watch me work on something interesting or weird. So every Tuesday morning and maybe even Thursday morning so you can catch me.

[00:40:04] Cihat Gündüz (guest): Sounds great.

[00:40:05] Leo Dion (host): yeah.

[00:40:06] Cihat Gündüz (guest): Now that this is the first, you said this is the first episode after WWC for you as well, I.

[00:40:12] Leo Dion (host): yes, this

[00:40:12] Cihat Gündüz (guest): So what was your favorite thing about the whole week?

[00:40:16] Leo Dion (host): You can check out my newsletter.

[00:40:17] Cihat Gündüz (guest): Oh,

[00:40:18] Leo Dion (host): I posted it all in there

[00:40:19] Cihat Gündüz (guest): good talk there.

[00:40:20] Leo Dion (host): spoilers. Spoiler alert. Yeah, you can definitely check that out in the newsletter. I'll post the link to it. But basically, one more thing was great. The watch party was great. The depth of DC community event was fantastic. I mean, the whole thing was just, yeah, I want to do it again.

[00:40:37] Cihat Gündüz (guest): For sure.

[00:40:38] Leo Dion (host): It's, I've been to a few con conferences and stuff and those are all awesome, but this was amazing. Just being like, I mean, there is one more thing, but there's so much going on. It's like hard. Like I said, it's hard to just have quiet time to work on code and watch a video 'cause there's so many things going on at the same time.

[00:40:55] Leo Dion (host): Yeah. How did your expert session on translating go or on, on localization? Go.

[00:41:01] Cihat Gündüz (guest): On the one morphing conference. Yeah, we had like tents outside and there. Where there were like floating experts basically sitting around and waiting for people to ask questions. And the local, like I had three of those. One was about localization. Another was to about marketing and paywalls.

[00:41:17] Cihat Gündüz (guest): And the third was about WWDC notes. Under WWDC notes day, I was sick actually because I was meeting so many people, the time difference and all of that. So I got sick on Thursday. But the localization one was basically three people were there. Who I could help. I think a bit like I explained quite a few things.

[00:41:33] Cihat Gündüz (guest): They were like really happy about the things I could tell them. Like they basically have a larger app and they wanted to migrate to a newer system, modern system. And I basically showed them why string catalogs don't have any this wanteds actually, and I think they're also going to stop using third party service they were using because now they can just directly send string catalogs to their translators.

[00:41:54] Cihat Gündüz (guest): And they can just translate it for them in a nice ui, which is yeah, it's a great improvement by Apple.

[00:42:00] Leo Dion (host): Yeah. I did the Swift on Server 10 and there's a lot people interested. So that's amazing. I'm actually gonna start dabbling into Hummingbird and see how that works. So stay tuned for that.

[00:42:14] Cihat Gündüz (guest): so Hummingbird is also still actively worked on.

[00:42:17] Leo Dion (host): Oh yeah, very much yeah.

[00:42:18] Cihat Gündüz (guest): Okay. I didn't know. I wasn't sure which ones are still active because they were more like perfectly Swift was also very popular one, which I think is not no longer being worked on.

[00:42:29] Leo Dion (host): Yeah, so there's a meeting Wednesday, I think. I'm not gonna be able to share this podcast in time for that, but they have a server side swift meetup that meets online on YouTube, so you can always check that out. Hopefully I'll put a link to that. But they'll be talking about Hummingbird this week and I don't know what they'll be talking about in July, but yeah, hummingbird's very active, so yeah.

[00:42:52] Cihat Gündüz (guest): Yeah, I've been using Vapor as a default, but I have to check out Hummingbird as well.

[00:42:57] Leo Dion (host): Yep. Yeah. Yeah. Were there any other apps that you you wanna plug while you're here?

[00:43:04] Cihat Gündüz (guest): Yeah, there is actually one that I'm working on right now, which is in beta, but I'm planning to release it within the next few weeks. It's called Freemium Kit and it's basically a revenue cap alternative with native experience, let's put it that way, with like push notifications and supports all Apple platforms stuff like that.

[00:43:23] Leo Dion (host): Awesome.

[00:43:24] Cihat Gündüz (guest): You can

[00:43:25] Leo Dion (host): Well, um. App if you wanna learn more.

[00:43:28] Leo Dion (host): Cool. We'll put a link in the show notes. JHA, thank you so much for coming on. It was great to meet you in person and finally have you on the podcast.

[00:43:37] Cihat Gündüz (guest): Yeah. Thank you for reminding me.

[00:43:38] Leo Dion (host): Where can people find you online?

[00:43:40] Cihat Gündüz (guest): I'm on Twitter and Masteron and also on frets. I will always named Cihat, which is J double E and then hut like Pizza Hut.

[00:43:47] Leo Dion (host): I. Thank you again. People can find me online at Leo g Dion. My company is bright Digit. I'm a mask on x, whatever you wanna call it. I if you're watching this on YouTube, please and subscribe. And if you're listening to this, I'm a podcast player, I'd love your review. If you want to come on, if you have a talk coming up that you want to preview or practice I'm the perfect place for you.

[00:44:11] Leo Dion (host): If there's something you wanna hear about let me know. Thank you everybody. I look forward to talking to you again. Bye.