Jeroen Leenarts profile image

Jeroen Leenarts

You might know him as AppForce1. iOS development specialist at a big insurance company. In his spare time he organises CocoaHeadsNL, records a podcast, organises workshops and conferences, and recently released his book “Lead Developer”.

Twitter Site

How and when did you get into programming? And into iOS?

I got into programming as a kid. My dad bought a Sinclair ZX Spectrum into the home. He recorded programs from the radio at night and loaded those in the morning. I just wanted to play Manic Miner. From there we upgraded to a 286 (with a turbo button). I was able to plan Commander Keen and Wolfenstein on that. But once 386 computer became a thing I needed to do more and more work on getting a boot sequence that kept the 286 a viable computer to play games on. Loading drivers into “high memory” and stuff like that.

I kept on gaming, but didn’t do much programming. Once I had to choose what I wanted to focus my education on I chose a computer science-related education. It involved a lot of technical topics from electrical and mechanical engineering as well since it was an education aimed at creating a cross engineering discipline software developer.

I did my final internship at a company called Info Support somewhere in the Netherlands and started there as a Java Programmer. I did anything Java. And I went deep, I knew a lot about JVM, optimising, and memory details. I did some Eclipse RCP development, JSP Struts and whatnot web development, on the side I actually also got certified as a Microsoft Certified Application Developer on ASP 1.1.

I got sucked into the Apple ecosystem right around the time Panther was replaced by MacOS Tiger. We’re talking 2005 now. I wanted a Unix like machine without too much headache. Java was a big thing on MacOS back then. So why not develop Java on macOS.

I kept on working and at some point, it dawned on me that I might actually try and develop software for iPhones. That was around iOS 4 when I really dug in with the Big Nerd Ranch guide. And at the same time, I started campaigning at my employer I wanted to do mobile iPhone work. But after some failed project pitches for clients it fell through. And I started looking for an iPhone role outside of my first employer. Mind you, I worked there for over 9 years before I left. I wanted iPhone development that bad.

Then I transitioned to Xebia and I was placed at the Dutch ING bank app team and it was amazing. I felt like I was set free. I was able to program Objective-C code to my heart's content. And I moved from the new guy without related experience on the team to one of the go-to engineers of the product. We built some amazing things while I was contracted out to the ING. And to this day I still miss the ING team from back then. It was the closest most mission-oriented group of people I worked with. And all we did there was having fun and creating product. It was a blast. I worked on the ING app from February 2012 until about the end of 2015. So that’s the iPhone iOS 5.0 till iOS 7.0 period.

Computers with Turbo buttons! Awesome times 😃. How did you find ObjC after doing Java previously? Was the syntax easy to grasp?

It was weird at first. But quickly it grew on me. As a Java consultant, I always preferred readability over brevity. And with the release of Xcode, code completion got somewhat acceptable. One thing objective C has on any language is descriptive message naming. I love reading other people’s objective-c way more than Swift because Objective-C is so descriptive due to the sheer length of message invocations.

Any developer showcasing how smart they are with Swift by dumping everything on a single line should be required to support that code for at least a year. They’ll quickly decide that brevity is often not in your own best interest. 😬

So iOS was your main thing since you started until now? You recently mentioned having worked on Django so I am curious how web fits into that?

Well I got started in Java in 2002. Switched to iOS in 2012. And since then my main focus has been iOS. But… I worked at a start-up company from January 2017 until April 2018, there I worked on an iPad only app and its Django REST based backend. I was familiar with Java and server side from back in the day. So getting started with Django was pretty easy. Especially when you are somewhat familiar with Python and have a very experienced Django developer available providing guidance and pair programming. I was up to speed and dangerous with Django in about 2 weeks time after I started working there.

We worked in a team of 4 software developers and between the 4 of us, we did everything. iPad app, Web UI, Rest interfaces and everything underneath right down to the Amazon RDS Postgres compatible database.

We moved really fast and pretty much any good idea executed on. I still remember we were able to throw out 5 always on VPS instances and replaced those with a couple of Lambda functions and some S3 and notification infra. It cut down on cost by over 80% in that area and improved performance by about 10x. It was a batch based import functionality that caused huge load spikes that was only needed once a week.

Also the day I pointed out we could improve our DB performance by adding a few indexes was a fun day. I always had a lost of interest in databases and SQL query optimisation. Quite often people throw capacity at a problem while it is easily fixed at the database level.

I am curious, with your experience, would you generally recommend that iOS devs try a bit of web development also?

Yes. But I would focus attention on developing some of your own API. Understanding the impact your API usage can have in a backend is a very good experience to have.

Problem is. A small app on the side will not give you the exposure you would have when working on some backend full time for a few months.

So it is a slippery slope to get on. What is good enough? I do know being able, as an app team, to just do your own backend feels like a superpower. It is wonderful to miss something in an API, fire up your other IDE and just add and deploy.

I think it is also a nice skill for indie developers or side projects because you can create new kinds of apps.

Let's turn to podcasting.. You started the AppForce1 podcast in late 2020. Was this your first podcasting experience? What was the decision behind starting iOS podcast?

Ah yes, the podcast. I started that in October 2020. The direct reason is this talk I gave for CocoaHeadsNL, a meetup community I run close to 8 years now.

Every now and then we are short on a speaker for our monthly CocoaHeadsNL meetups and then one of “us” steps in and does a talk to fill the gap. This time it was my turn. But Corona, so we are doing our meetups online since March 2020. I decided to pre-record my talk. And I was so uncomfortable. When I present I kind of feed off of the room. And when recording that just does not happen. Afterwards, the talk turned out ok, I was thinking. How to get better at this. Well, I can record myself more, when do you need that? Podcast. And that’s why I started.

I did create a concept document for myself to have some sort of format. I went with a last week’s new article show. On a whim I asked Antoine van der Lee to join me for an interview. That went well and Donny Wals volunteered to be my next guest. And after those two guests I buttoned down my workflow and went at it to ask basically anyone I’d find interesting to have as a guest. Because talking with someone and showcasing their personality and journey is something that clicked with me. Since that first session with Antoine I have now interviewed more than 27 people for my podcast and I 10 more on my schedule.

The best thing I did in regards to podcasting was getting good editing software from the start. Hindenburg Journalist Pro hits all the sweet spots for me in regards to voice audio editing. I do minimal editing and use built-in default voice profiling and noise cancelling. The result is always great.

So yeah the decision to start a podcast. Basically it was something I learned as a software developer. If it hurts, do it more often. Either you learn and get good at it, or you know what to avoid in the future. (With code, obviously there is also a third step requiring you to automate things. Which I did for quite a number of things for my podcast already.

A fun side note, Donny and Antoine got started with presenting at CocoaHeadsNL and I still remember the private talk I had with Antoine years ago in which he was considering blogging as a thing to do. We all know how that turned out. 👍

That's a cool start! Apart from the editing software, what does the setup look like? Did you get some kind of a fancy microphone?

My podcasting setup is pretty straightforward. An EVO 4 USB Audio interface and Samson Q7 dynamic microphone. On top of that an Audio Technica ATH-M50x headphones and some other bits and pieces like an XLR cable, plop cap, and stuff. In total about 300 euros worth of equipment.

What is the main motivation for organizing conferences? Like the CocoaHeadsNL and DO iOS?

The CocoaHeadsNL I got involved with because I was sleeping multiple nights in a hotel in Amsterdam when I was working at ING. I needed something to do in the evenings and attending meetups was one of them. The person doing the CocoaHeadsNL asked if someone could help him organise a bit and I got involved then and there. Shortly after that he went back to the US for work.

I worked at Xebia at the time and they really support their people in things related to their core business. I was into iOS so they supported my work for CocoaHeadsNL with a little bit of time and financially by paying the incorporation of CocoaHeadsNL into a non-profit. That’s right CocoaHeadsNL is a legal entity on its own. And that turned out to create exactly what our now sponsors wanted. Now they could sponsor us without additional costs due to Dutch tax rules.

Xebia also supported my idea of DO iOS. The first two editions were fully financed by them. But I was master of pretty much everything with the help of one of Xebia’s marketing persons. It allowed me to learn a lot, make some mistakes and just have a blast. After two editions I left Xebia and Do iOS was put on ice for a while. Xebia was getting out of the Mobile business.

At some point I suggested Xebia to transfer everything related to Do iOS to CocoaHeadsNL. Since it was a legal entity completely on its own, Xebia could not and did not want to assert any control over CocoaHeadsNL. I still thank them for that to this day. We were able to do a Do iOS under the CocoaHeadsNL umbrella 2 or 3 years ago and at the start of 2020 we were gearing up to do another one. But we postponed due to Corona. Hopefully in 2022 it will be back again in person in Amsterdam.

But that’s mostly not an answer to your question. I do CocoaheadsNL and DO iOS because I got the opportunity and it was something I could learn a lot of new skills without too much personal risk and it is just so cool to bring together people with similar passions and see what comes of it. And there are already so many people who got exposure through CocoaHeadsNL and Do iOS or a safe place to try something new or just find someone to bounce some ideas off of. Just doing things and seeing unexpected positive results is just so cool.

You could say it is a way to pay forward the insane amount of luck I had with things falling basically right in front of me.

I am one of those people if I see something new, it interests me. The worst that can happen is I make a fool of myself. I do try to do new things in a way that don't risk my financial well-being.

And just for the record, Do iOS is fully owned by CocoaHeadsNL and the way we set up CocoaHeadsNL we are not allowed to gain any financial gains from the non-profit. Which is really cool, because it keeps CocoaHeadsNL very pure in its purpose.

You certainly wear many hats.. Just as we speak, you launched a book "Lead Developer". Is this your first book? What is the simplest definition of "lead developer"?

Yes this is my first full book. I basically started writing it based on my notes over the past 2 years. I think I will iterate a few times on the current book and provide those as free updates to my readers.

As for a definition of a lead developer. I can just copy and paste from my book. “I think a lead software developer has nothing to do with seniority, smartness or any other measure of hard skill of an individual. To me, a lead software developer is just one of the team, with some extra tasks and a big responsibility for and to his/her peers and the company/client you work for.”

What was the experience of writing the book like? Was it fun? 🙂

It was actually quite fun. I decided to make it easy for me and wrote with the help of LeanPub. You write your book in a Markdown dialect and they render that into a book. EPUB, PDF, Mobi and “ready for print”. The hardest part was being consistent. A good guide on book writing is available on Gumroad.

My biggest lesson was, it doesn’t have to be 300+ pages. Just write on a topic you have a passion for or experience with and once you have said what you need to say. You are done. 10 pages, 100 pages, 300 pages, it is all ok.

I wrote my book mostly to learn and reflect in my own experience over the past two years as a lead developer. So it is all based on my actual experience. I wrote down what works for me and I hope somebody finds a few useful bits in my book. If I make 1 person’s life better. I already doubled the number of people positively affected by my writing.

And a small secret. If you use LeanPub. Publishing on Amazon KDP is very easy. The challenge is to gain traction on Amazon. But I published my book there as well just because I could and now people can also order a print on demand copy through Amazon.

Interesting. I would assume that turning the final text into EPUB, PDF and other formats would actually involve a lot of work.. But it sounds like it didn't?

You just press a button. And be willing to accept what LeanPub outputs. Which in my view is great.

Had no idea it can be this convenient!

You have a magic wand... and can change one thing about iOS development. What?

Compile times. Ages ago Java was already to compile incrementally successfully without too many issues. Xcode doing better in that area would be amazing. Current project I work on needs 5+ minutes for a clean build and about 1 for an incremental build if I am lucky. We. Already have been very aggressive in chasing down causes of slow compiles. Probably getting rid of all Objective-C will help too. No more mixed project is a goal for this year. 🤞

To step away from code, podcasts, conferences and the book 😄 what you do to relax?

I walk. Every day. At least 45 minutes. But I feel better when I hit an hour. Once or twice I don’t walk, I run. I do have the luxury of a Royal Estate of the Dutch Crown near my home with a public park area with miles and miles of well-maintained walking paths.

Also some fitness and running.

And my kids, Lisa and Milan are a joy to just play with. My wife just lets me do my thing mostly. Unless I slack on my chores. The two of us talk a lot when the kids are asleep and I’m not busy.

That's great! Walking is nice to chill out and to listen to podcasts 🙂

Thanks so much for taking the time! Do you want to give someone or something a shoutout?

Absolutely. There are so many. Especially everyone who has been a guest on my podcast or will be. :)

But I’d say talk with Chris Vaselli (@chrisvasselli). He’s been a guest on my podcast but his story is so interesting and powerful. He took a long road, but he is now in a place with his product that I think is awesome.

And I’d like to mention Bart (@barthoffman), Marco (@eMilty) and Jolanda from CocoaHeadsNL. The four of us organise CocoaHeadsNL. Especially Bart, he saved me on multiple occasions from doing something stupid.😅

Other chats

All chats