AppForce1: news and info for iOS app developers

Hey my voice is back, sort of…

May 17, 2022 Jeroen Leenarts Episode 79
AppForce1: news and info for iOS app developers
Hey my voice is back, sort of…
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

Lost my voice there for a bit. It wasn't that i was unable to speak, but I was sounding so raspy and just horrible. I couldn't make myself inflict that upon you, my listeners.Lots of catching up to do, so I have a whole bunch of articles for you this time. Enjoy!

DJI Mic

The SwiftUI Series by Jordi Bruin

CocoaHeadsNL meetups

Articles of this week

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:

Something fun I'm doing with this podcast recording. I'm actually using my new DGI MC. It's like a little tiny recording thing. I'm just trying it out for an entire episode, I have no clue how the individual to sound. If it's if it's good, then I can use this form to go field recordings from guest interviews. We'll just see. So let me know what you think is the audio quality once you've listened to my episode? Welcome to Episode 79 of my podcast. My name is John Landis, and I've been developing software for over 20 years developing iOS apps for over 10 years and running the Dutch cocoa pods for over nine years. If you're an iOS app developer, you should listen to my podcast, because it 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 the Swift UI series measuring app performance in Swift. How to Change fifth to iPhone size, how to style swift UI text font divider is swift why everything you need to know on iOS application architecture. Quick Guide on toolbars in Swift UI, binary targets in modern swift packages, how to let users select File from files. Make Swift Playgrounds for apps first steps, a flexible way to handle and alert errors in Swift UI playing with Swift UI implementing a customizable and animatable circle to checkmark view, how to start iOS development career the five step plan modeling errors in Swift UI, log into websites with as web authentication Session Library Content Provider in Xcode, and Beginner's Guide to praktisch. And Beginner's Guide to Swift package manager command plugins. That's a lot of articles I'm going to talk about this week. And there's a reason if you follow my podcasts, you will have noticed that I sort of skipped an episode last week. And it has to do with me losing my voice over the last couple of weeks. So doing an audio and voice based content format and losing your voice is kind of horrible. So yeah, I needed to take care of that by just giving my voice a little bit of time to relax. But fortunately, I had some content already scheduled or not, I should not say scheduled, but it had some contents already ready to go. And I was able to publish something last week. So yeah, sorry about that for for skipping a week. But I'm back again. And I'm still really trying to figure out how I want to continue my podcast. So to do the things I really like about my podcast and make sure that this manageable, but all the other engagements and things I have going on right now. Because especially with in person events happening again, it's just a whole lot of time and effort that I need to put into those kinds of things. And then trying to find some quiet time to do a podcast recording can be really hard, right? So hanging in there, making sure that I get things done and making sure that everything keeps on going. Also during WWDC, the CO Gatson l will have a meetup event on the Monday evening, because the WWDC keynote is on a Monday evening in Europe. And it is a national holiday in the Netherlands. So I'm curious to see how many people will actually show up. On top of that, the week after there will be a cokehead sinau meetup in Amsterdam, at the office of stream my employer and which stream we are really looking into creating a whole lot of contents before during and after the WWDC week just to see how we can can can get started with all the new technologies that Apple is sure to announce. A very neat little detail is that a colleague of mine is actually traveling to the Apple campus. He's got an invite for the for the in person keynote viewing party at at Apple, so very much looking forward to his pictures and his experience and his reports on anything that happened there. On the private front, so with my kids and my family, my kids are doing okay. Lisa is very eager to start at a new school after the summer holiday. Still a couple months out. But yeah, we got we got a handle on it. And she's now also convinced that she can get through it and make sure that she enjoys her last couple of months at her current school as much as possible. So focus on the positive and make sure that you don't get bogged down by the negative really. So that's very interesting to see that you can see the immediate effect if you coach a little girl a little bit on that. Demo, son, he's just as happy little happy camper, enjoying school, going there enjoying all the things that he's been doing, and especially going outside to like amusement parks and, and museums and stuff like that. Just going into a city is already a day trip for him because, of course he grew up for two years during COVID When there was a lot less things you could do outside, but now he's getting outside he's getting with people again. And it's it's it's mind opening for him. It's so fun to watch. So, yeah, everything going well there. So much stuff to go through. So let's start at the first one. The cool initiative that God Brandon is doing the Swift UI series, it's going to be a week long event to learn, compete and socialize in the world of Swift UI, participate in five different events and show your skills to the world. The fun bit is that Amis my colleague, he will be one of the judges for the animations track. But also if you look at the other people participating as judges, you got turned to Allegoria Sarah rifled, Christian select Mallinson Berg, bus Brook, Florida in Sweitzer. And even more people still to be announced. So this is going to be super cool, and probably going to be driving a lot of engagement. So if you want to do some fun, informal competitive things with 50 wide, definitely check out swift UI series.com. It's something that I wholeheartedly recommend people to look at. So first article of this week is by Majeed, measuring app performance in Swift. So the unified logging system is a great way to build a proper logging system allow you to understand different exceptional cases happening in your app, right. But it's not just limited to logging, it also provides a way to measure various events in your app. This week, Machida writes about how you can use the unified logging system to measure app performance. And this is about feature of introducing fence posts in your in your OS logging statements. And this allows you to really, at the start of networking, for example, put a post, do the work, make another signpost and then you get really clear measurements between these two, between these two moments in time. So that allows you to really see where your app is spending its time where it's waiting, where it's taking a long time to just get through some work. So this is a bit like profiling. But by annotating certain hot spots within your code, you get a much better grasp of what's actually happening in your code. And also instruments is a very important tool to inspect what these what these signposts can tell you within your codebase. So definitely check this out. Always lock and signposts definitely a worthwhile thing to upgrade the performance in your apps, then I have like three articles by certain W, because I don't know what he is doing. But he just keeps on producing great content. So I'm just going to put all three links in there. And I will just recommend you to follow Swift's content by saloon. So the first article is how to change swift UI font size. The second one is how to style swift UI text fonts. And the third one is how to introduce a divider in Swift UI. So that swift UI divider is like this horizontal line that you can put between content so that you get like a sort of a separation between content. And there are some details involved there that's very interesting to look at. And the other two articles is about dealing with fonts in Swift UI. And yeah, if you dive into the world of fonts on iOS, it's you think it's simple, but then you start looking and then a whole new world opens up for you with all kinds of things that you can do with fonts on iOS. So definitely worthwhile to keep a close eye on the content that Susan W produces. The next article is by Thomas required on iOS applications architecture. He's seen countless tweets and stories lately about iOS app architecture. And he's been a huge fan of trying new architecture on iOS. And in the past, he has been working with Redux and TCA like architectures because he believes unidirectional data flow is the only way to have a good and robust code base. So close, that's probably a product that you've worked on is built using Redux. And he's been building various open source applications like movies like UI using Redux, like and light architecture for swift UI. But with his recent work on a medium app, and some other open source projects, he's come to a couple of realizations. So swift UI only allows you to make very powerful self contained system with very limited amounts of code. And swift UI offers a very clean data flow. It's built in and simple to understand. And he doesn't really want to add boilerplate about Swift UI anymore, because it's tedious, and it's most time unnecessary, and it creates unnecessary friction when onboarding new engineers on the team, and he thinks you can achieve very clean architecture both testable and maintainable with clean and bare bones MVVM. So it's some reflections on on what architecture means within swift UI. According to Thomas, it was very insightful and especially the have the links that he provides to some WWDC videos are very helpful and very much a worthwhile read, to just have to look at and to think a bit more about the architectures that you're introducing and using in your apps. So, next article is by Natasha for de for quick guide to Toolbars. In Swift UI, it's an article that will learn you how to add a toolbar item to the bottom bar in the navigation bar above the keyboard and a modal fuse with Swift UI. So very quick overview of what toolbars are within iOS in the context of Swift UI. And then Natasha will go into some details on how to add these toolbars to your codebase. It's actually one of the longer articles that Natasha has recently put on our blog, very much worthwhile overview to see what toolbars are and how you can use them in Swift UI. Then, there is an article by pull binary targets in modern swift packages. So swift packages are becoming more and more important in iOS and Mac OS development. And Apple has been pushing hard to bridge the gaps and fix the issues that were preventing developers from moving their libraries and dependencies over to Swift package manager from other dependency managers, such as Carthage and CocoaPods. This was a deal breaker for any libraries that relied on some cogeneration such as protocol swift yet. But now, you can actually get around this with Swift package manager. And Paul is here to explain in this article, how you can work with binary targets in modern software packages. So this means that you can actually create compiled binaries, and then package up package those in Swift package manager. And this used to be a problem because Swift package manager was strictly source code based. So what's the cool thing about is, you can now have a couple of new things that you can do with Swift package manager new use cases that you can support, it's a bit of a technical article, or going over the details of packaging up your code into binary format, and how to distribute it to your end users or actually, your library users. But I think it's well worth the read to just get some insight in the details that are related to dealing with Swift packages. Then we have an article by Philip nemecheck. How to let users select a file from files. It's a quick look at the UI document picker view controller to access the files app. iOS lets you apart from importing media from the photo library also import either iCloud or local files from the files app. In this post, Philip, we'll look at how you can actually accomplish this. Not much more to tell there. It's a nice overview, some screenshots and how you can use the UI document picker view controller to get your hands on some files that the end user is hosting either on their personal iCloud accounts or on the files app on their device. Next up, is an article by Steven Lipton makes Swift Playgrounds for apps first steps, it's basically an overview of the experience that Steven had with Swift Playgrounds in developing an app. And to just see how well it works. So his experience is very interesting to see. And it's a good showcase to learn a little bit more about what swift UI playgrounds can do for you for app development. So very fun read. It's not a platform that I'm going to be using soon, I think. But I do think there's some potential here for lowering the barrier of entry for iOS development for software developers, which is always great, right? So Daniel C, there wrote an article called a flexible way to handle and alert errors in Swift UI. In his posts, Daniel will take a look at the how to handle async errors in a flexible and scalable way in Swift UI. He will cover a completion block and async await based use case. So in this post, he will create an observable, he will create an observable alert context that can be passed around in an app to present alerts from anywhere using the single view binding will then create a error alert, convertible protocol that can be implemented by any error that can end it can generate an alert, and an error alert protocol that provides convenience functionality to any view that has an alert context instance. So although the post contains a lot of text, the total amount of final code is actually not that much. And you can have a look at that code in Swift UI kit, and use them in your own apps if you want for those of you who are interested in how everything works with this neat way to deal with errors in an asynchronous environment. You definitely should read this, this article because if you do these practices that Daniels ADA recommends, then your error handling, you will you will be able to just take out a whole lot of these appear admits of asynchronous in your code, you know, the completion block based callback stuff, you can make all of that go away by using async await, which is awesome. Playing with Swift UI implementing a customizable and animatable, circle checkmark view this is an article that's written by I have to scroll for this one at the bottom of the page. And I can't find really let's check the about page of this blog. Yeah, it's actually the blog by Gabriel Theodoropoulos, I should have known playing with Swift, you are implementing customizable, and animatable. Circles, checkmark, few, it's a very nice overview of creating a circle checkmark view in Swift UI using only codes. And there's some nice tweaking going on. And you can just have a look at this article. And it's a nice overview of the steps that you can take with Swift UI to get something looking good. And that's also animatable. So yeah, there's not much to tell about this nice visual results that you will end up with, and a good overview of how you can create these customized components yourself. So thanks for that theater. And next article is by Leonardo Glacia. He also recently wrote a piece on the stream block, it's a nice piece that you can provide to anybody looking into getting into iOS development. So the title of the article is how to start iOS development career, the five steps plan. So this article is a bit of a meta programming article. So it's something you can share with people looking into starting iOS development. And I think is good to have to be aware of this article, because it's a very common question that you run into. So you notice five steps are very simple. First, learn Swift language. Second, learn how to build user interfaces. Third, Learn Common iOS programming features, four, learn how to programmatically test your code, and five learns from architecture and iOS project tools. So it is, of course, a very quick overview. But I think all of these five items, if you're an iOS developer, yourself, and somebody comes at you with this question, how do I start iOS development, you can take them through these five steps, and just assess with them where they are on the on their journey, and just give some more specific and helpful pointers to this specific individual. And also, it's very nice that you can tell them, once they've reached a milestone, what's next after that, right. Biggest important thing that works for learning a new skill is to have people available that also work with the skill. And second of all, that you are, in fact learning in a style that suits your character. But the thing with learning stuff, it just takes work. So you have to spend the time and you have to learn new skills. And then there is another article by swift with Majid modeling errors in Swift. And this is a precursor of the previous article that I shared, the measuring app performs in OS log, I think, no, it's not. It's, it's how you can actually model errors in Swift. And I think it's really nice, in the sense that it gives you an overview of how you can create your custom errors for your situation. So that allows you to get more meaningful errors from your codebase. So that if an error gets thrown, you have an easier time debugging the source and the cause of this error. And the next article is by RIA development, not sure who's behind that. But I did like the article, because it's about as web authentication session and how you can use that to login to a surface within your app. And it's a nice overview of what it takes to actually get an OAuth authentication going within your codebase. So definitely have a look at this bit to see how as web authentication sessions work, and the next one is by Thomas father, it's called library content provider in Xcode, I have to try this myself. But the library content provider protocol in Xcode is a way for adding custom views and view modifiers to the Xcode library, which enables drag and drop. When using Swift UI preview. Xcode automatically looks for types implementing the protocol and then adds items to the library, it takes so little code that would make sense to do it if you are using the library for building views. So it's a nice example of how you can use the library content provider to get an easier time drag and dropping your Swift UI user interface hierarchies together, and then the final article of this week and I'm starting to feel my voice again. Beginner's Guide to Swift package manager command plugins learn how to create command plugins for the Swift package manager to execute custom actions. using Swift package manager and other tools, it's an article by Deborah Bowditch, and it's one of his typical articles, again, quite long, quite in depth, and very useful. So he introduces what Swift package manager plugins are, and what they can do for you, when using shift package manager and what convenience they can actually provide, if something is not supported out of the box, because you can very easily extend the behavior of Swift package manager by creating your own plugin and getting things started that way. Yeah, it's a good overview of what you can do to extend Swift package manager. And I think there's a lot of potential with these kinds of API's on the tools provided by Apple because it allows software developers in the field to actually create and add the functionality that they need to their tool sets. And also to be able to share these new features to the tool sets easily with the world. So learning about command plugins should be fun. But as Tebow indicates, it can be a bit annoying, because the development experience of these plugins is not great yet. But in summary, it's it's just the beginning, right? So something new within Swift package manager. It's just like async, await and actors. It's an addition to the Swift language. And the feature itself is there. It's mostly ready to go. But not many developers are using it yet on a daily basis. So there's very little experience and documentation available online, on how to actually correctly do these things. So that's the whole slew of articles I wanted to share with you this week. I will also make sure to put all these in my show notes so that you can have an easy time clicking them and getting to them. And it will also make sure to share some links to the program's meetups that I mentioned. And above all, the Swift UI series.com website, which I think you should definitely check out. So a lot more stuff happening in the coming weeks. We're approaching WWDC, and I'm already reaching out to some people online and being contacted by people who learned to do some fun things around the WWDC a week, so I hope to be able to share a lot more with you in the coming weeks and hope to talk to you again next week. Bye now.