These are all application to which I have proudly made significant contributions. Many of these applications were created by teams of talented developers which I lead, but some were solo projects.
In software development, there are many different tools (SCM, CI / CD, Project Management, Design, Security, etc) and roles needed to deliver software. These applications create silos of information but fail to tell the entire operational story of their development efforts, or even sometimes their own story. In addition, many roles fail to translate their struggles and issues to the other roles involved, creating friction within organizations. This leads to poor software development outcomes.
Bloomfilter sits in the center of all these development tools and provide insight, understanding and guidance for all roles, projects and ultimately the entire company’s software portfolio to guide them to success. It does this by applying data science, domain expertise and automation to the data sets that it manages.
Bloomfilter WebsiteWe built Tatfoo so that tattoo artists could easily connect with their clients. Tatfoo reduces the amount of work artists have to do when booking clients, and it provides clients with a much better experience.
And, the thing that really makes us different from other online services is that we do not want to tell you how to interact with your customers. You don't secretly work for us, we proudly work for you.
Tatfoo was in beta when the pandemic hit, and it stalled when the in-person economy was shut down. The team's attention was sent in other directions, so it was sadly decommissioned. At some point, when I have space to focus on a new project, Tatfoo might be resurrected.
Decommissioned
Nmond is a Ncurses based system performance monitor for Darwin (Mac OS X) written in pure C. It was "forked" from nmon. The original nmon gathered system statistics by looking at /proc, which is not available on Darwin, so system calls for all the statistics had to be implemented. The original program was monolithic and used global state a lot; it was modularized during the rewrite.
Get the CodeThis project was for a major national internet service provider who needed a way to streamline the process of inventorying the many large data centers they manage. We created an iOS application which used computer vision models to automatically inventory data center equipment. The iOS app was supported by an API layer, web management portal, and a pipeline for automatically generating computer vision models. Tensorflow was used for generation of the computer vision models. The principal challenges, from a computer vision perspective, were dealing with a very large set of unbalanced classes and simultaneously not having enough data to properly train all classes. I built the computer vision pipeline and was at times the technical lead for the project.
No Public Access, Closed Source
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
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
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 CodeThe 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
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
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 CodeThis 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 CodeRedactor 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 CodeSquared 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 CodeMarkShown 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 CodeBarberton 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