S Link
Learn something new in the time it takes you to drink your morning coffee
NSScreencast offers weekly, bite-sized videos on iOS development. On the site, youβll find over 260 episodes of members-only content. Each episode covers a single topic and is typically 10-20 minutes long. Join the thousands of developers who use NSScreencast level up their skills. For subscribers of This Week in Swift, we have a special discount of 30% off for 3-months. Sign up here!
How to Start Debugging http(s) Traffic in 2 Minutes
Tired of fighting with your desktop web proxy app? Check out this new http(s) debugging tool that runs in the cloud, no downloads required. You can inspect traffic on your own iOS device or add a remote device. Best of all, it's totally free and secure!
Swift Around the Web
Readable Swift: The Curious Case of Not
Good case for using the βοΈ emoji instead of !
to mean NOT in our code:
"We write code only once but read it many times thereafter. If we have to introduce a burden, we want to shift it to the writer, not the reader."
All about Concurrency in Swift - Part 1: The Present
@uraimo takes a deep dive into Swift 3 and concurrency, covering everything from Foundation locks, threads and timers to the language guarantees and the recently improved Grand Central Dispatch and Operation Queues π₯
Coding
TDD in Xcode Playgrounds
I'm not sure I'm ready to implement this in production before experimenting extensively first, but I really like the concept of tests just automatically running every single time a change is made. Brilliant!
The challenge of implementing iOS share extension for end-to-end encrypted messenger
"The extension shares no memory with the main app, and you canβt have shared objects, singletons, global variables, or any other kind of shared memory. All the data belonging to the main app that needs to be accessed by the share extension, for example a list of conversations, needs to be shared through other channels.
No matter which channel we looked at, there didnβt seem to be a reliable way to wake up or start the main application if it wasnβt already running."
Design
A design lesson 3.5 billion years in the making
Small changes add up...
"Turns out, evolution gives us an interesting way of approaching huge product changes. Think of your product like a living species. Drastic changes may kill it."
Other Cool Stuff
Villa Durazzo-Pallavicini
This week, I randomly visited the gardens of Villa Durazzo-Pallavicini and couldn't be more impressed. First, it's a gorgeous massive garden that takes over two hours to truly enjoy. But the coolest part was that the garden was broken into beautiful acts:
"Although recognizably in the English romantic style, the garden is highly theatric, to the point of being organized as a series of scenes forming a play with prologue and three acts (Return to Nature, Memory, Purification). Structures and statues through the garden form focal points to this libretto."
I've never seen or would have thought of a garden transformed into a personal spiritual journey like this. Just shows that you can take two normal things, like a garden and poetry, add them together and create something truly special and extraordinary.
Videos
Building a Swift Web API
@kylefuller explores what it takes to build a web service in Swift, and how to design and consume an API that can evolve over years, leveraging hypermedia and declarative programming π€
Tasting Tests at Cookpad
@kazu_cocoa shares how his company, Cookpad, tests one of the most popular recipe sharing services in the world, with 100,000 lines of code and 63 Million users just in the Japanese version of the app! I really enjoyed learning about the Japanese kano-model, the product development and customer satisfaction theory π€
Swift Code
- TextFieldCounter - UITextField character counter with lovable UX π. No math skills required π.
- FlexibleImage - A simple way to play with image!
- XcodeColorSense2 - π An Xcode source editor extension that makes working with color easier
- LicensePlist - iOS license plists generator. Carthage, CocoaPods and the libraries specified by yaml file are supported.
- logo - A Logo interpreter written in Swift
- LazyTransitions - Lazy pop and dismiss like in the Facebook, Instagram or Twitter apps.
Business
10 Mobile App Development Trends To Watch For In 2017
Looking forward to an App Streaming feature on iOS π
"Much like video streaming, app streaming allows you to start using certain features of an app without downloading it from the app store. The possibilities that this opens up are vast. App developers will be able to give users a taste of the app experience without the hassles of installation."
SPM
Building a command line tool using the Swift Package Manager
"One thing Iβd recommend that you do right away is to create two modules for your sourcesβββone framework and one executable. This will make testing a lot easier, and will also (and this is really cool) enable your command line tool to also be used as a dependency in other tools."
Swift Thoughts
I've never paid attention to the HoloLens stuff because it's always presented in the context of gaming (same as Oculus Rift). But this week at the Milan airport, I couldn't believe my eyes when I saw holograms giving a beautiful musical performance - they were doing stuff I was interested in and it suddenly opened up my mind to the possibilities!
This is a good reminder that changing the context can make a HUGE difference to a product, reaching audiences you've never even considered would be interested.