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.

Short Circuit

Joe Fabisevich and I built Short Circuit which is a ChatGPT-based bot that you can chat with and gets you answers to questions. I wrote the backend in Meridian and Joe focuses on the frontend.

Meridian

Meridian is a Swift on the Server framework that I wrote. It’s built on Swift NIO. I wrote a little bit about the design process in this blog post. I’m also proud of the documentation, which has a numbered structure that progressively introduces you to Meridian’s concepts.

Beacon

Beacon is an app I built with Ashley Nelson-Hornstein. It’s an app for signaling 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 hosted with Chris Dzombak. We did 4 seasons and 70 episodes, talking about different design patterns. It’s a really code heavy podcast, and it was a experience learning 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 was 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 aimed 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. Backchannel is now defunct, although the code for the SDK is still available for historical reason.

culinary.af

pepin is an ingredient parsing and scaling library that I wrote, 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 was an Objective-C framework for making iOS apps. It heavily leaned on introspection to simplify the boilerplate in a typical iOS app. You can think of it as Rails for iOS apps. It provided 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.