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.
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?
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.
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.
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.
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.
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.
Kris Slazinski (guest): Hi.
Thank you very much for inviting me.
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.
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.
Leo Dion (host): Oh wow.
Cool.
Kris Slazinski (guest): yeah.
And I'm mostly an artist more, more than a developer.
Like I have a master's degree, art.
Leo Dion (host): Oh, that's awesome.
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.
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
Leo Dion (host): I can imagine that.
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.
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.
Leo Dion (host): Okay.
What, so I know moons what else is there?
Kris Slazinski (guest): Yeah.
Leo Dion (host): Your list of
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.
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
Leo Dion (host): Yeah.
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.
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.
Leo Dion (host): Okay.
Kris Slazinski (guest): and I have emo for, for journaling and for
it's like a emotional inventory.
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.
Leo Dion (host): so which is your most successful?
Is it the score keeping one?
Kris Slazinski (guest): Y yes.
So far, yes, so far, yes.
If I.
Leo Dion (host): is the secret behind it?
Like, why it is funny, what?
What becomes the success and what doesn't?
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.
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.
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,
Leo Dion (host): Yeah.
Kris Slazinski (guest): it has really a lot of impressions.
Yeah.
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.
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.
Leo Dion (host): I, I still call a Twitter.
It's okay.
Kris Slazinski (guest): Yeah,
Leo Dion (host): in 2024.
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.
Leo Dion (host): Yep.
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.
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.
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.
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.
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
Kris Slazinski (guest): Yes.
And there is,
Leo Dion (host): does that,
Kris Slazinski (guest): yes.
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.
Kris Slazinski (guest): Okay.
So
Leo Dion (host): you go for that?
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
Leo Dion (host): app information.
Kris Slazinski (guest): Yes.
Leo Dion (host): App information, right?
Kris Slazinski (guest): yes.
And those things are divided between those two pages.
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.
And when you click on this dropdown, you can add more languages there.
So you can localize your.
Product page, right?
Like a
Leo Dion (host): Oh my gosh, I see it now.
Kris Slazinski (guest): yeah.
And
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.
Kris Slazinski (guest): Yeah.
To do this, you need to upload new build like
Leo Dion (host): Wow.
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.
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
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.
But when I look at regions that like I have much more money from Europe
so it's definitely worth doing this.
And
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.
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
can't do everything.
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.
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?
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
Leo Dion (host): makes total sense.
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.
But those are two completely separate things so you can
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,
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.
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
Because I don't Yeah, go ahead.
Kris Slazinski (guest): Yeah so I, when we were talking, I think
before you hit record button that about diuretic science, right?
Leo Dion (host): we
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
Leo Dion (host): of all, does Polish have dietary marks?
Kris Slazinski (guest): yes.
Few of them.
Yes.
Uhhuh
Leo Dion (host): Yeah, I would say so, yes.
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
Leo Dion (host): Like maybe the, like some Spanish words, like El Nino, right?
They have the little,
Kris Slazinski (guest): So you.
Leo Dion (host): that's like maybe it, but otherwise it's very rare that
people use dietary marks in English.
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.
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
Leo Dion (host): It's a difference.
It's a difference between localization and translation
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.
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.
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.
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?
So you can later, you can use whatever you want, but when you research
keywords, research both versions.
Leo Dion (host): Okay.
Okay, that makes total sense.
Okay, so my funny dieretic di diet, did I say it right?
Dieretic
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.
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.
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.
Kris Slazinski (guest): Can I say it loud or not?
Or not?
Leo Dion (host): Yeah,
Kris Slazinski (guest): Yeah.
You mean about Pokemon or?
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.
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
Kris Slazinski (guest): But you mean,
Leo Dion (host): and dietetic marks.
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.
Leo Dion (host): In my database, in my Postgres database.
Yeah.
So yeah, I, it's just FYI
Kris Slazinski (guest): Yeah.
Leo Dion (host): out there.
They make a difference,
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.
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?
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.
Totally.
Don't quote me on that, but yeah, they're different.
They're different letters.
Letters.
Yeah.
Totally.
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.
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.
But, oh, English is a, is a mess.
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.
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,
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.
Kris Slazinski (guest): Yeah.
Leo Dion (host): What's your take on it?
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.
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.
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?
Like sometimes it'll add something in this app description that maybe you, you
don't actually have in the app, right?
Leo Dion (host): The term is hallucinate.
Where AI just come makes up stuff that doesn't exist.
Yeah, exactly.
Kris Slazinski (guest): 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.
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.
So
Leo Dion (host): for sure.
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.
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.
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.
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
Kris Slazinski (guest): but if you start a new chat, it'll forget everything.
So you need to continue in the previous chat.
Leo Dion (host): Yeah, that's exactly what I mean.
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?
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?
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
Leo Dion (host): Yeah.
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.
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.
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.
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.
Yeah, go ahead.
What was your experience?
I'm curious as far as coding with Chad
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.
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
Leo Dion (host): Yeah, that's really useful.
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.
Get me the first or last day of month or week, right?
I, I will tell chap, GPT to do
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.
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
Leo Dion (host): That's 3.5, right?
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?
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.
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?
Like it's very easy way to have another it will show you another
way of doing something, right?
Leo Dion (host): Could basically re, was it regenerate Answer
or something like that?
Yeah.
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?
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?
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.
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.
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.
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?
And after
Leo Dion (host): now you're using core data, correct?
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.
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.
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.
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.
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,
Leo Dion (host): Okay.
Yep.
Kris Slazinski (guest): because and I asked it why it did it
happen, and it told me that.
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.
Leo Dion (host): jumped into, I have to, I'm obliged to ask have
you jumped into swift data at all?
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.
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.
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
On his podcast.
I'll post the link to it 'cause yeah, SWIFT data is interesting.
Anyway.
All right, go ahead.
Kris Slazinski (guest): I think it'll be really great.
Maybe next year.
I hope that like a next version will be
Leo Dion (host): yeah.
And if you're already having issues with threading, trust me,
Kris Slazinski (guest): I'll have more
Leo Dion (host): make it easier right now.
Yeah.
Okay.
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
Kris Slazinski (guest): User experiences.
Leo Dion (host): interface design.
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?
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?
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?
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.
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?
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
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
Leo Dion (host): the fun stuff.
Kris Slazinski (guest): Yeah.
But they skip research, for example, right?
This is a very important thing.
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?
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?
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.
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?
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.
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.
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.
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.
Leo Dion (host): Yep.
Kris Slazinski (guest): I look for a few seconds how they are
using my app for the first time.
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.
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?
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.
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.
Leo Dion (host): record it?
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.
Leo Dion (host): sense.
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.
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.
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
Kris Slazinski (guest): Okay.
Leo Dion (host): Sit down with you because that's what I found really hard.
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.
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.
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.
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
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
Kris Slazinski (guest): Ma
Leo Dion (host): The little gears and things of, yeah, go ahead.
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.
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,
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.
But those guys that they are very often my moral support they
Leo Dion (host): you're not gonna get that from ChatGPT
Kris Slazinski (guest): yeah.
Leo Dion (host): Not gonna happen,
Kris Slazinski (guest): yeah.
Exactly.
Leo Dion (host): che.
But GPT doesn't have any experience.
That's the thing.
And
Kris Slazinski (guest): Yeah.
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
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.
For example, my friends that are just UX designers sometimes they don't
understand some aspects of app business.
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.
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.
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
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?
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.
So
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.
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.
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,
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.
Kris Slazinski (guest): byebye.
Thank you.
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?
Kris Slazinski (guest): In English, you can pronounce
Leo Dion (host): I don't mind saying sch shaki is fine.
Yeah.
Okay.
Lemme try it
Kris Slazinski (guest): I think it's really good.
I think like it's the one of the best versions I've heard
Leo Dion (host): let me do the intro again.
Let me try the intro again.
Welcome to another episode of Empower Apps.