From 9032a5ce5d55ec392b1328ac6d8b28a546405074 Mon Sep 17 00:00:00 2001 From: mattkae Date: Sat, 22 Oct 2022 17:15:20 -0400 Subject: Updated resume, and now it automatically generates --- download/build.js | 38 ++++++ download/cv.pdf | Bin 75008 -> 74267 bytes download/resume_dl.css | 154 ++++++++++++++++++++++++ download/resume_dl.html | 308 ++++++++++++++++++++++++------------------------ 4 files changed, 344 insertions(+), 156 deletions(-) create mode 100644 download/build.js create mode 100644 download/resume_dl.css (limited to 'download') diff --git a/download/build.js b/download/build.js new file mode 100644 index 0000000..7e18973 --- /dev/null +++ b/download/build.js @@ -0,0 +1,38 @@ + + +const fs = require('fs'); +const childProcess = require('child_process'); + +const resumeHtml = fs.readFileSync('../resume.html').toString(); +const resumeCss = fs.readFileSync('./resume_dl.css').toString(); + +function getRidofTagsBetween(start, end, html) { + let si = newHtml.indexOf(start); + let ei = newHtml.indexOf(end, si) + end.length; + return html.substring(0, si) + newHtml.substring(ei); +} + +const newHeader = ` + + + + + + + + +` + +const startHead = resumeHtml.indexOf(''); +const endHead = resumeHtml.indexOf('') + ''.length; + +let newHtml = resumeHtml.substring(0, startHead) + newHeader + resumeHtml.substring(endHead); + +newHtml = getRidofTagsBetween('
', '
', newHtml); +newHtml = getRidofTagsBetween(`
`, '
', newHtml); + +fs.writeFileSync('./resume_dl.html', newHtml); + +childProcess.exec('wkhtmltopdf --encoding \'UTF-8\' ./resume_dl.html cv.pdf ') diff --git a/download/cv.pdf b/download/cv.pdf index 25d5b86..a81cea8 100644 Binary files a/download/cv.pdf and b/download/cv.pdf differ diff --git a/download/resume_dl.css b/download/resume_dl.css new file mode 100644 index 0000000..b9d277e --- /dev/null +++ b/download/resume_dl.css @@ -0,0 +1,154 @@ +html { + overflow-y: overlay; +} + +body { + font-size: 14px !important; + padding-top: 72px; + padding-left: 48px; + padding-right: 48px; + font-family: Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif; +} + +header { + padding-bottom: 1rem; +} + +#actions_container { + padding-bottom: 1rem; + + display: flex; + flex-direction: row; + justify-content: flex-end; +} + +#resume { + position: relative; + text-align: left; + background-color: white; + color: black; + line-height: 1.2rem; + padding-bottom: 1rem; +} + +#resume_header { + width: 100%; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; +} + +#resume_header > h1 { + font-size: 24px; + padding: 0; + margin: 0; + font-weight: 500; +} + +#resume_header_contact { + font-size: 12px; +} + +#resume_header_contact span { + margin-right: 0.5rem; + margin-left: 0.5rem; +} + +img.emoji { + height: 1em; + width: 1em; + margin: 0 .05em 0 .1em; + vertical-align: -0.1em; +} + +#resume_header_contact i { + margin-right: 0.25rem; + font-style: normal; +} + +.resume_section { + width: 100%; + text-align: left; +} + +.resume_section > h2 { + font-size: 18px !important; + font-variant: small-caps; + font-weight: bold; + padding: 0; + margin: 0; + padding: 10px; + background-color: #2E4C6D; + color: white; +} + +.resume_section_content { + padding: 0.5rem; +} + +.skill-section { + width: 100%; + display: flex; + flex-direction: row; + justify-content: space-between; +} + +.skill-section > div { + width: 75%; +} + +.experience-header > div { + display: flex; + flex-direction: row; + justify-content: space-between; +} + +.experience-item li { + width: 100%; +} + +.experience-tech { + font-size: 14px; + width: 100%; + display: flex; + flex-direction: row; + justify-content: flex-start; +} + +.experience-tech > svg { + margin-right: 8px; + width: 20px; + height: 20px; +} + + +/** Web-only **/ +#resume_button_container { + width: 100%; + text-align: right; + margin-right: 1rem; + margin-bottom: 1rem; + +} + +#resume_button_container > button { + border: none; + background-color: transparent; + font-size: 20px; +} + +#resume_button_container > button:hover { + cursor: pointer; + opacity: 0.8; +} + +#resume.resume_fullscreen { + position: fixed; + top: 0; + left: 0; + padding: 2rem; + width: calc(100vw - 4rem); + height: calc(100vh - 4rem); + overflow: auto; +} diff --git a/download/resume_dl.html b/download/resume_dl.html index 36d57bf..aafe63d 100644 --- a/download/resume_dl.html +++ b/download/resume_dl.html @@ -1,169 +1,174 @@ - + + - + - #resume.resume_fullscreen { - position: fixed; - top: 0; - left: 0; - padding: 2rem; - width: calc(100vw - 4rem); - height: calc(100vh - 4rem); - overflow: auto; - } - - +
+

Matthew Kosarek

@@ -171,7 +176,7 @@ πŸ–₯️ Computer Programmer ☎️ +1-201-400-2699 πŸ“§ mkosare1@gmail.com - πŸ‡ΊπŸ‡Έ US Citizen + πŸ‡ΊπŸ‡Έ United States Citizen
@@ -179,13 +184,13 @@

Skills

- Languages & Frameworks
C/C++, C#, TypeScript/JavaScript, React, HTML & CSS, Java, OpenGL, ASP.NET, Linux, LaTeX
+ Languages & Frameworks
C, C++, C#, ASP.NET, JavaScript, TypeScript, React, HTML, CSS, Java, OpenGL
- Tools
git, npm, Webpack, Visual Studio Professional/Code, Unity, AWS, Emacs, LaTeX
+ Tools
git, Linux, npm, Webpack, Unity, AWS, Emacs, Visual Studio Professional
-
+

Experience

@@ -211,22 +216,22 @@ @@ -263,12 +268,6 @@
  • Implemented game features on all parts of the stack, including tools, Unity client, and game servers
  • -
  • - Met weekly with various disciplines to discuss ways to improve the UX of the company's tools -
  • -
  • - Initiated company-wide React and TypeScript code sharing via a private npm repository -
  • @@ -333,7 +332,7 @@
    @@ -346,7 +345,7 @@
    - Johns Hopkins University + BSc Computer Engineering at Johns Hopkins University Baltimore, MD
    @@ -355,10 +354,7 @@
    • - B.S. in Computer Engineering (Magna Cum Laude) -
    • -
    • - 3.53 GPA + 3.53 GPA (Magna Cum Laude)
    • Relevant Coursework: Computer Graphics, Object Oriented Software Engineering, Linear Algebra, Video Game Engines and Design, Operating Systems, Data Structures, Introduction to Renewable Energy Engineering -- cgit v1.2.1