Skills

React, Javascript, Tailwind, Stripe, Snowpack, Fauna, GraphQL, Magic, RxDB, Offline-first, WebAudio/WebMidi, Python, Linux
Employment

DITR Field Service Engineer @ AeroAstro
MIT
Aug 2019 – Dec 2020
  • Provide IT support to astronauts and rocket scientists, their students, and staff
  • Wrote Python script to automate: reformatting, and consolidating nmap scans and ldap info, for CrashPlan reports
Specialized Field Service Engineer
MIT
May 2018 – Aug 2019
  • Remediated devices with static 18.x IPs in preparation for MIT’s sale of most of their 18.0.0.0/8
  • Helped faculty/staff/students decide on dynamic vs persistent IPs, private vs public IPs
  • Wrote Python script to automate nmap scans and MAC/vendor translations
  • Wrote Python script to compile a list of conflicting IPs for IS&T’s “dueling DHCP servers” issue
Freelance Software Engineer
Calero Software / ComView
Oct 2017 – Jan 2018
  • Updated SSRS reports: fonts, colors, formatting, etc.
  • Wrote Python script, using lxml and xpath2 libraries to automate most of the updates
Freelance Software Engineer
Upwork.com
May 2017 – July 2017
  • Created a browser-based MIDI recorder/player using WebMidi, WebAudio, and jQuery
  • Created a Node.js service which rendered MIDI data into an audio file the user could download
  • Client review excerpts: “Highly skilled in both MIDI and JavaScript. Excellent adherence to deadlines and great to work with” “Completed the job on time and with excellent communication throughout”
Freelance Software Engineer
The Globe Institute
Oct 2016 – Jan 2017
  • For each class, instructor Ryan Moore drew diagrams consisting of equilateral polygons inscribed in a circle
  • These diagrams varied but always conformed to a set of constraints, and took multiple hours to create by hand
  • Automated the creation of these with a simple SPA, rendering to SVG/PDF and reducing his prep work to minutes
IT Director
Epiphany School
Sep 2006 – Jun 2016
  • Network, Linux, Windows administrator
  • Maintained and repaired SMART Boards, printers, 150 computers
  • Provided emotionally sensitive help desk support to overworked teachers
  • Maintained website, performed data recovery
Solo/independent side projects

Javascript, React, Stripe, RxDB, Tailwind, Fauna, Magic
Published on npm, 2021
  • CRA style template creates reactive, offline-first user-document React apps with Fauna, RxDB, and Magic
  • Scripts provision Fauna to work with RxDB, and setup Stripe with customer-portal-managed subscriptions
  • Put Fauna, Magic, and Stripe keys in a dotenv file and have a working demo running in under five minutes
Emscripten/Wasm, C, JavaScript, karma/chai
Published on npm, 2020
  • Augments AudioContext: WebKit’s decodeAudioData doesn’t work with ogg vorbis, Blink’s ogg decoding is buggy
  • AudioContext subclass / Emscripten transpiling of libvorbis, overrides decodeAudio to decode ogg in any browser
  • Breaks out of the decode loop periodically to keep the event loop going without needing WebWorkers
Ear Sharpener
SPA (2019 – present), iOS (2009 – 2018)
2009 – present
  • Automates and gamifies a musical ear-training technique that would otherwise require hours of preparation
  • SPA: React, WebAudio
    • Designed an SVG component that combines and symbolically describes the four main configuration settings
    • Built audio engine to get higher quality sounds from fewer piano samples using transposition
    • In-progress at: https://earsnacks.app
  • iOS
    • Written in Objective-C, later rewritten in Swift, used low-level audio API
    • Removed from store in 2018, had 4.6 stars / 1.72K units sold / $5.31K in sales
Piano Punisher
React, TypeScript, Ruby on Rails, Stripe, PostgreSQL
Feb 2018 – Apr 2018
  • Browser based MIDI filter helps improve musicians’ technical skills
  • Notes played outside the given velocity and timing parameters are filtered out, and the silence that occurs when one presses a note and it doesn’t sound, feels uncomfortable (is a punishment)
  • Try it out at: https://pianocandy.com/punisher
Education

Bachelor of Arts
State University of New York at Potsdam
2002
  • Majors Philosophy (GPA 3.55), Computer and Information Sciences (GPA 3.44), minor Linguistics (GPA 3.63)
  • Created/hosted an open mic night, booked bands, sound engineered, as a student government committee chair