In this episode, Leo talks with Jeroen Leenarts of the AppForce1 podcast about he's learned this year being a lead developer and how he thinks teams can improve the scalability and security of their apps. He also talks about his year running a Cocoaheads meetup and starting podcast with all challenges of 2020.
An exploration of Apple business news and technology. We talk about how businesses can use new technology to empower their business and employees, from Leo Dion, founder of BrightDigit.
- [Leo] Welcome to another
episode, Empower Apps.
I'm your host, Leo Dion.
Today we have with us Jeroen Leenarts.
Hey, Jeroen or app voice, I should say,
how are you doing?
- [Jeroen] I'm great, thank you.
And quite a nice pronunciation
on my name there, Leo.
- [Leo] So you're my third Dutch guest.
So I feel like, even
though let's be honest,
Antoine and like Donny are
not exactly her names to say
for an American like
myself, but still, you know,
I'm getting better at it.
- [Jeroen] Yeah, it's the
thing with my name is,
and also I notice that online,
it's not a very marketable name
outside of the Netherlands,
just for clarity Jeroen Leenarts,
it basically means Jeroen
it's the holy degrades.
It's the same as Jerome and my last name,
it's the, root of it is that
I'm the son of a doctor.
So that's when in the-
- [Leo] Nice.
- Napoleonic, in the Napoleonic age,
they had to like give
out last names to people-
- [Leo] Okay.
- [Jeroen] And somebody came up with that.
- Really, that's super interesting.
That's so funny.
That's like people coming to Ellis Island,
and like the guy not knowing how
to pronounce it and going,
ah, you're Smith, you know?
- [Jeroen] Yeah, stuff like that.
- [Leo] Yeah, do you ever get
called Jerry by any chance?
- [Jeroen] Yes, a lot.
And, they call me Jerry, Jerome, Jay.
That's also very convenient
for people. (chuckles)
- [Leo] Yeah, even though
the J is silent, ironically.
- [Jeroen] Yes, mostly.
Yeah, a Dutch person would feel
that they're pronouncing the J-
- [Leo] As a Y, right.
- [Jeroen] Yep, yeah,
- [Leo] Yeah, yeah.
Well, I'm so glad I was able
to pronounce your name today.
So we're doing a little experiment today.
I was on your episode yesterday talking
about my year interview.
And now I'm having you on to
talk about year in review,
and how launching this
new podcast has gone.
And how has development gone
as far as 2020 is concerned.
So, first I'll let you introduce yourself,
and your podcast of course.
- [Jeroen] So, yeah, my name is Jeroen.
My podcast is AppForce1.
In my episodes, I try to
give people a short overview
of this week's news in iOS land.
And on top of that I do
more topical episodes
where are focused right
now on a specific person.
So that's an interview with someone.
So currently I release
two episodes each week,
one shorter and one a bit longer.
And yeah, I'm still
trying to find my voice.
But what I do notice is
that people have sort of an appreciation
for the short format
because of the content
that they're getting.
And for the long format, it
basically involves the persona
that you're interviewing.
That's, they bring a group of
people that are enthusiastic
about this specific per and then,
well, as a podcast, I hope
that some of those listeners
will actually stick
on my feet and start
listening on my podcast.
- [Leo] How did you
decide to just go ahead,
and start a podcast this year?
- [Jeroen] I mentioned that
in my interview with you I think.
I did a conference type talk
for the Dutch CocoaHeads.
That's a meetup organization
that I also run.
And I was doing that online,
and we were pre-recording it.
So I was, for my sense,
I was talking to a wall and
it was driving me crazy.
It was so hard for me
to focus on my content,
and to be able to have a decent,
so to have a decent flow in my talk,
because I'm one of those
people if I'm presenting,
I really take the energy from
the room, and I really look
into the room to see if there's
any adjustment that I need
to make in my presentation,
and in my content, and in my delivery,
and I couldn't do that.
So I was getting crazy
and I was thinking, okay,
so this is something I need to deal with.
And somebody told me,
"You're taking the Dutch approach Jeroen."
So what I did was, do it more,
and do it quite a lot more often.
So the idea was, let's start a podcast
cuz then I'm just talking
to a wall a lot more
with an imaginary audience.
Of course, you hope that the
audience is actually real,
but that's actually the
process that I went through.
- [Leo] So you still run a
CocoaHeads group, correct?
- [Jeroen] Yeah, I've been
running the Dutch CocoaHeads
for over seven years now.
I sort of rolled into it,
and we've been doing in-person meetups.
And sometime, I think over two years ago,
we started live streaming the events
because hey, why wouldn't
we, just for fun?
Cuz we always had people
that were not able to attend,
and we wanted to record
the presentations anyway.
So why not live stream them
because all the gear there we
only need a wifi connection.
Then COVID rared its ugly heart.
And then we were like in this situation,
okay, what do we do?
We can stop like a lot of
meetup organizations have done
over the year or we can try to adjust,
and see what we can do now,
and we ended up with a online format
that we're trying to develop
to get the more social
interactions in there as well.
But right now it's a monthly
live stream on YouTube.
And then the videos are
then edited afterwards,
and then published on YouTube as well.
So that you have like a nice, sweet,
good video presentation
of the person presenting.
And the biggest benefit of
our speakers is actually
that they now have a video available
of them presenting a topic
that they can actually
bring to a coffee paper
on any conference that
you want to subscribe to.
- [Leo] Yeah, I've tried
launching a CocoaHeads group.
I tried last year, last
year or two years ago.
It just, it was way too difficult.
So I said, I actually
hosted it at an Apple Store.
We do have an Apple Store in town.
We're small, but we're not that small.
And that was just a really
interesting experience.
But yeah, I actually spoke
at a CocoaHeads this year,
CocoaHeads, Hamburg.
When I wanted to practice a talk,
I find like public speaking at a meetup,
especially CocoaHeads is
a great way to practice.
- [Jeroen] Yeah.
- [Leo] How has it been like organizing,
and maintaining a meetup group this year?
- [Jeroen] Well,
surprisingly easy actually,
cuz it involved a lot
less traveling for me
because I live at the
other side of the country.
So if you're in the us, you
say, other side of the country.
Well, the Netherlands it's like-
- [Leo] Right.
- 120 kilometers then you're-
- [Leo] Right.
- [Jeroen] At the other side.
(Leo chuckles)
- [Jeroen] But still it's a one hour
to two hour drive depending on traffic.
- [Leo] Yep, yep.
- [Jeroen] So for me personally,
it's been a lot easier
once we made the decision,
and the benefit that we already had was
that we were already having
sponsorship agreements in place-
- [Leo] Nice.
- [Jeroen] Because the
format that we have had
with the in-person meetups is that,
we would be onsite at a company,
and then this company would host us
so that it involves food and drinks,
and then providing one speaker,
and we would be providing
the other speaker.
Of course, that whole format fell away,
but we had sponsor agreements in place.
And we had like, well, we have a,
it's not a big bank account,
but enough to be able to spend
some money strategically,
to be able to continue,
just buy some services
and buy some hardware,
actually be able to execute
correctly in the online format
because it did take some
getting used to for us.
But the end result for us
was actually less effort
than the in person meetups.
(suspicious music)
- [Leo] I wanted to let you know
about the great experience I've had
with this host hosted on transistor.fm.
It's been absolutely
fantastic and really reliable.
If you are thinking about
starting a new podcast,
I highly recommend taking
a look at Transistor.
Now I know there's a lot
of free services around,
but their rules about how long
it takes to publish a show
or doing any sort of like ad insertion,
things like that are gonna
affect the quality of your show.
But if you wanna do something
serious for your business,
I would definitely take
a look at Transistor,
and spend a few bucks there.
You can actually try Transistor
for free for 14 days.
Give it a shot, try that
new podcast you wanna do.
It's definitely gonna be
something worth your trouble.
Transistor is fantastic when it comes
to building up something for your business
or something you really
want to grow long term,
I think Transistor is
gonna be the host for you
that really hands off about
the content and what they do.
And they have a really great guide.
I'm gonna share to you about
how to start a podcast.
You may be thinking to yourself,
well, 2020 might not be a
great year to start a podcast,
but in fact, that's not true.
There's been a lot of recent
reports and I know personally
for myself that my podcast
has grown this year,
even though folks aren't
exactly commuting.
So take some time, go to transistor.fm,
and use the code, Empower Apps,
just go transistor.fm?
via equals Empower Apps,
link's in the show notes,
and give Transistor a shot for 14 days.
And let me know what you think.
I think Justin and John
have done a great job,
and they continue to do a great
job building that platform.
And they have a lot of great hosts,
folks like Cards Against
Humanity and Kickstarter Games,
folks like that who really
know what they're doing
with their podcast.
That's where they go to.
They go to Transistor FM.
Thanks Transistor for
helping host this show,
and use the link below to
give it a try for 14 days.
(suspicious music)
How about like getting speakers?
Did that work out for you?
- [Jeroen] Yeah, it's easier
because we can now source speakers
from the entire world instead
of only the Netherlands.
And with that mostly speakers
from the Netherlands in the Amsterdam area
because getting somebody
from the other side
of the country into Amsterdam
is again the traffic thing.
- [Leo] Right.
- [Jeroen] But now with
the online, there's yeah,
we only need to do a shout out on Twitter,
and we have like tons of speakers willing
to have a go at it.
And one of the challenges that we do have
is that we want to make sure
that new, aspiring speakers get a chance.
- [Leo] Yeah, that makes a lot of sense.
- [Jeroen] But you don't
wanna have a series
of five, fresh new speakers
without any experience
about doing a series of
bad presentations is bad
for your listenership because of or bad
for our audience cuz
they won't stick anymore.
And that's been the biggest
battle for us over this year
that we've seen that the number
of live viewers have been dropping,
but the of views on the
videos once they're edited,
they've been rising significantly.
So people are watching the content
on their own time or on their own terms
instead of being engaged in the community.
And that's actually also a big part
of what we want to
facilitate people networking
because people that get
in touch with each other,
they can create new things,
help each other and make
sure that everybody ends up
in a better place at
the end of the evening.
- [Leo] Do you have like a slack group,
I would assume for CocoaHeadsNL?
- [Jeroen] Yeah.
- [Leo] Okay.
- [Jeroen] Yeah, one of the benefits
that we have as CocoaHeadsNL
that we've been
incorporated as a nonprofit,
and because we're an efficient
nonprofit in the Netherlands,
we were able to get on the
free tier with slack actually.
- [Leo] Nice.
- [Jeroen] So slack is
slack is sponsoring us
with a slack account, and I think we have
about 300 active people on there.
- [Leo] Nice.
- And yeah, you do notice
that it's a big Core group
of attendees with the meetups
that help us keeping the community going.
But I do miss the in-person meetups a lot.
- [Leo] I agree with you completely.
Well, I missed conferences actually,
I mean, that's really what it is.
Like it's really hard to
network at a conference.
I think a lot of people
don't feel familiar with it.
I've become savvy with slack
over the last few years,
but like a lot of people
aren't comfortable with it
as far as networking is concerned.
And also there's like,
I don't know what platforms
you you were using,
but there is quite a variety
of different platforms-
- Yeah.
- This year that have sprouted up
for doing remote conferences.
And they all have their
different idiosyncrasy
in order to like really network.
And it's doesn't,
to a lot of people it's
it's feels uncomfortable.
- [Jeroen] Yeah.
- [Leo] In a lot of ways.
- [Jeroen] With CocoaHeads
right now it's a live stream,
and we invite people to join us on slack
cuz we have unlimited availability
there for people to join.
But we are still looking for
ways to create more interaction
between our attendees
because on slack people
are just posting the questions,
and then once the event is
over, the event is over.
And the biggest feedback
that we're getting
from the core group of attendees.
So that's the people that's
been with us for a long time
is that they actually
they actually miss seeing
the familiar faces mixed
in with the new faces.
And, with CocoaHeads now
what's always been the case
is that it's always been
a very welcoming group.
So if there's somebody new in the evening,
it's not that they would
like be like harassed
by the other attendees,
but there was always
somebody that would step up
to this person and say like,
hey, it seems like you're
new here and how's it going?
Where do you work?
What are you doing?
Just getting like the interaction going,
and making people
actually feel comfortable
within a new group of people.
- [Leo] Yeah, like I've noticed with some
of the conference platforms,
they have some sort of way to
just like take a random group
of people like zoom does this right.
Where you can take a
random group of people,
and be like group 'em up,
and they can start talking to each other.
So I don't know if like you've looked
into that or even just doing zoom,
and then posting the recorded video.
- [Jeroen] Not really, but
I did have some experience
with iOS Dev Happy Hour.
So that's the-
- [Leo] Yes
- [Jeroen] That's the thing
Alan has been doing with like
- [Leo] Yep, yeah, I saw
you there, that's right.
- [Jeroen] Yeah, it's like
they had like over 300 people
at the last edition.
- [Leo] Yep.
- [Jeroen] And it was so
awkward for me the first time
that you just drop in a room
with basically eight random other people
that you don't know in way or form.
And then just getting a
meaningful discussion going,
it's so awkward.
- [Leo] It's really awkward,
and it takes a while for you to get
that comfort level that
by the time you get it,
it like becomes really difficult to like.
Okay go, we got five minutes left,
finish, finish the conversation.
Yeah, I know what you mean.
- [Jeroen] Yeah, so yeah,
but we're looking into that
and slowly experimenting,
but I must say that in
this regard we've been more
in observe thing role
instead of like taking action
because we were hoping that
this whole thing was over
by summer last year, but then
(chuckles) stuff went downhill
(chuckles)
from there and we are at the
situation that we're right now.
And, but fortunately there
are some vaccines being
rolled out across the world.
- [Leo] Yes.
- [Jeroen] So maybe next
summer we'll be able
to do more in-person things again.
- [Leo] So speaking of next summer,
what is your plans for this year
as far as 2021 is concerned?
Like or how are you gonna
deal with, you know,
cause we like, even
with these vaccines out,
like it's a little tough to say,
oh yeah, like by summer
everything is gonna be great.
Like we don't, who knows, right.
There's no guarantee.
So that's, I think like
the biggest challenges,
how are you gonna deal
with that in this year?
- [Jeroen] Yeah, well, I divide my time
across three main areas of responsibility,
work wise of course.
I have a day job and I work with Ahmire
that's a big Dutch insurance company.
And we've been working remotely
with, I think 15,000
people from March, 2020,
and most likely will keep on doing that
into the next year for quite a long time.
And they also actually announced
that working from home three days a week
is the new normal regardless
of what the new situation will be
once the coronavirus has been dealt with.
- [Leo] Are you happy about that?
- [Jeroen] Yes (chuckles)
- [Leo] Okay, okay.
- [Jeroen] Because my previous job
has been working remotely most of my time.
And the hardest part
that I find with going
into an office five days
a week is just dealing
with family life alongside that
because I was used to being
able to go downstairs,
and help my wife and
help my kids when needed
and to be available at those
busy hours in the home life.
- [Leo] Yep.
- [Jeroen] And I've been able to do
that a lot more is a
whole Corona crisis again,
and I'm happy that they're making a shift
towards more remote work actually.
Then next to that,
there's the CocoaHeadsNL
which is, it's not a big effort,
it's once a month, a meetup
and then some organizing.
The meetups are in-person,
but everything else around
that has always been remote.
So that's not a big change really.
And then there's the AppForce1
thing that I'm doing,
which is a little bit of contract work,
a little bit of podcasting
and hopefully a little
bit of product work.
And product work is going
to be the biggest development next year
cuz I'm actually writing a book
on being a lead software developer.
And that's something that is based
in my experiences at my
day job, cuz at my day job,
I've actually been put in a place
that I'm now the lead iOS developer
on the team of about nine iOS developers.
And over 2020, I really
had to move into the role.
So instead of being
just a senior developer,
I now had the lead role on top of that.
And I've been struggling with it
because your day looks a lot different
if you have to tag lead on your forehead,
and I'm now finding ways to actually deal
with the onslaught of responsibilities
that you have as a lead developer.
Cuz you have to look out for your team,
you have to coach your team members,
you have to be available
to make decisions.
You have to actually consult
and coach your business sponsor
and all these different responsibilities.
I'm learning on that.
And my lessons on that, I'm
trying to put in my book.
- [Leo] Do you have a blog by any chance?
- No, I tried that filled that
and (both chuckle) didn't try that again.
I've noticed that the shorter
form writing is not something
that I, I dunno it's not
something I have the patience for.
- [Leo] Yeah.
I tried it, but it's very
hard for me with blogging
to get on a rhythm like
Antoine has been doing
so wonderfully over the years
cuz he's very successful with his blog.
And, if I just see what he's doing,
it just makes me nervous to have
to write 800 words every week
and have it in a decent
quality and then publish it.
That's, I dunno for me
it looks like a task,
and it's not something that
I'm very passionate about,
and that I feel like it
would give me energy.
- [Leo] Well, I'm just
curious, transitioning,
like jumping right into writing a book
without any writing being done.
Like, are you planning on
just like writing a book
from scratch and going that
route or are you thinking like,
oh I'm gonna test some blog posts
and then go ahead and post.
like, okay then turn those into a book.
- [Jeroen] No, it's really,
the premise of the book
is really, I'm writing the book
that I wish I had like a year ago.
- [Leo] Okay.
- [Jeroen] So that's my
guiding principle really.
I have an outline basically
available that gives me some,
it gives me some roadmap on
what I should be working on,
and what I should write
and how it should look.
And I'm now in the process
of working with a few people
that are willing to review
the manuscript every once in a while.
- [Leo] Nice.
So to make sure that it's,
it makes sense in some way.
And of course I'm not
publishing through a publisher,
I'm doing it through,
I'm writing on LeanPub,
and I'm probably gonna publish on Gumroad.
- [Leo] Yeah.
- [Jeroen] And once that's done,
I'm probably gonna be going
into Kindle direct publishing as well.
- [Leo] Well, good luck with that
- [Jeroen] Yeah.
- [Jeroen] We'll definitely,
hopefully when you have a
link, we can share that.
- [Jeroen] Yeah.
- [Leo] 'Cause I think
that would be very
interesting to our audience.
- [Jeroen] Yeah, I'm still,
I actually had a phone call this evening
with a friend of my wife
who's really good with graphics
and I'm trying to create
a partnership with her
to get like really nice
graphics into the book as well.
So that's 'cause right now the front cover
is like a big picture of my face.
(Leo chuckles)
- [Jeroen] It's like, yeah,
it's again my face, okay.
A bit self-centered so
I need to change that
cuz I want people to to buy the book
because of the content and not
because they think I'm a nice guy.
So that's something and
that I'm working on as well.
And my goal is to have it
finished by mid-March of 2021,
and then work on the improving of content.
So if there's any feedback picking that up
and also the marketing aspects,
because already heard and read
from various authors that they said like,
yeah, writing the book
is like 20% of the book
- [Leo] Yeah.
- [Jeroen] And then marketing
it is like the rest,
that's the 80%.
- [Leo] Yep, yep.
Then I think that's true
with any product it's like the marketing-
- [Jeroen] Yeah.
- [Leo] Is a big part of that, so.
- [Jeroen] And that's also
a big part of the fun really
because the podcasting
is relatively new to me,
the writing of a book is relatively new.
The marketing, I'm learning
all kinds of new things.
And what I'm noticing
is just the acquiring
of new knowledge and new skills
is really what lifts me up as a person.
So that really makes
me wanna move forward.
And it really, I don't know,
it release some kind of energy
within me that I'm like,
okay, let's go into this
full force, head first
and just (chuckles) dive
in and see where I end up.
- [Leo] Yeah, yeah, totally,
I'm on the same page.
It's the learning, oh,
that really keeps me going,
and keeps me passionate.
And I think too, it's
interesting, you know,
running any sort of business venture,
like whether you wanna
be a cooker, a baker,
it's not running, being
new cook and a baker.
That's a bulk of the
work with that business.
It's the business and
that's a big part of that.
Like you said, with like the marketing,
and finding somebody to do graphics.
So, I don't even know how
much like code you're doing
or even writing you're
doing with the book,
but I bet a vast majority
of your time I was gonna
end up being the marketing,
and like managing and all that stuff.
- [Jeroen] Yeah, the book itself,
it's focused at software developers,
but it's not a code related book.
So it's more about the people skills
and the self management
skills that you need
as a software developer
that's transitioning
into a somewhat of a lead role.
Basically, I'm trying to
also to fill in the gap
that I felt when I was reading the book
by Camille Fournier, "The Manager's Path."
Because she wrote a book
about forms of leadership
that you present in a
software tech company.
And, one of the aspects of one
of the chapters in the book was also
the lead software developer role.
And I really agreed with
her thinking about it
because being a lead software
developer has nothing
to do with you being a junior
media or a senior developer,
but it's about an additional set of tasks
that you get as a software developer.
But, I wish she would've dived
into that topic a lot
more within her book.
So I'm really trying to fill that gap
or basically expand on that area
on that chapter of her book,
not by taking her work,
but that was also one
of the trigger points
for me to actually
start writing this book.
Because now what I mentioned,
the book that I wish
I had like a year ago.
And for everybody doing
software development
and considering doing new things,
it's one of those books
that you should put
on your reading list, if you ask me.
(suspicious music)
- [Leo] Hey folks, I wanted to talk
to you again about Appfigures.
You probably already know
them about their analytics,
and their app store optimization.
Appfigures really is
about giving app makers
the tools they need to get
more downloads and revenue.
Well, now ad figures can
help you track competitors
for how many downloads they're getting
and how much money they're making
to their audience demographics
and which SDKs they use.
The competitor intelligence
really gives you great context,
say a competitor ads like a new feature,
or was mentioned in the news recent,
with Appfigures you can see
if that brought in more
downloads right away.
Got a great idea for an app or a game,
well, with Appfigures,
you can figure out how big that market is
and how much money you
could be making with it.
And that's just scratching the service,
whether you're growing your
app or building a new one,
Appfigures has the tools you need
that will reduce the risk,
but also get you more downloads.
You don't need a large budget
or a data science degree
to do this kind of thing.
Appfigures has made it
affordable and simple.
On top of tools, Appfigures
also provides a lot
of great guides and tutorials
to take you step by step
through gaining more visibility
with ASO and increasing your revenue
by learning from your competitors.
They just released a free
guide on that actually.
So go ahead, head to the
link in the show notes
and try Appfigures for free.
If you like it, use our
special code Empower 3030
to get 30% off for the next three months.
Thank you, Appfigures
for sponsoring our show.
(suspicious music)
- Very cool.
Well, it sounds like you've learned a lot
as far as being a Lead Software Developer
and it seems like a big part of that
is dealing with scaling and security.
That seems like the big
bulk of what you've had
to deal with as a lead software developer.
Why do you think those two things
are so important being a lead?
- [Jeroen] Well, when I started working
at the place of work
that I work right now,
I was hired there as strictly
a Senior Software Developer.
And when I started working there,
I noticed that there was a lot of room
for improvement in the code base.
And then things shifted
around a bit within the team.
And then I was offered
to take the lead role
cuz it was an external contractor
that was doing that role.
And I had some opinions
on his way of working.
And the end result was that
this contractor was let go
and I was moved into his position.
And then really, we started working.
And I had a lot of ideas
cause the code base
that we're working on is big, it's old.
It had a lot of object to see,
fortunately now a lot less.
And one of the aspects that's
important for this code base
is because it's insurance,
including life insurance,
health information.
There's a lot of privacy
sensitive information in the app,
and also a lot of privacy
sensitive information
that's being communicated in this product.
So basically you can see some aspects
of your medical history,
any ailments that you might
have had or stuff like that.
It's not something you
wanna have like flying
around on the street that
people can actually see
that you've had some sort
of condition or whatever.
And that's the premise of the app
that everything that's in
the app needs to be secure.
And because of the way
the app is built up,
that's basically the
entire product portfolio.
Often insurance company is in there.
And I might say in the Netherlands,
it's a big insurance company.
And that means that there's
products in there in the range
of basically health insurance,
ensuring the house that you're living in,
insuring the stuff that's in your house.
And basically anything you
can come up can come up with.
And on top of that,
they also have like a
banking section in their app.
So it suffice to say it's big,
and we need to deal with this complexity.
And while we were deal
dealing with the complexity,
we needed to make sure that
everything was secure as well.
Because one of the things
that we've started noticing
is that over the years,
a lot of stuff has been added to the app.
And let's say some developers
stepped into a few pitfalls
that were quite concerning
in regards to security.
So we needed to come up with
ways to take out these issues,
but being able to migrate the
existing app with an update
to a new, better situation.
So not only did we have to
deal with, making it secure,
but also making sure that
what we have can be moved
into the new secure situation.
How would that look?
One of the things that I noticed,
was that there was like a,
sort of a big fault embedded
within the app that a lot
of data was stored into.
And the fault itself was really secure,
but the key to unlock the
default was not really secure.
So there were some ways available
that you could get a hand
on the actual key if you were like a,
what's the term for that?
If you were a-
- [Leo] Taker.
- [Jeroen] Yeah, if you
were a male intent end user.
And stuff like that would
really had to deal with.
And what was interesting
in it as well is that we,
at the start of 2020, we
were like a really big team.
So there was, I mentioned
eight iOS developers,
I have number nine,
but there was also team in the same team,
Nine Android Developers
and the design engineers, test engineers
and all the overhead that's
also involved with a project.
So you're dealing with a team
in the size of like 30 to 35 people.
And that doesn't really work.
If you have a team of this big
and you wanna be agile,
you have to do something.
And one of the most obvious things
that you can do is to split up the team
in several smaller teams
that have a smaller, dedicated focus
on what we're working on.
But the architecture of the app
was not supporting this
new team structure.
So what we were seeing
when we made it switch
to this new team structure
at the start of 2020,
was that we were getting a
lot more merge conflicts,
a lot more discussion really
about code level stuff.
And one of the things is with code,
you shouldn't be having these discussions
on code level stuff.
You should be able to just
work within the agreements
and architecture that you set
out amongst the developers,
and then just be able to merge your stuff
without too much hassle really.
And we noticed that we were
getting increasing problems
in that area and I had an
idea what this might be.
So we started looking and
then the end result was
that our agreement was
that the code base was pretty
much a big bowl of spaghetti
and we needed to untangle a lot of things.
And what we tried doing initially was
to just re-architecture certain things,
but that this just wasn't
moving quick enough for us.
But fortunately we were
seeing the end of 2020
that we quite likely would be able
to drop Iris 12 as a release target.
And not only do you get swift UI
and combine available
in Iris 13 and onwards,
but also the dynamic loading of frameworks
is a lot quicker in Iris 30
cuz in Iris 12 and lower,
if you have a lot of dynamic frameworks,
then the launch time of your app
can increase significantly, actually
to levels that are unacceptable.
And with Iris 13 that's
no problem at all anymore.
Of course there is some overhead,
but it's not increasing by
that large margin anymore.
So what we decided to do
was to actually create
sort of a framework architecture
that was in line with how
the teams were divided
and what responsibilities
were actually assigned to each team.
So that if a team was
working on some framework,
if somebody else was doing
work on the repository as well,
if you're not touching the framework
that somebody's working on,
most likely you won't be
hitting each other's coach.
You won't have any discussions
and you can just move forward.
And because tool choice that we made,
we also don't have ExCode , project files
or ExCode workspaces committed
to source code anymore.
So you can't have conflicts on
stuff that you don't commit.
So that also was a big reduction
in the complexity that we were having
with the coming to an
agreement between teams.
And yeah, so we basically on during 2020,
we switched to a new team structure
and we switched to,
what I call a micro
framework architecture.
And the core functionality of the app
is now composed out of 25
frameworks at the moment.
And then the app itself is an iOS app.
I've forgot to mention that.
- [Leo] How are you, just briefly,
How are you not committing projects
and workspaces to source code control?
- [Jeroen] Yeah, when we were looking
into untangling our mass really
'cause the big bowl of spaghetti,
we looked into ways to actually do that,
and one of the decisions that we made was
that we wanted to do small frameworks.
I dunno if you ever tried
creating a framework
by hand in ExCode,
it's a lot of work and a
lot of stuff can go wrong.
So we started looking a tooling
that would actually support
this and also tooling
that would help us build all this stuff.
And for one of the first things
that we came up with was the was basil,
and buck and the rip architecture of Uber.
But to us that was like way too many.
And also the hurdle of on
getting into these tools,
it pretty much demands
a dedicated person doing
the development of your
build architecture.
And since we're still
a reasonably small team
that wasn't available to us,
but fortunately at SoundCloud,
they did something interesting
as well with two ways.io,
which is now our open source product.
And basically I started
investigating that during the summer
and over a period of, I think three weeks,
I came to the conclusion that
this was the way to go for us.
And then another four or five weeks
to actually create a make file
that would transition
the existing structure
into the new tools that
the based structure
with one execution.
The reason that I did that was that,
with this make file, all the development
of the teams could proceed in the way
that they were already familiar with.
- [Leo] Ah, yes.
- [Jeroen] And I could
develop the new structure
piece by piece as I learned
and understood the tool to a higher level.
And when the day came
that the script was good
enough, we executed.
And then I had did like,
I think a week of explaining,
and educating the other team members.
And I must say that the
transition went really well,
and everybody has been a
lot happier ever since.
And now in 2021, the road is open to us
to actually make sure
that we can actually do,
we already have a composed architecture
with micro frameworks,
but now we want to make
sure that the composing
of the architecture is done
in a more pluggable way
so that as a software
developer on our project,
I can now choose to say, okay,
I just wanna like work on this subsection
of all the functionalities
so that if I'm working on this subsection,
all the other stuff I
don't have to compile.
And if I don't have to compile it,
my build time is way lower
because we are on a project
that currently has a
build time on Intel Max,
I must say of about
five minutes on a clean.
- [Leo] That's not bad.
- [Jeroen] And, but it's still too bad-
- [Leo] Yeah, great.
(Jeroen chuckles)
- [Leo] Yeah, it's a long time to wait.
- [Jeroen] Yeah, so, and especially if,
since we are doing a
sort of an agile process,
we are constantly switching branches
and every time that you switch a branch
and you do that within the same context
with ExCode and ExCode says,
whoop, all the catches are invalid,
so let's do a clean build again.
(both chuckle)
- [Leo] Yeah.
- [Jeroen] And, since
we're working at home,
we don't have the luxury
of just pressing build,
getting up and grabbing coffee
cuz that usually took
around four to five minutes.
- [Leo] Right, right.
So one of the things you talk
about is security issues.
What are some examples of security issues
you see a lot of developers
running into commonly?
- [Jeroen] When you look
at iOS developments,
the most of the things that you run
into is basically ignorance
of the actual developer
of what is available on the platform.
What I mean by that
is that a lot of software developers
are not using the key chain
to the level that you should.
And a lot of software developers
are not checking their network connections
to a level that you should.
Actually, you see a lot
of app transport security
exceptions appearing
in PList files, if you see
some source codes around.
And I'd say the biggest
problem in security wise
it's just storing stuff on the device,
in the wrong storage format.
So just dumping it in the
documents folder of the app,
instead of storing the secure
elements in the key chain.
And if you're storing it in the key chain
and biometrics are available,
why not making it more secure
by involving the secure enclave as well?
- [Leo] Yeah, I've run into
that with like the key chain,
one of the issues just being like how
it definitely has a much
more Objective-C flavor to it
as far as the API is concerned,
I think to a lot of swift developers,
that can be a big challenge.
Now I know there's like some
Cocoa pots or swift packages
that try to abstract that way,
but still I know it's like hard
to wrap my head around
a lot of that stuff.
- [Jeroen] Yeah, it's and also
because of the security stuff
that we're dealing with
as an insurance company,
we also have to make sure
that the transport layers,
so that's the network traffic
that that's also secure,
and there's a lot of details involved
if you do O off type of flows in your app.
And there's also a lot of stuff
that you can do wrong there.
And then on top of that,
we're dealing with third party offenders
that parties like Broadcom
that have a big enterprise presence,
but their SDKs are not
always completely up to date
with the current practices
or the current norm
because it's just not
updated too frequently.
And then you also, yeah, yeah,
you often run into the situation, okay.
I can use the vendor SDK
or we can do it better
by just doing stuff directly.
And that's always a trade off
that we're looking at really
cuz for one third party vendor,
we just decided not to use their SDK
and for the other, we are
just using it because yeah,
more control is in this case,
more important to us
than having a convenience
with an SDK really.
- [Leo] So you mentioned
ATS, like what do you think,
what are some things
besides just allowing any old
domain (chuckles) to work?
What are some tips that
you have that developers
should be doing when
they're implementing ATS
in their PList file?
- [Jeroen] Well, the thing
with ATS is that it's,
you're always creating exceptions
to the norm that Apple has set out.
And most of the things that you can put
in an exception into the
PList for are exceptions
that allow older encryption
formats or older protocols
and using these older protocols,
they just increase the risk of a man
in the middle being successful
at intercepting your traffic
and changing your content
or observing your content.
And it really depends
a bit on your product,
but you can imagine that
somebody inspecting your network,
traffic can be bad,
but somebody changing
it can be even worse.
Cuz if you're a banking app,
imagine your transaction
being intercepted mid-flight
and adjusted and then forwarded again.
Of course there are things
that any decent banking app
would do on the client and the server end
to put some sort of hashing or
validation on the me payload,
but still you wanna make
sure that the secure pipe
that you're trying to
create between your client
and your server that nobody can
get into your channel really
because even the observing
of certain transactions
or certain network traffic
can be a bad thing,
depending on the use case
that you're dealing with.
And these ATS exceptions,
they just decreased the
security of the channel.
- [Leo] Yeah, I think
it's a really great point
that a lot of developers
don't don't realize
and especially in your industry,
I think it's incredibly
important to keep those in mind.
I remember actually a really good talk
that I went to a Triswift
a couple of years ago
by Felix Krause of Fast Lane just talking
about all the different
man in the middle stuff
that people can get away with on iOS,
and I'm really glad
developers are becoming more
and more aware of that stuff right now.
- [Jeroen] Yeah, it's also,
Apple has a great piece
of documentation available
in regards to security
on the iOS platform.
And it's a somewhat overview document.
So for an iOS developer,
it's great starting jumping off points
to get into the security
really related content
that is available within iOS
and also for people not directly involved
with software development,
it gives a good overview of
what high level mechanisms
are actually available within iOS.
So that as a manager,
you can actually ask of your developers,
hey, can we focus on
these areas of security
which is available within iOS
so that we are actually secure
with our solution that
we're trying to build.
- [Leo] So you talked
about scalability being really important
with the app that you're developing.
What were some like code smells
that you realized, yeah, this is a mess
that needs to be pulled apart,
or what are some things
that you think developer
should look out for when
they're developing code?
- [Jeroen] Well, the
thing is that usually,
if you develop an iOS app, quite often,
you just put it in one target.
So everything is in one target,
and everything can see each other.
And it's quite easy to just,
if you need something done and you know
that it is done some in some class
to just directly call into that
and then getting your results.
So it really works out today,
but tomorrow if you need
to adjust some piece of functionality,
for instance, you're
dealing with some code
that is related to banking
and you're actually using some code
that is related some insurance policy.
Then at some point a developer
starts changing the codes,
which is in the scope
of the insurance policy.
And then all of a sudden
stuff sort of breaks
at the other end of the room, so to speak.
So basically if you're like compared
to a real world example,
if you're like adjusting your door
and you're just adjusting some screw
and then all of a sudden,
like a small picture
frame drops off the wall
because you just screwed out screw
that's keeping up that thing,
that's kind of an indication
that something is attached to each other
in a way that it shouldn't really be.
Cuz if you're working
with a bigger code base,
you wanna be sure that if you're working
on some area of the app,
that you don't break stuff
at the other end of the app
as an unintended side
effects of your changes.
And we were seeing that
quite a lot actually
within our code base.
And another really typical thing
that you see in larger
code base that is a smell
is there's one way to
actually do something.
And there's a second and there's a third
and maybe there's even a fourth way.
And all four basically do the same thing
except in one or two small details.
But if you take it down to the essence,
then all code paths that you're looking
at do the same thing.
And that's a maintenance nightmare
because if at some point,
in this case it was
networking related code,
something had to change on the server end
and we needed to deal with that,
instead of just changing
that on basically one line,
we needed to look up four
locations in the source code
to see what we needed to do there.
And because you know, there's four
who can actually guarantee
me that has not five
or six or maybe 10 of
these same situations
as well in the code base.
So not only is isolation
important for you,
not breaking stuff, but unintendedly,
but it's also important
to keep an overview
of what you are actually
trying to accomplish
within your code without being unsure,
whether or not you changed everything
that you needed to change.
- [Leo] Yeah, I've become like a big fan
of using swift packages to
like separate my code bases
and doing that rather than just frameworks
and like that's been fantastic
cuz I can easily unit test,
I can easily do CI stuff with it,
I don't have to worry about
a lot of the maintenance
and the cost of just
having a major code base
in one target, which
sounds like was a big issue
with you guys.
- [Jeroen] Yeah, yeah.
That's definitely, it's been a big issue.
And also we had a legacy
of five years of software
development with us
cuz we had like Objective-C swift
and we're now transitioning into swift UI.
Fortunately over the year of 2020,
we've been able to
really reduce the number
of lines of Objective-C.
But we did notice that if you
have a mixed source project
in Excode, the bridging
between Objective-C and swift,
it really it eats up a lot of time
within the compiling of your project.
And what we've noticed that is
that the more Objective-C we were able
to throw out of our source per three,
the quicker are compilation
was actually getting-
- [Leo] Well, that's awesome.
- [Jeroen] I already mentioned
that we had a compile time
clean build about five minutes,
but it was double that at
the beginning of the year.
- [Leo] Yeah, that's crazy.
Wow, that's awesome.
So before we close out,
do you have any other tips for developers
and managers out there for
keeping their app scalable
and easy to maintain over the long run?
- [Jeroen] Best thing
that I can come up with
is to make sure that, as a manager,
you facilitate the software developers
to be good craftsmanships.
So craftmanship for
software developer means
that they know what unit testing is,
they can do unit testing,
there a lot of time to actually
do the automated testing,
but also to allow your software developers
to do more exploratory things
so that they can actually
come up with solutions
for the issues that they're facing.
Because if you ask any random
software developer in a team,
so, hey, so what's the biggest issues
that you're dealing with?
Most likely they can come up
with a list of like three or five things.
And quite often, if you ask 'em,
hey, so do you any ideas
on how you can solve this?
They might have some idea,
but they didn't spend the time
to actually explore what
these solutions could be.
So that's on the managerial side
and as a software developer,
I'd really make sure that you request time
to work on your own development
as a software developer
so that you get better at your craft.
And also to make sure that
you spend some thought
on why you wanna do certain things
in your code base so that
you can actually explain it
to the people who control
the money so to speak.
(both chuckle)
Because what I noticed is
that if you can explain
to your manager or your business sponsor
to why it is important to do thing
within the code base and
what the value might be.
And of course you cannot express the value
in direct hard currency.
But if you can give some
indication of value,
then you'll probably
have a much better time
in having these discussions
with your business sponsors.
Because in the end, I think
as a software developer,
as a tech guy, and a manager guy,
you all have the same goal.
You wanna be successful as a company
because having a successful company means
that both of you will have a paycheck
at the end of the month, and
next month and next year.
And it all leads to
the same result really.
So what I notice is
that software developers
and the people trying to manage them
is that they feel they
have very different goals,
but if you dig a little deeper
then their goals are quite often in line,
and if they're not,
then that's something that
needs to be worked on.
- [Leo] Could have insight any better.
Thank you so much for coming on the show.
Where could people find you online?
- [Jeroen] That's appforce1.net.
And that's basically my website
and there's also all the other content
that we discussed is quite
likely available there
through some links.
So that's the podcast, the book,
CocoaHeadsNL, it's cocoaheads.nl.
That's the landing page of the
community that I'm running.
I think those are the
two most important ones.
For my podcast, look for AppForce1
in your player of choice,
and you shouldn't have
a hard time finding me.
So that's AppForce1.
- [Leo] And we'll have links
to that in our show notes,
as well as two, his interview of me
and talking about my year
review will also be a link
in the show notes there.
Thank you so much for coming on Jeroen.
- [Jeroen] Yeah, it was a pleasure.
Thanks for your time.
- [Leo] People can find me
on Twitter at Leo G. Dion,
my company is BrightDigit.
Please take some time to post
a review to Apple podcast,
Google podcast, Spotify,
or wherever you listen.
Thank you so much for joining us
for this very special
first episode of 2021.
And I hope you have a happy new year.
- [Jeroen] Happy new year, everybody.
(suspicious music)