I am the Director of EDA Engineering at JuliaHub where I lead development of the CedarEDA analog circuit simulation and verification suite, and build next-generation tools for the Julia programming language. I received my Ph.D. from the University of Washington in Electrical Engineering, specializing in Digital Signal Processing. I also have experience in a number of related fields including low-level microcontroller programming, electro-magnetics and wireless communications, high performance computing, and machine learning.
I graduated from the University of Washington with a Bachelors of Science in Electrical Engineering in 2011 and earned my Masters degree in 2014 from Prof. Les Eugene Atlas and Prof. Adrian KC Lee. My masters thesis was titled "A Fresh Look at Functional Connectivity" and proposed a new application of pre-existing mathematics toward analysis of neuro-imaging signals such as those captured by electro- and magnetoencephalographic (EEG/MEG) systems.
In 2018 I graduated with my Ph.D. from the Ubiquitous Computing Laboratory studying under Prof. Shwetak Patel. My dissertation, titled "Techniques for Cough Sound Analysis" details my research into the application of deep learning to acoustic cough detection and classification within a resource-constrained hardware platform. My projects page has current information on my major projects both past and present, whereas my curriculum vitae has a more targeted selection of previous work to peruse.
I have been a core developer on the Julia language project since 2013, and I joined JuliaHub as a Senior Research Engineer in 2018. Many project listed below are related to the Julia language in some way or another, and I continue to be involved in design, debugging and maintenance of a wide array of projects under the Julia language umbrella.
I designed and implemented the BinaryBuilder collection of cross-compilers and associated tools. BinaryBuilder is used to compile non-Julia dependencies for use in Julia packages, and as such provides C/C++/Fortran/Rust/Go cross-compilers that target all platforms that Julia itself runs on. BinaryBuilder provides a fast, convenient and reliable method to build these dependencies and ship them to the hundreds of thousands of Julia users worldwide, with minimal pain. The Yggdrasil community build tree contains thousands of recipes authored by hundreds of community members, building everything from numerical libraries, to portable graphics stacks, to CUDA runtimes and drivers.
I am the Director of EDA Engineering leading development of the CedarEDA analog circuit simulator and verification suite. This project is am ambitious new simulator written in Julia that directly compiles circuit netlists to high-performance simulator code achieving competitive runtimes against state-of-the-art commercial simulators. Through the combination of cutting-edge compiler technology, automatic differentiation, a plethora of ODE solvers and precise signal processing libraries, users are able to automatically optimize circuit designs to achieve required specifications.
I designed and implemented a library for switching the backing BLAS/LAPACK library for Julia (and other projects that need the same behavior). This library abstracts away ABI differences in different vendor libraries (such as OpenBLAS, Apple Accelerate, Intel MKL, Fujitsu BLAS, and more) through calling convention trickery and some hand-written assembly. Design requirements of this library were to be low-overhead, interoperable with both C and Fortran dependencies, and to work on all operating systems and architectures that Julia itself works on.
I led development of AI models for phased array antenna systems as part of the DARPA TRIAD project. We took an off-the-shelf 16x16 MIMO software-defined radio and rebuilt it from the ground up with new gateware, firmware, driver and software. Our rebuild was necessary to provide a high-performance, GPU P2P-enabled stack for use in running realtime, full-duplex machine learning workloads on sample streams from the software-defined radio. Our eventual models were able to perform blind adaptive beamforming with an uncalibrated array, as described in our paper published in Array 2022.
I implemented and maintain the Julia package server network, a global content delivery network that serves 100TB+ to hundreds of thousands of users every month. The package server design is intentionally cache-friendly as it is based around content-addressed resources, and was built to be operated at minimal cost to the opensource foundation. We are able to provide region-specific downloads at a fraction of the price and at lower latency than that of a naive S3-based implementation.
I built a custom container runtime using Linux user namespaces, similar to the (more modern and featureful) podman tool. Sandbox was designed as the isolation layer for BinaryBuilder, and ended up being used as the sandboxing tool for all Linux CI machines for the Julia ecosystem. The chief benefit for CI being that Sandbox is nestable, whereas docker and other tools continue to lack the ability to nest, although this is slowly changing. With this tool, CI plugins that launch the CI job within a custom rootfs image are possible, which are heavily used by the Julia project for fully reproducible CI.
My Ph.D. dissertation, titled Techniques for Cough Sound Analysis, developed tools for detecting and processing cough sounds. I developed deep learning models to extract information about coughs from audio streams in real time on resource-constrained hardware, and compared the learning systems' performance against domain-specific signal processing tools. The result was a best-in-class cough detector and tuberculosis cough sound discriminator. Training the deep learning model in the presence of confounding signals is also addressed, resulting in the development of a discriminative adversarial network to filter out information that the model should not take into account.
SpiroCall is a mobile phone based platform that allows for the analysis of common lung function measures (FEV1, FVC, PEF). By analyzing sound waves incident on the microphone of the mobile phone, we are capable of monitoring pulmonary ailments such as asthma, chronic obstructive pulmonary disease, and cystic fibrosis. My contributions to this project include signal processing and machine learning algorithms to estimate air flow from users' lungs across a wide range of clinical situations.
My Master's thesis, titled "A Fresh Look at Functional Connectivity", proposed a new application of pre-existing mathematics toward analysis of neuroimaging signals such as those captured by electro- and magnetoencephalographic (EEG/MEG) systems. The work applied time-varying statistical signal processing methods toward characterizing functional connectivity in the brain of subjects performing a visual search task.
HydroSense is a pressure-based sensor that automatically determines water usage activity and flow down to the source (e.g., dishwasher, laundry, shower) from a single non-intrusive installation point. I worked on this project while I was an undergraduate, adding signal-level features to machine learning classifiers, performing experiments and collecting data in a variety of settings and building visualization platforms for real-time pressure transient classification.
I was contracted to build a realtime data collection/analysis system by Centrotherm USA for usage in their chemical engineering research. The system's fanciful name notwithstanding, I designed and implemented it to control and read off of dozens of sensors simultaneously across a variety of modalities including SOLO sensors communicating via Modbus over TCP and interfacing with Gas Chromatography and Fourier Transform Infrared Spectroscopy instrumentation. The sensor readings were streamed into a database and plotted, live, through an interactive web-based data exploration environment custom-built for this application.
Email: staticfloat (at) gmail (dot) com (GPG public key, SSH public key)
Leave a voicemail at +1 (206) 414-8216
Find me on Github or Stack Overflow.
Download my Curriculum Vitae.