S Link
New Video Course: Reactive Programming in iOS with RxSwift
Writing asynchronous and concurrent code is tough. Reactive extensions for Swift and Cocoa Touch (RxSwift and RxCocoa) make it much easier—fun even! Get up to speed on RxSwift, RxCocoa, and additional Rx libraries with the new video course, Reactive Programming in iOS with RxSwift. You'll learn how to effectively use reactive extensions in your iOS app projects. You’ll also get lifetime access to the course and free updates. Save $15 with the coupon code THISWEEKINSWIFT.
The Swift Algorithms Book (Now Shipping Internationally!)
Written for students and professionals, the 2nd edition of Swift Algorithms & Data Structures blends modern code, illustrations, and computer science to help you pass the interview or build your next app. Revised and updated for Swift 3.0, we've recently expanded our shipping options to include more than 70 countries. Use coupon code THEROBOT at checkout to receive a 20% discount!
Swift Around the Web
Playground: Whatʼs new in Swift 4
"The cool thing is that you can run the playground right now in Xcode 8.3; you donʼt have to wait for the first official Swift 4.0 beta, which will probably come as part of Xcode 9 at WWDC. All you need to do is install the latest Swift snapshot from swift.org. (donʼt worry, itʼs easy)."
Swift one-line type-checking lasting 27s
Good quick tip on how to debug when the Swift type-checking it taking wayyyyyyyy too long 🤡
Coding
Loose coupling using default implementations in protocol extensions
Amazing demonstration of how to use protocols with default implementation to clean out and decouple the AppDelegate from 3rd party libraries:
"There is a difference between an app that is built on Firebase and an app that uses Firebase. And that's the same difference between a tightly coupled and loosely coupled app."
Real-time object detection with YOLO
Amazingly simple explanation of how object-detection works and how you can use it in your iOS app with Forge, a neural network toolkit for Metal:
"YOLO divides up the image into a grid of 13 by 13 cells. Each of these cells is responsible for predicting 5 bounding boxes. A bounding box describes the rectangle that encloses an object. YOLO also outputs a confidence score that tells us how certain it is that the predicted bounding box actually encloses some object."
Design
Shopping Made Personal - How We Translated IKEA's Offline Experience Into the Concept of a Seamless Online App
I don't think this goes far enough... but it's definitely a better e-commerce experience than just scrolling through a bunch of pictures...
"Products are shown on photos, but they don’t inspire an emotional response in you, because they don’t visually belong to a complete interior like they do in the brick-and-mortar store. There’s no theater, no make-believe and no imagination, just a flat screen. The magical, theatre-like experience is gone, and what’s left is mundane scrolling through endless index pages. "
This totally applies to iPad / iPhone e-commerce apps. How can we use the power of iOS to build those experiences? For example, my friend uses the L'Oreal Makeup Genius App to put lipstick / makeup on herself in pictures. She did it to a picture of me and my mom thought I wore lipstick! This app is as good as walking into a makeup store and putting on lipstick. We need to level up and create more of these experiences!
Other Cool Stuff
I just laid the audio from the Blade Runner 2049 trailer to the new Google Assistant ad. I'm scared.
I've been watching some more Black Mirror recently - this is terrifying 😱😱😱
Videos
The Two Sides of Writing Testable Code
An incredible talk by @mbrandonw on effects and co-effects and how to extract them to write beautiful code:
"To obtain effects, you think of them as data in their own right, and you just describe the effect and don’t perform it. And then a naive interpreter can perform the effect somewhere else.
To obtain coeffects, put them in a big struct, and don’t ever access a global unless you go through that struct."
Document Indexing and App Search in iOS
App Search is a free way to remind the user of your app and even make money (as in the case of Zalando here), but very few apps actually use it... It definitely has some big implementation gotchas - learn what they are and make it happen!
Swift Code
- SwiftKotlin - A tool to convert Swift code to Kotlin. (Note: this is just for fun, do not use in production)
- AR-Pizza-Slicer - Let Augmented Reality help you to create a perfect sliced pizza in 5 different shapes!
- photo-editor - Photo editor with a lot of cool features
- MacAssistant - Google Assistant for macOS!
- DeckTransition - A library to recreate the iOS 10 Apple Music now playing transition
Business
The 10 biggest announcements from Google I/O 2017
From talking to a friend who attended, she was most excited about tools like Cloud TPU and TensorFlow that make Machine Learning as easy to implement as legos... The most exciting application of which is connecting to a wireless network just by pointing your camera to the back of a wireless router 😲
Swift Thoughts
Whoa! Kotlin is now the first-class language for Android! While it would be better if Swift was officially supported, Kotlin is similar to Swift. In fact, make sure to check out this talk from Kickstarter's @mbrandonw and @luoser on how they use similar ideas across Swift & Kotlin to work together across iOS & Android!
This is good news for Swift devs who are interested in Android but are put off by Java 🙋🏻 and for those who want to work closer with the Android team 🙋🏻