Mobile Testing Made Easy
Waldo provides your team with the managed infrastructure and tooling you need to quickly build and maintain your automated tests. Try it for free today!
Black Friday Deals
Happy Thanksgiving to those who celebrate it, and Happy Black Friday to everyone, as that has certainly become a worldwide phenomenon in the last few years. 😬
This repository, maintained by Marius Landwehr gets better every year. This year there are hundreds of Black Friday offers if you want to grab a bargain on a book, training course, or app.
Q&A: 10 Questions with Design Evangelism
This is great. It’s a conversation with the Apple Design Evangelism team, and it’s well-written and full of great tips. It’s certainly worth a read.
I’ll also repeat my request that this format would be a great way for Apple to summarise the content from the “digital lounge” Slack sessions that have been part of WWDC and the Ask Apple events.
Wouldn’t it be better if you use a native app to manage your App Store listings, devices, certificates, and many of the other things that App Store Connect can do? Here’s Morten Bjerg Gregersen with a brand new app that does exactly that. It’s free to manage one app, paid if you have more than one, and it looks great.
One thing that made me smile is that the “feature” of this app remembering your device, so you don’t need to 2FA every single time, is mentioned almost at the top of the App Store listing for the app. I really wish Apple would either remove that “Trust” button or fix whatever stops it working.
Using complex gestures in a ScrollView
There are some good tips in this article from Daniel Saidi for enabling multiple gestures to work together with SwiftUI. However, whenever you need the techniques in this article, I’d also spend a few minutes considering whether there may be another way to organise your UI so you don’t need multiple gestures. Gestures are great, but it can be easy to make the UI more challenging for your users as well as the code for you!
Better SwiftUI navigation APIs
Navigation was one of Apple’s major areas of focus with this year’s SwiftUI updates, but that doesn’t mean it’s perfect! That’s what Brandon Williams and Stephen Celis have written about here, with an update to their swiftui-navigation library.
Developing Apps with the HomeKit Accessory Simulator
If you’ve never worked with HomeKit, you may not be aware that Apple provide a HomeKit Accessory Simulator. I certainly had no idea! Luckily, Moritz Philip Recke has written up a great post showing us what it can do.
Redacting information in Lock Screen Widgets
Let’s finish this week’s code links with a quick tip from Alexander Weiß about considering what information you might like to hide in your Lock Screen widgets. 🤫
Icon speedrun guides
I always loved it when Marc Edwards would tweet an icon speedrun, and while I learned a lot from them, I sometimes wished I could understand more of what he was doing. Wouldn’t it be great if he wrote up some guides? 🤯 The one linked above is the pushpin, but he also wrote up the flag, pen nib, and fingerprint. 🎉
iOS SDK Developer @ Stream – Do you want to work on an open-source chat SDK used by hundreds of high-profile companies and startups that impact billions of users? If you are a product-minded engineer and care about software quality, apply on the link below. – Remote (within European timezones) or on-site (Netherlands)
Freelance Interview Engineer (US Only) @ Karat – We're dedicated to improving access in tech. If you are too, join us as a Karat Interview Engineer. As such, you'll conduct technical interviews of developers like you on behalf of our hiring clients (including Duolingo, Indeed, and more) using the Karat Platform and its data-tested questions. – Remote (within US timezones)
Senior Swift (iOS) Developer @ Nord Security – iOS developer has an essential role in growing the NordPass product and a lot of freedom to make an impact. There is plenty of space for experiments and constant improvement. You would be a part of a very ambitious and enthusiastic team which gives a lot of support and encouragement every day. – Remote (within European timezones)
Senior iOS Engineer @ Doximity – Doximity, the medical network used by over 80% of US clinicians, is hiring passionate iOS engineers (fully remote!). Come be part of an amazing product team + work on an app that is constantly evolving. Use your skills (Swift, TCA, Combine) to be an integral part of our growing telemed feature. – Remote (within US timezones)
Native iOS Engineer @ MartianCraft – Are you someone who enjoys collaboratively solving challenging problems? At MartianCraft, we work together to create innovative software for our clients. You’ll always be surrounded by the best and brightest in the industry. – Remote (within US timezones)
If you thought web3 was going badly, Twitter is asking web3 to hold its beer. 😬
Having a visible evolution process for the Swift language is great, but it can be easy to get tied up in the weeds of specific proposals and lose the broader picture, so it was great to see John McCall’s post about the Swift project’s plans for 2023.
You should read the whole post, but I was delighted to see a section on a topic close to my heart: Package registries.
It might have been a while since you heard mention of package registries, but they are a critical part of a robust package ecosystem. Your current interaction with Swift packages is from your package manifest directly through to their git repositories. That works well on a basic level, but while git repositories work exceptionally well for code development, they’re not a great repository for package artefact storage. The most serious problem by far is that they are not immutable. Git tags can be moved around, meaning that what two consumers have as a specific version may not be identical. 😬 There are other problems, though. It’s not great to download the entire commit history of a package to use it, and don’t forget that git repositories can move around or change owner. Tying everything to a git URL isn’t perfect.
Package registries solve that by providing a mechanism to deliver guaranteed, compressed versions of packages from a stable location. Anyone can make a registry, too, so it won’t necessarily be a centralised repository hosted by just one company, although we’ll see how that plays out in reality! The client side of package registry support was implemented in Swift 5.7, but you almost certainly won’t have used it yet, because there is no public package registry, and that’s what Apple is announcing in this post. They will be creating an open-source implementation of a package registry server. Exciting news!
Where does that leave the Swift Package Index? Our plan has always been to support package registries as soon as they gain adoption, and we will work with Apple as they implement the package registry service. Once implemented, we will aggregate and provide discovery for packages, just as we do today.
Swift already has a great package ecosystem, and I couldn’t be happier to hear this announcement. 🎉Dave Verwer