diff --git a/Daniel Chen.typ b/Daniel Chen.typ index 65a89e0..23eb7c5 100644 --- a/Daniel Chen.typ +++ b/Daniel Chen.typ @@ -148,8 +148,6 @@ "Mandown Comic Downloader", "Python, Qt", repo_link: "https://github.com/potatoeggy/mandown", - start_date: "Jan 2022", - end_date: "present", tasks: ( [Created a CLI and GUI to scrape, download, and convert webcomics into e-ink-optimised PDF/EPUBs], @@ -164,8 +162,6 @@ "Kobo Sync Server", "Rust, Axum", repo_link: "https://github.com/potatoeggy/kobink", - start_date: "Nov 2023", - end_date: "present", tasks: ( [Developed a *Rust* backend to sync custom ebook files to Kobos by reimplementing the Kobo Sync API], @@ -189,8 +185,6 @@ "Jeopardy!", "Vue, TypeScript, WebSockets", repo_link: "https://github.com/potatoeggy/jeopardy", - start_date: "Apr 2023", - end_date: "present", demo_link: "https://jeopardy.eggworld.me/host", tasks: ( [Developed a beautiful and polished game where participants buzz in on their diff --git a/lib.typ b/lib.typ index f9285ea..e27e422 100644 --- a/lib.typ +++ b/lib.typ @@ -12,7 +12,7 @@ #let TITLE_FONT_SIZE = 2em #let HEADING_LINE_GAP = 3mm -#let BODY_LINE_HEIGHT = 0.75em +#let BODY_LINE_HEIGHT = 0.8em #let HEADING_DETAILS_LIST_SPACING = 0.9em #let DETAILS_TITLE_FONT_SIZE = 1.075em @@ -20,7 +20,7 @@ #let DETAILS_LIST_SPACING = 0.85em // rest = not top -#let PAGE_MARGINS = (right: 0.45in, left: 0.4in, rest: 0.4in) +#let PAGE_MARGINS = (rest: 0.5in, top: 0.4in, left: 0.4in, bottom: 0.4in) // Format locations. #let format_location(location) = { @@ -28,7 +28,7 @@ } #let indent(content) = { - block(inset: (left: 0.75em, right: 1em), content) + block(inset: (left: 0.75em, right: 0.5em), content) } // General entry that is split into a left and right half (for experience and education). @@ -46,7 +46,7 @@ right_content }), { - set strong(delta: DEFAULT_STRONG) + set strong(delta: SMALL_STRONG) list(tight: false, spacing: DETAILS_LIST_SPACING, marker: [•], ..details) }, ) @@ -63,88 +63,61 @@ location: none, company_link: none, ) = { - cv_entry( - left_content: { - set par(justify: true) - if company_link == none { - text(DETAILS_TITLE_FONT_SIZE)[*#company* | _#role _] - } else { - // size is DETAILS_TITLE_FONT_SIZE - text(DETAILS_TITLE_FONT_SIZE)[#link(company_link)[*#company*] | _#role _] - } + cv_entry(left_content: { + set par(leading: 0.75em) - if tools != none { - set strong(delta: SMALL_STRONG) - text[ | *#tools* ] - } - }, - right_content: { - [_#start_date -- #end_date _] - // if location != none { - // format_location(location) - // } - }, - details: tasks, - ) + if company_link == none { + text(1.1em)[*#company*] + } else { + text(1.1em)[#link(company_link)[*#company*]] + } + + if tools != none { + text[ | _ #tools _ ] + } + + "\n" + set strong(delta: SMALL_STRONG) + [*#role*] + }, right_content: { + [*#start_date -- #end_date*] + + if location != none { + "\n" + format_location(location) + } + }, details: tasks) } -#let project( - title, - tools, - start_date: none, - end_date: none, - repo_link: none, - demo_link: none, - tasks: none, -) = { +#let project(title, tools, repo_link: none, demo_link: none, tasks: none) = { set strong(delta: DEFAULT_STRONG) let text_link = if demo_link != none { demo_link } else { repo_link } - let date_content = if start_date != none { - [_#start_date -- #end_date _] - } else { - none - } let content_title = { - set text(size: DETAILS_TITLE_FONT_SIZE) if text_link != none { - link(text_link)[#text[*#title*]] + link(text_link)[#text(1.1em)[*#title*]] } else { - text[*#title*] + text(1.1em)[*#title*] } if demo_link != none { - link(demo_link)[ #fa(link-icon) ] + link(demo_link)[#text(1.1em)[ #fa(link-icon) ]] } if repo_link != none { - link(repo_link)[ #fa(github) ] + link(repo_link)[#text(1.1em)[ #fa(github) ]] } [ | _ #tools _ ] } - cv_entry( - left_content: content_title, - right_content: date_content, - details: tasks, - ) -} - -#let render_contact_data(data) = { - align(center)[ - #let elements = for el in data { - (link(el.link)[#{ el.service + " " + el.display }],) - } - #text(1em)[#elements.join(" | ")] - ] + cv_entry(left_content: content_title, details: tasks) } // Set name and contact data and format headings #let template(name, color, doc) = { set page(margin: PAGE_MARGINS, paper: "us-letter") - set list(indent: 0.75em, marker: [•]) + set list(indent: 1em, marker: [•]) set text(font: (BODY_FONT), BODY_FONT_SIZE) - set par(leading: BODY_LINE_HEIGHT) + set par(justify: true, leading: BODY_LINE_HEIGHT) align(center)[ #text(size: TITLE_FONT_SIZE, font: TITLE_FONT, fill: color)[*#name*] #block(above: 0em, below: 1em) @@ -175,3 +148,12 @@ } doc } + +#let render_contact_data(data) = { + align(center)[ + #let elements = for el in data { + (link(el.link)[#{ el.service + " " + el.display }],) + } + #text(1em)[#elements.join(" | ")] + ] +}