summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorToby Vincent <tobyv@tobyvin.dev>2024-04-26 19:01:05 -0500
committerToby Vincent <tobyv@tobyvin.dev>2024-04-26 19:01:05 -0500
commit4668012c1109a25810475e47a2720c40054ab871 (patch)
treed0b1c4514347006adc8d3f25c6846d89f5655ae6
parent1c801f17c8a68dab172004ae2c048261e5e4a3d3 (diff)
wip: more worktypst
-rw-r--r--assets/icons/square-phone-solid.svg0
-rw-r--r--config.toml21
-rw-r--r--cover_letter.typ7
-rw-r--r--lib.typ111
-rw-r--r--moderncv.typ76
-rw-r--r--resume.typ59
6 files changed, 183 insertions, 91 deletions
diff --git a/assets/icons/square-phone-solid.svg b/assets/icons/square-phone-solid.svg
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/assets/icons/square-phone-solid.svg
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 = ```<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z"></path></svg>```.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")
]