Work Experience

Lawrence Berkeley National Lab

At LBNL, I created a processing pipeline for running MODTRAN in parallel on NERSC's Cori supercomputer. Using OpenMPI, I significantly reduced the iteration time for running MODTRAN on a full suite of test cases. I also created several utilities for managing, visualizing, and analyzing the input / output of this pipeline.


At Nelumbo Inc., I created systems for quantifying the propagation of frost and condensation of droplets on custom hydrophobic surfaces. For measuring frost propagation, I developed a configurable pipeline for analyzing multiple time series of images from frost & defrost cycles. For measuring droplet condensation, I tracked both droplet positions and radii within images individually and the behavior of droplets entering and leaving the surface.

Lamont-Doherty Earth Observatory

While working with the Lamont-Doherty Earth Observatory at Columbia University, I created and proved the viability of a novel method of data augmentation. This method was applied on a U-Net segmenting high-resolution satellite images of Antarctic fractures given only low-resolution images and labels for training.

Invenio Imaging

At Invenio Imaging, I created a Python framework for conducting validation tests on Invenio proprietary software and hardware and created tests covering a large portion of the software design spec.

Personal Projects


Vtrace is a simple voxel path tracer. A branchless DDA algorithm is used to accelerate traversing rays. It's written in C, and uses the OpenGL API. Vtrace uses a GLSL compute shader to perform the path tracing.


Emu is a simple and low-level programming language. Its compiler is written in Haskell and C++, and uses LLVM for code generation. Emu supports pure function semantic analysis and compile time evaluation.


Hummingbird is a simple rigid body physics engine. Hummingbird is written in C++, and uses OpenGL for rendering.


rml is a minimal machine learning library. rml is written in C and facilitates the training of arbitrary machine learning models. Currently, rml implements abstractions for basic tensor operations, tensor data types, dynamic computational graph generation, OpenCL support, jacobian calculations for individual operations, backpropagation, and stochastic gradient descent. A full TODO list can be seen on rml's GitHub page.


mnist-from-scratch is a from-scratch approach to training a deep learning model to identify numbers in images of handwritten digits. mnist-from-scratch uses only CUDA (C w/ the NVCC compiler) - no PyTorch, no Tensorflow, no Caffe! mnist-from-scratch is not meant to be extensible to other deep learning problems - it is simply a <500 line example of training a neural network from scratch.


glfw-voxel is a simple voxel-based rendering engine focused on speed. glfw-voxel is written in C, and uses OpenGL/GLFW for rendering. glfw-voxel optimizes chunk meshing to minimize faces that need to be rendered; it also uses frustrum culling. glfw-voxel uses the cglm linear algebra library.