B.S. in Computer Engineering
University of Illinois at Urbana-Champaign
Interactive Portfolio
Loading
Overview
I love working on many things computer related. I have a special interest in embedded systems, low-level
software, operating systems, and drivers. I also have a lot of experience in web development and several web
frameworks.
Research
Computer Security Research
During my time as an Undergraduate Research Assistant, I helped to analyze the results of the
effectiveness of a TCP addition that my mentor had created.
His addition is similar to the Proof-of-Work concept found in Bitcoin. When clients want to connect to a
server, they have to answer a challenge that the server sends them (how many 0s the hash should have),
and if they are correct, the client will get access to the server.
My work involved creating daemons in Python to run on the clients and attackers to see how much work
they would have to perform in order to get access, and capturing/plotting that data. We found that
around 16 bits of difficulty, the attackers didn't have enough compute power (in our test environment)
in order to connect to the server, so the clients were then able to connect.
The paper that my mentor wrote is going to be published in June 2019, which you can view
here.
Side Projects
Pebble Metronome
Visual Metronome is a metronome built in C designed for the Pebble smartwatch designed to let musicians
use a metronome in a variety of ways, including haptic feedback, a moving metronome arm, and a flashing
screen. It has customizable colors, can toggle on and off each of the time-keeping methods, and can jump
between common time ranges.
The app has been installed 600+ times. You can view the Appstore listing here.
Tiki-Toki CSV Script
A Python script designed to take a CSV file and format it
into the .TKI file needed for the Tiki-Toki timeline software to
work. Prevents bugs in the software from corrupting data that you enter into the system, because you keep
your data separate from the application.
Stabiliteeth
Stabiliteeth is a tremor-reducing toothbrush designed
for patients with Parkinson's, ALS, PTSD, or any disease that induces tremors. It is running on a Teensy,
uses 2 servos to allow for stabilization in two planes, and uses a PCB that I designed to connect the
electrical components. Our project got Best Real-World Project at the Illinois Engineering Open House 2018.
Thrmeaux
Thrmeaux is a smart coffee mug designed to help people prevent burns from drinks that are too hot, but
also prevent drinks from getting too cold. It features a bluetooth sensor that connects to your phone
and displays the temperature in the Android app, with customizable temperature ranges for different
drinks. When the temperature goes below the cold threshold, a heating element inside the mug warms the
temperature up until it is at the hot threshold, which prevents the mug from turning the heating element
on and off right at the cold threshold.
Thrmeaux was a project for the Viasat 2017 Intern Hackathon.
TLDR Bot
With so many long articles on the Viasat
Wikipedia page, it can be hard to know what article you are reading before reading most of the article.
So we built a backend server that would run some NLP algorithms to summarize the article into a couple
short sentences, so that the user could read our summary, and know whether it will be worth the read!
TLDR Bot was a project for the Viasat 2018 Intern Hackathon.
Bible Previewer
Bible Previewer is a Chrome and Firefox extension created to make it easier to read theological articles
without having to separately look up the bible verse references in the articles. The extension searches
for any bible references on a page, such as John 3:16-17, and turns the reference into a link, which can
then be hovered, and a popup will appear above the link showing the contents of the verse. The link can
also be clicked on to be taken to a bible website so that the verse can be read in more context.
RSA Chat
RSA Chat is a simple command line chat app that is fully encrypted. It adds random padding, so that
replay attacks can't be executed. This was a good experiment into encryption in C++ (which I have found
is very difficult). I used the open source library
Crypto++, because you should never roll your own
crypto system!
StandUp!
StandUp! is an app to get people to stop staring at their computers all day, never taking a break. It
is built using ElectronJS, which is designed to make
cross-platform app development easier. It features a reminder right before the break happens, and an
aggressive mode to prevent people from bypassing the break.
Classes
Digital Systems Lab
Digital Systems Lab
Created a 2 bit RAM unit, and a simple logical processor using TTL chips. Also used SystemVerilog on
an FPGA to create:
A simplified version of the LC3 architecture.
An AES cipher encrypter and decrypter.
PacmanX, a version of Pac-Man where you play as the ghost and catch the pacmen.
Computer Systems Engineering
Computer Systems Engineering
Functioning Linux Operating System complete with basic file system, scheduling, multiple terminals, command
history, and more.
Applied Parallel Programming
Applied Parallel Programming
Computer Organization and Design
Computer Organization and Design
5-stage pipelined LC-3b architecture with 2-level 4-way cache, data forwarding, hazard detection, and branch
prediction.
Distributed Systems
Distributed Systems
Created a complete distributed system in Go. Our system featured
A distributed GREP that would search log files across several machines
A SWIM-like failure detectore
A distributed file system that could store up to 1GB files, with replication
A stream processing system similar to Apache Storm
Computer Networking
Computer Networking
Created our own TCP client and server, complete with congestion control.
Created Link-State and Distance-Vector network layer update algorithms.
Created a simplified CSMA simulator.
Artificial Intelligence
Artificial Intelligence
Graph searching algorithms (BFS, DFS, Greedy, A*)
Alpha-beta and Minimax Gomoku agent
Machine learning number recognizer using Naive-Baies and a Multi-class perceptron
Q-Learning (TD and SARSA) and Deep Learning Pong agent, averaging about 13 bounces.
Control Systems
Control Systems
Created a stabilizing pendulum using a full state feedback controller with a decoupled observer.