Read the transcript
Jeroen Leenarts: Hi, and welcome
to the 46th episode of my
podcast. My name is Leenarts.
And I've been developing
software for over 90 years
developing iOS apps for over
nine years, and I'm running the
Dutch Cocottes. for over eight
years. If you are an iOS app
developer, you should listen to
my podcast because it will keep
you updated on interesting
articles conference and events
you might not have heard about.
In this episode, I'm going to
talk about building dynamic
lists in Swift UI, using Swift
async await to build an image
loader. Few masking in Swift UI,
pass through subject versus
current value subject explained,
preventing data races using
actors in Swift, Swift regrets,
and an S pain, remote edition
2021.
work we've been using twist.io.
This is a sort of a swift based
command line utility that allows
you to generate Xcode projects
and workspaces based on the
Swift metadata format. So you
can define your products and
your frameworks in some Swift
code. And then you can generate
out your Xcode projects with all
your files in there. It's really
cool. I did a presentation on it
before for Coca Hudsonville. And
soon I will be doing an online
presentation in Dutch,
unfortunately, on this very
topic, which is like, sort of
like a quick overview of why
we've been using to install SEO.
So I'm now working on creating
those slides and making sure
that I have a 20 minute talk,
which is not very long. And just
for the heck of it, because I'm
now creating the talk. I also
submitted a CFP with basically
the same talk to enter Spain,
which is a great conference
based in in Spain. But this
year, again, they're doing a
remote addition. So big shout
out to them. And they have their
early bird ticket sale available
right now. So for 200 euros, you
can get access to all their
content, which is 36 hours of
talks and presentations and
defense, which in my mind, it's
it's really a steal, I was
unable to attend last year's
edition. But from what I've
heard, it's it's been a great
event. And I'm wishing to
organize this best of luck
putting this thing together, and
Spain remote edition 2021 will
be available and online ads
November 18, and 19th 2021. And
ticket sales is now open. You
can also enter their call for
papers till October 4. Now let's
get started with the articles of
this week. The first article is
by Peter freezer building
dynamic list in Swift UI, the
ultimate guide to switch wire
lists use part two. This is the
second article that Peter has
written on using dynamic lists
in Swift UI. And it's a good
article that gives a good
overview. It's quite long,
actually, on how you can display
lists of elements and how you
can use list binding to modify
list items. So as you go and
asynchronous fetching of data.
So all in all, this article
gives you quite the cool
overview. Obviously, Peter will
tie it in to the Firebase
offering because he's the
developer advocate of the
platform. So you also learn
something about Firebase. But
even then, it's still a good
overview how you can integrate
with the backend API, and make
sure that it's being displayed
on screen. So have a look at his
article and, and see if you can
learn something about dynamic
lists in Swift UI. The next
article is by Donnie Walsh. And
it's one of his typical articles
again, using Swift's async await
to build an image loader. async
await will be the de facto way
of doing asynchronous
programming, iOS 15 and above.
And hopefully, it's going to be
back ported to earlier versions
of Iris who knows, Donnie has
already written quite a bit
about the new Swift concurrency
features. And there's still
plenty to write about. He says,
In this post, Donnie is going to
take a look at building an
asynchronous image loader that
has support for caching.
Basically, what Donnie is doing
is rebuilding a component that
is available in iOS 15. But by
rebuilding it, you really get a
look behind the scenes of how
such components could work. And
it's a thorough overview of how
you can load images from the
network and display them in the
UI in an asynchronous fashion
without causing all kinds of
race conditions or other
asynchronous related issues. So
definitely worth the read.
Because you will learn a lot
about async await image loading,
caching, things like that, that
most often can be handled by
tools or utilities or frameworks
that you get elsewhere. But it's
good to know how things could
work on the hoods, because it
just allows you to imagine if
there's ever an issue, what
could be the cause of the
problem? The third article I
mentioned is by Federico, and
it's a continuation of an
article that I mentioned last
week. This time the article is
called View masking in Swift UI
in his previous article in view
clipping in Swift UI, Federico
has explored all the ways you
can apply clipping masks to
fuse. While it's a powerful
technique. Clipping has two
significant limitations, it
requires shapes as masks, the
content is either masked or not,
there is no gray area. So what
Federico will do is explore
swift UI masking beyond
clipping, it's a it's a very
good continuation of his initial
article. And because it's such a
good continuation, I wanted to
include it in this episode
again, because even if it's
still the same article series,
just so worthwhile to just have
a look at this and just see what
Federico has written on this
topic. It's it's a true
continuation on the previous
article. So definitely read that
first and then dive into this
article. But it is linked from
this article at the top of the
article. So no worries there.
The biggest difference, what you
will learn compared to the
previous article is that you can
also play with transparency now
a little bit. So that allows you
to mix two images together with
some opacity, and just get very
nice and cool effects on your
user interface that you can use
to approach a difficult design
that one of your UX designers
might have delivered to you. The
next article is by Antoine
finally, I hope he's enjoying
his vacation, or maybe he's back
already, but he's been to the
audience. And he's been posting
pretty pictures of his dog and
his walks in nature. So Antoine,
I hope you had a good one. And
the article that he published
hit home with me personally,
because I really asked myself
What the heck is the difference
between the pass through subject
versus the current fellow
subjects on Tron goes into depth
about this very topic, and in
his article, he explains what
the difference is between a pass
through subject for recurrent
valleys subjects. In his article
Antoine goes into some depth
explaining these two subjects,
but he hits home with a very
nice analogy, right at the end
of his article, a pass through
subject is like a doorbell push
button. When somebody rings the
bell, you're only notified when
you are at home on the opposite
end is a current Valley subject.
It's like a light switch. When a
light is turned on while you're
away, you'll still notice it was
turned on when you get back
home. So that's a very easy way
to understand and remember what
the difference is between a pass
through subject and the current
value subjects. read the entire
article on Antoine's blog. Lee
has an article called preventing
data races using actors in Swift
data races the worst nightmare
of all developers, they are hard
to detect very unpredictable and
extremely difficult to fix.
Apple has given developers
various tool sets, such as NS
lock and serial cues to prevent
data races from happening during
runtime. However, none of them
are capable of catching race
conditions during compile time.
With release of Swift 5.5. This
will no longer be the case,
introducing actor to new Swift
language features that can help
developers to catch any possible
race conditions during
development time. In this
article, Lee will first look at
how data races occur when using
dispatch queues and asynchronous
tasks. And after that, he will
look at how actors can help you
identify race conditions in your
code and prevent them from
happening once and for all. I
really love it when an article
has a great introduction.
Thanks, Lee. Read this article.
It's awesome.
And the final article of this
week is a bit different. It's
written by Jordan rose. And for
a past year for the for the last
few weeks, he's been writing
Twitter threads on Swift regrets
things he wished he'd done
differently early on in Swift
development. He's been doing
them on Twitter rather than as
blog posts because of his RSI
shortform. On his phone. Short
Form on his phone is easier than
long form at keyboards. When he
spent so much time it's keyword
already for work, but he is
mirroring them on his block.
Jordan worked on Swift at Apple
from pre release to to Swift
5.1. And he's at least partly
responsible for many things
people like about Swift, and
also many things people hate
about Swift. This list is
something he started collecting
around when he left Apple, and
he's putting them up so other
language designers can learn
from these mistakes. These are
all things that would be hard to
change in Swift today because
they'd break tons of people's
code. All in all, Jordan has
created a nice inside look into
the mind of one of the people
involved with the Swift language
development. You don't have to
agree with everything that he
says it's just part of his view
on how things have happened. So
read them in open minds and just
have some fun learn from them.
And maybe it provokes some deep
thoughts within yourself as
well. And I hope Jordans artist
It gets better. And those were
the articles for this week. So
let's quickly move on to Danny's
Monday morning tweets. Let's
see, he had quite a number of
replies on it this time around.
So I'm just scrolling through
them a little bit and just see
what we got here. So let's get
started. Peter Freeza reports on
another part four of his series
about building reusable swift UI
components. It's something that
he publishes on YouTube. Great
stuff. Really. Daniel Steinberg
is teaching a swift UI workshop
Friday remotely to a group in
London, and he'll be updating
his material this week. So he
says he updates his material
every time he teaches it. He's
also rereading some information
on core data. And he's
considering adding CD to a music
app he's playing with limited
DFS is finishing the building of
the watch app for a bluebird
app. And it's now in beta
testing, bluebird components
focus timer with time management
offering a joyful and stress
free experience for study and
work. He's planning on launching
it right after the iOS 15
release. Ben Nolan is just
waiting for the GM to drop so he
can submit his work. Daniel
spent basically the whole
weekend on telemetry decks
surface performance, which seems
to be paying big dividends right
now. So he must have been able
to improve some performance
aspects there. And Vincenz is is
preparing his credit card
balance to spend some money
after tomorrow's keynote. So
best way she staff incense and
those videos seem to be doing
all right for you. Then Eamon is
doing the final work on is
finally have to do something on
the App Store project besides
the ACT timer app, and he's
finally wrapping the project up
instead of letting it die on 95%
completion. Luigi Dion is
creating tons of content as
usual. I don't know how you can
keep up this pace, Leo. It's
amazing. Just keep keep at it. I
love your stuff. Below is a
Kanban board interesting Twitter
handle. This morning, he or she
reported hate speech on Facebook
and they actually deleted it. So
he or she considers that to be
his work or her work for the
week done. Attila is saying
Happy Monday, he's trying to
catch up with a few things at
work. And he's working on the
contents of his workshop on
smashing neck. And he's having a
nice cold brew coffee. He also
included a nice picture of a
glass send he is mentioning that
her mentor recently told her
that he thinks she is ready to
move on to medium level
functions and challenges. So
she'll be working on those this
week. She's a bit nervous and
excited. But don't worry, Sandy,
you'll probably just be fine. If
you have a good mentor day, they
know what you can take. And they
will make sure that you have to
walk on your toes a little bit.
But stretching only gets you
higher and makes you do better.
So best wishes to you. And an
interesting one is nd eveness.
He's been working on his
workshop presentation this
upcoming Friday for try swift
world. And he was able to do a
test run with a few colleagues
so he could get your input on
the presentation format. So he's
really preparing his stuff for
try swift world. Best wishes and
best luck to Andy. And that's it
for this week. If you want to
support my podcast or just drop
me a tip, have a look at pod dot
fan slash app Force One. If you
have any feedback just message
me or DM me on Twitter at app
Force One. So you can pretty
much find me with App force one
everywhere. So enjoy your week
and I will talk to you again
next week.