Read the transcript
Jeroen Leenarts: Something fun
I'm doing with this podcast
recording. I'm actually using my
new DGI MC. It's like a little
tiny recording thing. I'm just
trying it out for an entire
episode, I have no clue how the
individual to sound. If it's if
it's good, then I can use this
form to go field recordings from
guest interviews. We'll just
see. So let me know what you
think is the audio quality once
you've listened to my episode?
Welcome to Episode 79 of my
podcast. My name is John Landis,
and I've been developing
software for over 20 years
developing iOS apps for over 10
years and running the Dutch
cocoa pods for over nine years.
If you're an iOS app developer,
you should listen to my podcast,
because it will keep you updated
on interesting articles,
conferences and events you might
not have heard about. In this
episode, I'm going to talk about
the Swift UI series measuring
app performance in Swift. How to
Change fifth to iPhone size, how
to style swift UI text font
divider is swift why everything
you need to know on iOS
application architecture. Quick
Guide on toolbars in Swift UI,
binary targets in modern swift
packages, how to let users
select File from files. Make
Swift Playgrounds for apps first
steps, a flexible way to handle
and alert errors in Swift UI
playing with Swift UI
implementing a customizable and
animatable circle to checkmark
view, how to start iOS
development career the five step
plan modeling errors in Swift
UI, log into websites with as
web authentication Session
Library Content Provider in
Xcode, and Beginner's Guide to
praktisch. And Beginner's Guide
to Swift package manager command
plugins. That's a lot of
articles I'm going to talk about
this week. And there's a reason
if you follow my podcasts, you
will have noticed that I sort of
skipped an episode last week.
And it has to do with me losing
my voice over the last couple of
weeks. So doing an audio and
voice based content format and
losing your voice is kind of
horrible. So yeah, I needed to
take care of that by just giving
my voice a little bit of time to
relax. But fortunately, I had
some content already scheduled
or not, I should not say
scheduled, but it had some
contents already ready to go.
And I was able to publish
something last week. So yeah,
sorry about that for for
skipping a week. But I'm back
again. And I'm still really
trying to figure out how I want
to continue my podcast. So to do
the things I really like about
my podcast and make sure that
this manageable, but all the
other engagements and things I
have going on right now. Because
especially with in person events
happening again, it's just a
whole lot of time and effort
that I need to put into those
kinds of things. And then trying
to find some quiet time to do a
podcast recording can be really
hard, right? So hanging in
there, making sure that I get
things done and making sure that
everything keeps on going. Also
during WWDC, the CO Gatson l
will have a meetup event on the
Monday evening, because the WWDC
keynote is on a Monday evening
in Europe. And it is a national
holiday in the Netherlands. So
I'm curious to see how many
people will actually show up. On
top of that, the week after
there will be a cokehead sinau
meetup in Amsterdam, at the
office of stream my employer and
which stream we are really
looking into creating a whole
lot of contents before during
and after the WWDC week just to
see how we can can can get
started with all the new
technologies that Apple is sure
to announce. A very neat little
detail is that a colleague of
mine is actually traveling to
the Apple campus. He's got an
invite for the for the in person
keynote viewing party at at
Apple, so very much looking
forward to his pictures and his
experience and his reports on
anything that happened there. On
the private front, so with my
kids and my family, my kids are
doing okay. Lisa is very eager
to start at a new school after
the summer holiday. Still a
couple months out. But yeah, we
got we got a handle on it. And
she's now also convinced that
she can get through it and make
sure that she enjoys her last
couple of months at her current
school as much as possible. So
focus on the positive and make
sure that you don't get bogged
down by the negative really. So
that's very interesting to see
that you can see the immediate
effect if you coach a little
girl a little bit on that.
Demo, son, he's just as happy
little happy camper, enjoying
school, going there enjoying all
the things that he's been doing,
and especially going outside to
like amusement parks and, and
museums and stuff like that.
Just going into a city is
already a day trip for him
because, of course he grew up
for two years during COVID When
there was a lot less things you
could do outside, but now he's
getting outside he's getting
with people again. And it's it's
it's mind opening for him. It's
so fun to watch. So, yeah,
everything going well there. So
much stuff to go through. So
let's start at the first one.
The cool initiative that God
Brandon is doing the Swift UI
series, it's going to be a week
long event to learn, compete and
socialize in the world of Swift
UI, participate in five
different events and show your
skills to the world. The fun bit
is that Amis my colleague, he
will be one of the judges for
the animations track. But also
if you look at the other people
participating as judges, you got
turned to Allegoria Sarah
rifled, Christian select
Mallinson Berg, bus Brook,
Florida in Sweitzer. And even
more people still to be
announced. So this is going to
be super cool, and probably
going to be driving a lot of
engagement. So if you want to do
some fun, informal competitive
things with 50 wide, definitely
check out swift UI series.com.
It's something that I
wholeheartedly recommend people
to look at. So first article of
this week is by Majeed,
measuring app performance in
Swift. So the unified logging
system is a great way to build a
proper logging system allow you
to understand different
exceptional cases happening in
your app, right. But it's not
just limited to logging, it also
provides a way to measure
various events in your app. This
week, Machida writes about how
you can use the unified logging
system to measure app
performance. And this is about
feature of introducing fence
posts in your in your OS logging
statements. And this allows you
to really, at the start of
networking, for example, put a
post, do the work, make another
signpost and then you get really
clear measurements between these
two, between these two moments
in time. So that allows you to
really see where your app is
spending its time where it's
waiting, where it's taking a
long time to just get through
some work. So this is a bit like
profiling. But by annotating
certain hot spots within your
code, you get a much better
grasp of what's actually
happening in your code. And also
instruments is a very important
tool to inspect what these what
these signposts can tell you
within your codebase. So
definitely check this out.
Always lock and signposts
definitely a worthwhile thing to
upgrade the performance in your
apps, then I have like three
articles by certain W, because I
don't know what he is doing. But
he just keeps on producing great
content. So I'm just going to
put all three links in there.
And I will just recommend you to
follow Swift's content by
saloon. So the first article is
how to change swift UI font
size. The second one is how to
style swift UI text fonts. And
the third one is how to
introduce a divider in Swift UI.
So that swift UI divider is like
this horizontal line that you
can put between content so that
you get like a sort of a
separation between content. And
there are some details involved
there that's very interesting to
look at. And the other two
articles is about dealing with
fonts in Swift UI. And yeah, if
you dive into the world of fonts
on iOS, it's you think it's
simple, but then you start
looking and then a whole new
world opens up for you with all
kinds of things that you can do
with fonts on iOS. So definitely
worthwhile to keep a close eye
on the content that Susan W
produces. The next article is by
Thomas required on iOS
applications architecture. He's
seen countless tweets and
stories lately about iOS app
architecture. And he's been a
huge fan of trying new
architecture on iOS. And in the
past, he has been working with
Redux and TCA like architectures
because he believes
unidirectional data flow is the
only way to have a good and
robust code base. So close,
that's probably a product that
you've worked on is built using
Redux. And he's been building
various open source applications
like movies like UI using Redux,
like and light architecture for
swift UI. But with his recent
work on a medium app, and some
other open source projects, he's
come to a couple of
realizations. So swift UI only
allows you to make very powerful
self contained system with very
limited amounts of code. And
swift UI offers a very clean
data flow. It's built in and
simple to understand. And he
doesn't really want to add
boilerplate about Swift UI
anymore, because it's tedious,
and it's most time unnecessary,
and it creates unnecessary
friction when onboarding new
engineers on the team, and he
thinks you can achieve very
clean architecture both testable
and maintainable with clean and
bare bones MVVM.
So it's some reflections on on
what architecture means within
swift UI. According to Thomas,
it was very insightful and
especially the have the links
that he provides to some WWDC
videos are very helpful and very
much a worthwhile read, to just
have to look at and to think a
bit more about the architectures
that you're introducing and
using in your apps. So, next
article is by Natasha for de for
quick guide to Toolbars. In
Swift UI, it's an article that
will learn you how to add a
toolbar item to the bottom bar
in the navigation bar above the
keyboard and a modal fuse with
Swift UI. So very quick overview
of what toolbars are within iOS
in the context of Swift UI. And
then Natasha will go into some
details on how to add these
toolbars to your codebase. It's
actually one of the longer
articles that Natasha has
recently put on our blog, very
much worthwhile overview to see
what toolbars are and how you
can use them in Swift UI. Then,
there is an article by pull
binary targets in modern swift
packages. So swift packages are
becoming more and more important
in iOS and Mac OS development.
And Apple has been pushing hard
to bridge the gaps and fix the
issues that were preventing
developers from moving their
libraries and dependencies over
to Swift package manager from
other dependency managers, such
as Carthage and CocoaPods. This
was a deal breaker for any
libraries that relied on some
cogeneration such as protocol
swift yet. But now, you can
actually get around this with
Swift package manager. And Paul
is here to explain in this
article, how you can work with
binary targets in modern
software packages. So this means
that you can actually create
compiled binaries, and then
package up package those in
Swift package manager. And this
used to be a problem because
Swift package manager was
strictly source code based. So
what's the cool thing about is,
you can now have a couple of new
things that you can do with
Swift package manager new use
cases that you can support, it's
a bit of a technical article, or
going over the details of
packaging up your code into
binary format, and how to
distribute it to your end users
or actually, your library users.
But I think it's well worth the
read to just get some insight in
the details that are related to
dealing with Swift packages.
Then we have an article by
Philip nemecheck. How to let
users select a file from files.
It's a quick look at the UI
document picker view controller
to access the files app. iOS
lets you apart from importing
media from the photo library
also import either iCloud or
local files from the files app.
In this post, Philip, we'll look
at how you can actually
accomplish this. Not much more
to tell there. It's a nice
overview, some screenshots and
how you can use the UI document
picker view controller to get
your hands on some files that
the end user is hosting either
on their personal iCloud
accounts or on the files app on
their device. Next up, is an
article by Steven Lipton makes
Swift Playgrounds for apps first
steps, it's basically an
overview of the experience that
Steven had with Swift
Playgrounds in developing an
app. And to just see how well it
works. So his experience is very
interesting to see. And it's a
good showcase to learn a little
bit more about what swift UI
playgrounds can do for you for
app development. So very fun
read. It's not a platform that
I'm going to be using soon, I
think. But I do think there's
some potential here for lowering
the barrier of entry for iOS
development for software
developers, which is always
great, right? So Daniel C, there
wrote an article called a
flexible way to handle and alert
errors in Swift UI. In his
posts, Daniel will take a look
at the how to handle async
errors in a flexible and
scalable way in Swift UI. He
will cover a completion block
and async await based use case.
So in this post, he will create
an observable, he will create an
observable alert context that
can be passed around in an app
to present alerts from anywhere
using the single view binding
will then create a error alert,
convertible protocol that can be
implemented by any error that
can end it can generate an
alert, and an error alert
protocol that provides
convenience functionality to any
view that has an alert context
instance. So although the post
contains a lot of text, the
total amount of final code is
actually not that much. And you
can have a look at that code
in Swift UI kit, and use them in
your own apps if you want for
those of you who are interested
in how everything works with
this neat way to deal with
errors in an asynchronous
environment. You definitely
should read this, this article
because if you do these
practices that Daniels ADA
recommends, then your error
handling, you will you will be
able to just take out a whole
lot of these appear admits of
asynchronous in your code, you
know, the completion block based
callback stuff, you can make all
of that go away by using async
await, which is awesome. Playing
with Swift UI implementing a
customizable and animatable,
circle checkmark view this is an
article that's written by I have
to scroll for this one at the
bottom of the page. And I can't
find really let's check the
about page of this blog. Yeah,
it's actually the blog by
Gabriel Theodoropoulos, I should
have known playing with Swift,
you are implementing
customizable, and animatable.
Circles, checkmark, few, it's a
very nice overview of creating a
circle checkmark view in Swift
UI using only codes. And there's
some nice tweaking going on. And
you can just have a look at this
article. And it's a nice
overview of the steps that you
can take with Swift UI to get
something looking good. And
that's also animatable. So yeah,
there's not much to tell about
this nice visual results that
you will end up with, and a good
overview of how you can create
these customized components
yourself. So thanks for that
theater. And next article is by
Leonardo Glacia. He also
recently wrote a piece on the
stream block, it's a nice piece
that you can provide to anybody
looking into getting into iOS
development. So the title of the
article is how to start iOS
development career, the five
steps plan. So this article is a
bit of a meta programming
article. So it's something you
can share with people looking
into starting iOS development.
And I think is good to have to
be aware of this article,
because it's a very common
question that you run into.
So you notice five steps are
very simple. First, learn Swift
language. Second, learn how to
build user interfaces. Third,
Learn Common iOS programming
features, four, learn how to
programmatically test your code,
and five learns from
architecture and iOS project
tools. So it is, of course, a
very quick overview. But I think
all of these five items, if
you're an iOS developer,
yourself, and somebody comes at
you with this question, how do I
start iOS development, you can
take them through these five
steps, and just assess with them
where they are on the on their
journey, and just give some more
specific and helpful pointers to
this specific individual. And
also, it's very nice that you
can tell them, once they've
reached a milestone, what's next
after that, right. Biggest
important thing that works for
learning a new skill is to have
people available that also work
with the skill. And second of
all, that you are, in fact
learning in a style that suits
your character. But the thing
with learning stuff, it just
takes work. So you have to spend
the time and you have to learn
new skills. And then there is
another article by swift with
Majid modeling errors in Swift.
And this is a precursor of the
previous article that I shared,
the measuring app performs in OS
log, I think, no, it's not.
It's, it's how you can actually
model errors in Swift. And I
think it's really nice, in the
sense that it gives you an
overview of how you can create
your custom errors for your
situation. So that allows you to
get more meaningful errors from
your codebase. So that if an
error gets thrown, you have an
easier time debugging the source
and the cause of this error. And
the next article is by RIA
development, not sure who's
behind that. But I did like the
article, because it's about as
web authentication session and
how you can use that to login to
a surface within your app. And
it's a nice overview of what it
takes to actually get an OAuth
authentication going within your
codebase. So definitely have a
look at this bit to see how as
web authentication sessions
work, and the next one is by
Thomas father, it's called
library content provider in
Xcode, I have to try this
myself. But the library content
provider protocol in Xcode is a
way for adding custom views and
view modifiers to the Xcode
library, which enables drag and
drop. When using Swift UI
preview. Xcode automatically
looks for types implementing the
protocol and then adds items to
the library, it takes so little
code that would make sense to do
it if you are using the library
for building views. So it's a
nice example of how you can use
the library content provider to
get an easier time drag and
dropping your Swift UI user
interface hierarchies together,
and then the final article of
this week and I'm starting to
feel my voice again. Beginner's
Guide to Swift package manager
command plugins learn how to
create command plugins for the
Swift package manager to execute
custom actions. using Swift
package manager and other tools,
it's an article by Deborah
Bowditch, and it's one of his
typical articles, again, quite
long, quite in depth, and very
useful. So he introduces what
Swift package manager plugins
are, and what they can do for
you, when using shift package
manager and what convenience
they can actually provide, if
something is not supported out
of the box, because you can very
easily extend the behavior of
Swift package manager by
creating your own plugin and
getting things started that way.
Yeah, it's a good overview of
what you can do to extend Swift
package manager. And I think
there's a lot of potential with
these kinds of API's on the
tools provided by Apple because
it allows software developers in
the field to actually create and
add the functionality that they
need to their tool sets. And
also to be able to share these
new features to the tool sets
easily with the world. So
learning about command plugins
should be fun. But as Tebow
indicates, it can be a bit
annoying, because the
development experience of these
plugins is not great yet. But in
summary, it's it's just the
beginning, right? So something
new within Swift package
manager. It's just like async,
await and actors. It's an
addition to the Swift language.
And the feature itself is there.
It's mostly ready to go. But not
many developers are using it yet
on a daily basis. So there's
very little experience and
documentation available online,
on how to actually correctly do
these things. So that's the
whole slew of articles I wanted
to share with you this week. I
will also make sure to put all
these in my show notes so that
you can have an easy time
clicking them and getting to
them. And it will also make sure
to share some links to the
program's meetups that I
mentioned. And above all, the
Swift UI series.com website,
which I think you should
definitely check out. So a lot
more stuff happening in the
coming weeks. We're approaching
WWDC, and I'm already reaching
out to some people online and
being contacted by people who
learned to do some fun things
around the WWDC a week, so I
hope to be able to share a lot
more with you in the coming
weeks and hope to talk to you
again next week. Bye now.