Professional

  • Hard Disk Failure Predictor


  • Role(s): Intern, Lead developer
    Skills: Machine learning, scikit-learn, fast.ai, technical writing
    Description: I leveraged machine learning to create a classifier that inputs raw S.M.A.R.T. attributes and predicts if the disk is likely to soon fail. Using a real-world dataset from Backblaze, we achieved a precision score of 0.97 when trained over 120,000 disks of numerous models and manufacturers.
  • Test Bed as a Service (TBaaS)


  • Role(s): Intern, developer
    Skills: Docker, Python, Celery, cloud computing
    Description: For more consistent, reproduceable testing, ADTRAN uses an internal IaaS system that allows for the dynamic creation, utilization, and deletion of testbeds that often involve clusters of virtual machines. Test Bed as a Service (TBaaS) is that system, working as a cloud service running on top of Docker. My involvement included daily maintence of the system, intefacing with internal customers, and developing new features like test bed expiration.
  • Firefly node-admin


  • Role(s): Intern, developer
    Skills: Python, cloud computing
    Description: ADTRAN's Firefly product is designed from the ground up to be a distributed, cloud-based networking management app. As such, it needs substantial tooling to create and manage the clusters it runs on. The node-admin tool allows for the provisioning and configuration of individual pieces of a Firefly cluster. My involvement included a substantial refactoring of the tool making it much easier to understand and extend the tool's codebase.
  • Firefly Gradle Build Plugin


  • Skills: Gradle, Groovy
    Description: The Firefly product follows a microservice architecture, and individual installs vary vary tremendously. As such, a special Gradle build plugin was developed to facilitate the processes. My involvement included improving the plugin such that the final binaries utilized 50% less disk space than before.

Research

  • VectorDefense: Vectorization as a Defense to Adversarial Examples


  • Role(s): Co-author
    Skills: TensorFlow, deep learning
    Description: Deep neural networks are highly susceptible to being fooled by small perturbations in their input, known as adversarial examples. We propose a new defense to adversarial attacks that involves converting the bitmap imapge into a vector graphic using the popular Potrace algorithm before converting back and classifying. This simple preprocessing step has a substantial benefit to preventing the effectiveness of adversaries, as we demonstrate compared to numerous attacks and defenses on the MNIST dataset.
  • Survey on the Robustness of Neural Networks to Adversarial Examples


  • Role(s): Lead author
    Skills: Technical writing
    Description: Deep neural networks are extremely performant on a wide range of machine learning tasks, but can be easily fooled by small changes to the input. These "adversarial examples" pose a serious threat to deep learning's ability to be fully leveraged in real-world environments. We take a comprehensive look at the state of research into adversarial examples in deep learning, looking at the different attacks, defenses, and theoritical hypotheses.
  • MPIgnite: An MPI-like Language and Protytpe for Apache Spark


  • Role(s): Lead author
    Skills: Apache Spark, MPI, HPC, cloud computing
    Description: Task-parallel code common on modern supercomputers relies heavily on the Message Passing Interface, or MPI. However, MPI is very low level, requires intimate domain knowledge, and is difficult to refactor. We take the spirit of MPI and implement a similar API into the Apache Spark data processing engine. Without compromising Spark's strength of data-parallel capabilities, we introduce a flexible system that also allows for MPI-like programming in a popular cloud platform.

  • MCGPU: Monte Carlo GPU Chemistry Simulator

  • Role(s): Intern, core developer
    Skills: C++, OpenACC
    Description: MCGPU leverages GPU programming to accelerate chemistry simulations. In the Monte Carlo simulation, the energies between and within molecules needs to be repeatedly calculated as the dynamics of the system shift. These operations are highly parallelizable, and thus well-suited for the GPU. My contributions to the project involved substantially refactoring the system, making it easier to understand and expand, as well as introducing new intra-molecular energy calculations to the system.

Personal

  • AUACM.com

  • Role(s): Project lead & core contributor
    Skills: Full-stack development, AngularJS, Flask, MySQL, GitHub
    Description: Full stack website for the Auburn University ACM student chapter. Also served as a platform for ICPC competitive programming practice.
  • auacm-cli

  • Description: Command-line interface to the REST API of the auacm.com for competitive programming practice.
  • ICPC Competitive Programming

  • Skills: Java, Python, C++, team collaboration
    Description: Algorithmic challenges to be completed in a timed, team-based environment. Repository of solutions to problems from various sources (HackerRank, Kattis, etc.)

School

  • Senior Design: Auburn Facilities Management Web App


  • Role(s): Backend lead, frontend contributor
    Skills: Full-stack development, jQuery, Flask, REST API, GitHub, technical communication
    Description: For our senior design project, we were tasked with meeting with a professor from Building Science to design a technical solution for his research project. Building designers utilize Navisworks 3D design software, and builders and maintainers document parts and specifications elsewhere. We sought to integrate the underutilized digital design documents with the day-to-day information necessary to keep university buildings running. We designed and implemented a client-server application with a web app for easy modification of information that leveraged a REST API that could easily be consumed by the Navisworks applicaton.