Read the transcript
Jeroen Leenarts: Hi, and welcome
to episode 84 of my podcast app
Force One. My name is Leenarts.
And I've been developing
software for over 20 years
developing iOS apps for over 10
years, and I'm running vertical
cash for over nine years. If
you're an iOS app developer, you
should listen to my podcast
because we'll keep you updated
on interesting articles,
conference and events you might
not have heard about. In this
episode, I'm going to talk about
Swift UI 22 in numbers and
future search, capturing text
within images using live text
API and swift UI using the Swift
UI for image renderer. From
strings to data using parsable
performance style, the best
change to come from WWDC 2022.
And the final article removing
dependencies one weird trick for
increasing happiness, a lot of
stuff going on again, this week,
I'm preparing myself for a talk
this Friday at app dev comm to
check them out, if you're still
interested in going there, and
you don't have tickets yet, they
still have some tickets
available, I think, looking
forward to meeting a lot of
interesting people on site at
the conference myself. Amongst
them is Michael flareup, from
the iOS app icon book, very much
looking forward to meeting him.
But also a great number of other
people that have already seen on
the either speaker list, or that
announced online that will be
participating at the conference.
So to those come to the
conference, looking forward to
meeting you all this Friday. And
I will try and incorporate some
of my experience is there to my
podcast. But I just have to see
how this will work out. On
another note. In my day job,
we're preparing ourselves for
the third quarter of the year,
it's always a bit of a hectic
period to figure out what we
will be doing the next three
months and what will be the
effects of that of our day to
day work. But I do know that amo
Stefan and I are really working
hard on getting some plans that
align with the company goals.
And I do know that we are going
to be creating a lot of
interesting and cool content, I
cannot share yet what we will be
sharing Exactly. But it is going
to be some new things for the
three of us as well, which is
cool in itself. And something
else that I'm experimenting with
right now is to do something
that Michaela Quran is doing as
well is to livestream working on
some specific topics. So after
my podcast recording later
today, I'm going to do an ad hoc
session online on my Discord
server to like screen share
while try and create an outline
and a slide deck for my
presentation on Friday, I have a
very thorough idea of what to
do, I have some notes on hand
available of the concept of my
talk. But now I need to create
the actual content, which is
always interesting, I think,
because it's a process and I
only have like a couple days
remaining. And I want to make
sure that I have a good slide
deck with good artwork, and that
it's like fitting within the
time slot that I have because I
have a short time slot 30
minutes. And it's always fun to
try and create a presentation
that fits in this timeframe,
right, it's always a chance for
me at least, I always go along
with presentation. So I have to
make sure that I have a
condensed package that I can
deliver on time. Not too long,
not too short. So let's just see
how that works out. And what I
think of the experience
afterwards. Another thing that's
quite fun, actually, is that my
daughter is having her annual
field trip with her school
class, it's going to be the last
field trip she will have with
the school that she's at right
now. Because after the summer,
she will be switching schools. I
shared that already in one of my
previous episodes. But hopefully
when she is started to new
school, after the summer, she
will have a better time and a
better experience. Yeah, just
interacting and growing herself
as an individual. So let's just
dive in on the first article.
And then afterwards, I will see
if there's any content that I'm
missing that I should share
beyond the articles that I've
wanted to get your attention on
this week. So the first article
is swift UI 22 in numbers, and
if you charge, it's a fun piece
by half year. I hope I
pronounced that correctly.
It's a fun piece back half year.
And it is about Swift. Why 22 In
Numbers, as the title already
says, but it's like a graphical
representation of the amount of
new types, the new initializes
methods and product properties.
And a bit of a look at what this
year's WWDC will be the year of
So 2019 has been the year of the
birth of Swift UI 2020 has been
the year of lazy grits, better
scroll support and new Swift UI
lifecycles for your app scenes,
which is unmatched geometry
effects. 2021 has been audio
graphs tables for MacOS Timeline
view async images and other
async features search in
lifestyles and Canvas shoe. And
2022 has been the year of charge
sharing A badly needed
navigation few improvements and
exciting new layer protocols,
tables arriving to iOS
improvements for UI kit, app
kit, integration and news window
scenes. A new menu bar scene,
eager grits, as opposed to lay
scripts, and focus sections are
now supported on Mac OS. What's
really interesting is that FDA
has done a representation of all
the new additions and changes to
Swift UI by using the Charts
API. So he actually renders out
the graphs to compare the
changes year over year. So it's
graphs comparing 2019 up till
2022. And, yeah, it's just a fun
read. It's a lot of bar charts.
But also, at the end of his
article, he shares a gist where
you can actually have a look at
the source code that generates
these charts. And I think you
can actually run this. I think I
run this in, I think it's, it's
a playground bit of code, or you
have to run it in an Xcode
project, but it's quite easy to
incorporate and get going. I did
it myself. And it's a fun little
exercise to also with this
article, explore the Charts API
just a little bit. The second
article by Simon on App coda is
titled How to capture text
within images using live text
API and swift UI. So last year,
iOS 15 came with very useful
features known as live text, you
may have heard of the team.
Term OCR, short for optical
character recognition, which is
the process for converting an
image into text into machine
readable text format. So what is
live text about live text is
built into the camera app and
photos app. If you haven't tried
out this feature, simply open
the camera app. When you point a
device camera and an image of
text, you will find a live text
button at the lower right
corner. By tapping the button
iOS automatically captures the
text for you, you can then copy
and paste it into other
applications. This is very
powerful and convenient for most
use. And as a developer,
wouldn't it be great if you can
incorporate this live text
feature in your own app? In iOS
16, Apple releases to live text
API for developers to power
their apps with the live text
feature. So in this tutorial
assignment, you can see how you
can get going with live text
API. Within a swift UI based
code base. Simon goes over a
number of classes that are
related to capturing machine
readable codes and textbook
phishing kits. It's a good
overview to get the basics
right. And then he dives into
like actual working code that
allows to use the data scanner
view control in Swift UI. The
fun bit is that it's a full
featured example with some nice
images in there using phishing
kits to make sure that you can
actually scan text from images
and use those in your own
applications. The code is
included with the link on
GitHub, so and it's a good
advertisement for his mastering
swift UI book that is updating
for iOS 16. So if you buy that
book, you can get the current
version of the book, but later
this year, you will get a free
update to the iOS 16 version of
this book. The third article is
by Daniel Satie, using the Swift
UI for image runner, Swift UI
four introduces a new image
renderer that can be used to run
any swift UI view as an image in
iOS 16. Mac was 13 to us 16. And
watch was nine. So let's take a
quick look in the article by
Daniel on how this all works. In
this article, you will see a
code sample of using the image
renderer and how it actually
looks for the screenshots and
how you can improve the snapshot
resolution that you get out of
the image renderer so very
practical, how to guide that
allows you to get started with
the image renderer in Swift UI
on iOS 16. Swift UI for image
renderer does a great job of
rendering snapshots of any swift
UI view. It's available for the
latest iOS and Mac OS and TV OS
and watch OS versions, and you
can test it in Xcode 14 better.
The fourth article is by Brett
Orland from strings to data
using parse performance style.
The venerable NS formatter class
and atmosfera subclasses are an
objective C based API that is
most well known as the go to
method for converting data types
into strings. One of the lesser
known features of the API is
that these same formats can be
used in reverse parse string
into their respective data
types. Apple's modern straight
replacement system for formatter
is a set of protocols format,
style and parsable format style
to format handles the conversion
to strings and the letter
strings to data. Now, some good
code samples in the article by
Brett and I'd recommend that you
have a look at this article. If
you want to get started with
past performance style. Joe
Morgan has an article on what he
thinks is the best change to
come from WWDC 2022. And it's
actually not a technical or an
API change. It is in sense a
technical change but iCloud
enabled apps are now allowed to
be app transferred to another
developer. Now if you're
familiar with Jordan Morgan's
personal story, you will know
that when he or I wanted to sell
his application spent stack. So
it was acquired. It took nearly
four months for him to get all
the things related to this
transfer settled. This was being
done by an experienced buyer for
his app who usually had things
done and dusted in like one
week. And in Jordan Morgan's
case, it took so long, because
he didn't just sell spend stack,
he had to sell his entire
limited liability corporation,
dreaming and binary, which he
had owned for many years to that
point. So instead of
transferring the app, he had to
manage a slew of logistical
hurdles that neither he or
acquirer wants to otherwise,
nowadays, a lot of indie
developers create a limited
liability corporation per app.
This is a US tax construct. But
the same holds true for other
countries around the world. Why
was this required with an LLC or
other legal construct, if you
had then created an app and you
use cloudkit, you could sell the
app with the legal entity
attached to it to someone else
that was like a package deal,
you sell the company, you sell
the app, use cloudkit. And then
you have to sell your company as
well. But now with this change
for Apple, you don't have to do
this anymore. Now you can just
create an app with cloudkit
support enabled under your own
name, and be able to transfer it
into the future to some other
owner if you would want to
because incorporating as a
company as a legal entity is
quite a lot of work. And there's
also cost involved. So it
actually raised the barrier of
entry. For people wanting to get
started with an iOS app, while
cloudkit is actually meant to
make the barrier of entry into
iOS development and Apple
development. In general, lower
because you don't have to worry
so much about the backend
synchronization side of things,
right. So the long and short of
the entire announcement by Apple
in relation to cloudkit
transfers being enabled for apps
is that you don't have to worry
about using iCloud sync anymore,
because you can now transfer
your app to another company,
which is a big benefit and the
big updates in the App Store
connect
implementation. The final
article I have on my podcast
this week is by Josh Adams
removing dependencies one weird
trick for increasing happiness.
I'm just going to read his
startup article for Batum so
that you have an idea what his
article is about. No app is an
island. Most apps use code from
third parties. Our version or
openness to dependencies is a
cultural trait that varies among
software development
communities. For example, the
JavaScript community is quite
open to dependencies. A website
built with JavaScript might have
hundreds or even 1000s of
dependencies. This openness
sometimes causes problems, like
the notorious left pet issue, my
community of Swift developers
feels aversion to dependency
counts in the hundreds or 1000s.
The seven iOS apps I've worked
on in the past 10 years have
been between one and 27
dependencies. And understand
that these numbers are quite
typical. In this article, Josh
shares his ideas about iOS
related software dependencies.
He starts with listing a number
of problems that he sees with
dependencies to quickly recap
those dependencies sometimes
stop being maintained.
Dependencies usually contain
more functionality, and
therefore code than any
particular apps use case
requires. Dependencies may lack
certain functionality that
consuming apps require. Some
dependencies are released via
licenses, such as the GPL that
impose requirements on consuming
apps that you do not want.
Dependency code typically
resides in its own GitHub
repository, not in a repository
of the consuming app. Thus, you
have some more work getting
started with these dependencies.
And dependencies can negatively
impact the performance or
stability of the consuming app.
And to paraphrase Apple each
additional third party
dependencies that your uploads,
adds to the launch time of the
app. In this article, Josh lays
out his framework for assessing
the current and new dependencies
in an app's code base to assess
whether or not you want, or you
want to keep these dependencies.
And basically, there's a number
of true or false statements that
you can hold against your
dependencies. And if any of
these indicate that you should
remove the dependency, you could
actually go ahead with removing
the actual dependency. After
laying out his framework, Josh
also describes ways of getting
rid of dependencies. Sometimes
it's just as easy as removing
it. Sometimes it's just re
implementing the bit of
functionality that you need in
your app. And there's some other
things that you might consider,
at the end of his article, he
has a results section. And there
he indicates that removing
dependencies has improved the
codebase of the app that he's
working on in many ways, so
definitely check out the
article. But Josh, it is a very
well laid out reflection on on
what dependencies for iOS
developers are and what
implications they have and how
you could think about actually
incorporating these dependencies
into your codebase. And that's
the final article of my podcast.
If you have any questions,
comments or feedback, please
reach out on Twitter, or better
yet, join me on Discord. You can
access that discord group by
sending me a DM on Twitter if
you cannot find the invite link
yourself. It's also in the show
notes. But even better If you
want to support my podcast,
consider buying me a coffee by
going to buy me a coffee.com/air
force one Derek and buy me a
coffee. Or even better yet
become a member of a podcast, I
have two tiers available are
five euro tier and the 50 Euro
tier. That's a big difference.
The five year old tier gets you
access to the discord community
that I created for my podcast,
and the 50 Euro tier gets you
access to the discord community
as well. And you get the
opportunity to book a half an
hour call with me to discuss
anything that you'd like about
podcasting, software
development, or other
professional related topics that
you might want to have a
discussion about. I'm very much
open to anything you'd like to
share and something that you
need some help on. And I really
look forward to having people
join me on my Discord server to
have chat, but also to interact
with me while I'm preparing for
my recordings and all the other
things that I do these days.
Also as an extra on my buy me a
coffee page, I listed my book
being a lead software developer,
if you become a member of our
podcast, you get a 50% discount
on my book. If you reach out to
me on my Discord server itself,
you can actually get a much
better discount if you'd like.
So come talk to me I have
something special there for you
at a steep discount, provided
you are a member of my podcast,
I've set a goal for myself for
300 euros on buy me a coffee.
And with these 300 euros, what
I'm planning to do is buy myself
a new microphone, it's a
microphone that I've been
looking at for ages by now. It's
really cool thing. It's a sure
87 A if I'm correct. And it's a
condenser microphone in a
handheld form factor that has a
lot of handling noise dampening,
and that should improve the
audio quality of my podcast
significantly. Just a great goal
to have and something meaningful
to strive for, while getting
people on board with the
Borromeo coffee thing for my
podcast. So next up for me is
app DEF CON, I'm really looking
forward to this conference next
Friday. And after that I'm going
to 360 I def, I already
registered myself for the Slack
community for both of these. So
if you go to this conference,
and you sign yourself up to
their slack communities in
advance, you can have a chat
with me there if you'd like I
would very much love for people
to reach out to me to just share
why they are excited to go to
these conferences. And most of
all, I look forward to meeting
people in person that I've been
following online for a while.
And I think that's like one of
the best things about
conferences these days, again,
to be able to just meet people
that you haven't seen for a
while or people that you're
going to meet for the first time
that you're a fan of the content
and then get to interact with
them in person. I looked at the
speaker lineup for at DEF CON
this week. And there's just a
number of great people on there.
And as already mentioned,
microflow roop is on there. But
also people like Tim Condon
Sharma Shali, Axl roost on Tom
fillet Donnie walls, Ellen
Shapiro, Jody Brown, pizza
freezer boss, Brooke Medina,
Monica, Benoit, petite, Mark
Graham, Johan, Pamela, Mohammed,
Jennifer, and a whole bunch of
other people that are awesome to
meet in person. So if I haven't
named you by name, that doesn't
mean that I don't think you're
awesome. It's just that I'm just
not aware of you as an
individual yet. So at the
conference, walk up to me, have
a chat with me and tell me what
you're working on. I just love
to know what it is that you are
doing each day and why we're at
the app DEF CON conference. So
see you there on Friday. And
just a heads up, I'm bringing my
DGI mix so I can record myself,
I may be you just on the spot to
have some extra additional
content to get a flavor of the
conference experience at DEF CON
and that we can just share that
on my podcast. Last Wednesday, I
also did a presentation for the
coca hats meetup at the stream
office. So that was pretty much
everything combined. In all, in
one event was a lot of fun. I
was well received. And the
meetup itself was very much a
meetup that felt like the old
style meetups that we had
before. The whole COVID thing
happens. So it was very
enjoyable. And all the
participants that were in
attendance, were very adamant
about how much they loved the
meetup and how much they love
being there and the whole vibe
of the evening. It was a
presentation about web auth and
what you need to know about past
keys. There were some issues
with the live stream at some
bandwidth related issues. So
there is not a publicly
available recording available
just yet. But the recording of
the presentation went well and I
know Marco from cokehead Snell
will work hard to get this video
edited and published on the
YouTube channel of coca
Hudsonville so you can be sure
that I will make sure to share
that once it is available. My
slides are already available on
speaker deck I will put the link
in the show notes so that you
can have a look at the slides
themselves already. There's a
lot of fun ailable links in
there if you want to get started
with web auth and, and pass
keys, a special shout out to Tim
Condon because he quickly after
WWDC wrote, like a hack together
version of web auth. And on
vapor. webauthn is of course, a
standard that's been around for
a long while. And there are
standard and stable
implementations available, but
just not yet for server side
Swift, but hopefully there will
be a server side swift version
of webauthn implementation
available soon. And, yeah, once
my presentation is available, I
will be sure to share that with
you.
Something that I haven't spoken
about a lot is the great new
feature that was released on the
Swift package index. And that's
the actual generation and
hosting of Doc see comments on
your packages that are listed on
the Swift package index, I've
been trying to help out the
Swift package index. So that's
Dave and spend a little bit I
don't have much time available
to just try and implement some
things on the Swift package
index really small things. But
it is an enjoyable experience to
be able to help out Dave and
spend on any way I can by just
spending a little bit of pull
requests here and there, or
maybe just chiming in on any of
the features that they're
building on. And currently, I'm
trying to get my hands on some
feature development follows
fifth package index that
involves some statistical
information about key words
being used on the Swift package
index. So hopefully, I can get
that together, I need to really
learn more about vapor. Because
the whole Swift package index,
the site itself is based on
vapor. So server side Swift,
which is really cool, it really
helps me develop some additional
skills that I can later on use
when doing software development
for the iOS platform. And, yeah,
I just want to call out to you
to make sure that you get your
packages listed on the Swift
package index, and that you make
sure that you enabled doc see
comments on the Swift package
index as well, they have a
really great announcements blog
post available that will link
to, and, yeah, it's just really
easy to get listed there. But
also to get your documentation
hosted there. So it's not a
hassle on you anymore. And you
can just share your great work
of any open source frameworks
that you're creating with the
developer ecosystem. And now I
really should start wrapping up
this episode by now because I've
been talking for 20 minutes. If
you have any feedback on my
episodes, anything that I'm
doing, reach out on Twitter,
send me a DM, or better yet,
join me on my Discord server and
send me a message there. I'd
love for you to interact with
me. And yeah, I'm just looking
forward to all the things that
will happen in the rest of the
year. I have some plans laid out
for myself and also work
related. I have some great plans
laid out for myself. I'm gonna
dig into vapor codes a little
bit and I'm going to make sure
that I wrap my head around so
whip off and a little bit there.
So see you on at DEF CON for 360
I def and talk to you next week.
Bye bye