Empower Apps

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.

Show Notes

Guest

Youtube Video - https://youtu.be/iDP9wdtQ6sw

Related Episodes

Related Links

Sponsors

AppFigures
The tools you need to monitor, optimize, and get more downloads.

There's a lot of demand for apps right now
, so it's a really great time to give it a try. It's easier than you think.
The guys who run it are indie devs who had a need and created a tool. 11 years later, it's an all-in-one platform for developers who want to get more downloads and make more money with their apps.

The folks at Appfigures have easy step-by-step guides and intuitive tools to do that, which many indie developers are using to get more downloads:
https://appfigures.com/resources/aso

Also check out our episode with CEO Ariel Michaeli:
https://share.transistor.fm/s/15b7ff63


Try Appfigures for free, and if you like it use the special link to get 30% off for the next 3 months:
https://appfigures.com/account/upgrade?p=empower3030

Working in 2020 and 2021

  • Why do podcasts in 2020 and 2021?
  • Running a Cocoaheads in 2020
  • Networking in 2020
  • Working from Home
  • Writing a Book in 2021

Dealing with Complexity in Your Code Base

  • Dealing with Large Teams
  • Keeping Your App Secure
  • Using the Keychain properly
  • How does ATS work
  • Dealing with Isolation and Repetition
  • Transitioning through Objective-C, Swift, and SwiftUI

Social Media

Email
leo@brightdigit.com
GitHub - @brightdigit

Twitter
BrightDigit - @brightdigit

Leo - @leogdion

LinkedIn
BrightDigit

Leo

Instagram - @brightdigit
Patreon - empowerappshow

Credits

Music from https://filmmusic.io
"Blippy Trance" by Kevin MacLeod (https://incompetech.com)
License: CC BY (http://creativecommons.org/licenses/by/4.0/)


Thanks to our monthly supporters
  • Holly Borla
  • Bertram Eber
  • Edward Sanchez
  • Satoshi Mitsumori
  • Steven Lipton
ā˜… Support this podcast on Patreon ā˜…

Creators & Guests

Host
Leo Dion
Swift developer for Apple devices and more; Founder of BrightDigit; husband and father of 6 adorable kids

What is Empower Apps?

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)