133 lines
5.5 KiB
Plaintext
133 lines
5.5 KiB
Plaintext
#import "fontawesome.typ": fa, globe, github, linkedin, envelope, phone
|
||
#import "lib.typ": template, work_entry, project, indent, SMALL_STRONG, DEFAULT_STRONG
|
||
|
||
// orange!!
|
||
#let color = rgb("#1f497d")
|
||
#let name = "Christopher Lam"
|
||
|
||
#let contact_data = (
|
||
(
|
||
service: fa[#phone],
|
||
display: "416-409-0886",
|
||
link: "tel:4164090886"
|
||
),
|
||
(
|
||
service: fa[#envelope],
|
||
display: "christopher.peter.lam@protonmail.com",
|
||
link: "mailto://christopher.peter.lam@protonmail.com"
|
||
),
|
||
(
|
||
service: fa[#linkedin],
|
||
display: "linkedin.com/in/christopherlam888",
|
||
link: "https://www.linkedin.com/in/christopherlam888"
|
||
),
|
||
(
|
||
service: fa[#github],
|
||
display: "github.com/christopherlam888",
|
||
link: "https://github.com/christopherlam888"
|
||
),
|
||
)
|
||
|
||
#show: doc => template(name, contact_data, color, doc)
|
||
|
||
// MAIN CONTENT STARTS here
|
||
|
||
#let IMAGE_WIDTH = 1.5cm
|
||
#place(bottom + center, dy: 1.5cm, image("monogram.png", width: IMAGE_WIDTH))
|
||
|
||
= Technical Skills
|
||
|
||
- *Languages:* Python, JavaScript, TypeScript, Kotlin, C, C++, Rust, Dart, Java, SQL, XML, XSL, Bash
|
||
- *Tools:* OpenCV, Flask, PostgreSQL, React, React Native, NodeJS, Express, MongoDB, Flutter, Linux
|
||
|
||
= Experience
|
||
|
||
#block(inset: (right: 0.5em))[
|
||
#work_entry(
|
||
"Software Developer, Software Quality Analyst",
|
||
"i4i Infrastructure for Information",
|
||
location: "Toronto",
|
||
start_date: "May 2023", end_date: "Sep 2023",
|
||
tasks: (
|
||
[Developed a program to automate converting hundreds of client data values from Excel to Word metadata],
|
||
[Designed Python, XML, and XSL code to extract and process data to interface with existing software products],
|
||
[Performed 1000+ functional, security, and stress tests to ensure quality for clients like Pfizer and Astellas],
|
||
[Communicated with developers and clients to perform root cause analysis on hundreds of major issues],
|
||
[Coordinated with management and team members to delegate work, present results, and meet deadlines]
|
||
)
|
||
)
|
||
|
||
#work_entry(
|
||
"Electrical/Communications Subsystem Lead",
|
||
"UW Orbital Engineering Design Team",
|
||
start_date: "Sep 2022", end_date: "present",
|
||
location: "Waterloo",
|
||
tasks: (
|
||
[Implemented the Diffie-Hellman key exchange in C using a 3072-bit prime number and 256-bit keys],
|
||
[Managed a team of 10 to develop electrical and power, battery management, ADCS, and computer systems],
|
||
[Led the design of the custom transceiver by reviewing schematics and optimizing the layout per RF guidelines],
|
||
[Validated PCBs with power and RF testing, resulting in a recorded 34 dB gain measured by VNA S-parameters],
|
||
)
|
||
)
|
||
]
|
||
|
||
= Projects
|
||
#set strong(delta: SMALL_STRONG)
|
||
|
||
#indent[
|
||
#project("Produce Palate", "https://github.com/potatoeggy/mandown", "Python, OpenCV, Scikit-learn, Flask")
|
||
- Created an image preprocessing algorithm to reduce noise, perform contour detection, and enhance colours
|
||
- Trained an AI image classifier model with KNN, Random Forest, and SVM algorithms tuned using grid search
|
||
- Achieved 96% accuracy recognizing 5 distinct classes of fruits and vegetables in a web game built with Flask
|
||
|
||
#project("Snake Wave", "https://github.com/potatoeggy/primoprod", "Python, OpenCV, Pygame, Flask, PostgreSQL, bcrypt")
|
||
- Designed a snake game controlled by hand gestures using OpenCV and Google's MediaPipe ML model
|
||
- Implemented a Flask API with PostgreSQL to handle user authentication with bcrypt and track a leaderboard
|
||
|
||
#project("The Everyday Watch Collector App", "https://github.com/vincentjguo/recipeready-server", "Kotlin, XML, React, NodeJS, Express, MongoDB, JavaScript")
|
||
- Created a user-friendly interface to display 100+ glossary entries and 40+ videos using Kotlin and XML
|
||
- Utilized Retrofit and Gson to retrieve API data in JSON with seamless fallback to local data upon Internet loss
|
||
- Automated unit and instrumented tests using Espresso to ensure code quality and minimize regressions
|
||
- Developed a contributions page using React to send web inputs through a POST request to the REST API
|
||
- Deployed a REST API using NodeJS, Express, and MongoDB to perform CRUD operations on a cloud database
|
||
|
||
#project("Catholic Companion (Saints App)", "https://github.com/potatoeggy/boxboxrevolution", "React Native, TypeScript, Python, BeautifulSoup")
|
||
- Developed an app to display a saint of the day and a list of Catholic prayers in React Native and TypeScript
|
||
- Devised a web scraping algorithm to extract data with BeautifulSoup and clean data with LanguageTool
|
||
- Optimized performance with multithreading pools, resulting in a 5x increase in speed to retrieve 250 listings
|
||
|
||
#project("RecipeReady", "https://github.com/vincentjguo/recipeready-server", "Python, Selenium, Flutter, Dart")
|
||
- Produced a recipe app to help users plan daily meals with a weekly schedule and a generated grocery list
|
||
- Gathered 500+ recipes by scraping with Selenium, and created a REST API to get data from a cloud database
|
||
|
||
]
|
||
|
||
= Education
|
||
|
||
#indent[
|
||
#work_entry(
|
||
"BASc Mechatronics Engineering",
|
||
"University of Waterloo",
|
||
start_date: "2022", end_date: "2027",
|
||
tasks: (
|
||
[GPA: 4.0/93%, Dean’s List, Faculty of Engineering Entrance Scholarship, President's Scholarship of Distinction],
|
||
[Courses & Concepts: Object-Oriented Programming, Algorithms and Data Structures, Circuits, Digital Logic],
|
||
)
|
||
)
|
||
]
|
||
|
||
= Honours
|
||
|
||
#show link: underline
|
||
|
||
#block(inset: (right: 0.5em))[
|
||
#grid(
|
||
columns: (11fr, 2fr),
|
||
column-gutter: 1cm,
|
||
[
|
||
- 1st Place CubeSat Design Challenge, Canadian Satellite Design Challenge
|
||
- The Governor General's Academic Medal (Bronze Medal), Governor General of Canada
|
||
],
|
||
align(right)[*#text(("2023", "2022").join("\n"))*]
|
||
)
|
||
] |