Software Engineer

Respected leader skilled in guiding and growing remote/distributed cross-disciplinary teams. Thoroughly invested in professional development, both technical and business breadth and depth, while remaining a hands-on programmer.

Effective communicator who is able to plan for and coordinate diverse deadlines while continuously managing expectations as well as unexpected events. Doggedly focused on delivering iterative, future-proof solutions which satisfy stakeholders across the organization.

SOLID, DRY software engineer with a wide range of experience building bespoke websites, RESTful APIs, cross-platform mobile apps, and cloud DevOps solutions. Advocate for test-driven development (TDD) accustomed to working on a variety of projects, languages, and frameworks simultaneously and switching between them on a regular basis.


Application Development Senior Engineer

2020–Present — American Family Insurance. Madison, WI, USA

Senior Software Developer

2019–2020 — Blain Supply. Janesville, WI, USA

Senior Front-End Software Developer

2018–2019 — Propeller Health. Madison, WI, USA

Senior Web Developer

2017–2018 — RecommenderX. Dublin, Ireland

Lead Web Developer

2013–2017 — Ellefson Technology. Toronto, Canada

Project Manager & Web Developer (Contract)

2012–2013 — University of Toronto, Toronto, Canada

Database Engineer (Contract)

2012 — Purdue University, West Lafayette, USA


Higher Diploma in Science, Computing

2017 — Technical University Dublin. Dublin, Ireland

MA, Renaissance Literature 1500-1700

2013 — University of York. York, England

BS, English Language & Literature

2011 — University of Wisconsin-Madison. Madison, USA

Find Me:

Download Resume   



This project is for searching musical scales and chords which match a selection of notes. It is registered as a npm package and originally built with TypeScript.

There are 91 instrument tunings available and 26 scale and 51 chord types which produce 312 and 612 searchable variations, respectively.

When using the interface, left click on any instrument fret or key to select a note. Your selection will be indicated by a blue background around the note you chose. Clicking a second time designates this note as the root note. This is illustrated by a red background. Right click on any selected note or root note to clear it. After you are finished selecting the combination of notes you want to search for, hit the search button.

When the search has finished, the lists below the instrument will be populated with results that match the selected notes. Left click on any of these search results to apply it to the instrument above. Notes that are in the search result you selected but are not a user selected note will have a gold background. Click again on the same result to clear it from the instrument.


Guitar Tunings

View Code   


This metronome (and the larger website) is built with React and JavaScript and employs Web Workers and a self-correcting timer. The range of recorded variance is ±2 milliseconds off of true time.

To use the metronome, select your beats per minute using the input box in the top left corner and your note subdivision using the dropdown in the top right. Then press the "Start" button to begin the count. Left click on any subdivision to mute the beat which is indicated by a black icon. Left click again on the black icon to unmute it and remove the black indicator.

View Code   


This animation is derived from an exhibit created for the Ontario Science Centre implementing AprilAge's face aging kiosk. Originally built in Velocity.js and ported over to Framer Motion.

View Code   

WP Reading List

This WordPress plugin is designed to help organise and display books, magazines, articles, and anything else that you have read lately. This plugin allows users to display what they have read, attach text like a review or notes to it, and provide a link to where visitors can find the piece.

View Code