With my approachable and easygoing personality, I also work well as a liaison between development teams, and I have a talent for explaining even arcane technical subjects in easy-to-understand terms.
In addition to my broad skill-set, I also have a keen interest in high-performance, low latency applications, and have applied this in a number of real-time audio DSP projects. I am particularly interested in concurrency and parallelism, and have experience building lock-free and wait-free data structures.
Linux, FreeBSD, OpenBSD, macOS, Windows, ST31 Embedded
POSIX/Unix, OpenGL 3.x, JACK, Steinberg VST, Xlib/XCB, Linux kernel (driver development), libuv, AppKit, waf
Linux USB HID Interfacing in Userspace Rustfest 2016 (17 September 2016, Berlin)
Spoke about reverse-engineering a USB human interface device and developing a userspace driver for it in Rust. Subjects covered included Wireshark and usbmon Linux subsystems, ALSA and hidraw userspace APIs, and assembling everything together into maschine.rs.
Senior Embedded Engineer Superscale (02.2017 - 05.2017)
- Ported legacy codebases from C++ to Rust for deployment to embedded WLAN routers running a customised OpenWRT build.
Contract Software Engineer Wire (10.2015 - 09.2016)
- Assisted in adding end-to-end encryption to a messenger webapp.
Contract Software Engineer MOD Devices (08.2015 - 10.2015)
- Diagnosed and fixed issues in an embedded linux-sunxi I²S audio driver.
Audio Software Consulting (11.2012 - current)
- Developing rutabaga, a user-interface widget library leveraging OpenGL for cross-platform hardware-accelerated UIs
- Ongoing work on a vector phase shaping audio synthesizer
- Ongoing work on a digital audio workstation package
Contract Software Engineer Monome (03.2011 - ongoing maintenance)
- Ported my existing libmonome project (originally developed for Linux) to Windows and Mac OS X
- Developed serialosc, a cross-platform serial-to-OpenSoundControl server leveraging my existing work on libmonome.
- Implemented the host-side serial protocol for communicating with the new grid and arc devices
- Built installers and distribution packages for the finished product
Software Engineer Native Instruments (04.2012 - 06.2012)
- Diagnosed rendering inefficiencies in QT on an embedded Linux platform
- Designed protocols for communication between a USB gadget and the host system
Contract Software Engineer SoundCloud (06.2011 - 03.2012)
- Developed a test harness for acoustic fingerprinting systems
- Implemented an audio classification algorithm for differentiating between music and speech signals
Software Engineer Twilio Inc. (10.2010 - 03.2011)
- Reverse-engineered Adobe's RTMP streaming media protocol and developed an implementation as a FreeSWITCH endpoint module
Software Developer Scrapblog Inc. (04.2010 - 10.2010)
- Developed an E-Commerce system in Python, interfacing with APIs from Authorize.net, USPS, FedEx, and others
- Part of a team developing a Facebook application for creating photo collages
Software Developer NeuralIQ Inc. (08.2007 - 10.2008)
- Ported an Actionscript 2 application to AS3/Flex
- Patched bugs in Adobe Flex 2
- Developed a VT100 terminal emulator in AS3
- Developed interactive Flex visualization components
Contract Web Developer Avanoo (06.2007 - 08.2007)
Web Developer The Next Wave (12.2006 - 05.2007)
- Maintained Wordpress sites for clients
- Developed custom PHP/MySQL sites
- Developed a captive WiFi portal based on NoCatAuth, OpenBSD, and PHP
- Worked as server administrator and technical support for a small, in-house hosting service
Technician Midwest Design Computers (01.2006 - 01.2007)
- Performed general repair work on customers' computers
- Built custom digital video recorders for an affiliated surveillance company
- Built and configured a router/firewall with OpenBSD and pf
My personal projects focus on the intersection between music and software, exploring new ways of computer-based performance and composition.
Developed rove, a program for live improvisation and performance of electronic music. Over the course of development, I have used rove to perform my music at a number of shows, including several I played while on tour in the western U.S.