S Link
How to Make More Money as an App Developer
It sucks to throw away 30% of your hard-earned income. But you do when you sell on the Mac App Store. Stop wasting money.
Let me help you with this book. Build a thriving business making apps and reach more people. Increase your revenue and get to know your customers. Add in-app purchases, a trial mode, and piracy protection in no time. The book includes fully functional sample projects and Swift 2.2 code ready to be copied into your app.
Use the code NATASHA052016 to get a 20% discount this week! (Good 'til May 29th)
The Swift Algorithms Book (updated for Swift 2.2)
Written for students and professionals, The Swift Algorithms Book blends modern code, illustrations and computer science to help you pass the interview or build your next app. Perfect for the classroom or the office, the book takes a fresh approach to explain concepts that power search engines, databases and social networks. With new essays and support for Swift 2.2, use code coupon code THEROBOT at checkout to receive a 20% discount!
Swift Around the Web
ABI Compatibility: Whoopdty Do, What Does It All Mean?
So the Swift 3.0 goal of ABI Stability has been put on hold until a future Swift release. Since I don't come from a computer science background, it's hard for me to understand what this really means. Glad to see this article from @benatbensnider actually explaining it!
"So while ABI compatibility might seem like a big deal to have been pushed off, it very likely doesn't affect the day to day of most Swift developers.
The most compelling arguments thus far have been around the fact that some developers would like to distribute libraries in binary form so as to protect intellectual property, license agreements, etc. Not having ABI compatibility is actually a legitimate concern for developers wishing to distribute binary libraries, but I don't really feel like that's a very large number of developers. Enterprises wishing to make private libraries internally available are still able to provide private Carthage repositories and/or private CocoaPods specs to host the libraries in source form, and rely on the build process to compile everything together at once. Additionally, it is currently possible to ship binary libraries, the libraries just need to be recompiled and distributed for each new breaking compiler version."
Pattern Matching: if case, guard case, for case
I'll be honest, if case
, guard case
and for case
still don't come very naturally to me. I always have to look them up via my own blog post, but this is a lot more advanced stuff to keep around for reference.
Coding
Adulterated Objective-C
This week, a bunch of really big iOS developers blogged back and forth about Swift's lack of dynamic features, making it into a super big issue. Reading these, I felt a bit left out (am I a bad iOS developer if I don't see this as a pain?!!!), so I was happy to see that I was not alone.
I was also really glad to see this write-up from @ashfurrow further explaining the history of Objective-C's dynamic features and pointing out that just because Objective-C worked that way, doesn't mean Swift has to.
"Being reminded of our dependencies is important. At the same time, though, maybe itβs not important to re-invent Objective-Cβs dynamic runtime in Swift. The language is far more static than Objective-C. And besides, a dynamic runtime is only a set of tools used to solve problems. In a different context, like Swift, different tools might be better suited."
Will We See Android-Like Instant Apps on iOS?
While I'm not big on speculating what will come out at WWDC, I really enjoyed this write-up by @arekholko pointing out that iOS is all set up to have something similar to the newly announced Android's Instant Apps. This is clearly the future of mobile!
Other Cool Stuff
In Case You Missed It
SharedInstance Podcast: Robots like Ice Cream
I had a super fun time talking about being a nomadic π€ and my favorite π¦!
Videos
How to Train Your Swift: Examples of Computational Statistics in Swift, by Diana Zmuda
Amazing try! Swift talk by @dazmuda exploring the Swift implementation of mathematical concepts, including a statistical model to rank data, a bag-of-words model to classify new elements, and a Markov Chain algorithm to generate entirely new data points π€
Table View Controllers in Swift, with Chris Eidhof
LIVE CODING by @chriseidhof!! Must watch!! Learn how to use generics, structs and functions to create a reusable subclass of a much more Swifty UITableViewController.
Swift Evolution
Winding down the Swift 3 release
The note from @clattner_llvm on the Swift 3.0 release:
"This release is shaping up to be a really phenomenal release that will redefine the feel of Swift and make a major leap towards maturing the Swift language and development experience. We have had a focus on getting to source stability, with the forward-looking goal of making Swift 4 as source compatible with Swift 3 as we can reasonably accomplish. It tackled API naming head on (which is one of the hardest problems in computer science), made major improvements to the consistency and feel of the language, and has several nice across the board additions.
That said, it is also clear at this point that some of the loftier goals that we started out with arenβt going to fit into the release - including some of the most important generics features needed in order to lock down the ABI of the standard library. As such, the generics and ABI stability goals will roll into a future release of Swift, where I expect them to be the highest priority features to get done."
If you're still upset about the lack of ABI stability, make sure to read this reply from Greg Parker on mistakes made in Objective-C that weren't changed because of ABI stability.
"A late ABI is only late until it's finished; a bad ABI is bad forever" - @jckarter
[SE-0088]: Modernize libdispatch for Swift 3 naming conventions
This:
let queue = dispatch_queue_create("com.test.myqueue", nil)
dispatch_async(queue) {
print("Hello World")
}
Will now be:
let queue = DispatchQueue(label: "com.test.myqueue")
queue.asynchronously {
print("Hello World")
}
Podcasts
SwiftCoders: Natasha Nazari - Linguist & iOS Developer Living in Taipei
I really loved hearing @natasha_nazari's story on learning a ton of super hard languages and then transitioning to iOS development and Swift. Super excited to hear more at try! Swift NYC π½ π
Swift Code
- Chaty - Anonymous chat app leveraging Google's Firebase, a NoSQL backend and WebSocket for real time data synching
- Simplicity - A simple way to implement Facebook and Google login in your iOS and OS X apps.
- ParticlesLoadingView - A customizable SpriteKit particles animation on the border of a view.
- SwiftOCR - Fast and simple OCR library written in Swift
- preview-transition - PreviewTransition is a simple preview gallery controller
- PrediKit - An NSPredicate DSL for iOS & OS X inspired by SnapKit and written in Swift
On Open Source
Open source everything
Beautiful real-life story about how putting in the work up front to make your open source project automated and transparent can pay off in HUGE ways in the future. A good start is writing great documentation.
SPM
Creating Objective-C and C++ packages using Swift Package Manager
Swift Package Manager now supports packages with Swift, C, C++, Objective-C and Objective-C++ π
SwiftPM Packages on GitHub: Statistics
Statistics are fun to look at. But of course it's too early and there isn't that much data to take this too seriously. But still fun!