AppForce1: news and info for iOS app developers

Say you know you don't know…

February 23, 2021 Jeroen Leenarts Episode 19
AppForce1: news and info for iOS app developers
Say you know you don't know…
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 Chapter Markers

News of the week, an update from Sam about the second round in his first interview experience. Some great new stuff on Donny Wals' monday morning tweet.

This week

Sam on twitter.

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.

Riverside.fm
The easiest way to record podcasts and video interviews in studio quality from anywhere.

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, and welcome to the 19th episode of my podcast. My name is Leenarts and I've been developing software for over 18 years developing iOS app for over nine years and I'm running the Dutch coke has for over seven years. If you're an iOS app developer, you should listen to podcast because it will keep you updated on interesting articles, conferences and events you might not have heard about otherwise. In this episode I'm going to talk about using compositional collects a few layouts in iOS 13 deep dive into CF run loop, URL session configuration Quick Guide phantom types in Swift, D flaking CI tests with XC results, option set in Swift coaching for free. An update on Sam's progress finding an iOS development job and Danny's Monday morning tweets. It's a busy week actually, I have six recordings planned this week, the team Alan, Sam, Charlie, Jeremy, and Merlin will all be recorded this week. It's now again late at night here in the Netherlands and recording the 19th episode. But I'm having a lot of fun actually today, while I'm working, my daughter is off from school. It's a holiday week this week. And I must say the fire is completely different at home. There's no pressure, no homeschooling just a few kids having fun and enjoying themselves and doing fun, leisurely activities the entire day. And of course, my wife has been supporting them and me these days, the home remodeling as I might have told already has been postponed by two weeks. So really coming down here arranging all the stuff, choosing some materials and just getting ready for the complete mayhem that will be starting for a duration of six weeks. And otherwise, it's just yeah, keeping busy doing a lot of great stuff at my job today. I was actually working on ripping out an entire network stack today and replacing it with a new one. Something magically actually happened. Last week, my daughter actually got home from school and she was tired at the end of the day. How nice is that. So change and help her work at school with the help with the teachers seems to have worked out for one week now. So let's hope they can keep at it and that my daughter actually starts enjoying school more. But I also want to get into my bed at a reasonable hour. So let's dive in. Daniel also has a nice write up on compositional collection few layouts in iOS 13. And I must say it's a nice contrast to what Philip Nemecek has done. What I like about Danny's article is that he goes into a little bit more detail on using a grid like layout in your UI collection view and why and how you can actually achieve this, and how you can with basic building blocks create a layout that actually looks quite dynamic. So definitely have a look at this article. But Dani and also have a look back at the articles by Philip Nemecek. And, and see how these articles stack up against each other. Su actually has a very interesting article on CF run loops, it's called dive into CF run loop. A run loop is part of the fundamental infrastructure associated with threats or run a business event processing loop that you use to schedule work and coordinate the receipt of incoming events. The purpose of a run loop is to keep your thread busy when there is work to do and push try to sleep when there is none. A CF run loop monitor sources of input to a task and dispatches control when they become ready for processing. So basically, it's one of the core building blocks of iOS and Mac apps. And no one want to run loop is within the iOS and Mac ecosystem is actually very helpful to come to grips with how threading and eventing and scheduling of work is actually done on a device. So have a look at this article. It's quite a long article, but it's really really good. Keith Harrison over at use your loaf as an overview of the URL session configuration. If you are relying on URL session configuration for your network request, you might want to check out his articles to see what the defaults of a URL session configuration are, and allow you to decide whether or not those are right for your application. What Keith does is actually go over URL session and its configuration and see what the default settings are and what the implications are for your code. Majeed has a nice write up on phantom types and Swift's offensive type is a generic type that is declared but never used inside type bird is declared it is usually used as a generic constraint to build a more type safe and robust API. In this article, Matisse actually takes a look at what phantom types are and show some convenient examples of why you would actually want to use a phantom type. So I've read this article and improve eco tomorrow. And he talks about option sets in Swift, like its name implies and options that gives you a clue Both options, these options are predefined. And when you use them in your code, you cannot choose any other option than the set that has been given. Apple is actually using option sets throughout their API's. And it's actually quite interesting to actually work with these in this article and describes what options sets are and how I can use them and how I can create them. Very convenient and very important language feature of Swift, over a pspdfkit, they have a lot of experience with running their code through a CI setup. One of the challenges you will run into when running continuous integration is that your tests can become flaky. In this article by Matteo Bukowski, they actually explain how they do their CI testing and how they can actually try and detect flaky CI tests and how you can actually dislike those CI tests. The biggest challenge is always with having a stable local production on your developer machine, so that you can actually see the problem in action. In this article, they describe a number of tools and techniques that you can use to actually have a solid reproduction on your local machine, so that you can actually try and have a better chance of debugging these issues. Earlier today, I had a coaching session with Sam again. And what now follows is somewhat of a recap of everything that we talked about. And this is a general update on the states of Sam's search for a job. So hi, Sam, how's your day today?

Unknown:

That's going pretty well.

Jeroen Leenarts:

Cool. Yeah, I heard you did your first like real tech interview recently. And, in general, how did that go?

Unknown:

I would say it went really well. Not in that. I think, from my perspective, I think I did a pretty, I did a pretty good job in the interview. But that's not why I say went really well. I say that because it was a really good learning experience.

Jeroen Leenarts:

So what were the biggest things that you could take away from this first experience?

Unknown:

Probably the first biggest takeaway was I learned what to do? Or how to respond if you don't know the answer to a question. Or if you don't know quite how to answer it. If you have an idea, you can definitely still attempt to answer the question and try to go about it logically and kind of analyze it and try to break it down into smaller parts and approach it that way. And if you simply just don't know the answer, you can describe how you would go about solving, solving it from a point of no knowledge.

Jeroen Leenarts:

Okay, and were you nervous beforehand, or

Unknown:

I was a little nervous, but I was frankly, more nervous before my first interview. And I learned from my my first interview, which wasn't technical, that every interview is just more experience. And that helped me kind of changed my mindset and coming into this interview. It it just better prepared me. And it felt more like just a conversation. Yeah, that's how it felt.

Jeroen Leenarts:

So are the people that we're doing the interview at? Did you see any of them? In the first interview as well? Or?

Unknown:

Yes, it was, it was the same people. So we were definitely yeah. It was the same two people.

Jeroen Leenarts:

So would you say that? In hindsight, it was an enjoyable experience, even though there was of course, some pressure.

Unknown:

I would say it was enjoyable. Overall, there was a there's a few points where I probably had a few beads of sweat going I was, I was like, Oh, crap, what do I do now? But in hindsight, I mean, although it wasn't enjoyable in the moment, looking, looking back, the entire thing was enjoyable, because I learned so much, and I'm ready to apply what I learnt going forward.

Jeroen Leenarts:

Okay, and anything that you would do different if you had another shot at the same conversation

Unknown:

there. I mean, there's a lot of things I would do differently. It was my it was my first one. So it was a really good gauge to see where I'm at right now. As from a technical standpoint, my technical skill level, and also just my ability to explain my understanding of concepts. So, it was it was really useful.

Jeroen Leenarts:

So you mentioned that in the interview that you had that you In hindsight, that you can still work a bit on despite that, you're able to keep your composure be able to have like a better response in the situations that you don't know the actual answer from the top of your head, or that you actually have to spend some effort to actually come up with an answer to the questions that's being asked. So what is the biggest challenge that you then run into? When you get this question that you don't know the answer to?

Unknown:

I would say the biggest challenge is maintaining that composure that you would have that you would hold well, in general, two, to two questions that you do know the answer to, because the first thought that comes to your mind is like, Oh, no. Yeah.

Jeroen Leenarts:

So am I sweating? Yeah, am I sweating? And

Unknown:

then it all like, the attention is on you, of course. So it's just just taking a deep breath? And if you need to take a step back, and just take a moment to think and analyze it, and come up with your own answer.

Jeroen Leenarts:

So but you do say that, probably this actually happened during the second interview that you had? So what did you do in this case, when the question was asked that you did not know the answer to what was your response? And what was your behavior in that moment?

Unknown:

In that moment? I did. I was like, I literally was like, and then I kind of looked away for a second. And I thought, hard to see if I, you know, did have anything floating around in my brain? Which I didn't. Okay. And after that, I was like, okay, maybe I can find an answer. Practically. I had a code base open. So I open so I started typing a line of code to see if I could find, you know, the, the specific, you know, function to do with auto layout that they were asking about? Yes. Although I was able to find it later. I couldn't find it in the moment. Because

Jeroen Leenarts:

it's always hard, like in the heat of the moment to actually type the right thing and have this moment of inspiration to actually come up with a good answer. Exactly. But what could you have done differently in in the situation that you get a question that you don't know the answer to? What what what, what, what are the options that you have available in that situation? Of course, you can stay quiet. Think about it, that which is a perfectly fine behavior. What are other things that you could have done, like in that moment to like, either give yourself some more time or to actually get some more information from the person doing the questioning?

Unknown:

So I could have asked for more clarification around the question or asks, for a specific example, or something that would have better help my understanding, but in this case, I, like I knew exactly what they were asking for. I just didn't know the specific answer. You know, from a swift perspective, yeah. It was like a very specific, you know, kind of syntax question. So I off. Right, when they asked me the question, I, I think I could have articulated that. I don't know. And, and then maybe I could have articulated, I'm still going to attempt to answer based on my knowledge that I do have, and based on, you know, logical deduction. And then what I did do after, you know, I realized I didn't know and then I tried to find the answer in a practical way, and I still couldn't find it. I then articulated that. Ay, ay, ay ay. Then, like, went to the last option. And I said, I don't know. And I explained what I what I would do if I came across the situation when working on projects and how I would find an answer. Yeah. So I think I did an okay doing that. But that was like my last resort. Maybe I could have done that first.

Jeroen Leenarts:

So after the interview, how long does it take you to actually figure out the correct answer? afterwards?

Unknown:

Like five seconds. It's annoying. Yeah, yeah, but that's life. It's, uh, I wasn't, like angry with myself or anything, but I couldn't find the answer. But um, it was sort of eye opening to, you know, the kinds of things that could happen during an interview. And I know. I mean, I learned from that situation about how I could answer better next time.

Jeroen Leenarts:

Cool. Well, we'll make sure to like, keep ourselves updated with with Sam's progress. And definitely keep an eye on this Twitter handle SAM code with a double m in the middle, just to make it easy. And when there are new developments, I'll make sure to retweet it. And we'll definitely have some back on my podcast in the future just to stay up to date. And, of course, I will keep on coaching Sam, because the snippets in this episode are actually just a few minutes of like, almost an hour long conversation that we had today. So Sam, keep us updated. Okay, of course. Of course, it's Monday, or at least, it was Monday, I'm wrapping up my recording and it's already past midnight. But here's an overview of what people are actually working on. According to their response to Donnie wall suite. Phillip Nemecek is planning on launching an API for iOS feats. Marco is learning on how to deploy a vapor app with a database to Google Cloud using Docker for a new side projects. The developer is so busy this week is unable to learn new things, working for 13 plus hours every day this week. He's implementing notification handle in one of his projects, and he's probably going to be fixing some bugs too. Don't burn yourself out man. A Christian because Rawski is actually creating a new, better build of his side project radio app eater. He added iTunes API support for artwork and easy radio station search with radio browser. Stewart Lynch has actually released the 100th Swift related video today on for a journey that started a year ago. Manas is dedicating the next couple of weeks to normal schoolwork, of course, but also to deep dive into data structures at found Swift, Swift standard library and optimizing collections. And seems she's also practicing basic GitHub usage. And Daniel James drunker has released a major update in his full native Stack Overflow clients. It's called crew stack. John Haney is getting better, just a feedback on this new iOS app. And as he's working on the Mac version of the same app, and then the watch version, and then Apple TV version, Vita Yaqoob, is finally updating his website after months of delay. And Marco Engelmann, is releasing a new article about domain driven design. So all know a lot of people are actually working on their own skills are publishing new content, here and there a new app or two. But it's really interesting to see that after the initial spirit of just bringing out and creating new stuff, people are now actually more focused on gaining more knowledge and improve their development toolbox to actually be able to pick up the next Chairman's in the coming weeks. So keep it up everybody. If you have any feedback, please add mention me on Twitter at app Force One. Let me know what you think. And most of all, keep on working and keep on enjoying this great community. And I will talk to you next week.

Intro
Using compositional collection view layouts in iOS 13 – Donny Wals
Dive into CFRunLoop | RY 's Blog
URLSessionConfiguration Quick Guide
Phantom types in Swift | Swift with Majid
OptionSet in Swift • Andy Ibanez
Deflaking CI Tests with xcresults | Inside PSPDFKit
Coaching Sam
Donny monday morning