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! Welcome to another issue of the AndyBargh.com Swift and iOS Development Newsletter! Thanks again for joining me. This week I’m going to keep this introduction short as it’s been a pretty big week in the iOS development community and I’ve got load of links for you and some major news that will affect many developers. Let’s dive in.
Moving On – Parse Closes It’s Doors
So the big news this week has obviously been the announcement by Parse’s co-founder Kevin Lacker (@lacker) that Parse, a service that supplies the server-side functionality for many apps on the App Store, will be closing as of January 28, 2017. This is obviously extremely bad news for the multitude of app developers who have built their back-end app functionality around this service and leaves many of them with a lot of uncertainty about their options going forward. So far from what I can see there are a couple.
Firstly, the team at Parse have made the source code for the Parse Server available as an open source project. This will allow developers to setup their own Node.js applications running the Parse Server code, hosted on their own infrastructure. Migration tools and instructions are available as well as an example project.
The alternative is to look for another solution similar to Parse. With this in mind, @relatedcode has set up a new git repo where the community is collating information about Parse alternatives.
Which ever way you choose, the one thing this situation does highlight is the issue of building a significant proportion of an apps functionality on services you don’t own. I’ve seen various people on twitter tweeting to this effect but the reality is that I can see both sides of the story. On the one-hand, using BaaS services like Parse allow developers to focus on developing their app rather than server-side infrastructure. This allows them to get their apps into the store quicker and with less effort than they would have otherwise, especially if they don’t have many server-side skills. But as we have seen this week, with this convenience comes risk. Not owning the entire app infrastructure can leave many developers exposed. Either way, it’s a difficult decision but one that in this situation, seems to have come back to bite the unwary.
On a slightly lighter note, this week also saw a new round of beta releases from Apple including Xcode, iOS, tvOS, watchOS and OS X El Capitan. The changes are actually pretty extensive including Swift 2.2 and Xcode 7.3 beta 2 which sees the return of interactive playgrounds. In this article, @ericasadun gives us a thorough rundown of a lot of what was included.
So who says it’s only politicians that do about turns? Despite me referencing it in a recent article, this week has seen the Swift Team announce a significant about-face on large portions of SE-0003 which proposed the elimination of the `var` keyword from function parameters and pattern matching for Swift 3.0. After further review, it appears that this will no longer be the case. Instead, var will only be removed from parameter lists but will be kept in pattern matching contexts. Unusually, I’m going to include two articles from the same person as @ericasadun has a good rundown on all the details.
You’re app has been noticed by a major brand and they want to talk about working together but there are caveats. What would you do? Well this is exactly what happened to @parrots and his app Slopes and in this article he details the events that led up to this encounter as well as his decision making process throughout. It’s an interesting read.
Which ever way you look at it, AutoLayout can be a tricky beast to tame. In this article, @kharrison looks at how to position views proportionally through center alignments and multipliers.
So I’ve been busy tapping away at the keyboard again this week with a monster post covering everything you ever wanted to know about Loops in Swift. In my humble opinion it’s definitely worth a read, but I’d be extremely interested in your opinions. Either reply to this email or leave me a comment on the site.
As you probably know, the Swift open source juggernaut is trundling on but since the introduction of Swift there has been a bit of a schism between the new syntax and idioms of Swift and the older style used in the Cocoa libraries. In this article, @DaveAbrahams outlines the next steps toward rationalising these two worlds. If you feel strongly about where you think the Swift language should be heading, now is the time to have your say.
If you’ve never read @mikeash Friday blog posts there definitely worth a read. In this post, he takes a look at NSNotficationCenter and sees if he can improve on the standard implementation by re-imagining notifications and NSNotificationCenter in Swift.
@cocoawithlove hasn’t written post for nearly 4 years, but this month saw the resurrection of his blog CocoaWithLove. In this article, the first of the Swift era, Matt returns to the fold with a look at partial functions in Swift.
A great article from @senderpath that pulls together some of the common and in some cases difficult to detect mistakes and trickier aspects of Swift with pointers about how to avoid their pitfalls. A useful read whether you’re just starting out with Swift or are a seasoned expert.
I’m always on the lookout for new tools to improve my workflow and make things more efficient. This week I came across this article from @savvyapps which lists their top-10 recommendations for app design tools. Many I’d come across (or even own) but there were one or two others in the list that are worth looking at.
The performance of your app can often be one of the key drivers for in the success or failure of your application but squeezing the last ounce of performance out of your code base can be a tricky exercise and finding where the bottlenecks are isn’t necessarily straight forward. In this article, @mandrigin uses Instruments and brings together some tips, tricks and other resources that can be used to analyse CPU, GPU, memory and power usage in order to reduce an apps startup time and increase it’s responsiveness.
In this article, @_bartjacobs walks us through how to use Tailor a cross-platform Static Analyser and Linter for Swift that helps analyse your code and identifies bugs before your users get to see them.
Making use of third-party libraries and frameworks in your own applications can significantly reduce the time it takes to develop your applications. In this article, @pawel_bialecki gives us a rundown of some of the most popular libraries available.
There are a couple of these types of repository around at the moment but this week I came across this one. The Swift Algorithms club is a collection of implementations for common algorithms and data structures, all written in Swift. Initially started by @mhollemans, content includes stacks, sueues, searching, sorting and a range of other miscellaneous algorithms.
Getting your user up to speed with how to use your app is critical for user retention and this is where Gecco comes in. Written in Swift, Gecco helps with this onboarding process by highlighting areas of the screen and bringing your users focus to certain key aspects of your application as part of your walkthrough tutorials. A useful little framework to have in your arsenal.
In this video from 2015’s Functional Swift Conference, @alexisgallagher takes a look at protocols and associated types (renamed PAT’s by Alexis) and how they are different but also how we can use them without tearing your hair out.
Layers Conference is a 3-day conference held every year in San Fransisco at around the same time as WWDC. A couple of weeks ago saw the videos from last years conference released and posted up on Vimeo. If you’re interested in UI design, there are some interesting talks, especially the one from @SusanKare who gives a presentation on some of the history of the OS X user interface.
To round things out this week I’m going to leave you with this little equality puzzle from @TheiOSDude. I’ll warn you, it might not be quite as simple as it seems.