S Link
Want to integrate seamless payments in your app? Try our Judo Swift SDK
We’ve built our Swift SDK to make integrating payments into your app easier, faster, and more flexible. It is currently in development, and will be soon be functional. You can try it using Xcode 7 Beta with Swift 2.0.
Lead / Senior iOS Developer - San Francisco
As our iOS Developer, you will help lead our efforts to build a superior mobile health app in the ever-expanding health tech and wearables space. You will be a core contributor to our product architecture, design and direction.
If this sounds like something you want to be apart of, please contact mike@addapp.io for a chat!
Swift Around the Web
Generics in Swift, Part 2
Beautifully written!
"The most visible example of generic programming in Swift might be the humble
Array
type. In Objective-C, instances of the array typeNSArray
could contain objects of any type. However, Swift’s Arrays are always parameterized by the type of the items they contain, and so we have instances ofArray<Int>
,Array<UIView>
, et cetera.Array
is a type, andInt
is a type, and generics allow these two types to work together in a way that makes sense and conveys extra information."
Coding
Lessons learned with 3D Touch
"For Instagram, 3D Touch is much more than a 2015 version of the “right click”. The interaction adds another level of depth and carries a different intent. You aren’t yet committed to navigating to the content, but it's clear that you are interested."
Completely agree with this. Using 3D Touch has been truly amazing on iPhone 6s - a whole other dimension of interaction. It is definitely a lot more than a "right click"!
I've been surprised (but of course, maybe I shouldn't be!), by how natural 3D Touch is. I now get super upset when apps don't have 3D Touch when I expect it - then I remember that it just came out and even the apps I'm building don't have it yet lol.
MVVM in Swift
Great article on how Artsy does MVVM. I really like the list of MVVM constraints:
- Models don't talk to anybody (same as MVC).
- View models only talk to models.
- View controllers can't talk to models directly; they only interact with view models and views.
- Views only talk to the view controllers, notifying them of interaction events (same as MVC).
I recommend having a separate object for the network layer (as they mentioned about breaking it out), then a new view model value can be created every time the model data changes :)
Maybe I'll write about my most current implementation of MVVM at some point! You can get a little bit of preview of this topic in my AltConf talk on Swift Thinking (skip to 16:47).
Design
Mobile is a Systems Problem
Amazing write-up on how we need to be thinking about the reality of mobile user experience.
The way we evaluate usability on mobile is so contrived, at a table, in a room, focused on nothing else. How often do you actually see people use their phones like that? Being chased by bulls is a little extreme, a little gimmicky, but the question, “how usable is it one handed with the whole world going on around you?” is a question worth asking.
As someone who travels a lot with a big suitcase, backpack, usually holding a bag of food or a big cup of tea - a lot of times with little wifi connectivity while trying to navigate my way through a foreign location, I cannot agree more with Cate here that most apps are absolutely unprepared and unusable out there in the real world!
Other Cool Stuff
Kleenex boutique tissue box
"When the tissue is running out, it changes colors from white to yellow." - I always thought these were just defective tissues or something. The More You Know 🌈!
In Case You Missed It
NSSpain 2015: The Zen Guide To WatchOS 2 🍷
My NSSpain WatchOS 2 talk is up! TL:DR; teaser interview here. ya tu sabes! 🍷
Videos
Swift 2 Functions and Extensions
A super detailed look at Swift 2 functions, including how argument labels work, returning tuples, the guard clause, and extending behavior on core types.
Functional Voodoo
What The Heck Is A Monad
😂 -> "they're just monoids in the category of endofunctors". But seriously, this is a really good post explaining monads in Swift. Read it if you're still confused! I think I'm way closer to enlightenment now 😇.
WATCH
Sweefties WatchOS 2
Lots of cool sample WatchOS 2 projects to learn from! And yes, they're in Swift 🎉!! Great find by Apple Watch Dev Weekly.
Swift Code
- UIStackViewPlayground - Playground to play with UIStackViews.
- Swift-Radio-Pro - Full Professional Radio Station App, created w/ Swift 2.0
- LiquidFloatingActionButton - Material Design Floating Action Button in liquid state
- Fakery - Swift fake data generator
- TFBubbleItUp - Custom view for writing tags, contacts and etc.
Business
These Pictures of You
I didn't think much about the Live Photos when they came out - in fact, they seemed kind of annoying to me (something I should turn off), but reading this powerful piece has definitely made Apple's intention with these photos clear. Live photos now seem very haunting and creepy, and so powerful. Wow!
P.S. LOVE the comparison to the Harry Potter newspaper!
The No. 1 Predictor Of Career Success According To Network Science
"The field of network science shows us two things. (1) The hero’s journey is the blueprint for creating career success. (2) We can all be heroes. It just takes a little faith as you follow your heart and curiosity into unknown worlds."
Swift Thoughts
So apparently web developers can access pretty granular data from iPhone 6S's 3D Touch via JavaScript! I touched the 🌞! Make sure to open this in on your rose gold iPhone 6S browser :)