S Link
Ship Quickly, Ship Often, Capture FeedbackโฆRepeat! ๐
Buddybuild is the simplest and fastest way to automate building, deploying and gathering feedback from your testers. Never again suffer through painful processing times or app reviews for your beta. Buddybuild will auto provision new devices - managing testers' UDIDs, iOS provisioning profiles and signing identities. Stop cobbling together and maintaining disparate build, deployment, crash reporting, and feedback systems. With buddybuild, you can save time and stay focused on what matters most: creating awesome Swift apps!
Take the buddybuild tour to see how thousands of developers ship their apps faster than reading this newsletter.
The Swift Algorithms Book (30% off)
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. Use code coupon code THEROBOT at checkout to receive a 30% discount!
Swift Around the Web
Swift: CGRect, CGSize & CGPoint
Didn't know about the .zero
! Definitely worth a read to make sure your CGGeometry
code is Swifty ๐ฅ!
Swift Playgrounds โ Interactive Awesomeness
A comprehensive guide to Swift Playgrounds - "the absolute easiest way to learn how to code in Swift". For more advanced Playground tricks, I highly recommend @ericasadun's book: Playground Secrets and Power Tips (affiliate link).
Coding
Asynchronous error handling
I've honestly had a hard time finding many use-cases where I need to use throw
. The main one, as mentioned in this post, is for asynchronous error handling - in which case throw
doesn't really work. So I've stuck with the completion block that has a Result
as an input. Of course, @aligatr takes this whole thing to next level with Promises and Futures. But I personally like to keep things simple with just the basics.
Guide: How To Migrate Your Parse App To Parse Server With Heroku And MongoLab
I'm still bummed that Parse is shutting down, but at least it's the friendliest shutdown out of all shutdowns... To help out, Parse has open sourced Parse Server:
"The open source Parse Server makes it possible to serve the Parse API from any infrastructure that can host Node.js applications. Parse Server provides a way for you to keep your application running without major changes in the client-side code, once you have your data in your own database. Our client SDKs now support changing the API server location to direct them to your own. This also lets you use the Parse client SDKs with entirely new applications that have no dependency on the Parse hosted services."
There is also a more official migration guide. Ganbatte!
Apple News
CloudKit Now Supports Server-to-Server Web Service Requests
Whoa! Looks like CloudKit is now a serious candidate as a Parse alternative...
"In addition to providing a web interface for users to access the same data as your app, you can now easily read and write to the CloudKit public database from a server-side process or script with a server-to-server key."
Design
Other Cool Stuff
Your Photos in ASCII art!
Definitely didn't know this! (originally saw via @catehstn)
Take any Facebook/Instagram photo URL.
- ๐ append
.txt
โ ASCII art - ๐ append
.html
โ colored ASCII art
Videos
Why Swift is swift
Amazing talk by @purpleyay on how internal compiler optimizations makes Swift swifter - focused on dynamic dispatch. This talk is less than 10 minutes, so definitely make sure to watch it!
Swift-ly Secure, with Seth Law
With the recent open-sourcing of Swift, the barrier to entry to create iOS and OS X apps has been lowered, but old vulnerabilities still exist and developers still make mistakes that violate usersโ privacy and expose an organization to additional risk. In this talk, @sethlaw covers some common vulnerabilities as they exist in Swift applications, examples of failures, and how to prevent the same.
Swift Evolution
[Accepted] SE-0028 Modernizing Swift's Debugging Identifiers
__FILE__
, __LINE__
, __COLUMN__
, __FUNCTION__
, and __DSO_HANDLE__
identifiers in Swift will be modernized to #file
, #line
, #column
, #function
, and #dsohandle
๐. Thanks @ericasadun!!
Hirundo: Swift Mailing List Reader for Mac OS X
So useful!
"The Swift Mailing Lists are a fantastic resource. However, accessing the information in a convenient way is difficult: The web archive is not easy to navigate, and when you subscribe to a list you're bound to the UI of a mailing list. Even worse, you can't see any messages posted before you subscribed.
Hirundo (Latin for 'Swift') is a convenient way to browse and follow the discussions in the Swift mailing lists like Swift-Evolution or Swift-Dev. You can even bookmark messages of threads because they contain important information."
Functional Voodoo
RxSwift at first sight
My favorite part about this blog post is @vasarhelyia's willingness and excitement to try out something new and see how it works by building something, even after working with a "competitive" way of doing things for over a year!
Functional Reactive Intuition
Wow! A super simple blog post meant to give us more of an intuition of what functional reactive programming is, how it feels, and when it could be useful vs trying to explain it in a super complex way. Love it!
๏ฃฟWATCH
ClockKit Tutorial: Add complication to an already existing watch project (ClockKit #1)
๐ Looking forward to the rest of @kristinathai's much-needed ClockKit tutorials!
"The Creating Complications with ClockKit video from WWDC โ15 is a great introduction to, well, creating complications. What Apple has failed to mention though is that while adding a complication to a brand new watch project is trivial, unfortunately, adding a complication to an already existing project is a very manual and tedious process. Hopefully, the developers of Xcode will add a way to insert a complication into your existing project more easily, but until then, hereโs how to do it."
Stop Watch
This really resonated with me:
"The Apple Watch contains a hundred miracles of engineering and design, surely, but serious problems with software and services can turn even the most incredible hardware into something you just sit on your desk and ignore."
Swift Code
- FoldingCell - hard to explain. Just look at this gif ๐
- TextFieldEffects - Custom UITextFields effects inspired by Codrops
- Hue - the all-in-one coloring utility that you'll ever need
- SwiftString - A comprehensive, lightweight string extension for Swift
- mobileplayer-ios - A powerful and completely customizable media player for iOS
- APTargets - Adding UIControl targets, the right way.
Learning
Presenting Lessons from Walking Tours
I once started building an app that does guided audio tours by reading Wikipedia articles. However, I soon realized that what makes guided tours with a person special is that the person leading the tour has strong opinions about everything from what to point out to which periods of history to cover to their personal quirky commentary on the events (looking at you Those Dam Boat Guys!).
"A walking tour is made of stories, not facts. All the better to draw people in."
The point is that your presentation should be like that. People came to hear your quirky opinions and thoughts instead of reading documentation at home! That is why my Wikipedia tour app just wouldn't have worked.
P.S. If you're looking to do more speaking, I highly recommend Cate's newsletter: Technically Speaking!
Business
Interviewing, applying and getting your first job in iOS
I often get asked for advice on how to get started as an iOS developer, and I feel like I never have a clear answer because companies vary so much in their interview process, especially for iOS developers, and I feel like I landed my jobs based on a series of unique events.
This is a very comprehensive and very well thought-out write-up on how to land that first job! +1 on the Coffee part - if they don't meet you first, you're just one of the 100 faceless resumes they have to file through. Make the process a lot more personal!
Swift Thoughts
@clattner_llvm on what Swift 3.0 is really about ๐ (via roopc.net):
"Overall, this comes back to a higher order philosophy about what Swift 3 is really about: it is about driving the next wave of adoption of Swift by even more people. This will hopefully come from new audiences coming on-board as Corelibs + Swift on Linux (and other platforms) become real, SwiftPM being great and growing into its own, and the Swift language/stdlib maturing even more."