Here is an overview of my open source contributions in GitHub

NerdSummit 2021

In March 2021, I updated the NerdSummit app. I added support for Dark Mode, and since the event will be virtual, I added a button to the session screen to join remotely.

App-o-Mat iOS Apps

In July 2020, I decided to open-source some of my iOS Apps.

  • GameOMatKit: A Swift Package for making one/two-player pong-like educational games.
  • Math-o-Mat: An iOS game made with GameOMatKit that helps you practice arithmetic.
  • Cap-o-Mat: An iOS game made with GameOMatKit that helps you practice US state capitals.
  • 3D-o-Mat: An iOS app that can combine two images (left and right eye) into a 3D photo that you can see with red/cyan 3D glasses.

NerdSummit 2020

In January 2020, I updated the NerdSummit app. It now uses Google Sheets to provide the schedule and sponsor data, and you can search by author.

Simple Heatmap Visualization in Alamode

In October 2019, I wanted to show a Mode analytics report as a heatmap. Mode maintains an open-source gallery of visualizations, but the only heatmap was specific to cohort retention visualizations. So, I started from that and created a simple generic heatmap that can be used for any two-label data in Mode.

It has been merged and you can get it from the normal mode deployment.  To use in a report, edit the HTML and add

<link rel="stylesheet" href="">
<script src=""></script>
<script src=""></script>

Then, create an element in your code where you want the heatmap. For example:

<div id="heatmap" class="col-md-12"></div>

And call the simpleHeatmap function like this (I am using it to track test coverage of iOS devices):

    query_name: "Coverage",
    html_element: "#heatmap",
    x_column: "area",
    y_column: "device_and_os",
    value_column: "evnormalized",
    max_value: 100,
    min_value: 0,

    title: "Coverage for 2019.13",
    x_label: "Area",
    y_label: "Device / OS",
    value_is_percent: false,
    color_gradient: ["#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850"]

Trello iOS Assisted Onboarding

I work on Trello’s iOS apps. In 2019, I worked on a project to implement an assisted onboarding experience for our apps that supports accessibility, localization, size adaptation and is written in a pure Rx-MVVM style that results in a declarative ViewController and a stateless ViewModel. We open-sourced the VC/VM and unit tests in a sample app.

In July of 2019, I spoke about this project at SwiftFest.


I added eigenDecompose and unit-tests to Surge in February 2019.

Surge is a Swift library that uses the Accelerate framework to provide high-performance functions for matrix math, digital signal processing, and image manipulation.

ListOMat Update / Skillshare course

In January 2019 I added some branches to ListOMat and broke down step-by-step instructions for SiriKit to augment my Skillshare course on SiriKit.

NerdSummit 2019

In January 2019, I updated the NerdSummit app. It now has server customizable session tracks, a slightly better session view, and the sponsor page is fed with server-side JSON.


In October 2018, I added a feature to bluepill to support my work at Trello. Bluepill is a project that makes iOS GUI Testing easier by orchestrating the simulators and tests. My feature allows bluepill to call user scripts after it boots a simulator, but before the test is run. In my use-case, this allows me to install HTTPS certificates into the simulator so that it can connect to our mocked server setup.

Smashing Magazine 2018

In April 2018, I wrote an article titled Will SiriKit’s Intents Fit Your App? If So, Here’s How To Use Them. The source code for a simple to-do app with Siri support is here:

In June 2018, I covered WWDC 2018. To explain Siri Shortcuts, I added support to List-o-Mat and put it in a branch.


In March 2018, I made a minor commit to fix a bug in how fastlane parses workspaces (via Cocoapods’s Xcodeproj), and I wrote up a case study about it on App-o-Mat.

NerdSummit 2018

In March 2018, I updated the NerdSummit app (which I forked from my EventOMat). The main feature was to load the schedule from their website instead of including it in the app.

Smashing Magazine 2017

In April 2017, I wrote an article titled Simplifying iOS Game Logic With Apple’s GameplayKit’s Rule Systems. The source code is here:

In May 2017, I wrote an article titled Building Killer Robots: Game Behavior In iOS With Fuzzy Logic Rule Systems. The source code is here:

In July 2017, I wrote a summary of WWDC 2017 with code samples. The Face Detector app from that article is here:

NerdSummit 2017 / EventOMat

In March 2017, I gave a talk about practicing iOS development. As part of that talk, I released EventOMat, a simple app to use to practice app development. It implements a conference app which you could customize for any event.

If you want to use it as a basis for practice, there are exercise branches to checkout which remove a single feature and give overview instructions to help reimplement them.

iOS Swift Playgrounds

I have released a few projects related to Swift Playgrounds. The details can be found in this post about how I author iOS Swift Playgrounds and my presentation about it to iOSDevUK.

  • PlaygroundSupportMock: a mock version of the PlaygroundSupport framework to use during authoring.
  • pgbookc: a Playground Book “compiler” that can extract a Contents folder from a host app (used for authoring) and turn it into a .playgroundbook bundle.
  • ShapeSearch: a book I am writing that teaches binary search.

Talking to the LiveView (bugfix of WWDC talk)

At WWDC 2016, there was a code-sample published along with a talk about how to “talk to the LiveView” of a Swift Playground on iOS. As more iOS10 betas were released (and Swift was updated), this code-sample became out of date. Here is my fix of TalkingToTheLiveView.

Hack for Western Mass 2015

On June 6-7, 2015, I participated in the Hack For Western MA on a project for Gardening the Community to help them engage their community and supporters. The project was a pair of native apps (iOS and Android) to send alerts related to volunteer opportunities, events, vegetable availability, and requests for supplies. I built the iOS app and set up Parse integration for push notifications.

Hack for Western Mass 2014

On June 6-8, 2014, I helped organize the Hack For Western MA. I participated on a team that took a Hampshire/Franklin labor study and built visualizations of it. The work for that is here:

We used GitHub Pages to deploy it here:

It is ongoing work that the Hampshire/Franklin Regional Employment Board and Career Center will help guide.

Smashing Magazine 2014

In March 2014, I wrote an article for Smashing Magazine, titled Getting Your App Ready For iOS 7′s New Dynamic Interactions. The source code is here:

App-o-Mat: training for cordova and jQueryMobile

In February 2014, I started work on App-o-Mat, which is a tutorial site for jQueryMobile and Cordova. To support that I created a app starter template here:

Cordova file plugin pull request

While working for a client on a Cordova problem in June 2014, I found a bug in the file plugin and PR’d a fix:

Hack for Western Mass 2013

In June 2013, I participated in the Hack For Western Mass, on a team that built a web-based application to manage a distributed seed library. The code is here:

The site is deployed in Heroku here:

Hello! iOS Development

In 2013, I co-authored a book called Hello! iOS Development. The source code from the book is here: