AppForce1: news and info for iOS app developers

Actors, Swift Regrets and some other subjects

September 13, 2021 Jeroen Leenarts Episode 46
AppForce1: news and info for iOS app developers
Actors, Swift Regrets and some other subjects
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

I am working on a Dutch presentation about Tuist but I also hope to perform the same presentation in English somewhere sometime this month. A big shoutout to NSSpain Remote Edition 2021.

The links from this week:

Monday tweet by Donny

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

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, and welcome to the 46th episode of my podcast. My name is Leenarts. And I've been developing software for over 90 years developing iOS apps for over nine years, and I'm running the Dutch Cocottes. for over eight years. If you are an iOS app developer, you should listen to my podcast because it will keep you updated on interesting articles conference and events you might not have heard about. In this episode, I'm going to talk about building dynamic lists in Swift UI, using Swift async await to build an image loader. Few masking in Swift UI, pass through subject versus current value subject explained, preventing data races using actors in Swift, Swift regrets, and an S pain, remote edition 2021. work we've been using twist.io. This is a sort of a swift based command line utility that allows you to generate Xcode projects and workspaces based on the Swift metadata format. So you can define your products and your frameworks in some Swift code. And then you can generate out your Xcode projects with all your files in there. It's really cool. I did a presentation on it before for Coca Hudsonville. And soon I will be doing an online presentation in Dutch, unfortunately, on this very topic, which is like, sort of like a quick overview of why we've been using to install SEO. So I'm now working on creating those slides and making sure that I have a 20 minute talk, which is not very long. And just for the heck of it, because I'm now creating the talk. I also submitted a CFP with basically the same talk to enter Spain, which is a great conference based in in Spain. But this year, again, they're doing a remote addition. So big shout out to them. And they have their early bird ticket sale available right now. So for 200 euros, you can get access to all their content, which is 36 hours of talks and presentations and defense, which in my mind, it's it's really a steal, I was unable to attend last year's edition. But from what I've heard, it's it's been a great event. And I'm wishing to organize this best of luck putting this thing together, and Spain remote edition 2021 will be available and online ads November 18, and 19th 2021. And ticket sales is now open. You can also enter their call for papers till October 4. Now let's get started with the articles of this week. The first article is by Peter freezer building dynamic list in Swift UI, the ultimate guide to switch wire lists use part two. This is the second article that Peter has written on using dynamic lists in Swift UI. And it's a good article that gives a good overview. It's quite long, actually, on how you can display lists of elements and how you can use list binding to modify list items. So as you go and asynchronous fetching of data. So all in all, this article gives you quite the cool overview. Obviously, Peter will tie it in to the Firebase offering because he's the developer advocate of the platform. So you also learn something about Firebase. But even then, it's still a good overview how you can integrate with the backend API, and make sure that it's being displayed on screen. So have a look at his article and, and see if you can learn something about dynamic lists in Swift UI. The next article is by Donnie Walsh. And it's one of his typical articles again, using Swift's async await to build an image loader. async await will be the de facto way of doing asynchronous programming, iOS 15 and above. And hopefully, it's going to be back ported to earlier versions of Iris who knows, Donnie has already written quite a bit about the new Swift concurrency features. And there's still plenty to write about. He says, In this post, Donnie is going to take a look at building an asynchronous image loader that has support for caching. Basically, what Donnie is doing is rebuilding a component that is available in iOS 15. But by rebuilding it, you really get a look behind the scenes of how such components could work. And it's a thorough overview of how you can load images from the network and display them in the UI in an asynchronous fashion without causing all kinds of race conditions or other asynchronous related issues. So definitely worth the read. Because you will learn a lot about async await image loading, caching, things like that, that most often can be handled by tools or utilities or frameworks that you get elsewhere. But it's good to know how things could work on the hoods, because it just allows you to imagine if there's ever an issue, what could be the cause of the problem? The third article I mentioned is by Federico, and it's a continuation of an article that I mentioned last week. This time the article is called View masking in Swift UI in his previous article in view clipping in Swift UI, Federico has explored all the ways you can apply clipping masks to fuse. While it's a powerful technique. Clipping has two significant limitations, it requires shapes as masks, the content is either masked or not, there is no gray area. So what Federico will do is explore swift UI masking beyond clipping, it's a it's a very good continuation of his initial article. And because it's such a good continuation, I wanted to include it in this episode again, because even if it's still the same article series, just so worthwhile to just have a look at this and just see what Federico has written on this topic. It's it's a true continuation on the previous article. So definitely read that first and then dive into this article. But it is linked from this article at the top of the article. So no worries there. The biggest difference, what you will learn compared to the previous article is that you can also play with transparency now a little bit. So that allows you to mix two images together with some opacity, and just get very nice and cool effects on your user interface that you can use to approach a difficult design that one of your UX designers might have delivered to you. The next article is by Antoine finally, I hope he's enjoying his vacation, or maybe he's back already, but he's been to the audience. And he's been posting pretty pictures of his dog and his walks in nature. So Antoine, I hope you had a good one. And the article that he published hit home with me personally, because I really asked myself What the heck is the difference between the pass through subject versus the current fellow subjects on Tron goes into depth about this very topic, and in his article, he explains what the difference is between a pass through subject for recurrent valleys subjects. In his article Antoine goes into some depth explaining these two subjects, but he hits home with a very nice analogy, right at the end of his article, a pass through subject is like a doorbell push button. When somebody rings the bell, you're only notified when you are at home on the opposite end is a current Valley subject. It's like a light switch. When a light is turned on while you're away, you'll still notice it was turned on when you get back home. So that's a very easy way to understand and remember what the difference is between a pass through subject and the current value subjects. read the entire article on Antoine's blog. Lee has an article called preventing data races using actors in Swift data races the worst nightmare of all developers, they are hard to detect very unpredictable and extremely difficult to fix. Apple has given developers various tool sets, such as NS lock and serial cues to prevent data races from happening during runtime. However, none of them are capable of catching race conditions during compile time. With release of Swift 5.5. This will no longer be the case, introducing actor to new Swift language features that can help developers to catch any possible race conditions during development time. In this article, Lee will first look at how data races occur when using dispatch queues and asynchronous tasks. And after that, he will look at how actors can help you identify race conditions in your code and prevent them from happening once and for all. I really love it when an article has a great introduction. Thanks, Lee. Read this article. It's awesome. And the final article of this week is a bit different. It's written by Jordan rose. And for a past year for the for the last few weeks, he's been writing Twitter threads on Swift regrets things he wished he'd done differently early on in Swift development. He's been doing them on Twitter rather than as blog posts because of his RSI shortform. On his phone. Short Form on his phone is easier than long form at keyboards. When he spent so much time it's keyword already for work, but he is mirroring them on his block. Jordan worked on Swift at Apple from pre release to to Swift 5.1. And he's at least partly responsible for many things people like about Swift, and also many things people hate about Swift. This list is something he started collecting around when he left Apple, and he's putting them up so other language designers can learn from these mistakes. These are all things that would be hard to change in Swift today because they'd break tons of people's code. All in all, Jordan has created a nice inside look into the mind of one of the people involved with the Swift language development. You don't have to agree with everything that he says it's just part of his view on how things have happened. So read them in open minds and just have some fun learn from them. And maybe it provokes some deep thoughts within yourself as well. And I hope Jordans artist It gets better. And those were the articles for this week. So let's quickly move on to Danny's Monday morning tweets. Let's see, he had quite a number of replies on it this time around. So I'm just scrolling through them a little bit and just see what we got here. So let's get started. Peter Freeza reports on another part four of his series about building reusable swift UI components. It's something that he publishes on YouTube. Great stuff. Really. Daniel Steinberg is teaching a swift UI workshop Friday remotely to a group in London, and he'll be updating his material this week. So he says he updates his material every time he teaches it. He's also rereading some information on core data. And he's considering adding CD to a music app he's playing with limited DFS is finishing the building of the watch app for a bluebird app. And it's now in beta testing, bluebird components focus timer with time management offering a joyful and stress free experience for study and work. He's planning on launching it right after the iOS 15 release. Ben Nolan is just waiting for the GM to drop so he can submit his work. Daniel spent basically the whole weekend on telemetry decks surface performance, which seems to be paying big dividends right now. So he must have been able to improve some performance aspects there. And Vincenz is is preparing his credit card balance to spend some money after tomorrow's keynote. So best way she staff incense and those videos seem to be doing all right for you. Then Eamon is doing the final work on is finally have to do something on the App Store project besides the ACT timer app, and he's finally wrapping the project up instead of letting it die on 95% completion. Luigi Dion is creating tons of content as usual. I don't know how you can keep up this pace, Leo. It's amazing. Just keep keep at it. I love your stuff. Below is a Kanban board interesting Twitter handle. This morning, he or she reported hate speech on Facebook and they actually deleted it. So he or she considers that to be his work or her work for the week done. Attila is saying Happy Monday, he's trying to catch up with a few things at work. And he's working on the contents of his workshop on smashing neck. And he's having a nice cold brew coffee. He also included a nice picture of a glass send he is mentioning that her mentor recently told her that he thinks she is ready to move on to medium level functions and challenges. So she'll be working on those this week. She's a bit nervous and excited. But don't worry, Sandy, you'll probably just be fine. If you have a good mentor day, they know what you can take. And they will make sure that you have to walk on your toes a little bit. But stretching only gets you higher and makes you do better. So best wishes to you. And an interesting one is nd eveness. He's been working on his workshop presentation this upcoming Friday for try swift world. And he was able to do a test run with a few colleagues so he could get your input on the presentation format. So he's really preparing his stuff for try swift world. Best wishes and best luck to Andy. And that's it for this week. If you want to support my podcast or just drop me a tip, have a look at pod dot fan slash app Force One. If you have any feedback just message me or DM me on Twitter at app Force One. So you can pretty much find me with App force one everywhere. So enjoy your week and I will talk to you again next week.