From 4668012c1109a25810475e47a2720c40054ab871 Mon Sep 17 00:00:00 2001 From: Toby Vincent Date: Fri, 26 Apr 2024 19:01:05 -0500 Subject: wip: more work --- assets/icons/square-phone-solid.svg | 0 config.toml | 21 +++++++ cover_letter.typ | 7 +++ lib.typ | 111 ++++++++++++++++++++++++++++++++++++ moderncv.typ | 76 ------------------------ resume.typ | 59 ++++++++++++++----- 6 files changed, 183 insertions(+), 91 deletions(-) create mode 100644 assets/icons/square-phone-solid.svg create mode 100644 config.toml create mode 100644 lib.typ delete mode 100644 moderncv.typ diff --git a/assets/icons/square-phone-solid.svg b/assets/icons/square-phone-solid.svg new file mode 100644 index 0000000..e69de29 diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..a102c81 --- /dev/null +++ b/config.toml @@ -0,0 +1,21 @@ +lang = "en" +color = "#262F99" +font = ["Source Sans Pro", "Source Sans 3"] + +[author] +name = "Toby Vincent" +title = "Software Engineer" + +[contact] +email = "tobyv@tobyvin.dev" +phone = "217.617.3424" +website = "tobyvin.dev" +sourcehut = "~tobyvin" +github = "tobyvin" +linkedin = "tobyvin" + +[contact.address] +street = "111 Whitsell Way" +city = "Granite City" +state = "Illinois" +zip = "62040" diff --git a/cover_letter.typ b/cover_letter.typ index 8ab686e..c8ecf1f 100644 --- a/cover_letter.typ +++ b/cover_letter.typ @@ -1 +1,8 @@ +#import "lib.typ": cover_letter + +#show: cover_letter.with( + author: "Toby Vincent", title: "Software Engineer", github: "tobyvin", phone: "217.617.3424", + email: "tobyv@tobyvin.dev", +) + Hello, World! diff --git a/lib.typ b/lib.typ new file mode 100644 index 0000000..3c7703d --- /dev/null +++ b/lib.typ @@ -0,0 +1,111 @@ +#import "@preview/fontawesome:0.1.0": * + +#let left_column_size = 15% +#let grid_column_gutter = 10pt + +#let color-darknight = rgb("#131A28") +#let color-darkgray = rgb("#333333") +#let color-gray = rgb("#5d5d5d") +#let color-blue = rgb("#262F99") +#let svg-sourcehut = ``````.text + +#let linkedin-icon = box() + +#let header(contact) = align(right + top)[ + #set block(below: 0.5em) + #set text(0.90em, style: "italic", fill: color-darkgray) + + #fa-phone() #link("tel:" + contact.phone, contact.phone) + + #fa-envelope() #link("mailto:" + contact.email) + + #fa-globe() #link("https://" + contact.website, contact.website) + + #fa-linkedin() #link( + "https://linkedin.com/in/" + contact.linkedin, + contact.linkedin, + ) + + #fa-github() #link("https://github.com/" + contact.github, contact.github) + + #box(height: 0.9em, image.decode(svg-sourcehut)) #link( + "https://sr.ht/" + contact.sourcehut, + contact.sourcehut, + ) +] + +#let resume(config, body) = { + set document(author: config.author.name, title: "resume") + set page(numbering: none) + set text(font: config.font, lang: config.lang, fallback: true) + set list( + marker: box( + circle(radius: 0.2em, stroke: rgb(config.color)), + inset: (top: 0.15em), + ), + ) + set enum(numbering: n => text(fill: rgb(config.color), [#n.])) + set par(justify: true, leading: 0.5em) + + grid( + columns: (1fr, 1fr), + box[ + #text(config.author.name, weight: 400, 2.5em) + #v(-1.2em) + #block( + text( + config.author.title, + weight: 400, + style: "italic", + fill: gray, + 1.5em, + ), + ) + ], + header(config.contact), + ) + + show heading.where(level: 1): element => [ + #v(0em) + #box( + inset: (right: grid_column_gutter, bottom: 0.1em), + rect(fill: rgb(config.color), width: left_column_size, height: 0.25em), + ) + #text(element.body, fill: rgb(config.color), weight: 400) + ] + + show heading.where(level: 2): element => [ + #grid( + columns: (left_column_size, auto), + row-gutter: 0.5em, + column-gutter: grid_column_gutter, + )[][ + #text(element.body, fill: rgb(config.color), weight: 400) + ] + ] + + body +} + +#let cover_letter( + author: (:), + date: datetime.today().display("[month repr:long] [day], [year]"), + title: "", + phone: "", + email: "", + github: "", + color: color-blue, + body, +) = { + header(phone: phone, email: email, github: github) +} + +#let cventry(label: [], title: [], subtitle: [], description) = grid( + columns: (left_column_size, auto), + row-gutter: 2em, + column-gutter: grid_column_gutter, +)[#align(right, label)][ + #text(title + if title != [] [,], size: 1em, weight: 800) + #text(subtitle, size: 1em, weight: 400, style: "italic") + #description +] diff --git a/moderncv.typ b/moderncv.typ deleted file mode 100644 index 7ad10b7..0000000 --- a/moderncv.typ +++ /dev/null @@ -1,76 +0,0 @@ -#let left_column_size = 15% -#let grid_column_gutter = 10pt - -#let project(author: [], title: "", phone: "", email: "", github: "", color: navy, body) = { - set document(author: author, title: title) - set page(numbering: none) - set text(font: ("Latin Modern Sans", "Inria Sans"), lang: "en", fallback: true) - show math.equation: set text(weight: 400) - - show heading.where(level: 1): element => [ - #v(0em) - #box( - inset: (right: grid_column_gutter, bottom: 0.1em), rect(fill: color, width: left_column_size, height: 0.25em), - ) - #text(element.body, fill: color, weight: 400) - ] - - show heading.where(level: 2): element => [ - #grid( - columns: (left_column_size, auto), row-gutter: 0.5em, column-gutter: grid_column_gutter, - )[][ - #text(element.body, fill: color, weight: 400) - ] - ] - - set list(marker: box(circle(radius: 0.2em, stroke: color), inset: (top: 0.15em))) - - set enum(numbering: (n) => text(fill: color, [#n.])) - - grid( - columns: (1fr, 1fr), box[ - #text([#author], weight: 400, 2.5em) - #v(-1.2em) - #block(text(weight: 400, 1.5em, title, style: "italic", fill: gray)) - ], align( - right + top, - )[ - #set block(below: 0.5em) - - #if github != "" { - align(top)[ - #box(height: 1em, baseline: 20%)[#pad(right: 0.4em)[#image("icons/github.svg")]] - #link("https://github.com/" + github)[#github] - ] - } - - #if phone != "" { - align(top)[ - #box(height: 1em, baseline: 20%)[#pad(right: 0.4em)[#image("icons/phone-solid.svg")]] - #link("tel:" + phone)[#phone] - ] - } - - #if email != "" { - align( - top, - )[ - #box(height: 1em, baseline: 20%)[#pad(right: 0.4em)[#image("icons/envelope-regular.svg")]] - #link("mailto:" + email) - ] - } - ], - ) - - set par(justify: true, leading: 0.5em) - - body -} - -#let cventry(label: [], title: [], subtitle: [], description) = grid( - columns: (left_column_size, auto), row-gutter: 2em, column-gutter: grid_column_gutter, -)[#align(right, label)][ - #text(title + if title != [] [,], size: 1em, weight: 800) - #text(subtitle, size: 1em, weight: 400, style: "italic") - #description -] diff --git a/resume.typ b/resume.typ index c6cb5f5..0ac1b20 100644 --- a/resume.typ +++ b/resume.typ @@ -1,14 +1,15 @@ -#import "moderncv.typ": * +#import "lib.typ": resume, cventry -#show: project.with( - author: "Toby Vincent", title: "Software Engineer", github: "tobyvin", phone: "217.617.3424", - email: "tobyv@tobyvin.dev", -) +#let config = toml("config.toml") + +#show: resume.with(config) = Education #cventry( - label: [2018--2022], title: "Computer Science, B.S.", subtitle: "Southern Illinois University, Edwardsville, Illinois", + label: [2018--2022], + title: "Computer Science, B.S.", + subtitle: "Southern Illinois University, Edwardsville, Illinois", )[ - Nomination for the IPAC Senior Design Project Showcase - Consecutive Dean's List Honoree @@ -17,7 +18,9 @@ = Work Experience #cventry( - label: [2021--2022], title: "Teaching Assistant", subtitle: "Southern Illinois University, Edwardsville, Illinois", + label: [2021--2022], + title: "Teaching Assistant", + subtitle: "Southern Illinois University, Edwardsville, Illinois", )[ - Developed and tested projects designed to evaluate students capability - Developed flexible test harnesses to expedite project testing @@ -25,7 +28,9 @@ ] #cventry( - label: [2013--2014], title: "IT Technician", subtitle: "Craig Industries, Inc., Quincy, Illinois", + label: [2013--2014], + title: "IT Technician", + subtitle: "Craig Industries, Inc., Quincy, Illinois", )[ - Worked with the IT Director to solve crises involving production systems - Deployed and operated server and network infrastructure @@ -33,14 +38,18 @@ ] #cventry( - label: [2015--2016], title: "Customer Consultant", subtitle: "Eagle Technologies Inc., Quincy, Illinois", + label: [2015--2016], + title: "Customer Consultant", + subtitle: "Eagle Technologies Inc., Quincy, Illinois", )[ - Assessed customer's needs to provide best fit solutions - Triaged hardware and software issues ] #cventry( - label: [2015--2015], title: "Geek Squad", subtitle: "Best Buy Co. Inc., Quincy, Illinois", + label: [2015--2015], + title: "Geek Squad", + subtitle: "Best Buy Co. Inc., Quincy, Illinois", )[ - Repaired both hardware and software issues on a wide range of devices - Coached clients in 1-on-1 sessions @@ -62,18 +71,38 @@ = Projects -#cventry(label: [2023], title: "projectr", subtitle: "A contextual, MRU sorted, project finder.")[ +#cventry( + label: [2023], + title: "projectr", + subtitle: "A contextual, MRU sorted, project finder.", +)[ #link("https://sr.ht/~tobyvin/projectr") ] -#cventry(label: [2023], title: "sshr", subtitle: "A contextual, MRU sorted, ssh host indexer.")[ +#cventry( + label: [2023], + title: "sshr", + subtitle: "A contextual, MRU sorted, ssh host indexer.", +)[ #link("https://sr.ht/~tobyvin/sshr") ] -#cventry(label: [2022], title: "proxyr", subtitle: "A simple auto-proxy server.")[ +#cventry( + label: [2022], + title: "proxyr", + subtitle: "A simple auto-proxy server.", +)[ #link("https://sr.ht/~tobyvin/proxyr") ] -#cventry(label: [2021], title: "Zone", subtitle: "Lightweight container management system.")[ +#cventry( + label: [2021], + title: "Zone", + subtitle: "Lightweight container management system.", +)[ #link("https://sr.ht/~tobyvin/zone") ] -#cventry(label: [2020], title: "SocketNews", subtitle: "Client-Server news network")[ +#cventry( + label: [2020], + title: "SocketNews", + subtitle: "Client-Server news network", +)[ #link("https://sr.ht/~tobyvin/socketnews") ] -- cgit v1.2.3-70-g09d2