This is a collection of some projects I've worked on over the
years. Not a complete list, just the ones worth sharing.
First Spreadsheet
Built a spreadsheet for math class calculations
(volumes, surface areas, linear conversions)
First exposure to automation and formula-based
problem solving
I'm not sure how I first got introduced to spreadsheets,
but that's where I started. My first one was for grade 7
math. We were calculating volumes, surface areas, and
such of cylinders, so I made a spreadsheet for that.
Then linear conversions, and so on. I showed my math
teacher, and although he was impressed, he said don't
use it. I didn't listen.
Created a spreadsheet to track CS:GO Wingman match
statistics
Developed visual styling preferences for data
presentation
Next I thought, "Hmm, I don't need to exclusively apply
this to school. I can do it for video games." So I made
a CS:GO wingman tracker. I'd input data and get some
statistics out of it. It was pretty nice, and I started
developing a sense for styling, moving past the
ridiculous black, cyan, and white.
Created automated data pipeline updating master
sheet 24/7
Sold multiple versions for both in-game currency and
real money
Looking back, I definitely should have started moving
off of spreadsheets at this point, but it's really easy
to stick with what you know. I've since learned to push
past that. Anyway, continuing on the theme of video
games, I used to play Hypixel Skyblock a lot and was
interested in becoming very rich in it. There were
several money-making methods (some were grinding, but
the ones I was interested in were trading). So I made a
spreadsheet for it. The first versions were usable but
very hard-coded.
I used them, made lots of money, and actually sold some
versions. Then some people said, "Hey, you should redo
this but make it better, and I would pay actual money
for it." See, I was just selling it for in-game coins.
Okay, I'll do that. I made versions 1.1, 1.2, 1.3, 1.4,
and finally 1.5, my magnum opus. That's what I have
linked. It was a comprehensive spreadsheet that had
almost all the well-known money-making methods, plus
some obscure ones I'd discovered myself. It was a good
time. Lots of in-game coins were made, and on version
1.5, some real money too. But it's a spreadsheet. You're
not making thousands. It was just a couple hundred.
Funny story though! It's really hard to make a
spreadsheet into a webapp. The user needs to input data,
and there's no easy way to do that without giving them
access to ruin the whole thing. My workaround was to
have two linked spreadsheets that share data. One of
them imports data from another where the user has edit
access, and the other one (which the user looks at for
information) they only have view access. It was a good
workaround. You could easily swap out the input sheet,
and the datasheet was not editable.
Also, you may be wondering how you're getting live data
from this game using a spreadsheet? Well, let me tell
you, this spreadsheet had a backend. Yep, that's right.
I had a Python script running on my computer 24/7,
updating a master sheet. It would write to the cells,
and all spreadsheets of this project would import data
from that other master spreadsheet and filter and do
whatever with it based on the user's inputs. What a
time.
Reverse-engineered Skyblock.finance API to obtain
historical price data
Applied Fourier transform to identify cyclical price
patterns
Discovered strong daily sine wave in Booster Cookie
prices
Used signal processing for profitable trading
predictions
I then came across Skyblock.finance, and I didn't
realize how seriously people were taking this game. They
were spending money on spreadsheets, but using
TradingView on a video game? That's intense. Anyway,
turns out you can download their data, although they
don't have an official API. You can go under the network
tab, inspect element, and figure out how to send an API
request so that they give you all their data. So I did
that.
Now powered with this data, I started doing some
analysis. Around that time, I watched a 3Blue1Brown
video on Fourier transform and signal processing. It was
fascinating. I thought, "You know what else I could
apply this to besides pressure over time? Price over
time." So I tried it with the most popular item, the
Booster Cookie. Here's what I saw.
That bad boy had a strong sine wave with a frequency of
1 day, so I graphed a scatter plot normalized price over
time modulo 4, 2 then 1 day, and...
I started learning about finance, trading, quantitative
analysis, and different types of graphs. This was the
easiest way to make coins in this game. I couldn't
believe no one was arbitraging this. There's more demand
during certain hours, sure, but no one was balancing it
out by trading? The price would just swing through
predictable cycles. I felt like I was the only one
actually placing counter-orders, and I was making a
killing. It was incredible!
Items had their own obvious behaviors as well...
You could hop on for 10 minutes a day, trade some stuff,
hop off... but only for so long. Eventually I got tired
of the game.
Switch Up
First hackathon project
2D puzzle game developed with a team
Won Best Game award
My school had a hackathon, MasseyHacks. I'd never been
to one before, and I had very little experience making
games, but my friend did. So we made a game. It's called
Switch Up, and we won Best Game. It was a small
hackathon, high school, local (about 100 hackers), so it
wasn't that competitive, but we made a cool project with
a cool idea.
Built a painting application with extensive features
Implemented flood fill algorithm for pixel filling
Used binary search for text sizing
That was in 10th grade. Then in 11th, I took CS. I
actually tried in 10th grade to take CS, but all my
friends got it and I ended up with Media Arts. I
actually really enjoyed that class though. For my grade
11 midterm project, I made a paint app,
SpongeBob-themed... for some reason. I implemented a ton
of features. Learned about flood fill for filling
pixels. Very exciting. Used binary search to size text.
I was doing LeetCode on the side, if you couldn't tell.
Built an arcade with three games: Chess, Connect 4,
Pac-Man
Developed chess engine with minimax, alpha-beta
pruning, iterative deepening
Achieved hundreds of thousands of positions searched
per second
Applied same adversarial search algorithms to
Connect 4
For the final, I built an arcade with three games. My
favorite was chess: I implemented all the rules and game
logic from scratch, then wrote a chess engine you could
actually play against. It was Python, so expectations
were low, but it ended up searching hundreds of
thousands of positions per second and playing
surprisingly well. Well enough to beat me, at least,
though my friends who actually knew chess made quick
work of it. Learned a ton about minimax, alpha-beta
pruning, iterative deepening, and heuristic design.
I used the same core logic for Connect 4. Since Connect
4 is a much easier game, the bot destroyed pretty much
everybody. It hadn't fully solved it. If you played
against an actual perfect Connect 4 solver, my bot would
still lose, but it was pretty good.
Last one, Pac-Man. I didn't really have any care for
Pac-Man, but one of my friends had done Pac-Man, and I
just wanted to one-up him, so I made that in a couple
days and just added it to the thing. And that was my
FSE.
Built a Mars Rover prototype with gripper arm and
cameras
Won Best Overall at MasseyHacks
Extensive preparation; rules changed afterward
because of it
MasseyHacks was being hosted again, so my friends and I
went and this time we brought home Best Overall. We made
a Mars Rover with a gripper and arm that moves around
and cameras on it.
It was the kind of project you'd normally spend a month
on, but we got it done in a day. My first real
all-nighter. No cheating though: we followed the rules,
we just came way more prepared than anyone else. They
actually changed the hackathon rules after that. You
know you did something right when they have to rewrite
the rulebook because of you. ;)
Research Assistant at University of Windsor AI
Robotics Center
Developed autonomous pollination robot with 6-DOF
arm
Trained YOLOv8 and Faster R-CNN models for blossom
detection
Implemented camera-to-arm SE(3) calibration for
targeting precision
Optimized vision pipeline for Jetson Orin Nano edge
inference
And then that summer, grade 11 summer, I was a research
assistant at the University of Windsor. They call
themselves AI Robotics Centre (it was in the
Mechatronics Lab). The prof that was overseeing me
basically just said, "Hey, we have this robotic arm and
we have this Intel camera which has three cameras: two
IR and one RGB, so it can detect depth. Combine these
two and make it act like it's pollinating these
flowers."
I did it, learned a lot, fine-tuned YOLO and RCNN
models, tested them, compared them, did some vector math
transformations since the camera could be facing a
different direction and needed coordinate conversion. It
was a great experience, and the project finished
successfully. Here's a press release, GitHub, and some
images as well.
Created VS Code extension for batch file
concatenation
Solved personal pain point of copying multiple files
for AI tools
And this is about the time where AI and stuff was
getting pretty popular, and in coding, I really wanted
to be able to quickly copy and paste a couple of files,
but I kept having to switch between them (Ctrl+C, paste
into a Notepad, switch file, Ctrl+C, paste into
Notepad). So, I made a Batch Concatenator, which is a VS
Code extension that automates all that for you.
I took CS in grade 12 as well, and for the midterm, I
made the retro game Frogger (pretty popular game) and I
tried to stick to the original as closely as possible. I
think I did pretty well.
Full-stack Flask/SQLite application visualizing NASA
Earth data
Implemented geo-anchored issue markers and chat
threads
Integrated AI farming assistant
Global Nominee for NASA Space Apps Challenge
Then we did, my friends and I, NASA Space Apps 2024. We
were doing the agriculture topic and we made My Farm,
which I wouldn't say farmers would actually use it but
it was a cool idea. Farmers could make issue markers and
talk to each other about issues they had locally. There
was also a chatbot they could talk to as well. Very cool
stuff. Also, there was a car which could dispense seeds
or something. There was a lot of stuff.
Built autonomous robot with SLAM algorithm from
scratch
Implemented LiDAR-based particle filtering and
log-odds mapping
Achieved 50mm error at 100Hz
Learned microcontrollers, networking, C++ hardware
programming
For my grade 12 final, feeling ambitious, I thought:
"Here's a group project. I have a friend who knows
hardware. What if we make a Roomba from scratch, and all
the algorithms from scratch too?" He said, "Alright,"
and I made a SLAM algorithm, he the car. I learned a lot
about microcontrollers, networking, and C++ hardware
programming. Learned about occupancy grids and log odds.
Using logarithms to represent probability is pretty
clever.
We made a simulation to test it out, then tried it on
hardware as well. Unfortunately, no videos of its actual
mapping, but trust me, it works. It's disassembled now,
so I can't exactly prove it.
Created browser userscript for Bomb Party word game
Suggests words containing required letter sequences
500+ downloads on GreasyFork
Then my friends and I started playing Bomb Party! It's a
game where you're given a sequence of letters and have
to write a word that contains that sequence of letters.
You know, if a computer has a dictionary and it knows
those sequence of letters, it could do pretty well! So I
made a helper for Bomb Party! And I posted it on
GreasyFork, and it has like 500+ downloads. Pretty
cool... I never expected that to be popular!
VR-style game using projector and real-life ball
tracking
Implemented stereoscopic vision for 3D position
tracking
Zero preparation: improvised on the day
Then we did MasseyHacks again! Best Overall again! This
project was zero preparation. We just brought in a
couple cameras and 3D printed some mounts. We had a
projector but figured everything out on the day, and
this is the coolest project I've ever made. It was
virtual reality projected into real space. You throw
real balls at a projected game, and the cameras track
them with stereoscopic vision. Just watch the video,
you'll love it.
System converting any display into a touchscreen via
stereo vision
Achieved 60Hz hand tracking using OpenCV MediaPipe
Developed low-latency web server for dual camera
streaming
Built ArUco-based calibration tool
Riding high from that project, I thought: let's try it
again but more general for Hack the North. Except don't
repeat projects. It's not a good thing to do. We lost
motivation. This time we were much more rigorous: smart
calibration, precise smoothing, Windows clicking
integration, gesture recognition. But when you repeat a
project, you don't feel the same passion. It wasn't the
same project technically, but it felt like it. We didn't
win, but it was a fun time, and hackathons are always
great.
Chrome extension for automating Google Calendar
event creation
Built to manage University of Waterloo events
Published on Chrome Web Store
There are a lot of events at Waterloo, and it's hard to
keep track of them, so I started using Google Calendar.
It's so annoying to manually add events, so I made a
Chrome extension called Eventy. Check it out. It
automates all of it.
Full-stack auction arbitrage system with WebSocket
broadcasting
Trained RandomForest model (500K samples) with
isotonic calibration
Achieved 50-100x speedup via batch inference
Applied Kelly criterion for flip scoring
The latest project I'd consider semi-complete is
eValuator. I collected a bunch of data on the Skyblock
Auction House over one month, specifically looking at a
certain category of items. I built a random forest model
that predicts the probability that an item with given
specifications will sell at a specified price, and
eValuator uses this model to find arbitrage
opportunities on current listings. Very easy way to make
coins in Skyblock! But I don't play anymore. I'm just
interested in machine learning.
I joined Wat AI my first term at Waterloo. We are building a miniature
race car that learns to drive using reinforcement
learning. We've been training it in simulation, and we're going to deploy it on a
Raspberry Pi with real sensors. Should be fun.
Wat Street
Quantitative finance design team
Working on market regime detection
Also joined Wat Street second term. We're working on market regime
detection, basically trying to classify what "mode" the
market is in (steady growth vs crash mode vs choppy
sideways action) so strategies can adapt. Started January so let's
see how it goes.
TalkingML
Educational blog about machine learning
Collaborative project with a friend
Teaching ML concepts through written tutorials
Most recently, I'm working on a blog with a friend
called TalkingML. I hope to learn a lot about ML and
write blog posts about what I've learned, to teach
others or at least provide a reference. That's where I
am now.