Skip to content
View im-calvin's full-sized avatar

Highlights

  • Pro

Organizations

@Computing-Collective
Block or Report

Block or report im-calvin

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Add an optional note:
Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
im-calvin/README.md

About Me

Hi 👋, I'm Kelvin, a third-year computer engineering student at the University of British Columbia with a passion for software development and an eye for innovation. My experience includes a Software Developer Internship at ARIS Environmental, where I contributed to enhancing system reliability, streamlining communication, and deploying cloud services efficiently. I spearheaded automated testing procedures, advocated for Docker-based deployments, and overhauled build processes to solve complex challenges.

My technical strengths lie in TypeScript, React, and Python, and I thrive when designing and implementing end-to-end web-based solutions. Whether it's spearheading automated testing procedures to boost uptime, advocating for Docker-based deployments, or overhauling build processes, I'm dedicated to solving complex challenges.

I'm on a mission to secure a full-stack development role, leveraging my experience in building applications from start to finish and my ability to collaborate effectively in teams. Let's connect and explore opportunities to create innovative solutions together!

What I'm up To

🗃️ Past Projects

Personal Projects

🔒 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.

📆 Notion Canvas Sync / Canvas Instructure & Notion Plugin

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.

:electron: Musictag

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.

🐱‍💻 Hackathons

🎮 [Japango](https://github.com/bxi

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.

✍️ TODO: Tasks, Objectives, and Discussions Organized (NWHacks 2023)

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.

🧪 Organic Chemistry Quiz Discord Bot (Hack To School 2022 Hackathon First Overall)

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

🏫 UBC Course Projects

*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

Simple RISC Machine - CPEN 211

  • 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
🗂️ Current Projects

🐈 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.

💻 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.

Pinned

  1. waka-box waka-box
    1
    TypeScript 3 mins         ███████████▎░░░░░░░░░  53.6%
    2
    Other      3 mins         █████████▌░░░░░░░░░░░  45.7%
    3
    JSON       0 secs         ▏░░░░░░░░░░░░░░░░░░░░   0.7%
  2. Mittens Mittens Public

    A discord bot used to allow users to subscribe certain YouTube channels and receive notifications when they put up new schedules and go live.

    TypeScript 1

  3. Computing-Collective/3FA Computing-Collective/3FA Public

    A secure and scalable multi-factor authentication system including a client application, admin dashboard, and backend server

    Python 4

  4. musictag musictag Public

    Youtube-to-MP3 GUI that automatically embeds metadata so that you don't have to

    JavaScript

1,179 contributions in the last year

No contributions on February 19th.No contributions on February 26th.No contributions on March 5th.No contributions on March 12th.3 contributions on March 19th.2 contributions on March 26th.19 contributions on April 2nd.1 contribution on April 9th.2 contributions on April 16th.No contributions on April 23rd.No contributions on April 30th.1 contribution on May 7th.11 contributions on May 14th.17 contributions on May 21st.No contributions on May 28th.4 contributions on June 4th.4 contributions on June 11th.10 contributions on June 18th.No contributions on June 25th.2 contributions on July 2nd.No contributions on July 9th.1 contribution on July 16th.4 contributions on July 23rd.No contributions on July 30th.No contributions on August 6th.No contributions on August 13th.1 contribution on August 20th.3 contributions on August 27th.No contributions on September 3rd.No contributions on September 10th.2 contributions on September 17th.No contributions on September 24th.1 contribution on October 1st.No contributions on October 8th.2 contributions on October 15th.2 contributions on October 22nd.2 contributions on October 29th.No contributions on November 5th.1 contribution on November 12th.2 contributions on November 19th.No contributions on November 26th.1 contribution on December 3rd.No contributions on December 10th.No contributions on December 17th.No contributions on December 24th.No contributions on December 31st.7 contributions on January 7th.5 contributions on January 14th.17 contributions on January 21st.3 contributions on January 28th.No contributions on February 4th.No contributions on February 11th.No contributions on February 18th.No contributions on February 20th.No contributions on February 27th.14 contributions on March 6th.1 contribution on March 13th.16 contributions on March 20th.41 contributions on March 27th.15 contributions on April 3rd.No contributions on April 10th.No contributions on April 17th.No contributions on April 24th.1 contribution on May 1st.No contributions on May 8th.6 contributions on May 15th.5 contributions on May 22nd.No contributions on May 29th.10 contributions on June 5th.10 contributions on June 12th.6 contributions on June 19th.2 contributions on June 26th.15 contributions on July 3rd.2 contributions on July 10th.2 contributions on July 17th.6 contributions on July 24th.16 contributions on July 31st.2 contributions on August 7th.No contributions on August 14th.No contributions on August 21st.1 contribution on August 28th.1 contribution on September 4th.No contributions on September 11th.No contributions on September 18th.No contributions on September 25th.4 contributions on October 2nd.2 contributions on October 9th.1 contribution on October 16th.2 contributions on October 23rd.2 contributions on October 30th.1 contribution on November 6th.3 contributions on November 13th.1 contribution on November 20th.No contributions on November 27th.No contributions on December 4th.No contributions on December 11th.No contributions on December 18th.No contributions on December 25th.No contributions on January 1st.1 contribution on January 8th.No contributions on January 15th.No contributions on January 22nd.No contributions on January 29th.4 contributions on February 5th.No contributions on February 12th.No contributions on February 19th.7 contributions on February 21st.1 contribution on February 28th.No contributions on March 7th.9 contributions on March 14th.1 contribution on March 21st.16 contributions on March 28th.50 contributions on April 4th.1 contribution on April 11th.No contributions on April 18th.No contributions on April 25th.2 contributions on May 2nd.3 contributions on May 9th.3 contributions on May 16th.No contributions on May 23rd.3 contributions on May 30th.9 contributions on June 6th.4 contributions on June 13th.5 contributions on June 20th.No contributions on June 27th.2 contributions on July 4th.No contributions on July 11th.No contributions on July 18th.No contributions on July 25th.1 contribution on August 1st.7 contributions on August 8th.No contributions on August 15th.2 contributions on August 22nd.No contributions on August 29th.No contributions on September 5th.2 contributions on September 12th.No contributions on September 19th.2 contributions on September 26th.1 contribution on October 3rd.1 contribution on October 10th.No contributions on October 17th.2 contributions on October 24th.No contributions on October 31st.No contributions on November 7th.1 contribution on November 14th.No contributions on November 21st.No contributions on November 28th.12 contributions on December 5th.No contributions on December 12th.No contributions on December 19th.No contributions on December 26th.No contributions on January 2nd.11 contributions on January 9th.No contributions on January 16th.4 contributions on January 23rd.No contributions on January 30th.4 contributions on February 6th.No contributions on February 13th.No contributions on February 20th.4 contributions on February 22nd.1 contribution on March 1st.8 contributions on March 8th.6 contributions on March 15th.18 contributions on March 22nd.51 contributions on March 29th.33 contributions on April 5th.5 contributions on April 12th.4 contributions on April 19th.2 contributions on April 26th.No contributions on May 3rd.1 contribution on May 10th.8 contributions on May 17th.18 contributions on May 24th.6 contributions on May 31st.3 contributions on June 7th.1 contribution on June 14th.2 contributions on June 21st.1 contribution on June 28th.No contributions on July 5th.No contributions on July 12th.No contributions on July 19th.No contributions on July 26th.6 contributions on August 2nd.3 contributions on August 9th.No contributions on August 16th.No contributions on August 23rd.No contributions on August 30th.No contributions on September 6th.No contributions on September 13th.No contributions on September 20th.No contributions on September 27th.No contributions on October 4th.No contributions on October 11th.3 contributions on October 18th.No contributions on October 25th.3 contributions on November 1st.No contributions on November 8th.2 contributions on November 15th.No contributions on November 22nd.No contributions on November 29th.1 contribution on December 6th.No contributions on December 13th.No contributions on December 20th.No contributions on December 27th.No contributions on January 3rd.8 contributions on January 10th.No contributions on January 17th.No contributions on January 24th.No contributions on January 31st.2 contributions on February 7th.No contributions on February 14th.No contributions on February 23rd.No contributions on March 2nd.18 contributions on March 9th.13 contributions on March 16th.13 contributions on March 23rd.5 contributions on March 30th.No contributions on April 6th.4 contributions on April 13th.1 contribution on April 20th.1 contribution on April 27th.1 contribution on May 4th.3 contributions on May 11th.5 contributions on May 18th.10 contributions on May 25th.No contributions on June 1st.3 contributions on June 8th.7 contributions on June 15th.5 contributions on June 22nd.No contributions on June 29th.No contributions on July 6th.No contributions on July 13th.No contributions on July 20th.1 contribution on July 27th.No contributions on August 3rd.4 contributions on August 10th.5 contributions on August 17th.No contributions on August 24th.3 contributions on August 31st.No contributions on September 7th.No contributions on September 14th.No contributions on September 21st.2 contributions on September 28th.2 contributions on October 5th.1 contribution on October 12th.5 contributions on October 19th.5 contributions on October 26th.2 contributions on November 2nd.No contributions on November 9th.4 contributions on November 16th.2 contributions on November 23rd.2 contributions on November 30th.1 contribution on December 7th.No contributions on December 14th.No contributions on December 21st.No contributions on December 28th.No contributions on January 4th.2 contributions on January 11th.2 contributions on January 18th.3 contributions on January 25th.2 contributions on February 1st.No contributions on February 8th.1 contribution on February 15th.No contributions on February 24th.3 contributions on March 3rd.14 contributions on March 10th.13 contributions on March 17th.16 contributions on March 24th.15 contributions on March 31st.No contributions on April 7th.2 contributions on April 14th.No contributions on April 21st.No contributions on April 28th.5 contributions on May 5th.No contributions on May 12th.6 contributions on May 19th.1 contribution on May 26th.3 contributions on June 2nd.4 contributions on June 9th.8 contributions on June 16th.1 contribution on June 23rd.13 contributions on June 30th.6 contributions on July 7th.5 contributions on July 14th.9 contributions on July 21st.1 contribution on July 28th.No contributions on August 4th.4 contributions on August 11th.1 contribution on August 18th.No contributions on August 25th.No contributions on September 1st.No contributions on September 8th.3 contributions on September 15th.No contributions on September 22nd.9 contributions on September 29th.2 contributions on October 6th.No contributions on October 13th.2 contributions on October 20th.1 contribution on October 27th.2 contributions on November 3rd.5 contributions on November 10th.7 contributions on November 17th.1 contribution on November 24th.1 contribution on December 1st.No contributions on December 8th.No contributions on December 15th.No contributions on December 22nd.No contributions on December 29th.2 contributions on January 5th.3 contributions on January 12th.No contributions on January 19th.7 contributions on January 26th.2 contributions on February 2nd.No contributions on February 9th.3 contributions on February 16th.1 contribution on February 25th.No contributions on March 4th.12 contributions on March 11th.8 contributions on March 18th.6 contributions on March 25th.24 contributions on April 1st.No contributions on April 8th.1 contribution on April 15th.3 contributions on April 22nd.No contributions on April 29th.1 contribution on May 6th.3 contributions on May 13th.17 contributions on May 20th.3 contributions on May 27th.8 contributions on June 3rd.4 contributions on June 10th.3 contributions on June 17th.No contributions on June 24th.6 contributions on July 1st.2 contributions on July 8th.5 contributions on July 15th.2 contributions on July 22nd.6 contributions on July 29th.No contributions on August 5th.No contributions on August 12th.No contributions on August 19th.No contributions on August 26th.No contributions on September 2nd.No contributions on September 9th.4 contributions on September 16th.No contributions on September 23rd.No contributions on September 30th.No contributions on October 7th.5 contributions on October 14th.3 contributions on October 21st.No contributions on October 28th.No contributions on November 4th.2 contributions on November 11th.6 contributions on November 18th.No contributions on November 25th.2 contributions on December 2nd.No contributions on December 9th.No contributions on December 16th.No contributions on December 23rd.No contributions on December 30th.No contributions on January 6th.2 contributions on January 13th.30 contributions on January 20th.3 contributions on January 27th.No contributions on February 3rd.No contributions on February 10th.No contributions on February 17th.
Contribution Graph
Day of Week February March April May June July August September October November December January February
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Less
No contributions.
Low contributions.
Medium-low contributions.
Medium-high contributions.
High contributions.
More

Activity overview

Contributed to im-calvin/Mittens, Computing-Collective/3FA, im-calvin/im-calvin.github.io and 23 other repositories
A graph representing im-calvin's contributions from February 19, 2023 to February 20, 2024. The contributions are 83% commits, 7% code review, 5% pull requests, 5% issues.

Contribution activity

February 2024

Created 12 commits in 1 repository
Created 1 repository
Opened 1 pull request in 1 repository
mckaywrigley/chatbot-ui 1 closed
Opened 4 issues in 2 repositories
im-calvin/image-finder 3 open
danswer-ai/danswer 1 open

Seeing something unexpected? Take a look at the GitHub profile guide.