AppForce1: news and info for iOS app developers

Frank Courville, coach and iOS teacher

March 17, 2022 Jeroen Leenarts
AppForce1: news and info for iOS app developers
Frank Courville, coach and iOS teacher
Show Notes Transcript

Frank does many things. Organize meetups, present at conferences, coach and teach through https://ioscoachfrank.com/ and more recently https://schoolofswift.com/. You might see  him at a conference or two in 2022. Frank and I met at iOS Conf SG.

Learn more about Frank on:

Some of the tools we discussed:

Runway
Put your mobile releases on autopilot and keep the whole team in sync throughout. More info on runway.team

Lead Software Developer 
Learn best practices for being a great lead software developer.

Support the show

Please rate me on Apple Podcasts.

Send me feedback on SpeakPipe
Or contact me through twitter or Mastodon: @appforce1@mastodon.cloud

Buy me a Coffee or become a member of my podcast.

My book: Being a Lead Software Developer

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.