From 3f5053b588fec9cd063c78bf4a9f90ca49521d55 Mon Sep 17 00:00:00 2001 From: dozens Date: Tue, 27 Feb 2024 17:44:25 -0700 Subject: [PATCH] coverletter --- README.md | 25 ++++++++++++++++++------- dist/coverletter.pdf | Bin 0 -> 8056 bytes justfile | 16 ++++++++++++++++ src/coverletter.ms | 39 +++++++++++++++++++++++++++++++++++++++ template/pdf.tmpl | 5 ++++- 5 files changed, 77 insertions(+), 8 deletions(-) create mode 100644 dist/coverletter.pdf create mode 100644 src/coverletter.ms diff --git a/README.md b/README.md index 60c46ee..a726e01 100644 --- a/README.md +++ b/README.md @@ -30,8 +30,6 @@ and then exported to pdf. [3]: https://mustache.github.io/ -It also writes to html and text. - ## You Will Need 1. groff 1.23.0: for typesetting and pdf output (with the ms macro package; it *should* be installed anywhere groff is installed) @@ -40,15 +38,28 @@ It also writes to html and text. 4. jq 1.6: json queries 5. (optional) just 1.14.0: just a command runner -## Getting Started +## Cover Letter -1. Edit `example.toml` -2. Run `just pdf` -3. View pdf +I'm honestly not sure what the point of a cover letter is. +But here's how to make one. +First, feed a job description and your resume into chatgpt to get a +(probably way too stuffy and wordy) +cover letter and then tweak it to your liking. +Then format it (groff) and templatize it (rec)! +Pepper it with slots like `{{position}}` and `{{company}}` +and then: + +``` +cat << EOF | recfmt -f coverletter.ms | groff -ms -Tpdf > coverletter.pdf +position: chief lumberjack +company: swarthy lumberjacks of america +EOF +``` ## 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 +: Because while I love GNU Recfiles, they are just a little too annoying to query and template when complex table joins are involved. + diff --git a/dist/coverletter.pdf b/dist/coverletter.pdf new file mode 100644 index 0000000000000000000000000000000000000000..df1c9989c9b045a5d02e393481f41db8f1bb56f9 GIT binary patch literal 8056 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 RgK>it{scpZhR8w%{{!uKTU`JE literal 0 HcmV?d00001 diff --git a/justfile b/justfile index f59d884..cc8b71a 100644 --- a/justfile +++ b/justfile @@ -72,3 +72,19 @@ watch: && mustache lib/view.js template/html.tmpl \ > {{outhtm}} \ || echo "No update" + +# view stale applications +@stale: + stale=$(gdate -d'- 14 days') \ + && recsel db/jobsearch.rec -ie 'status ~ "active"' -p company,created,updated \ + | recsel -e "updated << '$stale'" + +# make coverletter +coverletter: + #!/usr/bin/env sh + read -p "company: " company + read -p "position: " position + cat< dist/coverletter.pdf + company: $company + position: $position + EOF diff --git a/src/coverletter.ms b/src/coverletter.ms new file mode 100644 index 0000000..363df87 --- /dev/null +++ b/src/coverletter.ms @@ -0,0 +1,39 @@ +Hello! +.LP +I am writing to express my interest in the {{position}} +position at {{company}}. With over 8 years of comprehensive +experience in software development, a strong background in full stack +development, and a proven track record of successfully leading technical teams +and projects, I am confident in my ability to contribute to the success of your +dynamic and innovative organization. +.PP +In my previous roles as Engineering Manager and Full Stack Engineer, I +led the technical aspects of software development projects, taking ownership of +the entire software development lifecycle. I collaborated closely with product +managers and stakeholders to define project requirements, translating them into +robust technical solutions. My proficiency in web development technologies, +including HTML, CSS, and JavaScript, along with expertise in modern frameworks +such as Vue and React, enabled me to architect, design, and develop +scalable and high-performance full stack mobile applications via React Native and Expo. +.PP +Throughout my career, I have demonstrated effective communication and +leadership skills, providing technical guidance and mentorship to development +teams. My commitment to code quality, performance, and adherence to coding +standards has consistently resulted in successful project delivery. +.PP +I am excited about the possibility of joining {{company}} and contributing +to its continued success. Enclosed with this letter is my resume, which +provides further details about my skills and experiences. I look forward to the +opportunity to discuss how my background aligns with the goals of your +organization in more detail. +.PP +Thank you for considering my application. I am eager to bring my leadership and +technical expertise to {{company}} and contribute to its ongoing growth and +success. +.sp 2v +.LP +Sincerely, +.sp 2v +.LP +Joe Bloggs + diff --git a/template/pdf.tmpl b/template/pdf.tmpl index 89d497d..21f35b0 100644 --- a/template/pdf.tmpl +++ b/template/pdf.tmpl @@ -1,3 +1,6 @@ +./" ============ +./" == CONFIG == +./" ============ .EH '''' \" delete header (even pages) .OH '''' \" delete header (odd pages) .nr HM .5i \" tighter header margin @@ -46,7 +49,7 @@ center expand tab(;); lb s - - {{#work}} -lb r +lbx r {{#role}} lb r {{#highlights}}