Read the transcript
Jeroen Leenarts: Hi, and welcome
to the 15th episode already of
the app force one podcast. My
name is Shannon Leenarts. And
I've been developing software
for 18 years, and I've been
developing iOS apps for over
nine years. Also, I'm running
the Dutch cocoa has for over
seven years. If you are 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
otherwise. Also, I have my
coaching for free section with
Sam, this episode will be a bit
longer than you used to. But
that's because I have a big
section on coaching Sam, at the
end of my episode. Of course, I
will also have done these Monday
morning tweet. Last weekend. I
also meant to the iOS dev happy
hour for the second time, and I
will shortly discuss my
experiences there. But first,
this week's news identity pinic
how to configure sharp
certificates for your app.
traits of a good accessible iOS
app. app architecture basics in
Swift UI, part two swift UI
natural pattern ListView, a
table view equivalent in Swift
UI, accelerometer and gyroscope
examples in Swift, what you
should know about iOS unit
testing, and lazy four in Swift
explained with code examples. If
you have any feedback, please
reach out on Twitter at app
Force One. Apple has released an
article on identity pinning and
how you can configure server
certificates for your app. It's
an interesting overview on how
you can do certificate pinning
within your app and what the
drawbacks and advantages of
radar. What was interesting for
me was that you can actually do
some form of pinning with App
Transport Security declarations
in your info P list. So yes, you
heard that correctly, you can
pin a certificate just by
entering a value in your info
dot P list. Be careful when
you're doing certificate pinning
in your app, because the
drawbacks can be very
significant. Have a look at
Apple's article and you'll
definitely learn something new.
Danny defesa has written a nice
article on what the traits of a
good accessible iOS app are.
It's a great overview of why and
how you can do accessibility
within your app and pay special
attention to the artwork. I
really like it. So have a look
at his article and learn about
why you should make your app
accessible, then he has been a
guest in one of my interview
episodes a little under two
weeks ago, Matt Gallagher from
cocoa would love as released the
second part of his app
architecture basics in Swift UI
article. In this article, he
will discuss swift UI as natural
pattern. And it's a great
overview. If you want to have a
bit more insight into what
architecture actually drives
your standard swift UI
application. Definitely have a
look at this if you want to know
how swift UI fits in the whole
architecture world with model
view controller and Model View
ViewModel. And other approach
that you can take architecting
your iOS app. So Irun has
released the third part of his
article series building lists
and navigation in Swift UI. In
this article, he will explore a
list UI table equivalents in
Swift UI, he creates a nice
overview of what you can
actually do with a list in Swift
UI, how it compares to a UI
TableView what challenges you
might run into if you are coming
from UI Kit development. It's a
great overview and it's a nice
addition to his article theory.
Robert Pietta has an article on
accelerometer and gyroscope
examples in Swift. As we all
know, iOS devices come with
built in motion sensor
capabilities for detecting
changes in acceleration,
rotation and magnetic fields. In
his post, Robert presents
examples for reading
accelerometer, gyroscope and
magnetometer data using cm
motion manager in Swift. It's a
great article if you want to
look into these physics based
sensors available in any iOS
device. Christiane Crowley
provides a nice overview of why
you should do unit testing on
iOS. This article is called What
you should know about iOS unit
testing, but he provides a
convincing argument on why you
should actually be concerned
about unit testing your code
base and what benefits it will
actually bring you definitely
have a look at this article if
you want to be reminded on why
unit testing is important. And
if you're new to iOS
development, make sure to have a
look at this article because
unit testing is something that
you want to have in your skill
box available at any project in
any code base
on Tom formulae, or Antoine
vanderley, whichever you prefer.
This is exactly the type of
article that Antoine is very
good at explaining concepts
within the Swift language or
within the frameworks of iOS,
and making sure that you can
understand what the specifics
are by providing great code
examples. So if you want to
learn about what allays for is
in Swift, have a look at
Antoine's article and learn all
you need to know about lazy
variables in Swift. Now, let's
continue on so Donny was Monday
morning tweets. Philip Nemecek
has launched the iOS feats
project this week. He wants to
add a dark team and possibly
promoted a little bit Philip
describes that the site helps
bloggers find audiences and
audiences find new content. The
site aggregates over 400 blogs
and it's refreshed every few
hours. Philip will be super
happy if you check it out and
tell your developer friends
about iOS feats.com Rob Black is
taking the plunge on NS Fetch
Results Controller. Nick Ben
Porat is still working on the
thingy, and today is his
birthday. Happy birthday NIF
FASCO is working on implementing
a custom swift UI availability
calendar. He continues working
on the MVP iOS app. And on top
of that, he's publishing the
swiftly brief issue and blog
post. He's going to speaking in
a local podcast about whiteboard
interviews. Joe melotti, is
still trying to figure out
better xe test test names
without much third party code
count and Owen started the job
hunt after losing his towards
the end of 2020. Good luck on
finding a new job. Magnus did a
soft launch of flip Graham. And
he handed out a few free codes
during the iOS deaf happy hour.
I was actually in the chat with
Marcus and I received one of his
codes. It's an interesting app
display program. But I have to
dig more into it to be able to
tell you more about it. And that
brings us to the next. And that
brings us to the next part of my
episodes, which is iOS dev happy
hour. Last weekend, there was
another edition of this
phenomenon. And it's been the
second time that I attended. And
it's been another great
addition, I definitely recommend
any iOS developer out there to
have a look into iOS dev happy
hour, and join the next one when
available. Just search for the
hashtag on Twitter, iOS, deaf,
happy hour, all one word. It's
providing to be a great
community. And the people in
there are awesome. Also, a lot
of the names related to iOS deaf
happy hour will be future guests
on the episode. So keep an eye
out for my future episodes, and
get up to speed with iOS deaf
happy hour, highly recommended.
And this in turn brings us to
the final part of this episode.
And that's Sam. He is also a
participant of iOS dev happy
hour. Sam is a self taught iOS
developer who is working hard to
land his first paid job as an
iOS developer. Sam has been
receiving some coaching from me.
And he's actually a participant
of the What the heck hackathon.
And he was quite successful. So
have a listen to what Sam and I
discussed. I personally have my
fingers crossed for a successful
week for Sam. So hi, Sam, how
are you doing this week?
Sam McGarry: I'm doing great.
Jeroen Leenarts: I've actually
heard from you that there's
actually two big things that are
actually happening at this time.
One has already happened and one
is in the near future. And I
wanted to touch upon those two
things, because both of them are
great things that actually are
happening at the moment, the
first one that you participated
in a hackathon. And the second
is that you actually have your
first job interview. So how are
you feeling about that?
Sam McGarry: I'm feeling really
excited about the interview. In
particular, I've worked a really
long time getting my projects
together and studying and things
like that. So this is just
getting an interview by by
itself was like it was a huge
moment for me.
Jeroen Leenarts: Obviously,
there's no guarantees yet, but
you still have the experiences
of going on an interview for the
first time.
Sam McGarry: Yeah, that's,
that's why I'm looking forward
to it. No matter what happens,
Jeroen Leenarts: I think you can
only grow from this. So I
wouldn't fuss too much about it.
Of course, I can imagine that.
It's it's a big thing. And I
myself would get a little bit
nervous as well. But that's all
normal. So don't worry about you
being nervous. Let's dig into
the hackathon a bit first. And
then I think you have some
questions to prepare yourself
for your interview. We'll go
into that second. So the
hackathon, what happened there?
Sam McGarry: I met a few people
on Twitter, I met a guy named
Alex Silver, who teamed up with
first dance. And then I was
looking forward to two more
teammates, and I found a duo on
Twitter that were already teamed
up together as Rob black and an
idiom coats on Twitter. And we
all got together a few days
before the hackathon. And we
started brainstorming ideas. And
we we were really interested in
doing something with Apple's AR
kit and vision frameworks
Jeroen Leenarts: who organized
the hackathon syro
Sam McGarry: and ting and they
they got together and organized
it they announced that on
Twitter and there was about a
little over 45 participants. And
at the end there was I think in
total Around 16 people that were
involved in presenting there was
like, six or seven teams. And
then there was three or four
people who presented a solo
project. And so
Jeroen Leenarts: the the entire
hackathon basically was a
hashtag on Twitter, right?
Sam McGarry: Yes, yeah. Yeah,
that the hashtag started
naturally, as it does. So what's
the what? What's
Jeroen Leenarts: the Hashtag?
Sam McGarry: Hashtag? What's the
hack?
Jeroen Leenarts: What the heck,
okay, I have a little secret for
you actually, thing. And I have
been in contact after the
hackathon. And thing will be on
my podcast. sometime this year,
we're going to be recording most
likely in March. So hopefully,
by the end of April, there's a
nice interview with thing
available online. And maybe I
should ask if the other
organizer can also join in then.
But who knows? Let's see if he
listens to my podcast. So yeah,
as a hackathon on Twitter, you
basically saw it on Twitter, I
thought, like, hey, that's
interesting. And did you ask if
you could join a team? or did
somebody offer that you join
their team?
Sam McGarry: So the way they had
it set up as you joins as an
individual, and then later on,
if you ended up joining a team,
or you were already on a team,
you could inform them? So I, I
didn't know anybody doing it.
And I just I had joined as an
individual. So I, I made a tweet
myself saying, is anybody
interested? And in making team,
hashtag What the heck, you know,
do do what you have to do. And
Alex commented on that tweet,
and that's how we start talking.
Jeroen Leenarts: It's fun,
actually, because it's basically
what we talked about in my
previous episodes of my podcast,
you reaching out on a social
media platform, Twitter in this
case, and somebody else actually
reaching back and saying, Hey,
man, join our team. And we'll
have a blast and see where we'll
end up. Because I think you
ended up at quite a reasonable.
And result, I think, right?
Sam McGarry: Yeah, it was, it
was a, it was a really cool
result, our app that we made was
voted for. We got the award for
best products, that because
there was a there's a voting
system at the end, where
everybody can vote for five
distinct categories.
Jeroen Leenarts: It was a 24
hour. Hackathon, right? Yeah. If
you look at the end result, you
were part of a team of four
people, how big was your
contribution to the final
product?
Sam McGarry: Somewhere around 20
to 25%.
Jeroen Leenarts: So you're
basically your character weight
within the team, and were able
to contribute? And did you learn
a lot or
Sam McGarry: I learned so much.
I did not have a lot of
experience using gits with team
members. And we base our whole
project on GitHub. And we were
doing merge requests and pull
requests and making our own
branches to work on specific
things and, you know, committing
those changes and push it into
the repo. And I'd never done
that working on a team before.
And all the team members
honestly helped me out, like
learning the good stuff at
first. So that was really,
really useful. Because I know
that's, that's, I mean, it's
important to know that if you're
looking for developer positions,
Jeroen Leenarts: okay, so yeah,
that's basically the project
type teamwork that you had hands
on experience there. And by
putting yourself out there, you
actually had a lot of fun. You
created something that was
impressive, because otherwise
you wouldn't have won in this
category of Best Product. And
you learned a ton. So any
drawbacks?
Sam McGarry: Just that I was on
three hours of sleep, I think
that was the only drawback
coding for 19 hours straight
was, was really fun, and
especially being in a call with
my teammates for basically all
that time. We we got pretty
close, just, I mean, working on
the same problems for hours on
ends and just trying to get it
done by the deadline. But no
Dropbox it was, I learned a
bunch of frameworks as well, I
learned, I spent hours learning
how to train a machine learning
model for the hand gesture
recognition that we were trying
to implement in our application.
Yeah, just for
Jeroen Leenarts: reference, the
product that you created was
called AR deck. And it allows
you to control an RDC stream by
making hand gestures right?
Sam McGarry: Yeah, so it
connects with a streaming
program called OBS. You can set
up gestures in the application
to do specific actions in the
program. So you could assign
let's say, like the full hand
gesture, where you have your
five fingers extended to toggle
the volume For your stream, say
you wanted to lower by default,
just like lower the volume of
the stream to a certain level,
you could set that level and
then set that to the hand
gesture. And then when you do
that hand gesture that action
would perform. And then we also
supported some other actions
like changing the background
scene for your stream.
Jeroen Leenarts: It was a
confirmation of what we talked
about the previous time, just by
putting yourself out there, you
were able to get into a
situation that allowed you to
learn a lot, have a lot of fun,
create something worthwhile that
can actually be put on your
portfolio or your resume. And
you made new connections with
with like minded people. Is that
Is there anything on the next
hackathon or event that you
would do differently compared to
this first time,
Sam McGarry: we actually were
talking about this a little bit.
And my teammate, Alex actually
just wrote a blog post, kind of
chronicling the whole event,
step by step. And he also kind
of touched on the kind of like
lessons learned at the end, and
things we would have done
differently. So the planning,
overall, was was pretty good.
Like, we had a pretty good plan
for the UI and things like that.
But we didn't plan like how we
were going to use Git, and we
didn't plan out our
architecture. And we didn't plan
out. Like, we didn't quite
really test like the machine
learning thing, like creating
your own model from scratch. And
using something like that.
Because, for example, I took in,
in an attempt to make our own
model, because for the demo
version of the app, we actually
ended up using a model that was
that was online. That's what we
had to fall back on. But we
tried to make our own and I took
380 photographs of my own hands
trying to teach the model to
recognize six unique gestures.
And it likes two or three of the
gestures and the other ones, it
just it just did not recognize.
And we trained it several times.
Jeroen Leenarts: Yeah. But
still, it's, it's a meaningful
exercise. And you were able to,
to showcase the principal
mechanisms of the product that
you created with a team of four
people. So that's really good
results. The other thing that we
want to touch upon was you
actually having a job interview.
Now, we're not going to go into
too much detail, when and where.
But you did have some questions
on how you can prepare yourself
for this job interview? If I'm
correct, I hope our can answer
your questions that you have in
this regard.
Sam McGarry: These questions are
just kind of general
preparation, questions that have
been kind of bouncing around my
head? Because I mean, this is my
first interview. So some things
I want to clarify. So my first
question is, is it good to ask
for a copy of code from the
company to get an idea of what
I'd be working on? In my role?
Jeroen Leenarts: It That
depends? Because if you would be
interviewing for a company that
has that product, open source,
then yes, of course, you can ask
where it is. But with with
source code, if it's closed
source, maybe on principle, they
would be perfectly willing to
share it with you. But legally,
there are some obstacles there
because of course, it's source
code. And there can be a lot of
intellectual property in the
source code itself. Because one
of the things that if you get
hired, that you're bound to run
into is a nondisclosure
agreement. Of course, you can
ask, but I would expect that you
would get an answer. No, we
cannot share the source code.
But thank you for asking. So
that's a bit what you would run
into there.
Sam McGarry: What about, like a
take home project? Would that be
something I could ask for in the
interview is, do you have
something I could take home and
work on to show you what I'm
capable of doing in a code base?
Jeroen Leenarts: That depends a
bit on the interview process
with the company. Some companies
actually ask you, here's an
assignment, create some code
based off of this assignment,
and show us what you have done.
On the other hand, you already
have some of your own work
available online at GitHub. I
reckon that E AR deck app will
also be available on GitHub
publicly. And that's actually
good resources to to share with
prospective employers, because
their engineers can then once
you are through the first level
of selection, they can actually
look at stuff that you create it
and get a feel of what type of
software developer you are. So
basically, having some of your
own work available online that
people can look into that you
can point to is quite good. And
any software developer that
would look into your work would
actually take into account that
how recent the work has been.
Because if you know that
somebody has a short track
record in software development,
and you see the test some work
like a year ago and some work,
that's like two months ago, you
would, you would assign more
value to the more recent work,
because obviously, somebody
who's new to software
development has learned a lot in
a year time.
Sam McGarry: Cool. My next
question is kind of, it's a bit
more, it's, it's a bit more of a
simple question. But if I'm
asked something in an interview
that catches me off guard, how
should I respond?
Jeroen Leenarts: First of all,
don't worry too much about it.
Hard to do when you are actually
in the interview. If there's
something that catches you off
guard, for instance, you really
don't know, don't try searching
for an answer. Don't start
mumbling and just throwing
random stuff out there. You can
always ask like, I don't know
how I should answer this. Or
it's unclear to me what you're
trying to get to with the
question, can you please
elaborate a little bit? First of
all, the person interviewing
you, gives you some more detail
in what they're trying to get
from you. And second of all,
because they're talking and
you're listening, you can have
some more time in your own
minds, too, to process what
they're actually asking of you.
So by asking a question to
elaborate, you actually provide
yourself in an interview
situation, some more thinking
time, and also some more spoken
detail by the person
interviewing you. So I In any
case, don't fuss too much about
being caught off guard. remain
honest. And if you don't know,
you just don't know. Cuz there's
nobody out there who knows
everything?
Sam McGarry: I'd say. My next
question, when I got the
interview, I followed up and
asked if there's anything they
would like me to prepare for the
interview. And they said no. And
the only other information they
provided me was that they
expected the interview to be
around an hour. So I was just
wondering if you could help me
kind of depict what that means.
Jeroen Leenarts: You asked me a
question back. Is there anything
I can do to prepare? Or is there
anything you'd like me to
prepare? That's, that's very
good that you did that? Because
it shows that you are engaged
and that you are willing to do
the best that you can to
showcase yourself have a first
one hour long session? What can
you expect? Yeah, it depends a
bit on the process that you
have, it could very well be that
it's immediately a technical
interview, that it's it's about
source code and software
development and your skills as a
software developer, it could
very well just be that they
first are screening you whether
or not you as a person are a fit
for their culture and their
company. Both interviews have
their own specific challenges
and fun aspects, really. And
maybe they combine in one
session could be as well. But I
just go in there and and just
take an approach. Okay, this is
my first time, I don't know
what's going to happen. Every
company is different. So let's
just see what happens. I've done
my homework. And I'll just
answer any questions within
reason, of course, that they
have for me. And also, if the if
you have the opportunity. Don't
don't force it, but also lead by
asking specific questions show
that you actually have spent
some time on their website,
looking into what the company
actually produces as a product.
So for instance, if it would be
a company that does a lot of
things with, with audio, maybe
you can ask some specific
questions on specific frameworks
that are in this area. Or you
can ask is your app using core
audio for example, of course,
look up what your relevance
frameworks might be within the
iOS ecosystem. But that would be
an example of how you can ask a
legitimate question that's
actually showing that you have
an interest that shows that you
have actually have looked up
what the company creates. And it
also provides an opportunity for
the person interviewing you to
start talking. Because one of
the secrets that you should know
about when talking to people is
the easiest way for people to to
like you in a conversation is
that if you are able to let the
other person do the talking,
it's very weird, but in my
experience, the more you shut
up, the more they like you. And
of course, it's an interview for
job position, so you have to
answer the questions. But if you
have the opportunity to ask a
question back, and then just
listen attentively to what
they're telling and ask maybe
one or two follow up questions,
if they allow you, then they're
doing the talking, they like
you. And you show an interest on
a technical level, that's also a
good strategy to keep in the
back of your mind. And if
there's an opportunity to just
toss one of those questions into
the conversation, I was
Sam McGarry: thinking of
preparing a list of questions, I
actually asked a few questions
in my application itself. So I
plan on kind of like
paraphrasing those. And they, I
also downloaded their iPhone
app. And I've been messing
around with it a little bit. And
they actually, it's really cool.
They have a little section in
their in their app, kind of like
a setting settings page where
you can view all of the third
party frameworks they used in
the app. So I've been taking
notes on that and kind of
familiarizing myself with those,
those frameworks,
Jeroen Leenarts: piece of advice
that I can give you that because
you I know you you like to take
notes and prepare, it's better
to let your conversation just
flow organically, and not having
to refer back to your notes.
Compared to going down a
bulleted list. Okay, I want to
talk about this, this, this and
this. Oh, we forgot one, I
wanted to ask this as well.
Sam McGarry: What are some ways
of standing out in an interview
as a candidate,
Jeroen Leenarts: that's a good
one, really, because it really
depends a bit on what company is
looking for. But in general,
what always works is if you can
showcase what you are capable of
doing. And in your case, that
will both be most likely that
you are capable of learning,
because you're actually
interviewing for a junior
position. And you yourself are a
junior developer. And I think
it's in your case, it is
important to showcase that you
are able to work together with
other software developers, that
hackathon that you are able to
work in somewhat project like
setting. So again, something
like a hackathon. And also that
you are able to create an app on
your own and solve challenging
engineering puzzles. That's, for
instance, the core data stuff.
And obviously, with the core
data stuff, you would have been
done quite a lot faster if you
had someone available or some
reference available that like
helped you over the speed bumps.
But that's part of learning,
running into things and
overcoming the challenges. So I
think in your case, as a junior,
it's most important that you
show that you're able to work
together, that you're eager to
learn, and that you are capable
of taking suggestions and
advice. Obviously, you have an
opinion on things. But being a
good Junior means that you
actually are willing to do the
work and capable of of doing the
work and the test opportunity
for you and the company to grow
from a junior to a more Meteor
senior developer at some point,
because then you actually have
showcase that you if you show
that you're able to do those
things, then there's potential.
And for a junior developer,
you're always looking for
potential in a candidate. A
first interview very exciting,
Sam, and I really hope that that
you have a good experience and
that maybe you have some great
results. Because that would cut
short on our on our coaching a
little bit. But then even
suppose that you would turn into
a professional iOS developer,
which is your goal, I think, I
think we'll stick together for a
little bit anyways, because
there's so much to learn,
actually, even if you are
already working with a salary on
iOS development. So good luck
during the interview, and
definitely let me know as soon
as possible if you have any
results from the conversation,
and best wishes to you and I
hope for the best.
Sam McGarry: I appreciate it.
Thank you