ObfuscatedBinaryClassifiers (GitHub)

Some of my recent Ph.D. research in reverse engineering for obfuscated binary code.

HDL Online (website)

A basic online editor for the hardware description language called simply HDL from Nand2Tetris. The URL updates with a permalink to the code as you edit, for ease of sharing.


Simple Scene Classification (PDF)

A machine learning project.


A Convolutional Neural Network (CNN) to classify two types of image ("simple" versus "regular" scenes). The images were taken by infants wearing head-mounted cameras, and researchers wanted to know if younger infants prefer "simple" scenes. My contribution was to provide an automatic image classification system so that researchers don't have to spend so much time labeling images by hand.

GPU Support for J (PDF)

Adding a GPU interface to an interactive/interpreted programming language. mm_only.png

This was a project for a class called "High Performance Computing". It uses J's foreign function interface (FFI) to call ArrayFire functions. With compatible hardware, this speeds up certain operations. This work was a proof-of-concept intended to find a "cross over" point where the acceleration of the GPU offsets the latency of transferring data from CPU to GPU.

Obscura (Chrome Extension)

This extension is a simple filter that makes web pages darker. The reason I made this was in response to the complexity of existing solutions.

obscura_off.png obscura_on_gray.png obscura_on_orange.png

Psych-Button (USB keyboard. source code here)

Programmable keyboard-like user response device with sub-millisecond accuracy.


A graduate student needed something with 4 "normal" buttons and a "home" button with sub-millisecond timing resolution. The "home" button is my favorite part. It is a screw conductively coupled to a capacitive-sensing pin on a Teensy LC, with a library to make it behave like a pushbutton switch.

The Skinny (embedded system)

Measures and records skin conductance levels.


Myself and another engineer built 30 of these for an honors-level Psychology course at Indiana University. The device records skin conductance between 2 electrodes and logs the data to a micro SD card. Students devised their own experiments around the device, and presented their results at the end of the course. Experiment topics ranged from "watch a scary movie" to "listen to your favorite music".