AppForce1: news and info for iOS app developers

Book update and learning about new and existing iOS features

July 06, 2021 Jeroen Leenarts Episode 36
AppForce1: news and info for iOS app developers
Book update and learning about new and existing iOS features
AppForce1: news and info for iOS app developers +
Help us continue making great content for listeners everywhere.
Starting at $3/month
Support
Show Notes Transcript

A new week, an new update. An update of my book and great new articles from the iOS community. Enjoy. Preparing loads of content here. And did you know I passed my 75th episode already?

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.

Practical Core Data by Donny Wals
Learn Core Data from the ground up using new and modern techniques.

Disclaimer: This post contains affiliate links. If you make a purchase, I may receive a commission at no extra cost to you.

Support the Show.

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

Jeroen Leenarts:

Hi, my name is Jeroen Leenarts. Hill. Welcome to the 36th episode of my podcast. I've been developing software for over 18 years iOS app for over nine years, and I'm running the Dutch cocoa ads for over seven years. If you are an iOS app developer, you should listen to my podcast because it will keep you updated on interesting articles and fancy might not have heard about in this episode, I'm going to talk about new formats in iOS 15. Why do we need another format, how swift runs an async executable, requiring minimal code coverage and swift packages with GitHub actions, structured concurrency in Swift using async, let's batch delete, and delete everything in core data. Currently, I'm working hard on preparing something special. I'm going to release this in about two weeks from now. And the idea here is that it is something that I want to do just because I want to take some time for myself and be able to provide you with some interesting content. So while I'm not here, and just to let you know a little bit on what I'm thinking about doing, I'm considering telling you more about my recording process, or maybe tell you a bit more about content creators online that I really like and I think you should have a look at. So stay tuned. And I look forward to what you think of what I'm going to release in the coming weeks. Another big thing that I did myself this week was released an update of my lead developer book, you can find the link in the show notes. And this is the first meaningful edition that I wrote to my to my book, I think I added about 10% in content. And I do have some more ideas for the next update, which I am actually working on. But it's slow going because I just want to make sure that if everything writes, and they have good content to publish, just to keep things going because I'm on a tight schedule this evening. The first article of this week is new formats in iOS 15. Why do we need another format, so details a new format API that has become available in iOS 15. Apple now provides new formats across the board for numbers for dates for times, and much more. In this article, he digs into this new API to tell you what the old API is how the new API works, how they compare, and why you should be looking into this new formatter API biggest takeaway from this article is that the new formats API doesn't replace the old one, you still need to use the old formats to do some conversions. So it seems that the new formats API is mostly something that reduces complexity, and allows you to easier get a string on screen. So the best part is that it's a simple interface. And you can still fall in that you can still format it like you used to. But it's a lot better since there is actually a compile time checking involved. It looks like this is one of those API's that we didn't know that we needed once it was released. All the Beckman has an article on how swift runs async executables. He provides you with a small example of a main based function that does a little bit of sleeping asynchronously, and he digs into how this async executable is actually executed on a system. The most interesting part is that you discovered that something called a detached task is created as the execution context. For the main method. It's this hidden task that becomes the parent task of all other structured child tasks in your gut. Thomas father has an interesting article on requiring minimal code coverage in Swift packages with GitHub actions, Thomas has written about GitHub actions before he's going to revisit a problem they solved in a previous article, but this time, he is only going to be using tools from Xcode itself being Xcode built an XC cuff. The downside of a previous approach that he took with Fastlane is that it requires you to generate an Xcode project, which is a deprecated feature in Xcode 12.5. And also, it used x cough for 14 code coverage, which does not seem to be maintained anymore. Therefore, he is going to try to create a Swift package, compile it with GitHub actions and generate an axial result bundle with code coverage information. Based on this actual result bundle, you can actually extract line coverage and force a minimum code coverage level that you want to achieve on your unit tests. And of course, this is all scriptable and executable on GitHub action runtime, and in this article, Tomas details and explains how you can actually do this yourself. So if you're still looking into some improvements to your continuous integration pipeline, and using something similar to get up action, definitely have a look at this because I think the ideas that Tomas explains, are transferable to pretty much any CI environment that you can use for building your Xcode based applications. So next article is by Andy Urbanus. It's called structured concurrency in Swift using async. Let it's part of an series of articles by Andy, and you should definitely have a look at this article series by Andy. And you should definitely have a look at this article series by Andy because you need to have read the previous articles in this series to actually To be able to understand this article in his previous articles, he has discussed how callback based code can be messy to manage when you're using concurrent context. For that reason, Apple has released async await, which is set of keywords. And that can help you write concurrent code while keeping a linear flow in your code. This means that the code can be read from top to bottom, of course, things are happening asynchronously. And the idea that nd is putting forward in his article is actually a concept called structured concurrency. And the idea behind structured concurrency is actually based on same idea as structured programming. You're right structured code for the vast majority of the time, so you don't really think about it. And structured code can be read from top to bottom following a linear flow in a way that outputs are predictable and code executes in the exact given order. When using variables they, for example, have a well defined lifetime within blocks that they are declared in. Unlike callback based concurrency, in which you file your task in different threads or contexts as the main thread keeps executing, which has the potential to alter the output of your program every time it's run. If you're writing Objective C, you need to treat your variables as underscore underscore blocks in order to modify them within a block. This creates a bit of a labyrinth of code where everything can happen in any order, in order to get the result that you want. This all sounds very messy. And with concepts of structured concurrency, you can actually untangle a lot of this complexity. And make sure that you can actually read through your code in a linear fashion again, even though that things are happening asynchronously. So it's a more in depth article on asynchronous programming with new API's made available by Apple. But it's definitely something that will help you deepen your understanding of the async await language structure that is now available in Swift. Robert Pietta, is writing a nice article on using Core Data. Basically, he has dealt with the problem that you have a Core Data Store and that you pretty much want to delete everything. He explains six different ways of deleting multiple entities in core data with Swift, ranging from deleting a few objects, deleting objects with relationships with a cascade delete rule, deleting relationship objects, and deleting objects with a predicate, batch deleting and deleting everything, especially delete everything option is is interesting, because this is actually the destruction of your entire persistent store and then recreating the persistent store from scratch. In a lot of cases, this is actually a very helpful way of dealing with Core Data. If you have a lot of complexity in your model, and you want to just do a full reset, this is the best way to do it. And those are this week's articles. Of course, Donnie has done his Monday morning tweets as well. In response to done is Monday morning tweets, Stewart indicates that he's working on three videos to update the login to Firebase series on his YouTube channel. And it seems Tommy is very eager to find out what Stuart has to tell on this specific topic. Tommy is actually starting his new iOS developer job tomorrow. So he is super nervous, scared, and mostly excited. And Tommy, I think you'll do great, just keep calm and carry on dude, Phillip is actually working on his switch buddy app to actually make an iPad version of it. And he has also planned some work on this new project called impress kids dotnet. Patrick is working on the foundations of his new school app. It was surprisingly easy in Swift UI, he only started working on it three or four days ago, Christiane keeps working on his ether radio app. So it has version 1.2 dot O for iOS in review. And versions for Mac OS and TV OS are pending developer release. So he's planning on releasing everything at the same time this week. Parallel is in between releases at the moment so he can take it a little bit slower this week. But he's still planning on pushing a new version to test flights to do some close to gameplay testing. And Tadas is traveling with his with his dog, and he's sitting somewhere waiting for his car to charge. And he's reading pocket swift articles in hopes to get back into Swift UI views after the baby he needed like two weeks to get back in the hang of things. So he hopes to get that up and running again posting views also working on the game. So he despite everything he's really busy, and atom has released his block item, make sure to get it listed on iOS def weekly because then it also will appear in my feed mode. It is creating an article on deploying static websites created with publish and swift on GitLab CI CD. It's being published on Wednesday. And it took him especially some time to get around some GitLab specifics. But in the end, it works nicely and it's all very convenient. Rafael's waiting on this XDR display. So he's, he's pretty happy about that. And Robin's weekend It has been all about focus dates. He doesn't know why it is working in V stack and not inform or list. Tony thinks it might be a book editor, Chris is continuing to power on with 100 days of threat to AI, learning about Core Data basics at the moment. And Hassan is working on coach snapshots. And Chris is wishing everybody a Happy Monday and he's planning to finish the import from CSV this week. Similan is putting the final touches on his iOS MVVM series. He's planning on dropping it on Wednesday. And he sigmaz Oman is planning on shipping his very first app on the App Store. So good luck to you and best wishes, which a product and SF scary is learning to build a back end in Swift. So a lot of people are building new things and actually releasing products. And it's just so great to see that everybody is keeping busy and is very happy and excited on all the new stuff that is coming our way and all the great stuff that you can actually already create with iOS 14. Meanwhile, my work continues on my backlog of interviews, and now have three interviews backlog at the moment that are completely ready for release and ready to go this evening. I'm actually also doing another recording session with somebody. And I still have two recordings that I need to process and edit and get approval on from the participants. So once that's done, I got enough interviews for the next six weeks. And I already have my first interview scheduled in August as well. So keeping busy and I look forward to talking to you again on Thursday. That's where my next interview drops with anunciar Cova. And also make sure to sign up for my newsletter at Forest one.net/news Because then you will get all the links from this episode in your email as well in an easy and convenient format. Sign up from a newsletter on Air Force One dotnet slash news Wednesday, I will send you a message with all the links from this week's episode so that you have a friendly reminder to have a look at these articles. And with that, talk to you again soon. And if they have any feedback, please send me a message on Twitter. I really like hearing what you think of my podcast. And if you have any suggestions do let me know because I'm always looking for new ideas and things I can do to improve my workflow, my content and everything in general. And with that, thanks for time and talk to you soon.