I'm a computer science graduate student at Columbia University; I currently work at Databricks on the Delta team. I previously worked at Amazon in Alexa’s Natural Language Understanding Engine team. In recent news, I've picked up functional programming, attempted writing Linux device drivers in Rust, and partially implemented a NES emulator on an FPGA. In my spare time I enjoy fishing, backpacking, climbing, (really anything outside), and learning new things (currently trying out Coq!).
My site currently uses CSS media queries to render in either light or dark mode. If you would like to see the other, just toggle your operating system's preferences. (I hope to implement a lightweight manual toggle for this sometime soon!)
I led a team to develop a Nintendo Entertainment System emulator implemented on a DE1-SoC FPGA. The system is a hardware emulator implemented in SystemVerilog, but it communicates with the onboard HPS running Linux in order to load ROM's and debug the system. It's still a work in progress but I'll be releasing the source soon.
I developed a parallelized two-dimensional smoothed particle hydrodynamics simulation in Haskell. The solver loosely implements Muller et al.'s "Particle-based fluid simulation for interactive applications." It realized a 5.13x speedup on 6-core CPU. I ported this to Rust and I'm hoping to set up a WebAssembly demo as well. [paper]
I TA'ed for a number of courses while I was in undergrad and grad school and noticed that I often wished for a better means of queuing students during my office hours. One weekend, I threw together a web app (and accompanying admin CLI) for queuing students for my office hours. It uses the Rocket web framework and Server-Sent Events for real-time updates. [source]
In an effort to make students' reviews of professors more accessible (there were large reports released by our institution which were indigestible), we made a web app to aggregate and present public student reviews in accessible visualizations. Shared project with Sam Jett and Joe Lovoi. [Seeking maintainers/contributors, email firstname.lastname@example.org if interested!] [source]
Most of my projects are hosted on Github, so in an attempt to not rely too much on a single point of failure (or control), I made this application to backup all Github repositories to a local disk. I keep a two hard disks in RAID 1 on my home server, and run this program a cron job to continuously backup all my repositories from Github.
For a project during my undergrad, I created a retro space-shooter video game on an NXP LPC1769. It used a Playstation 2 controller and 7" LCD Display via SPI. The LCD Display relied on an Adafruit Display Driver (RA8875) and a heavily modified version of the accompanying Adafruit C++ library. [poster][paper]
I developed a time-series prediction algorithm for cryptoasset value momentum forecasting for my final project in CS5043, Advanced Machine Learning, at OU. It won third place in the poster presentation competition at the Artificial Intelligence and Machine Learning Symposium at OU. [poster]
I was awarded a Teaching Assistant Fellowship for a graduate-level operating systems course focused on Linux kernel hacking. My contributions included developing automated grading infrastructure, some of which relied on nested virtualization to automatically compile students' kernels, run tests, and gracefully crash/report.
I was a Teaching Assistant for a graduate-level compilers course with major programming assignments hacking on LLVM. This included various focused on teaching compilers, programming languages, and program analysis through hacking on the LLVM infrastructure. Students implement new pieces of Clang/LLVM compiler.
Teaching Assistant for junior-level class focused on a semester-long hovercraft project comprised of embedded control for custom hovercraft vehicle frameworks. Students built and programmed a semi-autonomous robot reliant on PID control for accomplishing various tasks/challenges.
I have made a handful of contributions to open source projects, mainly in the realm of tooling, systems software, etc.