diff options
-rw-r--r-- | icons/envelope-regular.svg | 1 | ||||
-rw-r--r-- | icons/github.svg | 1 | ||||
-rw-r--r-- | icons/phone-solid.svg | 1 | ||||
-rw-r--r-- | moderncv.typ | 102 | ||||
-rw-r--r-- | resume.typ | 302 | ||||
-rw-r--r-- | typstfmt.toml | 4 |
6 files changed, 208 insertions, 203 deletions
diff --git a/icons/envelope-regular.svg b/icons/envelope-regular.svg new file mode 100644 index 0000000..6dbdd7b --- /dev/null +++ b/icons/envelope-regular.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M64 112c-8.8 0-16 7.2-16 16v22.1L220.5 291.7c20.7 17 50.4 17 71.1 0L464 150.1V128c0-8.8-7.2-16-16-16H64zM48 212.2V384c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V212.2L322 328.8c-38.4 31.5-93.7 31.5-132 0L48 212.2zM0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z"/></svg>
\ No newline at end of file diff --git a/icons/github.svg b/icons/github.svg new file mode 100644 index 0000000..40e8178 --- /dev/null +++ b/icons/github.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
\ No newline at end of file diff --git a/icons/phone-solid.svg b/icons/phone-solid.svg new file mode 100644 index 0000000..a819a46 --- /dev/null +++ b/icons/phone-solid.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z"/></svg>
\ No newline at end of file diff --git a/moderncv.typ b/moderncv.typ new file mode 100644 index 0000000..001dc02 --- /dev/null +++ b/moderncv.typ @@ -0,0 +1,102 @@ +#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 => [ + #text(element.body + ",", size: 0.8em) + ] + + show heading.where(level: 3): element => [ + #text(element.body, size: 1em, weight: 400, style: "italic") + ] + + show heading.where(level: 4): element => block[#text(element.body, size: 1em, weight: 400, fill: color)] + + 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 datebox(month: "", year: []) = box( + align( + center, stack(dir: ttb, spacing: 0.4em, text(size: 1em, [#year]), text(size: 0.75em, month)), + ), +) + +#let daterange(start: (month: "", year: []), end: (month: "", year: [])) = box( + stack( + dir: ltr, spacing: 0.75em, datebox(month: start.at("month", default: ""), year: start.year), [--], + datebox(month: end.at("month", default: ""), year: end.year), + ), +) + +#let cvgrid(..cells) = grid( + columns: (left_column_size, auto), row-gutter: 0em, column-gutter: grid_column_gutter, ..cells, +) + +#let cvcol(content) = cvgrid([], content) + +#let cventry( + description, start: (month: "", year: ""), end: (month: "", year: ""), place: "", + role: [], +) = cvgrid(align(center, daterange(start: start, end: end)), [ + == #role + === #place +], [], [ + #v(0.5em) + #description +]) + +#let cvlanguage(language: [], description: [], certificate: []) = cvgrid(align(right, language), [#description #h(3em) #text(style: "italic", certificate)]) @@ -1,212 +1,108 @@ -#let resume(body) = { - set list(indent: 1em) - show list: set text(size: 0.92em) - show link: underline - show link: set underline(offset: 3pt) - - set page( - paper: "us-letter", - margin: (x: 0.5in, y: 0.5in) - ) - - set text( - size: 11pt, - font: "New Computer Modern", - ) +#import "moderncv.typ": * - body -} - -#let name_header(name) = { - set text(size: 2.25em) - [*#name*] -} - -#let header( - name: "Jake Ryan", - phone: "123-456-7890", - email: "jake@su.edu", - linkedin: "linkedin.com/in/jake", - site: "github.com/jake", -) = { - align(center, - block[ - #name_header(name) \ - #phone | - #link("mailto:" + email)[#email] | - #link("https://" + linkedin)[#linkedin] | - #link("https://" + site)[#site] - ] - ) - v(5pt) -} - -#let resume_heading(txt) = { - show heading: set text(size: 0.92em, weight: "regular") - - block[ - = #smallcaps(txt) - #v(-4pt) - #line(length: 100%, stroke: 1pt + black) - ] -} - -#let edu_item( - name: "Sample University", - degree: "B.S in Bullshit", - location: "Foo, BA", - date: "Aug. 1600 - May 1750" -) = { - set block(above: 0.7em, below: 1em) - pad(left: 1em, right: 0.5em, grid( - columns: (3fr, 1fr), - align(left)[ - *#name* \ - _#degree _ - ], - align(right)[ - #location \ - _#date _ - ] - )) -} - -#let exp_item( - name: "Sample Workplace", - role: "Worker", - date: "June 1837 - May 1845", - location: "Foo, BA", - ..points -) = { - set block(above: 0.7em, below: 1em) - pad(left: 1em, right: 0.5em, box[ - #grid( - columns: (3fr, 1fr), - align(left)[ - *#role* \ - _#name _ - ], - align(right)[ - #date \ - _#location _ - ] - ) - #list(..points) - ]) -} - -#let project_item( - name: "Example Project", - skills: "Programming Language 1, Database3", - date: "May 1234 - June 4321", - ..points -) = { - set block(above: 0.7em, below: 1em) - pad(left: 1em, right: 0.5em, box[ - *#name* | _#skills _ #h(1fr) #date - #list(..points) - ]) -} - -#let skill_item( - category: "Skills", - skills: "Balling, Yoga, Valorant", -) = { - set block(above: 0.7em) - set text(size: 0.91em) - pad(left: 1em, right: 0.5em, block[*#category*: #skills]) -} - -#show: resume - -#header( - name: "Jake Ryan", - phone: "123-456-7890", - email: "jake@su.edu", - linkedin: "linkedin.com/in/jake", - site: "github.com/jake", +#show: project.with( + author: "Toby Vincent", title: "Software Engineer", github: "tobyvin", phone: "217.617.3424", + email: "tobyv@tobyvin.dev", ) -#resume_heading[Education] -#edu_item( - name: "Southwestern University", - degree: "Bachelor of Arts in Computer Science, Minor in Business", - location: "Georgetown, TX", - date: "Aug. 2018 - May 2021" -) -#edu_item( - name: "Blinn College", - degree: "Associate's in Liberal Arts", - location: "Bryan, TX", - date: "Aug. 2014 - May 2018" += Education + +#cventry( + start: (year: 2018), end: (year: 2022), role: [Computer Science, B.S.], place: "Southern Illinois University, Edwardsville, Illinois", +)[ + - Nomination for the IPAC Senior Design Project Showcase + - Consecutive Dean's List Honoree +] + += Work Experience + +#cventry( + start: (year: 2021), end: (year: 2022), role: [Teaching Assistant], place: "Southern Illinois University, Edwardsville, Illinois", +)[ + - Developed and tested projects designed to evaluate students capability + - Developed flexible test harnesses to expedite project testing + - Held recitation sessions to help students understand and design projects +] + +#cventry( + start: (year: 2013), end: (year: 2014), role: [IT Technician], place: "Craig Industries, Inc., Quincy, Illinois", +)[ + - Worked with the IT Director to solve crises involving production systems + - Deployed and operated server and network infrastructure + - Identified and streamlined operational inefficiencies +] + +#cventry( + start: (year: 2015), end: (year: 2016), role: [Customer Consultant], place: "Eagle Technologies Inc., Quincy, Illinois", +)[ + - Assessed customer's needs to provide best fit solutions + - Triaged hardware and software issues +] + +#cventry( + start: (year: 2015), end: (year: 2015), role: [Geek Squad], place: "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 + - Assessed customer's needs to provide best fit solutions +] + += Side Projects + +#cventry( + start: (month: "December", year: 2099), end: (month: "", year: "Present"), role: [Quux Master], place: "MasterQuuxers.mars", + lorem(40), ) -#resume_heading[Experience] -#exp_item( - role: "Undergraduate Research Assistant", - name: "Texas A&M University", - location: "College Station, TX", - date: "June 2020 - Present", - [Developed a REST API using FastAPI and PostgreSQL to store data from learning management systems], - [Developed a full-stack web application using Flask, React, PostgreSQL and Docker to analyze GitHub data], - [Explored ways to visualize GitHub collaboration in a classroom setting] -) -#exp_item( - role: "Information Technology Support Specialist", - name: "Southwestern University", - location: "Georgetown, TX", - date: "Sep. 2018 - Present", - [Communicate with managers to set up campus computers used on campus], - [Assess and troubleshoot computer problems brought by students, faculty and staff], - [Maintain upkeep of computers, classroom equipment, and 200 printers across campus] -) -#exp_item( - role: "Artificial Intelligence Research Assistant", - name: "Southwestern University", - location: "Georgetown, TX", - date: "May 2019 - July 2019", - [Explored methods to generate video game dungeons based off of #emph[The Legend of Zelda]], - [Developed a game in Java to test the generated dungeons], - [Contributed 50K+ lines of code to an established codebase via Git], - [Conducted a human subject study to determine which video game dungeon generation technique is enjoyable], - [Wrote an 8-page paper and gave multiple presentations on-campus], - [Presented virtually to the World Conference on Computational Intelligence] +#cventry( + start: (month: "March", year: 2098), end: (month: "August", year: 2099), role: [Full-bar frobnicator], + place: "M.O.O.N. Inc", lorem(40), ) -#resume_heading("Projects") -#project_item( - name: "Gitlytics", - skills: "Python, Flask, React, PostgreSQL, Docker", - date: "June 2020 - Present", - [Developed a full-stack web application using with Flask serving a REST API with React as the frontend], - [Implemented GitHub OAuth to get data from user’s repositories], - [Visualized GitHub data to show collaboration], - [Used Celery and Redis for asynchronous tasks] -) -#project_item( - name: "Simple Paintball", - skills: "Spigot API, Java, Maven, TravisCI, Git", - date: "May 2018 - May 2020", - [Developed a Minecraft server plugin to entertain kids during free time for a previous job], - [Published plugin to websites gaining 2K+ downloads and an average 4.5/5-star review], - [Implemented continuous delivery using TravisCI to build the plugin upon new a release], - [Collaborated with Minecraft server administrators to suggest features and get feedback about the plugin] -) += Languages -#resume_heading("Technical Skills") -#skill_item( - category: "Languages", - skills: "Java, Python, C/C++, SQL (Postgres), JavaScript, HTML/CSS, R" -) -#skill_item( - category: "Frameworks", - skills: "React, Node.js, Flask, JUnit, WordPress, Material-UI, FastAPI" -) -#skill_item( - category: "Developer Tools", - skills: "Git, Docker, TravisCI, Google Cloud Platform, VS Code, Visual Studio, PyCharm, IntelliJ, Eclipse" -) -#skill_item( - category: "Libraries", - skills: "pandas, NumPy, Matplotlib" +#cvlanguage(language: [Martian], description: [Mother tongue]) + +#cvlanguage( + language: [Klingon], description: [C64 level], certificate: [Earth Klingon Certificate -- Certificate in Advanced Klingon (CAK64)], ) + +#pagebreak() + += Technical Skills + +#cvcol[ + ==== Programming Languages + + #grid( + columns: (1fr, 1fr, 1fr), row-gutter: 0.5em, [- Java], [- C], + [- C++], [- Python], [- Martian], [- English], + [- ChatGPT], [- Ancient Greek], [- Legalese], + ) +] + +#cvcol[ + ==== Environments + + - Earth (development and server management) + - Wind (development) + - Fire (development) +] + +#cvcol[ + ==== Misc + + Various university-related and personal projects, some available on my GitHub profile. +] + += Other + +#cvcol[ + - Best Pizza Cook Central Mars City 2091 Championship Winner + - Coffee Conossieur + - If You Are Reading This You Are Awesome +] + +#v(1fr) + +#align(center)[_(Last updated: February 2102)_] diff --git a/typstfmt.toml b/typstfmt.toml new file mode 100644 index 0000000..dc9d807 --- /dev/null +++ b/typstfmt.toml @@ -0,0 +1,4 @@ +indent_space = 2 +max_line_length = 99 +experimental_args_breaking_consecutive = true +line_wrap = true |