Compare commits

..

No commits in common. "bbe961ee204ac45626c9fb910b0d78e29ee43ff3" and "1fdfe05eea8fad8806b4579025b6804f0d557a60" have entirely different histories.

View File

@ -30,14 +30,13 @@
= Skills = Skills
#indent[ #indent[
*Languages:* Python, TypeScript, JavaScript, SQL, Rust, C++, Java, Ruby, HTML, *Languages:* Python, TypeScript, JavaScript, Rust, C++, Java, HTML, CSS, SQL \
CSS \ // MATLAB, Dart, Ruby
// Dart, Ruby *Frameworks:* Node.js, Express, Axum, Spring Boot, React, Next.js, Vue, Flutter,
*Frameworks:* React, Node.js, Vue, Flutter, Spring Boot, Next.js, Rails, Prisma \
Express, Prisma, Axum \
// Qt, Jest / Pytest, Apollo, Prisma, Rails // Qt, Jest / Pytest, Apollo, Prisma, Rails
*Tools:* Linux, Git, Docker, PostgreSQL, AWS/GCP, Redis, Kubernetes, Terraform, *Tools:* Linux, Git, Docker, Terraform, PostgreSQL, AWS/GCP, OpenTelemetry,
GraphQL, nginx, OpenTelemetry // Jenkins, systemd, Jira Kubernetes, GraphQL, nginx // Jenkins, systemd, Jira
] ]
= Experience = Experience
@ -49,10 +48,10 @@
start_date: "Feb 2024", start_date: "Feb 2024",
end_date: "present", end_date: "present",
location: "Remote", location: "Remote",
tools: "Python, Ruby on Rails, React, MySQL", tools: "Ruby on Rails, React, MySQL",
tasks: ( tasks: (
[Upgrading archive import pipelines to migrate 4000+ user works to be accessible [Upgraded ETL pipelines to import 4 000+ user works to be accessible to *7+
to *7 million registered users*], million registered users*],
), ),
) )
@ -64,16 +63,16 @@
location: "Waterloo, ON", location: "Waterloo, ON",
tools: "Express, GraphQL, Docker, Kubernetes", tools: "Express, GraphQL, Docker, Kubernetes",
tasks: ( tasks: (
[*Led and mentored a team of 6* to ideate, scope, and deliver *3 more major [*Led and mentored a team of 7* to clean technical debt and deliver *3 more
features* than the previous year], features* than the previous year],
[Diagnosed and *recovered from load spike crashes* by debouncing queries, using [Streamlined event check-in times by *80%* for *1900+ attendees* by generating
rate limiting as a stopgap],
[Reduced event check-in times by *80%* for *1900+ attendees* by generating
digital wallet passes over Express], digital wallet passes over Express],
[Shipped a new *bus registration tool* for attendees by creating new database
tables and GraphQL resolvers],
[Integrated backend tracing to monitor performance and trigger alerts with [Integrated backend tracing to monitor performance and trigger alerts with
OpenTelemetry and Grafana], OpenTelemetry and Grafana],
[Diagnosed and *recovered from load spike crashes* by debouncing queries, using
rate limiting as a stopgap],
[Shipped a new *bus registration tool* for attendees by creating new database
tables and GraphQL resolvers],
), ),
) )
@ -85,16 +84,16 @@
location: "Remote", location: "Remote",
tools: "Next.js, Spring Boot, PostgreSQL, AWS, Terraform", tools: "Next.js, Spring Boot, PostgreSQL, AWS, Terraform",
tasks: ( tasks: (
[Reduced manual user inputs by *40%* by extracting data from users' uploaded
documents in S3 with *Textract*],
// [Improved client responsiveness by *80* by employing stale-while-revalidate hooks for caching and ?? SWR performance, caching, error handling], // [Improved client responsiveness by *80* by employing stale-while-revalidate hooks for caching and ?? SWR performance, caching, error handling],
[*Introduced CI/CD for AWS Lambdas* by codifying them in Terraform for [Introduced CI/CD for AWS Lambdas by *codifying them in Terraform* for
reproducible and automatic deployments], reproducible and automatic deployments],
[Set up a staging environment via *EC2 and Jenkins* with parallel builds to [Set up a staging environment via EC2 and Jenkins with parallel builds to *reduce
*reduce production errors by 90%*], production errors by 90%*],
[Planned and executed a roadmap to SOC 2 security compliance by *implementing [Planned and executed a roadmap to SOC 2 security compliance by *implementing
role-based permissions with JWTs*, sending backend logs and alerts to role-based permissions with JWTs*, sending backend logs and alerts to
CloudWatch, and introducing new privacy controls for user data], CloudWatch, and introducing new privacy controls for user data],
[Reduced manual user inputs by *40%* by extracting data from users' uploaded
documents in S3 with Textract],
), ),
) )
@ -104,7 +103,7 @@
start_date: "May 2023", start_date: "May 2023",
end_date: "Aug 2023", end_date: "Aug 2023",
location: "Toronto", location: "Toronto",
tools: "React, Python, PostgreSQL, AWS", tools: "React, FastAPI, PostgreSQL, AWS",
tasks: ( tasks: (
[Designed a conflict resolution algorithm for merging databases, *reducing [Designed a conflict resolution algorithm for merging databases, *reducing
unrecoverable errors by 75%*], unrecoverable errors by 75%*],
@ -114,7 +113,7 @@
[Wrote and deployed a new React data query builder for our business intelligence [Wrote and deployed a new React data query builder for our business intelligence
visualisation service to *33000+ users*, eliminating the need for clients to visualisation service to *33000+ users*, eliminating the need for clients to
manually write API calls or Python code], manually write API calls or Python code],
[Developed a *serverless microservice* that asynchronously ingests email [Developed a serverless microservice that asynchronously ingests email
attachments directly into ETL pipelines], attachments directly into ETL pipelines],
// [??? emphasise test driven development or remove line *Reduced request errors by 30%* by creating backend testing infrastructure with // [??? emphasise test driven development or remove line *Reduced request errors by 30%* by creating backend testing infrastructure with
// *Pytest* to catch regressions and test new features across database engines with // *Pytest* to catch regressions and test new features across database engines with
@ -126,6 +125,8 @@
= Projects = Projects
#set strong(delta: SMALL_STRONG) #set strong(delta: SMALL_STRONG)
// joycond-cemuhook?
#indent[ #indent[
#project( #project(
"Mandown Comic Downloader", "Mandown Comic Downloader",
@ -134,7 +135,7 @@
) )
- Created a CLI and GUI to scrape, download, and convert webcomics into - Created a CLI and GUI to scrape, download, and convert webcomics into
e-ink-optimised ebooks (EPUB, PDF) e-ink-optimised ebooks (EPUB, PDF)
- Designed a *scalable data conversion system* via a canonical format, allowing - Designed a scalable data conversion system via a *canonical format*, allowing
any format to convert to any other any format to convert to any other
- Implemented *image caching and multithreading* to increase download and update - Implemented *image caching and multithreading* to increase download and update
speeds by *300%* speeds by *300%*
@ -155,10 +156,10 @@
"Rust, Axum", "Rust, Axum",
repo_link: "https://github.com/potatoeggy/kobink", repo_link: "https://github.com/potatoeggy/kobink",
) )
- *Reimplemented the Kobo Store Sync protocol* in an Axum backend to instead sync - Reimplemented the Kobo Store Sync protocol in an Axum backend to *instead sync
personal ebook files personal ebook files*
- Deployed the service behind an nginx reverse proxy and Cloudflare DNS to allow - Deployed the service behind an *nginx reverse proxy* and *Cloudflare DNS* to
syncing over the internet allow syncing over the internet
// #project( // #project(
// "RecipeReady", // "RecipeReady",
@ -199,9 +200,9 @@
end_date: "Apr 2027", end_date: "Apr 2027",
location: "Waterloo, ON", location: "Waterloo, ON",
tasks: ( tasks: (
[Courses: Object-oriented programming, data structures & algorithms, digital // [Courses: Object-oriented programming, data structures & algorithms, digital
logic & circuits], // computers & circuits],
// [Extracurriculars: Creative Writing Club, Hack the North, UW Orbital Design Team], [Extracurriculars: Creative Writing Club, Hack the North, UW Orbital Design Team],
), ),
) )
] ]