Autonomous Drone Parking Patrol
This project was my undergraduate capstone project. My group and I developed a drone-based system to autonomously patrol parking lots and use license plate recognition technology to enforce parking permits. Our system used a DJI Mavic Pro running custom firmware, with a field-based Android device linking back to a central server. This system offered a fast, cost-effective, highly scalable solution to parking enforcement, especially on large scales such as a university campus.
Hardware Fuzzing
Hardware fuzzing is a recently developed technique for identifying vulnerabilities in hardware designs. Since March of 2023, I have had the opportunity to work on a hardware fuzzing project in the SeTH Lab at Texas A&M University. The basic concept of hardware fuzzing is to generate random inputs to a hardware design and observe the outputs. By doing this we can identify any misbehavior in the processor to find vulnerabilities. This is a very new field of research, and I am excited to be able to contribute. You can read more about our hardware fuzzer, TheHuzz, on the SeTH Lab website.
Multi-threaded Web Crawler
Web crawlers are used to explore the internet and collect data. Using an object-oriented approach, I developed a multi-threaded web crawler in C++ for scraping links from HTTP/1.0 websites. The crawler honored robots.txt files and was proven to scale to over 5000 threads and explore millions of links. This project used extensive memory and thread management to ensure that the crawler was efficient and scalable.
Full-stack Restaurant Inventory System
This was a group project used to explore software engineering princples. In the first phase of the project, we developed a desktop GUI application using Java. The application would be used as a complete restaurant system, allowing cashiers to take customer orders and managers to view inventory data. Placing an order automatically updated inventory levels, which were stored in a SQL database, and managers could view sales data and inventory analytics, such as popular items. managers could also update inventory levels and add new items to the menu.
In the second phase of the project, we developed a web-based version of the application using Python Flask and JavaScript. The web application expanded on the functionality by including a customer interface for placing orders online, as well as a real-time order status display for kitchen staff. The web application was developed using the Agile methodology and was hosted on a cloud server. This was an excellent exercise in teamwork, software engineering princples, and full-stack, end-to-end development.
Custom Linux Peripheral
In this solo project, I created a hardware peripheral for a linux system and then developed a driver to interface with the peripheral. The peripheral was a simple multiplier designed in Verilog. The driver was written in C and interfaced with the peripheral using memory-mapped I/O. The driver was able to send data to the peripheral, receive the result, and then display the result to the user. I designed and tested the system on a Xilinx Zynq FPGA. This project was a great exercise in hardware-software interfacing and low-level programming.
Reliable Network Protocol
I created a reliable network protocol in C++ as an exercise in networking and distributed systems. The protocol was modeled after TCP and included features such as connection establishment, pipelined data transfer, and fast retransmissions. The protocol was designed to be reliable and efficient, and it was tested in a simulated network environment. This project was a great exercise in networking and distributed systems.
Classic Mustang Restoration
My dad and I have restored a 1970 Ford Mustang. Beginning with a rolling shell, the car has been entirely rebuilt to near original condition. Entirely rust-proofed and repainted, the car has a new interior and a 4-speed manual transmission. The only non-original components are an amplified bluetooth stereo system and 1990 5.0 roller engine with a 4-barrel carburetor, which we rebuilt ourselves for upgraded reliability and performance. The car has become my daily driver and has fueld my passion for old cars and hands-on work.
Digital Tachometer
This was a fun project that combined my love of cars with my passion for engineering. Using an Arduino Nano and a handful of hobbyist electronics, I built a digital tachometer for my car. The tachometer is a device that measures the RPM of the engine. By wiring the ignition coil through a filter to the Arduino, I was able to measure the frequency of the ignition pulses and calculate the RPM. I then used a 7-segment display to display the RPM on the windshield as a heads-up display, as well as a strip of colored LEDs. This was an extremely fun project that allowed me to apply my engineering skills. Ultimately, my tachometer proved to be too distracting and only moderately accurate, but it was a fantastic project nonetheless.
Home Automation
Almost everyone has some form of home automation nowadays, whether it's a smart thermostat, a wifi-controlled lightbulb, or an Amazon Echo. I took this even further and built a home automation system from scratch. Using a Raspberry Pi and a platform called "Home Assistant," I created a Z-Wave network to control my bedroom lights, my window blinds, and my front door. The system has some awesome capabilities, like scheduling the blinds to open at sunrise, or turning on the lights when I walk in the room. I learned a lot by building this system and had a great experience interfacing software programming with real-world devices.