Patrick Lai

Software Engineering Student
Montreal, QC, Canada

About Me


I am a fourth year student at McGill University pursuing a B. Eng in Software Engineering. I enjoy learning new things and continuously seek out new opportunities and projects to challenge myself, whether its learning new programming languages and technologies, or participating in hackathons and other coding events.

Projects


Machine Learning Match Prediction
McGill CodeJam: November 2017

In this project, we used a neural network to predict how likely two people will be romantically compatible based off of socio-economic factors, age, and hobbies. This network was implemented using ML Studio on Microsoft Azure and trained with ~10,000 examples taken from publiclly available anonymous dating studies. We then called this model through a rest API from a single page web app built using javascript and HTML / bootstrap CSS.


Gift Card System
DeCode Montreal: March 2017

Collaborated with engineers from LightSpeed Labs and 5 other university students to develop and integrate an open source gift card system with an existing ecommerce platform.
This event was particularly interesting since factors such as integration and scalability had to be taken into consideration when building the project unlike other hackathons where any technology stack can be picked.


Accelerometer-Controlled Fan
RoboHacks: March 2017

Cardboard fan controlled by a DC motor and two servo motors that can be rotated using an accelerometer. This was my first time building a hack that involved primarily hardware and my first time using Arduino. Resources were limited at the event and it took our team a while to figure things out such as the circuit connections and how the motor controller worked, but in the end we managed to get a working product, even if it was a very simple one.


Tomcat Mansion: Train My Human
McGill Game Jam: March 2017

Experience a day in the life of a cat through this first-person simulation game! Every day when the human leaves for work, the domestic animal has no choice but to wait for its "owner" to come back. TomCat can not only freely move in and out of the mansion, but can also knock down objects in the household. It's happiness level varies depending on its interaction with different objects and its mood varies depending on the time of the day.


Grubbr
Software Eng. Team Project: November 2016

Cross-platform application for web, desktop (java swing) and android. Its purpose is to allow users to easily keep track of food truck menus, food, and inventory with simple, user-friendly interfaces.


Block Stacking Robot
Design Principles Team Project: November 2016

The robot was designed to navigate around a grid of fixed size and search for styrofoam blocks while avoiding wooden blocks, walls, and other robots. Block detection was done through the use of a light sensor and obstacle avoidance was done by implementing a bang-bang feedback controller that would be fed readings from 3 ultrasonic sensors passed through median filters. The robot would build towers by using a claw mechanism that was able to grab blocks and stack them on top of each other. In order to keep track of its position on the grid, an odometer was implemented by reading the motor rotation and corrected by reading the grid lines with a light sensor.


Anime Suggestion Engine
McGill CodeJam: October 2016

Application built in java using MyAnimeList’s API and the OpenNLP library that recommends animes to users based on which ones they currently enjoy by parsing an anime’s synopsis given by the API for keywords and building suggestions based on them


What Sould I Do Today?
AngelHack: June 2016

A web app that gives people a quick and simple way to find something to do in a given city using Expedia and Google Maps APIs. This works to inspire people to travel to new places and is the modern day equivalent of dropping a pin on a globe. We were awarded 2nd place overall at AngelHack Montreal for this project.

Work Experience


Microsoft
Software Engineer Intern

Redmond, WA, USA (May 2019)

I will intern with the Identity team starting May 2019.

Vancouver, BC, Canada (May - August 2018)

I worked with the enterprise and security team along 5 other interns to develop a Universal Windows Platform application.

CAE
Software Developer Intern

Montreal, QC, Canada (September - December 2017)

I took on an internship / co-op term at CAE (formerly Canadian Aviation Electronics), a company that builds realistic flight simulators. I was placed on the Immersive Environment group as part of the automation team. Our role in the company was to develop an automation tool that would be able to automatically validate various immersive environment assets such as 3-D vehicle models, and rendering of various scenery such as airports and landscapes for the simulators. This would greatly reduce the time taken up by manual testing, as automated tests can be run overnight without any user input

Sensequake
Software Developer

Montreal, QC, Canada (May 2016 - August 2017)

I worked as a Software Developer at Sensequake, a Montreal-based startup that seeks to revolutionize the field of structural health monitoring and analysis through the use of sensing tests and innovative software. I have done 2 summer internships at the company along with working part-time as a contractor during the school year. My role on the team was to develop the 3-Dimensional Seismic Assessment (3D-SAM) software. This is a Windows Desktop Application built in C# using .NET framework v4.5 and various open-source libraries such as Math .NET numerics, OxyPlot, and Helix3D.

As the company is still very young and the team small, I was one of the only developers working on the project for a large portion of the time, and as a result had to make many challenging decisions regarding system architecture and implementation choices on my own. My current accomplishments include: Complete integration of modal analysis and processing of sensor data into the software, optimization of many algorithms that were previously prototyped in MatLab and Mathematica, redesigning the application interface using WPF to improve user experience, and improving various existing parts of the software such as building animation and data importing. The 3D-SAM software was recently featured in an article by AutoDesk.

More


Besides programming and software, my biggest hobby is dragon boat. I have been selected twice for the Canadian National Team and am currently co-captain of the McGill club team.

Dragon Boat is a high-intensity water sport that originated in ancient China and involves 20 paddlers, a steer, and a drummer in a large boat. It is a primarily sprint sport with main distances of 500m, 200m, 2km, and 1km and is quickly gaining popularity in Europe and North America after being known in Asia for thousands of years.



I am also quite passionate about playing piano. Here is a recording of me performing Rachmaninoff's 2nd Piano Concerto