Downloading, Caching & Decoding Images Asynchronously with Alamofire: Part 1

September 18, 2016 | Swift, Alamofire, Networking, iOS, macOS

Downloading and caching images are common tasks in iOS development, especially when using collection and table views. In this tutorial, we're going to use the popular Swift networking library Alamofire and its companion image library AlamofireImage to build an app that displays images of Glacier National Park.

Automating Xcode Project Version Increments With Shell Scripts

August 23, 2016 | Swift, Scripting

I've made several frameworks and found myself going through the same process every time I wanted to update one of them to a new version. After finishing the code updates, I would increment the version number for each target (iOS, macOS, tvOS), update the version in the corresponding Podspec file, commit the version update . . .

Understanding Startup Stock Options

August 10, 2016 | Stock Options

Stock options are often a large component of an employee's compensation at most startups. While the ultimate value of those options is impossible to predict, it's important for anyone who is granted options to understand the basics of how they work and their tax consequences. This article is an attempt to explain those basics . . .

Making Private, Cross-Platform Swift Frameworks With CocoaPods

July 10, 2016 | Swift, Dependency Management, CocoaPods, iOS, macOS, tvOS, watchOS

With technologies like handoff and continuity, a unified developer program, and many of the same system frameworks available on all four of its platforms, Apple has been moving over the past few years to more seamlessly integrate its ecosystem of devices. This presents a great opportunity for us to bring our apps to . . .

Using Switch Statements for Type Checking in Swift

January 16, 2016 | Swift, Control Flow, iOS, macOS, tvOS, watchOS

One thing that bothers many developers about using if statements for type checking in Objective-C is that it suggests a specific order of importance. For example, here's how you might use type checking in an Objective-C prepareForSegue method . . .