Sponsored Link
Join a FREE iOS Architect Crash Course for a limited time
If you’re a mid/senior iOS developer looking to improve both your skills and salary level, join this free online crash course. It’s available only for a limited time, so get it now.
News
The launch of the Mojo language
This isn't related to any Apple platform development and only tangentially to Swift, but it's always nice to see what Chris Lattner has been up to!
Code
Atoms
This new package from Johan Thorell looks interesting:
By avoiding large observable objects with many published properties, Atoms help you steer clear of performance bottlenecks due to rendering, while maintaining a single source of truth in your app’s architecture.
There’s more detail and some discussion in this thread on the Swift Forums.
By the way, the Community Showcase forum is a great way to get the word out on projects like this. I subscribe to posts there by RSS, but there are only a few posts per month. It’s a great way to get the word out about your current project.
Using TabularData to Dump Model Data
If you read the framework description for TabularData, you might be tempted to dismiss the whole framework unless you are working with machine learning models.
Import, organize, and prepare a table of data to train a machine learning model.
In this post, Jordan Morgan explains why you shouldn’t skip it. I promise you’ll learn something by reading this.
The power of overlays in SwiftUI
There are so many times when building some UI with SwiftUI that your first thought when stacking controls on top of one another is to reach for a ZStack
, but before you do, consider an overlay
instead! There are many benefits, but having consistent geometry sourced from your primary control is the most significant. That’s not to say you’ll never need ZStack
, but it’s great to be more aware of this important modifier, and here’s Majid Jabrayilov with a detailed look at it.
Implicit self for weak self captures
Here’s Toomas Vahter with a nice reminder of this small but impactful change that arrived with Swift 5.8. It always felt strange needing the self
.
Jobs
Senior iOS Developer @ Shareup – Want to build something new? Join our small, design-led team at @shareupapp to build the fastest, easiest, and most secure way to share anything with anyone. We use Apple’s best tech, including Swift Concurrency, Combine, Catalyst, UIKit, and SwiftUI, and you’ll work closely with our talented team. – Remote (within European timezones)
Apple Platforms Developer @ Cascable AB – Cascable is a small "indie" company based in Stockholm, Sweden. This is the job for you if you love working with and learning about multiple technologies. We have UIKit, AppKit, SwiftUI, and Swift-on-the-Server (Vapor) across our suite of products, and you'll be working with all of them! – On-site (Sweden) with some remote work (within European timezones)
Senior iOS Engineer @ Reveri – We’re looking for an experienced, adaptable, and engaged Senior iOS Engineer looking to make a genuine positive difference in our member’s lives through self-hypnosis. 100% SwiftUI codebase, iOS 15+, Combine, and Concurrency. Small team, 3 iOS, 2 Android Engineers, every role has impact. – Remote (within European timezones)
Do you have any open positions at your company? You can list them over at iOS Dev Jobs and have them promoted to thousands of developers for free. 🚀
And finally...
Why doesn’t the real Uber app have this? 🐶
I only recently came across Soren’s satirical app design newsletter via a recommendation from a friend, but it has already brought me many chuckles. 👍
Comment
Did you catch Felix Krause’s announcement of his new Context SDK last week?
It’s a library that helps an app determine the best time to present an upsell, purchasing decision, or any call to action to a user based on what they are doing and how likely they are to be receptive to it. It advocates presenting fewer upgrade prompts for better conversion rates.
How does it know when to suggest good times for an upgrade prompt? iOS devices have a vast amount of information on what we are doing, and the library combines data from some of the sensors with CoreML to figure out what users are doing. Is someone out walking their dog or bored and sitting on their sofa? Are they running late to meet friends for dinner with only 10% battery or commuting to work on a bus? People are far less likely to sign up for something in some situations, no matter how good the special offer is. They’re also more likely to sign up if it’s not the 1,000th time they’ve seen the CTA.
Read the whole article if that sounds interesting because the post has plenty more details and evidence that the technique works.
This would instantly be deep into “creepy” territory if that data was being sent back to some company’s server to be stored and cross-referenced against loads of other data, but the SDK doesn’t request any additional app permissions and never sends a network request. It all happens on-device.
There is something that keeps my “this doesn’t feel quite right” sense tingling. I think it comes down to many years of hearing story after story of unscrupulous companies doing dubious (or awful) things with large amounts of behaviour data, though, rather than being related to anything this SDK is doing. Of course, nothing will stop companies from integrating this SDK and sending all this data somewhere, but they could also do that without this SDK. As long as you agree with the business model of free apps marketing their in-app purchases, I don’t think there’s anything to dislike here.
This idea feels like a win for everyone involved. Users get fewer calls to action at inconvenient times, and developers get happier users who are slightly more likely to respond to a CTA. That sounds good to me!
For full disclosure, I know Felix well and knew he was working on this project.
Dave Verwer