Software applications which I have either solely created or was the technical lead for and made significant contributions to.

Inventory Vision
IOT & Web (Python / Javascript)

The goal of this project was to create a prototype IOT device which could be mounted on a shelf of goods in order to continuously monitor inventory levels and communicate them to the server over a cellular connection. The Python firmware took images at regular intervals and then ran the images through Tensorflow Lite to detect the type and quantity of inventory items on the shelf. Tensorflow models were trained specifically for this purpose and then optimized for use on low specification devices. Just the meta data was transmitted back to the Javascript API server. A front-end interface was used to monitor the reported inventory levels. I was the technical lead and lead developer on this project.

Prototype, Closed Source

Dashboard Vision
IOT & Web (Javascript / Elm)

The goal of this project was to create a prototype IOT device which could be mounted in an automobile in order to monitor the dashboard for changes and report them to a server over a cellular connection. The firmware recorded GPS location and a dashboard image every time the velocity was at zero for a period of time. It then uploaded the metadata to a Javascript API server. In turn the API server sent the images to a computer vision service which could identify different parts of the dashboard. Next, the API server sent images of the identified dashboard regions to another computer vision service to classify them. Finally, there was an administrative dashboard written in Elm. I was the technical lead and lead developer on this project.

Prototype, Closed Source

Web (Elm / Javascript)

A web application for broadcasting sports scores in real-time. There are other apps which do this, but they either have a steep learning curve or too much onboarding friction to reach a broad audience. One goal of this app was to allow people to view scores without logging in; only broadcasters need log in.

The app has two parts, an Elm front-end and a FeathersJS/MongoDB back-end. The front-end is hosted on Netlify, the back-end is hosted on Heroku, and Auth0 provides the authentication services. Web sockets are used to keep score updated.

Frontend Code Backend Code
Remittance Manager
Web (Ruby on Rails)

The Remittance Manager provided a way for the client's customers to securely provide them with monthly financial information. The Remittance Manger used customer provided information to advise the customer on required reserve amounts for their insurance products. The key challenge of this project was creating customizable amortization tables; extensive testing was created to validate the ongoing correctness of the financial calculations. I was the lead developer on this project.

No Public Access, Closed Source

Hybrid Mobile (React, Swift, Java, Python)

The idea behind Kangaroo was to modify an Existing React application so that it could be used inside of custom native application wrappers. React native was not used because the client wanted to avoid creating dedicated user interfaces. Prior to this initiative the client used React for web clients, and a mix of Cordova and native code for mobile applications. The key challenge to this project was quickly standing up a mobile application which had all the functionality of their web applications. Additionally, the approach required creating interfaces for React applications to interact with the mobile application wrappers for handling push notifications and other native platform functionality. I was the technical lead for a team of developers on this project.

No Public Access, Closed Source

macOS Terminal / BSD (C)

Nmond is a Ncurses based system performance monitor for Darwin (Mac OS X) written in pure C which was "forked" from nmon. The original nmon gathered system statistics by looking at /proc, which is not available on Darwin, so I had to implement system calls for all the statistics. The original program was monolithic and used global state a lot; it was modularized during the rewrite.

Get the Code
iOS (Objective-C)

Markascore is a customizable Apple Watch app for quickly recording game scores. The companion iPhone app allows for the team names, point names, and point values to be customized.

Discontinued, Open Sourced

Markascore Website Get the Code
Script (Python)

This was an experimental approach to automatically schedule people for work shifts based upon their historical work patterns and stated preferences. The idea is to automatically schedule people to the shifts which they would want. The first part of the technique took a principle component analysis approach; it looked at the problem as a search problem. Historical records were put into a large matrix upon which the principle component analysis would be run. When a new unfilled shift is presented, the matrix is searched for the closest match. The second part of the technique took a max-flow, graph-based approach to creating an entire schedule.

Get the Code
iOS (Objective-C, C)

Redactor allows for the quick redaction of text from screenshots; it can also pixelate faces. Open the open, open an image, and touch to redact portions (only text areas and faces are detected for redaction).

The identification of text lines is done using a proprietary algorithm based upon seam carving and which I developed as a part of the research I did for my masters thesis. The algorithm was implemented in C in order to maximize performance; the C code is called from Objective-C.

Discontinued, Open Sourced

Redactor Website Get the Code
iOS (Objective-C, C)

Squared Pics (Squared) takes a rectangular image and makes it square by removing less important parts of the photo. Areas can be manually frozen (so that they are not removed) or manually melted (so that they are more likely to be removed). It also includes a photo editing extension, so it can be launched from within the standard Photos app.

This application implements a custom variation of the seam carving technique. The seam carving process starts as normal and then weights are adjusted based upon the content of the image (e.g. regions with faces are reweighted to discourage seams running through them). The algorithm was implemented in C in order to maximize performance; the C code is called from Objective-C.

Discontinued, Open Sourced

Squared Website Get the Code
iOS (Objective-C)

MarkShown is a very simple iPhone app for quickly creating textual presentations which can be shown on an external display. Markdown syntax is used to format presentation slides and presenter notes; the presentation slides will show on an AirPlay device, and the presenter notes will show on the local screen.

Discontinued, Open Sourced

MarkShown Website Get the Code
iOS (Objective-C)

Barberton is a simple app which was designed to connect the citizens of the City of Barberton with their local government. It provides important information from the City and allows residents to request services or report concerns to the city. The app gets its news feed from the City's Twitter account, and it reports service requests to an existing work order processing system.

Discontinued, Open Sourced

Barberton App Website