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 of time modulo 4,
2 then 1
day, and this is what I saw.
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!
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, so I'm not upset
about it. For my grade 11 midterm project, I made a paint app, SpongeBob-themed for some reason, but 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 made an arcade with three games, my favorite being chess. I implemented all the rules
and game logic, then made a chess engine you could play against. It was written in Python, so expectations
were low, but it was getting hundreds of thousands of positions searched per second and playing decently well.
It beat me, but my friends who actually played chess, it didn't fare well against them. Still, it was a good
experience. I learned about recursive search functions, minimax, heuristics, iterative deepening, and
alpha-beta pruning. Cool stuff about adversarial search trees.
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 more of a project that you would do over the course of a month or several, but we got it done in a
day.
It was my first time not sleeping very much. No cheating though, we followed the rules. We had far more
preparation than any other team, and they changed the rules of the hackathon because of it. You know you did
well when they have to change the rules because of what you did. ;)
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, trained 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.
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 ChatGPT they could talk to as well. Very
cool stuff. Also, there was like 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: "There'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 we made a SLAM algorithm. 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. Technically, we remade a version of it at Hack the North, but
this one felt cooler. 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
Then I went to the University of Waterloo for Software Engineering. There are a lot of events at
Waterloo, and it's hard to keep track of them, so I started using Google Calendar. But it's so annoying to
add events manually, so I made a Chrome extension called Eventy. Check it out. It automates all of that.
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.
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.