Hi π, I'm Kelvin, a computer engineering student at the University of British Columbia.
I'm currently interning at Amazon on the North American Payments team. I've also previously worked as an AI Developer Intern at NETINT Technologies and ARIS, both tech startups in Vancouver, BC.
You can view my resume here
ποΈ Past Projects
π» Personal Website
This is my personal portfolio website, custom built using React, Astro, and TailwindCSS. It showcases my skills and projects, and provides a way for potential clients and collaborators to get in touch with me. It is currently deployed using Firebase at kelvinw.com and Github Pages.
π 3FA
In the 3FA project, I assumed a pivotal role in both constructing a comprehensive backend API using Python, employing Flask and SQLite as well as developing a web app and an electron app. This undertaking encompassed the development of over 20 endpoints, each tailored to facilitate distinct functionalities. Additionally, I took charge of the design and implementation of a robust authentication flow, meticulously aligning with OWASP security standards. This involved the establishment of secure session and authentication tokens, encrypted communication channels, password hashing, and the inclusion of automatic timeouts to fortify our security measures. Simultaneously, on the frontend, I harnessed my expertise to craft over 15 bespoke React components. These components not only expedited development by 30%, but they also orchestrated a harmonious and user-centric experience across the entire application. I was also tasked with integrating hardware and backend components into the frontend within a tight 1-week window.
π Mittens Bot
Mittens is a project that I started as a complete beginner in programming, and she remains one of my most cherished projects. Initially, she was meant to help communicate with Japanese speaking users in a small Discord channel by translating every message. However, it soon grew to include other features like notifying users when Hololive streamers scheduled streams or went live. Over time, I added more functionality, such as translating Japanese kanji to furigana, pulling lyrics for karaoke tracks, and notifying for Twitter alerts. It is now up and running on Heroku without any issue. Through this project, I learned about web scraping, asynchronous functions, APIs, and more. Despite its humble beginnings, Mittens has become an important part of my programming journey. One day, I hope to refactor her with my newfound knowledge and smile at the workarounds that I had to make in my infancy as a programmer.
π Notion Canvas Sync / Canvas Instructure & Notion Plugin β οΈ (Deprecated)
The Notion Canvas Sync Plugin is a project that I developed to simplify my life as a student at UBC. As someone who is heavily reliant on Notion for keeping track of assignments, deadlines, and other important information, I found myself frustrated with the tedious task of manually inserting entries into my calendar. This plugin integrates seamlessly with Canvas, UBC's school portal, and automatically updates my Notion calendar with all the relevant information. Since I shared it with my friends, it has been used by 15 people and has helped them tremendously in organizing their academic lives. In the future, I plan to expand the functionality of this plugin and integrate it with other tools that students use on a regular basis.
Musictag β οΈ (Deprecated)
Musictag is a project that was inspired by my personal frustration with manually modifying the metadata of cover songs downloaded from YouTube. To solve this problem, I developed an Electron app that streamlines the process of editing music metadata. Throughout the development of this project, I gained a deep understanding of the full development life cycle of a product, from ideation to deployment. Currently, Musictag is only capable of serving songs from the Holodex API, but I plan to expand its capabilities to include other libraries like last.fm so that it can serve an even larger variety of songs. With the help of Electron Forge, I'm able to publish updates to users and package the app for Windows, MacOS, and Linux.
*Code access is available upon request for all projects
Multi-Client Server - CPEN 221
- Constructed a server supporting multiple simultaneous clients capable of interacting and fetching tweets from Twitter
- Enabled dual-server routing so that either server can be connected to, and no interruptions occur if one goes offline
- Followed security protocols by hashing and salting all passwords and encrypting incoming and outgoing data via AES
- Designed a Turing Complete 16-bit RISC Machine using System Verilog on an FPGA board in 3 weeks
- Subdivided the machine into smaller modules to be designed, tested, and debugged more easily
- Developed testbenches through ModelSim to thoroughly test system designs
- Achieved a 300% improvement in operations per cycle through the use of pipelining, exceeding course expectiations
Graphs, Games, and Interplanetary Travel - CPEN 221
- Collaboratively built the βKamino Gameβ in Java and built an algorithm to traverse the game to collect points.
- Implemented graph and tree data structures with associated algorithms while optimizing time and space complexity
- Exercised best practices including unit testing, documentation, and encapsulation to ensure quality and correctness
π¨βπ» Past Hackathons
Frustrated by current job tracking platforms and their high friction in adding applications and tracking them, we created a platform that automatically does all of this for the user. When signing into our site, JobJug gives you a custom email that you use to apply to jobs and when a response is received, our system will parse the email to determine the company, the status of the application, and the position that you applied for. To do this, we created a custom model with PyTorch, trained on our own job response emails to sort and organize the incoming emails. In addition, we provide a dashboard to see your job application stats and visualize the data however you want.
We created a platform where users can make video calls with each other, and then analyze conversations and provide insightful suggestions for users to connect with their friends. These suggestions incorporated one's facial expressions, tone, and what they said to offer recommendations based on their friends current and past mood, likes, and dislikes.
Using the Cohere Coral API, we created a chatbot that could impersonate any character, figure, or model. Users would upload content (such as a movie script) into our system and using retrieval augmentation generation we would construct a unique persona for the task, grounded on the information that the user provided. For example, if a user uploads book 2 of a 4-book series, you can talk to a character who only knows what happens up to book 2.
π―π΅ JapanGo (StormHacks 2023)
JapanGo is a multiplayer, web-based game designed to help people become familiar with the Japanese alphabets in a fun and competitive way. Inspired by skribbl.io, users are able to create a room, share the code and then race to see who can decipher the question first. It was created during Stormhacks 2023, an in-person 24 hour hackathon. Using websockets and Firebase, we were able to create a real-time connection between different clients with minimal latency, removing technical issues so that users could focus on memorizing their alphabets. Other technologies that we used include React and Tailwind for the frontend, and Python with FastAPI in the backend.
Frustrated by the abundance of services that we had to use to access course information and assignments, we created a web-app with React to combine our Canvas, Piazza (and more in the future) assignments, messages, and Q&A posts all into one location. With others, we created a Python back end that interacts with the Canvas API as well as an unofficial Piazza API. The back end also syncs data with a MongoDB database for storing and retrieving information. Lastly, we had a React front end that communicates with our custom Flask API to retrieve and display the information to users. I was primarily responsible for the front end, but also contributed to the back end through data collection and wrangling with the APIs.
π΅ SpotifyGo
SpotifyGo is a project born out of the desire to make daily commutes more enjoyable by providing a custom playlist tailored to the exact length of the commute. The project uses the Spotify API to generate a playlist based on the user's preferences and the estimated length of the commute. I was responsible for creating the back end API using Express.js and implementing the front end using React. To make the user experience smoother, I spearheaded the integrated of the Google Maps Matrix API, allowing users to select their location with autofill. This project helped me develop my skills in API integration, front-end development, and project management.
The Organic Chemistry Quiz Discord Bot was aimed to make learning compound names more fun and engaging. We created a Discord bot that quizzes users on compound names and awards points for correct answers. Participating in my first hackathon was an amazing learning experience where I honed my skills in pair programming, time-management, and effective communication
ποΈ Current Projects
π€οΈ Job Tracker
Frustrated by current job tracking platforms and their high friction in adding applications and tracking them, I'm creating a platform that automatically does all of this for the user. When signing up for the website, I give the user a custom email that you use to apply to jobs and when a response is received, the system will parse the email to determine the company, the status of the application, and the position that you applied for. In addition, we provide a dashboard to see your job application stats and visualize the data however you want.