Sponsored Link
Do you have a product or service that'd appeal to… you? 🤯
It's been a very long time since there was an issue of iOS Dev Weekly without a sponsor, but this week is one of those rare weeks. So, I'll simply say that there's currently sponsored link availability on March 27th, April 3rd, and then some dates in May. If you have a product or service that'd appeal to people who are interested in Apple platform development, please do get in touch. 🙏
News
CocoaHub
I've been using this new app from Pedro Carrasco in beta for a while now and it's lovely. There's a feed of iOS development news, as well as "Editions" which are similar to what I do here in terms of handpicking links. There's also information on various upcoming conferences. 👍
Swift to participate in GSoC 2020!
The GSoC is an excellent initiative from Google, and I'm pleased to see that the Swift project is participating again this year. The application process starts on March 16th, so there's still time to get an idea together before you need to start thinking about submission.
Tools
Timelane
This is a very cool new tool from Marin Torodov that lets you profile your asynchronous reactive code. There's more information here, but if you're using Combine or RxSwift then you'll certainly want to check this out.
Also... who knew that you could write Instruments plugins? 🤯 I chatted with Marin about this and he let me know that some of the secrets are contained in an ancient place, full of mystery and wonder, otherwise known as the WWDC videos archive... If you're interested, here are the four (1, 2, 3, 4) videos he recommended. 🚀
My experience replacing CocoaPods with SwiftPM
Jesse Squires with a story about the experience of switching dependency managers. The issue of dependency source code being hard or impossible to check-in alongside your project source when using SPM is a real one, and one that I'm very keen to see a solution for. I'm a big believer that your source code repository should contain all the source code needed to build the app. 🤷♂️
Xcode Build Settings
What a lovely set of documentation from Mattt for every(?) build setting in Xcode. Have you ever wondered how to pass an obscure option into one of the pre-processors or compilers? The answer is almost certainly here. 📦
Code
SwiftUI defaults considered harmful
This post from Nikita Prokopov seemed to split the opinion of the community this week and generated quite a bit of discussion. I'm afraid I have to disagree with the premise of the post though. In fact:
This will surround Text with a padding of… I don’t know! Nobody knows, exactly. SwiftUI decides what that padding will be, according to some internal logic.
Yes, exactly. Of course, there are two sides to every decision, and nothing is perfect. But, given a choice between defaults that Apple picks and having to look it up every time myself, knowing that most developers are doing the same, or maybe just picking random values? I'll go with Apple provided defaults that help my app look at home on the platform every time.
How to build neumorphic designs with SwiftUI
I had a few thoughts as I watched this video from Paul Hudson. First, I had never heard the word "Neumorphic" before! 🤯 Second, I love gradients and shadows, but this video shows how easy it is to overdo it. Third, SwiftUI is fantastic at defining custom, reusable styles. Fourth, I much prefer the look of the "accessible" version at the end, which is a good thing for everyone. 😍
Many View Controllers
I don't link to articles on architecture very often, but I am a sucker for a post that tells you not to worry at all about finding, or adopting the perfect app architecture. There's no such thing, and you'll waste endless time trying. I agreed with everything that Gui Rambo said in this article that echoes the content of this talk. 👍
MarkdownAttributedString
I've lost count of the number of times I've just wanted to get some basic Markdown formatting into an attributed string. I usually don't need every last feature, or for it to be fully CommonMark compliant. This new library (can you call one source file a library? 😂) from Craig Hockenberry is simple, fast, and thread-safe. 👍
Jobs
Project Manager @ Coradine Aviation – Create inspired systems for passionate global customers with a tight-knit talented team by orchestrating and driving our iOS, macOS, and web-based projects forward in a transparent and flexible work environment! – Portland OR
Engineering Manager @ WillowTree – As an Engineering Manager you’ll mentor a team of all levels to help them achieve their personal and professional goals. Your partnership and coaching skills will impact our teams, clients, and company! You’ll have clear oversight of how engineering runs day-to-day and you’ll influence project outcomes and team happiness. – Charlottesville VA, or Durham NC
Senior iOS Developer @ Alarm.com – Collaborate with outstanding people; Make an immediate impact; Gain well-rounded experience; Work with the latest technologies; Focus on fun! – Tysons VA
Is your company hiring? I'd love it if you let your recruiting/HR department know that they can post iOS development job listings, right here, for free. It'll only take you a second, and you'll get colleagues who already read iOS Dev Weekly! 👍
And finally...
whatevs 😂
Comment
A small but important note to start this week. I'm having some problems with Cloudflare giving HTTP 403 errors on the iOS Dev Weekly homepage. It shouldn't affect the links in the newsletter, but if for some reason it does, please try again a little later.
Unfortunately, I'm not sure there's much I can do about it. As I understand it, it's caused by Cloudflare being too sensitive and thinking that your legitimate traffic is malicious. I could turn Cloudflare off, but I also use it to provide my HTTPS, and I don't want to lose that. I've loosened the protection settings as much as I can, so hopefully that'll help.
But... It's Friday, and the one constant thing about your week is that I publish a newsletter every Friday! 🚢 Please keep your fingers crossed that it works though, and if it doesn't, please try again later. 🤞
Dave Verwer