Spring 2021: Defended and transitioned to full time at Sandia National Laboratories. Released software for work on re-hosting, emulation, and binary analysis can be found at https://github.com/halucinator. All code was uploaded by the group lead even though I wrote it.
Fall 2020: Continued work with GHALdra, preliminary exam on Tools for Static/Dynamic analysis and System Emulation passed! Paper accepted to CSUR. Internship at Facebook. Using Polyhedral Model Static Numerical Analysis for large scale vulnerability analysis on millions of lines of code. TA for Compilers course.
Summer 2020: Continued work on GHALdra, Function Matching(PMatch), Vulnerability discovery
Spring 2020: First alpha state of GHALdra emulator and Function Matching in Ghidra using PCode(PMatch).
Fall 2019: Continue work with Sandia on Binary Analysis and System Emulation
Summer 2019: Instructor for ECE368 at Purdue University. Working at Sandia National Laboratory on Static/Dynamic Analysis to aid in System Emulation.
Spring 2019, TA for ECE368. Continuing work on genome assembly and Bioinformatics DSL. Paper Accepted to AlCoB
Fall 2018, TA for ECE468. Continuing work on genome assembly.
Summer 2018, I worked at Pacific Northwest National Laboratory in Richland Washington. I worked on a new assembly algorithm that we hope to publish soon.
Spring 2018, I continued work on bioinformatics framework and DSL.
Fall of 2017 I was the TA for ECE468 compiler construction. I also continued work on a library for the bioinformatics framework I have been working on.
During the Summer of 2017 I taught at Purdue University. I was the instructor for ECE368 - Data Structures and Algorithms, where I created the syllabus, slides, homework assignments, programming assignments, and tests. Received a student feedback rating of 4.5/5.
Fall of 2016 and Spring of 2017 I continued working on a DSL for SARVAVID and also worked on parallel de Bruijn graph construction and patching. We had a conference paper accepted to ACM-BCB and a follow up journal submission to BMC.
In May 2016 I started an internship at Lawrence Livermore National Laboratory in California. I worked on static analysis for MPI programs, using LLVM IR optimization pass to help determine communication patterns in programs at compile time.
In September 2015 I started working with PLCL and DCSL groups at Purdue University. I designed a new domain specific language for genomic sequencing called SARVAVID. I am currently working with Kanak Mahadik, Milind Kulkarni, Saurabh Bagchi, Jinyi Zhang and Somali Chaterji on the project. We had a paper accepted to ICS 2016, I was second author.
I used the C++ programming language to write a compiler for an object-oriented language similar to a C++. On this project I wrote the entire compiler using only the standard template library, from the scanner and parser to intermediate representation and code generation. I employed the Shunting-yard algorithm during code generation to accomplish order of operations intertwined with semantic actions. I then wrote an assembler and multi-threaded virtual machine to run the compiled code.
I worked on my own and developed a prototype laser tape measure that plugs into the audio jack of a phone to power a laser and a Texas Instruments MSP430 ultra-low power microprocessor. I used an iPhone 6 to power the device, which led me down the path of figuring out the impedance of the audio jack to then choose components in my circuit to maximize power transfer, as the perfect power transfer was only in the milli-watt range. I learned to program the microcontroller to have very low power needs while also pulsing a laser, all while interacting with the iPhone through a self-programmed IOS application using the microphone line in the audio jack.
In January 2014, I worked on a heart-monitoring sensor to mimic the Fitbit Flex band. I designed and built the heart rate and oximeter sensors for the band using minimal hardware costing less than $5. When we got to the prototype stage though, multiple other wearable bands came out and because of battery cost the project was no longer marketable.
In the 2013-14 I worked on an independent research project to study and program compression algorithms used in industry, while attempting to speed up the compression process while maintaining data accuracy. This project caused me to become familiar with multiple programming languages including C, C++, and Java. By the end of the project, I had programmed LZ77 and LZW compression algorithms in C++ with benchmark timing to enable future students to make tweaks to code to test speed-up in comparison to a baseline.
In 2013, working with a group developing a direction-finding antenna device for the automotive industry, I used MATLAB and the C programming language to implement the MUSIC (MUltiple SIgnal Classification) algorithm to determine the direction of an incoming signal on an Arduino board.