Empower Apps

Indie Developer, Kris Slazinski comes on to talk about App Store localization, UX, and his favorite intern/mentor - ChatGPT.

Guest

Announcements

Related Episodes

Related Links 

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) - Announcements
  • (02:01) - (App Store) Localization
  • (19:21) - ChatGPTovsky
  • (33:50) - UX vs UI
Thanks to our monthly supporters
  • Bertram Eber
  • Edward Sanchez
  • Satoshi Mitsumori
  • 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
Kris Slazinski
👨🏻‍💻 UX Designer / iOS developer📱Creator of @moons_app @numi_app @skoro_app @emo_app_ @wins_app_ 🎸@ZeroMusicArt @Quadroom 🎨 MA in art 🌱 Vegan

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] Announcements
---

[00:00:00] Leo Dion (host): Hey folks. I've opened up some spots this year for new projects, so if you are looking for help with any of your apps or any of your work in the Swift and apple space in 2024, you definitely want to get ahold of me, Leo, at bright digit.com. I do work in iOS, Mac, OSS watch, OST v oss, vision Pro, server side, whatever it is.

[00:00:23] Leo Dion (host): I would love to help you and your team. I have 10 years of experience and if you. I have been following this podcast. I'm pretty good at explaining and talking about stuff and communicating with your team, so I wanna help you out. What can I do? What can I do to help you with your Swift UI issues, your weird core data problems, or just just need an extra helping hand?

[00:00:44] Leo Dion (host): Definitely reach out to me leo@brightdigit.com. We'd love to help you. You can also reach out to me on social media as well. Feel free to dmm me. And let me know how can we help you and your team with whatever app projects you have coming down the pipeline. Thank you so much for listening to this podcast and watching my YouTube videos.

[00:01:04] Leo Dion (host): I'm really excited for 2024. If you wanna continue to stay up to date, I highly recommend following me on social media. And also signing up for the newsletter. We have a new article coming out on dependencies that we're gonna be sharing in our newsletter that I highly think it's gonna be fantastic and super helpful if you're having issues with dependencies and testing.

[00:01:23] Leo Dion (host): The newsletter is located at bright digit.com/newsletter. Sign up there to get the latest issues as they come out. And then if you really wanna stay on top of everything, we have our brand new Patreon patreon.com/bright digit, where you can get early access to episodes, articles, all sorts of stuff that I'm working on.

[00:01:42] Leo Dion (host): See how things are going with Bushel or whatever apps I'm working on right from there. So sign up for the Patreon to get early access and you're. It's definitely worth it. I highly recommend checking that out. Thank you so much for tuning in today, and I hope you enjoy the rest of the show. Bye.

[00:02:01] (App Store) Localization
---

[00:02:01] Leo Dion (host): Welcome to another episode of Empower Apps. I'm your host, Leo dn. Today I'm joined by Kris Schonski. Kris, thank you so much for coming on.

[00:02:10] Kris Slazinski (guest): Hi. Thank you very much for inviting me.

[00:02:13] Leo Dion (host): Yeah, I'm super excited today to talk about follow up on our last episode with Martin on build in Public and user experience, which I don't think we've ever really talked about and ChatGPT and stuff. You have a few apps out. I'll let you go ahead and introduce yourself.

[00:02:28] Kris Slazinski (guest): Yeah. Okay. So my name is my polish name is, but I, in English, I use Kris. So I come from Poland, but now I live in Thailand since six years.

[00:02:41] Leo Dion (host): Oh wow. Cool.

[00:02:42] Kris Slazinski (guest): yeah. And I'm mostly an artist more, more than a developer. Like I have a master's degree, art.

[00:02:49] Leo Dion (host): Oh, that's awesome.

[00:02:50] Kris Slazinski (guest): my major was painting and my minor was, graphic design so at least something related to building apps a little. Designing. And later after I graduated, I started my own business immediately after graduation. And I was working as a graphic designer first and designing websites and logos and things for print. And later I, few years later, because it was around 2012, so now it's almost 12 years, I started to work as a UX designer.

[00:03:23] Kris Slazinski (guest): Yeah. And few years ago, like when I was working as a UX designer, it was. It was very cool for me. This thought that it would be nice to build my own apps, not just design them, but actually work on them, develop them and have my own product. But I started first, there wasn't a swift UI in the world, so I tried UI kit and it just it just wasn't easy enough for me to start with development. Yeah. And later, like

[00:03:57] Leo Dion (host): I can imagine that.

[00:03:58] Kris Slazinski (guest): So when when Apple introduced Swift ui, I tried again and I, few months later, after the, after they released Swift ui, I started to work on my first app. I started development. I started designing those apps maybe a few years earlier, but just like I, I didn't have the skills to actually develop them.

[00:04:20] Kris Slazinski (guest): So I started to develop my apps in around 2020, so four years ago. And now I have five iOS apps on the app store.

[00:04:31] Leo Dion (host): Okay. What, so I know moons what else is there?

[00:04:35] Kris Slazinski (guest): Yeah.

[00:04:35] Leo Dion (host): Your list of

[00:04:36] Kris Slazinski (guest): So my first app that I supposed to be, my first app is Numi expense tracker and budget Planner. But because it was so complex and was my first app, I didn't know how to do it. Like I was working on this few years when I already had some experience with this, but this app was still not released.

[00:04:55] Kris Slazinski (guest): My parents, during the lockdown, they needed an app to count. Points for games, like at the, when they were playing card games at home, like during lockdown

[00:05:04] Leo Dion (host): Yeah.

[00:05:05] Kris Slazinski (guest): and in one week I developed an app score for counting scoreboard app, right? Like a very simple app. And it what's very funny that this app that I made in one week, it's.

[00:05:17] Kris Slazinski (guest): It's still my best selling app and those other apps that I work on few years, like they are not making as much money as this. But I also have, so I have this those two apps, I have ones, I have wins for setting goals.

[00:05:32] Leo Dion (host): Okay.

[00:05:33] Kris Slazinski (guest): and I have emo for, for journaling and for it's like a emotional inventory.

[00:05:39] Kris Slazinski (guest): Like you can, you, you can write if today you were happy or sad, like what happened? Why it's some journaling but like more towards emotions. So yeah. Those five apps.

[00:05:52] Leo Dion (host): so which is your most successful? Is it the score keeping one?

[00:05:55] Kris Slazinski (guest): Y yes. So far, yes, so far, yes. If I.

[00:05:58] Leo Dion (host): is the secret behind it? Like, why it is funny, what? What becomes the success and what doesn't?

[00:06:05] Kris Slazinski (guest): Yeah. Yeah. And it's funny because like I remember when I released first version some people told me that maybe it's not worth $1, like a, because it's so simple, it doesn't have many features. But I think because of the simplicity and Jessica. Some nice graphics, some nice ui, and people like it and just it's just like a, it's very easy app.

[00:06:28] Kris Slazinski (guest): It's not expensive. It's just like a, I started it as a $1, one, one time purchase. Now it's $2 and Yeah. And people are still buying, so Yeah. I think that there is just, okay, there are more, more people want some app like that. I think that's even though there is a huge competition but also I think it's also because of keywords.

[00:06:52] Kris Slazinski (guest): I think that a SO helped me a lot because I, after I started to play with a SO and finding better keywords for my app,

[00:07:00] Leo Dion (host): Yeah.

[00:07:01] Kris Slazinski (guest): it has really a lot of impressions. Yeah.

[00:07:06] Leo Dion (host): So we've had Ariel from app figures on quite a few times. So we've talked about a SO and I don't think we've had a developer on talk about a SO So maybe you can give, what was the aha moment of a SO where you were like, okay, I get this now I understand why it's such a powerful tool.

[00:07:26] Kris Slazinski (guest): Okay I have a very good friend on on social media on Twitter. Let me just, let me allow me to continue, call it Twitter if you don't.

[00:07:37] Leo Dion (host): I, I still call a Twitter. It's okay.

[00:07:39] Kris Slazinski (guest): Yeah,

[00:07:40] Leo Dion (host): in 2024.

[00:07:41] Kris Slazinski (guest): So I have a very good friend on Twitter that I met him on Twitter. Matt Oda he made a astro another tool, another app for researching keywords for a SO and.

[00:07:52] Leo Dion (host): Yep.

[00:07:53] Kris Slazinski (guest): When he was starting to work on this we talked a lot. I help him a little with testing and some ux designs a little.

[00:08:03] Kris Slazinski (guest): And he told me many things about a SO as well because he was studying this the time learning a lot about this. And yeah so there were many things, right? For example, he told me that. He forced me kinda to, to add keywords to my app title. If he said Kris, it's definitely you need to try this.

[00:08:22] Kris Slazinski (guest): Like without this you, you will not make a lot of progress. So after I tried it and it really worked, right? But to be honest, really there were many things. It's, it seems like an easy topic but there are. Many things that you can improve about your app. It's not just researching keywords.

[00:08:41] Kris Slazinski (guest): For example, what I do and many people don't do it, is that I localize my keywords and I localize my up title and subtitle right, to to many languages, to many as all the online language as possible on the connect.

[00:08:58] Leo Dion (host): how do you, so you can go I totally didn't know this and I feel stupid, so you can go to App Store, connect and localize that stuff

[00:09:05] Kris Slazinski (guest): Yes. And there is,

[00:09:07] Leo Dion (host): does that,

[00:09:08] Kris Slazinski (guest): yes.

[00:09:09] Leo Dion (host): just, how does that work? I don't I feel like I haven't, I've never seen this in the App Store Connect.

[00:09:14] Kris Slazinski (guest): Okay. So

[00:09:15] Leo Dion (host): you go for that?

[00:09:16] Kris Slazinski (guest): yeah. So you go to first you go to apps, you select your app, right? And like you have the, there, there are two pages for this because one, one is this current version of your app, right? Like the, there are versions

[00:09:29] Leo Dion (host): app information.

[00:09:31] Kris Slazinski (guest): Yes.

[00:09:31] Leo Dion (host): App information, right?

[00:09:33] Kris Slazinski (guest): yes. And those things are divided between those two pages.

[00:09:36] Kris Slazinski (guest): So on, on one. I think that on one, you have keywords and on, on another one, you have, app name and subtitle and up description, right? So in, in those, on those both pages on, in the upper right corner there is this dropdown with languages. And by default, for most people it's English us.

[00:09:58] Kris Slazinski (guest): And when you click on this dropdown, you can add more languages there. So you can localize your. Product page, right? Like a

[00:10:07] Leo Dion (host): Oh my gosh, I see it now.

[00:10:09] Kris Slazinski (guest): yeah. And

[00:10:12] Leo Dion (host): it doesn't, do you have to do it when you did? You do. You have to do it when you upload a new build.

[00:10:16] Kris Slazinski (guest): Yeah. To do this, you need to upload new build like

[00:10:20] Leo Dion (host): Wow.

[00:10:21] Kris Slazinski (guest): Yeah. So be because those information, like a up title and all those things that they also need to be approved by by the app store team.

[00:10:31] Leo Dion (host): Makes sense. Yeah, I'm a big fan, as I've talked about. I use Fastlane and now it makes sense because they have different folders for different languages and yeah, I could just do that, just duplicate it, and then translate it, and then put that in my

[00:10:45] Kris Slazinski (guest): yeah. And. Definitely do it because even people that are only focused on USA Right. Which I think is a huge mistake to be honest, because if I look at my downs in my proceeds maybe often USA is like the biggest country that that in my stats, in my in my proceeds.

[00:11:06] Kris Slazinski (guest): But when I look at regions that like I have much more money from Europe so it's definitely worth doing this. And

[00:11:15] Leo Dion (host): How do you pick, sorry? How do you pick what languages? Because it's interesting you're talking about this 'cause I'm looking at with Bushel, the app I just released for Mac oss and I started looking at, okay, what. Obviously I just have English. There's some Arabic actually thankfully through through a colleague of mine who helped with that.

[00:11:36] Leo Dion (host): But then as far as like picking the next language, what, how would you recommend, would you just look at analytics and see where people are downloading it or

[00:11:46] Leo Dion (host): can't do everything.

[00:11:47] Kris Slazinski (guest): Yeah. But it's a little tricky because if you started if you have only keywords for us, right? So you don't have localized keywords for other countries. So like at this moment like that, that your analytics will not be very reliable, right? Because what I would do is that I would use some a SO tools like Astro, which allow you to check keywords per country.

[00:12:13] Kris Slazinski (guest): So you can research your keywords per each country. And maybe you'll find some cool opportunities there, because what I found is very often some keywords in other countries like I don't know, Netherlands or Sweden or Poland or Germany, right? Sometimes. Sometimes there are some oppor opportunities that there are some popular keywords that are not difficult because not, other apps don't use those keywords, right?

[00:12:40] Kris Slazinski (guest): They don't opt, we say, don't they op don't optimize for them, but they don't use them in their keywords list. Uhhuh. Yeah. So

[00:12:48] Leo Dion (host): makes total sense.

[00:12:49] Kris Slazinski (guest): Yeah and also there, there's one very big misunderstanding that's. So many indie developers think like this, that they think that to localize the, this product page and keywords they need to localize the app.

[00:13:06] Kris Slazinski (guest): But those are two completely separate things so you can

[00:13:09] Leo Dion (host): Okay. And I think that's where I was getting confused because I was like looking at who's using bushel and that's fine. That's localization of the app itself. But we're talking specifically about the app store metadata,

[00:13:21] Kris Slazinski (guest): Yeah. Yeah. Yes. So those things are completely not related. You can have app only in English, and you can localize for all the languages in the App store Connect.

[00:13:31] Leo Dion (host): Okay. Okay. Very cool. Okay, so is there anything else you wanna talk about when it comes to a 'cause I want to jump in and talk about user experience

[00:13:40] Leo Dion (host): Because I don't Yeah, go ahead.

[00:13:43] Kris Slazinski (guest): Yeah so I, when we were talking, I think before you hit record button that about diuretic science, right?

[00:13:50] Leo Dion (host): we

[00:13:50] Kris Slazinski (guest): told you that I have one tip for that. I think it's not very well known because I read a lot

[00:13:55] Leo Dion (host): of all, does Polish have dietary marks?

[00:13:59] Kris Slazinski (guest): yes. Few of them. Yes. Yes. Uhhuh

[00:14:01] Leo Dion (host): Yeah, I would say so, yes.

[00:14:02] Kris Slazinski (guest): This is why I know about them, yeah. Many people maybe don't know, right? Because like in English, I think that to to my knowledge only the word, this word comes from French. I think fiance that you are using this like apostrophe above, but even, no, it's not popular to use

[00:14:20] Leo Dion (host): Like maybe the, like some Spanish words, like El Nino, right? They have the little,

[00:14:26] Kris Slazinski (guest): So you.

[00:14:27] Leo Dion (host): that's like maybe it, but otherwise it's very rare that people use dietary marks in English.

[00:14:32] Kris Slazinski (guest): Yeah okay, so I have one tip for you. So if you aha. And this is also very important, don't just translate your keywords from English to other languages because the popularity of them is very different. You really need to find synonyms or maybe. One keyword.

[00:14:48] Kris Slazinski (guest): Like for example football in America will be much more popular than soccer and soccer, this is like a very obvious example, but there are so many others. But if

[00:14:58] Leo Dion (host): It's a difference. It's a difference between localization and translation

[00:15:02] Leo Dion (host): there are different cultural ways of referring to things as opposed to just plainly, like translating a word verbatim. There's like different meaning and connotation to it.

[00:15:12] Kris Slazinski (guest): Y Yes. Yes, totally. So my tip is that if you find some keywords that have those diuretic signs, right? Like those apostrophes, like accents or some tilda over above the letter or whatever, research them. Check their popularity with astro other a SO tool, but also use chap, tell chap, GPT or whatever take this list of keywords and remove all the diuretic signs.

[00:15:41] Kris Slazinski (guest): So use only Latin letters and check this version again. Because in some countries people type with those diuretic signs and sometimes they type without. And those popularity scores that we get, which in Astro we, we have directly from Apple there are different scores for version with diuretic and without.

[00:16:06] Kris Slazinski (guest): So if you don't check both, you will think that maybe this keyword is not popular but later you will check this other version and suddenly you'll see that, oh, it is very popular. And later you can use whatever you want because when people type those keywords algorithm will, will search for both versions, right?

[00:16:26] Kris Slazinski (guest): So you can later, you can use whatever you want, but when you research keywords, research both versions.

[00:16:31] Leo Dion (host): Okay. Okay, that makes total sense. Okay, so my funny dieretic di diet, did I say it right? Dieretic

[00:16:39] Kris Slazinski (guest): Diare, I think DIA science or Diacritic letters. I think this is how it's called at least it's polished. Yeah I hope.

[00:16:46] Leo Dion (host): I had set up a, I had, I'd set up a app to track switch games, Nintendo Switch games, and there's a very big franchise Nintendo has that has a dietary mark. And when people were searching for it it wouldn't show up in the database because in the database it was stored with Thetic.

[00:17:04] Leo Dion (host): Mark, do you know what I'm talking about here? Can you guess what game or franchise has a dtic mark in it that people.

[00:17:12] Kris Slazinski (guest): Can I say it loud or not? Or not?

[00:17:14] Leo Dion (host): Yeah,

[00:17:14] Kris Slazinski (guest): Yeah. You mean about Pokemon or?

[00:17:18] Leo Dion (host): People would search Pokemon, it would never come up because I think in the database it didn't have it and then, or one or the other. And so I had to figure out and this was all. Using vapor. And I had to figure out a way to make the data so there's like case sensitive, case insensitive.

[00:17:34] Leo Dion (host): There's like dietetic sensitive and dietetic insensitive, or I had to transform the string or something. And yeah. So yeah, that was my first lesson and

[00:17:43] Kris Slazinski (guest): But you mean,

[00:17:44] Leo Dion (host): and dietetic marks.

[00:17:46] Kris Slazinski (guest): But you mean that they don't show up in the app store search, or you mean in your database with some other.

[00:17:53] Leo Dion (host): In my database, in my Postgres database. Yeah. So yeah, I, it's just FYI

[00:17:59] Kris Slazinski (guest): Yeah.

[00:17:59] Leo Dion (host): out there. They make a difference,

[00:18:01] Kris Slazinski (guest): Yeah. Yeah. And even for example, when you are writing FET requests and with core data, like there, there are special flags for this.

[00:18:09] Kris Slazinski (guest): So if you don't include them, like those diuretics letters would be blessed if even though like in this country, alphabetically, they should be, for example letter A with Diare sign. Should be right after regular a, right? Like a English?

[00:18:27] Leo Dion (host): It's an actual, it's an actual character. It's not it's not like special A, it's like something different. It's called different. Yeah. It's the same with Spanish in the N like we talked about. There's the N and then the N with the mark. Is it, I wanna say it's called a Enya in Spanish.

[00:18:41] Leo Dion (host): Totally. Don't quote me on that, but yeah, they're different. They're different letters. Letters. Yeah. Yeah. Totally.

[00:18:46] Kris Slazinski (guest): Yeah. Yeah. In Polish, we pronounce them very differently. It's it's not differently. It's not, it's not just accent, but like we, it's really the sound of this letter is different. So it's funny how those small things affect our work as a developer story.

[00:19:01] Leo Dion (host): Yes. Yeah. It's, and I envy that because like you have, I've like kids who are learning how to read and oh yeah, C can do this sound. C can also do this sound and C can also do this sound. And it's yeah, you have to teach 'em that. Whereas with least with a dietary mark, they can figure out, oh, how to actually pronounce it.

[00:19:18] Leo Dion (host): But, oh, English is a, is a mess.

[00:19:21] ChatGPTovsky
---

[00:19:21] Leo Dion (host): So do you wanna talk about, let's. Do you wanna talk about, let's talk about GFG ChatGPT. Actually I had talked about in the previous episode on Bushel, how I used ChatGPT for bushel. And how I plugged it in the previous episode, Martin was talking about actually I think he used it for Sprite kit stuff.

[00:19:42] Leo Dion (host): I. My, my whole take with ChatGPT was, it was okay for answering some complex programming questions, but where I really found it useful, honestly, it was like marketing apps or metadata,

[00:19:55] Leo Dion (host): Just talked about, things like that. That's where I found it super useful. Because one of the problems as a developer is when you're building an app, it's honestly really hard to think about like the marketing side of, that app, right? It's okay I don't know how to describe to someone what my app does. Like I have to figure that I've been working in it all day and all night, but now I have to figure out how to like describe it for marketing purposes. And it's like I, and they're like, ChatGPTI found super helpful in that way.

[00:20:24] Kris Slazinski (guest): Yeah.

[00:20:24] Leo Dion (host): What's your take on it?

[00:20:26] Kris Slazinski (guest): Yeah. So first of all, yeah, I agree. I would say that the hardest part of coding is marketing. Yeah. So I use charge GT for many things I know that many people are. S skeptical. And they have their reasons. Maybe sometimes they use a little, they use this tool a little differently that I would use it.

[00:20:48] Kris Slazinski (guest): But I find it super helpful for many things. Like I'm using this for those things that you mentioned too. For example, I when I want to write a app description of my app. I would tell sub GPT to like, I'm working on this app. It has those features. Please write a app description for the app store for me.

[00:21:07] Kris Slazinski (guest): I would never just I never use just like a copy paste and just like a copy and paste all those things that sub GPT told me for anything, to be honest, like I, because it's very often it's wrong. Some, sometimes, it will gas anything like about this app description, right?

[00:21:24] Kris Slazinski (guest): Like sometimes it'll add something in this app description that maybe you, you don't actually have in the app, right?

[00:21:30] Leo Dion (host): The term is hallucinate. Where AI just come makes up stuff that doesn't exist. Yeah, exactly.

[00:21:35] Kris Slazinski (guest): Yeah. Yeah. Yeah. So I have a, a. Sometimes, yeah I have this joke that I'm using on Twitter sometimes, like I call ChatGPT, Chad GSKi some Polish immigrant that, that's, I hired as my personal assistant. And and I treat child GPT like this is like a, for example, like some intern maybe someone that.

[00:22:02] Kris Slazinski (guest): He's very eager to help me, but maybe doesn't have the, all the experience yet, and just makes some mistakes and doesn't have this experience to, to tell you that he's wrong sometimes, right? Like he's very confident about everything, but very often he's wrong. So I always double check everything that ChatGPT will tell me.

[00:22:25] Kris Slazinski (guest): So

[00:22:25] Leo Dion (host): for sure.

[00:22:26] Leo Dion (host): Think that's a really, I like your intern description. Because that's not a bad, that's that's better than nothing. I don't know. I don't mean that in a bad way, but it's it's a super great, like starting point for a lot of stuff. It's definitely ignorant.

[00:22:41] Leo Dion (host): One of the things I found helpful too is as far as bushel is concerned, I have this I don't know. You like it Pages and pages of dialogue. One of the things I was talking about in that episode was I have pages and pages of dialogue with chat GBT teaching it what Bushel does and how it works.

[00:22:56] Leo Dion (host): Correcting it like prompt engineering I think is the term that's been used lately where now, like it's building up it's building up the machine. It's machine learning as you talk to it about the app. So that way it gives better answers and I've been continually feeding it into this big dialogue, I guess into ChatGPT to teach it, but also to better better give it better answers.

[00:23:19] Leo Dion (host): Like I'll correct it if it says something wrong. Could you remove this? This actually is not a feature and it'll fix it. And, yeah. It's a perfect, but it's a hell of a starting point, I

[00:23:27] Kris Slazinski (guest): but if you start a new chat, it'll forget everything. So you need to continue in the previous chat.

[00:23:32] Leo Dion (host): Yeah, that's exactly what I mean.

[00:23:34] Kris Slazinski (guest): So yeah, so I'm using this like for writing some marketing. I'm using it so for brainstorming, right? Like this is like my coworker, intern, whatever, right?

[00:23:44] Kris Slazinski (guest): Like that I, we are brainstorming together. I will tell him like, I'm building this app. What keywords would you recommend for a SR? And it gives me some list of keywords. I will put them to in, in Astro and check if they're actually popular. So sometimes it'll give me some keywords that, oh, jackpot, right?

[00:24:03] Kris Slazinski (guest): It, it was a good idea, but sometimes it's wrong. Sometimes those keywords are not popular at all, but but it's helpful, right? Like it's just another ideas, just another source of

[00:24:15] Leo Dion (host): Yeah.

[00:24:16] Kris Slazinski (guest): For. For and I use it every day to be honest, for coding. Even I can give you some examples if you want.

[00:24:25] Leo Dion (host): Yeah. Yeah, I, so I'll just tell you like as far as coding it, there was a lot of hallucinations. What I was getting when I was asking answers or asking questions, a lot of stuff, it was, it would do fairly simple stuff. I, first of all, a, it's first language is obviously Python. 'cause if you ask it to do anything, it gives you Python as an answer.

[00:24:45] Leo Dion (host): So you have to specify Swift. But as far as swift and like the APIs. I didn't think I thought it was okay. I think sometimes it does a decent job or it's good starting point, but sometimes it was like totally off. Like it didn't understand what the API is for, or how it works behind the scenes.

[00:25:03] Leo Dion (host): And that, that was like a struggle for me where I was just like, I'm giving up on this and I'm doing maybe, maybe if you're doing like Swift ui, like some simple Swift UI type stuff, it's fine. Or something that could be like easily, like it's good at patterns, so if it's a pattern of some sort, then it like, does decent.

[00:25:21] Leo Dion (host): Yeah, go ahead. What was your experience? I'm curious as far as coding with Chad

[00:25:24] Kris Slazinski (guest): Yeah. One thing I will also add that I'm also using this for localization. Like I very often this is like my first step when I localize apps because like I discovered that it's much better than, google Translate. But I'm using some other tools for localization. There is very cool website, apple localization.com, and there are like many strings localized that Apple uses.

[00:25:48] Kris Slazinski (guest): So you can use the same strings that Apple has like in your app. So things like, delete close are you sure? Or whatever, right? Like those sim

[00:25:57] Leo Dion (host): Yeah, that's really useful.

[00:25:59] Kris Slazinski (guest): Yeah. And about coding I am using it for many things. For example, I ask it to generate some code to generate some fe requests or if I forgot how to how to make a computer property that will.

[00:26:16] Kris Slazinski (guest): Get me the first or last day of month or week, right? I, I will tell chap, GPT to do

[00:26:20] Leo Dion (host): see, yes, because it's mathemat, I think it's 'cause it's mathematical. Obviously I think it's using like stack overflow probably for a lot of that stuff. And it's like mathematical. So that's if you do it in one language, you could pretty much do it in any language. So I think that that makes total sense.

[00:26:37] Kris Slazinski (guest): Yeah so we also need to remember that at least this free version which I'm using. I'm using this free versions, to be honest. So far it's enough for

[00:26:45] Leo Dion (host): That's 3.5, right?

[00:26:47] Kris Slazinski (guest): So it doesn't have the latest knowledge, right? Like it's, I. It's until 2021, I think some maybe September of 21 or whatever. So you will not ask about the latest APIs from Apple, right?

[00:27:03] Kris Slazinski (guest): Because it doesn't know about them. But many things before this, that. Yeah, as you said about those hallucinations that some, sometimes it will it will make up some API that doesn't exist, for example or some methods in some some APIs that they just don't exist. Like that your code will not compile.

[00:27:25] Kris Slazinski (guest): But for me, it's not a showstopper really. If I use some code and an X code will tell me this doesn't exist. I go back to ChatGPT, and on this line I got this error and how to fix it, right? And also there is this it looks like a refresh button. That, that you can have another version, another answer, right?

[00:27:46] Kris Slazinski (guest): Like it's very easy way to have another it will show you another way of doing something, right?

[00:27:52] Leo Dion (host): Could basically re, was it regenerate Answer or something like that? Yeah.

[00:27:56] Kris Slazinski (guest): Yes. Yes. Other things is yeah I ask him how to fix some error or I ask him sometimes explain the scope to me, right? Because I, I should say that ChatGPT is not the only tool that I'm using, right?

[00:28:09] Kris Slazinski (guest): I'm still reading tutorials or books or watching dub DC videos, or. Stack Overflow. I'm still using it. And I use Google, right? Like I use many things, right? Some, sometimes I will find some code that's. Is supposed to help me, but maybe I don't know everything about it, right?

[00:28:29] Kris Slazinski (guest): Like there, there are some new things that that I don't know. So I will copy and paste this code to ChatGPT and will ask him about some specific things that are new to me. So I will tell him, please explain me what this code is doing this line, this method, this function, whatever.

[00:28:44] Kris Slazinski (guest): So it's a little yeah I started saying that it's an intern but sometimes it's also like a mentor, a little, like a, especially for me that I'm not a professional developer. Like I so I, like when I want to learn something that. I still don't know anything about it.

[00:29:03] Kris Slazinski (guest): There, there's some new topic for me. I would either need to Google it, read documentation, or if you work with other developers, right? If you have some friends that are more advanced, I. You could ask them. But because I don't want to bother people all the time with my, with my newbie questions I ask ChatGPT and he has some basic knowledge to explain some new topics to me.

[00:29:28] Kris Slazinski (guest): Sometimes, yeah so it's like a mentor that I just don't trust entirely. Yeah, but I have a very recent use case that two days ago I, it helped me to fix one, one back in my app because I I have in my app wins that I'm working on a new version that I I'm working on a data model migration, right?

[00:29:51] Kris Slazinski (guest): And after

[00:29:52] Leo Dion (host): now you're using core data, correct?

[00:29:54] Kris Slazinski (guest): Yes. I'm using core data and for this the, there was nothing wrong with the data model migration but. But with some function that I use after this. So for example, for this data migration I'm, I just follow chapter in Donny Wall's book practical Core Data.

[00:30:14] Kris Slazinski (guest): It was one of the best books that I bought for for coding. Really it's just wonderful because there are so many practical examples. There. So the data migration went smoothly, but. After the migration, when I had in my app, I would have some older objects that items that, for example, maybe they were not migrated during the migration, the upstart, because maybe they were downloaded later from the iCloud.

[00:30:43] Kris Slazinski (guest): And they would still show in my app. So I wrote a function that would. Convert those objects. Like they, they would, for example, copy one value from one property to another. And my app was crashing and I didn't know what to do and I spent few hours fixing this. And ChatGPT helped me not.

[00:31:04] Kris Slazinski (guest): Not at first try because like at first it didn't know what to do. But just like I, I just don't give up When it doesn't help me the first time I will come back to it and ask it another question and I tried debugging and just like I, I found some part of code that, okay, now I'm sure that this part of code, this function is crashing the app.

[00:31:27] Kris Slazinski (guest): And I told this to judge GBT and at this point it suggested an answer that I just I needed to just add one line of code to wrap my code when I'm saving many items into the context dot, I think, or some,

[00:31:44] Leo Dion (host): Okay. Yep. Yep.

[00:31:46] Kris Slazinski (guest): because and I asked it why it did it happen, and it told me that.

[00:31:52] Kris Slazinski (guest): It's because that core data code needs to be run on the, executed on the, on one thread all the time. Yeah. On the main thread. And I didn't know it's some complex stuff. It's like a too complex for me, painter and artists.

[00:32:06] Leo Dion (host): jumped into, I have to, I'm obliged to ask have you jumped into swift data at all?

[00:32:11] Kris Slazinski (guest): Yeah I tried it and I think it's very cool, and I tried it for my up moons before I released it. I gave it a try. I migrated my core data stack to swift data, but I reverted this because it doesn't have all the features yet that core data has. One specific. Yeah, one, one specifically that I needed is it's called section fax request.

[00:32:40] Kris Slazinski (guest): I think the correct name of this. Is it like a, when you are writing a fetch request that for example, that you will have a list of items, right? Like in, in my Moons app that, for example, I have time entries when people work, when they track time. I will have a complete list of this, but I want, I wanted this to have a divided into groups for example, per day, right? And you can do this, using Swift after you, you fetch all those items. So you can use swift data for for this, but it's super slow. I didn't know that. The difference is so huge. So I needed to go back to core data because just the section fetch requesting for data is so much faster.

[00:33:22] Leo Dion (host): Okay. Okay. That makes total sense. Yeah, I have a lot of thoughts on Swift data. I think I did a, I did an episode with Peter Witham on it, so it's definitely should check that

[00:33:30] Leo Dion (host): On his podcast. I'll post the link to it 'cause yeah, SWIFT data is interesting.

[00:33:36] Leo Dion (host): Anyway. All right, go ahead.

[00:33:38] Kris Slazinski (guest): I think it'll be really great. Maybe next year. I hope that like a next version will be

[00:33:43] Leo Dion (host): yeah. And if you're already having issues with threading, trust me,

[00:33:47] Kris Slazinski (guest): I'll have more

[00:33:47] Leo Dion (host): make it easier right now. Yeah. Okay.

[00:33:50] UX vs UI
---

[00:33:50] Leo Dion (host): I wanna talk about user experience. What the heck is user? Isn't user experience the same thing as user design? I know that's probably the

[00:33:58] Kris Slazinski (guest): User experiences.

[00:33:59] Leo Dion (host): interface design.

[00:34:00] Kris Slazinski (guest): Hi. A user interface design. Those are similar topics and there's a huge misunderstanding. Sometimes, I dunno how to talk about it a little because sometimes when people say something negative about UX slash UI that is very popular right now that they sound like it's gatekeeping but it's a huge misunderstanding of the topic UI design, right?

[00:34:27] Kris Slazinski (guest): It's a part of ux sometimes people say, which is not correct that they say that UI is how the app looks and UX is how it works, which is not correct because UX is the whole experience is this user experience. So it's ev everything that you experience with the app, right?

[00:34:47] Kris Slazinski (guest): Part of it. Part of it is user enterprise and graphics only part of it, right? But there are other things, right? What are other things, right? User flow, for example. Like how the app is guiding you through, through, through that, some process. How is it fixing the problem?

[00:35:05] Kris Slazinski (guest): Does it understand your problem? Some coding things like some development part, like for example does it crash or not? If it. If it's crashing a lot it's not a good user experience. Even it's not related to UI design, right? So UX design, user experience design it's a very broad thing and UI is just a part of it.

[00:35:31] Kris Slazinski (guest): So sometimes like people are using this like a ux slash ui. It's a little I would say like a, I am a front end slash full stack developer, right? It's, it a little doesn't make sense, right?

[00:35:45] Leo Dion (host): Yeah, so what are some ways of finding out that. You're doing the right thing with user experience. Like how are you like, okay, like I'm doing this right? This makes sense, or

[00:35:58] Kris Slazinski (guest): y Yes. There, there are many things and then many people focus maybe on this design part. The first thing they go is they open Figma and they start to design screens, right? But they should

[00:36:09] Leo Dion (host): the fun stuff.

[00:36:10] Kris Slazinski (guest): Yeah. But they skip research, for example, right? This is a very important thing.

[00:36:16] Kris Slazinski (guest): First it's very good to understand what you want to build and why, right? Because apps should solve some problems, right? Like this is what we are doing. We are solving problems with software. So first we need to identify those problems. Who has the those problems? What are those problems?

[00:36:36] Kris Slazinski (guest): May, maybe there are other solutions that, that solve the this problem. What is wrong with those solutions? So maybe you'll learn from your potential customers that they are already using some apps. You will learn what is wrong with these apps, what they want from those apps. So you will know what features you should develop, for example, right?

[00:36:56] Kris Slazinski (guest): Later when you so you did your research. Later you start designing. So now it's more UI design, right? You design interface, and also you ask that you design user flows. But after you design those things. Again, many people skip this part. They don't test it. They look at, okay, I designed something, therefore it's good.

[00:37:20] Kris Slazinski (guest): But they don't test it. What I'm doing is that before every release, I before e every, at least first release, right? I test my apps. I invite few people. Many developers, they just use test flight and they invite people to test flight, right? And they wait for those, this, those users feedback, right?

[00:37:43] Kris Slazinski (guest): V very often if you ever use test light for this you'll know that many times people will just not write back to you, right? Like, how many people just. You'll find some crashes sometimes, right? Because you, you will have some crash reports. So this is good, but I'm using test flight a little differently.

[00:38:01] Kris Slazinski (guest): I I invite few people for usability testing that I, I conduct remotely via FaceTime. I have a call with them like, like we have right now. I send them link to test live. Right before the call. Because I don't know, I don't want that. They use the app earlier and during the call they share their screen of their iPhone with me.

[00:38:27] Kris Slazinski (guest): On, on FaceTime. You can also use QuickTime for this. Like that time you, you would see a se separate window, right? Like they would share their screen and, yeah. But even without this you can just use FaceTime with this and screen sharing. This is very convenient. So you will see their screen and you will hear their voice and you'll see on camera their reactions.

[00:38:46] Kris Slazinski (guest): So I tell them I start, this is very important thing that I tell them that today we will use the app, not you. So don't worry if you do some if something will not work, because this means that's, there's something wrong with the app not with you.

[00:38:59] Leo Dion (host): Yep.

[00:39:00] Kris Slazinski (guest): I look for a few seconds how they are using my app for the first time.

[00:39:04] Kris Slazinski (guest): When they see it I tell them like, you can just browse a little and later I have few tasks for them. For example, when I test tested my app months, I had few tasks for people. Like for example, I would tell them that please. Create this project. Please edit this project.

[00:39:23] Kris Slazinski (guest): Please start the timer, please. Export time entries to the CSV file. Look at some you also need to be very careful to how you which words are you using in those tasks that you have for people, because we don't want to suggest anything, right?

[00:39:40] Leo Dion (host): Yeah, you wanna be, you don't want be opinionated. You wanna be as neutral as possible so that way you can fetch the information out.

[00:39:48] Kris Slazinski (guest): E Exactly. So I sometimes I try to use some more generic words than, for example, words that I have in my ui because if I would use the word that I have very clearly in the ui, like this would be very clear suggestion for them and they would try to use some button that, that, because I use the name, later. What's also very important when you look how they are trying to fix this problem that you just gave them don't help them too much. Like just observe, just take notes.

[00:40:18] Leo Dion (host): record it?

[00:40:19] Kris Slazinski (guest): Sometimes, but not very often because Yeah. Yeah. I just I take notes all the time. Like I. I don't want to make people stressed more because of this the uhhuh.

[00:40:31] Leo Dion (host): sense.

[00:40:32] Kris Slazinski (guest): Yeah. So e even though many people told me that if I want, I can record this I just took few screenshots, but but just like taking notes was enough for me. From if I work for my clients and we have more, advanced usability tests. Yeah. Sometimes I record that and I participated in some sessions that were recorded that were later worse by, some UX teams and whatever.

[00:40:59] Kris Slazinski (guest): Yeah. But for me, no, I just I prefer simplicity for many things that, that I'm doing. Just recording would be another complexity here.

[00:41:08] Leo Dion (host): How do you recruit people? Because I think that's one of the hardest things is I'll have people using my apps, but like good luck. Like I have their email address, but good luck getting them to like actually be like, yeah, I'll take 15 or half an hour

[00:41:22] Kris Slazinski (guest): Okay.

[00:41:23] Leo Dion (host): Sit down with you because that's what I found really hard.

[00:41:26] Kris Slazinski (guest): Okay. Yeah, this is very good. Good question, and a few people ask me about this. So it depends on the app that I'm using, right? Like for this app score, that is like a, for broad audience, it's very simple app. Like any, literally anyone can use it, right? It's it's not a niche app. I tested it with people in my family as well.

[00:41:47] Kris Slazinski (guest): So not through FaceTime, but also in real life which is even better. If you have this opportunity to test in real life on real device, it's even better than FaceTime. So I tested this with my brother, with my wife, with my parents who were the time in Thailand.

[00:42:02] Kris Slazinski (guest): So my dad and my mom used this app to to count scores, but other people, and especially when your app is more targeted to some specific audience, like for developers, for example, right? So building public helps a lot here and networking and finding those connections. I very often, I invite other indie developers and I have this group of friends right now that I invite them to test my app.

[00:42:32] Kris Slazinski (guest): When they need something, I will help them. For example, Mateo, that, that makes us sure. He helped me to translating every app that I have, so

[00:42:41] Leo Dion (host): That's awesome. Yeah, and that makes sense. We talked in the last episode with Martin about building in public and yeah, I think that's a big thing and something I've been doing and hoping to do in 2024 more of is like

[00:42:55] Kris Slazinski (guest): Ma

[00:42:55] Leo Dion (host): The little gears and things of, yeah, go ahead.

[00:42:58] Kris Slazinski (guest): Martin is another of my friends. He also tested Mons before I released. Yeah. And e even lately, we invited him because maybe I will talk briefly about this, because I think this is the, I see a huge value in this. With few of my friends. We made a small group. I dunno.

[00:43:17] Kris Slazinski (guest): Support group, at first we called it Mastermind, ster Mastermind, but now we changed the name. So we have this small group that, that few of us, we have weekly calls every Monday where on, on FaceTime that we just talk. Sometimes we just talk about films or games for a few minutes. But very often we talk about our apps our,

[00:43:39] Kris Slazinski (guest): ideas about code, about marketing, about, about the so this is thanks to building public I met all those people through this, through building in public and connecting with people ma making those friendships. And this helps me so much ev even though, like I, I use charge g PT every day to help me with code, but.

[00:43:59] Kris Slazinski (guest): But those guys that they are very often my moral support they

[00:44:05] Leo Dion (host): you're not gonna get that from ChatGPT

[00:44:07] Kris Slazinski (guest): yeah.

[00:44:08] Leo Dion (host): Not gonna happen,

[00:44:09] Kris Slazinski (guest): yeah. Exactly.

[00:44:11] Leo Dion (host): che. But GPT doesn't have any experience. That's the thing. And

[00:44:14] Kris Slazinski (guest): Yeah.

[00:44:14] Leo Dion (host): you can't have real conversation with Yeah, totally. Totally. Yeah. I've heard nothing about good things about masterminds. I've been in masterminds and yeah, having somebody to meet every so often just to throw ideas at and, yeah, it's

[00:44:28] Kris Slazinski (guest): Yeah. It's very cool, especially when you are with the people that are doing the same as you, right? Like the other developers and people that have the same experience, like they will understand you so much, right? Like that they.

[00:44:42] Kris Slazinski (guest): For example, my friends that are just UX designers sometimes they don't understand some aspects of app business.

[00:44:50] Kris Slazinski (guest): I can talk with them about ux Sure. But there are some aspects that only this group of indeed developers who understand because they went through those the same problems.

[00:45:00] Leo Dion (host): Yep. Yeah. Anything else before we close out? I feel like we covered quite a bit of stuff. Kris, thank you so much for coming on the show. It's been fantastic.

[00:45:11] Kris Slazinski (guest): Thank you very much. It was my first time on the podcast. I was super, super stressed before this. I even wanted to ask you that maybe we can do this in Polish because I worried about my, I was worried about my English

[00:45:23] Leo Dion (host): Your English is far superior to my polish, so I think it, I think we did the made the right choice. Kris, where can people find you online?

[00:45:30] Kris Slazinski (guest): In few places, like a few months ago, it would be just Twitter, but now it's Twitter and LinkedIn Masteron Threads. I have my own website. Next planet.com. And on the app store too, right? If they search for Next Planet on the app store, they will find my apps.

[00:45:50] Kris Slazinski (guest): So

[00:45:51] Leo Dion (host): Awesome, awesome. And we'll put links to all that in the show notes below. So check Kris's stuff out. Awesome person to follow on X, Twitter, whatever you wanna call it and MAs it on and stuff. Yeah. Thank you Kris. It's been fantastic. People can find me. Yeah, you're welcome. People can find me on Twitter at Leo g Dion.

[00:46:10] Leo Dion (host): My company is Bright Digit. MAs it on at Leo g Dion at cm. If you're watching this on YouTube, please and subscribe, share with others. I would really appreciate it. And if you're listening to this on a podcast player, I'd love a review. Thank you so much everybody for joining us for this episode.

[00:46:27] Kris Slazinski (guest): And I really like your podcast. Really. People should subscribe. This is one of my favorite I iOS podcasts. So yeah, go for it,

[00:46:35] Leo Dion (host): Yeah. Yeah. Thank you. Thank you, Kris. Have a good rest of your week everybody, and I look forward to talking to you again. Bye.

[00:46:44] Kris Slazinski (guest): byebye. Thank you.

[00:46:58] Leo Dion (host): Welcome to another episode of Empower Apps. I'm your host, Leo Deanne. Today I'm joined by Kris Sch. Did I say, oh, did I say that right?

[00:47:08] Kris Slazinski (guest): In English, you can pronounce

[00:47:11] Leo Dion (host): I don't mind saying sch shaki is fine. Yeah. Okay. Lemme try it

[00:47:16] Kris Slazinski (guest): I think it's really good. I think like it's the one of the best versions I've heard

[00:47:22] Leo Dion (host): let me do the intro again. Let me try the intro again. Welcome to another episode of Empower Apps.