From bc51d57fe7873283e2404f9e308af36749407d25 Mon Sep 17 00:00:00 2001 From: dozens Date: Tue, 5 Dec 2023 22:51:32 -0700 Subject: [PATCH] first commit --- .gitignore | 2 + LICENSE | 8 + README.md | 46 +++++ example.pdf | Bin 0 -> 18189 bytes example.toml | 117 ++++++++++++ justfile | 30 +++ resume.template | 130 +++++++++++++ schema.json | 498 ++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 831 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 example.pdf create mode 100644 example.toml create mode 100644 justfile create mode 100644 resume.template create mode 100644 schema.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a3ed5cd --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +resume.toml +resume.pdf diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e4917a4 --- /dev/null +++ b/LICENSE @@ -0,0 +1,8 @@ +POSTCARD LICENSE + +Copyright 2023-12-05 christopher.p.brown@gmail.com + +You are free to use this software under the following conditions: + +1. SEND THE AUTHOR A NICE POSTCARD + diff --git a/README.md b/README.md new file mode 100644 index 0000000..a6b6bae --- /dev/null +++ b/README.md @@ -0,0 +1,46 @@ +# resume.toml + +## Movitation + +1. Keep your resume in plain, organized, highly-editable text. + +2. Separation of concerns: write content first. worry about formatting later. + +3. Version control: keep your resume text in a git repository. track your changes. create new branches for large edits or for tailoring your resume while applying to a specific role. + +## About + +This is a resume builder. + +Data is stored in `resume.toml`. + +It is validated against jsonresume's [json-schema][4]. + +And it is extracted as json with [taplo][1]. + +[1]: https://taplo.tamasfe.dev/ + +[4]: https://github.com/jsonresume/resume-schema/blob/master/schema.json + +It is converted to [groff][2] markup +via [mustache][3] templates, +and then exported to pdf. + +[2]: https://www.gnu.org/software/groff/manual/groff.html + +[3]: https://mustache.github.io/ + +## You Will Need + +1. GNU groff version 1.23.0: for typesetting and pdf output (with the ms macro package; it *should* be installed anywhere groff is installed) +2. mustache 4.2.0: for templates +3. taplo 0.8.1: toml toolkit. Provides conversion to JSON, formatting, and validation. +4. jq 1.6: json queries +5. (optional) just 1.14.0: just a command runner + +## Frequently Questioned Answers + +Why TOML? +: Because YAML is a drag. +: Because JSON, while highly serializable, is highly annoying to write with its strict, verbose syntax. +: Because while I love GNU Recfiles, they are just a little too annoying to query diff --git a/example.pdf b/example.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8c30ed9f1661a5734f39b3203b355e4448e1b6d9 GIT binary patch literal 18189 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 literal 0 HcmV?d00001 diff --git a/example.toml b/example.toml new file mode 100644 index 0000000..e075f07 --- /dev/null +++ b/example.toml @@ -0,0 +1,117 @@ +"$schema" = "https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json" + +[basics] +name = "Richard Hendriks" +label = "Programmer" +image = "" +email = "richard.hendriks@mail.com" +phone = "(912) 555-4321" +url = "http://richardhendricks.example.com" +summary = 'Richard hails from Tulsa. He has earned degrees from the University of Oklahoma and Stanford. (Go Sooners and Cardinal!) Before starting Pied Piper, he worked for Hooli as a part time software developer. While his work focuses on applied information theory, mostly optimizing lossless compression schema of both the length-limited and adaptive variants, his non-work interests range widely, everything from quantum computing to chaos theory. He could tell you about it, but THAT would NOT be a "length-limited" conversation!' + +[basics.location] +address = "2712 Broadway St" +postalCode = "CA 94115" +city = "San Francisco" +countryCode = "US" +region = "California" + +[[basics.profiles]] +network = "Twitter" +username = "neutralthoughts" +url = "" + +[[basics.profiles]] +network = "SoundCloud" +username = "dandymusicnl" +url = "https://soundcloud.example.com/dandymusicnl" + +[[work]] +name = "Pied Piper" +location = "Palo Alto, CA" +description = "Awesome compression company" +position = "CEO/President" +url = "http://piedpiper.example.com" +startDate = "2013-12-01" +endDate = "2014-12-01" +summary = "Pied Piper is a multi-platform technology based on a proprietary universal compression algorithm that has consistently fielded high Weisman Scores™ that are not merely competitive, but approach the theoretical limit of lossless compression." +highlights = [ + "Build an algorithm for artist to detect if their music was violating copy right infringement laws", + "Successfully won Techcrunch Disrupt", + "Optimized an algorithm that holds the current world record for Weisman Scores", +] + +[[volunteer]] +organization = "CoderDojo" +position = "Teacher" +url = "http://coderdojo.example.com/" +startDate = "2012-01-01" +endDate = "2013-01-01" +summary = "Global movement of free coding clubs for young people." +highlights = ["Awarded 'Teacher of the Month'"] + +[[education]] +institution = "University of Oklahoma" +url = "https://www.ou.edu/" +area = "Information Technology" +studyType = "Bachelor" +startDate = "2011-06-01" +endDate = "2014-01-01" +score = "4.0" +courses = ["DB1101 - Basic SQL", "CS2011 - Java Introduction"] + +[[awards]] +title = "Digital Compression Pioneer Award" +date = "2014-11-01" +awarder = "Techcrunch" +summary = "There is no spoon." + +[[publications]] +name = "Video compression for 3d media" +publisher = "Hooli" +releaseDate = "2014-10-01" +url = "http://en.wikipedia.org/wiki/Silicon_Valley_(TV_series)" +summary = "Innovative middle-out compression algorithm that changes the way we store data." + +[[skills]] +name = "Web Development" +level = "Master" +keywords = ["HTML", "CSS", "Javascript"] + +[[skills]] +name = "Compression" +level = "Master" +keywords = ["Mpeg", "MP4", "GIF"] + +[[languages]] +language = "English" +fluency = "Native speaker" + +[[interests]] +name = "Wildlife" +keywords = ["Ferrets", "Unicorns"] + +[[references]] +name = "Erlich Bachman" +reference = "It is my pleasure to recommend Richard, his performance working as a consultant for Main St. Company proved that he will be a valuable addition to any company." + +[[projects]] +name = "Miss Direction" +description = "A mapping engine that misguides you" +highlights = [ + "Won award at AIHacks 2016", + "Built by all women team of newbie programmers", + "Using modern technologies such as GoogleMaps, Chrome Extension and Javascript", +] +keywords = ["GoogleMaps", "Chrome Extension", "Javascript"] +startDate = "2016-08-24" +endDate = "2016-08-24" +url = "missdirection.example.com" +roles = ["Team lead", "Designer"] +entity = "Smoogle" +type = "application" + +[meta] +canonical = "https://raw.githubusercontent.com/jsonresume/resume-schema/master/sample.resume.json" +version = "v1.0.0" +lastModified = "2017-12-24T15:53:00" diff --git a/justfile b/justfile new file mode 100644 index 0000000..3a40867 --- /dev/null +++ b/justfile @@ -0,0 +1,30 @@ +# show all recipes +default: + just --list --unsorted + +# convert to json +json: + taplo get -f resume.toml -o json + +# format toml +fmt: + taplo fmt resume.toml + +# validate toml +validate: + taplo lint resume.toml + +# make groff +groff: + just json | mustache - resume.template + +# make pdf +pdf: + just groff | groff -ms -t -Tpdf > resume.pdf + +# example +example: + taplo get -f example.toml -o json \ + | mustache - resume.template \ + | groff -ms -t -Tpdf \ + > example.pdf diff --git a/resume.template b/resume.template new file mode 100644 index 0000000..640e51c --- /dev/null +++ b/resume.template @@ -0,0 +1,130 @@ +.EH '''' +.OH '''' +.nr HM .5i +.nr FM .5i +.TS H +center tab(;); +cbx s +c s +c s +cfI s. +.TH +./" ============ +./" == HEADER == +./" ============ +{{#basics}} +{{name}} +{{email}} - {{phone}} +{{#profiles}} {{{url}}} {{/profiles}} +.sp 1 +T{ +{{{summary}}} +T} +{{/basics}} +.sp 1 +. +. +. +./" ========== +./" == WORK == +./" ========== +.T& +lbv1 s +- - +{{#work}} +lb r +l r +{{#highlights}} +l s +{{/highlights}} +{{/work}} +l l. +Experience +.ds +{{#work}} +{{{name}}};{{{location}}} +{{{position}}};{{startDate}}-{{endDate}} +{{#highlights}} +T{ +.IP \(bu +{{{.}}} +T} +{{/highlights}} +.de +.sp 1 +{{/work}} +; +. +. +. +.\" ============ +.\" == SKILLS == +.\" ============ +.T& +lb s +- - +{{#skills}} +l s +{{/skills}} +l s. +Skills +{{#skills}} +{{{name}}}: {{#keywords}} {{{.}}} {{/keywords}} +{{/skills}} +; +. +. +. +.\" ============ +.\" == AWARDS == +.\" ============ +.T& +lb s +- - +{{#awards}} +l r +{{/awards}} +l r. +Awards +{{#awards}} +{{title}}, {{awarder}};{{date}} +{{/awards}} +; +. +. +. +.\" =============== +.\" == EDUCATION == +.\" =============== +.T& +lb s +- - +{{#education}} +l r +{{/education}} +l l. +Education +{{#education}} +{{institution}}, {{area}};{{startDate}}-{{endDate}} +{{/education}} +; +. +. +. +.\" =============== +.\" == INTERESTS == +.\" =============== +.T& +lb s +- - +{{#interests}} +l s +{{/interests}} +l s. +Interests +{{#interests}} +{{name}}: {{#keywords}} {{{.}}} {{/keywords}} +{{/interests}} +; +.TE + diff --git a/schema.json b/schema.json new file mode 100644 index 0000000..75e7a56 --- /dev/null +++ b/schema.json @@ -0,0 +1,498 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "additionalProperties": false, + "definitions": { + "iso8601": { + "type": "string", + "description": "Similar to the standard date type, but each section after the year is optional. e.g. 2014-06-29 or 2023-04", + "pattern": "^([1-2][0-9]{3}-[0-1][0-9]-[0-3][0-9]|[1-2][0-9]{3}-[0-1][0-9]|[1-2][0-9]{3})$" + } + }, + "properties": { + "$schema": { + "type": "string", + "description": "link to the version of the schema that can validate the resume", + "format": "uri" + }, + "basics": { + "type": "object", + "additionalProperties": true, + "properties": { + "name": { + "type": "string" + }, + "label": { + "type": "string", + "description": "e.g. Web Developer" + }, + "image": { + "type": "string", + "description": "URL (as per RFC 3986) to a image in JPEG or PNG format" + }, + "email": { + "type": "string", + "description": "e.g. thomas@gmail.com", + "format": "email" + }, + "phone": { + "type": "string", + "description": "Phone numbers are stored as strings so use any format you like, e.g. 712-117-2923" + }, + "url": { + "type": "string", + "description": "URL (as per RFC 3986) to your website, e.g. personal homepage", + "format": "uri" + }, + "summary": { + "type": "string", + "description": "Write a short 2-3 sentence biography about yourself" + }, + "location": { + "type": "object", + "additionalProperties": true, + "properties": { + "address": { + "type": "string", + "description": "To add multiple address lines, use \n. For example, 1234 Glücklichkeit Straße\nHinterhaus 5. Etage li." + }, + "postalCode": { + "type": "string" + }, + "city": { + "type": "string" + }, + "countryCode": { + "type": "string", + "description": "code as per ISO-3166-1 ALPHA-2, e.g. US, AU, IN" + }, + "region": { + "type": "string", + "description": "The general region where you live. Can be a US state, or a province, for instance." + } + } + }, + "profiles": { + "type": "array", + "description": "Specify any number of social networks that you participate in", + "additionalItems": false, + "items": { + "type": "object", + "additionalProperties": true, + "properties": { + "network": { + "type": "string", + "description": "e.g. Facebook or Twitter" + }, + "username": { + "type": "string", + "description": "e.g. neutralthoughts" + }, + "url": { + "type": "string", + "description": "e.g. http://twitter.example.com/neutralthoughts", + "format": "uri" + } + } + } + } + } + }, + "work": { + "type": "array", + "additionalItems": false, + "items": { + "type": "object", + "additionalProperties": true, + "properties": { + "name": { + "type": "string", + "description": "e.g. Facebook" + }, + "location": { + "type": "string", + "description": "e.g. Menlo Park, CA" + }, + "description": { + "type": "string", + "description": "e.g. Social Media Company" + }, + "position": { + "type": "string", + "description": "e.g. Software Engineer" + }, + "url": { + "type": "string", + "description": "e.g. http://facebook.example.com", + "format": "uri" + }, + "startDate": { + "$ref": "#/definitions/iso8601" + }, + "endDate": { + "$ref": "#/definitions/iso8601" + }, + "summary": { + "type": "string", + "description": "Give an overview of your responsibilities at the company" + }, + "highlights": { + "type": "array", + "description": "Specify multiple accomplishments", + "additionalItems": false, + "items": { + "type": "string", + "description": "e.g. Increased profits by 20% from 2011-2012 through viral advertising" + } + } + } + } + }, + "volunteer": { + "type": "array", + "additionalItems": false, + "items": { + "type": "object", + "additionalProperties": true, + "properties": { + "organization": { + "type": "string", + "description": "e.g. Facebook" + }, + "position": { + "type": "string", + "description": "e.g. Software Engineer" + }, + "url": { + "type": "string", + "description": "e.g. http://facebook.example.com", + "format": "uri" + }, + "startDate": { + "$ref": "#/definitions/iso8601" + }, + "endDate": { + "$ref": "#/definitions/iso8601" + }, + "summary": { + "type": "string", + "description": "Give an overview of your responsibilities at the company" + }, + "highlights": { + "type": "array", + "description": "Specify accomplishments and achievements", + "additionalItems": false, + "items": { + "type": "string", + "description": "e.g. Increased profits by 20% from 2011-2012 through viral advertising" + } + } + } + } + }, + "education": { + "type": "array", + "additionalItems": false, + "items": { + "type": "object", + "additionalProperties": true, + "properties": { + "institution": { + "type": "string", + "description": "e.g. Massachusetts Institute of Technology" + }, + "url": { + "type": "string", + "description": "e.g. http://facebook.example.com", + "format": "uri" + }, + "area": { + "type": "string", + "description": "e.g. Arts" + }, + "studyType": { + "type": "string", + "description": "e.g. Bachelor" + }, + "startDate": { + "$ref": "#/definitions/iso8601" + }, + "endDate": { + "$ref": "#/definitions/iso8601" + }, + "score": { + "type": "string", + "description": "grade point average, e.g. 3.67/4.0" + }, + "courses": { + "type": "array", + "description": "List notable courses/subjects", + "additionalItems": false, + "items": { + "type": "string", + "description": "e.g. H1302 - Introduction to American history" + } + } + } + } + }, + "awards": { + "type": "array", + "description": "Specify any awards you have received throughout your professional career", + "additionalItems": false, + "items": { + "type": "object", + "additionalProperties": true, + "properties": { + "title": { + "type": "string", + "description": "e.g. One of the 100 greatest minds of the century" + }, + "date": { + "$ref": "#/definitions/iso8601" + }, + "awarder": { + "type": "string", + "description": "e.g. Time Magazine" + }, + "summary": { + "type": "string", + "description": "e.g. Received for my work with Quantum Physics" + } + } + } + }, + "certificates": { + "type": "array", + "description": "Specify any certificates you have received throughout your professional career", + "additionalItems": false, + "items": { + "type": "object", + "additionalProperties": true, + "properties": { + "name": { + "type": "string", + "description": "e.g. Certified Kubernetes Administrator" + }, + "date": { + "$ref": "#/definitions/iso8601" + }, + "url": { + "type": "string", + "description": "e.g. http://example.com", + "format": "uri" + }, + "issuer": { + "type": "string", + "description": "e.g. CNCF" + } + } + } + }, + "publications": { + "type": "array", + "description": "Specify your publications through your career", + "additionalItems": false, + "items": { + "type": "object", + "additionalProperties": true, + "properties": { + "name": { + "type": "string", + "description": "e.g. The World Wide Web" + }, + "publisher": { + "type": "string", + "description": "e.g. IEEE, Computer Magazine" + }, + "releaseDate": { + "$ref": "#/definitions/iso8601" + }, + "url": { + "type": "string", + "description": "e.g. http://www.computer.org.example.com/csdl/mags/co/1996/10/rx069-abs.html", + "format": "uri" + }, + "summary": { + "type": "string", + "description": "Short summary of publication. e.g. Discussion of the World Wide Web, HTTP, HTML." + } + } + } + }, + "skills": { + "type": "array", + "description": "List out your professional skill-set", + "additionalItems": false, + "items": { + "type": "object", + "additionalProperties": true, + "properties": { + "name": { + "type": "string", + "description": "e.g. Web Development" + }, + "level": { + "type": "string", + "description": "e.g. Master" + }, + "keywords": { + "type": "array", + "description": "List some keywords pertaining to this skill", + "additionalItems": false, + "items": { + "type": "string", + "description": "e.g. HTML" + } + } + } + } + }, + "languages": { + "type": "array", + "description": "List any other languages you speak", + "additionalItems": false, + "items": { + "type": "object", + "additionalProperties": true, + "properties": { + "language": { + "type": "string", + "description": "e.g. English, Spanish" + }, + "fluency": { + "type": "string", + "description": "e.g. Fluent, Beginner" + } + } + } + }, + "interests": { + "type": "array", + "additionalItems": false, + "items": { + "type": "object", + "additionalProperties": true, + "properties": { + "name": { + "type": "string", + "description": "e.g. Philosophy" + }, + "keywords": { + "type": "array", + "additionalItems": false, + "items": { + "type": "string", + "description": "e.g. Friedrich Nietzsche" + } + } + } + } + }, + "references": { + "type": "array", + "description": "List references you have received", + "additionalItems": false, + "items": { + "type": "object", + "additionalProperties": true, + "properties": { + "name": { + "type": "string", + "description": "e.g. Timothy Cook" + }, + "reference": { + "type": "string", + "description": "e.g. Joe blogs was a great employee, who turned up to work at least once a week. He exceeded my expectations when it came to doing nothing." + } + } + } + }, + "projects": { + "type": "array", + "description": "Specify career projects", + "additionalItems": false, + "items": { + "type": "object", + "additionalProperties": true, + "properties": { + "name": { + "type": "string", + "description": "e.g. The World Wide Web" + }, + "description": { + "type": "string", + "description": "Short summary of project. e.g. Collated works of 2017." + }, + "highlights": { + "type": "array", + "description": "Specify multiple features", + "additionalItems": false, + "items": { + "type": "string", + "description": "e.g. Directs you close but not quite there" + } + }, + "keywords": { + "type": "array", + "description": "Specify special elements involved", + "additionalItems": false, + "items": { + "type": "string", + "description": "e.g. AngularJS" + } + }, + "startDate": { + "$ref": "#/definitions/iso8601" + }, + "endDate": { + "$ref": "#/definitions/iso8601" + }, + "url": { + "type": "string", + "format": "uri", + "description": "e.g. http://www.computer.org/csdl/mags/co/1996/10/rx069-abs.html" + }, + "roles": { + "type": "array", + "description": "Specify your role on this project or in company", + "additionalItems": false, + "items": { + "type": "string", + "description": "e.g. Team Lead, Speaker, Writer" + } + }, + "entity": { + "type": "string", + "description": "Specify the relevant company/entity affiliations e.g. 'greenpeace', 'corporationXYZ'" + }, + "type": { + "type": "string", + "description": " e.g. 'volunteering', 'presentation', 'talk', 'application', 'conference'" + } + } + } + }, + "meta": { + "type": "object", + "description": "The schema version and any other tooling configuration lives here", + "additionalProperties": true, + "properties": { + "canonical": { + "type": "string", + "description": "URL (as per RFC 3986) to latest version of this document", + "format": "uri" + }, + "version": { + "type": "string", + "description": "A version field which follows semver - e.g. v1.0.0" + }, + "lastModified": { + "type": "string", + "description": "Using ISO 8601 with YYYY-MM-DDThh:mm:ss" + } + } + } + }, + "title": "Resume Schema", + "type": "object" +}