AndyBargh.com https://andybargh.com Exploring the World of Swift and iOS Development Thu, 13 Apr 2023 20:25:39 +0000 en-GB hourly 1 Issue 212 – January 7th 2020 https://andybargh.com/swiftdevelopments-212/ Tue, 07 Jan 2020 12:00:27 +0000 https://andybargh.com/?p=12113 Swift Developments Newsletter

Swift Developments is a hand-curated newsletter containing a weekly selection of the best links, videos, tools and tutorials for people interested in designing and developing their own apps using Swift.


Welcome to Swift Developments Issue 212 the first issue of 2020, the first issue of the next decade but sadly what will be the last issue of Swift Developments for a while.

Like many, I use the end of the year as a time for reflection, a time for looking back at what I’ve achieved but also a time to look forward to what I want to accomplish in the coming year.

My break this year has let me do some serious soul searching and with the knowledge of a number of major challenges coming my way this coming year, it feels like the right time to take a break from Swift Developments for a while so that I can focus on some other areas of life and the challenges ahead.

To this end then, I wanted to thank you for all the support, input and encouragement over the last few years. It’s genuinely spurred me on over the last 200 or so issues and in return, I really hope you have found Swift Developments useful. At the moment, I’m not sure what the future of Swift Developments will be in the long term. It may return. It may not but regardless of what happens, I want to wish you a wonderful, successful, and ‘Swifty’ 2020 and beyond!

News

Vapor Cloud

It must be a time for things to come to an end. Over the Christmas period, the Vapor core team have announced that Vapor Cloud will be shutting down as of 29th February. Check out the link for more details as well as guides on migrating to other platforms such as Heroku. It doesn’t mean Vapor is dead though. Far from it. @tanner0101 has already detailed many of the new changes for Vapor 4 and with IBM recently announcing that it will not continue working on Swift (and therefore Kitura) in 2020, I really hope the community get behind Vapor and help push it forward.
vapor.cloud

Business

How We Run the NetNewsWire Open Source Project

Looking for some tips on how to run your next open source project? Look no further than this article from @brentsimmons details how he and the team run the development of the popular open-source RSS reader – NetNewsWire. I like the structure of their approach and it’s got some great ideas that are worth thinking about for your next project.
inessential.com

Swift

The Decade of Swift

With Swift a little over 5 years old now, @johnsundell takes a look back at how Swift has changed, evolved and developed as well as some of the things that are coming in the future. I’ll be really interested to see if the 2020s see Swift fully breaking out of the Apple ecosystem.
swiftbysundell.com

Turning Property Wrappers into Function Wrappers

@v_pradeilles takes an interesting look at one of Swift 5.1’s new features – property wrappers – and how we can actually use them to wrap functions as well as data opening up a whole range of new possibilities.
medium.com

Using Type Erasure to Build a Dependency Injecting Routing Framework in Swift

Although Swift’s strongly-typed nature provides huge benefits there are occasions when it’s strict typing gets in the way. This is where type erasure comes in. It’s a complicated topic but this example from @rockthebruno provides a great example of type erasure in practice, illustrating how you can use it to build a dependency injecting routing framework.
swiftrocks.com

Code

Advances in Apple’s Vision Framework: 2019 Year-in-Review

Apple’s Vision framework has come along way in the last few years gaining a number of exciting new features and improvements. 2019 was no exception and in this article, @chughanupam provides a summary of all of 2019’s new features along with links to articles that show many of them in use.
fritz.ai

SwiftUI

SwiftUI Learning Curve in 2019

If you’re looking to get up to speed with SwiftUI this year, then make sure you check out this post from @mecid which brings together a whole host of articles he’s written over the last six months on different aspects of working with SwiftUI. It’s a good place to start if you’re looking to get up to speed.
swiftwithmajid.com

Finally

On Forming Habits

With a new year typically come new goals. Whether it be self-improvement, side projects, publishing your next (or first) app or simply learning something new – habits are a powerful tool in moving you forward and with the challenges ahead for me in 2020, this article from @jordanmorgan10 rang true in so many ways. Have a wonderful 2020, thanks again for all the support over the last five years and go out there and see what you can build.
swiftjectivec.com

]]>
Issue 211 – December 17th 2019 https://andybargh.com/swiftdevelopments-211/ Tue, 17 Dec 2019 12:00:18 +0000 https://andybargh.com/?p=8120 Swift Developments Newsletter

Swift Developments is a hand-curated newsletter containing a weekly selection of the best links, videos, tools and tutorials for people interested in designing and developing their own apps using Swift.


So here we are – Issue 211 and what is going to be the last issue of 2019! Like last year, I’m going to take a couple of weeks off over the holiday season to have a bit of a break, relax, recuperate and generally disconnect from tech as much as I can. Before then though (and before we dive into the links this week), I did just want to take a moment to say thank you for all your support and encouragement over the last year. With so many new things announced from Apple and the Swift and iOS development community, it’s been great to hear that people are still finding Swift Developments useful for discovering new and existing projects and I really appreciate your continued support and the feedback and suggestions that you have provided. After all, aren’t we all trying to get better? 🙃 For now, further improvements are going to have to wait until next year though so until then, I hope you have a wonderful holiday season if you’re celebrating, remember to take some time to relax and I’ll be back in your inbox in the New Year! Enjoy!

Code

Compute Image Similarity Using Computer Vision in iOS

I’m always surprised at the sheer amount of power available in Apple’s Vision framework. This article from @chughanupam highlights another such example – a new addition to the framework this year – the ability to determine the similarity of two images. It’s a perfect fit for apps that detecting duplicate images, grouping and searching images or even for analysing a person’s signature to see if it is a forgery.
fritz.ai

Quick Tip: Clearing Your App’s Launch Screen Cache on iOS

A useful tip from @_inside on how to clear your app’s launch screen cache on iOS.
rambo.codes

SwiftUI

Working with SwiftUI Gestures and @GestureState

If you’ve done any programming with SwiftUI you’ll probably be familiar with triggering code using the onTapGesture modifier but SwiftUI also supports a whole host of additional gestures such as drag, magnification, rotation and long-presses that you can use within your UI designs. @simonng walks you through some of the most common ones.
appcoda.com

Building Bottom sheet in SwiftUI

Now that you’ve got to grips with Gesture in SwiftUI, let’s put it into practice with this step-by-step tutorial from @mecid that shows you how to build your bottom sheet similar to the one in Apple’s Maps app.
swiftwithmajid.com

Getting Started with SwiftUI Animations

This tutorial from @TheMikeKatz walks you through the basics of animations in SwiftUI starting with simple animations and animation timings through to more complex spring and geometry-based animations as well. It’s a great primer to get you started.
raywenderlich.com

Custom Controls in SwiftUI

If you’ve read the previous article and are looking to put some of your new-found animation skills into practice then check out this article from @myridiphis that walks you through the steps for creating a custom animated control in SwiftUI.
github.io

Books

Swift for Good

Organised by @twostraws, but written by multiple authors and speakers from across the community, “Swift for Good” is a new book bringing together chapters on some of the most important topics facing Swift developers today from API design to SwiftUI and beyond. It’s a great initiative with all the authors donating their time and knowledge for free and 100% of the proceeds being donated to Black Girls Code a charity focused on empowering girls of colour between the ages of 7 and 17 to build their own future by becoming innovators and leaders in STEM fields and their communities through exposure to computer science and technology. I’d encourage you to check it out.
swiftforgood.com

Videos

iOSDevCampDC 2019

If you’re looking for something to watch over the Christmas break then we have two sets of conference videos for you this week. First, we have set of videos from @iosdevcampdc 2019 – a small one-day, one-track conference focused on iPhone and iPad development with talks cover topics such as Machine Learning on iOS, SwiftUI, ARKit, functional programming and more.
youtube.com

SwiftServerConf 2019

Our second set of conference videos this week come from this year’s @SwiftServerConf. There’s are some really interesting talks in here, and I’m looking forward to spending some time over the break settling down to watch a good quantity of these.
youtube.com

Behind the Scenes of iOS and Mac Security

Not directly developer-related but a really interesting video none-the-less. In this talk from Black Hat USA 2019, Apple’s head of Security Engineering and Architecture @radian discusses some of the security features built into iOS 13 and macOS Catalina that lets users use the Find My feature to find their lost devices without divulging sensitive information to Apple.
youtube.com

]]>
Issue 210 – December 10th 2019 https://andybargh.com/swiftdevelopments-210/ Tue, 10 Dec 2019 12:00:29 +0000 https://andybargh.com/?p=8118 Swift Developments Newsletter

Swift Developments is a hand-curated newsletter containing a weekly selection of the best links, videos, tools and tutorials for people interested in designing and developing their own apps using Swift.


So here it is, Issue 210 and we’re rapidly heading toward the end of 2019. It’s also the first issue I’ve written on my new 16″ MBP! Yep – I couldn’t resist and after just over 7 years, I’ve finally decided to retire my old 2012 Retina MBP and upgrade to a new machine that will hopefully take me forward for at least the next few years if not the next 7! Having had the new machine for just over a week I can safely say I’m loving the experience! No keyboard issues that I’ve noticed, a chunk more memory and hard drive space, a massive bump in processing power and a correspondingly impressive decrease in compile times, the time saving alone has been worth the investment! Needless to say – I’m loving it! 😍

Business

Apple’s Technology Transitions

If there is one thing that is guaranteed about working in the computer industry, it’s that technologies will continue to be introduced and others will continue to fade into obscurity. This ever-changing landscape poses an interesting problem though – how to handle this obsolescence. @pilky takes a look at how Apple has approached this over the years.
pilky.me

Design

Can You Learn Design?

As an app developer, you’re probably comfortable working with code. You can take a design someone has created and then implement it but what about that first part? What about coming up with the design yourself? This is a challenge faced by many developers moving into the indie space and to this end, @jordanmorgan10 has this week been asking himself the question – is it possible to learn design as a developer?
swiftjectivec.com

Swift

How OptionSet Works Inside the Swift Compiler

@rockthebruno takes another journey into the depths of the Swift compiler – this time with a look at OptionSets – how they are represented in Swift, how they are bridged to Objective-C’s NS_OPTIONS and how you can use them in your Swift code.
swiftrocks.com

Making Swift Code Extensible Through Plugins

When writing libraries that are meant to be used by other developers it can be difficult to decide on where the scope of your library should end. With the correct design though, you can keep things clearly defined and yet still design things in such a way that they can be easily extended by other developers. This article from @swiftbysundell can help with this, showing you how to set up a plugin-based architecture for your code that lets users easily extend your library where needed whilst also allowing you to keep your libraries scope tightly constrained.
swiftbysundell.com

Code

Implementing a Peel-Off Animation

If you’ve ever played with stickers in iMessages, you might be familiar with the little peel-off animation stickers have when dragging them onto a message. The thing is if you’re looking to implement something like this yourself using CoreAnimation you might start to struggle – the APIs just aren’t there to do this easily. No worries though – Robert Böhnke is here with a clever tutorial showing you how to use SceneKit and SCNGeometryTessellator to create a similar effect.
robb.is

Regexes vs Combinatorial Parsing

@khanlou digs into the world of combinatorial parsers and how to use them as an alternative to more complex (and difficult to understand) Regex patterns. He also provides some useful jumping-off points if you want to investigate combinatorial parsers further.
khanlou.com

On-Device Training with CoreML

One of the big new features in CoreML this year has been the addition of support for on-device model personalisation. Over the past few months, @mhollemans has been putting together a really interesting series of articles (1, 2, 3) covering this new feature and this week he rounds off with a look at how to train a deep neural network and then use transfer learning to customise it on-device.
machinethink.net

Performance Battle: AnyView vs Group

With rumours circulating about potential performance issues when using AnyView in your SwiftUI applications, @nallexn dons his Mythbusters hat to investigate whether there is any substance to these rumours. It’s an interesting read.
github.io

Mac

The Complete Guide to NSOutlineView in macOS Programming

@gabtheodor and the team at @AppCodaMobile have been doing a good job over the last few months publishing a series of articles related to macOS development. This article continues in this vein, taking a detailed look at how to display hierarchical data in your macOS applications using NSOutlineView.
appcoda.com

Server-Side

Elasticsearch in Vapor: Getting Started

Built on top of Apache Lucene, Elastic search is a popular distributed search and analytics engine used to handle large volumes of structured and unstructured data such as log files and event metrics. This tutorial from @_cweinberger shows you how to integrate these features into your own Vapor-based Recipe Finder web API that supports simple CRUD operations and integrated search capabilities. I enjoyed this one.
raywenderlich.com

]]>
Issue 209 – December 3rd 2019 https://andybargh.com/swiftdevelopments-209/ Tue, 03 Dec 2019 12:00:57 +0000 https://andybargh.com/?p=8116 Swift Developments Newsletter

Swift Developments is a hand-curated newsletter containing a weekly selection of the best links, videos, tools and tutorials for people interested in designing and developing their own apps using Swift.


Business

The Birth of Legacy Software – How Change Aversion Feeds On Itself

It’s not one big decision that creates legacy software but hundreds of small ones that accumulate over time. @rajivprab looks at how legacy codebases are created and just what it takes to break out of the legacy code cycle.
rajivprab.com

Slopes Diaries #33: Hi There, Do You Have a Moment to Talk about the One True App

@parrots discusses some of the steps he’s been taking to engage his users outside of the App Store and how, with some planning and thinking about the larger user experience, he has been able to use lifecycle emails to keep his users engaged over time.
curtisherbert.com

Sponsored Link

Continuous Learning for Your Development Teams

It’s the ultimate tool to achieve more, together. Keep your devs up-to-date with the newest APIs and best practices in mobile development with a Team Subscription from raywenderlich.com. With over 3,000 tutorial videos, a single point of billing, simplified license management and team progress dashboards, you can help your teams stay sharp through 2020 and beyond.
raywenderlich.com

Code

A Smart Feature Flagging System for iOS

An interesting article from @albertodebo which provides insight into how he and his colleagues at @justeat_tech use their open-source framework JustTweak to incorporate feature flags and how these enable them to rapidly experiment and iteration on their app design whilst still staying in control.
just-eat.com

Recreating iMessage Confetti

Polish your Core Animation skills with this in-depth tutorial from @brycepauken that dives into some of the less documented features of CAEmitterLayers to re-create iMessage’s confetti animation.
bryce.co

Catalyst Tutorial: Running iPad Apps on macOS

With the introduction of Catalyst this year, the gap between iOS and macOS is smaller than ever. In this tutorial, @troutdev gets you up to speed with building iPad apps that can run natively on macOS.
raywenderlich.com

Adding Haptic Feedback to Your App with CoreHaptics

Add a new dimension to your app experience with this step-by-step tutorial from @DonnyWals that shows you how to incorporate haptic feedback into your app using Apple’s CoreHaptics framework.
donnywals.com

Getting Started with RealityKit: Collaborative Augmented Reality

@MaxxFrazer continues his tour of Apple’s RealityKit framework with a look at just what it takes to build a collaborative AR experience using RealityKit and Apple’s Multipeer Connectivity frameworks.
medium.com

Build a CoreML Recommender Engine for iOS Using Create ML

If you’re developing a content-driven app and looking to personalise that content based on users preferences then take a look at this tutorial from @chughanupam which shows you how to use CreateML to build your very own recommendation system.
fritz.ai

Testing

Building a Custom XCTAssert for Multiline Strings

Nice tip from @VojtaStavik on how to reduce the boilerplate code in your tests and thus make your tests more readable, and expressive by building a custom test assertion for multi-line strings.
vojtastavik.com

Videos

Mobile Era 2019

If you’re looking to expand your horizons a little, this week, we’ve got this collection of talks from the Mobile Era 2019 that was held in Oslo at the start of November. It’s an interesting selection covering not only iOS topics but also Android, Flutter and the wider mobile development community in general.
youtube.com

]]>
Issue 208 – November 26th 2019 https://andybargh.com/swiftdevelopments-208/ Tue, 26 Nov 2019 12:00:12 +0000 https://andybargh.com/?p=8114 Swift Developments Newsletter

Swift Developments is a hand-curated newsletter containing a weekly selection of the best links, videos, tools and tutorials for people interested in designing and developing their own apps using Swift.


News

Apple Special Event – December 2nd

One of the surprises this week has been the announcement of an Apple Special Event to highlight some of Apple’s favourite apps and games of 2019. Scheduled for December 2nd in NYC, this will be the first time Apple has held an event dedicated to apps and games which might mean a new direction for events like the Apple Design Awards which are traditionally held at WWDC every year. Either way it’s going to be interesting to tune in and as ever it’s always good to see Apple celebrating the App Stores best and brightest.
9to5mac.com

Design

What a Designer Needs to Know About iOS Dark Mode When Working With a Developer

Communication is an important part of creating a high-performing development team but due to their different backgrounds and different skill sets, there can sometimes be communication gaps between designers and developers. This article from @Lee_Kah_Seng helps to close that gap, providing a useful guide to iOS 13’s Dark Mode for both designer and developer alike.
medium.com

Sponsored Link

$99/year Video Subscriptions and more at raywenderlich.com

Level up your iOS development skills with massive Black Friday savings! From November 25th to December 2nd, you can grab a full year’s subscription to 3,000+ video tutorials at raywenderlich.com for just $99/year — that’s a saving of over $140! And with book bundles starting at just $99.97, the best investment you can make in your development career is waiting for you at raywenderlich.com.
raywenderlich.com

Code

Debugging with Swift Combine Framework

Due to its functional reactive nature, debugging techniques such as setting breakpoints and examining stack traces often don’t help when debugging your Combine code. Instead, @V8tr explores some different debugging approaches like marble diagrams, generating breakpoints via code and the good old printing to the console.
vadimbulavin.com

Simple Semantic Image Segmentation in an iOS Application – DeepLabV3 Implementation

Interesting article from @omarmhaimdat introducing the concept of Image Segmentation – a vision processing technique for partitioning images into regions in order to extract the different objects within the image. I learnt quite a bit from this one.
fritz.ai

SwiftUI

How to Create Fun Animations in SwiftUI

One of the great things about SwiftUI is how easy it makes creating custom animations for your UIs. This article from @fermoya is a perfect example, showing you how to create and animate a stack of bank cards.
medium.com

Safely Updating the View State

Great article from @SwiftUILab covering some of the subtleties of trying to update your SwiftUI view state from within its body. Worth reading if you’re getting up to speed with SwiftUI.
swiftui-lab.com

Tools

Intercepting Network Traffic with mitmproxy

When building iOS apps, it’s not uncommon to make requests to a back-end JSON-based web services. A useful technique for diagnosing issues with these calls is to use proxy to intercept your network traffic in order to study what is *actually* being sent and received over the air. @AndyIbanezK explores one approach to this using mitmproxy a free and open-source command-line utility to intercept the network traffic that enters and leaves your device.
andyibanez.com

Xcode 11 Git Stashing

Like @kharrison I’ve never really been a big user of Xcode’s version control features preferring instead to use either the command line or an external client like Tower. Having read this article – it might be time to take another look at Xcode.
useyourloaf.com

Thread Sanitizer Explained: Data Races in Swift

Flaky tests? Weird crashes? Make sure you check out this article from @twannl that dives into Xcode’s Thread Sanitizer – a powerful Xcode feature for auditing potential threading issues within your Swift and C code.
avanderlee.com

Videos

DIY App Store Videos

So you’ve put the final touches to your app and need to get your app up in the store. But what about those pesky App Store promo videos that you need to create? Mike Monaghanh has some useful tips on how to plan them, create them and get the most from your time investment.
youtu.be

Using and Creating Property Wrappers

In this Swift Language User Group talk, @timroesner takes a look at Swift 5.1’s support for property wrappers discussing what they are, where you should use them and how to create wrappers of your own.
youtu.be

]]>
Issue 207 – November 19th 2019 https://andybargh.com/swiftdevelopments-207/ Tue, 19 Nov 2019 12:00:30 +0000 https://andybargh.com/?p=8112 Swift Developments Newsletter

Swift Developments is a hand-curated newsletter containing a weekly selection of the best links, videos, tools and tutorials for people interested in designing and developing their own apps using Swift.


So it’s here! The much rumoured and heavily anticipated 16 inch MacBook Pro has finally arrived! I’m great to hear that Apple has taken, let’s politely call it, a ‘new direction’ with the keyboard and in doing so have hopefully fixed many if the issues that have plagued recent models. With better cooling, more RAM and the option for a frankly ridiculous amount of hard drive space (8TB! Seriously!), a new purchase may well be in my future! Until then let’s take a look at some of the best and most interesting links from around the community this week. Enjoy.

Code

How Swift Achieved Dynamic Linking Where Rust Couldn’t

We’ve heard so much about ABI stability over the last few years and with it finally shipping in Swift 5 you might be wondering what all the fuss was about. This article from @gankra_ goes a long way to explaining and does a good job illustrating the elegance of the solution chosen for Swift. It’s a good read if you’re interested in what is going on under the hood.
github.io

Secret Management on iOS

Another interesting article from @mattt – this time on how to store secrets such as API keys and access tokens on a users device in a secure manner. His conclusion might not be what you expect.
nshipster.com

CoreML and Combine

Really interesting article from @mhollemans looking at how to integrate CoreML into the Combine framework by using CoreML as an operator within a larger reactive event processing chain.
machinethink.net

Sound Classification on iOS Using Core ML 3 and Create ML

CreateML has come a long way over the last couple of years. One of the new features added at WWDC this year was support for on-device sound classification and with Create ML’s new standalone app, adding these features to your own app has never been easier. @chughanupam shows you how.
heartbeat.fritz.ai

SwiftUI Tutorial: Navigation

Once you’ve got the basics of SwiftUI nailed and have wrapped your head around bindings, the natural progression is to look at how to perform basic navigation between two SwiftUI views. If you’re just getting started, @mataharimau has you covered with this step-by-step tutorial showing you how to implement the navigation of a master-detail app.
raywenderlich.com

Tools

SwiftPM Catalog

Although I think the Swift Package Manager is a great step forward for the community, one of the problems it has is how to discover third-party packages. SwiftPM Catalog from @helje5 makes this easier, providing a useful macOS front-end to browse and search @daveverwer‘s SwiftPM Library direct from your desktop. Useful little tool.
zeezide.com

Conferences

The Best Swift and iOS Conferences in 2020

As we near the end of the year your mind might be turning toward planning for next year and which conferences you might look to attend. A great place to start is this list from @twostraws which provides dates, links and a useful description of each event to let you get a feeling for the conference if you haven’t attended before.
hackingwithswift.com

Videos

#Pragma Conference 2019

For your viewing pleasure this week, the team at #Pragma Conference have been gradually releasing a whole bunch of videos from this years event – over 19 when I last checked. Honestly, I haven’t managed to make my way through all of them just yet, but the ones I have watched were really good.
youtube.com

MobileOptimized 2019

Our second batch of videos this week come from MobileOptimized 2019 that took place on October 19th. The videos are a bit more of a mix then those from #Pragma Conf in that they reflect the two-track iOS/Android nature of the event but don’t let that put you off – all the talks I’ve watched so far (on both iOS and Android) have been great.
youtube.com

Finally

Any lengths…

Whichever way you look at it, this took some serious dedication and honestly hair-brained adventures like this just make me smile.
imore.com

]]>
Issue 206 – November 12th 2019 https://andybargh.com/swiftdevelopments-206/ Tue, 12 Nov 2019 12:00:46 +0000 https://andybargh.com/?p=8110 Swift Developments Newsletter

Swift Developments is a hand-curated newsletter containing a weekly selection of the best links, videos, tools and tutorials for people interested in designing and developing their own apps using Swift.


And we’re back! Welcome to Swift Developments Issue 206! This week we’ve gone for variety, with a wide selection of articles including a new Swift.org project for numeric computing, some useful new tools to help your coding workflow, a useful article on how to decide when to adopt all these new technologies we’re seeing and a whole lot more. Enjoy.

News

SSWG Annual Update

The Swift Server Working Group (SSWG) was set up a year ago to help define and prioritize the efforts surrounding Swift on the Server. This week, @tanner0101 has posted, on behalf of the group, an update on the groups progress in terms of process, libraries and tooling along with an outline of the focus areas for 2020.
swift.org

Swift Numerics

Another exciting announcement this week has come from @stephentyrone with the arrival of a brand new Swift Numerics project that will provide the basic building blocks for numerical computing in Swift including support for a bunch of mathematical functions for both real and complex numbers. Click on the link to find out more.
swift.org

Business

Deciding Whether To Adopt New Swift Technologies

With technologies, frameworks, tools and languages continuing to be released at an ever-increasing pace how do you choose when to adopt new technologies and when to wait? @swiftbysundell provides some tips.
swiftbysundell.com

Are App Subscriptions Fair for Users and Developers?

Interesting editorial from @bradleychambers looking at app subscriptions and the issues they raise for developers and users alike. Beyond clearly articulating why many developers are moving to a subscription-based business model what I found most interesting were the comments below the article. I think it’s fair to say, app subscriptions, and especially the transition to a subscription-based model is still a divisive topic and needs to be handled with care.
9to5mac.com

Code

Message-ID and Mail.app Deep Linking on iOS and macOS

Whilst recent changes in frameworks like iCloud Keychain, Shared Web Credentials, Password Autofill, Universal Links and Sign in with Apple have gone a long way to minimizing the friction of account creation and authentication, there are still a few cases that aren’t entirely covered by these new features. In this article, @mattt attempts to address one such case – how to do seamless “passwordless” authentication via email on iOS.
nshipster.com

Navigation Bar Customisation

In this two-part series (Part 1, Part 2), @dmtopolog takes a look at some of the different options we have for customising the navigation bar in UIKit and digs into some of the detail of a new option available to us in iOS 13 – UINavigationBarAppearance.
dmtopolog.com

Tools

Swiftly

Whilst the official Swift book is a great resource for getting up to speed with the Swift language it can be a little dense and there are times when you just want a quick reference for that language feature that is just escaping your memory. With that in mind, check out this new project from @EugeneBelinski which might be just the Swift quick reference your looking for. Whilst you’re there make sure you also check out Eugene’s companion project iOS Ref which can also be a useful reference to have on hand.
ebelinski.com

gon

Beginning with Catalina (10.15) Apple now requires that all software distributed outside of the Mac App Store to be signed and notarized. gon is a simple, no-frills, CLI from
@mitchellh to help automate that process supporting code signing, packaging, notarization and more. An ideal addition to your automation pipeline.
github.com

Mac

macOS Programming: Using Menus and the Toolbar

Menus and toolbars are a fundamental part of almost every Mac app that has ever been written. Learn the basics of how to build your own with this step-by-step tutorial from @gabtheodor.
appcoda.com

Server-Side

Creating an API Helper Library for SwiftNIO

In this tutorial from @LotUDev, you’ll learn how to greatly simplify your networking code by using SwiftNIO’s Futures and Promises to build an API helper library to abstract away the details of your networking API into a set of simple Swift functions.
raywenderlich.com

]]>
Issue 205 – October 29th 2019 https://andybargh.com/swiftdevelopments-205/ Tue, 29 Oct 2019 12:00:41 +0000 https://andybargh.com/?p=8108 Swift Developments Newsletter

Swift Developments is a hand-curated newsletter containing a weekly selection of the best links, videos, tools and tutorials for people interested in designing and developing their own apps using Swift.


Hi and welcome to Swift Developments Issue 205! Another jam-packed issue again this week with a bit of a slant toward SwiftUI (there were just so many great articles this week that I struggled to choose!) along with a whole bunch of videos to add to your playlist. Before we get to the links just a quick note that due to some family stuff there won’t be an issue next week and instead I’ll be back in your inbox with Issue 206 on November 12th. Until then enjoy the links.

Design

How to Design a Delightful Dark Theme

If you’re looking for some advice on how to design a dark theme for your next app then look no further than this article from @Superhuman. It’s got some great tips that are worth keeping in mind.
heydesigner.com

Code

A Complete Guide to In-App Purchases for iOS Development

In-app purchases are a great way to monetise your app but implementing in-app purchase can be a little tricky. This week, @gabtheodor has written an in-depth article to help you get started. It doesn’t cover *every* in-app purchase scenario, choosing to focus on how to implement consumable and non-consumable products but does walk you through things step-by-step so it’s a great place to start to understand some of the basics.
appcoda.com

MetricsKit

Xcode 11 and iOS 13 make it easier than ever to understand how your app is working in the field. In this article, @mattt takes a look at MetricsKit, a new framework in iOS 13, that makes it super-easy to collect and process battery and performance metrics for your app.
nshipster.com

Implementing Multiple Window Support on iPadOS

One of the big new features that arrived along with iPadOS is support for multiple windows – letting you open multiple instances of an application at the same time. This article from @chughanupam gives a good introduction to the new APIs and will also give you a much better understanding of how these changes affect the overall app lifecycle.
medium.com

Swift

Swift’s Sequence Inside The Compiler: How for loops Work Internally

@rockthebruno takes another look behind the scenes, this time digging into Swift’s Sequence and Iterator protocols and how the Swift compiler uses them to build for-loops work.
swiftrocks.com

Better Codable Through Property Wrappers

@marksands with a really interesting article on how he’s been removing some of the boilerplate from his JSON parsing code by using property wrappers to do a lot of the heavy lifting.
github.io

SwiftUI

SwiftUI Layout System

An in-depth and informative article from @a_grebenyuk that digs into the new layout system in SwiftUI and some of the features it has to offer. One to read if you’re coming up the SwiftUI learning curve.
github.io

SwiftUI Data Flow

Another key aspect to get your head around when learning SwiftUI is how SwiftUI interacts with the data that drives its state. This week, @trozware has written a detailed article on the topic that takes a detailed look at the five main ways to specify data in SwiftUI and how each option works.
troz.net

SwiftUI is Still the Future

There’s no doubting that SwiftUI is the hot new thing right now but is it quite ready for prime time? @brentsimmons lists some of the issues he’s encountered and I think sums up the current situation very well:

“We very much want to use SwiftUI, and we believe it’s the future of Mac and iOS development — but the emphasis should be on future because it’s not quite ready in the present.”

inessential.com

Security

iOS Security Tutorial

If you’re new to security on iOS then take a look at this two-part series (Part 1, Part 2) from fderias which introduces you to some of the basics including the Swift security APIs, symmetric vs asymmetric encryption, the iOS secure enclave and more.
medium.com

Videos

try! Swift NYC 2019

As I mentioned in the intro, I’ve got a whole load of videos for you this week. First, we kick off with this list of talks from try! Swift NYC 2019. As you might expect, the talks don’t disappoint with talks on a wide range of topics including SwiftUI, Combine, Natural Language Processing and more. If you’re pushed for time (and I had to call out one talk which in and of itself is pretty difficult) I’d recommend watching @davedelong‘s talk on how to design accessible APIs – after all – we’re all API designers at one level or other.
youtube.com

FrenchKit 2019

If try! Swift videos weren’t enough, make sure that you also take some time to have a look at some of the videos from FrenchKit 2019. Again – there are some great talks to choose from including @chriseidhof talking about animations in SwiftUI, @cocoaphony talking Swift Generics, @dimsumthinking on *combining* 😜 SwiftUI and Combine and a whole lot more. So many choices!
youtube.com

]]>
Issue 204 – October 22nd 2019 https://andybargh.com/swiftdevelopments-204/ Tue, 22 Oct 2019 11:00:39 +0000 https://andybargh.com/?p=8102 Swift Developments Newsletter

Swift Developments is a hand-curated newsletter containing a weekly selection of the best links, videos, tools and tutorials for people interested in designing and developing their own apps using Swift.


News

iOS 13 is already installed on more than 50% of all iPhones

A little more than a month after the official release of iOS 13 @joewituschek has posted an article covering the adoption of iOS 13 across Apple devices. Based on Apple numbers, it’s looking like almost 50% of devices are now running the latest version of the OS with this number being a little higher on devices released in the last few years. For me, the interesting thing is the percentage of devices running versions before iOS 12 which is hovering somewhere less than 10% (at least on iPhones). If adoption continues at this rate, it might be time to seriously consider dropping support for versions prior to iOS 12.
imore.com

Business

How the App Store Ended a Golden Era of Software

@meganmorrone looks back at her time reviewing apps in the early 2000s and in this nostalgic trip down memory lane wonders whether the app store really has been a good thing for software development and indies.
medium.com

Launching ClusterCards 2: Week 1

Fresh from his recent launch of ClusterCards 2 @_julianschiavo shares some of the stats from his launch.
schiavo.me

Yes, You Should Estimate Software Projects

Estimating software projects is undoubtedly hard and with many people in the industry suggesting that we abandon software estimates all together GergelyOrosz remains sceptical and in this article illustrates many of the benefits that software estimates continue to bring.
pragmaticengineer.com

Swift

New Diagnostic Architecture Overview

If you’ve spent any time playing with Swift (and especially SwiftUI) you’ll probably be aware of the sometimes cryptic error messages that the compiler can generate. The good news is that one of the focuses of Swift 5.2 is going to be on improving these compiler diagnostics. @pyaskevich has a new post on the Swift.org blog this week covering some of the architecture for the upcoming changes.
swift.org

Swift Error Handling Strategies: Result, Throw, Assert, Precondition and FatalError

Swift has a whole host of features for propagating and handling errors. This article from @V8tr covers pretty much all of them, and importantly, helps you to understand which approach you should use when.
vadimbulavin.com

Code

Building a Face Detecting Robot with URLSessionWebSocketTask, CoreML, SwiftUI and an Arduino

Fun project from @rockthebruno explores both the new Socket APIs and SwiftUI on iOS 13 by building a face-detecting sentry bot using CoreML and Apple’s Vision Framework. I might be wrong but isn’t this how terminator started? 😉
swiftrocks.com

Time-Limited In-App Purchase

With holiday season approaching for many, @sasmitoadibowo has been exploring some potential options for creating time-limited in-app purchases.
cutecoder.org

Tools

Apple Transporter App

Uploading apps to the store has always been a bit of a pain. This week things got a little easier with the release of a new Transporter app for macOS supporting uploads of both .ipa and .pkg files, delivery progress, validation warning and errors and a whole lot more.
apple.com

Essential Xcode Shortcuts for More Efficient Coding

If you’re anything like me you’ll spend an inordinate amount of time inside Xcode. Learn how to improve the efficiency of your development work with this article from @peterfriese covering a whole bunch of keyboard shortcuts to help you get things done quicker.
medium.com

Videos

How to Build a UICollectionView Like the App Store

@twostraws with a step-by-step tutorial on how to use iOS 13’s powerful new UICollectionViewDiffableDataSource and UICollectionViewCompositionalLayout classes. I’d also recommend grabbing a copy of the accompanying source code so you can follow along.
youtu.be

Context Menus: From Basics to Polish

@kylebshr delivers a live-action version of his comprehensive guide to iOS context menus covering the basics of adding a menu and a preview before showing off more advanced APIs to further improve the user experience.
youtu.be

]]>
Issue 203 – October 15th 2019 https://andybargh.com/swiftdevelopments-203/ Tue, 15 Oct 2019 11:00:35 +0000 https://andybargh.com/?p=8106 Swift Developments Newsletter

Swift Developments is a hand-curated newsletter containing a weekly selection of the best links, videos, tools and tutorials for people interested in designing and developing their own apps using Swift.


Business

Apple’s New Subscription Management Prompt Seems To Be Working

Over the last few years, we’ve repeatedly seen instances of shady apps peddling expensive subscriptions. Whilst Apple has been working to rein these in, iOS 13 represents a big step forward in this campaign with the inclusion of functionality that prompts users about whether they want to keep their subscription when they delete a subscription-based app. @drbarnard has been looking at what impact these changes are having.
revenuecat.com

Pros and Cons of the Mac App Store

@ctietze with an interesting look at some of the pros and cons of distributing software via the Mac App Store. As you might imagine, there are arguments for both options so make sure you read this one all the way through if you’re pondering your strategy.
christiantietze.de

Swift

Advanced iOS Memory Management with Swift: ARC, Strong, Weak and Unowned Explained

If there is one thing that regularly catches developers out with Swift it’s memory management and the differences between strong, weak and unknowned. @V8tr walks you through the differences.
vadimbulavin.com

SwiftNIO: Understanding Futures and Promises

If you’ve not come across it before, SwiftNIO is Apple non-blocking networking library that has been adopted by popular server-side Swift frameworks like Vapor and Kitura. This article @mickael gets the heart of the library, with an in-depth look at the concept of futures and promises and how they simplify the task of writing asynchronous, event-driven, code.
process-one.net

Code

SwiftUI Tutorial for Slider Control

SwiftUI lets you create some pretty advanced effects with relatively little code. In this tutorial, Martin Goldin shows you how to create a liquid swipe animation for switching between pages.
exyte.com

Common Cryptographic Operations

If last weeks link about Apple’s new CryptoKit framework piqued your interest, this week @AndyIbanezK has published a slightly more in-depth article showing you how to perform some common cryptographic operations such as hashing, key generation, symmetric and asymmetric encryption, signing and more.
andyibanez.com

Catalytic Converter

Beyond the obvious play on words in this article’s title (yes – I wish I’d thought of that one 😉), this is a really interesting article from @jamesthomson looking at just what it takes to truly convert an iOS app to macOS using Catalyst.
tla.systems

Dynamic Type in SwiftUI

Dynamic type is an almost essential feature in any modern iOS app. SwiftUI is a great help on this front with built-in support for dynamic type out of the box. Although this is a great start, some work is still required. @mecid shows you how.
github.io

Resources

SF Symbols: The Benefits and How To Use Them Guide

Introduced at WWDC 2019, Apple’s SFSymbols is a great new providing over 1500 free symbols to us to use within our apps. @twannl dives into the detail, showing you how to access symbols within your code, how to create your own custom symbols as well as some of the licensing implications of using SFSymbols in your projects.
avanderlee.com

Getting Started

Create Your First AR app with RealityKit and SwiftUI

With AR glasses rumoured in Apple’s future, now could be a great time to get up to speed with developing AR-based applications. A good place to get started is this article from Rob Sturgeon which walks you through building your first AR app using RealityKit and SwiftUI.
medium.com

]]>