Subscribe for weekly commentary and coverage of Swift and Apple platform development. Written by Dave Verwer and published every Friday. Free.

Picture of Dave Verwer

Issue 502

9th April 2021

Written by Dave Verwer

Comment

Many years ago, back when I used to be a .net developer, I remember feeling frustrated by Microsoft developer marketing. They needed to sell Visual Studio upgrade licenses every year, so their messaging was always around what was coming in next year’s release. As soon as every major version released, it felt like it was already out of date because Microsoft immediately started hyping up next year’s enhancements.

Apple doesn’t have a sales model as Visual Studio did back in the late 90s/early 00s. In fact, in stark contrast, they never talk about what’s coming next! Instead, we, the community, have taken over that task, and from the minute the annual set of new operating systems ship, our minds turn to what’s coming next year. 😅 Will this bug be fixed? Will SwiftUI get that new API next year? Will Core Data be replaced with something that feels more at home with SwiftUI? How many times have you read an article titled “Is SwiftUI ready for production?” in the last year? It reminds me of the old feelings I had about the Microsoft sales cycle, except we’re doing it to ourselves.

Maybe I’ve changed as I got older, but over the last few years I’ve found myself wanting to think less about what’s coming next, and more about the present. I don’t pay too much attention to the latest rumours, and while I’m not immune from talking about or linking to articles on what might be coming in next year’s releases, I try not to dwell on it.

There’s always something new coming, and it can be tempting to say, “This will be so much easier when X gets released”. Unfortunately, I have bad news. When X is released, Y will be just around the corner, tempting you to wait for it, too.

There’s no better time to start building something than right now. It doesn’t need to be “pure” anything, and it doesn’t need to be using the latest trends in app architecture. It’s much more important to build the things you want to make than to ensure that they are perfect.

Note: Please ignore that last sentence if you’re building aircraft flight control systems or nuclear reactor security software. 😂

Dave Verwer

Building an open-source app? MacStadium can help

To support the open-source community, MacStadium is offering free cloud-hosted Mac minis for iOS or macOS developers working on open source projects. Both Intel-based and Apple silicon M1 minis are available or apply an equivalent discount to a private cloud. Apply here to get started.

News

AltConf 2021?

I meant to include this last week when talking about WWDC. I really like how the AltConf team think about their position regarding WWDC. They exist to provide extra capacity around the conference, not as “competition” to it. Since the capacity of an online WWDC is not limited, they have scaled back their plans, but that doesn’t mean that nothing is happening. Read on to find out what they are up to!


Get ready for App Tracking Transparency

There’s nothing particularly new in this reminder from Apple, but it’s worth mentioning in case everything around the AppTrackingTransparency framework has somehow passed you by. Are you ready?

Tools

Xcode’s secret Internal debug menu

I thought I had linked to this little curiosity before, but a search of my archives turns up nothing. It shouldn’t be a surprise that this exists. I’d imagine we’ve all built a secret debug menu into apps that we’ve written. I know I have!. Thanks to Khoa Pham for the tip!

Note: It might be obvious, but Apple does not want you to enable this and absolutely will not guarantee what these menu commands do. If it turns out that “Capture Canvas Element Images” erases your disk, that’s on you. 😅

Note #2: Apple folks, please see rdar://987654321: “Capture Canvas Element Images” should not erase your disk. 😂

Code

Introducing Swift Collections

Have you ever wished for an ordered dictionary? Me too! Apple is continuing to publish more and more Swift packages, and swift-collections is their latest. Karoy Lorentey takes us through ordered sets, ordered dictionaries, and deques.


Custom Property Wrappers for SwiftUI

Here’s Dave DeLong writing about some of the property wrappers he’s come up with while working with SwiftUI. The clever part of all three of these wrappers is not the code, it’s how they help add better semantic meaning to your properties.


Exploring some of the lesser-known, built-in Formatter types

I’m fairly sure everyone reading this will have used a DateFormatter at some point, but have you used some of the other formatting APIs? John Sundell gives us a look at formatting names, addresses, and lists. As someone who only speaks English and is a fan of the Oxford Comma, I found his comments on the internationalisation aspects of ListFormatter fascinating.


More Efficient/Faster Average Color of Image

When I first saw the title of this post from Christian Selig, I thought it would be about Core Image as I’ve seen several people recommend that in the past. Of course, there’s always a more straightforward way. 👍

macOS Development

Creating a licensing system for paid apps in Swift

Unlike with iOS, you have a choice of how you’d like to sell your Mac app. Do you pop it into the Mac App Store and cross your fingers? Or, do you also sell independently? Selling outside the MAS is important, but you’ll face the problem of building a licensing system. I enjoyed this post from Bruno Rocha, which tackles the problem both conceptually and technically.

Business and Marketing

Paywall Screens

This new site from Rahul Shah is fantastic. The idea of a gallery site for inspiration is not new, but I love that this site focuses on probably one of the most critical parts of your app design, if you want to make money from it, payment screens.

Jobs

macOS Software Engineer @ Elgato – Elgato’s awesome software products require awesome engineers. We are looking for highly motivated engineers focusing on macOS desktop applications to extend our product portfolio and improve the existing products. Your future agile team is a mix of experienced and junior colleagues with various technical and cultural backgrounds. We are looking forward to meeting you. – München or Mönchengladbach

Senior iOS Developer @ Vivino – Join our incredible, multicultural, passionate and truly international work culture and empower people everywhere to enjoy wine to the fullest. – Copenhagen

Technical Lead, Mobile Engineering @ M1 Finance – M1 Finance, The Finance Super App, is on a 🚀 of growth! We want to empower our users to take control of their financial well-being, and we would like you to help us. If you are an enthusiastic mobile engineer looking for your next product challenge and mentoring opportunity, then we would be delighted to hear from you. – Chicago IL

Senior iOS Engineer @ DuckDuckGo – We are a diverse and fully distributed team from around the world, working toward our shared vision to raise the standard of trust online. Join our team as a Senior iOS Engineer and help shape the technology that powers the DuckDuckGo search experience. As part of our growing team, you will collaborate with team members at all levels to identify and close major gaps in our products. – Remote

Senior iOS Engineer @ onX – Are you an iOS developer who loves the outdoors? Join onX! If you’re passionate about writing great software, love playing outside, believe in protecting access to public lands, and want to dominate the off-pavement mobile GPS market – then join our team, where we empower millions of outdoor enthusiasts to explore the unknown! – Remote within the US

iOS Engineer (Multiple Levels) @ Turo – Help us build product features that delight guests who book vehicles on our platform and enable hosts with the tools they need to manage their fleet. The iOS team is actively transitioning our iOS codebase from Objective-C to Swift, and we’re learning SwiftUI together–in labs–as we migrate our internal, watchOS, and tvOS apps. It’s really an exciting time to be an Apple-centric engineer at Turo. – San Francisco CA

Mobile Full Stack Engineer @ Expensify – Join our passionate team of top-notch engineers to solve a real-world problem, and help people spend less time managing expenses and more time pursuing their real goals. As we revolutionize the way people manage their expenses, being part of the Expensify team means building the easiest, fastest, and most efficient platform to automate everything expense-related. – Remote, San Francisco, Portland, Michigan, New York, London, or Melbourne

iOS Software Engineer @ Lose It! – We believe a small team of talented people can do great things. We are purpose-driven, with start-up energy and the stability of a profitable business with plans for the future. Our product-first strategy has helped millions of users live healthier lives. Lose It! offers incredible benefits, flexible hours and a balanced approach to work and life. Feel like the team for you? Let’s talk. – Boston MA

Senior Mobile Software Engineer @ Doximity – Doximity, the medical network used by over 70% of US clinicians, is hiring passionate Senior iOS engineers (remote-friendly!). You’ll get to be part of an amazing product team and work on an app that is constantly evolving. Use your skills (Swift, MVVM, FRP) to be an integral part of our newly launched telemedicine feature. Apply today! – Remote within the US

Are you hiring? Get your open iOS development positions listed right here by posting a Featured Listing over at iOS Dev Jobs.

Insiders

Thanks so much to this week’s supporters and insiders! Sommer Panage, Roland Gröpmair, Jean-Francois Duval, Patrick McCarron, and Vadim Shpakovski. ❤️ I appreciate your support.

What is all this “Insiders” stuff? If you happened to miss the 500th issue, I launched something new as part of it! There’s no pressure at all to join, but it’s available if you’d like to!

And finally...

Welcome to the other side…

This is fun, but also kinda mind-blowing! 🤯 Incredible.