Experience

Software Development Engineer Intern @ AWS CloudFormation

Internship

AWS SDK

AWS CDK

AWS API Gateway

AWS Lambda

AWS DynamoDB

AWS Simple Queue Service

AWS CloudFormation

06/2021 - 08/2021

As a Software Development Engineer Intern at Amazon, my internship consisted of a project that I designed, implemented, tested and presented from beginning to end. My project was entitled "AWS CloudFormation GitOps". 
The goal of the project was to create an automated approval workflow for AWS CloudFormation stacks.  Using GitOps principles. every pull request in a configured repository will have a comment that automatically describes infrastructure changes, being made by that pull request. This will add another layer of protection against critical infrastructure failures. 

For my project, I designed the cloud-native application with an API gateway, several Lambda functions and a DynamoDB table for persistent storage. The system uses several SQS queues for communication between the Lambda instances. The design mitigates issues with starvation, and can theoretically handle hundreds of thousands of requests at a time. 

Next, I used constructed an extensive testing suite for the system, ensuring that the system is working as designed, and that the system works as designed. The unit tests have over 90% code coverage, ensuring that any breaking changes will be caught before releasing. 

Finally, the system was deployed using the AWS CDK, to follow best practices and ensure that necessary infrastructure changes can be easily implemented. 

Undergraduate Research Project @ McGill University

Research Project

NodeJS

PyTorch

Monte Carlo Tree Search

01/2021 - 04/2021

As part of a research project course, I worked at the Data Intensive Storage and Computer Systems Lab at McGill University, under the supervision of Dr. Oana Balmau. My project demonstrated that a Monte Carlo Tree Search (MCTS) system can provide real-time champion recommendations for League of Legends. This project is loosely inspired by one of my personal projects, League Of Legends Match Outcome Prediction

First, I used a NodeJS script to collect data on 1,357,379 matches from the Riot API. Then, I removed duplicate matches and matches with incomplete information. The champion data and outcome was then extracted, for a final dataset size of 984,976 matches.

Then, I built a collaborative filtering technique as a baseline for the latency and memory usage. Then I used a MCTS algorithm called Upper Confidence applied to Trees (UCT) and a neural network reward function. I demonstrated that the UCT and NN reward function have the lowest latencies, and memory usage, while having high recommendation performance and scalability. 

The final report is available here, and the code is available on my GitHub.

Software Developer Intern @ Nuance Communications

Internship

NodeJS

Jest

Docker

Kubernetes

Helm

Jaeger

09/2020 - 12/2020

As a Software Developer Intern working with the NLUaaS team in the Enterprise R&D Department, I was responsible for developing modules that encapsulate libraries built by the Research team, such as tokenizers, NLU API gateways, and NLU clients, for Nuance clients. Within my team's agile software development process, I completed a number of tasks:

I modified a NodeJS client to obtain OAuth tokens authentication to access the production endpoints using OAuth tokens, in preparation for the massive load testing for a new client. I then containerized the client using Docker, Kubernetes, Helm in order to deploy the client to the production environment. The client and the entire service was able to handle over 8000 concurrent calls.

I also created a testing suite for the gateway microservice using the Jest framework. I was able to achieve a code coverage of up to 91% across several modules, in addition to detecting a defect before it was able to affect the production service. The purpose of this project was to create a      

For my next project, I developed a runtime configuration watcher NodeJS library to abstract a module that appears multiple times in several microservices. This library allows clients to define which parameters in configuration files are to be watched, and define behavior for when the watched parameter is changed. This library is now being used in several microservices in production, reducing system down for Nuance clients.

The final project was a POC for OpenTelemetry and Jaeger, to demonstrate viability for use in my team's technology stack. I create a client, gateway and service applications, then constructed a tracing module that could serve as a basis for a distributed tracing library.

VP Web Developer @ McGill Student's Flying Club

Volunteer Position

HTML

CSS

JS

06/2020 - 04/2021

I am the VP Web Developer at the McGill Student's Flying Club, where I am responsible for updating and maintaining the club's website. During my time, I refactored the code base and significantly improved the readability without damaging the functionality of the website.

Co-President @ Hong Kong Student's Network

Volunteer Position

Communication

Leadership

03/2020 - Present

 As the Co-President of the Hong Kong Student Network, I am responsible for leading the club throughout the year. I am primarily responsible for the Internal, External, Finance and Communications teams. 

In these unprecedented times, I was elected to lead the club in a time where there is no pre-existing framework of what the club's response to this pandemic. To protect the health and safety of other executive members, and by extension the general public, the co-presidents have decided to suspend all in-person events and meetings, and will continue to follow the social distancing guidelines set out by local, provincial and federal governments.

The club has mandated that we will continue delivering virtual events that promote and spread Hong Kong culture throughout the McGill community.

Education

B.Sc., Computer Science

McGill University

09/2018 - Present

cGPA: 3.87/4.00
Year: Fourth Year
Expected Graduation Date: April 2022

Skills and Technologies

Programming Languages: Java, Python, C, JavaScript, TypeScript, OCaml

Frameworks and Technologies: Junit5, PyTorch, TensorFlow, ReactJS, NodeJS, Jest, Git, Docker, Kubernetes, Helm

AWS Systems: API Gateway, Systems Manager, Lambda, DynamoDB, Simple Queue Service