The projects that taught me everything

First of all, the title to this is obviously misleading. I havenā€™t learned everything. Nobody has. But these projects taught me how to be a better learner, and how to work my way through complex problems.

Intro

Ever since I grew up, my hobbies were primarily making stuff with technology. Whether it was troubleshooting errors for my family, or setting up a Minecraft server for my friends, I always enjoyed tinkering around and learning more about computers and what makes them work.

When I turned around 7, I started to write code. I remember, my first project was attempting to create a cheat for the game Club Penguin in Visual Basic. Despite it not working, I stuck to Visual Basic, creating little math games and cool programs that werenā€™t really that useful.

But I learned. I learned a lot. And most importantly, itā€™s something Iā€™ve enjoyed.

10 years later, Iā€™ve moved on to writing real code, for actual uses, and I still get the same happy feeling when I compile my program and it finally passes all checks, the same feeling I get when I finally get that React text-editor to work, and thatā€™s a feeling thatā€™ll never subside, because for me, project-based learning is something I can never get enough of.

Projects

The QHSS Times

Releasing this September, here are a few screenshots image description image description image description image description

To learn web development, I made a news frontend paired with a content management system. I never had much experience with ā€˜fancyā€™ frontend frameworks like React and Next.JS, but with enough skimming through documentation, I was able to gain a grasp on how to create a full, functioning website.

Some background: my school has a pretty big censorship issue, so towards the end of the year I developed this in hopes that it allows for ā€œfreedom of press,ā€ within schools.

Technical Details
Honestly I learned that I didn't really enjoy react as much due to the way it manages state. I've looked at examples of Svelte, and it looks so much nicer, so I definitely intend to use that for my next web project.

Nevertheless, I used Next.JS and React for this, using Chakra UI as a UI framework. Next-Auth handles authentication, and of course, Supabase is the backend! I used PrismaORM for creating schemas, which was pretty fun to learn.

Thereā€™s not much technical details to go into, a lot can be described with my prisma.schema file, which just shows the various models I use.


NYC COVID Tracker

https://github.com/Hypercoded/NYCSchoolsCOVIDTracker/tree/main/data_collection

One day, sitting in my class, I had the idea of creating a better COVID stats tracker for schools. NYC Schools had a very hard to use, laggy, website, and I wanted to collect data on schools and their COVID stats, to be displayed on a Discord bot.

Obviously, scraping the data for thousands of schools in NYC was out of the question. I realized, obviously, that this website has to get its data from somewhere, right?

After digging through Chromeā€™s Network Profiler, I found the holy grail, the NYC health API! I started tinkering around with it, opening the results in JSON prettifiers and attempting to decipher how it worked. Through trial and error, I was able to write a program which gathered API data and aggregated it to a MongoDB database for later analysis/display.

Technical Details
I remember discovering that some schools had different formats for storing data! It was only a handful of schools, maybe 5, and it taught me the important lesson of standardizing your data. Everytime I think of bodging a project together, I get flashbacks to how hard it was to deal with messy data, and I end up writing better, concise, code.

A World Without Time

Obviously, as a primarily CS-oriented student, humanities really isnā€™t my thing. My teacher then assigned a daunting task for our AP English Language final:

Create a world without clocks, and then describe what happens when clocks are introduced.

Despite being pretty bad at writing, I loved coming up with new ideas for fictional worlds and stories. I immediately thought of using Minecraft, a game Iā€™ve enjoyed for so long, to create the visuals. The game itself looks pretty bland and boring, but I decided to use fancy shaders to make it look fancy.

I went to work, both building a Minecraft world in game that replicated the fictional world I had in mind, and building a script, which represented the storyline I had in mind.

Hereā€™s a link to the final product: https://www.youtube.com/watch?v=bJ48UT-BnFs

The script was so much more fleshed out (by about 26 pages,) but I had to cut most of it out to fit a reasonably sized video.

This project taught me so much. From time management, to understanding what a realistic script looks like, to color correction. I truly loved every bit of this project. I got to experiment with different camera angles, using music to tell a story, and so much more.

Looking back, this project was extremely hacked together, and thereā€™s so much more I couldā€™ve done to improve it, but thatā€™s just the nature of learning and growing.

Sometimes you look back, and realize ā€œwow! this is garbage!ā€

But I like to think that to get where I am now, I had to make that garbage, and that the things I create now are just a stepping stone to making less garbage videos.

Technical Details

I used replay mod and BSL Shaders for the Minecraft footage. The world ran on a Linux machine I had running in Oracle cloud.

Obviously, this video wasnā€™t perfect, and I had lots of issues where I simply didnā€™t record enough. Some clips, mainly the talking scenes, were reused. I had to improvise, slowing down footage and splicing it to make it fit the very long conversations.

And ever since then, I always made sure to record an absurdly large amount of footage.



ā€œThe Timerā€

https://youtu.be/kP9gNWAus_4 https://github.com/Hypercoded/TheTimer

Messing around with the Youtube API, I created a ā€˜social experimentā€™ which was a countdown timer that gained time whenever someone watched the video. When the countdown hit 0, the video would be made unlisted. Not much to it, just I did learn a LOT about how the Youtube API worked, and most importantly, how MongoDB worked.