Tea Rex

"Yes this is in fact a blurred out screenshot of my website"
- Me

Software Projects

EfficientNet (link)

Relevant Technologies: Python, Keras

This project is an implementation of EfficientNet, a really interesting paper on model scaling by Google. My goal for this project was to try to implement the components, as well as scaling code for EfficientNet, referring to this Keras implementation when I got stuck.

I learned a lot during the process and got the opportunity to present the paper alongside my working network to the Machine Learning Reading Group at Bloomberg

Tensorflow Model Training Pipeline (link)

Relevant Technologies: Python, Keras, Tensorflow, Numpy, OpenCV, MultiProcessing

After working through the two competitions during the previous co-op term I decided I wanted to create a model training pipeline in Tensorflow to get experience with writing to and reading from tfrecords, as well as create a performant pipeline that I could use if I decided to participate in another competition. To start, I wrote the training infrastructure around the dog/cat classifier, along with Jupyter notebook scripts to show validation results with the highest loss. In the future, I hope to improve this model training pipeline to also be able to take text input, like what was used in the Toxic Comment Classification Challenge.

Machine Learning Projects

Relevant Technologies: Python, Keras, Tensorflow

Having done the Dog/Cat classifier project during my 2B school term, I decided I wanted to learn more about Machine Learning. Instead of going through an online course, I decided to take inspiration (and data) from two Machine Learning competitions I found on Kaggle.

The first competition was Dogs vs. Cats Redux: Kernels Edition. I re-implemented the CNN I made during my 2B school term. To keep with the spirit of the competition, I removed the extra data I added for the school project. I chose to write the model in Keras to learn something new, and be able to get up and running faster. Like before, I wrote a Convolutional Neural Network to classify 80x80 images of cats and dogs. To improve on the previous result, I used input normalization, data augmentation (brightness shifting, image flipping, cropping, colour shifting, etc.), He Normal weight initialization, and Bayesian Hyperparameter Optimization. The final model had a validation accuracy of 96%.

The second competition was Toxic Comment Classification Challenge which required competitors to create a model to classify internet comments into multiple different toxicity categories, or classifying them as non-toxic. To solve this problem I wrote an LSTM network in Keras. To improve performance, I leveraged Facebook pretrained word embeddings, data augmentation using Google Translate, and implemented early stopping based on validation ROC AUC. The final model had an ROC AUC of 0.985

Dog Cat Classifier - MTE 204 Class Project

Relevant Technologies: Python, Tensorflow

During my 2A term working at Miovision, the CoreIP team gave a presentation about how they were using Deep Learning to perform traffic counts. After the presentation, I decided Machine Learning was a field that I was interested in and wanted to learn more about it. During my 2B school term, I needed to do a project that used some sort of numerical analysis. I chose to use this as an opportunity to explore my interest in Machine Learning, creating an image classifier to distinguish between images of dogs and cats.

To create my dataset, I wrote a script to download images of dogs and cats from Google Search. After a bit of manual filtering to get rid of bad data (ex. searching for pictures of "Boxers" did not give me the breed of dog, but instead a bunch of pictures of underwear), I wrote a Convolutional Neural Network in Tensorflow. I tried to perform a bit of data augmentation by flipping and rotating some of the images in the dataset. To further improve the quality of the datset, I added images from the Kaggle competition Dogs vs. Cats Redux: Kernels Edition. The final model had a validation accuracy of 80%.

Voluntel

Relevant Technologies: Node.js, Socket.io, ExpressJS, React, EJS, MongoDB, PassportJS, Google Maps APIs

As part of our high school graduation criteria, students are supposed to volunteer for 40 hours. While I was fortunate enough to finish my volunteering hours in Grade 9, some of my friends were not. Throughout high school, I noticed that one of the problems they were having was that open volunteering positions were announced in many different ways, and advertised in many different places. Over my 1B coop term, I started development on a web application to connect volunteers to nearby volunteering opportunities.

I started the project with the intention of learning how the different parts of a website fit together, and tried to choose technologies that I had never worked with before. Currently, the web application includes a user authentication/login system, file management for profile pictures and resumes, and posting creation. It also includes a newsfeed that updates the status of postings in real time, and a search function to find specific postings. Next steps include deploying the project to a server, and adding batch downloading of resumes.

DoStuff New Tab Page

Relevant Technologies: HTML, CSS, Javascript, RequireJS, Chrome LocalStorage/History APIs

Over the 1B school term and start of the 1B coop term, I created a productivity focused new tab page replacement. My goals for this project were to learn to divide my code into modules, making it clear and readable, and stable enough for me to use everyday. I organized my code into modules, using the RequireJS module loader. I also used the chrome LocalStorage and History APIs to add extra functions. The end result is a new tab page replacement that includes customizable backgrounds, a bar of applications that can be launched using key bindings, information regarding the time, date, and weather, and either random jokes about Chuck Norris (Awesome) or current tweets from someone's Twitter handle (Still kind of cool). Images of the plugin are below.

DoStuff New tab page

Customer Support Script

Relevant Technologies: HTML, CSS, Javascript, Chrome LocalStorage API

In my 1A coop term, I worked as a Software Support Specialist for Videostream. One of my duties was to provide email support for over 1.8 million users. Because my term started just after the Christmas holidays, my first job was to answer the 300 support tickets that had piled up over the break. After the first day, I noticed common patterns in email subjects (ex. Buffering, Firewall trouble, Videos getting stuck at the loading screen, etc.). I learned how to use the program AutoHotKey to make myself macro keys to respond to common support topics and do the repetitive clicking required to mark each email thread as completed. Eventually I decided to make a Javascript plugin to suggest responses to common questions.

The initial idea of the plugin was to have a predefined dictionary of words, with different combinations leading to different answers but after a few weeks of having to add words, and change my initial set of rules, I realized that I needed a better way of adding keywords and answers. To do this, I added a popup dialog to my extension allowing me to specify a list of keywords that must be present, or not present, and match the combination with a response. The keyword combination and response, as well as any keywords not already in the database are recorded and saved through browser and computer restarts using the chrome storage API.

Contest Training

My Grade 12 final project was contest training. I learned various algorithms and methods including recursion, breadth first search, and Dijkstra's algorithm to solve multiple contest questions. The code can be explored in depth on my Github. I also did a presentation on the Breadth First Search Algorithm. It can be downloaded here:

Download

My Website

Relevant Technologies: HTML, CSS, Javascript, JQuery, Bootstrap

As a personal project in the summer of Grade 12, I decided to use Bootstrap to make a website. Through this project I have learned the basics of HTML, CSS, and Javascript using Bootstrap and JQuery. I used the Starnight Template by Peter Finlan as a starting point for this website. I used the same template to make a new website design for Palette.

Grade 11 Game

A few weeks at the end of our Grade 11 Computer Science course were dedicated to using Java Graphics libraries to create a game. With two partners, I tested various concepts including a top menu bar, movement, a ground level, gravity, etc. to make a game where a character walks around a stage using the WASD keys, and attacks using the E key.

Kik Clone

Relevant Technologies: HTML, CSS, Javascript

During highschool, I was fortunate to participate in a Zoom career day with Kik. I had the opportunity to tour their office, meet their team, and work with them to make a web applet for their app. The Kik Clone looks through the user's contact list and allows the user to text anyone in their contacts.