From 247eeb945e950c90495448706d2ee7c691db3ff0 Mon Sep 17 00:00:00 2001 From: eggy Date: Sat, 21 Oct 2023 15:06:08 -0400 Subject: [PATCH] Make it orange (#1) And make it much much prettier! Co-authored-by: eggy Reviewed-on: https://git.eggworld.me/eggy/resume/pulls/1 --- Daniel Chen.typ | 57 +++++++++++++++++++++++++++---------------------- lib.typ | 45 ++++++++++++++++++++++++++------------ 2 files changed, 62 insertions(+), 40 deletions(-) diff --git a/Daniel Chen.typ b/Daniel Chen.typ index 52da099..143c8ca 100644 --- a/Daniel Chen.typ +++ b/Daniel Chen.typ @@ -1,16 +1,15 @@ #import "fontawesome.typ": * -#import "lib.typ": template, education_entry, work_entry, project, indent +#import "lib.typ": template, education_entry, work_entry, project, indent, SMALL_STRONG, DEFAULT_STRONG #set page(margin: 1.75in) #set par(leading: 0.5em, first-line-indent: 1.8em, justify: true) -#show raw: set text(font: "New Computer Modern Mono") #show par: set block(spacing: 0.55em) #show heading: set block(above: 2em, below: 1em) #set list(indent: 1em) // Change the theme color of the cv. -#let color = black +#let color = rgb("#ff983e") #let name = "Daniel Chen" #let contact_data = ( @@ -21,18 +20,18 @@ ), ( service: fa[#github], - display: "potatoeggy", + display: "github.com/potatoeggy", link: "https://github.com/potatoeggy" ), ( service: fa[#linkedin], - display: "potatoeggy", + display: "linkedin.com/in/potatoeggy", link: "https://www.linkedin.com/in/potatoeggy/" ), ( service: fa[#envelope], - display: "daniel.chen1@uwaterloo.ca", - link: "mailto://daniel.chen1@uwaterloo.ca" + display: "d7chen@uwaterloo.ca", + link: "mailto://d7chen@uwaterloo.ca" ), ) @@ -40,6 +39,11 @@ // MAIN CONTENT STARTS here +// TODO: make lines more impactful +// introduce some bolding (a lighter gray) to highlight things +// improve readability / ideally increase line height +// rn it looks like a wall of text + = Skills #indent[ @@ -55,37 +59,38 @@ "Software Engineering Intern", "Dropbase", start_date: "May 2023", end_date: "Aug 2023", - location: "Remote", + location: "San Francisco, CA (Remote)", tasks: ( - "Automated synchronising Airtable and HubSpot APIs with Google Sheets via AWS Lambda", - "Engineered a heuristic algorithm for resolving SQL aliases for database-specific editor autocompletion", - "Refactored the frontend to use react-hook-form to aggregate and validate user input, improving DX", - "Built a service for importing and validating CSV/Excel files from personalised email addresses into databases", + [Automated synchronising Airtable and HubSpot APIs with Google Sheets via *AWS Lambda*], + [Engineered a *heuristic algorithm* for resolving *SQL* aliases for database-specific editor autocompletion], + [Refactored the frontend to use *react-hook-form* to aggregate and validate user input, improving DX], + [Built a service for importing and validating CSV/Excel files from personalised email addresses into databases], ) ) #work_entry( "Backend Developer", - "Hack the North", + "Techyon", start_date: "Mar 2023", end_date: "present", location: "Waterloo, ON", tasks: ( - "Integrated OpenTelemetry and Grafana into a Kubernetes cluster to collect traces and improve observability", - "Dynamically generated Apple Wallet pass files over Apollo GraphQL Server to streamline registration", - "Automated judge-to-hacker matching and scheduling with a custom algorithm based on their preferences", - "Organised Canada's largest hackathon with more than 1000 attendees and 6000 applicants", + [Integrated *OpenTelemetry* and Grafana into a *Kubernetes* cluster to collect traces and improve observability], + [Dynamically generated Apple Wallet pass files over *Apollo GraphQL* Server to streamline registration], + [Automated judge-to-hacker matching and scheduling with a custom algorithm based on their preferences], + [Organised Canada's largest hackathon with more than 1000 attendees and 6000 applicants], ) ) ] = Projects +#set strong(delta: SMALL_STRONG) #indent[ #project("Mandown Comic Converter", "https://github.com/potatoeggy/mandown", "Python, Qt") - Developed a CLI to scrape, download, and convert online comics into e-ink friendly formats - Abstracted 4 ebook creation libraries into a common comic conversion API for e-ink devices -- Implemented image caching and multiprocessing to increase download and update speeds by 300% -- Minimised regressions between release cycles by writing unit and integration tests with 55% code coverage +- Implemented *image caching and multiprocessing* to increase download and update speeds by *300%* +- Minimised regressions between release cycles by writing *unit and integration tests* with 55% code coverage #project("Primoprod Genshin Simulator", "https://github.com/potatoeggy/primoprod", "Vue, TypeScript") - Created an interactive, realistic, cross-platform game simulator with fluid animations based off a popular game @@ -96,13 +101,13 @@ // - ??? something here (synchronisation and DB, HTTP headers) #project("RecipeReady Recipe Aggregator", "https://github.com/vincentjguo/recipeready-server", "Flutter, Selenium, FastAPI, Android") -- Developed a cross-platform mobile/web app to search for recipes based on ingredients and dietary restrictions -- Scraped thousands of websites for recipes to build a database with a robust many-to-many tag system +- Developed a cross-platform mobile/web app to generate recipes based on ingredients and dietary restrictions +- Scraped thousands of websites for recipes to build a database with a robust *many-to-many tag system* - Aggregated common ingredients heuristically to build a shopping list and a meal plan for each week -#project("\"Pillow\" Water Quality Sensor", "https://github.com/potatoeggy/ece198", "Rust, STM32") -- Created a water quality statistics aggregator and visualiser on an embedded platform in safe Rust -- Engineered an embedded system with an STM32 microcontroller, matrix keypad, and an LCD display +#project("Box Box Revolution", "https://github.com/potatoeggy/boxboxrevolution", "Rust, STM32") +- Developed a rhythm game to detect punches with an ultrasonic sensor in line wth notes of popular songs +- Developed firmware to measure from an ultrasonic sensor, tone a buzzer, and show scrolling notes on an LCD ] = Awards @@ -116,9 +121,9 @@ #indent[ #education_entry( - "University of Waterloo", "Candidate for B.A.Sc. in Computer Engineering", start_date: "Sep 2022", end_date: "Apr 2027", + "University of Waterloo", "Candidate for B.A.Sc. in Computer Engineering", start_date: "Sep 2022", end_date: "Apr 2027 (expected)", location: "Waterloo, ON", details: ( - [Secretary, Creative Writing Club], + [Courses: Object-oriented programming, data structures & algorithms, digital computers & circuits ], )) ] diff --git a/lib.typ b/lib.typ index 12c0ed0..1a4957c 100644 --- a/lib.typ +++ b/lib.typ @@ -1,10 +1,7 @@ #import "fontawesome.typ": github, fa -// Reduce space between paragraphs. -#let par_space = 0.75em -// Reduce space between headings and descriptions. -#let sep_space = par_space + 0.1em -#let subtitle_space = par_space - 0.2em +#let DEFAULT_STRONG = 300; +#let SMALL_STRONG = 200; // Format start and end dates. #let format_date(start_date: none, end_date: none) = { @@ -46,12 +43,14 @@ left_content }, { + set strong(delta: SMALL_STRONG) set align(right) right_content } ), { set align(left) + set strong(delta: SMALL_STRONG) details } ) @@ -70,6 +69,7 @@ } cv_entry( left_content: { + set strong(delta: DEFAULT_STRONG) text(1.2em)[*#university*] + "\n" + emph[#degree] }, right_content: { @@ -110,17 +110,21 @@ } #let project(title, repo_link, tools) = { + set strong(delta: DEFAULT_STRONG) link(repo_link)[#text(1.1em)[*#title* #fa(github)]] + [ | _ #tools _] } // Set name and contact data and format headings #let template(name, contact_data, color, doc) = { + let TITLE_FONT = "Bitter" + let HEADING_FONT = "Bitter" + let BODY_FONT = "Open Sans" set page(margin: (rest: 0.5in, top: 0.4in), paper: "us-letter") set list(indent: 1.25em, marker: [•]) - set text(font: "Latin Modern Sans", 11pt) - set par(justify: true, leading: 0.65em) + set text(font: (BODY_FONT), 10pt) + set par(justify: true, leading: 0.85em) align(center)[ - #text(size: 2em)[*#name*] + #text(size: 2em, font: TITLE_FONT, fill: color)[*#name*] #block(above: 0em, below: 1em) #{ if contact_data != none and contact_data.len() > 0 { @@ -133,16 +137,29 @@ ] show heading.where(level: 1): i => { - set align(left) + set align(left + horizon) let title = smallcaps(i.body) + let colored_line(header_text) = style(styles => { + let size = measure(header_text, styles) - set block(above: 1em) - set text(weight: "light", size: 0.9em, fill: color, font: "New Computer Modern") + // 100% - spacing - width of text + line(length: 100% - 3mm - size.width, stroke: (paint: color, thickness: 2pt, cap: "round")) + }) + + // add line to right of heading + + set block(above: 0.9em, below: 0.75em) + set text(size: 1em, fill: color, font: HEADING_FONT) stack( - dir: ttb, - spacing: 1.5mm, + dir: ltr, + spacing: 3mm, title, - line(length: 100%, stroke: color + 0.4pt) + box( + height: 2pt, + fill: color, + colored_line(title) + ) + ) }