From 5cbeb07c2faadacc3e164371750f4b23e959451a Mon Sep 17 00:00:00 2001 From: eggy Date: Mon, 24 Jun 2024 23:42:50 -0400 Subject: [PATCH] feat: borrow everything in every direction --- Daniel Chen.typ | 57 ++++++++++++++++++++++--------------------------- lib.typ | 23 ++++++++++---------- 2 files changed, 38 insertions(+), 42 deletions(-) diff --git a/Daniel Chen.typ b/Daniel Chen.typ index 5c060ba..467dc23 100644 --- a/Daniel Chen.typ +++ b/Daniel Chen.typ @@ -32,14 +32,12 @@ = Skills #indent[ - *Languages:* Rust, Python, Go, TypeScript, JavaScript, SQL, C/C++, Java, Ruby, - HTML/CSS \ + *Languages:* TypeScript/JavaScript, HTML, CSS, SQL, Python, Rust \ // Dart - *Technologies:* Node.js, React, Vue, Next.js, Spring Boot, Express, Prisma, - Rails, Axum \ + *Technologies:* React, Next.js, Express, Prisma, Apollo, GraphQL \ // Qt, Jest / Pytest, Apollo, Prisma, Rails - *Tools:* Linux, Git, Docker, PostgreSQL, Pytest, Jest, AWS/GCP, Kubernetes, - Terraform // Jenkins, systemd, Jira + *Tools:* Linux, Git, Docker, Postgres, Pytest, Jest, AWS/GCP, Kubernetes, + Terraform, Figma // Jenkins, systemd, Jira ] = Experience @@ -51,18 +49,18 @@ start_date: "Jan 2024", end_date: "Apr 2024", location: "Remote", - tools: "Next.js, Spring Boot, PostgreSQL, AWS, Terraform", + tools: "React, TypeScript, Spring Boot, Postgres, AWS", tasks: ( // [Improved client responsiveness by *80* by employing stale-while-revalidate hooks for caching and ?? SWR performance, caching, error handling], - [Optimised dashboard performance by *80%* by employing stale-while-revalidate + [Owned the creation of an end-to-end document vault feature in *React* for users + to upload and verify identity documents with Textract, reducing support tickets + by *25%*], + [Planned and executed a roadmap to *SOC 2 security compliance* by implementing + *role-based permissions with JWTs* in Spring Boot, logging alerts to CloudWatch, + and introducing new privacy controls for user data], + [Optimised dashboard responsiveness by *80%* by employing stale-while-revalidate hooks in React and lazily loading backend models with Hibernate, improving user retention by *30%*], - [Achieved SOC 2 security compliance by implementing *role-based permissions with - JWTs* in Spring Boot, logging alerts to CloudWatch, and introducing new privacy - controls for user data], - [Owned the creation of an end-to-end document vault feature for users to upload - and verify supplementary identity documents with Textract, reducing support - tickets by *25%*], [Created CI/CD pipelines to automatically deploy AWS Lambdas with Terraform and Jenkins], ), @@ -74,14 +72,13 @@ start_date: "May 2023", end_date: "Aug 2023", location: "Remote", - tools: "React, Python, PostgreSQL, AWS", + tools: "React, TypeScript, Python, Postgres, AWS", tasks: ( - [Owned the creation of a new feature to sync *46000+* enterprise users' - HubSpot/Airtable data to Google Sheets and emailed CSVs to databases with AWS - Lambda and Python], [Engineered a new React data query builder and FastAPI backend for our business intelligence visualisation service to *33000+* users, eliminating the need for clients to manually write API calls], + [Shipped a new tool to sync *46000+* users' HubSpot/Airtable tables to Google + Sheets with AWS Lambdas], [Designed a conflict resolution algorithm to merge databases, reducing unrecoverable errors by *75%*], // [?? new tool dDeveloped a *serverless microservice* that asynchronously ingests @@ -98,34 +95,32 @@ start_date: "Mar 2023", end_date: "present", location: "Waterloo, ON", - tools: "Express, Redis, GraphQL, Docker, Kubernetes", + tools: "Express, TypeScript, Postgres, GraphQL", tasks: ( [Built a new travel tool application leveraging GraphQL and Apollo Server to track bus capacity for *500+* attendees through real-time registration processes], - [Streamlined event check-in times by *80%* for *1900+* guests by generating - Apple/Google Wallet passes over Express], + [Streamlined event check-in times by *80%* for *1900+* guests by generating Apple + Wallet passes over Express], [Diagnosed and recovered from crashes due to load spikes up to 800k updates per hour at the world's largest student-run hackathon by autoscaling Redis and Postgres on Kubernetes], - [Slashed dev server reload time from *130 → 9 s* by introducing threading, - profiling, and pre-transpiling generated code], + [Slashed dev server reload time from *130 → 9 s* by introducing threading and + pre-transpiling generated code], // [Upgraded the event statistics dashboard to update in real time with GraphQL // *subscriptions with Redis PubSub*], ), ) #work_entry( - "Technical Volunteer", + "Software Developer", "Organization for Transformative Works", start_date: "Feb 2024", end_date: "present", location: "Remote", - tools: "Python, Ruby, React, MySQL", + tools: "Python, React, MySQL", tasks: ( - [Upgraded archive import pipelines in Python to make *4000+* user works - accessible to *7000000+* registered users], - [?? Developed a new React frontend for users to browse and search works with - *Ruby on Rails*], + [Upgrading archive import pipelines in Python to make *4000+* user works + accessible to *7 million* users], ), ) ] @@ -157,8 +152,8 @@ start_date: "Nov 2023", end_date: "present", tasks: ( - [Developed a *Rust* backend to sync custom files to Kobos by reimplementing the - Kobo Sync API], + [Developed a *Rust* backend to sync custom ebook files to Kobos by reimplementing + the Kobo Sync API], [Deployed the service behind an nginx reverse proxy and Cloudflare DNS to sync over the internet], ), diff --git a/lib.typ b/lib.typ index 589c979..9efe884 100644 --- a/lib.typ +++ b/lib.typ @@ -5,22 +5,22 @@ #let TITLE_FONT = "Bitter" #let HEADING_FONT = TITLE_FONT -#let BODY_FONT = "Calibri" +#let BODY_FONT = "Open Sans" -#let BODY_FONT_SIZE = 11.5pt -#let HEADING_FONT_SIZE = 0.8em -#let TITLE_FONT_SIZE = 1.8em +#let BODY_FONT_SIZE = 10pt +#let HEADING_FONT_SIZE = 0.95em +#let TITLE_FONT_SIZE = 2em #let HEADING_LINE_GAP = 3mm -#let BODY_LINE_HEIGHT = 0.65em +#let BODY_LINE_HEIGHT = 0.75em -#let HEADING_DETAILS_LIST_SPACING = 0.8em -#let DETAILS_TITLE_FONT_SIZE = 1.05em +#let HEADING_DETAILS_LIST_SPACING = 0.9em +#let DETAILS_TITLE_FONT_SIZE = 1.075em -#let DETAILS_LIST_SPACING = 0.75em +#let DETAILS_LIST_SPACING = 0.85em // rest = not top -#let PAGE_MARGINS = (right: 0.4in, left: 0.3in, rest: 0.4in) +#let PAGE_MARGINS = (right: 0.45in, left: 0.4in, rest: 0.4in) // Format locations. #let format_location(location) = { @@ -28,7 +28,7 @@ } #let indent(content) = { - block(inset: (left: 0em, right: 0em), content) + block(inset: (left: 0.75em, right: 1em), content) } // General entry that is split into a left and right half (for experience and education). @@ -36,7 +36,7 @@ stack( dir: ttb, spacing: HEADING_DETAILS_LIST_SPACING, - grid(columns: (13fr, 3fr), column-gutter: 0.5cm, { + grid(columns: (15fr, 4fr), column-gutter: 0cm, { set strong(delta: DEFAULT_STRONG) set align(left) left_content @@ -67,6 +67,7 @@ text(DETAILS_TITLE_FONT_SIZE)[*#company* | _#role _] if tools != none { + set strong(delta: SMALL_STRONG) text[ | *#tools* ] } }, right_content: {