Sponsored Link
Goodbye Spotlight. Hello Raycast
Raycast takes the macOS Spotlight experience to the next level: Create Jira issues, manage GitHub pull requests, join Zoom calls and control your tools with a few keystrokes. Automate your everyday tasks with scripts and join a community packed with productivity nerds. Download it now.
News
SharePlay release schedule update
Yes, this is a shame, but I'd rather have it ship late and stable than on-time and buggy. 🤖
Tools
The Accessibility Inspector
I could have done a better job with accessibility in the first release of the iOS Dev Jobs apps, so the Accessibility Inspector has been a close friend this week. There will be an update next week when I get one or two tricky VoiceOver issues solved. In the meantime, why not let Dominik Hauser show you the basics of the tool.
Code
My favorite new Swift API in iOS 15
What is Paul Hudson's favourite (at least one of us can spell it correctly, Paul! 😂) API in this year's updates? I hadn't spotted this new API, but it's remarkable. Think about everything that's going on to make that API so simple. It's remarkable.
Creating Custom Parseable Format Styles
I've linked to some articles on the new formatting APIs before, but I haven't seen anyone cover them in as much depth as Mark Thormann does in this post. You'll get a quick recap of today's formatters, then dive into the new ones, and finally, make a custom one. 👍
How to show multiple alerts on the same view with SwiftUI
Defining declarative UI in SwiftUI feels natural and logical, and having it react instantly and consistently to state is mind-blowing. However, one aspect of the framework that always (and continues to) feel a little awkward is what I'm going to call declarative interaction, like presenting a sheet or an alert. Things get even trickier when you have complex sets of interactions from a view. Sarun Wongpatcharapakorn has a solution.
How to write unit tests for SwiftUI apps
I wrote about one way to test SwiftUI views last week, but it was a "cheat" by testing the output of the view as a snapshot. Is it possible to test the actual view? Well. No. But Gio Lodi goes right up to the other side of the problem with this article on testing everything inside a view. Between the two techniques, that's a well-tested view. 🚀
Design
The iPadOS keyboard shortcut menu system
This suddenly does look very like the macOS menu system, doesn't it! 🥰
Business and Marketing
AAA Campaigns
I'm not an expert on social media advertising at all. I promoted Curated through Twitter ads when we first launched it, but they ended up being a great way to waste a few thousand dollars, probably because I had no idea what I was doing. 😅
I didn't even know Facebook had completely automated app campaigns, and I definitely wouldn't feel great about giving them this much money (even if it was profitable), but that doesn't make this thread from Jake Mor any less interesting.
Videos
500 episodes of NSScreencast!
I know from experience that doing anything 500 times with regularity is hard, so when someone reaches that milestone, it's worth celebrating. 🚀 I've linked to Ben Scheirman's NSScreencast's tutorials many times over the years, and his site remains an excellent resource for high-quality videos that are never too long and cover a wide range of Swift development topics. Congratulations, Ben! 🎉
Jobs
After last week’s issue, I had a couple of emails from people concerned about the number of jobs in the newsletter, specifically about what they took as a percentage of the total content.
It’s probably good for me to explain how I view this newsletter. My philosophy has always been that if people find one or maybe two links in each edition useful and maybe skim read my comment, then I’m doing a good job. When I first created this jobs section of the newsletter over seven years ago, I positioned it after all of the main content so people could easily ignore it if they were not interested. Yes, the “And finally…” link is the final link in each issue, but that benefits from being on an infinite edge, so skipping the jobs is trivial, and it’s okay if not everything in the newsletter applies to you. Some people are looking for work, and I hope this section helps both them and companies looking for great people.
Last week’s launch was a great success, and I’m so grateful for the help you all gave me in promoting it. Especially the overwhelming number of retweets that this tweet received! 😳 Thank you! ❤️ However, I am under no illusions that the site is now a success. It’s going to take constant work, just as I have been doing for the last two years since the original site launched. The number of jobs in the post-launch editions back then was also high, but it settled down again after a few weeks. I’m sure the same will happen this time too.
There’s also the issue of sustainability. The re-build of the jobs site took significant time and money, and there are costs to sending the email and running the servers to host it. The featured jobs that end up in this newsletter make that possible. It’s that simple.
Oh no. Now I’ve made the jobs section even longer! 😳
Lead iOS Engineer @ Hillrom – Hillrom’s Voalte Mobile software solutions focus on being the best communication and collaboration tools for healthcare care teams. The product offering has multiple mobile applications, web applications, and server applications. – Remote (within US timezones)
iOS Engineer @ Mercury Intermedia – We build award-winning apps for a variety of mobile platforms and global brands including sports, entertainment, and retail. We fly under the radar, but our work sure doesn't. You probably have one or two of our apps on your phone right now. – Remote (within US timezones)
Senior Mac / iOS engineer @ Beam – A unique chance to work in a talented multidisciplinary team (ML,NLP, web, crypto...) to change the way people experience the Internet. – Remote (within US, European, or Asia-Pacific timezones) with some on-site work (France)
Senior iOS Developer (m/f/d) @ SIXT – Join SIXT in shaping the future of mobility! You'll be joining our growing team of 35+ iOS engineers spread across multiple continents. With us, you have the chance to work on exciting projects in our highly modularized native Swift app, explore new innovative technologies or build your own ideas. – On-site (Germany) with some remote work (within European timezones)
iOS Engineer @ Lickability – We’re a software studio making apps for clients like Houseparty, Clubhouse, & The Atlantic. We’ve also created a few of our own: Scorecard & Buildwatch. We’re hiring a full-time remote iOS engineer in the US. And, we have a four-day workweek, so you can take Fridays to rest, learn, & live your life. – Remote (within US timezones)
Sr. iOS Engineer @ MyPlate from Leaf Group – MyPlate is an award-winning app, transforming tens of thousands of lives on a daily basis. Our mission is to make users happier and healthier by simplifying their nutrition data. We are looking for a Sr. iOS Engineer to help us grow MyPlate as a business. – Remote (within US timezones)
iOS Developer @ Bontouch – Bontouch is an award-winning product innovation agency. We have a simple but ambitious idea: to make the world’s greatest apps for the best brands on the planet. Join us and work with fun, passionate coworkers with different backgrounds creating world-class digital experiences for million of users. – On-site (Sweden) with some remote work (within European timezones)
iOS Engineer @ Govenda – Build NATIVE for a women founded company. Work with a variety of exciting technologies such as video conferencing and eSignatures. Collaborate with an awesome group of engineers across a variety of platforms. Ship code for both iOS And Mac OS! – Remote (within US timezones)
Senior iOS Developer @ Sunshine Health Studios – Come join a highly experienced team of engineers that consists of former Y Combinator backed technical founders! We value productivity, transparency, and ownership, ensuring everyone has a hand in defining company goals and how our work matters. Help our growing user base improve their health! – Remote (within US timezones)
iOS Developer @ Shape – Shape is known for building high quality apps that tackle real problems. At Shape you will be working closely together with talented designers and developers to build awesome mobile apps. You will put your existing skills to good use, and learn new ones by working together with other skilled people. – On-site (Denmark)
Senior iOS Engineer @ ClassPass – Come help us build the biggest fitness app in the world. 💪 ClassPass connects users to millions of workouts at studios all around the world, and we're looking to grow our mobile team. Work from one of our offices across the US, or remote. – Remote (within US timezones) with some on-site work (United States in CA, MT, NY, or TX)
iOS Engineer @ Citizen – Citizen which is the #1 public safety app in the world is seeking a remote iOS developer to help us build, iterate, and ship new features to deliver on our mission of making your world a safer place. – Remote (within US 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, MVVM, FRP) to be an integral part of our newly launched telemed feature. – Remote (within US timezones)
Staff iOS Engineer @ Cardlytics – As a key player of the Development team, you’ll help design, architect, and build the next iteration of the Cardlytics iOS application. You’ll create efficient, scalable, and reusable components using Swift. – Remote (within US timezones) with some on-site work (United States)
And finally...
If you've not been keeping up with all the internal emails disclosed as part of the Apple vs Epic trial, here you go.
Comment
One of the talking points of the last couple of weeks was this tweet from Hadi Partovi as part of this fascinating thread about launching Internet Explorer 3.
I’m all too familiar with working too hard. Even in my first job, I often stayed late at the office or went in alone at weekends to get projects finished. The ridiculous thing is I usually hadn’t been asked to; I just wanted to “make good stuff”. That trend continued and got worse as I started my own business instead of working for others.
I happened to look at my GitHub profile the other day, and my contribution grid shocked me. There are very, very few “blank” days there. Too few. Yes, many of those commits will be merging additions to the Swift Package Index or adding sites to the iOS Dev Directory, but even those mean I’m checking my email and thinking about work almost every day of the year. I am not proud of that grid.
That’s just code commits too, and coding is probably the smallest part of what I do for “work”. I’m sure I’d be horrified to look at a similar grid that covered everything. 😬
Even worse, In my head, I think I’ve had downtime this year. When I looked at it, I was expecting to see a darker area in the grid recently as the re-launch of iOS Dev Jobs came together, but it’s all reasonably evenly distributed. What that grid tells me is that my “downtime” isn’t very down at all.
It’d be much easier to go out and get a job working for someone else. I’d earn more money and certainly have more free time. Would I be happier? I don’t know. I know that I’d find it extremely hard not to build the ideas I have. Inevitably, that would lead to side-projects outside work, which would eat up evenings and weekends until I found myself asking, “should I take this full-time?” again.
It’d be easy for me to wrap this up with some “thought leader” type advice about work/life balance or by talking about how important it is to permit ourselves to take breaks, but how could I do that after the last few paragraphs? But it’s more than that. The truth is that while I clearly have the balance wrong, I understand what Hadi was talking about in his thread. Creating things is thrilling in a unique way. It’s addictive, and it’s effortless to let balance slip away. In many ways, I’m lucky to enjoy what I do so much that I do it to excess, but looking at a year of my life in that grid was sobering. We don’t get that many years.
I’m going to try for more “blank” days in the next 12 months. Wish me luck!
Dave Verwer