AppForce1: news and info for iOS app developers
AppForce1: news and info for iOS app developers
iOS Developer Conference Season 2023
This episode's articles:
- Spinning Up a Feature Request Screen with Supabase
- Security in iOS Applications
- SwiftUI: Using a Repository as the single source of truth
- Tips and tricks for exploring a new codebase
- Grand Central Dispatch (GCD)
- Swift Evolution Monthly: March + April '23
- Simplify Time Comparisons in Swift with RelativeDateTimeFormatter
- Optimizing your app for Network Reachability
- Discover how @MainActor works
I also mention:
Stream makes it easy for you to seamlessly integrate real-time experiences into your application. Check out their Swift tutorial to learn how you can get started adding video or in-app messaging to your apps!
Lead Software Developer
Learn best practices for being a great lead software developer.
Rate me on Apple Podcasts.
Send feedback on SpeakPipe
Or contact me on Mastodon: https://hachyderm.io/@appforce1
Support my podcast with a monthly subscription, it really helps.
My book: Being a Lead Software Developer
Welcome to AppForce1 episode 103. My name is Jeroen Leenarts and I’ve been developing software for over 20 years, developing iOS apps for over 10 years, running the Dutch CocoaHeads for over 9 years.
If you are an iOS app developer, you should listen to my podcast because I will keep you updated on interesting articles, conferences, and events you might not have heard about.
In this episode, I’m going to talk about:
- Spinning Up a Feature Request Screen with Supabase
- Security in iOS Applications
- SwiftUI: Using a Repository as the single source of truth
- Tips and tricks for exploring a new codebase
- Grand Central Dispatch (GCD)
- Swift Evolution Monthly: March + April '23
- Simplify Time Comparisons in Swift with RelativeDateTimeFormatter
- Optimizing your app for Network Reachability
- Discover how @MainActor works
I got a conference ahead of me on Friday. For me a local one, AppDevCon in Amsterdam. I might also go to WeAreDeveloper World Congress in Berlin. I probably know about that later this week.
Anyways, having these conferences lined up scratches that itch again. The Do iOS kind. We are starting our financial planning soon and most likely I will take on the burden of Do iOS financially and license the branding from CocoaHeadsNL to give us some more breathing room budget-wise. More budget would mean a bigger and even better conference. The challenge with CocoaHeadsNL is we have an upper budget cap we can run with due to tax reasons. If we stay beneath a certain upper limit with the entire non-profit in funds passing through, we do not have to report much to the Dutch tax service. But running a conference bigger than the 2022 edition of Do iOS will not fit within that limit.
So here's to some healthy financial planning ahead of us. And if you would like to sponsor Do iOS 2023, do reach out. If we commit, it will be sometime in November.
On a more personal note. The kids are back in school again after 2 weeks of school holiday. We had the Kind's birthday, liberation day and Lisa had an amazing birthday party with some classmates. We planned it a bit after her day just to give us all some breathing room. Both of the kids did a lot of sleeping over all over the place, so it was an easy mode household for my wife and me. My wife will have some amazing news soon, not a baby, I promise, and her recovery from her concussion seems to have passed into a new stage. She is fully active again, after more than 18 months. It resulted in her picking some interior painting at our home. Just to get rid of a few scuffs and smudges on the walls.
The launch of the Twitter clone project went great with Stream, and I am now working on yet another project with a very different focus. And within a month Stream will have something huge to announce as well.
Conference season is in full swing and I look forward to attending my first of this year. Yes, AppDevCon will be my first conf of the year. I wish I could've gone to Deep Dish, Swift Heroes, and a few other conferences. Hopefully, some CFPs will result in an invitation. I can do an amazing talk on Tuist right now if anyone wants me to.
Let's get started with the articles. I collected a bunch.
Spinning Up a Feature Request Screen with Supabase
Jordan Morgan has a nice article on a neat use case using Supabase. If you haven't heard of Supabase, it is a hosted PostgreSQL provider with a whole bunch of other useful services around it.
Jordan needed a cloud database for his feature request screen, and Supabase was the perfect fit. Read his article and let me know your thoughts about using a platform like Supabase for your apps.
At Stream, Stefan wanted to create a small app for a step-counting competition. And he asked me to do some backend API for it because I might have the time for it and I can quickly put something together for him.
I didn't have the time, so I casually suggested he'd look into Supabase. A few hours later he got back to me telling me how awesome Supabase was, with quite a feature complete implementation for the step tracking already.
So if you need quick, easy, scalable storage and many other amazing features with great developer experience, check Supabase.
Kelvin has a nice article on app security.
Security is a top priority in mobile app development, as users entrust their personal and sensitive data to the apps they use daily. For iOS developers, it is essential to understand and implement security best practices to protect user data and maintain the trust of their users. In this article, we will explore various security measures that can be implemented in iOS applications and provide code examples to help you enhance the security of your apps
He lists a few of the things I agree you should do at a minimum in your codebase too. Check it out!
SwiftUI: Using a Repository as the single source of truth
Manuel shares his thoughts on using repositories in your SwiftUI codebase. We are not talking about a source repository like git but a repository of information in the architectural sense. By using the reactive elements of SwiftUI, you can create a single source of truth in your codebase, and setting things up in a repository architecture helps with creating proper boundaries.
Because...
In a SwiftUI app, it is important to have a single source of truth for the app’s data. This ensures that all views and components that rely on the data are always in sync, preventing inconsistencies and bugs. One way to achieve this is by using a Repository object to manage the app’s data. In his article, Manuel will explore how to use a Repository object to hold the single source of truth for a SwiftUI app
Donny gets to see a lot of different codebases these days. So he has some tips to share.
Tips and tricks for exploring a new codebase
As a developer, joining a new project or company is often daunting and scary. You have to get aquatinted with not just a whole new team of people, but you also have to familiarize yourself with an entirely new codebase that might use new naming conventions, follows patterns that you’re not familiar with, or even uses tooling that you’ve never seen before.
There are plenty of reasons to be overwhelmed when you’re a new member of any engineering team, and there’s no reason to feel bad about that.
In the past two years, Donny has done a lot of contracting and consulting which means that he's had to explore and understand lots of codebases in short amounts of time. Sometimes even having to explore multiple codebases at once whenever he has to start to work for more than one client in a given week or two.
Donny had his fair share of confusion and feeling overwhelmed with new codebases.
In his post, Donny provides some tips and tricks to get himself comfortable with codebases of any size in a reasonable amount of time.
Another one by Kelvin this week.
Concurrency is the art of managing multiple tasks in parallel, and Grand Central Dispatch (GCD) is a powerful framework that enables developers to write efficient, concurrent applications on iOS and macOS platforms. GCD is an essential part of the Swift programming language, helping developers optimize application performance and responsiveness. In this article, we’ll discuss the role of GCD in Swift, explore its key features, and look at a real-life example of GCD usage in a project.
Cihat wrote another edition of the
Swift Evolution Monthly: March + April '23
It is a great replacement for the Swift Weekly Brief I helped run a while back.
If you want to stay updated with things happening in the Swift Community process and what proposals are coming our way. Subscribe to his newsletter for sure.
Leo is back again with a nice article. It is titled
Simplify Time Comparisons in Swift with RelativeDateTimeFormatter
This is one of those typical APIs in iOS development you didn't know you needed. Very convenient and very useful when doing date and time comparisons. Check it out and you can instantly improve how you report time and date durations to your end users.
Network Reachability, people keep making the same mistakes. Check this article by Antoine to remind yourself how to do reachability checking right.
Optimizing your app for Network Reachability
The biggest takeaway is don't test reachability before networking. Just try, and if it fails, use the reachability APIs to better report to your users what went wrong.
So you want to learn how **@MainActor** works in Swift, but you don’t have much time?
In just a few minutes we’ll go over everything you need to understand how this powerful feature works!
If you already have some experience working with iOS, you probably know this important rule: anything that is connected to the UI can only be accessed from the main thread.
Outro
And that's it again for this week.
If you have any feedback, please send me a message through Twitter. My DMs are open. And don’t forget, you can buy me a coffee or subscribe to my podcast now. Links for all that are in the show notes.