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.
Founder, Owner-operator Light Heavy Industries (08.2018 - present)
As LHI Audio, I developed and released Cadmium, a VST plugin synthesizer.
In part because I opted not to use an existing framework for plugin development, I both acquired and applied knowledge of the Steinberg VST2 specification, cross-platform user interface development, advanced thread synchronisation, and high-performance real-time DSP.
For the user interface, I used my own Rutabaga library, which provides a scene-graph and event dispatching on top of an OpenGL 3.3 core profile context. Developing Rutabaga required detailed knowledge of low-level window system details across the three major desktop OSes (Windows, Mac, and Linux). In addition, the Cadmium UI makes heavy use of OpenGL shaders for rendering several of the widget types.
Cadmium's DSP code is all my original work (with the exception of several trigonometric approxmiations), with much of it accelerated using SSE2.
Both Rutabaga and Cadmium were primarily developed in C, with compile-time code generation in Python.
ICS Security Consultant Applied Risk B.V. (06.2018 - 07.2018)
- Designed and began developing a distributed fuzzing platform for security analysis of embedded devices.
Ecosystem Developer Geeny / Telefónica Next (06.2017 - 06.2018)
- Developed a high-performance, bi-directional MQTT to Kafka bridge in Rust.
- Developed small demos demonstrating an IoT backend platform.
- Retrofitted a Raspberry Pi onto an electronic doorlock to connect to the IoT platform.
Contract Software Engineer Monome (03.2011 - 04.2018)
- 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 grid and arc devices
- Built installers and distribution packages for the finished product
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)
Wire is a messenger application in the same vein as WhatsApp or Signal, with both mobile applications (for iOS and Android) and a webapp.
At the time I joined the team as a contractor, messages were only encrypted in transit (to/from the server), and were stored in plaintext both on the server and the clients. Wire wanted to implement strong end-to-end cryptography, and to that end had internally developed their own implementation of the Axolotl ratchet in Rust called Proteus.
Contract Software Engineer MOD Devices (08.2015 - 10.2015)
- Diagnosed and fixed issues in an embedded linux-sunxi I²S audio driver.
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)
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.