Filters:
![My Pokemon Team](img/my-pokemon-team.png)
My Pokemon Team
web
Best pokemon teambuilder out there. Shows team weaknesses and strengths, and the sprites are animated.
![McGill SURE 2022](img/mcgill-sure-2022.png)
McGill SURE 2022
other - ML
My research on the multi-armed bandit (MAB) algorithms in a retail setting under the Summer Undergraduate Research Engineering (SURE) program.
![Four Way Pong](img/four-way-pong.png)
Four Way Pong
game
What's better than two players playing pong? Four players playing pong! You can also play against different levels of AI. Keyboard required.
![Let's Find Elie!](img/lets-find-elie.png)
Let's Find Elie!
game
Elie hides among a sea of other faces. Can you find him through 50 levels? Based on "Where's Waldo" and the Super Mario Bros DS minigame "Wanted".
![Hopping Mazes](img/hopping-mazes.png)
Hopping Mazes
game
Cross a maze then blow up the path behind you to win. Maze randomly generated with the hunt-and-kill algorithm. Uses Dijkstra's shortest path for the win condition.
![Glicko Simulator](img/glicko-formula.png)
Glicko Simulator
other
Generates random players and finds the most efficient way to rank them based on their Glicko-1 rating. Glicko is like Elo but every rating is also given a standard deviation.
![VaccineApp](img/vaccineapp-er.png)
VaccineApp
other - database
For my COMP 421 project, I created an app for booking covid vaccinations through these steps: 1) planned out the ER diagram 2) materialized it with SQL and DB2 3) connected it to a Java CLI menu through JDBC.
![Simple Filesystem](img/simple-filesystem.png)
Simple Filesystem
other
Implemented a Unix-style filesystem that can be mounted by a user in their machine for my last ECSE 427 (OS) assignment. Uses the FUSE wrapper. Doesn't support subdirectories :(
![ARM Stopwatches](img/arm-stopwatch.png)
ARM Stopwatches
assembly
Polling and interrupt-based stopwatches on seven-segment displays.
![ARM Functions](img/arm-2d-convolution.png)
ARM Functions
assembly
Wrote four functions/subroutines in the ARM language: factorial, fibonacci, 2D convolution, and bubble sort.
![Drawing Flags with ARM](img/captain-america-shield-vga.png)
Drawing Flags with ARM
assembly
Drew the Captain America shield and the PRC flag on a VGA pixel buffer.
![DNS Client](img/dns-client.png)
DNS Client
other - networking
If you know what DNS is, this is pretty self-explanatory. Made with python for ECSE 316. Can handle A, NS, CNAME, MX.
![UML Model and UI](img/hal-editor.png)
UML Model and UI
metamodeling
Use Eclipse EMF to design a UML/Ecore model and generate its code. Then implement a Java Swing UI editor for it.
![HAL to URN Translator](img/ucm-map.png)
HAL to URN Translator
metamodeling
Use ATL to translate the Home Automation Language (HAL), which is a domain-specific language (DSL), into User Requirements Notation (URN).
![HAL to HTML Translator](img/hal-in-html-view.png)
HAL to HTML Translator
metamodeling
Use Acceleo to translate the Home Automation Language (HAL), which is a domain-specific language (DSL) made with Xtext, into HTML. ECSE 439 group project.
![Breakout](img/breakout-block223.png)
Breakout
game
Recreated the breakout game using Java and UML diagrams for my ECSE 223 group project. You can even create your own custom levels.
![A* Pathfinding Bonanza](img/pathfinding-bonanza.png)
A* Pathfinding Bonanza
game demo
How can 50 people in a large room reach their destination without bumping into each other? Pathfinding is done with A*, agents replan to avoid bumping.
![HTN Planning Monster (AI)](img/htn-planning-monster.png)
HTN Planning Monster (AI)
game
Grab the treasure and bring it back to the start line to win. Treasure is guarded by a monster whos behavior is determined by an HTN planner. The arrows are mice guided by steering forces (boids).
![Cannon Standoff](img/cannon-standoff.jpg)
Cannon Standoff
game demo
Demo of custom physics (no Unity physics). The water and mountain is randomly made with 1D perlin noise. Balloon motion is based off Verlet integration.
![CLI Connect Four](img/cli-connect-four.png)
CLI Connect Four
game
Play Connect Four against a simple AI through the terminal.
![RRT Pathfinding](img/rrt-line-pathfinding.png)
RRT Pathfinding
other
Demonstrates with Python how to navigate to a destination with a rapidly exploring random tree (RRT). Agent can be a dot or a line.
![PID Control a Ball to Float](img/ball-simulator.png)
PID Control a Ball to Float
other
Blow air through a tube so that the ball can reach the target height. Uses OpenCV and a PID controller. Kalman filter on top of that if noise is added to the image.
![BMP Editor](img/bmp-overlay.bmp)
BMP Editor
other
Used C to create a CLI editor for checking metadata, resizing, and overlaying two BMP images -- such as dog and bunny ears on robots.
![Bounding Box Drawer](img/bounding-box-drawer.png)
Bounding Box Drawer
web
Very simple, you can draw boxes on images and label them. It even tells you the dimensions of your boxes. Could be useful for ML.
![Rideshare Android](img/rideshare-android.png)
Rideshare Android
other - mobile
A simple ridesharing Android app for our ECSE 321 project. Unfortunately not on the app store.
![Rideshare Web](img/rideshare-web.png)
Rideshare Web
web
An admin webpage for a simple ridesharing app for our ECSE 321 project. And it even has dark mode! For security reasons, I can't let you login :(
![Raspberry Pi Sense Hat temperature](img/raspberry-pi-sense-hat-temp.png)
Footnote
I plan on porting most of my projects to the web, so that you can better access it without downloading and executing any files.
The stuff I have here doesn't represent all of my work. I've also:
- worked on an assignment on GPS-guided drone simulation, the drone has to avoid urban tiles and efficiently cover arable and water tiles
- unit, integration, API, acceptance, non-functional, and UI tested a Java Spring PetClinic sample app for a group project
- wrote Java programs for my parallel computing class
- wrote C programs for a simple shell and user-level thread scheduler for my OS class
- coded up the 2D fast fourier transform (FFT) and used it to denoise and compress images for my signals class
- dabbled with the Raspberry Pi Sense HAT to display time, temperature, humidity
- participated in a 48-hour game jam to make a game called GUP, where you grapple up canyon walls to escape the rising water.