About Me

All Posts



App Case Study - Love Laugh Read Books

A look at the interesting technical challenges I ran into while developing this app.


5 Core iOS Competencies to Be a Great Hire

A list of core skills that are necessary in almost every app. If you can do all of these things reliably, you are well on your way to being a great hire as an iOS developer

Deploying Server-Side Swift

There are many ways you could choose to host a Swift website or web service, but here I share what has worked well for me.

5 Core Swift Competencies Before You Get a Job

A list of skills, beyond just the ability to get the job done, every Swift developer should know before they get paid to develop.

Filling Holes in Swift on Linux

The hardest part of developing Server-Side Swift is the incomplete nature of Foundation including some pretty critical basic functionality. After I thought up this technique, the problems I ran into changed from mountains to mole hills.

Learning Swift, Server-Side Swift, and the Future

I have been extremely busy so I haven't made the time to write any blog posts. In this post I give a brief overview of what I have been up to and what are my short-term plans for the future.



The Most Difficult Thing I've Ever Done - Writing a Technical Book

An in-depth discussion of my experience writing a technical book about learning Swift.



Practical Use for Curried Functions in Swift

An practical example of how curried functions in Swift can be useful for implementing a logger


Swift KVO Substitute: Observable Variables

My attempt to implement a KVO replacement purely in Swift

Getting Started With Swift

A list of key concepts to know when getting started with Swift and links to resources to stay current with its development.

What is an Optional in Swift

A summary with examples of what an Optional is in Swift

Uses for Implicitly Unwrapped Optionals in Swift

A list with concrete examples of when and when not to use Implicitly Unwrapped Optionals in Swift.


7 Cool Features in Swift

Concrete examples for some cool and practical new features in Swift that will improve the daily lives of iOS and OS X programmers.

Swift’s Weird Handling of Basic Value Types and AnyObject

Basic value types like String and Int can be secretly converted to Objective-C types like NSString and NSNumber. This has some interesting effects and implications.


Better UIAlert Handling and Easier Testing

A more declarative and testable way to display alerts in iOS.

Testing Asynchronous Code in Objective-C

Testing asynchronous code in Objective-C can be a real pain unless you make one simple change to the way you program it in the first place.


Be A Better Indie - 5. Listen to Podcasts

A list with descriptions of the main podcasts that have made me a better developer and keep me informed.

Devise: determine unconfirmed, confirmed, or not signed in user

While developing a Rails backend using Devise for user management, I ran into trouble determining a user's status. This is how I solved that problem.

Be A Better Indie - 4. Create a Singular To-Do List

The way that I handle my to-do list so that I stay on task with minimal effort.

Be A Better Indie - 3. Trim Your Incoming Email

I hate being constantly distracted by incoming emails. To solve this problem I decided to drastically reduce the amount of emails I receive. This is how I did that.


Be A Better Indie - 2. Accept, appreciate, and, channel the stress

Being and independent developer can be extremely stressful. It is important that you learn to accept, appreciate, and channel to turn it into something positive.

Be A Better Indie - 1. Cultivate A Support Structure

No person is an island. It is virtually impossible to be successful in anything that you do without having a good support structure around you.

10 Ways to Be a Better Independent Developer

A series of posts about how to be a better independent developer



Comfortably Uncomfortable

A look at how pushing through discomfort is exactly where I want to be.

Changes at a Glance

A system to make version control change sets more understandable at a glance.


Implicit Animation for CAShapeLayer's Path

A way to make all path changes on a CAShapeLayer be animated automatically.


Enforce Good UX Through Reusable Code

My theory on how user experience's and code architecture's interests can converge. Good UX can encourage good code reuse and code reuse can encourage effective UX.

Bind a UITableView to a Property

A library to allow binding a UITableView directly to a to-many property. The library automatically handles insertions and deletions as long as you make sure the to-many property emits KVO notifications.

The 2 Biggest Challenges in Speech UX

Speech is still a relatively new interface. Technology is finally starting to catch up to the dreams that we've had since the invention of the computer itself: dreams of having natural conversations…


Objective-C Bindings

An extension to NSObject that adds the allows binding the properties of two different objects together, allowing for much more declarative and understandable code.

Taking the Plunge

How I came to the decision to finally take the plunge and go independent.

UX and Agile

Discusses a high level way that we can integrate UX designers better into Agile software practices.