Projects

Here is a list of my projects. Some of these I consider completed, some are still unfinished, and some still in progress. They’re presented from most recent or in progress to oldest.

Beacon

Beacon is an app I built with [Ashley Nelson-Hornstein]. It’s an app for signal availability and telling your friends when you’re free to hang out. We built it for WWDC in 5 weeks. It’s the source of quite a few Swift on the server posts that you can find on this blog.

Fatal Error

Fatal Error is a podcast I host with Chris Dzombak. We are currently in our first season, talking about different design patterns. It’s a really code heavy podcast, and it’s been interesting trying to learn the best ways to express code concepts using just our voices and the show notes.

Coordinators

A coordinator is a pattern that allows you to simplify your app by preventing view controllers from being dependencies of each other. Primarily, it takes all of the flow logic out of your view controllers. In addition, it solves the app bootstrap problem, which simplifies app delegates.

I originally wrote about coordinators in January 2015, fleshed out the idea and gave a talk about it at NSSpain that September, and published a blog post version of the talk in October.

Backchannel

Backchannel is a way to gather feedback in an app. Rather than traditional methods of gathering feedback, where a beta tester can talk only to the developer or project manager, Backchannel aims to open that feedback up to everyone. Letting your beta testers engage with each other gives you real discussion, which generates higher quality bug reports.

culinary.af

culinary.af is a website that shows off an ingredient parsing and scaling library that I wrote called pepin, which you can find on GitHub. I wrote an extensive blog post about it. The scaling is unit-aware, which means if you scale 1 teaspoon of salt to 2x, you’ll get 2 teaspoons of salt (note the pluralization). If you then scale to 3x, you’ll get 1 tablespoon of salt, because 3 teaspoons is one tablespoon. If you scale to 4x, pepin will automatically convert to “1 tablespoon + 1 teaspoon of salt”. Check out the recipes and check out the scaling at culinary.af

Instant Cocoa

Instant Cocoa is an Objective-C framework for making iOS apps. It heavily leans on introspection to simplify the boilerplate in a typical iOS app. It provides handy abstractions for common problems, like data sources for table and collection views, model introspections, and linking a model to specific API endpoints. You can find it on GitHub.

Objective Shorthand

Objective Shorthand (GitHub) is a set of categories on Foundation objects that make long things in Objective-C short. It fills in a lot of the gaps that Apple left in their own SDKs. It fills a roll something like Active Support does in Rails.

SKBounceAnimation

SKBounceAnimation is a CAKeyframeAnimation subclass that creates an animation for you based on start and end values and a number of bounces.

I wrote two posts about the math behind the bounce animation: here and some background here as well. The system generates a curve that models a bounce animations using oscillating exponential decay.