इस एपिसोड के बारे में
Jeroen returns to AppForce One with a pivot to a new format focused on his journey back to iOS development after working in developer relations at Stream.
• Now working at Dawn Technology (formerly Egeniq), returning to hands-on iOS development
• Introducing "AppForce One Work Log" - a bi-weekly, 25-minute show sharing real development experiences
• No corporate speak or fluff - just honest developer-to-developer conversations about real coding challenges
• Each episode will include: week in review, code deep dives, tool discussions, and lessons learned
• Currently working on refactoring an 8-year-old UIKit app for emergency response (bedrijfshulpverlening)
• Excited about modernizing legacy code while keeping the app running for users who depend on it
• Organizing DoiOS 2025 conference in November with practical, real-world iOS development content
• Actively seeking listener feedback on what topics would be most valuable to cover
Reach out with your iOS development challenges on X, Mastodon, LinkedIn or through my website. I'm genuinely interested in your feedback and may feature your questions in future episodes.
A self hosted email newsletter, send emails via Amazon SES without sacrificing deliverability.
Riverside.fm
The easiest way to record podcasts and video interviews in studio quality from anywhere.
Buzzsprout
Start your own podcast and get a $20 Amazon Gift Card (sent after 2nd paid invoice)
Backblaze Cloud Backup
Never Lose a File Again with the World's Easiest Cloud Backup. Back up your Mac or PC just $6/month.
Lead Software Developer
Learn best practices for being a great lead software developer.
Disclaimer: This post contains affiliate links. If you make a purchase, I may receive a commission at no extra cost to you.
Do iOS: https://do-ios.com
Rate me on Apple Podcasts.
Send feedback on SpeakPipe
Or contact me:
- Mastodon: https://hachyderm.io/@appforce1
- X: https://x.com/appforce1
- BlueSky: https://bsky.app/profile/appforce1.net
- LinkedIN: https://www.linkedin.com/in/leenarts/
Support my podcast with a monthly subscription, it really helps.
My book: Being a Lead Software Developer
नोद्स दिखाएं 🔗
अनुलिपि 🔗
00:00:01.483 --> 00:00:03.145
Let's see if I can do this in a single take.
00:00:03.145 --> 00:00:07.754
It's been a while and this is going to be episode 104.
00:00:07.754 --> 00:00:12.587
So, hey there, ios developers, welcome back to AppForceOne.
00:00:12.587 --> 00:00:19.039
My name is Jeroen Leenarts and if you've been following this podcast for a while, you might have noticed it's been quite a while.
00:00:19.039 --> 00:00:22.346
Well, today I'm excited to share something new with you.
00:00:22.346 --> 00:00:25.753
You see, life has a funny way of throwing curveballs at you.
00:00:26.219 --> 00:00:32.889
Some of you might know that I was working at Stream for a while doing developer relations work, speaking at conferences and helping build that community.
00:00:32.889 --> 00:00:40.993
I was speaking at events like NS Spain, swift, heroes, techorama, appdevcon and 360iDev.
00:00:40.993 --> 00:00:47.725
I was helping developers discover new tools, writing content about developer experience and, honestly, I love that work.
00:00:47.725 --> 00:00:49.030
Past tense.
00:00:49.030 --> 00:01:08.626
You probably know where this is going, but, as many of you probably already know, the tech industry can be very unpredictable and sometimes things just need to change and when those things happen, they affect someone personally and it can be jarring, but there's the thing Sometimes these curveballs lead you exactly where you need to be.
00:01:08.626 --> 00:01:12.263
So here I am, back to what I love most building iOS apps.
00:01:12.263 --> 00:01:20.971
I'm now working at Dawn Technology, which some of you might know as eGenic, the company behind the AppDevCon conference and, honestly, I couldn't be happier about it.
00:01:20.971 --> 00:01:27.412
There's something deeply satisfying about writing Swift code, solving complex problems and creating something that real people will use.
00:01:27.412 --> 00:01:31.206
It's the kind of work that gets me excited to wake up in the morning and start coding.
00:01:32.289 --> 00:01:36.346
But here's the thing Today marks a significant shift for this podcast.
00:01:36.346 --> 00:01:45.162
Instead of the weekly developer news format, you might remember, I'm pivoting AppForce One into something more personal, more authentic and hopefully more valuable to you as an iOS developer.
00:01:45.162 --> 00:01:46.852
I'm calling it the AppForce One into something more personal, more authentic and hopefully more valuable to you as an iOS developer.
00:01:46.852 --> 00:01:49.016
I'm calling it the AppForce One Work Log.
00:01:49.016 --> 00:01:57.811
Here's what this means I'm going to share my journey as an iOS developer in real time the wins, the struggles, the lessons learned and the code that actually works.
00:01:57.811 --> 00:02:02.631
No fluff, no corporate speak, just honest developer-to-developer conversations.
00:02:02.990 --> 00:02:03.572
Why the change?
00:02:03.572 --> 00:02:08.447
Well, after spending time in developer relations, I realized something important.
00:02:08.447 --> 00:02:20.602
While I loved helping developers discover new tools and technologies, what I missed most was the actual building, the moment when your code finally works after hours of debugging, the satisfaction of shipping something that real people will use.
00:02:20.602 --> 00:02:22.426
Let me give you a concrete example.
00:02:22.426 --> 00:02:27.274
Just like last week, I was working on some SwiftUI view that needed to handle complex state management.
00:02:27.274 --> 00:02:35.587
I spent three hours trying to get the animations right, debugging why my addState variables weren't updating properly and figuring out how to make the UI feel responsive.
00:02:35.587 --> 00:02:39.551
When I finally got it working, that feeling of dissatisfaction was incredible.
00:02:39.551 --> 00:02:46.693
That's the kind of real, messy development experience I want to share with you, and I think there's value in sharing that journey with you.
00:02:46.693 --> 00:02:52.830
Not the polished, perfect version, but the messy, real version of what it's like to be an iOS developer in 2025.
00:02:53.552 --> 00:02:54.394
You know what I've noticed?
00:02:54.394 --> 00:02:56.560
There's a gap in the podcasting space.
00:02:56.560 --> 00:03:07.906
We have plenty of shows about the latest iOS news, about new frameworks and libraries, about what Apple announced at WWDC, but there aren't many shows that dive deep into the day-to-day reality of building iOS apps.
00:03:07.906 --> 00:03:18.069
The debugging sessions that will take hours, the architectural decisions that keep you up at night, the moments when you realize you've been approaching a problem completely wrong that's what this work log is going to be.
00:03:18.069 --> 00:03:21.025
It's going to be raw, honest and hopefully useful.
00:03:21.025 --> 00:03:24.752
I'm not going to pretend I have all the answers because I don't.
00:03:24.752 --> 00:03:26.320
Hopefully useful.
00:03:26.320 --> 00:03:27.865
I'm not going to pretend I have all the answers because I don't.
00:03:27.865 --> 00:03:30.192
I'm going to share my mistakes, my learning and the solutions I discover along the way.
00:03:30.192 --> 00:03:34.835
And here's the thing I think this format will be more valuable to you as listeners as well.
00:03:34.835 --> 00:03:44.206
Instead of hearing about tools and technologies in the abstract, you'll hear about them in the context of real projects, real problems and real solutions so what you can expect.
00:03:44.867 --> 00:03:48.213
So what will those work log episodes be like?
00:03:48.213 --> 00:03:50.706
I'm not entirely sure yet.
00:03:50.706 --> 00:03:56.109
I do know I aim to do a bi-weekly format, so every other week you will get a new episode.
00:03:56.109 --> 00:03:57.645
Why bi-weekly?
00:03:57.645 --> 00:04:07.645
Because I want to give each episode the attention it deserves and I want to make sure that the content is solid and is actually based on complete problems and things that I did.
00:04:07.645 --> 00:04:10.737
I'm not going to rush content just to hit a weekly deadline.
00:04:10.737 --> 00:04:14.512
I want each episode to be packed with real value, not just filler content.
00:04:14.512 --> 00:04:18.244
Each episode will be around 25 minutes.
00:04:18.244 --> 00:04:24.226
That shows it specifically, because it's perfect for your commute, your workout and that coffee break when you need a mental rest from coding.
00:04:24.226 --> 00:04:30.466
It's long enough to deep dive into topics, but short enough that you can listen to the whole thing without feeling overwhelmed.
00:04:30.466 --> 00:04:36.968
Each episode will follow a consistent format the week in review what I actually worked on what shipped, what didn't.
00:04:37.459 --> 00:04:44.829
I'll be honest about the challenges, the wins and the moments when I got stuck, code deep dive, a specific technical challenge I faced and how I solved it.
00:04:44.829 --> 00:04:50.521
This might be a SwiftUI animation issue, a core data problem or figuring out how to integrate a new API.
00:04:50.521 --> 00:04:56.942
I'll share the actual code as far as my employer allows, the debugging process and the final solution.
00:04:56.942 --> 00:05:05.266
And if there's new tools or libraries or techniques that I discovered or revisited, I will also include a section that I would like to call tool talk.
00:05:05.266 --> 00:05:07.629
But here's the key I won't just tell about them.
00:05:07.629 --> 00:05:14.581
I'll tell you how I actually used them in real projects and what worked for me and what didn't work for me, and why I made those choices.
00:05:14.581 --> 00:05:17.187
And, of course, there's lessons that I'm learning.
00:05:17.187 --> 00:05:21.767
So let's share the lessons learned as well, the mistakes I made and what I'd do different the next time.
00:05:21.767 --> 00:05:28.329
This is crucial because we all make mistakes and there's so much value in learning from someone else's experience I've noticed over the years.
00:05:30.401 --> 00:05:31.947
I will also be looking ahead a little bit.
00:05:31.947 --> 00:05:35.786
So what's coming up in the next sprint, what I'm excited about, what I'm working on in the long run?
00:05:35.786 --> 00:05:44.064
So, overall, it will be about real examples, that I'll be sharing actual code snippets about real project challenges and honest assessments of what's working and what isn't.
00:05:44.064 --> 00:05:46.329
No fake demos or oversimplified examples.
00:05:46.329 --> 00:06:11.500
If something is complex, I'll try and explain it properly, and if I don't, or if you don't understand something, please let me know and I will revisit it in a later episode, because feedback is important and I want to make sure that the things that I share, that people actually understand what I'm talking about, and for me it's also a learning experience to discover how I actually talk about these technical, challenging topics in a spoken format.
00:06:11.500 --> 00:06:14.637
Also, I want things to be interactive.
00:06:14.737 --> 00:06:15.800
I'll be sharing challenges.
00:06:15.800 --> 00:06:26.245
I'll be sharing the challenges that I'm facing and I might actually even ask for your input occasionally Because, let's be honest, the best solutions often come from a community.
00:06:26.245 --> 00:06:31.980
So multiple people, multiple minds, thinking and giving input, and that's where I need your help.
00:06:31.980 --> 00:06:44.012
I want to know what you want to hear about, what topics interest you most, what challenges you are facing in your own ios development, so maybe together we can come up with nice solutions that work for everybody who's listening to this podcast.
00:06:44.012 --> 00:06:49.483
I want to know what this podcast makes it most valuable for you.
00:06:49.483 --> 00:06:53.822
So if you give me that input, I can do things that really help you as an individual.
00:06:53.822 --> 00:07:02.701
You can reach me on Twitter Sorry, it's called X nowadays LinkedIn Mastodon or through my website with your suggestions.
00:07:02.701 --> 00:07:10.391
Tell me what you'd like to hear about, whether it's SwiftUI, best practices, core data optimizations, testing strategies or anything else related to iOS development.
00:07:10.391 --> 00:07:13.997
Your input will help shape the content of future episodes.
00:07:13.997 --> 00:07:17.891
So let's dive in a little bit.
00:07:17.891 --> 00:07:20.843
Let me tell you a bit where I'm coming from, because context matters.
00:07:21.386 --> 00:07:25.519
I've been doing iOS development for over a decade now software development in general.
00:07:25.519 --> 00:07:26.721
For over 20 years now.
00:07:26.721 --> 00:07:29.860
I've worked at startups, scale-ups and larger companies.
00:07:29.860 --> 00:07:36.744
I've been through the great Swift migrations, dealt with the app stores' ups and downs and seen the ecosystem evolve dramatically.
00:07:36.744 --> 00:07:52.093
I remember when we were all excited about AutoLayout when Swift first came out and we were all trying to figure out optionals, and when SwiftUI was announced, we wondered if it would actually work because, let's be honest, when SwiftUI was just around the corner, it didn't really work so great.
00:07:52.093 --> 00:07:59.778
So my time at Stream taught me a lot about developer experience, about what makes tools actually usable versus just flashy.
00:07:59.778 --> 00:08:05.745
I learned that the best developer tools are the ones that solve real problems, not imaginary ones.
00:08:05.745 --> 00:08:10.622
I learned that developers are incredibly smart and you can see through marketing fluff in about two seconds.
00:08:10.622 --> 00:08:11.612
I'm one of them.
00:08:11.612 --> 00:08:20.451
I learned that the most valuable content is the stuff that helps developers get their job done faster and better, so you want to get information that actually helps you tomorrow and today.
00:08:20.451 --> 00:08:24.461
So now I'm back to building apps full time and it feels like coming home.
00:08:25.041 --> 00:08:30.740
There's something deeply satisfying about writing Swift code, solving complex problems and creating something that people will actually use.
00:08:30.740 --> 00:08:33.557
And let me tell you about the project I'm working on.
00:08:33.557 --> 00:08:40.561
It's an app for bedrijfshulpverlening, which translates to company emergency response or corporate first aid.
00:08:40.561 --> 00:08:51.979
It's essentially an app that helps companies manage their emergency response procedures that's a difficult word, at least for me as a non-native speaker First aid protocols and safety compliance.
00:08:51.979 --> 00:08:57.342
It's a critical app that could actually save lives, which makes the work feel incredibly meaningful.
00:08:57.342 --> 00:09:03.764
This is a client project at Dawn Technology and it's exactly the kind of challenging, meaningful work that gets me excited about iOS development.
00:09:04.730 --> 00:09:07.655
But here's the thing this code base is a beast.
00:09:07.655 --> 00:09:11.660
It's over eight years old, which, in iOS development terms, is ancient.
00:09:11.660 --> 00:09:15.581
It was built before SwiftUI existed, so it's all UIKit.
00:09:15.581 --> 00:09:21.817
It's using patterns and practices that were cutting edge in 2016, but are now considered outdated.
00:09:21.817 --> 00:09:30.120
We're talking about manual view controller management, old networking patterns and architectural decisions that made sense at the time but are now technical debt.
00:09:30.120 --> 00:09:31.403
And I love it.
00:09:31.403 --> 00:09:34.980
I absolutely love it because this is the kind of challenge that gets me excited.
00:09:34.980 --> 00:09:39.942
I'm going to be rolling up my sleeves and tackling this massive ongoing refactor while adding new functionality.
00:09:39.942 --> 00:09:44.239
It's like being handed a classic car that needs complete restorations.
00:09:44.239 --> 00:09:48.500
Sure, it's going to be a lot of work, but the end result is going to be amazing.
00:09:48.990 --> 00:10:03.174
This is exactly the kind of real-world development challenge that I want to share with you in this work log the architectural decisions, the refactoring strategies, the moments when you realize that what seemed like a simple change required touching 15 different files and that's just not a lot yet.
00:10:03.174 --> 00:10:09.225
The satisfaction of modernizing old code while keeping the app running smoothly for users who depend on it.
00:10:09.225 --> 00:10:16.282
It's a bit like changing a tire on a car while going 120 miles or 200 kilometers an hour down the highway.
00:10:16.282 --> 00:10:22.498
But I'm also aware that iOS development in 2025 is different from when I started.
00:10:22.498 --> 00:10:32.231
We have SwiftUI, we have AsyncAwait, we have Actors, we have these new concurrency models we get strict concurrency soon and dealing with AI integration in ways we never imagined.
00:10:32.371 --> 00:10:34.518
It's exciting, but it's also overwhelming.
00:10:34.518 --> 00:10:39.859
There's always something new to learn, always a new framework to understand, always a new best practice to adopt.
00:10:39.859 --> 00:10:42.812
That's why I think sharing this journey makes sense.
00:10:42.812 --> 00:10:51.620
I'm learning alongside you, making mistakes big mistakes, most likely, I hope not and hopefully finding solutions that can help you in your own projects.
00:10:51.620 --> 00:11:01.697
I'm not claiming to be an expert in everything far from it but I am someone who's been doing this for a while, who's made a lot of mistakes, trust me and who's learned a lot of lessons along the way.
00:11:02.110 --> 00:11:03.131
So what's coming next?
00:11:03.131 --> 00:11:08.602
In the next episode, I'll be diving into this Bedrijfshulpverlening app refactor.
00:11:08.602 --> 00:11:23.659
I'll be sharing the first architectural decisions that I'm making with the team how we are approaching the migration from old patterns to new ones, and the challenges of refactoring a critical app that can't afford downtime, because this thing needs to keep working and it needs to be stable.
00:11:23.659 --> 00:11:29.897
I'll also be sharing some of the tools and libraries I'm using in this refactor, including some that might surprise you.
00:11:29.897 --> 00:11:32.418
Not everything needs to be the latest and greatest.
00:11:32.418 --> 00:11:36.260
Sometimes the best solution is the ones that have been around for a while and just work.
00:11:36.260 --> 00:11:41.322
But before I wrap up, I have to share something I'm incredibly excited about.
00:11:41.322 --> 00:11:43.076
You probably can already guess what it is.
00:11:43.750 --> 00:11:49.134
I'm again working on organizing do ios in 2025, and it's shaping up to be something special.
00:11:49.134 --> 00:12:00.279
For those who don't know, do ios has been one of the premier ios conferences in europe and I'm honored to be the person behind this conference, and I'm bringing it back in 2025 in november.
00:12:00.279 --> 00:12:03.690
Now you might be wondering isn't there a conflict of interest there?
00:12:03.690 --> 00:12:09.042
After all, I work at dawn technology, which was formerly Egenic, the company behind AppDevCon.
00:12:09.042 --> 00:12:13.441
But here's the thing Dawn Technology actually loves that I'm organizing my own iOS conference.
00:12:13.441 --> 00:12:16.499
In fact, it was a large part of why they hired me.
00:12:16.499 --> 00:12:24.063
They value the community involvement, the networking and the expertise that comes from being actively engaged in the iOS developer community.
00:12:24.063 --> 00:12:29.636
My podcast work also played a significant role in their decision to bring me on board.
00:12:30.389 --> 00:12:33.801
We're putting together an amazing lineup of speakers for DoiOS 2025.
00:12:33.801 --> 00:12:46.743
Most of them are already online and it's focused on practical, real-world iOS development content no fluff, no corporate presentations, just developers sharing what they've learned, building actual apps.
00:12:46.743 --> 00:12:53.320
It's going to be the kind of conference you will leave with actionable insights you can use in your projects immediately.
00:12:53.320 --> 00:13:07.294
I'll, of course, be sharing some details ongoing about DuoOS 2025 in the next episodes, including speaker announcements, session previews and behind-the-scenes content about what goes into organizing a developer conference, and I can tell you it's a lot.
00:13:07.294 --> 00:13:14.639
If you're interested in iOS development and want to connect with other developers who are passionate about building great apps, this is definitely something you want to keep an eye on.
00:13:14.639 --> 00:13:27.113
I'll also be sharing some of the tools and libraries I'm using in my day-to-day work, including some that might surprise you while organizing this conference and I want to hear from you, might surprise you while organizing this conference and I want to hear from you.
00:13:27.133 --> 00:13:27.613
What are you working on?
00:13:27.613 --> 00:13:28.273
What challenges are you facing?
00:13:28.273 --> 00:13:30.774
What would you like to explore in future episodes?
00:13:30.774 --> 00:13:33.116
Are you planning to attend any conferences this year?
00:13:33.116 --> 00:13:43.865
Not only Duo IOS, but also Swift Leads, ns, pragma, swift Connection, arctic Conference there's just so many going on this year again AppDevCom, of course.
00:13:43.865 --> 00:13:46.506
Is there one of those that you're going to?
00:13:46.506 --> 00:13:51.140
Please let me know and tell me why you are interested in going to this specific conference.
00:13:52.009 --> 00:13:55.817
You can reach me on X Mastodon, linkedin, as I already mentioned.
00:13:55.817 --> 00:14:07.041
You can find me through my website, and I'm genuinely interested in your feedback and your stories and if you're listening on a podcast app that's supported, you can also use Buzzsprout's fan mail feature to send me an SMS message directly.
00:14:07.041 --> 00:14:14.437
It's privacy preserving, so I won't get your phone number, and I'd love to hear from you and maybe even feature some of your questions and feedback in future episodes.
00:14:14.437 --> 00:14:16.455
So that's the plan.
00:14:16.455 --> 00:14:21.892
Appforce One is evolving into something more personal, more technical and hopefully more valuable for you.
00:14:21.892 --> 00:14:22.895
As an iOS developer.
00:14:22.895 --> 00:14:26.610
I'm excited about this new direction and I hope you are too.
00:14:26.610 --> 00:14:32.475
The next episode will be out in about two weeks and I'll be sharing real code, real challenges and real solutions.
00:14:32.475 --> 00:14:37.153
Until then, keep building amazing apps and remember every expert was once a beginner.
00:14:37.153 --> 00:14:38.897
Every pro was once an amateur.
00:14:38.897 --> 00:14:43.674
The key is to keep learning, keep building and keep sharing what you learn with the community.
00:14:43.674 --> 00:14:47.798
Thanks for listening and I'll see you in two weeks for the first real work log episode.