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.
I have a keen interest and experience 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 VST2, Xlib/XCB, Linux kernel (driver development), libuv, AppKit/Cocoa, 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.
Contract Software Developer Google (10.2019 - present)
As part of a Google Fonts research & development project to build Runebender, I have been developing a set of tools for working with and processing OpenType feature files.
Feature files are used to define advanced substitution and positioning rules, with capabilities far beyond simple ligature substitution and kerning that are often seen in Latin fonts. The editing process has historically been an edit-compile-refresh cycle, but, in otf-fea-rs, I have been building a compiler toolchain which supports a more "live-coded" style of development.
This project is developed in Rust, and has required building a deep knowledge of advanced OpenType features (particularly in regards to the GPOS and GSUB tables). Additionally, the feature-file parser is original work (developed using a parser combinator library), as is the TTF/OTF binary codec.
Contract Software Developer Formlabs (04.2018 - 10.2018)
In early/mid 2018, Formlabs was gearing up to launch the Form 3, their third-generation stereolithography 3D printer.
As part of the final stages of development, they had been accumulating vast amounts of analysis data and logs from the printers, and their existing tooling was struggling to process the volume and glean effective insights on printing performance.
I developed a high-performance log processing framework in Python 3 which was not only able to process large volumes of the logs, but was able to do so without using a distributed map/reduce cluster. Additionally, the processing framework exposed simple APIs which allowed other teams to easily add processing logic for new logs as they were added to the printer.
To date, the log processing framework has analysed over 30TB of logs and raw data, and it has become an integral part of the internal Formlabs diagnostic tool-set.
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.