This page contains projects in many domains of the software world that I have worked on. You may find that my earlier projects were mostly web based, as in my first and second year I decided to dip my feet into various areas to discover what I like best.
I ended up liking the embedded/firmware space the most, so I decided to explore more in that field and get my hands dirty with hardware!
Table Tennis Robot
Schematic layout of the master and slave ESP32s
This robot was built to compete in the 2026 FAS competition. I developed the firmware, allowing two ESP32s to wirelessly communicate via remote-control. Teammates who worked the eletrical/mechanical/CAD side are Connor Chai and Daniel Jenkins.
The robot has pitch and yaw control as well as an indexer to shoot balls one by one from chutes. There are two versions. The first version being written with the Arduino library which was chosen for quick prototyping for the competition, and the second version which uses the official ESP-IDF library which allowed me to learn more about what happens behind the scenes of the arduino framework.
Stack: C++, FreeRTOS, ESP-IDF API, ESP-NOW Protocol, 2x ESP32, and a bunch of eletronics
Project Repository (Arduino Library, V1.0)
Project Repository (ESP-IDF Library, V2.0)
Project Debrief
I learned a lot about the ESP32 architecture and how timers, channels, GPIO pins, pull-up resistors and buttons work. My notes on ESP32 are here.
Following the competition my teammates and I strived to learn and grow from our mistakes and create version 2 of this robot. Analyzing our past work, there were two key mistakes we made:
- Underestimating complexity of a “simple” project
- Unorganized wires, which lead to multiple shorts
The first mistake reminds me of the book “The Mythical Man Month” by Fred Brooks, specifically with the fallacy of software schedules and assigned project deadlines are often optimistic or disconnected from reality. This hits the bullseye when it was crunch time to complete the robot. There were many delays and fatal mistakes which resulted in tasks being pushed back further. The complexity of this project was revealed through the act of doing: building the project in collaboration.
The second mistake was because of the complexity. There were many wires and when we had to resolder or re-CAD a part, it took longer than expected to figure out the order of the wires again. Quick solutions we had were to label them with colour and tape. This mistake resulted in multiple shorts and a few close calls. What’s engineering without making mistakes?
Moving forward with version 2 of this project, we have the following redesigns in mind:
- Custom PCB with molex SL connections to avoid wires from leaving the breadboard and to avoid the need to solder
- Create a more efficient robot design and custom case for the controller
- Swap buttons for ADC joysticks
SFU Course Map
This project was made during StormHacks 2025. It is an interactive map that shows the prerequisites for a specific class at SFU. It uses sfucourses API, which is a wrapper over SFU’s official API and is more user-friendly. sfucoursesAPI was built by Brian Rahadi.

- Won “Best Use Of sfucourses API” category
Stack: TypeScript, D3.js, Next.js, sfucourses API
Summation Game
Stack: Java
FlowSense
Stack: React Native