AI Projects (2023 - 2024)
Revamping the personal website, and finally creating a blog. Learned Eleventy rather than attempting to create my own SSG or working in pure HTML. Also looked into other options, like CMSs, especially for the blog. Link.
Trained LLMs to learn new information using 3 different techniques (pre-training, fine-tuning, kNNs) and compared their efficacy. For pre-training and fine-tuning, we also compared with and without LoRAs. We used GPT2 as the base model, T/F as its downstream task, FEVER as the base dataset (plus what it was pre-trained on), and 3 custom GPT-generated datasets (T/F questions on recent movies) to test adding data into the model. Project for CMPT 419 (2023 Summer) at SFU. Poster.
-
AI Livestreaming: Using the OpenAI API to generate scripts, emulating those procedural clip videos that algorithms recommend. Instead of recommending, why not generate?
-
Stable Diffusion Dreambooth: Trained SD on my face.
-
AI Tests: Reviewing material I learned in my Bachelors and beyond. Perceptrons, MLPs, RNNs, LSTMs, GRUs, seq2seq, enc-dec, attention, embeddings, ELMo, transformers, BERT, GPT, CNNs, MDPs, DQN, PPO, etc.
-
Transformer Study: Implemented transformers according to the Attention Is All You Need paper using PyTorch. GitHub.
Casual Projects (2022)
I had a question about personality that I wanted answered, so I found a dataset online and looked into it.
Learned Processing and recreated a few peices. Created the Mandelbrot set with shaders before halting the project. Video.
Resume Projects, Part 2 (2020 - 2021)
After graduating university, I still had a few areas I wanted to try out: Graphics, Robotics, and Embedded Systems. Someday I might get around to those last two.
After learning some OpenGL, I wanted to try Vulkan. I created the entire graphics pipeline, but decided to use compute shaders instead. Based on the "Ray Tracing in One Weekend" series. Video.
Learned OpenGL basics and did some projects to stress test it: Cubes, FallingSand, First3DGameEngine, etc. Also learned LWJGL.
I wanted to improve my Big Data/Machine Learning and Web Development resume projects. For ML, I wanted a project that wasn't from a university course. For WebDev, I wanted a project using a modern framework.
-
Modern Frameworks: Learned React, Next.js, and WebSockets. No new project.
-
Rating Predictions: Using neural networks to predict how much a user would like a movie. Didn't get too far.
Made as I was exiting university and entering the job market. Would be updated in 2022.
University Projects (2020)
A blockchain networking protocol based on Bitcoin's original whitepaper with networking, proof of work, longest chain, and mining functions. For CMPT 471 (2020 Fall) at SFU. GitHub.
After learning about spaced repetition, decided to build a quick website to help me study more efficiently.
Takes in a user's program written in our custom language, then executes it. Our project simulates quantum programs - it uses qubits instead of bits and quantum gates instead of the usual binary gates. I was tempted to rewrite it after the group project was over, but never got around to it. Project for CMPT 409 (2020 Summer) at SFU. GitHub.
A multiplayer game where you and other players compete to guess what function is running on the server by sending it inputs and observing the outputs. Surprisingly difficult, yet fun. Project for CMPT 383 (2020 Summer) at SFU. GitHub.
Solid Big Data/Machine Learning project. Trained a model to predict a hotel's quality just from its location. I got to use Spark & Hadoop on SFU's compute cluster. Project for CMPT353 (2020 Summer) at SFU. GitHub.
Wanting to develop in a game engine, I messed around with Unity, Unreal, and Godot - and decided on Godot. Like LOVE2D, I would mess around with various ideas while learning - though I wouldn't create a "capstone" project. My time with Godot was a lot more sporadic to previous projects and included more 3D modelling. My time with the engine would continue to 2023.
Implemented some complex SQL queries for my final database course project. Project for CMPT 354 (2020 Winter) at SFU. GitHub.
Resume Projects (2019 - 2020)
The player controls a spaceship and eats asteroids to grow. Asteroids are eaten by slicing parts off. Video. A bookend to my LOVE2D projects, made to be a cohesive & representative project on my resume. One day I may return to the ideas I had.
Created a BFS algo to crawl TV Tropes and extract a graph of all its pages. Took 9 hours to run. With the data, I visualized it and ran some analysis - finding that there are 5 main groups all tropes fall into. Though I'm not to sure about the validity of the results.
Video Game Development (2019)
Multiple attempts to create a game, but mostly playing around with mechanics. The main mechanics I created include lasers that cut objects, portals to warp objects & the player, and a warp-compatible rope that would be used in many planned puzzles. Out of all my projects, this is the one I spent the most time on.
-
The warp and rope portions of the project are too rough to show. Here are videos of the lasers and air resistance.
-
On the side, I made a visualization of that famous portal puzzle. Video.
Web and App Development (2018 - 2019)
App where users rank items and create tier lists. Features a Versus Mode where users sort items with comparisons. Google Play Store page. Screenshot.
A Sudoku app whose main purpose was to teach us development in agile teams on projects with changing specifications. Project for CMPT 276 (2019 Winter) at SFU. GitHub.
Tiny Tower inspired city-builder game in LÖVE2D. I didn't get very far, but did learn about mobile game development and procedural generation. Here are some islands it can generate: simple islands, complex islands.
Social media site based on 4chan. Video.
Early Projects (2015 - 2017)
Learning about methods needed in a more graphical setting with programs like atan2_visualized, menu, monotone_chain_convex_hull_game, path_finding, rain_shader, walk, etc.
-
bg_map: Tiled screenshots of Google Maps for a player to walk on.
-
consyst: An overly complex conversation system.
-
quickhull_game: Finds the convex hull of a set of points.
-
line_of_sight: To prevent players from looking behind walls in a top-down view. Algorithm explainer.
A game in the command line using ASCII graphics. You control a player on a grid of randomly generated coins and enemies. Enemies chase you. Grab as many coins as you can. Turn-based.
Learning HTML
-
colorChangeSite & ticTacToe: To learn CSS and JS
-
resumeSite: AKA Personal Website V0
-
simpleChat & ticTacToeOnline: To learn client-server interactions using express/socket.io
-
youwin8times: An absurd puzzle game. To win, you need to figure out what each button does. Impossible. Live Demo.
Learning the basics with simple scripts like: allMathFunctions, alphabeticalOrder, autoCollatzConjecture, coinFlip, CollatzConjecture, countLOOP, dice, Disemvowelr, findingAreas, GuessTheNumber, move, MultiplicationTable, palindrome, password, PigLatin, PrimeNumberFinder, rovarspraket, side2side, TreeGen, wheel, etc.
-
My Text Adventure Game: My first attempt at a "large" project. User would type commands like Look around and Use key.