diff --git a/Daniel Chen.typ b/Daniel Chen.typ index e8e297b..32a2835 100644 --- a/Daniel Chen.typ +++ b/Daniel Chen.typ @@ -2,7 +2,7 @@ #import "lib.typ": template, work_entry, project, indent, SMALL_STRONG, DEFAULT_STRONG // orange!! -#let color = rgb("#ff983e") +#let color = blue // rgb("#ff983e") #let name = "Daniel Chen" #let contact_data = (( @@ -27,29 +27,14 @@ // MAIN CONTENT STARTS here -= Education - -#indent[ - #work_entry( - "University of Waterloo", - "B.A.Sc. in Computer Engineering", - start_date: "Sep 2022", - end_date: "Apr 2027", - location: "Waterloo, ON", - tasks: ( - [Courses: Object-oriented programming, data structures & algorithms, digital - computers & circuits], - ), - ) -] - = Skills #indent[ - *Languages:* Python, TypeScript, JavaScript, Rust, SQL, MATLAB, C, C++, Java, - HTML, CSS, Dart \ - *Frameworks:* Node.js, Express, React, Next.js, Vue, Flutter, Qt, Prisma, - Apollo, Axum, Jest, Pytest \ + *Languages:* Python, TypeScript, JavaScript, Rust, SQL, C++, Java, + HTML, CSS \ + // MATLAB, Dart, C + *Frameworks:* Node.js, Express, React, Next.js, Vue, Flutter, Axum \ + // Qt, Jest / Pytest, Apollo, Prisma *Tools:* Linux, Git, Docker, PostgreSQL, Redis, Kubernetes, AWS, GCP, OpenTelemetry, GraphQL, Android ] @@ -63,17 +48,18 @@ start_date: "May 2023", end_date: "Aug 2023", location: "San Francisco, CA", + tools: "Python, TypeScript, FastAPI, AWS, React, Pytest", tasks: ( [Designed a conflict resolution algorithm for business smart tables, *reducing unrecoverable errors by 75%*], - [Launched a service to validate and import CSV/Excel attachments into DBs by - expanding engine support by *6x*], [Shipped a HubSpot/Airtable to Google Sheets sync feature to *46000+ enterprise users* by writing *AWS Lambda* functions in Python, abstracting interfaces to easily support future sources], [Wrote and deployed a new *React* data query builder to *33000+ users* by standardising and enforcing protocols between interfaces across the stack, eliminating the need for business users to manually write API calls], + [Launched a service to validate and import CSV/Excel attachments into DBs by + expanding engine support by *6x*], [*Reduced request errors by 30%* by creating backend testing infrastructure with *Pytest* to catch regressions and test new features across database engines with *90% code coverage*], @@ -86,15 +72,15 @@ start_date: "Mar 2023", end_date: "present", location: "Waterloo, ON", + tools: "TypeScript, GraphQL, Docker, Kubernetes, Jest", tasks: ( - [Streamlined event check-in times by *80%* by generating user-specific mobile - ticket passes over *Express*], - [Deployed a new attendee bus registration platform by creating new database - tables and *GraphQL* resolvers], + [Streamlined event check-in times by *80%* by generating user-specific Apple Wallet passes over *Express*], [Horizontally scaled the *Node* server to handle *1000+ concurrent users* with *Redis* and *Kubernetes*], [Integrated backend *tracing* to monitor performance and trigger alerts with *OpenTelemetry* and *Grafana*], + [Deployed a new attendee bus registration platform by creating new database + tables and *GraphQL* resolvers], [Slashed boot and reload times by *93%* by introducing *threading, profiling*, and pre-transpiling generated code], ), @@ -105,7 +91,8 @@ #set strong(delta: SMALL_STRONG) #indent[ - #project("Mandown", "https://github.com/potatoeggy/mandown", "Python, Qt") + #project("Comic Downloader", "Python, Qt", + repo_link: "https://github.com/potatoeggy/mandown") - Created a CLI and GUI to scrape, download, and convert webcomics into e-ink-optimised ebooks (EPUB, PDF) - Designed an *intermediate representation* to store metadata and images as a @@ -114,38 +101,56 @@ speeds by *300%* #project( - "Genshin Wish Simulator", - "https://github.com/potatoeggy/primoprod", + "Genshin Simulator", "Vue, TypeScript", + repo_link: "https://github.com/potatoeggy/primoprod", + demo_link: "https://primoprod.vercel.app" ) - Built a realistic and beautiful *loot box simulator* with fluid animations based off a popular game - Reduced action latency by *90%* by lazily loading art assets at opportune times, such as during cutscenes - #project("Kobink", "https://github.com/potatoeggy/kobink", "Rust, Axum") + #project("Kobo Sync Server", "Rust, Axum", repo_link: "https://github.com/potatoeggy/kobink") - Developed an Axum backend to *automatically convert and sync* ebooks to a Kobo eReader over the network - *Reverse-engineered* the Kobo eReader Sync API to support updating ebook metadata and covers - #project( - "RecipeReady", - "https://github.com/vincentjguo/recipeready-server", - "Flutter, Selenium, FastAPI, Android", - ) - - Developed a *Flutter app* to generate recipes based on ingredients and filters - through a FastAPI server - - Scraped thousands of websites for recipes to build a database with a robust - *many-to-many tag system* + // #project( + // "RecipeReady", + // "https://github.com/vincentjguo/recipeready-server", + // "Flutter, Selenium, FastAPI, Android", + // ) + // - Developed a *Flutter app* to generate recipes based on ingredients and filters + // through a FastAPI server + // - 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("Arch Linux Server", none, "Linux, nginx, systemd") - // - Created a *self-hosted CI/CD pipeline* with *Gitea* to automatically deploy - // personal projects behind *nginx* - // - Set up *Jellyfin* for media streaming, a *Minecraft* server, *Calibre* for ebook - // syncing, and other services + #project("Arch Linux Server", "Linux, Docker, nginx, systemd", demo_link: "https://eggworld.me") + - Created a *self-hosted CI/CD pipeline* with *Gitea* to automatically deploy + personal projects behind *nginx* + - Containerised services with *Docker* and *systemd* to simplify deployment and + management +] + += Education + +#indent[ + #work_entry( + "University of Waterloo", + "B.A.Sc. in Computer Engineering", + start_date: "Sep 2022", + end_date: "Apr 2027", + location: "Waterloo, ON", + tasks: ( + [Courses: Object-oriented programming, data structures & algorithms, digital + computers & circuits], + [Extracurriculars: Creative Writing Club, Hack the North, UW Orbital Design Team] + ), + ) ] // = Awards diff --git a/lib.typ b/lib.typ index c54638e..dc7d417 100644 --- a/lib.typ +++ b/lib.typ @@ -1,4 +1,4 @@ -#import "fontawesome.typ": github, fa +#import "fontawesome.typ": github, fa, link-icon #let DEFAULT_STRONG = 300; #let SMALL_STRONG = 200; @@ -8,8 +8,8 @@ #let BODY_FONT = "Open Sans" #let BODY_FONT_SIZE = 10pt -#let HEADING_FONT_SIZE = 1em -#let TITLE_FONT_SIZE = 2.25em +#let HEADING_FONT_SIZE = 0.95em +#let TITLE_FONT_SIZE = 2em #let HEADING_LINE_GAP = 3mm #let BODY_LINE_HEIGHT = 0.85em @@ -31,7 +31,7 @@ stack( dir: ttb, spacing: 0.9em, - grid(columns: (11fr, 6fr), column-gutter: 1cm, { + grid(columns: (11fr, 3fr), column-gutter: 1cm, { set strong(delta: DEFAULT_STRONG) set align(left) left_content @@ -52,6 +52,7 @@ #let work_entry( role, company, + tools: none, tasks: none, start_date: none, end_date: none, @@ -69,9 +70,15 @@ cv_entry(left_content: { set par(leading: 0.75em) text(1.1em)[*#role*] + + if tools != none { + text[ | _ #tools _] + } + "\n" set strong(delta: SMALL_STRONG) text[*#company*] + }, right_content: { [*#start_date -- #end_date*] @@ -81,13 +88,23 @@ }, details: task_list) } -#let project(title, repo_link, tools) = { +#let project(title, tools, repo_link: none, demo_link: none) = { set strong(delta: DEFAULT_STRONG) - if repo_link != none { - link(repo_link)[#text(1.1em)[*#title* #fa(github)]] + [ | _ #tools _ ] + let text_link = if demo_link != none { demo_link } else { repo_link } + if text_link != none { + link(text_link)[#text(1.1em)[*#title*]] } else { - text(1.1em)[*#title*] + [ | _ #tools _ ] + text(1.1em)[*#title*] } + + if demo_link != none { + link(demo_link)[#text(1.1em)[ #fa(link-icon)]] + } + + if repo_link != none { + link(repo_link)[#text(1.1em)[ #fa(github)]] + } + [ | _ #tools _ ] } // Set name and contact data and format headings