Professional Career

My current résumé and LinkedIn can be found in the sidebar. Below, I’ve tried to give a more holistic explanation of my work experience, explaining how it all fits into the story of my life. Ultimately, this may be more for my benefit than anyone else. However, I think anyone who takes the time to read this will get to know me better as a person.


Teaching

Teaching Assistant - University of Toronto

During my Master's degree, I was the head TA of the courses ECE345, ECE358, and ECE1762 at the University of Toronto. Below are the exact dates.
  • Sep 2021 - Dec 2021: ECE358 and ECE345
  • Sep 2022 - Dec 2022: ECE358 and ECE345
  • Jan 2023 - Apr 2023: ECE1762

All of these courses are minor variants of each other, the broad topic being "Algorithm Design and Data Structures". The textbook used was "Introduction to Algorithms" by Thomas H Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein (canonically referred to as CLRS). These courses were decently large, containing between 200 to 400 students depending on the semester. Here are some examples of Syllabus and Weekly Topic Schedule from the 2022 Fall semester of ECE358.

I don't think I am overstepping when I say that I essentially ran these courses. In all three years, I created all of the homework assignments, the midterm, and the final exam as well as detailed solutions. I also created the rubrics for grading these assessments as well as managing all of the grading TAs. I completely overhauled the tutorial notes, creating a concrete lesson plan for the weekly tutorial sessions. I delivered two out of five tutorial sessions per week. I was the main contributor to responding to student questions via email and the course message board (piazza). Finally, I worked with all of the professors in order to create the Weekly Topic Schedule (example linked above) so that all lecture sections would stay on pace and in sync.

I am extremely proud of how these courses turned out when I was in charge. I took ECE358 during my undergraduate degree and I was disappointed at how poorly it was conducted. I always thought to myself that I could do better. Through my hard work, I reinvigorated these courses with changes that will last long after I've left. Evidenced by my TA awards these changes were all for the better. I absolutely loved teaching these courses. Delivering the tutorials was one of my favorite parts of completing my Master's degree. Maybe one day I will come back from industry to teach at a university.

(In the future I may include examples of my tutorial notes, homework assignments, and exams. However, this course is still active, so I don't think I am allowed to.)


Praxis I and II Teaching Assistant - University of Toronto

At the University of Toronto, Praxis is the first-year engineering design course. This course has a lot of deliverables and they are all qualitative rather than quantitative. Thus, grading this course of over 300 students becomes quite the task. In my 3rd and 4th year, I became a grading TA of this course. I actually enjoyed it, and it helped me learn best practices when creating qualitative rubrics. These lessons were indispensable when I needed to develop similar types of rubrics as a head TA during my graduate degree.


Personal Tutor - University of Toronto

An engineering student had a unique disability where she could only see things that were about 30 feet away. Any closer or farther, objects would go out of focus. In order to take notes, she needed to project her tablet onto the wall of her dorm room. As a result, she required some assistance to keep up with the classes. One of my first-year professors Jason Foster recommended me to the University of Toronto Accessibility Services to be her private tutor.

Two or three times a week, I would meet with this student for about an hour and we would go over the lecture material to make sure she understood it. I love teaching and I love helping people, so I really enjoyed these sessions.


Peer Tutor - Saint Thomas Aquinas High School

My high school had a peer tutoring program where upper-years would go in during their free block in order to help lower-year students with their assignments. I went in during my one free period as a Senior (Junior year I did not have a free period). This program is what sparked my love for teaching and tutoring.




University Summer Jobs

Full Stack Developer - Extropolis

This small startup is attempting to leverage the power of large language models (GPT, LLaMA, Stable Diffusion, etc.) to create powerful tools and assistants for users. I am a full-stack developer, working on prompt engineering and database management on the back-end as well as UX/UI design on the front-end. In the future I may elaborate more, but I do not want to leak anything that could give away their competitive advantage.


Poker Dealer - Canadian National Exhibition

A little-known fact about myself is that I love handling cards. For a while, I was into sleight-of-hand magic (that was short-lived). One summer during my Master's degree, I saw an ad for poker dealers and decided...why not? I interviewed and got the job. During the day I worked on my Master's research and at night I worked in the casino dealing poker.

Poker dealing is not for the faint of heart. The players can be very mean (especially when they are losing). However, the environment is super fun and I met so many interesting people. I'm not really into gambling, so this was the only way I could experience casino culture. If you're good with a deck of cards, can do a bit of mental math, and have thick skin, dealing poker is a fun summer job.


AI/ML Intern Analyst - Salesforce

As part of my capstone requirement for my undergraduate degree, three other engineering students and I applied for the Salesforce brief. This brief was special because it required us to submit our resumes and Salesforce would choose its group rather than being randomly assigned one. Fortunately, my group was chosen. This means we would become interns at Salesforce, receiving temporary company laptops and attending weekly meetings.

Salesforce had a massive dataset of customer correspondences. Our task was twofold. First, clean this dataset as it was unorganized text files of emails. Second, determine as many insights as possible. For example, which products caused the most confusion? My group utilized NLP and pre-trained models to analyze these customer correspondences and suggested avenues to improve the existing customer support chatbot. Unfortunately, I cannot elaborate on specifics due to the NDA I signed.


NLP Researcher - University of Toronto

I was lucky enough to do summer research with professor Jonathan Rose. After revolutionizing the FPGA industry, he pivoted towards natural language processing (NLP). In particular, he wanted to create chatbots that utilize Motivational-Interviewing style conversations in order to help people quit smoking.

When I joined the group, my task was to utilize GPT-2 in pursuit of this goal. We decided to focus on creating high-quality reflections using few-shot learning. We worked with Dr. Peter Selby at CAMH in order to create examples of reflections approved by practicing clinicians. Then, to generate new reflections, I used semantic similarity in order to find reflections that best matched the new query. These reflections were added to GPT-2's prompt as few-shot examples, and GPT-2 generated a new reflection.

At this time, these language models were still in their infancy. The results with GPT-2 were okay...but not amazing. GPT-3 came out right as I was leaving and the results from it were unbelievable. These days, these language models are even better and still improving. Soon I'm sure they will be indistinguishable from humans or too intelligent to be mistaken for a human.


Full Stack Developer - AskVoco

This was an extremely small start-up that unfortunately does not exist anymore. They recognized that voice assistants (Alexa, Google Home, Siri, etc.) were being under-utilized. For example (at the time) these assistants could not fetch something as basic as current news. They wanted to create a unified platform where content creators can upload content and have it be discoverable by users (this was the hard part).

I joined the team of four as one of two core developers. As well as helping with miscellaneous back-end and front-end issues, my main project was to implement the (at the time) new neural network BERT for automatic content classification. At this time, HuggingFace was also very new, so they hadn't yet developed their easy-to-use libraries (which made my job much harder).

I only worked for the start-up over the summer and helped out a little during the fall semester. I think it died shortly after due to a lack of funding. Ultimately, I think the idea was good, but they were a bit too ambitious. The technology just wasn't quite there yet. Even today, I think the closest thing to someone solving the discoverability of audio is TikTok. Voice assistants still are not great.


Java Back-End Developer - DNAstack

In part, DNAstack's goal is to help world health organizations and researchers manage genomic data. At the time I joined, there were many different sources of genomics data, each with different APIs. As part of their platform, DNAstack wanted to unify these data sources. They worked with GA4GH to create a standardized API scheme. Strangely, they called this scheme the Data Object Service (DOS) API, which everyone obviously confused with Disc Operating System.

As part of the Google Summer of Code 2018, my task was to create the first implementation this API and then write wrappers for popular datasets such as PGP. In doing so, I collaborated with GA4GH and suggested modifications to the standardization in order to better suit the current datasets. You can find my full project here.

This was my first industry job. I learned a lot about the workflow of a developer, how to communicate in a team, and how start-ups work. It was an extremely valuable experience.




High School Summer Jobs

Waiter and Delivery Guy - Dover Asia

I could have done a third summer with UNH. However, I had just finished the most intense semester of my life due to my (successful) drive to become the valedictorian of my high school. Furthermore, at the end of that summer, I was going to begin the hardest engineering program in Canada, which I was anticipating (correctly) to also be extremely intense. Thus, I decided I wanted a more relaxed summer job working in customer service. I walked around downtown Dover (my home town) until I found a help-wanted sign. The staff at Dover Asia were extremely nice and working there meant I got free pork fried rice!

I did a little bit of everything. I helped take orders over the phone, wait tables in the restaurant, pack orders in the kitchen, and deliver orders. A few times I even helped roll sushi! I really enjoyed working there. Interacting on a consistent basis with the "general public" forced me out of my usual bubble and helped me see the world from different perspectives. The few times when I had to deal with rude customers really helped my conflict resolution and de-escalation skills.

Fun fact, this job was the catalyst to my fascination with billiards (pool). The establishment had a large pool room and held weekly events. In the downtime, I would often play against the owner (an older man who could barely see, yet somehow rarely missed a shot). He taught me the fundamentals and I've been hooked ever since.


Programmer - University of New Hampshire

At this time in my life, I was eager to gain experience as a computer programmer. Luckily, I somehow landed a job working for Val Schmidt at the University of New Hampshire (UNH) Center for Coastal & Ocean Mapping/Joint Hydrographic Center in the Jere A. Chase Ocean Engineering Laboratory. One of their goals is to accurately map the ocean floor. During both summers, I worked on independent projects to help achieve this goal.

In my first summer, I was given the task of developing efficient C++ libraries for their sonar equipment to model refraction in the sound speed profile. The technique used is called ray tracing. Now, this technique is used by almost all game engines, but at the time was not quite as popular. Unfortunately, this project has been lost to time.

In my second summer, I created a prototype graphical mission planning system for autonomous robotic boats using Cesium.js. The UI was a globe similar to Google Earth. The tool allowed the user to create various patterns of navigation paths and export the corresponding coordinates. This code can be found on my GitHub here.


Cart Attendant - Rochester Country Club

This was my first job. My main responsibility was to distribute, collect, wash, and maintain golf carts from the members. I would also do whatever other odd job the club pro needed help with. Unfortunately, my employment only lasted about a month because I received an offer to work as a computer programmer at UNH, which I obviously couldn't refuse. Nonetheless, I loved working there and I still love that golf course.




Volunteering

Toronto International Film Festival (TIFF)

The Toronto International Film Festival occurs every year, debuting a variety of films. I volunteered and just helped direct people to their theatre and deal with any conflicts during the showings. It was extremely fun. I highly recommend it to others.


STA Hockey Pink Game

Every year, my high school holds "pink games" for a number of their sports teams as a fundraiser for breast cancer. I (being the captain of the boys varsity hockey team) helped with a lot of the organization of fundraising surrounding our pink game. Obviously, I also played in the game. All proceeds were donated to Wentworth-Douglas Hospital.


Dover Children's Home

For a long time, every other Thursday my mom and I would cook and meal and deliver it to the Dover Children's Home. If we're being honest, my mom was the head chef and I just did my best to help. I remember really enjoying doing this, and I'm not sure why we stopped.