Welcome to another week of the newsletter! It’s been a busy week this week with Apple selling it’s billionth iPhone and the shutters coming down on source breaking changes for Swift 3. @clattner_llvm has also posted a retrospective of Swift 3 and some initial targets for Swift 4 that’s worth reading if your interested in the future of Swift. In the mean time, there have been a bunch of great posts this week so let’s dive in.
When it comes to user interface design, sketching and wire-framing are extremely useful techniques for quickly iterating on different user interface ideas. In this two-part series (Part 1, Part 2), @markdodgson looks at why sketching and wireframing are so important and why you should consider incorporating them into your own app-design workflow.
In this article, @realjoet provides some great tips to consider when designing mobile apps. These include thoughts on navigation, ergonomics and content design and most importantly consideration of what you users are trying to achieve.
This article was particularly pertinent for me this week as my colleagues and I are about to embark on a major enhancement and refactoring exercise. Rather than focusing on particular refactoring techniques, @developerscode talks about the more psychological aspects of refactoring and the challenges it brings. It’s a perspective I’d not really considered up until now.
So as I mentioned in the introduction, Swift 3 is nearly here and that leaves many of us with the prospects of migrating existing code bases to Swift 3’s new syntax. In this article, @jesse_squires provides some great tips for doing just that, including branching strategies and some more detailed gotcha’s. The article also includes a cameo appearance from @chriseidhof though you have to wonder why there aren’t any post-migration pictures… ?
My focus on the article front this week has been Swift’s defer statement. The defer statement is a useful supplement to Swift’s in-built error handling mechanisms and provides nice way to guarantee resource cleanup, even in the case of errors. As ever, let me know what you think.
This years WWDC brought a number of changes to the Foundation Framework including the addition of a new types for modelling units of measurement. In this 3-part mini-series (Part 1, Part 2, Part 3) @olebegemann digs into these new capabilities looking at what is provided by default as well as how to extend things by adding units of your own.
We’re in a slightly strange period of transition currently. The beta releases of iOS 10 and Swift 3 are available and you might be keen to get going but if your app is already in the app store it would fail validation if you simply compiled it for iOS 10. It doesn’t necessarily mean you have to wait though. In this article, @radexp gives us the best of both worlds by showing us how to support both Xcode 7 and Xcode 8 without the need to juggle a bunch of different version control branches.
Another new feature that was introduced at WWDC was Xcode’s Visual Memory Debugger. Identifying memory issues such as leaks and retain cycles has always been a little challenging but the new memory debugger promises to make things significantly easier. @kharrison takes it for a spin.
Danger is a new tool from @orta and @KrauseFx that hooks into your continuous integration system and can be used to automate many of your code review chores. It does this via a set of rules that you write (in Ruby) to encode your projects review conventions. Danger then uses these rules to leave messages within your pull requests to indicate the level of compliance. As more of the rules are met, the message within the pull request are amended reflect the current state of the code review. Worth looking at, especially if you or your team have the occasional attack of amnesia.
SQLite is a self-contained, zero configuration, transactional database solution that is commonly used as backing store for Core Data solutions. However, if you’re not looking for all the bells and whistles that Core Data brings you also have the option of using SQLite directly. To make this latter usage a little easier, @groue has written GRDB.swift a low-level SQLite API for accessing SQLite databases in Swift. As an added bonus, he’s also written a nice introductory article to help you get started.
Working with collections and sequences is a key part of working in Swift and in this talk, @bkase_ takes a look at their more performance oriented aspects by looking at how and when you should use lazy sequences and collections within your code.
In this talk from AltConf 2016, @scotteg provides a great introduction to reactive programming and the benefits it can bring. The talk not only looks at how to get started with Reactive Swift (using RxSwift) but also provides additional resources to help you climb the reactive learning curve. A great introduction.