I'm a Computer Science major at the University of Illinois at Urbana-Champaign, hailing from scenic Versailles, Ohio. I love to write programs and make websites, which I accomplish by making interesting projects, including both software and hardware. I also enjoy working on theater lighting.
I have a wide array of skills in computing, ranging from web development to systems/embedded programming and hardware design:
- Systems: C, C++
- Scripting: Python
- Web backend: PHP
- Databases: MySQL
- Assembly: MIPS, Z80
- Version control: Git, SVN, TFS
- HDL: Verilog
- EDA: EAGLE
- Varying experience with many other technologies
As a member of SIGMusic, I have worked on two versions of a wireless lighting project that has been demonstrated at Engineering Open House. The first version, in 2015, was to control eight RGB LED floodlights via Bluetooth-connected Arduino Pro Minis. It was controlled by a websocket server written in Python. While this setup mostly worked, we decided to improve it for 2016.
The second version used the same RGB LED floodlights, but with more suitable hardware and software. I designed and built an improved logic board for the lights and used nRF24L01+ radio modules instead of Bluetooth. I wrote a frequency hopping algorithm in addition to a multiprocess websocket server in C++.
In the future, I plan to improve the radio network reliability and the server's performance. SIGMusic's goal is to eventually write several applications that can make use of the lights and to make them into an art installation.
For our class project for CS 411 (Databases), my group and I made a website called ClassMaster that tracks enrollment statistics in classes at the Univeristy of Illinois. The server requests data for every class once per day.
Once the database had enough data to make informed predictions, I added the ability to predict future availability from past semesters. I also rewrote the codebase to make it more secure and maintainable. It is published at canitakethisclass.com.
A lighting technician on Broadway asked me to develop the firmware for a MIDI control device due to my experience with DMX-84. The Arduino-based device displays information on the LCD about the MIDI packets being transmitted. The packets can be blocked or passed through by toggling a button.
For the BoilerMake fall 2014 hackathon, my team and I developed a Verilog-to-Minecraft "compiler." It takes code written in Verilog (a language that describes how circuits are connected) and generates a representation of the circuit in the popular game Minecraft using redstone logic gates.
In February 2013, I started designing a peripheral for my TI-84 graphing calculator that would allow it to run theater lights over the DMX protocol. The idea is that the calculator sends changes in channel values to an Arduino, which processes the new channel value(s) while also transmitting DMX packets 44 times per second. The adapter is designed to be compatible with all calculators that can send data over the standard TI link port, which encompasses nearly all TI graphing calculators. I demonstrated the project at Engineering Open House 2014 using motorized DJ lights.
[+]launchpage link="Chrome Web Store"
In August 2011, I began work on an extension for Google Chrome to add a home screen of apps to the new tab page. In the summer of 2012, I finally published version 1.0 of Launchpage. I later published version 1.1, adding the ability to save any website to the home screen. In August 2015, I published version 2.0, making Launchpage follow Material Design principles, and made Launchpage open source. Below is a screenshot and a link to the published extension on the Chrome Web Store. The link includes more screenshots and a more detailed description of its features.
From March 2011 to March 2012, I designed and led others in building a portable training device as my Eagle Scout project for the Versailles Fire Department. Part of my project was documenting the setup and usage of the training wall through videos, available on YouTube, which are embedded below.
titleSoftware Engineering Interntitle
timeMay 2016 to August 2016time
description I developed significant portions of the secure boot ROM for a new SoC architecture.
titleSoftware Engineering Interntitle
timeMay 2015 to August 2015time
description I ported a software DMA coprocessor to run on an off-the-shelf RTOS instead of its original firmware.
[+]course_assistant at="University of Illinois"
titleCourse Assistant, CS 233title
timeJanuary 2015 to presenttime
description In the Computer Architecture course in spring 2015, I taught three lab sections, helped write the semester's SPIMbot competition, proctored and graded the midterm exam, and held office hours.
SPIMbot is a competition where students program MIPS assembly for a simulated robot to execute. The spring 2015 competition involved solving word searches to acquire energy and collect stardust to grow their planet bigger than their opponent's. I primarily wrote the memory-mapped I/O interface and puzzle solution checker.
In fall 2015, I taught three lab sections, proctored the midterm exam, and held office hours.
In spring 2016, I taught two lab sections, assisted with a discussion section, and held office hours.
In fall 2016, I taught one lab section and held office hours.
titleWeb Development Interntitle
timeSeptember 2014 to January 2015time
description I developed a web app for the Medical division to replace the current color selector. Link: Medical Design Tool
titleSoftware Engineering Co-optitle
timeMay 2014 to August 2014time
description I worked as an embedded software developer, programming microcontrollers in C for products such as medical procedure chairs.
- Developed initialization & hardware interface code for a new PC board
- Fixed longstanding bugs and refactored code in USB interface board
- Wrote unit tests and test protocols to verify new software releases
- Wrote documentation for a complex product collaboratively with a subsidiary
- Created macros to automatically update SharePoint, saving 7 person-hours per year
timeMay 2013 to May 2014time
description I worked on several web development projects ranging in size.
- Developed HTML5 versions of 3 Flash color selectors, including deep mobile integration. Links: Medical, Dental, and Animal Health
- Developed new color selector from scratch, especially for use at tradeshows
- Developed HTML5 versions of 3 interactive Flash banners for mobile support. Link: midmarkanimalhealth.com
- Made media-rich promotional website available offline for sales representatives' tablets. Link: midmarkclinicalsolutions.com
[+]undergrad at="University of Illinois"
degreeBachelor of Science in Computer Sciencedegree
timeAugust 2013 to presenttime
- James Scholar Honors Program: Fall '13 to present
- Dean's List: Spring '14, Fall '14, Spring '16
- CS 225: Data Structures — A-
- CS 233: Computer Architecture (Honors) — A
- CS 241: System Programming — A+
- CS 374: Algorithms — B+
- CS 431: Embedded Systems — B
- CS 438: Communication Networks — A
- CS 439: Wireless Networks — A
- CS 498SL: Virtual Reality — A
- CS 423: Operating Systems Design — in progress
- CS 461: Computer Security I — in progress
- CS 465: User Interface Design — in progress
- Senior Thesis — in progress
[+]high_school at="Versailles High School"
timeAugust 2009 to May 2013time
class_rank1 of 109class_rank
- National Merit Finalist: 2012/13
- OESCA's Franklin B. Walter All-Scholastic Award: 2013
- Honor Roll: 9, 10, 11, 12
Want my résumé? Download the PDF.