Read the transcript
Jeroen Leenarts: Hi, and welcome
to the 19th episode of my
podcast. My name is Leenarts and
I've been developing software
for over 18 years developing iOS
app for over nine years and I'm
running the Dutch coke has for
over seven years. If you're an
iOS app developer, you should
listen to podcast because it
will keep you updated on
interesting articles,
conferences and events you might
not have heard about otherwise.
In this episode I'm going to
talk about using compositional
collects a few layouts in iOS 13
deep dive into CF run loop, URL
session configuration Quick
Guide phantom types in Swift, D
flaking CI tests with XC
results, option set in Swift
coaching for free. An update on
Sam's progress finding an iOS
development job and Danny's
Monday morning tweets. It's a
busy week actually, I have six
recordings planned this week,
the team Alan, Sam, Charlie,
Jeremy, and Merlin will all be
recorded this week. It's now
again late at night here in the
Netherlands and recording the
19th episode. But I'm having a
lot of fun actually today, while
I'm working, my daughter is off
from school. It's a holiday week
this week. And I must say the
fire is completely different at
home. There's no pressure, no
homeschooling just a few kids
having fun and enjoying
themselves and doing fun,
leisurely activities the entire
day. And of course, my wife has
been supporting them and me
these days, the home remodeling
as I might have told already has
been postponed by two weeks. So
really coming down here
arranging all the stuff,
choosing some materials and just
getting ready for the complete
mayhem that will be starting for
a duration of six weeks. And
otherwise, it's just yeah,
keeping busy doing a lot of
great stuff at my job today. I
was actually working on ripping
out an entire network stack
today and replacing it with a
new one. Something magically
actually happened. Last week, my
daughter actually got home from
school and she was tired at the
end of the day. How nice is
that. So change and help her
work at school with the help
with the teachers seems to have
worked out for one week now. So
let's hope they can keep at it
and that my daughter actually
starts enjoying school more. But
I also want to get into my bed
at a reasonable hour. So let's
dive in. Daniel also has a nice
write up on compositional
collection few layouts in iOS
13. And I must say it's a nice
contrast to what Philip Nemecek
has done. What I like about
Danny's article is that he goes
into a little bit more detail on
using a grid like layout in your
UI collection view and why and
how you can actually achieve
this, and how you can with basic
building blocks create a layout
that actually looks quite
dynamic. So definitely have a
look at this article. But Dani
and also have a look back at the
articles by Philip Nemecek. And,
and see how these articles stack
up against each other. Su
actually has a very interesting
article on CF run loops, it's
called dive into CF run loop. A
run loop is part of the
fundamental infrastructure
associated with threats or run a
business event processing loop
that you use to schedule work
and coordinate the receipt of
incoming events. The purpose of
a run loop is to keep your
thread busy when there is work
to do and push try to sleep when
there is none. A CF run loop
monitor sources of input to a
task and dispatches control when
they become ready for
processing. So basically, it's
one of the core building blocks
of iOS and Mac apps. And no one
want to run loop is within the
iOS and Mac ecosystem is
actually very helpful to come to
grips with how threading and
eventing and scheduling of work
is actually done on a device. So
have a look at this article.
It's quite a long article, but
it's really really good. Keith
Harrison over at use your loaf
as an overview of the URL
session configuration. If you
are relying on URL session
configuration for your network
request, you might want to check
out his articles to see what the
defaults of a URL session
configuration are, and allow you
to decide whether or not those
are right for your application.
What Keith does is actually go
over URL session and its
configuration and see what the
default settings are and what
the implications are for your
code. Majeed has a nice write up
on phantom types and Swift's
offensive type is a generic type
that is declared but never used
inside type bird is declared it
is usually used as a generic
constraint to build a more type
safe and robust API.
In this article, Matisse
actually takes a look at what
phantom types are and show some
convenient examples of why you
would actually want to use a
phantom type. So I've read this
article and improve eco
tomorrow. And he talks about
option sets in Swift, like its
name implies and options that
gives you a clue Both options,
these options are predefined.
And when you use them in your
code, you cannot choose any
other option than the set that
has been given. Apple is
actually using option sets
throughout their API's. And it's
actually quite interesting to
actually work with these in this
article and describes what
options sets are and how I can
use them and how I can create
them. Very convenient and very
important language feature of
Swift, over a pspdfkit, they
have a lot of experience with
running their code through a CI
setup. One of the challenges you
will run into when running
continuous integration is that
your tests can become flaky. In
this article by Matteo Bukowski,
they actually explain how they
do their CI testing and how they
can actually try and detect
flaky CI tests and how you can
actually dislike those CI tests.
The biggest challenge is always
with having a stable local
production on your developer
machine, so that you can
actually see the problem in
action. In this article, they
describe a number of tools and
techniques that you can use to
actually have a solid
reproduction on your local
machine, so that you can
actually try and have a better
chance of debugging these
issues. Earlier today, I had a
coaching session with Sam again.
And what now follows is somewhat
of a recap of everything that we
talked about. And this is a
general update on the states of
Sam's search for a job. So hi,
Sam, how's your day today?
Unknown: That's going pretty
well.
Jeroen Leenarts: Cool. Yeah, I
heard you did your first like
real tech interview recently.
And, in general, how did that
go?
Unknown: I would say it went
really well. Not in that. I
think, from my perspective, I
think I did a pretty, I did a
pretty good job in the
interview. But that's not why I
say went really well. I say that
because it was a really good
learning experience.
Jeroen Leenarts: So what were
the biggest things that you
could take away from this first
experience?
Unknown: Probably the first
biggest takeaway was I learned
what to do? Or how to respond if
you don't know the answer to a
question. Or if you don't know
quite how to answer it. If you
have an idea, you can definitely
still attempt to answer the
question and try to go about it
logically and kind of analyze it
and try to break it down into
smaller parts and approach it
that way. And if you simply just
don't know the answer, you can
describe how you would go about
solving, solving it from a point
of no knowledge.
Jeroen Leenarts: Okay, and were
you nervous beforehand, or
Unknown: I was a little nervous,
but I was frankly, more nervous
before my first interview. And I
learned from my my first
interview, which wasn't
technical, that every interview
is just more experience. And
that helped me kind of changed
my mindset and coming into this
interview. It it just better
prepared me. And it felt more
like just a conversation. Yeah,
that's how it felt.
Jeroen Leenarts: So are the
people that we're doing the
interview at? Did you see any of
them? In the first interview as
well? Or?
Unknown: Yes, it was, it was the
same people. So we were
definitely yeah. It was the same
two people.
Jeroen Leenarts: So would you
say that? In hindsight, it was
an enjoyable experience, even
though there was of course, some
pressure.
Unknown: I would say it was
enjoyable. Overall, there was a
there's a few points where I
probably had a few beads of
sweat going I was, I was like,
Oh, crap, what do I do now? But
in hindsight, I mean, although
it wasn't enjoyable in the
moment, looking, looking back,
the entire thing was enjoyable,
because I learned so much, and
I'm ready to apply what I learnt
going forward.
Jeroen Leenarts: Okay, and
anything that you would do
different if you had another
shot at the same conversation
Unknown: there. I mean, there's
a lot of things I would do
differently. It was my it was my
first one. So it was a really
good gauge to see where I'm at
right now. As from a technical
standpoint, my technical skill
level, and also just my ability
to explain my understanding of
concepts. So, it was it was
really useful.
Jeroen Leenarts: So you
mentioned that in the interview
that you had that you In
hindsight, that you can still
work a bit on despite that,
you're able to keep your
composure be able to have like a
better response in the
situations that you don't know
the actual answer from the top
of your head, or that you
actually have to spend some
effort to actually come up with
an answer to the questions
that's being asked. So what is
the biggest challenge that you
then run into? When you get this
question that you don't know the
answer to?
Unknown: I would say the biggest
challenge is maintaining that
composure that you would have
that you would hold well, in
general, two, to two questions
that you do know the answer to,
because the first thought that
comes to your mind is like, Oh,
no. Yeah.
Jeroen Leenarts: So am I
sweating? Yeah, am I sweating?
And
Unknown: then it all like, the
attention is on you, of course.
So it's just just taking a deep
breath? And if you need to take
a step back, and just take a
moment to think and analyze it,
and come up with your own
answer.
Jeroen Leenarts: So but you do
say that, probably this actually
happened during the second
interview that you had? So what
did you do in this case, when
the question was asked that you
did not know the answer to what
was your response? And what was
your behavior in that moment?
Unknown: In that moment? I did.
I was like, I literally was
like, and then I kind of looked
away for a second. And I
thought, hard to see if I, you
know, did have anything floating
around in my brain? Which I
didn't. Okay. And after that, I
was like, okay, maybe I can find
an answer. Practically. I had a
code base open. So I open so I
started typing a line of code to
see if I could find, you know,
the, the specific, you know,
function to do with auto layout
that they were asking about?
Yes. Although I was able to find
it later. I couldn't find it in
the moment. Because
Jeroen Leenarts: it's always
hard, like in the heat of the
moment to actually type the
right thing and have this moment
of inspiration to actually come
up with a good answer. Exactly.
But what could you have done
differently in in the situation
that you get a question that you
don't know the answer to? What
what what, what, what are the
options that you have available
in that situation? Of course,
you can stay quiet. Think about
it, that which is a perfectly
fine behavior. What are other
things that you could have done,
like in that moment to like,
either give yourself some more
time or to actually get some
more information from the person
doing the questioning?
Unknown: So I could have asked
for more clarification around
the question or asks, for a
specific example, or something
that would have better help my
understanding, but in this case,
I, like I knew exactly what they
were asking for. I just didn't
know the specific answer. You
know, from a swift perspective,
yeah. It was like a very
specific, you know, kind of
syntax question. So I off.
Right, when they asked me the
question, I, I think I could
have articulated that. I don't
know. And, and then maybe I
could have articulated, I'm
still going to attempt to answer
based on my knowledge that I do
have, and based on, you know,
logical deduction. And then what
I did do after, you know, I
realized I didn't know and then
I tried to find the answer in a
practical way, and I still
couldn't find it. I then
articulated that. Ay, ay, ay ay.
Then, like, went to the last
option. And I said, I don't
know. And I explained what I
what I would do if I came across
the situation when working on
projects and how I would find an
answer. Yeah. So I think I did
an okay doing that. But that was
like my last resort. Maybe I
could have done that first.
Jeroen Leenarts: So after the
interview, how long does it take
you to actually figure out the
correct answer? afterwards?
Unknown: Like five seconds. It's
annoying. Yeah, yeah, but that's
life. It's, uh, I wasn't, like
angry with myself or anything,
but I couldn't find the answer.
But um, it was sort of eye
opening to, you know, the kinds
of things that could happen
during an interview. And I know.
I mean, I learned from that
situation about how I could
answer better next time.
Jeroen Leenarts: Cool. Well,
we'll make sure to like, keep
ourselves updated with with
Sam's progress. And definitely
keep an eye on this Twitter
handle SAM code with a double m
in the middle, just to make it
easy. And when there are new
developments, I'll make sure to
retweet it. And we'll definitely
have some back on my podcast in
the future just to stay up to
date. And, of course, I will
keep on coaching Sam, because
the snippets in this episode are
actually just a few minutes of
like, almost an hour long
conversation that we had today.
So Sam, keep us updated. Okay,
of course.
Of course, it's Monday, or at
least, it was Monday, I'm
wrapping up my recording and
it's already past midnight. But
here's an overview of what
people are actually working on.
According to their response to
Donnie wall suite. Phillip
Nemecek is planning on launching
an API for iOS feats. Marco is
learning on how to deploy a
vapor app with a database to
Google Cloud using Docker for a
new side projects. The developer
is so busy this week is unable
to learn new things, working for
13 plus hours every day this
week. He's implementing
notification handle in one of
his projects, and he's probably
going to be fixing some bugs
too. Don't burn yourself out
man. A Christian because Rawski
is actually creating a new,
better build of his side project
radio app eater. He added iTunes
API support for artwork and easy
radio station search with radio
browser. Stewart Lynch has
actually released the 100th
Swift related video today on for
a journey that started a year
ago. Manas is dedicating the
next couple of weeks to normal
schoolwork, of course, but also
to deep dive into data
structures at found Swift, Swift
standard library and optimizing
collections. And seems she's
also practicing basic GitHub
usage. And Daniel James drunker
has released a major update in
his full native Stack Overflow
clients. It's called crew stack.
John Haney is getting better,
just a feedback on this new iOS
app. And as he's working on the
Mac version of the same app, and
then the watch version, and then
Apple TV version, Vita Yaqoob,
is finally updating his website
after months of delay. And Marco
Engelmann, is releasing a new
article about domain driven
design. So all know a lot of
people are actually working on
their own skills are publishing
new content, here and there a
new app or two. But it's really
interesting to see that after
the initial spirit of just
bringing out and creating new
stuff, people are now actually
more focused on gaining more
knowledge and improve their
development toolbox to actually
be able to pick up the next
Chairman's in the coming weeks.
So keep it up everybody. If you
have any feedback, please add
mention me on Twitter at app
Force One. Let me know what you
think. And most of all, keep on
working and keep on enjoying
this great community. And I will
talk to you next week.