S Link
Find Your Dream Job With Hired.
On Hired, engineers typically get 5+ job offers in 1 week. Find that new opportunity you've been craving and get access to 4,000+ companies instantly.
try! Swift NYC
Limited tickets left! Join us for a Swift Community Celebration 🐥🎉 in New York City on September 1st and 2nd. Learn how to build a tiny compiler, extend Xcode 8, decode JSON in Swift, implement speech recognition in your app, reuse Swift APIs and code across platforms, tips and tricks of iOS 10 Notifications, property-based testing with SwiftCheck, RxSwift, and much more! Use discount code LASTCHANCE for $100 off!
Swift Around the Web
Closures Capturing Semantics: Catch them all!
Swift closures have different capture semantics than Objective-C's blocks, and it can definitely be confusing...
"You can instead tell Swift to evaluate a variable at the point of the closure creation and store that value in a local constant, instead of capturing the variable itself. You do that using capture lists expressed inside brackets."
Bridging Existentials & Generics in Swift 2
Good workaround to know for a problem you will surely run into when extensively using protocols and generics in Swift...
"From within the protocol extension we can successfully use the underlying type of the existential (
Self
) as a generic type parameter."
Looking forward to this just working in Swift's bright future :)
Coding
A quick look at Grand Central Dispatch and Swift 3
Quick summary for the new GCD syntax in Swift 3 😍
SiriKit: Can you outsmart provided Intents?
Lots of Gotchas here as the SiriKit API is super strict and limited right now...
Apple News
Design
Developing Applications for Augmented Reality
Pokemon Go is only the beginning...
"AR is much more than merely overlaying digital content on top of the real world. I see it as an information layer that allows us to interact with our surroundings in a human way... As developers and designers, if we focus on ideas that connect people to their surroundings in a natural way, AR will move towards its real potential faster."
Other Cool Stuff
In Case You Missed It
Last week, I spoke at and attended iOSDevCampDC, where I had the pleasure of listening to @atomicbird‘s great talk on StackViews. The talk pointed out a few tricks that require virtually no code, but are super powerful, so I had to write them down for my future self and to share. Enjoy!
Videos
Contributing to Swift: From Proposal to Shipped
Super inspiring talk from @xenadu02 as he went from never working on a language, compiler, or standard library to shipping four Swift Evolution proposals 👏 And you can do it too!
Reactive Programming with RxSwift
Good explanation of Reactive Programming and RxSwift for beginners like me 😊
Swift Evolution
SE-0117: Default classes to be non-subclassable publicly
I really enjoyed reading these two perspectives on SE-0117 this week:
The arguments against this proposal center around the need to unsafely hack through some error in a library you're consuming. Instead, Swifty APIs should be designed around Protocols vs Classes and with Composition over Inheritance. With structs and protocols already at the forefront in Swift, making classes non-subclassable by default is really not the end of the world.
Podcasts
Upgrading to Swift 3, and Swift Playgrounds
Good discussion on upgrading a large codebase to Swift 3 🚀 The key takeaway is you can start doing some syntax changes, such as lowercase enums, already in your Swift 2 codebase.
Swift Code
- EmojiTextView - Tap to swap out words with emojis. Inspired by Messages.app on iOS 10. Blog post here
- PopupDialog - A simple, customizable popup dialog for iOS written in Swift. Replaces UIAlertControllers alert style.
- ImageOpenTransition - Beautiful and precise transitions between ViewControllers images written in Swift.
- ZoomTransitioning - ZoomTransitioning provides a custom transition with image zooming animation.
- ASCalendar - A calendar control for iOS written in swift with mvvm pattern
Business
How I built an app with 500,000 users in 5 days on a $100 server
Having an "overnight success" app is the dream, but I honestly wouldn't be ready for it if it happened. I once wrote a blog post for a popular site, and hosted my images / videos on AWS without much thought. I was shocked a month later when I saw my Amazon bill 😬 And that's not even near the scale of the type of success that apps like Pokemon Go have to deal with right at launch!
So it's definitely interesting to think of this issue for an MVP. If you over-architect for scalability and success right away, you might not ship fast. According to this post, MVP and scalability can co-exist, but a lot of the tools mentioned would take some serious time to learn if you're not familiar with them, which the author takes for granted since he's already good at these.
Good reminder that there's no such thing as an overnight success.
Swift Thoughts
I went to iOSDevCampDC last week as a Level 1 and came back as a Level 7. Thanks @ayanonagon for being my personal Pokemon Go trainer 🙈
But seriously, it was a super cool experience to play with others who were excited to teach and mentor me. Now thinking about creating events and apps that encourage this level of natural collaboration.