First-class honors with distinction computer science BSc from UVic. Check out my live stats. Let's chat. Join my Discord (as member #?,???).
Who I am
I'm 21 and have a Great Dane named Finn. I love entrepreneurship, can ride a unicycle, and am an athlete. I enjoy snowboarding, long-distance running (masochism?), and fitness in general. I'm also an avid fan of reading and music.
My story
I coded my first (retrospectively, horribly-written) video game back in tenth grade which got me hooked on code. Soon after that, while still in high school, I got my first development job writing code professionally for a nursery company. The rest is history.
With new tech comes new challenges; I welcome them.
Category | Technologies |
---|---|
Frontend | Flutter, Dart, HTML/CSS, Javascript, Typescript, React.js, Next.js, Bootstrap, Tailwind, jQuery, EJS, SASS |
Backend | Rust, Go, Java, Python, C++, C#, C, Node.js, Express.js, Gin, Actix-web |
Tooling | GCP, AWS, Git/GitHub, Heroku, Vercel, Figma, Jupyter Hub, GitHub Actions, Docker, Bash, Common ML libraries |
Databases | MongoDB, Firebase RTD & Firestore, Hive, Drift, Gorm, Mongoose, Redis, Supabase, SQL-based DBs, iOS/Android/web local storage |
Quasi-esoteric | Standard ML, x86 Assembly, Racket |
Personal | Problem-solver, communicative, self-starter, reliable |
Who doesn't love drinking 8 coffees in 24 hours?
Event | Repo(s) | Result |
---|---|---|
Island Health CODEHACK 2023 | Mobile app, web app, server | My teammate and I got recognized for hacking the hackathon before it started, getting awarded symbolic white toques pre-event 👻 |
UVic AI: Ultimate tic-tac-toe | Private | We developed a competitive heuristic-based Monte Carlo tree-search algorithm 👀 |
Covehack 2024 | N/A | I founded, judged, and ran a hackathon in a Discord Server with 1500+ members 🚀 |
WECS Engineering Competition | Node | Won • Created a peer-to-peer mobile app acting as a decentralized node securing IOUs with Ed25519 asymmetric cryptography in < 5 hours 🏅 |
Engineering Competition '23 | Client, server | 1st place • Developed a mobile app connecting tutors to students 🥇 |
Engineering Competition '24 | Client | 2nd place • Developed a working real-time cloud-first code editor in 6 hours 🥈 |
A few of my favorite classes from my degree.
Course code | Description |
---|---|
SENG 474 | Machine learning: Neural nets, clustering, regressions, etc. |
CSC 499 | Honors project & seminar: Blockchain, decentralized systems, networks, etc. |
SENG 457 | Quantum computing & algorithms |
CSC 370 | Database systems |
CSC 305 | Computer graphics |
SENG 440 | Embedded systems |
CSC 330 | Functional programming & development paradigms |
A social media app exclusively for university students. Get ready to ROFL. Share your campus stories, embrace your quirks, and laugh with your community! Launching soon. Join the alpha/beta tests. Hundreds-of-thousands of lines of code.
Coding now
A completely decentralized search engine. It's designed to be an alternative to Google, Bing, DuckDuckGo, and more. It's a work in progress. It uses a multitude of highly theoretical and cutting-edge computing concepts.
WebsiteA CLI tool for designing and simulating quantum circuits. It's designed for speed-of-use.
Repo + installation guideDeveloped a hyper-optimized algorithm for base-2 logarithmic calculations on a Raspberry Pi 4 B 8GB with a Broadcom BCM2711 SoC (1.8 GHz 64-bit quad-core ARM Cortex-A72, 1 MB L2 cache), achieving a 43% improvement across 5 key metrics
RepoBlog postCreated a peer-to-peer mobile app acting as a decentralized node securing IOUs with Ed25519 asymmetric cryptography in < 5 hours.
RepoA beautiful, responsive website for a lodge company. It's designed to be fast, SEO-friendly, and easy to navigate. It's design is extremely custom and fluid.
RepoMy team and I developed a game outcome predictor for hockey bettors. We segmented matches into sequential partitions, each initiated by a shot, resulting in n + 1 total partitions. We then crafted two predictive models: the first, a logistic regression model that evaluates preliminary shot quality; the second, an LSTM neural network that leverages this data to forecast overall game outcomes as events unfold, providing a time-dimensioned analysis. To achieve this, we analyzed almost two million rows of hockey data.
Blog postEver wanted to display a custom design on your GitHub contribution graph? Now you can.
RepoUse the toolAllows users to display a dynamically generated Stackoverflow stats badge tailored to their profiles in a Markdown file. Specifically, it's designed for GitHub README profiles.
Repo + usage guideDemo via my READMEA utility package for encrypting (hashing + masking) primary keys (uints) in serialized JSON responses. Designed for seamless integration with existing model classes.
RepoPublished on pkg.go.devMy friend and I like solving Leetcode questions legitimately. However, at a manual rate, solving 100% of the site's questions would take a while. Hence, we created a bot to do it for us! It uses test cases to ensure a ~100% acceptance rate of its submissions, and it scrapes answers from Leetcode's discussion forms. You can configure it to solve by a set language and difficulty.
Blog postReal time mobile chat app: backed up messages, reactions, deleting messages, blocking users, auth flow, 'is active now' indicators, etc. This turned out to be a great usecase for a non-relational database (shock of all shocks).
A web-based cellular automata simulator that allows users to create and run their own custom simulations.
RepoUse the toolA web server that gathers, curates, and efficiently delivers the most recent stock market data for specific tickers from a set of predefined sources. Designed to be used in Excel or Google Sheets.
As the frontend lead on the Stend team, I was responsible for critical frontend development and management in the creation of our team's cross-platform application that curates demographic-based reviews for businesses and users.
I worked as a research assistant and developer for the DECISION-MAP (database of evidence concerning interventions supporting the intersections of brain injury mental health and addictions problems) website. I coded directly under manager Cole J. Kennedy, M.Sc., Ph.D. clinical neuropsychology student, and had supervisor Dr. Mauricio A. Garcia-Barrera, R. psych., professor and associate dean, research and graduate studies, faculty of social sciences.
Website + toolOver a timeframe of a few hours, our team developed a competitive heuristic-based Monte Carlo tree-search algorithm which could play a game of UTTT and win against many other advanced game-playing algorithms.
I wanted to make a package that would allow me to easily implement a killswitch in my Flutter applications. This would allow me to remotely terminate the app's functionality in the event of a security breach or other extenuating circumstance.
RepoPublished on pub.devBlog postWhy is it called the frog bot? I'm not sure. I found a nice frog profile picture and that was that. It's a Discord bot that harbours a few application commands and custom response/moderation capabilities.
Add the bot yourselfIn an app I was making, I wrote some code to shrink Scaffold views programmatically. This simulates native iOS behavior. I figured others may like to use it, so I made it into a package.
RepoPublished on pub.devI developed a puzzle game that challenges the user with figuring out the number in a 4x4 matrix that doesn't fit the pattern. It includes a myriad of levels the user can progress through. The UI is formatted to look exactly like that of the classic game of 2048.
RepoMy father used to travel across the border into the USA to buy gas. He always told me, for efficiency's sake, he wished there was an app that easily converted cross-border gas prices. So, I built one. It converts $USD/Gallon to $CAD/Litre in real time.
RepoPublished on PlaystoreI created an app that, upon the user uploading an image, deciphers the image's text and converts it into copyable text alongside giving the user the option of having it read aloud.
RepoI designed all art assets, alongside coded the entire project. Taking 176.5 hours, it taught me the very basics of C# Unity development. The strategic game features a 2D environment, where you play cards attempting to toppel the Russian Czar.
Play the gameI dislike participation marks. This script allowed me to sleep in and not care. It was quite an involved chunk of code. Too bad I can't share it...
Pathfinding algorithms play a crucial role in various fields, such as robotics, game development, and logistics. This project provides an interactive and visual way to explore different pathfinding algorithms (such as Dijkstras), helping users grasp their underlying principles and observe their performance in different scenarios.
RepoA mobile app that allows users to enter a URL to JSON data. The app then dynamically parses the JSON using a custom-built parser, mapping each detected datapoint to a trackable 'stat card'. Users can then save/view these cards, allowing for easy access to data they care about.
RepoWithin 24 hours, my team and I developed a system facilitating all doctor and patient interactions with a central health database. This allows patients to have more control over their personal health data and records.
Primary repoA beautifully simple alert banner for Flutter applications. Fully customizable.
RepoPublished on pub.devAn easy-to-use hook to optimistically update generic state and then resolve it later (async or sync) by accept/acceptAs/reject-ing it. An adaptation of React.js' experimental useOptimistic hook.
RepoPublished on pub.devBlog postA tool that, with the single click of a button, lets you select and submit a menti.com quiz answer N times simultaneously using multi-threaded API execution. Unfortunately, I probably won't be able to share the code for this one since my university professors use the platform...
Blog postI like having tasks automated. I needed a server to do that. So, I built myself a server. It does a variety of jobs; it even does things for this website! Some examples: cron jobs, email sending, detailed analytics for my online presence, hosting custom code, tooling, database connections, scripts, etc.
Live demo (single endpoint)Over a time frame of 6 development hours, our team managed to create a feed-based cross-platform mobile Flutter app that connects tutors with students in need of support, helping to facilitate a healthy academic community. We linked it up to a Dockerized Go web server with a SQLite database. My wonderful teammates: Jaspreet Sidhu, Chris Huk, and Hal Nguyen.
Primary repoWebsite with a fully functional blog and CMS.
This package contains a lot of simple helper functions. Some examples include: shorthands for app sizing, number formatters, responsive layout builders, etc.
RepoPublished on pub.devI recently wanted to add haptic effects to my scroll views, but found no easy way to do so. This prompted me to make a way myself. This package contains several useful widgets that enhance Flutter's default scroll views by adding haptics, automatic soft keyboard dismissal, and more.
RepoPublished on pub.devNew website with a focus on simplicity and performance. There is beauty in minimalism. Has a fully functional blog. Listed tech stack split with the server.
Live demo (hint: you're on it)I created code that breaks apart a mathematical function into 1,000,000+ Y values along a given slope, which are then used to very accurately calculate a definite integral. I also provide an interactive graph alongside the solution.
RepoI challenged myself to make a game in a day to circumvent tutorial-purgatory.
Play the gameI've designed and developed several websites for university classes. They're all private, so I can't share them.
I created an app that informs the user about basic virus/COVID-19 information. Additionally, it features an interactive graph that showcases COVID-19 deaths, recovered cases, and current cases across dozens of countries. Finally, it includes a feed of up-to-date news articles related to public health.
RepoI created a dungeon runner game where the user tries to beat their best time jumping through seven dungeon puzzles without dying.
Play the gameI'm always down to talk! Alternatively, try my email.
Before you go, have some free and valuable Rust code.
fn get_random_num() -> Option<i32> {
Some(4) // chosen by fair dice roll, guaranteed to be random
}