Here is an overview of my open source contributions in GitHub

NerdSummit 2024

In March 2024, I updated the NerdSummit app. There aren’t any new features, but the app was updated to the latest Xcode and devices.

Page-o-Mat Updates

In December 2023, I added a config file for a 2024 Recurring Journal.

In September 2023, I added features to Page-o-Mat:

  • Subtitles
  • Optional titles per page variant
  • Space for a footer at the bottom of lined journals
  • Customized page sizes and a built-in Tabloid size (11in x 17in)
  • Page orientation (Portrait or Landscape)
  • A way to add drawings to a page with rectangles, circles/ellipses, lines, QR codes, and text

NerdSummit 2023

In March 2023, I updated the NerdSummit app. Mostly just updated to latest Xcode and tested on latest devices. The JSON format of the schedule was changed, so I updated the parse code to support the new format.


In August of 2022, I published Page-o-Mat.

Page-o-Mat is a python program that can generate custom journals as a PDF. The journal is specified as YAML file with a few options on paper and page template styles. 

Page blocks can be specified in nested “loops” and the loop indices are available to calculate dates (with simple expressions) that can be used as titles on the pages. This allows you to easily create a daily journal, but also allows for more complex journal styles.

A complete example that implements a “recurring journal” is provided.

Net Worth Estimator

In May 2021, I wrote a few blog posts about personal finance and modeling the effect of savings on net worth growth.

I put the spreadsheet and a python port 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.


Bicycle is a datastructure and algorithm that is like a spreadsheet but supports multiple functions per cell and circular references as long as all of the functions are consistent with each other. It will propagate based on whatever values you seed it with.

Read more in What is Bicycle?

There are versions in Swift and TypeScript.

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: