Read the transcript
Jeroen Leenarts: Hi, and welcome
to another special edition of my
podcast. I'm sitting here with
Frank kohrville. I'm hoping that
I said that correctly, Frank,
because it's it's a name that
doesn't sound English to me.
Frank Courville: Yeah, um, so
I'm from like the French part of
Canada. So like, both, like,
both my dad's side, and my mom's
side, like, grew up, like, Well,
my dad is bilingual, my mom is
more like French. So there you
go, I speak French.
Jeroen Leenarts: Already, we
know a little bit more about you
that you're living in Canada. So
that's in the Americas, as they
say. But I tried looking up your
profile online. And what I
noticed pretty much is that
everything that you've been
doing is a stuff that you've
been doing pretty much on your
own steam. So no, no employments
really, that I could find, and
just like contracting and doing
your own project? So what's the
deal there? That?
Frank Courville: Yeah, I've been
so I think very early on in my
career. I started doing
freelancing. And then in the
beginning, I worked I did like
sub contracting for agencies. I
worked for startups to help them
build like their for the first
iteration of their apps, and
then slowly moved more into like
contracting and consulting with
like, bigger firms. But, yeah,
no, I always liked having that
aspect of control over my own
career over the people that I
work with, over you know how
much time off I can take.
Jeroen Leenarts: But that there
must have been a moment in time
that you were thinking like,
Okay, I'm gonna start earning a
living, I know something about
software development, and then
you say, Okay, I'm not going to
do the typical thing, get like a
job, but I'm just going to go
straight up as a freelancer, as
a contractor, as a as an indie
in a way, really? So what do you
think is the is the thought
process that you had back then
when you made this? Well, pretty
substantial leap of faith?
Frank Courville: Oh, man, that's
a good question. So like, my
first, so my first developer
job, I was working for an
agency. And as like, a first job
in iOS development, I couldn't
have asked for anything better,
like I was working on, like
multiple projects, I was often,
you know, starting projects from
scratch. And when you work in an
agency, you, you kind of have
to, you kind of have to learn a
lot, very quickly in order, you
know, to like, build stuff and
ship it. So that was like, an
incredible experience for me.
And at the time, it was probably
around iOS seven, iOS eight,
just to give you like, an idea
of timeframe. And at that point,
like iOS was like, Redheart,
everyone was looking for iOS
developers. So when I moved on
from that job, I told myself,
you know, I can probably do this
freelance thing. And then, you
know, if, for whatever reason it
didn't work, I could always find
something else, right, I can
always find like, another like,
normal developer job. So I
figured, oh, you know, oh, I'll
go out on a limb and see if this
works. And it's been working up
until now. So
Jeroen Leenarts: so what, what,
what version of iOS that you
really get your hands on, you
know, like, get dirty with
language and really started
digging into the Apple
ecosystem.
Frank Courville: So when I, when
I first started, this was in
university, and it was I Oh, it
was the transition between iOS
four and I was five. So this is
when for example, Ark was being
introduced into the language so
we no longer had to do like
manual retain release.
Obviously, this is all Objective
C. And this is a time again, but
like before, iOS seven, right,
so everything has like these,
like gradients and like linen
backgrounds and stuff. It's
really
Jeroen Leenarts: old style
through skeuomorphism. Yeah, I
love that stuff.
Frank Courville: Yeah, now it's,
you know, it has it's kind of
like, it's kind of endearing.
Right, you see it and you're
like, Oh, that was so nice. But
really, do we want to go back
there?
Jeroen Leenarts: I'm not really.
But so but you got started in
university that also implies
that you've studied somewhere
where did you go to university?
Frank Courville: So I went to
University of Sherbrooke. It's a
small university in Canada and
kind of like the like in the
countryside almost.
Jeroen Leenarts: Yeah. And what
was your main subject that you
studied?
Frank Courville: I studied
Computer Engineering. So this is
in the engineering faculty.
What's really cool about the
University of Sherbrooke is that
the computer engineering program
there is what's called PBL.
Problem Based Learning. Yeah, so
it's not like a typical degree
where you go to lectures, and
then you have like exams, it's
more of like a hands on thing,
where every two weeks, you're
given a problem, you're given
what to study. And then at the
end of the two weeks, you take
an exam on what you did. It's
like a completely different way
of learning. It was so much fun,
it was like the best time
Jeroen Leenarts: of my life. So
as I said, like, like, really
all the time project based
assignments, or
Frank Courville: Yeah, yeah,
pretty much. So say, for
example, here's, here's a good
here's a good example. One of
our one of our things, one of
like, our two week, projects,
was we needed to build an mp3
player. So we have like
professors with us, right? The
they would give us like the, the
electrical components that we
need. So we'd have like, a board
for like SD cards, and we'd have
like a microcontroller that we
need to program. And we would
have like a board that would
like decode mp3, for example.
And then we needed to like code,
the microcontroller, right to
like, speak with with these
other components, we needed to,
like develop one of the goals of
this was to develop our own file
system for the SD card, so we
had to do that. And then just
get it all working. And then by
the end of the two weeks, that
we had, like, we had a working
like mp3 player on like a
breadboard. And, and like wrote
up a report, and then you do an
exam, one of the things you
learned.
Jeroen Leenarts: And it's it's
an A, that's it's really like,
sort of sounds like it's sort of
like real life challenges that
you would face. If you're
working as a software developer,
on your own or in a company
really?
Frank Courville: Yeah, yeah. I
mean, some of them are obviously
more contrived than others,
right? Like, this is what I give
you here is like probably the
best example. And like one of
the coolest examples of things
that we did. But we also did,
like we had a CPU design class
where we had to know like, add
instructions to a CPU, for
example. Kind of that kind of
stuff. It was like a lot of fun.
It was like, so cool.
Jeroen Leenarts: So it sounds
like that a lot of the things in
the skills that you learned
during your days in university,
pretty much set you up for Yeah,
just going out on your own and
not like doing just doing the
typical thing. Is that something
that might apply here?
Frank Courville: Yeah, I guess.
So. One of the things that
really like PBL problem based
learning is really, really good
for people who like to, like
learn on their own, because
you're not sitting in lectures,
right? Like, you have to kind of
figure things out by yourself.
So I guess in that in that way,
then absolutely. Like, when
you're when you're out on your
own, and you have to find your
own contracts and make your own
money. It's it's a whole other
like level challenge. But it's a
fun one. That's good.
Jeroen Leenarts: So I'm really
looking at at your origin there,
because what made you decide to
go into this direction? Which
your education because there
must have been something before
that, that made you decide that
computers were cool, and that it
would be something you wanted to
study on?
Frank Courville: That's actually
that that's a good question. Um,
when I started university, I
actually started in civil
engineering. I didn't I wasn't
in computer engineering. I had
been, you know, like, on
computers my whole life, like my
parents had like a Commodore 64
When I was when I was a child,
you know, and I would like play
on that all the time. But then
when I got to university, so I
Yeah, so like I said, I started
in civil engineering. Second
semester, I was kind of like,
like, so so on, like the whole
thing. But we had, luckily, we
had a like programming class in
civil engineering that taught us
you know, like how to build like
little applets and Visual Basic.
I think there was like some like
Excel programming in there too.
And that, like, I just like lit
up like that was perfect for me.
I would get my assignments done
the night they were given to us,
and then I would help all of my
friends with their assignments.
And I realized really quickly
that programming is something
that came very naturally to me.
And that was that at least it
seems very difficult for other
people. So You know, that really
got me questioning like, should
I? Should I stick with civil
engineering? Or like, Should I
drop this and go into, like
computer engineering and like
focus on on like, the software
side of things? And well, I
think you can I think you can
imagine the, the outcome of that
question.
Jeroen Leenarts: Yeah, that the
thing is there that you
mentioned that logical deduction
and and thinking about problems
in a structured way, is
something that sort of comes
natural to you. Of course, it is
a learned skill, but it is
something that you're very much
adapted to. But I'm just
wondering, why is it something
that within you, it triggered
this feeling of joy and
accomplishment when you really
discovered software development
and programming?
Frank Courville: Man, I have no
idea. Even now, like, I mean,
how long like I've been doing
this for how long like 10 years,
even now, and I work on my own
projects. And I'm just like,
elated. I am so freakin happy to
be able to like code apps and
like to build things that run on
my phone. Like this isn't this
is such an amazing time to be
alive. I I'm just I'm just so
happy about this.
Jeroen Leenarts: But what for
what for them? The typical
things that you were into as a
kid then.
Frank Courville: Man, what was I
into World of Warcraft? Oh, wow.
And Team Fortress two. There's a
lot of that.
Jeroen Leenarts: So what
versions of World of Warcraft
did you play?
Frank Courville: So I was really
big in Burning Crusade.
Jeroen Leenarts: That was before
I was more in the frozen Frozen
Throne. Lich King. Yeah, that
part. So we doubt the Lich King
is the third guild on the
server. I think it was cool. So
a lot of time wasted there on my
part as well. So but but what
what kind of toys did you play
with as a kid then? Because
that's like the really
fundamental stuff, right?
Frank Courville: Oh, man. One
thing I loved transformers. I
still love transformers for the
right. But like, Chet like cars
that turned into robots, like
that was totally my thing. I was
like, Power Rangers to like,
combine combined into the big
dudes
Jeroen Leenarts: with these
foam, swords, swinging, shatter,
like above these, these fake
buildings, and then a lot of
fireworks and pyrotechnics,
right? Yeah, I still remember
that. But But But why? Why
transformers? Is it like
something specific with them? Or
is it like, Is it like the old
style a new style that you
really are into?
Frank Courville: Definitely the
old style, like, like the 80s
era stuff. I remember when I was
a kid, I was like, so fascinated
with these with these things.
Like I would watch the cartoons.
We'd have like these tapes. And
I would like just like play,
pause, play, pause, play pause
to watch, like, the cartoons
transform. And I would try and
like figure out in my mind how
like the engineering would work.
You know, like, Okay, this
becomes his chest and like this
part becomes his legs and I
don't Yeah, that was
Jeroen Leenarts: it things like
kids get into the amount of
thinking that you do that. With
all the the stuff that's then
happening on especially with
transformers because that's one
of these these these these
cartoons people think it's yeah,
it's just a cartoon. But it's
one of the cartoons that has
like a really expensive
backstory with like, this whole
Cybertron thing and like the
Exodus, and you can just go on
and on. It's not as it's not as
big as, for instance, the Marvel
Universe, but it's getting
there. And I especially like all
the incarnations that you had,
like, of prime, you know, like
you had, you get, like, if you
had to Allspark then you were
prime and then all of a sudden
you get like these extra
features and cannons and stuff
just because you've got like
this little device implanted in
you, which was kind of weird as
well. Sorry. We're a bit of a
tangent here.
Frank Courville: Yeah, hang on,
just just to continue attentive
for a little bit longer. Okay,
your listener, if you are
someone who grew up with
transformers, one thing you need
to do is look up masterpiece
transformers on YouTube, because
now they have like these hyper
detailed transformers that like,
look exactly like the characters
from like, the 80s. When I saw
this for the first time, I was
freaking amazed. It takes like
100 steps to transform them from
one thing to the other. Love it.
Jeroen Leenarts: That's probably
not happening as quickly as as
in the cartoons, right? No. So
but that that somebody had
looked at the engineering then
of how stuff would actually be
able to fit them. If it would
work. That's the second thing in
real life. It could actually be
real life but anyways, Let's get
back on topic again. So, um, so
you were like a kid, you played
a lot with all kinds of, of new
toys. Then at some point,
Commodore 64 Got involved. You
discovered programming. And then
you wind up at university, you
had this problem directed
learning style PBL that you say
problem based learning style.
And this sets you up for just
leaving, like getting a job to
decide and just starting out on
your own. So being a freelancer
being a contractor, doing
workshops and trainings. does
pay the bills, obviously, but
what is the what is the main
source of income for you?
Frank Courville: Yeah, I So, for
a long time, I did like
contracting and consulting and
that like, like, easily pays the
bills.
Jeroen Leenarts: Yeah. But it
doesn't scale. Right.
Frank Courville: Well, I mean,
yeah, it doesn't scale past past
one person. Another thing.
Another thing like is, like, I
like to do stuff on the side,
like, for a long time, I
organize them Coco heads in
Montreal. So I kind of fell into
it. Where it's funny. I remember
asking the organizers. This is
right when I was starting out.
And I would ask them, like, hey,
like, do you guys need help? You
know, like, can I help out with
the meetup? And like, two months
later, they were like, Okay,
we're, we're like, we're done
with this meetup. It's yours.
Now. You can Yeah,
Jeroen Leenarts: that's it. Oh,
yes, please show. And it's all
of the keys. Okay, bye.
Frank Courville: So that
happened to me. And, like, I
didn't plan for this to happen,
but it was really, like, it was
really good for me at the time,
right, because it gave me a bit
of a platform, like a local
platform. So it helped, you
know, people, it helped put me
in a position of authority,
people, like saw me as the iOS
guy. So it gave me a lot of
credibility that, you know,
perhaps in the beginning I
didn't deserve. So that was,
that was really nice. And plus,
the thing too, is that when you
organize an event like that, you
end up doing a lot of speaking
like not only not only emceeing
and like, you know, hosting the
event, but also, if you can't
find speakers, well, guess who
the backup speaker is? You?
Jeroen Leenarts: Yep. Been there
done that I've given
Frank Courville: like, over a
dozen talks over the years that
Coco has always been fun.
Jeroen Leenarts: I'm not I'm not
attack number. But I'm, in fact
running the Dutch cocoa hats in,
in the Netherlands for, I don't
know, nine years or so now. And
we basically incorporated it
into a non profit. And that's
one talk. That's like years ago.
That's like GitHub actions,
something I shared on that with
with iOS, and it's, it's still
doing good. It's like, even even
book publishers, they contact me
like, Hey, would you want to
write a book about this very
specific topic? And I'm like,
Why do you get to me? Oh, wait,
that's the talk. That's like, a
couple years old already. But
But you mentioned something
interesting there, because you
got started there. And you got,
like, some merits based on you
being the lead person of this
meetup community. But at the
same time, you also indicate
there was some imposter syndrome
going on there as well. Because
hey, I get all these credits and
all these, these accolades. But
why do I get them? Yeah, just
because you still have to be the
person in front of the group. So
how did that work out for you
then?
Frank Courville: Yeah, like, so.
I understand imposter syndrome.
But that's never really been a
big problem for me. Maybe more
in the beginning, but even then,
I feel like, like, you need to
create your own luck, right? And
you need to push yourself into
situations where you're going to
feel uncomfortable, and are you
not going to feel like you. You
meet expectations. And when you
raise the bar for yourself. It's
it's like, shockingly, it's
surprising how well we raise
ourselves to the bar that we
set.
Jeroen Leenarts: Yeah, yeah,
there's a lot more that you can
actually do once you're doing
it. Mm hmm. Yeah. I've heard
people talk about imposter
syndrome as well. And those are
usually the people that get into
the debilitating state, instead
of that it like limits them. But
what I've noticed as well if
that if you have some concerns
on being able to execute
something, then making sure that
you have some people available,
that you know, and trust and
that are able to give you honest
feedback, then, then then it's
not easy, but it gets a lot
easier if you have that
situation going right.
Frank Courville: For sure. What
One of the things I think, too
is that we, we often see this as
like a one way street, right?
Like, how we feel defines how we
act. But okay, now, we might be
getting a little bit better
here. But also, I think it works
the other way around. Like how
we act defines how we feel. And
it kind of creates, it's not a
one way street, right? It's like
this feedback loop. So whether
you're someone who you know,
wants to start being healthier,
or you want to, you know, step
up your career, or you want to,
say learn piano, you know, like,
even if you don't feel like it,
or if you don't think you're up
to the task, doing the thing
will make you feel better about
doing the thing. It's even it
kind of plays on itself. Like,
Jeroen Leenarts: it's even
simpler than that. Because quite
often you have people on the
stage who have like some
reservations about being on
stage, they, they really go
stand in this close stance, arms
crossed, and just like arms in
front of their belly, really.
And I always tell them just
like, don't hide behind the desk
thing that's on there, like the
speaker stand, don't, don't put
your arms in front of you just
put your hands on your hips, and
just and start talking. And then
immediately within like a couple
minutes, you see their entire
physique change, it's like the
shoulders go down, the head goes
up. And they they really start
radiating. Okay, it's it's still
a bit tense, but I think I got
this. And that's just just just
by suggesting to put your hands
in a different place on your
body. And that's, that I think
that's in one of these cartoons
as well. It's the power pose.
And it's really funny, but it
actually, it actually works. So,
so yeah, but to keep the focus
on you. So you did a lot of
contracting, you did a lot of
workshops, and you did a lot of
training. I'm seeing things in
your history, like iOS coach
Frank and school of Swift. What
are those two things about?
Frank Courville: Okay, so iOS
coach Frank is a website I
wrote, like, a bunch of blog
posts for like, it's, I think, I
think there's some pretty good
stuff on there. But what's my
current focus right now? Is
school Swift. So school, Swift
is essentially like, an
organization that helps iOS
teams, ensure they're like
continuing education. So we do
half day workshops for for
companies of all sizes, and
we're going to have like, open
enrollment workshops, as well.
And yeah, on like, very specific
topics. So you could imagine,
for example, half day on, you
know, getting started with
VoiceOver accessibility, or
getting, or like how to make
dynamic type, like supporting
dynamic type less painful,
things like that.
Jeroen Leenarts: And those are
like workshops that you that you
run on your own. So you're the
you're the instructor, and, and
teacher or during these
workshops. So that's a lot of
content that you're delivering
there. So so how does it work
out for you? Because I know that
keeping up tuition content,
especially for software
developers, it's it's quite
labor intensive, right?
Frank Courville: Yeah,
absolutely. And that's kind of
the reason why I started this in
the first place. Because, like,
iOS is changing a lot, you know,
when you think about it in the
past few years, like, think
about, you know, like UI
TableView. And UI collection
view, right? Like, mainstays of
iOS development, very beginning.
And even that has like,
completely changed now with
like, difficult data source and
compositional layout. And now,
it's also getting to the point
where I think like, the minimum
iOS version for those things is
iOS 13. So a lot of teams are
getting to the point where they
can start supporting these
things. But I know that a lot of
people I work with, especially
the more like, intermediate to
like senior people, they've,
like, never touched this stuff,
you know, like, it's like brand
new for them.
Jeroen Leenarts: Yeah, they
still had to support ourselves
for like, even last year, still,
they had to do that. And, and so
so basically, that sounds like
there's a specific audience that
you have in mind when creating
your content. Is that correct?
Frank Courville: Yeah,
absolutely. Some of it is for
some of it is for junior
developers to get them started
on on like, some technologies
that aren't necessarily like
core to the iOS experience for
like dynamic type for example.
But definitely, like junior to
intermediate is like the sweet
spot for what I do.
Jeroen Leenarts: Yeah. So and so
but that's that's that's
coursework work. workshops. How
often do you release
Frank Courville: so, school
Swift is starting out but one
workshops like every week, I'm
also giving a workshop with try
swift very soon it's going to at
the time of this recording it's
in two days so when this comes
down it'll it will be passed
already but I'll probably be
doing more with try swift in the
future.
Jeroen Leenarts: So and house
tries first working out for you,
because I know that try Swift
has a financially reasonably low
barrier of entry. And that's
that's on purpose. But did you
do engagements with rice fest
before?
Frank Courville: So I was set to
be a speaker at like trice with
Japan, right? Yeah. Before
everything happened. Yeah, I try
swift Japan was I think the
first iOS conference, they get
canceled due to the pandemic. So
I was kind of like in the loop
with try Swift. But recently,
recently, Natasha reached out to
me, Natasha, the robot who runs
try Swift. And she saw my talk
at at, I was calm Singapore,
which is where we met. And, and
she asked me like, Oh, would you
like to give a workshop on like,
like, you know, the contents of
this talk? And I was like, yeah,
absolutely. Sure. Like, that's a
perfect fit.
Jeroen Leenarts: So and what is
the content of the talk and
workshop for people who don't
know?
Frank Courville: Yeah, so the
workshop is on state machines
and swift. So the idea is, it's
going to be like, it's a shorter
workshop. So it's like an hour
and a half to two hours. But
attendees essentially go through
a problem where we need to take
something like this, like
convoluted code, and then like,
build a state machine out of it.
So we're going to be drawing
state diagrams, building a state
machine in Swift reintegrating
it into the app. And then,
ideally, you know, they have
like this tool that they can use
in their tool belt for like,
like future problems, right?
Like, see machine pattern is
very, very useful.
Jeroen Leenarts: Yeah, you see,
the more and more nowadays with
because problems are getting
complex every day. And I think
it is something that's very
worthwhile. If you have a more,
even for just a login flow,
having a state machine in there
can be very convenient if it's a
little bit involved. So But
nowadays, it seems that you're
fully focused on like, teaching
and content creation for your
teaching efforts. But how do you
stay up to date with the current
things? Because I can imagine
that if you're really focused on
the other teaching aspects and
side of things, that there's a
much less or not even any time
at all available for contracting
work and just getting hands on
and dirty with with latest SDKs?
Frank Courville: That's a good
question. So around WWDC, I put
a lot of time into figuring out
what's new. And I guess to a
lesser extent, what's worthwhile
to learn. I have we can go on
another tangent if you want. But
if you're into like, product,
personal knowledge management,
and like obsidian and like text
files that are linked together,
like this is where I live right
now.
Jeroen Leenarts: Okay, well,
let's let's park the subject of
obsidian for like a little bit
later in the conversation,
because I do want to dig into
that because it is interesting,
actually. So hold tight.
Frank Courville: But yeah, so
there's that definitely. So
around WWDC, there's a lot of
action, of course. But also, I
have kind of like this system
for essentially reviewing all of
like the iOS content that gets
made every week. On different
blogs, I take highlights, that
stuff gets like synced to
obsidian, and then I go through
it again and try and pick out
like the interesting bits. So
yeah, I have like this whole, I
have this whole like Rube
Goldberg machine to like keep up
to date with iOS.
Jeroen Leenarts: Okay. People
aren't taking notes here now. So
what's your process then?
Because of course, there's,
there's a lot of blogs, there's
a lot of stuff happening on
Twitter, there's people
publishing videos, there's these
huge sites like Paul Hudson, who
put out content that is not per
se blog content, you know, the
100 days of Swift gets updated
stuff like that. And then that's
the input, the output is that
you have clue on what your next
workshop is going to be about.
So tell me a bit. What's in
between then what's your
process? So we have to begin
Okay, we have the end state now
take us through it.
Frank Courville: So let's break
it down. Okay. If we want to get
into okay, it's all talking
about specific apps. So I use
reader, r e d r, it's an RSS
aggregator by Silvio Ricci, I
believe. So I use reader and I
use um, there's, there's a
website with a list, like this
massive list of blog feeds, I
think it's Dave de ver who who
put this up? It's like iOS dev
blogs.
Jeroen Leenarts: Yeah, I was. I
know, it was never direct. Yeah,
that's, that's, that's one of my
main sources as well. So okay,
so I'm still good. Go ahead.
Frank Courville: Take all of
that, take that huge list. And I
put it in reader. So starts
there. Then, reader is where I
do like my initial, like, triage
and stuff. So I go through stuff
very, very, very quickly in that
app. And what's nice is that is
that it works really well for
this, like you're able to get
through articles super quick. If
an artist if I find an article
particularly interesting, I'm
going to send it to matter.
Believe it's get mattered, calm
manner is like a new ish Read It
Later service, which is really
nice as nice typography. It has
apps everywhere, obviously, it
has like the Safari extension
for saving things directly to
matter. And what I like too, is
that it handles tweets and
Twitter threads really well,
also. So that's, that's
important. So I do my initial
triage, and I do this like
either like in the evening, or
when I have like, you know, 15
minutes to kill, I'll just like
start going through articles and
reader, that stuff gets synced
to my matter account, or No, I
could get sent to my matter
account. And then in matter,
that's when I do like my actual
reading. And I highlight
passages that I think are
interesting. And I do all that.
Then the stuff that's
highlighted, gets synced to
obsidian, right. And I have like
a special folder called like the
sources folder, and obsidian
where we're all this stuff goes.
And then going through that
folder, I have like a special
note called My Dashboard note,
that's able to pull I think I
pulled like the top 20 most
recent sources, I put it, it was
like a query to pull those up
and link those in my dashboard.
So then I'm able to like look
through those and see like,
Okay, are there any trends? Is
there anything I should be
keeping my eye on. And then
eventually, when I start, when
they start like building a new
workshop, or when I see
something I'm interested in, I
start writing my own notes. And
I can like link, link stuff and
from from those sources.
Jeroen Leenarts: So basically,
the process that you're
describing is there's like,
there's like input, you do a
triage on it, then you do an in
depth review. And after the in
depth review, you start
basically you switch from
consuming to producing books,
you start writing notes. And of
course notes is like the basic,
smallest thing that you can do
in the sense of content
creation, because you start
sharing and adding your own
thoughts on the stuff that you
have there. And then obsidian
allows you to basically keep
everything linked together,
right? Because I've seen it's
like it's like a notetaking
thing, but made based on
markdown, but it links
everything together.
Frank Courville: Right? No
obsidian. Obsidian is like one
hell of an app. It is
incredible. It is like it's like
an operating system for writing.
At its core, like it's like a
markdown editing app. So it's
not particularly special in that
regard. Like there are other
apps that do this, like Ulysses,
I use Ulysses on iOS for a long
time.
Jeroen Leenarts: That's
specifically tailored at the end
like content writing. Right?
Frank Courville: Right, exactly.
I think Ulysses is better suited
for, for like people who write
like really long form content,
like books and stuff. Yeah. And
scripts. But so I use obsidian.
Because not only is it like
this, this like, pretty good app
for doing like markdown editing,
but also it has this incredible
plugin architecture. Plugins are
written in JavaScript and they
and has like a huge community
who develops all kinds of crazy
things like you can refactor
notes, you can say like, you're,
I'll be writing something say on
like, auto layout. And then I'll
take like one paragraph and I'll
just like highlight it, refactor
it into a new note. And then
like continue expanding on it
there. It's really really.
Jeroen Leenarts: So but it is a
it is a specific process that is
completely tailored to your way
of working right.
Frank Courville: Yeah. 100%. So
But then, if I were to use
someone else's install of
obsidian, I don't think I have
like, definitely wouldn't be
getting the same results.
Jeroen Leenarts: Okay, so
definitely people should check
out obsidian. But then you
switch to content creation,
you're adding your notes, and
you're expanding those notes
into basically paragraphs. And
then at some point, you start
creating a workshop, which is
like, reasonably long form
content. Is that all still
happening in Obsidium?
Frank Courville: Yeah, yeah, I
do. I write notes for myself and
Obsidium about like development
topics. I write articles and
obsidian based on those notes. I
write. I write workshops in
obsidian based on based on those
notes as well. Yeah. Yeah,
absolutely.
Jeroen Leenarts: And then it's
still all markdown, in essence,
then you need to, like convert
those markdown writings into
something that looks good for an
audience. Right. So any specific
or cool tools that you're using
there? Or is it just a
conversion and then some
styling?
Frank Courville: Yeah, no, I
just use Keynote.
Jeroen Leenarts: Making my stuff
look good. Yeah, that's okay.
Yeah, that's the easy part.
Frank Courville: Although,
although I don't make that many
slides, like maybe for
conference talks, I'll I'll go
pretty slide heavy. But when it
comes to workshops, like they're
very few slides, some slides in
the beginning some slides to
mark like, when we're like doing
exercises and stuff and like
transition from topic to topic,
but otherwise. My workshops are
very hands on. Yeah, it's a lot
of like, you know, I'm talking
we're coding, either encoding or
like you're coding. And, and
we're learning things together.
Okay.
Jeroen Leenarts: So we learned a
little bit about reader matter
and obsidian. We'll make sure to
link those in the show notes. So
by the sounds of things, your
entire year is starts at WWDC,
and it ends at WWDC. So is that
is that a correct assessment for
you?
Frank Courville: 100%. So,
Jeroen Leenarts: like, WWDC
Frank Courville: is like my
favorite time of year. Like I
like it more than my birthday. I
like it more than Christmas. I
like it more than then like, I
don't know, iPhone release day.
Like WWDC is like the highlight.
Jeroen Leenarts: So what do
people in your in your
surroundings like friends or
family say when it's WWDC season
again? Do they notice something
with you that you're like? A
little bit off, so to speak?
Frank Courville: Yeah, I'll be
like, I'll be like, I'm sorry.
I'm busy for two weeks.
Jeroen Leenarts: So you're
literally just block those times
those weeks, and you're just
make yourself unavailable for as
much as humanly and reasonably
possible.
Frank Courville: Exactly. Oh,
pretty much cool.
Jeroen Leenarts: So But do you
notice like that low? So with
people consuming content? Do you
see a cadence over the year as
well? That's very typical, or is
it? Like, I can imagine that
once WWDC is approaching that?
For instance, knowledge
acquisition with people slows
down a little bit? Because yeah,
let's just wait what Apple will
bring in June. But is that
something that's really true for
for content creators?
Frank Courville: Um, I would say
so I think there's, there's
obviously a lot of a lot of
excitement after WWDC with the
new stuff. Yeah, I think that
kind of pairs into the fall
when, when like, students start
going back to school and like,
there's like this whole
contingent, right? Of like,
aspiring app developers who are
in universities around the world
who kind of like, get like re
energized to, like, visit blogs
and stuff. So I think that's
definitely a part of it, too.
Yeah,
Jeroen Leenarts: that's true. So
I'm looking at your workshops,
and you have something about
concurrency a bit of state
machine, dynamic type, and you
get voiceover, that's perfectly
feasible, probably a lot more
content that you have available
in other formats, and that are
maybe a bit more of a engagement
based thing. But state machines,
those are very much architecture
related, I think, iOS
concurrency as well. But the
other two are not but do you
have some specific thoughts on
on architecture in iOS by any
chance?
Frank Courville: Architecture?
Oh my god. So like many, like
many developers, I think I spend
a lot of time on Reddit. Yeah.
I'm one of the things that comes
up a lot and like the in Our
swift and our iOS development is
like, what architecture should I
use for my app? Right? It's
like, should I use MVC? Should I
use MVVM? Should I use Viper?
Jeroen Leenarts: You have people
you have people using rips
nowadays as well. I'm like, What
are you talking about?
Frank Courville: There's a lot
of like, there are a lot of
acronyms, which I think are, you
know, like, it's, it's not the
right question to be asking in
my opinion. First of all, first
of all, I would say that MVC is
not really an architecture,
right? It's more like a pattern
that describes how your view
interacts, or like how your
model in view interacts through
a controller. And, in my
opinion, that's like, probably
like, like, the least
interesting part of any
apparatus are, what the
interesting part is, what
happens in the background and
how everything communicates.
Yeah, like, that's like, oh,
there's I think a lot more
thought needs to go into that
then like, just what's like,
right up against the view layer
of
Jeroen Leenarts: iOS tended to
say, cuz I'm a morning developer
relationship. Before, I was like
the lead developer on the team.
I always tend to say, like, if
you have your architecture,
right, and getting stuff on the
screen is easy. And if you're in
a situation, that app code base,
that if it's feels difficult or
contrived to get stuff on the
screen, then probably there's
something that you're not doing
correctly, at least. And you
should start working there, I
think. But I'm curious about
your thoughts there.
Frank Courville: Yeah, recently,
so I, I've been working on like
some, some of like my own apps.
And what I found is, like, I try
and keep things as simple as
possible for as long as
possible, right, like until it
starts to break down. But
recently, what I've been doing
is, like micro, like micro
architecture, like micro
frameworks, yeah. This is
something that I saw I first saw
on point free, were like, on the
point free guys, they do this
with like SPM. I think like,
Majeed has started talking about
this, too, on his blog, on his
swift UI blog, but like, wow,
this stuff is so cool. Like
being able to have like, really
small modules have like really
focused, like focused in on what
they do. And then just having an
app that like, brings in all
these different modules together
and hooks them up, I find is
such an easy and pleasant way of
doing things, especially with
side projects that like you
might not be working on every
night. So being able to just go
in, and instead of having to
understand the whole world,
right, like understand the whole
project, you just need to
understand like this small
module that you're working on,
which might be like three or
four files. That that I find has
been like, huge for me.
Jeroen Leenarts: Because the one
thing that I'm still missing, if
you're working with a micro
framework based architecture, is
what is the best way to sort of
like glue all those frameworks
together? Because at some point,
things need to come together.
And they need to start in some
way start working together. And
I'm not I'm not I'm not totally
sure yet, what's the best
approach there? Because I've
been using micro frameworks as
well, a lot over the years. And
I've been using the tool for
that too, as you probably know,
or heard about it. And, yeah,
that makes it very easy to
manage your Xcode projects,
because you just generate your
Xcode project. So you don't have
to conflicts there. Right? The
best thing, you can have no
conflicts. But what I do notice
there is that there's a lot of
documentation on how you can
create a framework. There's like
a lot of documentation, okay,
this is a framework, this is
what's in it. But how the heck
do you connect these things
together? And that's the
challenge. That's I want
somebody to write a blog article
about that. Yes, please. Thank
you. So are you finding those
same issues as well, that it's
like, okay, basics, fine. But
what's the glue here? How do you
how do you make things like,
interact? Because, for instance,
you have two frameworks that
don't know each other, but they
add a little bit of
functionality to the app that
you're working on. In some way,
you need to get some data from
framework a to framework B, if
there's something that they need
to work on together, but you
don't want to expose each
other's interface to each other,
because then you get like the
hierarchy of frameworks that
makes it a little bit more
contrived to get things working.
So I'm not sure that so
basically, that's the same
question I just asked, I think
but
Frank Courville: yeah. So I
think there's only my specific
case, the app that I'm working
on is fairly simple for now. So
I haven't really run into any of
these like, to any of these
problems. That being said, a lot
A lot of what I do now is, is
using the composable
architecture. So again, by point
free, it's like this Redux, like
architecture. And with that, I
haven't run into any problems of
gluing things together,
especially with the way things
are, how you can like scope down
and scope back up. That hasn't
been an issue.
Jeroen Leenarts: So yeah, yeah.
In comparison, where I did, it
was like, a code base of a
couple 100,000 lines of code.
And I think it was like 24
frameworks that were like our
own. And then you have two
dependencies, which were
fortunately, very minor, because
I don't know, I was like, one of
these people that I if I, if I
get on the code base, I go on a
crusade against third party
dependencies as much as
possible. Because any third
party dependency is a liability
unless it's apple. And even then
it can be a liability. But hey,
so yeah, that that things got a
bit complicated, because there's
so much, especially because it
was an existing code base that
we needed to untangle. And it
was like, yeah, it's that
sometimes you just opened up
these files, and you when you
open it up in Xcode, then you
went like, Nope, not gonna touch
this today. And you close the
file again, and you started
working on something else. So,
yeah, that that's my world of,
of micro frameworks. But I do
think there's indeed some way
that that can work and maybe
these people at at porn free,
they have it figured out, so
maybe I should take into their
stuff as well, a bit more.
Frank Courville: Yeah, it's also
important to keep in mind that
like, I'm building this stuff
from scratch, right? So that
helps to make all of like the
the best, like design and like
modeling decisions, to to have
this work the way I wanted to.
So I know, I know exactly what
what you're going through, like
for my last big contract, I was
working with a bank, and we
started looking into, you know,
like, okay, maybe there are some
things we can split off into,
like separate frameworks. And
you're good for like, 95% of the
code. But then there's like this
5% of the code that's like
tightly coupled to other things
that it shouldn't be coupled to
Jeroen Leenarts: sign up from
Dragon's Lair here.
Frank Courville: So I totally
understand.
Jeroen Leenarts: Yeah, so yeah,
but I do notice that it's
something they should notice
with it. But software
developers, if the more
experienced, they gets the, the
more wary they get about third
party code. But I do find that
sometimes you do want to
integrate certain third party
things into your code. But
making that choice is like one
of the hardest things that you
can do as a software developer.
But just to, to grab things back
to the architecture thing,
again, I do wonder what will
happen if we take this
recording, and then the code
base that you're working on,
like over the past couple
months, and then playback that
recording, like a year from now,
and then present the code that
you are working on today, and
just see what you think, then in
there about what you were doing
like a year ago? Because that's
always, that's always
interesting, because I think the
biggest enemy of any software
developer is is basically
entropy. And yeah, code rot. And
I don't know, ongoing insights
of yourself, and also the
industry as software developers
as a whole. So but
Frank Courville: for sure, okay,
well, then, in that case, let's
book the podcast for next year.
I'll be
Jeroen Leenarts: there. I'll
never be cool. So but Model View
Controller is not an
architecture. That's probably
one of the big takeaways of this
entire recording, right? I hope
so. And people should have a
look at at reader matter and
obsidian which we will link from
the show notes. And I think
people really should have a look
at at school of swift.com.
Because there are some nice
workshops on there. And I think
by looking into that content,
you are also supporting a very
interesting person who loves
transformers at Arrow style. And
is there anything that we forgot
to talk about our stuff that we
definitely should cover?
Frank Courville: Oh, that's it,
man.
Jeroen Leenarts: Okay, in that
case, Frank, thank you very much
for your time. And I'd like to
say it was it was interesting
talking to you. And yeah, well,
we'll we'll meet again at some
conference. Hopefully, he'll be
nice if
Frank Courville: we will. I'm
sure we will. Alright, take it
easy, man.