Here are some of my favorite personal projects I have worked on over the years!
Starting in 2016, I built my own self-stabilizing quadcopter entirely from scratch. It is powered by an Arduino Uno, and communicates
with a Raspberry Pi to recieve flight commands. The drone self calibrates each moter via photoelectric encoders to ensure accurate thrust responses. It also uses a kalman filter to clean the IMU data to improve sensor reliability. While this
is still an ongoing project, these features create an ultra-smooth final flight.
Physics and Rendering Engine
This project is a 3D rigid-body physics engine written on top of a previous rendering engine that I built in Java.
Once again, this is entirely written from scratch apart from the LWJGL API. The GPU accelerated collision engine uses a simple non-differential algorithm to determine point intersections, offering an improved performance over conventional approaches.
This engine can model any 3D geometry with an estimated mass and inertia distribution given that the computer has adequate specifications. Here is a demo
EquationSolver is a Java program that can approximate imaginary solutions to almost analytical equation. It uses an approach
inspired from the YouTube channel 3blue1brown
. I developed my own library to handle complex number operations and designed a compiler that would
parse a user-inputted equation into quickly executable instructions. This was an improvement that I thought of after designing a similar system for Somsed
. This program
generates an image that describes the translation of the input space to the output space of the equation that it's solving.
TerminalSplitter is a GUI library written in C/C++ that splits the traditional command line program output into three separate
windows. This was created to monitor and send separate commands to multiple processors for my drone project. Each window is multithreaded and runs independently from the other ones. This is designed to be easily implemented into any C/C++ program
where splitting the terminal output is useful.
Pseudo Code is an educational web application whose purpose is to introduce programming to novices in an easy-to-understand way using a English-to-code
parser. It won the "Best Web Application" award in San Mateo Hacks hackathon in 2017.
Somsed is a web-based graphing calculator that can graph functions, solve systems of equations, row-reduce matrices, and perform statistical regressions.
Snake Solver is a brute force algorithm that runs a depth-first search over the solution space of the flash game Snake Slider
. This runs a full implementation of the flash game and can solve even the most complex levels in a few minutes.
GameSelect is a python program that selects the next board game to play based on player count, time, game rating, and when the game
was last played. It also stores individual preferences from the webiste boardgamegeeks and factors those in as well.