Stop testing on Emulators and Simulators - Access Real Devices
Kobiton is a mobile device cloud that lets you test mobile, Web and hybrid apps on real iOS devices. Test your way with manual and automation testing. Automatically generated activity logs help you track your progress. Supports Appium 1.6.4. Sign up for a no commitment, free trial to start testing.
Why is ARKit better than the alternatives?
Matt Miesnieks with a wonderfully in-depth look at the history and technology of AR from the perspective of a 9 year industry veteran. I lost count of how many new things about AR I learned while reading this. If you have even a passing interest in the technology, give it a read.
Swift in Android Apps
There has been talk (and action!) around running Swift on Android since almost the very beginning of the language. I think this was my first link to anything Swift on Android related, back in October 2015. Getting it going has always been something you've really got to want to do though! So how about this Swift on Android toolchain from John Holdsworth? Actually, I think you've still got to really want to do this, but if that's you... knock yourself out! 🥊
Layout: a Declarative UI Framework for iOS
Nick Lockwood on Layout a new declarative UI framework released last week. This is not an Auto Layout library, this is an entirely new layout library (albeit one that interoperates with Auto Layout) based on either XML files with live reloading or very clean looking code. I'm still firmly on the side of Interface Builder myself, but if the (very valid) compromises you need to make are too much for you, this could be your new solution.
CwlLayout: a Swift wrapper around Auto Layout
Let's stick with layout for a second and mention another declarative layout library, this time it's CwlLayout by Matt Gallagher. This is a wrapper around Auto Layout but looks nice and clean if you're in that position of wanting to stick with Auto Layout generally, but are looking for something to do layout with in code.
Now that JSON encoding/decoding is a solved problem let's move the solution up the chain a bit? Disk is a new library from Saoud Rizwan which takes anything that can be stored with Codable, as well as images and other binary data and persists it to the ... disk. 😎 Saving files to the disk is always my preferred method of simple data persistance so this really resonated with me.
Using A Custom Font With Dynamic Type
I had an eye test this week 👀 which included eyedrops that dilated my pupils and blurred my eyesight for the remainder of the afternoon. As I was starting to regain my focus though, I couldn't wait for it to clear completely and bumped up the dynamic type on my phone so I could read again. Obviously, dynamic type is a really important accessibility feature of iOS, but it was only really easy to support if you were only using system fonts. Keith Harrison explains how iOS 11 fixes that problem.
Is this my interface or yours?
John Saito on the fascinating (to me at least) question of what language to use when referring to the user that is interacting with your apps. I think the key here is consistency and I'd bet that there is at least one example of inconsistency on this subject in every app you've worked on. Time for a quick check? 😀
UI Sugar: Spirals
Ben Dietzkis with a lovely investigation of a beautiful little animation.
Business and Marketing
New report suggests app makers should charge more if they want people to buy subscriptions
There has been lots of discussion around in-app subscriptions again this week after Ulysses switched from pay-to-own to a subscription model. In this post, Lauren Goode looks at a Liftoff report which says that charging more actually reduces the cost per acquisition for a subscriber. Subscriptions are not the answer to everything of course, but this article is worth a read if you're considering them.
iOS Engineer @ Robinhood, Palo Alto
Join Robinhood's award-winning iOS team (currently at 2)!
What was it like to be at Xerox PARC when Steve Jobs visited?
Great story by Alan Kay. 📺
Happy Friday everyone!
One thing that I didn't quite notice the significance of when I read Evan's link to the Swift 5 announcement last week was that the evolution process is changing.
Every proposal must now be accompanied by a working implementation, with test cases, before being considered for review. That's quite a big change and I think it speaks to the overwhelming popularity of Swift as an open source project. Requiring an implementation requires significantly more work up front before even getting to the stage where reviewers are being diverted from their other work. Also as I'm sure we all know, starting to implement an idea often unearths design issues you had missed when it was a lovely, clean, fluffy perfect idea. ⛅️
Of course, There's still a place for discussions of new features if you have an idea but no time, desire or ability to implement it so I really have no problem with this as a concept. In fact I think it's a great change as the language matures.Dave Verwer