YouTube Video - https://youtu.be/AedW0Da37KQ
- Episode 69 - Maintaining & Migrating with Antoine van der Lee - Part 1
- Episode 14 - iOS App Architecture with René Cacheaux and Josh Berlin
- Episode 15 - Test-Driven Development with Joshua Greene and Michael Katz
- Episode 39 - Managing Code Quality with Anne Cahalan
- Episode 62 - Local Database Storage on iOS with Aaron Douglas
- 4 Tips to make it easier to fix crashes and bugs
- OSLog and Unified logging as recommended by Apple
- Adopting SwiftUI at WeTransfer
- Code Guidelines at WeTransfer
- Antoine's Core Data Blog Posts
- Donny's Core Data Blog Posts
The tools you need to monitor, optimize, and get more downloads.
If you want your app to succeed, there's never been a better time to read up on App Store Optimization and Appfigures provides that for you.
- Check out their great articles and guides on app store optimization
- Brand new teardowns of specific apps, like Spotify for instance or indie apps like Fotmob.
- New competitor's report in the Appfigures dashboard where you are able to view competitor downloads, build performance benchmarks, and see the new trends as they happen. Check it out here.
- Check out more of their resources at appfigures.com/resources.
The folks at Appfigures have easy step-by-step guides and intuitive tools to do that, which many indie developers are using to get more downloads:
Also check out our episode with CEO Ariel Michaeli:
Try Appfigures for free, and if you like it use the special link to get 30% off for the next 3 months:
I will be speaking at NSSpain 2020...
Nov 17 - 20, 2020
- One of the most known conferences about Apple platforms development is going remote this year!
- NSSpain 2020 is an online, continuous 36 hours conference, carefully crafted by the community for the community.
- Guests of the show Paul Hudson, Donny Wals and Antoine van der Lee will be speaking as well as others
Go to NSSpain.com and use promo code empowerapps to get 10% off
Upgrading Older Projects
- Migrating from older versions of Swift
- Migrating to SwiftUI
- Upgrading piecemeal with new features
- Continue supporting older OSes
Bugs and Logging
- Understanding OSLog
- Finding a Bug Tracker
- Using Diagnostics
GitHub - @brightdigit
BrightDigit - @brightdigit
Leo - @leogdion
Instagram - @brightdigit
Patreon - empowerappshow
Music from https://filmmusic.io
"Blippy Trance" by Kevin MacLeod (https://incompetech.com)
License: CC BY (http://creativecommons.org/licenses/by/4.0/)
Leo Dion (Host): [00:00:00] Thank you for joining me for another episode of empower apps. I'm your host, Leo Dion joining us again is Antoine Vander Lee. Hey Antoine. Thanks for coming back. Yeah, glad to be back. So I've actually worked on projects that were written in Swift 1. And in the last year or two, have you, have you worked on any of those?
[00:00:26] Antoine v.d. SwiftLee (Guest): [00:00:26] I was honored to be at WWDC the, when Swift was announced and you know, you're at the enthusiastic when it's announced, but if you're there, I guess you're even more enthusiastic to get started with it because you're there in that week. You have your MacBook open all the time and you try out a few things.
[00:00:44] And yeah, I was at a point where I had to convince kind of my project manager to rewrite the project or not. So, yeah, I know. I knew at that point, Switch was the future. So I had a really good statement to make there and I convinced them and we started writing the project is Swift one.one, which was kind of like the first really public version you could use, I guess if I recall correctly.
[00:01:09] Yeah. Yeah. So we, we started using that and the first week, two weeks, it was all fine and it worked nicely and we continue that we continued and a project grew. And then we realized that you know what is it called again? Incremental bills. Sorry, I couldn't get to the word because we didn't have incremental building at the time, which meant that the project builds times where like, like eight minutes, nine minutes at the certain point, just for a really small change, it didn't work at all.
[00:01:42] Up until I think introduced incremental building, which was a lot better already, but yeah. Then three arrives with forest grades, but for existing projects, it was definitely not great. I'm not sure if you experienced the same, but we had to rewrite a lot of good.
[00:02:00] Leo Dion (Host): [00:02:00] Yes. One to two was a big rewrite, but two to three, I think was even bigger rewrite from what I know.
[00:02:07] Antoine v.d. SwiftLee (Guest): [00:02:07] Yeah. Yeah. Not even mentioning all the best practices that arrived with the new changes, you know, so I never regret it. The fact that we went for shrift because we were in a much better place than. If we would have started writing it then Objective-C, but it wasn't easy as well.
[00:02:27] Leo Dion (Host): [00:02:27] Yeah. So I've been on a few projects actually in the last year or two that were written in Swift three.
[00:02:34] And I, I had to add features or bugs fixed bugs from Swift three. And that was an interesting experience because. I ended up having to set up a high Sierra VM and install Xcode 8, but I also had to change the calendar date because the certificate, when it worked on Xcode 8 and then I, yeah, I had to upgrade the product to four on the VM.
[00:03:00] And then I ended up being able to open it on my actual machine and then upgrade it from 4 to 5. And there was like all sorts of cruft in the code of like, no generics. No Try catch. And it was like, yeah, it was an interesting experience having to, I didn't upgrade it wholesale. I just wanted to fix the bugs and get the features in, but it was interesting if like, Just being able to like dance around it, I guess, and not change too much of the old code that worked while also using new methodology is like a lot of like NSArray and NSDictionary and stuff.
[00:03:38] I was like, Oh my gosh, this is crazy.
[00:03:41] Antoine v.d. SwiftLee (Guest): [00:03:41] Yeah. But it's, it's the same. When you, you have to work on a project still using Objective-C you know, like it's it's, even though you might still notice it texts you, you have a small moment where you need to switch your mindset again. Right. I think the same happens right now with Swift you way, we started adopting Swifty way that we transfer up lately.
[00:04:00] And it's a, it's a whole different mindset. And once you start writing those Swifts, your wife, he was, you need to get started a bit, but once you're in there, it goes pretty well. Once you know, the same texts a bit, but at a certain point, you need to get back to UIKit code, and then you're like, damn, I need to write so many codes.
[00:04:19] Yeah. It's a, it's an interesting switch. You have to do all the time.
[00:04:24] Leo Dion (Host): [00:04:24] How are you switching over to Swift UI at we transfer? You're doing it like piecemeal, I guess. Well,
[00:04:30] Antoine v.d. SwiftLee (Guest): [00:04:30] well, what we decided to do is really look into like a place where we can adapt Swift to ill, still maintaining a support for iOS 12, because we still support ios 12 and SwiftUI only arrived in ios 13. So that was the first decision we made before we decided which few or which part of the app we wanted to rewrite. And our designers dropped us a new introduction screen just because it probably worked better. So we had to implement that. And this was like coincidence because we also wanted to adopt choice UI at that point.
[00:05:02] So we decided to build those views with Swift way while keeping the older production screens available for iOS 12 users. Kind of an easy approach. It's it's, it's like a distinct piece of the project, which we could simply rewrite. Well, well, almost not touching the old code. We kind of created an in-between business there, which contained all the logic, like opening the signup page, opening the login page basically methods like sign in button tapped, which we could call from the old introduction screen and from the new Swift to I introduction screens.
[00:05:37] And with that, we, we started with full confidence on building these SwitUI views and yeah, we, we wrote a blog post about this with all our learnings, which we can share in the show notes later. But if I would make the decision today, I think I would even drop. The new introduction screens for iOS 13, because the thing is once, once SwiftUI arrived, it was iOS 13, obviously.
[00:06:06] So we can, until you're re you switched away from iOS 13, but it was early days and there were so many books still in there. And. If you decide to use Swift you way with iOS 13, you still have to deal with those books even though they might be fixed now. So we, yeah. Yeah.
[00:06:22] Leo Dion (Host): [00:06:22] That's a good point. I didn't think about that.
[00:06:23] Antoine v.d. SwiftLee (Guest): [00:06:23] Yeah. We ended up fixing a lot of books just for those iOS versions, which still have quite a few users on it, you know? So. Yeah, it's a, it's, it's a tough decision. I think if, if we would write like new fuse today, which are quite simple because, you know, our introduction screen sounds simple, but they had a lot of animations because they didn't really make it.
[00:06:48] Leo Dion (Host): [00:06:48] Is it like an onboarding essentially?
[00:06:50] Antoine v.d. SwiftLee (Guest): [00:06:50] Yeah, and it's an onboarding, but the design, this we're like limited, we always say just, just create the best view possible. We will see what we can do. Okay. And yeah, we did it well, we didn't regret it, but it's
[00:07:03] Leo Dion (Host): [00:07:03] possible,
[00:07:06] Antoine v.d. SwiftLee (Guest): [00:07:06] especially with squishy way, but it turned out upgrades, but yeah.
[00:07:09] Leo Dion (Host): [00:07:09] You know, how does it work on 14? Yeah.
[00:07:14] Antoine v.d. SwiftLee (Guest): [00:07:14] So 14 was much better, but fourteen.one, broken other things. So. Oh, boy, it's still not really stable, but I guess it's also, it really depends how complicated your fields are. If you use like customer alignment, guides, for example, then it's all more complicated geometry readers.
[00:07:33] Yeah, if you, if you don't all use those things, then it can be really simple. Yeah. Yeah.
[00:07:39] Leo Dion (Host): [00:07:39] Yeah. I, you need a doctorate to understand geometry reader. I think,
[00:07:44] Antoine v.d. SwiftLee (Guest): [00:07:44] get your head around it. Yeah. Be struggling with that one as well. But yeah, it's pretty useful in some cases even in the, in the kind of hacky way sometimes, but
[00:07:54] Leo Dion (Host): [00:07:54] right.
[00:07:54] Yeah. So is the idea then in like next year, you're just gonna get rid of the UIKit code since you're not going to support 12 next year properly.
[00:08:04] Antoine v.d. SwiftLee (Guest): [00:08:04] Well, I guess at least new fields, you know, once we have the opportunity to rewrite a few, just because the design is so different than we would definitely think about rewriting it in Swift UI, just because, I mean, you know, for sure that one day we want to rewrite it into straightaway.
[00:08:19] So if we do it today, we make our lives a bit easier for the future selves, you know? But then still, it depends because if it's a really complicated field tangled, they do a lot of business logic we have in place already. Then it might not be the best decision to do for, for example but you know, if you, if you have a UI collection fee with a lot of your recollections with sales in it, You don't want to rewrite that one cell into Swift UI because performance wise, it might not be the best approach.
[00:08:47] You write one rewrite that whole few all cells altogether with the header footers and so on, in switch UI instead.
[00:08:54] Leo Dion (Host): [00:08:54] And the other thing you had to think about is like, even though. You might have a collection view is a great example. It's only in 14 that we have something like a collection view 50 wise.
[00:09:05] So if you're still supporting 13, you can't really like bring in a H Grid or V Grid or any of that stuff.
[00:09:10] Antoine v.d. SwiftLee (Guest): [00:09:10] Yeah. Yeah, exactly. Yeah. You can still decide to rewrite that few for iOS for two uses only, but especially if you have a large, large user base and collected. Has multiple of millions of users in that case, an adoption of 8% is still like a lot of users.
[00:09:30] So it's, it's hard to sell that through your product manager that I, that new field will only be available for 90% of the users, because it's still a big percent that you left. Yeah.
[00:09:42] Leo Dion (Host): [00:09:42] And if you're like an indie developer, you know, You don't have to care about that. Stuff's too much, but if you're going to, you're starting something new, but yeah, if you're a product company, that's where it could become a real big issue.
[00:09:53] Yeah. You know, it's
[00:09:55] Antoine v.d. SwiftLee (Guest): [00:09:55] also like a timely decision, you know, like today you have an adoption on iOS 13, but in a year that's probably gone. So. It's also thinking about the future for yourself. If you're in any developer, you're likely want to do the development to Swift your way, just to make it easier for yourself and care a bit less about that lower adoption rate.
[00:10:15] At least that's my opinion, how I would look at it because, you know, as an indie developer, your time, it's really valuable. You might not have the time to really maintain all fields as well. So
[00:10:25] Leo Dion (Host): [00:10:25] yeah, recently I've dealt with an issue on the watch where there's like a weird archiving issue with watch apps for 32 bit watches.
[00:10:36] Essentially crashed on watchOS 6 on 32 bit, because of the way archiving was set up. And I had to figure out a specific build flag for it. And it's like, now I'm like, is it really worth supporting watchOS 6? Like, yeah. I'm not, I'm not so sure about that. So yeah, I'm facing that same, same conundrum myself.
[00:10:56] Antoine v.d. SwiftLee (Guest): [00:10:56] Yeah. You know, you can only spend your time once, so you need to be careful, but with your decisions.
[00:11:02] Leo Dion (Host): [00:11:02] Yeah, exactly.
[00:11:07] Hey folks, I wanted to talk to you again about app figures. You probably already know them, but their analytics and their app store optimization and figures really is about giving makers the tools they need to get more downloads and revenue. Well now figures can help you track competitors for how many downloads they're getting and how much money they're making to their audience, demographics and which SDKs they use.
[00:11:29] Their competitor intelligence really gives you great context, say a competitor as like a new feature or was mentioned in the news recently with app figures, you can see if that brought in more downloads right away. Got a great idea for an app or a game. Well with that figures, you can figure out how big that market is and how much money you could be making with it.
[00:11:50] And that's just scratching the surface, whether you're growing your app or building a new one, and figures has the tools you need that will reduce the risk, but also get you more downloads. You don't need a large budget or a data science degree to do this kind of thing. I figures has made it affordable Ansible on top of tools and figures also provides a lot of great guides and tutorials to take you step-by-step through gaining more visibility with ASO and increasing your revenue by learning from your competitors.
[00:12:18] They just released a free guide on that, actually. So go ahead, head to the link in the show notes and try out figures for free. If you like it, user special code and power 30, 30 to get 30% off for the next three months. Thank you at figures first,
[00:12:34] going back to onboarding now. What's your plan as far as like transitioning out of the UIKit portion of that onboarding thing, once you stopped supporting iOS 12.
[00:12:49] Antoine v.d. SwiftLee (Guest): [00:12:49] Yeah. You know, the, the introduction screens, it took a lot of time, but they are now really stable and all I was 13 versions and I was 14. So we're kind of in a place where we were able to just keep on supporting our 13 for as long as we want.
[00:13:03] But as soon as we We drop. I was 12. We obviously remove and delete the old, the old logic and the old code. And yeah.
[00:13:11] Leo Dion (Host): [00:13:11] Do you use any Swift attributes to deprecate parts of your code? So that way developers understand, you know, don't use this or if you do use it, understand it's going to be going away very soon or like, how do you deal with that kind of stuff?
[00:13:24] Antoine v.d. SwiftLee (Guest): [00:13:24] We have two ways of doing that sometimes deprecation warnings. But that's more for like logic that you're likely to reuse or multiple places. Whereas calling the introduction screens, that's not really something you would do with multiple places. So a deprecation warning wouldn't really help a lot there.
[00:13:42] But what you can do is you can be smart with the availability API APIs and throw a warning. Yeah. You know that the hashtag a warning, same text you can use to predict one is for yourself. That's a, that's often something we like to do. But I guess if you. If you use the availability API APIs, and you start dropping a sort of version, you can just search on that fill-ability API and basically remove all the code that's in the L statement,
[00:14:11] Leo Dion (Host): [00:14:11] right?
[00:14:12] Antoine v.d. SwiftLee (Guest): [00:14:12] That's, that's basically the approach we use now. And there's a few places in, in our, in our code, which is kind of like the generic business logic. I think we have, we just adopted difficult data sources and we have some old implementation for iOS 12 to support reloading cells in a factory sales controller.
[00:14:30] It's quite detailed, but I know that we use a deprecation warning right there. Just because we use it, the multiple fuse and that way we automatically get like warnings from several places and we know where to where to update it. So, yeah, it's a, it's a case by case thing.
[00:14:44] Leo Dion (Host): [00:14:44] Okay, that makes a lot of sense.
[00:14:46] So over the summer after WWDC, you wrote actually some really good blog posts on logging and dealing with, with bugs and things like that. I'm not super familiar with. And I don't know if a lot of people are really familiar with how OSlog works, but maybe can you explain briefly why folks should be using OSlog over just debug print or print?
[00:15:10] Antoine v.d. SwiftLee (Guest): [00:15:10] Yeah. So honestly, if I, if I ride my own projects, I don't really set up. I was lucky because it's feels like a bigger step to take them just using brains. But if you're really looking carefully on what are the benefits of using all this stuff? There are, there are a few, and I didn't really look into the latest features regarding it, but I know for sure that you can use the console app, for example, to read outlooks, which can be useful in certain deep obsessions.
[00:15:37] And I don't know that it's more performing than print and it's, it's probably not something we will encounter that fast in, in regular applications when using prints. But yeah, you know, if you have to decide anyway, then you can maybe just use, I was lugging stat. And within the collective, we, we created our own kind of like convenient class with categories.
[00:15:58] So we can really like filter out on certain categories when we run a code and we look out sprint statements which makes it kind of like more coffee and way. And at the time I think we started trying out Coco lumberjack. I was really a favor of using it because I was just used to it. But we really didn't want to add another third party dependency, which is why we decided to use always log, which is kind of like the native available API, similar to Cocoa, Lumberjack, where you also have those log levels in place.
[00:16:29] So, yeah, I guess that's, that's how we look at it.
[00:16:33] Leo Dion (Host): [00:16:33] How, how can you find that your specific app logs within console,
[00:16:39] Antoine v.d. SwiftLee (Guest): [00:16:39] you have to filter out based on your pin, that identifier, and then you can also filter out on the certain log levels. So on, on like the error level or the deepest level and that's where you will only get the print statements of that.
[00:16:51] The things you really want to see,
[00:16:53] Leo Dion (Host): [00:16:53] and this is available. mAcOS iOS. wAtchOS over us pretty much anywhere you can, you can filter, you can pull these logs up in the console.
[00:17:02] Antoine v.d. SwiftLee (Guest): [00:17:02] Yeah. As far as I know it is, and there are even like further steps you can take. I think connecting like a device, say a colleague in the office has a certain issue on their device.
[00:17:12] And I think it's even possible to read out certain lugs to the console app, but just connecting the USB connector. I, I really didn't use that often. Yeah, that's maybe interesting to point out as well. We created the framework called diagnostics, which collects all the look statements in your app.
[00:17:30] And it allows you to, it's been an issue to just press a button in your app and it opens the mail composer with an attachment. And in the spread file, you have a whole diagnostics report, including user defaults, core data specific data, if required all the look statements, any crisis that occurred.
[00:17:50] It's a pretty nice format in an HTML file way to like an HTML menu as well. So. We we often get report from real users that press the set feedback burden and it gets reported through our support team and we get a lot of details about it user already based on the look statements we have in place.
[00:18:11] So yeah, I guess that, that took away reasons for us to use the console app, but nowadays, but yeah, it's, it's
[00:18:19] Leo Dion (Host): [00:18:19] still, yeah, that's awesome. The other blog post I wanted to talk about was one from last December about. Your four tips to make it easier to fix crashes and bugs, because I know like if you're updating an app, especially when we have an app that, Oh, well we found out it doesn't work in iOS 14.
[00:18:37] Can you figure it out? Like and I've had those before. What, what have you found is like some successful ways of figuring out where those bugs are coming from or how those practices are happening?
[00:18:51] Antoine v.d. SwiftLee (Guest): [00:18:51] Yeah. So actually in the blog post, I also talk about diagnostics. So that's a. Maybe a pretty interesting entrance point for, for users that for listeners that want to know more, if I look at how we solve crisis nowadays there are a few steps I take we're using Firebase quest reporting.
[00:19:10] But tools like Instabook do the same where when you get like the last analytics events before request occurred, and that already points you in the right direction. Then there's also defy statistics. So is it happening on iOS 12 only sometimes that happens or is it happening on an iPad only? That can really point you in a certain direction too.
[00:19:33] And then I start to. Look into the coat, you know, like, can I, based on theory, see what happened there. And if not, I tried to reproduce it in the app itself and then sometimes it's very easy to reproduce it and I can start writing a unit test that reproduces that question, because I wanna make sure that that grass doesn't occur again.
[00:19:57] So sprint. But sometimes it even happened today. This morning, I explained to her QA engineers, we have a whole team of testing people that run like smoke tests every now and then, and I asked them like, Hey I got a crest related to receiving transfers. It should be around there. Any of those views, did you happen to have a crest when you were downloading content?
[00:20:23] And sometimes they can tell me, yeah, I coincidentally had that and I had to do this and this and this. But sometimes they did it and they will start testing themselves and try to see if they can find it in a certain way, by doing all kinds of like edge cases. But yeah, that's, that's basically the approach we take to you to solve it.
[00:20:43] And once we solve the quest, that's important to, you know, those fresh reporting tools, even in Xcode itself, you can Mark a crisis fixed. And that way you will tell the tool like, Hey, whenever disgrace occurred again, show me a notification and let me know, because. Probably didn't fix it yet. So I have to take a look again.
[00:21:02] Leo Dion (Host): [00:21:02] Awesome. And we'll have a link to both of those blog posts in our show notes. Before we close out, we both will be at a conference coming up soon, as much as one can be at a conference in 2020. We'll both be speaking. And Spain, what are you going to be speaking on?
[00:21:22] Antoine v.d. SwiftLee (Guest): [00:21:22] Yeah. So lately I've been writing a lot of blog posts around core data which is kind of like a way I prepare for my talks.
[00:21:29] I try to combine my time preparing the presentation by writing about the same,
[00:21:35] Leo Dion (Host): [00:21:35] same here.
[00:21:36] Antoine v.d. SwiftLee (Guest): [00:21:36] Yeah. So what I'll be speaking about this accord data best practices and. You know, I, I took kind of like a benefit from the fact that we need to pre-record it. So I decided to make fun out of it and without giving away too much, but I'll be not alone in the presentation.
[00:21:55] I'll be speaking together with somebody else. And I also decided to really yeah, go deep and create some custom introduction screens. Do some things with audio. No. I had the chance to combine a few, a few of my previous hobbies, which is video editing and audio editing into creating an awesome recording.
[00:22:15] So yes, you make it really hard to concentrate now, you know?
[00:22:21] Leo Dion (Host): [00:22:21] Sorry.
[00:22:22] Antoine v.d. SwiftLee (Guest): [00:22:22] Sorry. I'm looking at like a futuristic.
[00:22:26] Leo Dion (Host): [00:22:26] Okay. Okay. Okay. Boilers spoiler, because my, my talk is Swift Swift package management, dependency management of the future. So I spent a few bucks on what I'm wearing right now. So I won't say I won't spoil it, but if you attend to Ennis, Spain, you'll check me out this cool, cool runner.
[00:22:47] You don't want to miss this super cool. Purely like, yeah, it has a lot of button. There we go.
[00:22:54] Antoine v.d. SwiftLee (Guest): [00:22:54] Okay. But this is so nice. It's so aligned with the house style. No, I'm not giving away too much, but I get what you're doing here.
[00:23:02] Leo Dion (Host): [00:23:02] Yeah, yeah, yeah. So, yeah. Yeah, so this will be m, this'll be my 10th. 10th of talk this year, this year.
[00:23:12] Yeah. Yeah. Wow. Yeah. That's impressive. And I think like two of them were in person. Yeah. All the arrests, obviously our video video. Yeah. I'm excited to talk about it. It seems like I'm excited. You're talking about Swift packages and like you said, it aligns with a lot of my other talks because they all have to do something with Swift packages.
[00:23:30] So it's, it's kind of a good, good cap to the end of the year, I guess, a good capper. But I'm really excited to talk about that. It's funny, you're talking about core data. There seems to be a big, I think Dani has wrote a few posts on core data as well. And we did an episode recently with Aaron from automatic about core data, but there seems to be a big research, I guess, an interest in core data.
[00:23:56] Which, which is really interesting. Yeah.
[00:23:58] Antoine v.d. SwiftLee (Guest): [00:23:58] You know Donny is a big friend of me. He's also from the Netherlands and we we often speak about gordita. He's writing a new book on
[00:24:06] Leo Dion (Host): [00:24:06] it, which is it's practical core data, isn't it?
[00:24:10] Antoine v.d. SwiftLee (Guest): [00:24:10] Yeah, exactly. So that, that, yeah. Promises to be a really good way of starting with good data if you didn't do that yet.
[00:24:17] But yeah. You know, I think over time, core data really improved, especially in the early days of, of Swift and stuff, core data, wasn't really, really a particular good, but things like the Anna's persistent container persistent history tracking, those really solved a few. Big problems in court data we had at the time.
[00:24:34] And nowadays it's much more convenient to use. I guess the only thing I really hoped for during this desktop see, and I guess I'll do that next year. Again, it's more like a Swift version of it. You know, we, we still have to interpret it with a lot with Objective-C code, which isn't really nice, but
[00:24:54] Leo Dion (Host): [00:24:54] I've actually looked at a couple of, you know, maybe I'll fly and I'll send you some libraries.
[00:24:58] I've looked at. Doing core data in a Swifty way. Cause I just hate dealing with what is a XD object model files and all that stuff. Especially going back, especially talking about Swift packages, I'd rather have my, my, my stuff all in code and doing it that way. So maybe I'll fly in. I'll send that to you.
[00:25:15] Cause I found some really interesting libraries that like kind of refactor that into more of a coding format, similar to how like Swift UI removes storyboards in the same way. Like just being able to get that all in code. The
[00:25:28] Antoine v.d. SwiftLee (Guest): [00:25:28] thing is, you know, I I've seen those libraries probably. And there's also this discussion often do use realm and, you know, the best thing is, in my opinion, is that they're all third party dependencies and you,
[00:25:41] Leo Dion (Host): [00:25:41] which we already talked about that with reacts with Slayer,
[00:25:46] Antoine v.d. SwiftLee (Guest): [00:25:46] you know, talking about, use a data and you take a really big risk of using a third party dependency.
[00:25:51] Especially if it turns out to be the wrong decision where you have to migrate all the. Which comes with all kinds of risks. So
[00:26:02] Leo Dion (Host): [00:26:02] totally fair point. Yeah, absolutely.
[00:26:03] Antoine v.d. SwiftLee (Guest): [00:26:03] Yeah. Much broader use like a betel test. That's kind of older for shooting core data than offensive third party dependency, which might not work.
[00:26:15] As good as I would hope,
[00:26:16] Leo Dion (Host): [00:26:16] especially if Apple Sherlock said essentially come up with something better, that actually works, which God willing. I hope maybe 20, 21 we'll get core data migrated fully to Swift and some declarative way. I hope so.
[00:26:30] Antoine v.d. SwiftLee (Guest): [00:26:30] I'm pretty sure they're already building something. I would be surprised if they are not.
[00:26:34] Leo Dion (Host): [00:26:34] And if people want to watch Antoine and I speak about core data or Swift packages, you definitely want to go to nsp.com. Use that promo code, empower apps to get 10% off. And it's going to be, what is it like 36 hours of talks. So it will be a lot of talks. Yeah. Yeah. It's going to be awesome. So you'll definitely want to check that out.
[00:26:57] Anything else you want to mention before we close out?
[00:27:00] Antoine v.d. SwiftLee (Guest): [00:27:00] Well, I think if anybody wants to discuss any of the topics we discussed now and share opinions, feel free to reach out to me to me on Twitter or on my website through email. Yeah. And that's right to reply as soon as possible.
[00:27:14] Leo Dion (Host): [00:27:14] We'll have that info in the notes.
[00:27:15] But go ahead and I'll let you say, say the names. What's your website and put your handle. I actually, let me try. You can find Antoine@swiftly.com. No, no. That's that hurts, you know, that hurts. Oh no, no. Yeah. vander.com.
[00:27:33] Antoine v.d. SwiftLee (Guest): [00:27:33] Maybe the person, the owner of swiftly the is listening and can get sell it to me because I've really tried to get both swiftly.com and the Twitter handler swiftly, which is also not in my
[00:27:45] Leo Dion (Host): [00:27:45] hands.
[00:27:46] How about swiftly D and L or is there, is that available or I dunno how that works in another lens.
[00:27:52] Antoine v.d. SwiftLee (Guest): [00:27:52] You know, I already build up name for a vendor leader com. So I'd rather go to the right, this destination, swiftly.com or stay with eventually, you know, it's, it's kind of the same for my Twitter handle, which is 20 now which is.
[00:28:08] Kind of odd as well. It's from the old days, but yeah, some people know it by by themselves, so I don't really want to change that easily.
[00:28:18] Leo Dion (Host): [00:28:18] I totally understand. Trust me. And then I know, I know the Twitter handle @twannl. Yep. twannl. I get that right. I've never done that. I've never done the info of the guest have usually let the guest handle it.
[00:28:34] What am I missing? You're on get hub as well.
[00:28:37] Antoine v.d. SwiftLee (Guest): [00:28:37] I can tell you it's short, short, first or short story about my Twitter handle because you know, I really tried to get swiftly. I started to research was the owner, you know, so I found out the name and I went on LinkedIn. I went on Facebook. I tried to contact him through his email.
[00:28:53] It's, it's some kind of guy living in California. Even know where, where it's a city is, but you know, you don't want to go too far, but everybody tried to get the Twitter. I know he's not been active since 2009 and I'm like, come on. I can really use that ahead a little bit.
[00:29:11] Leo Dion (Host): [00:29:11] So set. And if you're, if that gentleman is happens to be listening to this podcast, come on.
[00:29:18] Come on for Antonie. Come on, please.
[00:29:21] Antoine v.d. SwiftLee (Guest): [00:29:21] I'll give you some Swiftly merchandise, swiftly coffee. Come on.
[00:29:27] Leo Dion (Host): [00:29:27] We'll have all the info to Antoine. In our show notes, folks can find me on Twitter at Leo G Deon. My company is bright digit. If you have any questions for us or any feedback on this episode, Be sure to reach out to us, please do give us a review in Apple podcast and Google podcasts and Spotify.
[00:29:47] I'd really appreciate it. Thank you Antonie, for coming on the show. I really appreciate it. Thank you.
[00:29:52] Antoine v.d. SwiftLee (Guest): [00:29:52] It's a please
[00:29:54] Leo Dion (Host): [00:29:54] See you at NSSpain.
[00:29:55] Antoine v.d. SwiftLee (Guest): [00:29:55] Oh yes, definitely.
★ Support this podcast on Patreon ★