build script

This commit is contained in:
Stef Dunlap 2022-07-19 14:40:29 -04:00
parent bae3de520e
commit 8b3b9b55da
8 changed files with 692 additions and 166 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
public
node_modules

9
build.sh Executable file
View File

@ -0,0 +1,9 @@
#!/usr/bin/env bash
set -eu pipefail
node yamlToJson.js > resume.json
mkdir -p public
cp photo.jpg resume.yml resume.json public
npx resume export public/resume.pdf
npx resume export public/resume.html

16
package-lock.json generated
View File

@ -5,7 +5,8 @@
"packages": {
"": {
"dependencies": {
"resume-cli": "^3.0.7"
"resume-cli": "^3.0.7",
"yaml": "^2.1.1"
}
},
"node_modules/@babel/code-frame": {
@ -5661,6 +5662,14 @@
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/yaml": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.1.1.tgz",
"integrity": "sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw==",
"engines": {
"node": ">= 14"
}
},
"node_modules/yaml-js": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/yaml-js/-/yaml-js-0.2.3.tgz",
@ -9948,6 +9957,11 @@
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"yaml": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.1.1.tgz",
"integrity": "sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw=="
},
"yaml-js": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/yaml-js/-/yaml-js-0.2.3.tgz",

View File

@ -1,5 +1,6 @@
{
"dependencies": {
"resume-cli": "^3.0.7"
"resume-cli": "^3.0.7",
"yaml": "^2.1.1"
}
}

BIN
photo.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

658
resume.html Normal file
View File

@ -0,0 +1,658 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Stef Dunlap</title>
<meta name="description" content="Stef is a freshly minted Canadian permanent resident with a love of
teaching, smiling, and programming. She enjoys intentional community,
software as art, and making things with her hands (and 3D printer.)
">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,700&display=swap">
<style>:root {
/* Colors */
--primaryColor: #212529;
--secondaryColor: #95a5a6;
--accentColor: #f1c40f;
--linkColor: #2ecc71;
--mutedColor: #f4f6f6;
/* Typography */
--ratio: 1.25;
--scale0: 1rem;
--scale1: calc(var(--scale0) * var(--ratio));
--scale2: calc(var(--scale1) * var(--ratio));
--scale3: calc(var(--scale2) * var(--ratio));
--scale4: calc(var(--scale3) * var(--ratio));
--scale5: calc(var(--scale4) * var(--ratio));
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html {
font-size: 14px;
}
body {
color: var(--primaryColor);
display: grid;
font: 1em/1.5 Lato, sans-serif;
gap: 2em;
grid-template-columns:
[full-start]
1fr
[main-start side-start]
minmax(min-content, 12em)
[side-end content-start]
minmax(min-content, 36em)
[main-end content-end]
1fr
[full-end];
grid-template-rows: auto [content] 0;
margin-bottom: 4em;
}
body::before {
content: '';
grid-column: full;
grid-row: content;
}
ol,
ul {
padding-left: 1em;
}
li + li {
margin-top: 0.2em;
}
li::marker {
color: var(--mutedColor);
}
a {
color: var(--linkColor);
text-decoration: none;
transition: color 0.2s;
}
a:focus,
a:hover {
color: var(--accentColor);
}
h1,
h2,
h3,
h5 {
font-weight: normal;
}
h1,
h2,
h3 {
line-height: 1.2;
}
h1 {
font-size: var(--scale5);
}
h2 {
color: var(--secondaryColor);
font-size: var(--scale4);
}
h3 {
color: var(--accentColor);
font-size: var(--scale3);
grid-column: side;
margin-bottom: 1rem;
}
h4 {
font-size: var(--scale2);
}
h5 {
font-size: var(--scale1);
}
h6 {
font-size: var(--scale0);
}
blockquote {
border-left: 0.2em solid var(--mutedColor);
padding-left: 1em;
}
cite {
color: var(--secondaryColor);
font-style: inherit;
}
cite::before {
content: '— ';
}
.masthead {
background: var(--mutedColor);
display: inherit;
gap: inherit;
grid-column: full;
grid-template-columns: inherit;
padding: 4em 0;
row-gap: 0;
}
.masthead > *,
section {
grid-column: main;
}
article > * + *,
blockquote > * + * {
margin-top: 0.6em;
}
.stack {
display: grid;
gap: 1.5em;
}
.grid-list {
display: grid;
gap: 1em;
}
.spaced-list {
display: flex;
align-items: center;
justify-content: space-between;
}
.spaced-list:first-child::before {
border-bottom: 1px solid var(--mutedColor);
content: '';
flex-grow: 1;
margin: 0 1em;
order: 1;
}
.spaced-list > :nth-child(2) {
order: 2;
}
.tag-list {
display: flex;
flex-wrap: wrap;
list-style: none;
padding: 0;
}
.tag-list > li {
background: var(--mutedColor);
margin: 0 0.2em 0.2em 0;
padding: 0.2em 0.6em;
}
@media print, (min-width: 48em) {
h3 {
text-align: right;
margin-bottom: inherit;
}
.masthead > *,
section {
grid-column: content;
}
section {
display: contents;
}
.grid-list {
grid-template-columns: 1fr 1fr;
}
}
</style>
</head>
<body>
<header class="masthead">
<h1>Stef Dunlap</h1>
<h2>Programmer</h2>
</header>
<section id="contact">
<h3>Contact</h3>
<div class="grid-list">
<div>
<h4>Email</h4>
<a href="mailto:hello@kindrobot.ca">hello@kindrobot.ca</a>
</div>
<div>
<h4>Phone</h4>
+1 647 657 7076
</div>
<div>
<h4>Website</h4>
<a href="https://resume.kindrobot.ca">resume.kindrobot.ca</a>
</div>
</div>
</section>
<section id="about">
<h3>About</h3>
<article>
<p>Stef is a freshly minted Canadian permanent resident with a love of
teaching, smiling, and programming. She enjoys intentional community,
software as art, and making things with her hands (and 3D printer.)</p>
</article>
</section>
<section id="profiles">
<h3>Profiles</h3>
<div class="grid-list">
<div>
<h4>GitHub</h4>
<a href="https://github.com/motevets">motevets</a>
</div>
<div>
<h4>Mastedon</h4>
<a href="https://tiny.tilde.website/web/@kindrobot">kindrobot@tiny.tilde.website</a>
</div>
</div>
</section>
<section id="work">
<h3>Work</h3>
<div class="stack">
<article>
<header>
<div class="spaced-list">
<h4>Focal Point NDE Technologies</h4>
<span>
<time datetime="2022-09-01">Aug 2022</time>
Present
</span>
</div>
<div class="spaced-list">
<strong>Computer System Analyst</strong>
<a href="https://utex.com">utex.com</a>
</div>
</header>
<p>Focal Point along with its sister company UTEX, make software that inspects
assembled parts using nondestructive examination technologies (e.g.
ultrasound, radiography, eddy currents) and identifies defects before they
are put into production.</p>
<h5>Highlights</h5>
<ul>
<li>Implemented automated testing framework and CI for a legacy C++ application</li>
<li>Coached Agile methodologies</li>
<li>Migrated team to git version control, and taught git workflows</li>
<li>Organized hiring effort, and coordinated hiring of two engineers</li>
</ul>
</article>
<article>
<header>
<div class="spaced-list">
<h4>Chisel AI</h4>
<span>
<time datetime="2022-01-01">Dec 2021</time>
<time datetime="2022-08-01">Jul 2022</time>
</span>
</div>
<div class="spaced-list">
<strong>Manager of Software Development</strong>
<a href="https://chisel.ai">chisel.ai</a>
</div>
</header>
<p>Led team of five engineers building machine learning application which
extracts insurance data from policies, quotes, and binders to eliminate
errors and omissions.</p>
<h5>Highlights</h5>
<ul>
<li>Worked with AWS lambdas, Comprehend, Rekognition, CloudWatch, and Textract</li>
<li>Collaborated with data scientist to propose experiments and analyse results for Natural Language Processing (NLP), Named Entity Recognition (NER), and Computer Visions (CV) / Image Recognition approaches.</li>
</ul>
</article>
<article>
<header>
<div class="spaced-list">
<h4>Pivotal Software</h4>
<span>
<time datetime="2017-02-01">Jan 2017</time>
<time datetime="2019-12-31">Dec 2019</time>
</span>
</div>
<div class="spaced-list">
<strong>Engineering Manager, Pivotal Software</strong>
<a href="https://pivotal.io">pivotal.io</a>
</div>
</header>
<h5>Highlights</h5>
<ul>
<li>Led team of seven engineers across multiple projects.</li>
<li>Pair programmed with teams creating cloud platform automation software using React.js, Ruby on Rails, BASH, and Go.</li>
<li>Delivered sophisticate PCI compliant role based access control (RBAC) using OAuth with plugable, bring-your-own identity provider (SAML or LDAP)</li>
</ul>
</article>
<article>
<header>
<div class="spaced-list">
<h4>KiwiDonut LLP.</h4>
<span>
<time datetime="2016-04-15">Apr 2016</time>
<time datetime="2017-01-31">Jan 2017</time>
</span>
</div>
<div class="spaced-list">
<strong>Founder</strong>
<a href=""></a>
</div>
</header>
<h5>Highlights</h5>
<ul>
<li>Led a team of engineers consulting on Node.js API for integrating a front-end with a cloud contract signing service</li>
<li>Created React.js front-end for land inventory management application</li>
<li>Taught TDD, agile planning, and extreme programming to client engineers and novice engineers</li>
</ul>
</article>
<article>
<header>
<div class="spaced-list">
<h4>Pivotal Labs</h4>
<span>
<time datetime="2015-04-15">Apr 2015</time>
<time datetime="2016-04-15">Apr 2016</time>
</span>
</div>
<div class="spaced-list">
<strong>Senior Software Engineer</strong>
<a href="https://pivotallabs.com">pivotallabs.com</a>
</div>
</header>
<h5>Highlights</h5>
<ul>
<li>Lead engineer of the Pivotal Cloud Foundry Billing and Account Management team</li>
<li>Taught Ruby on Rails, agile planning, test driven development, extreme programming methodologies to new engineers</li>
</ul>
</article>
<article>
<header>
<div class="spaced-list">
<h4>Independent Contractor</h4>
<span>
<time datetime="2014-02-15">Feb 2014</time>
<time datetime="2015-02-15">Feb 2015</time>
</span>
</div>
<div class="spaced-list">
<strong>Software Engineering Consultant</strong>
<a href=""></a>
</div>
</header>
<h5>Highlights</h5>
<ul>
<li>Programmed Ruby on Rails business tier for health care billing and electronic record tracking</li>
<li>Instructed and coached test driven development</li>
<li>Acted as liaison between national offices and integrating disparate technology of merged companies in Cincinnati, OH and Phoenix, AZ.</li>
</ul>
</article>
<article>
<header>
<div class="spaced-list">
<h4>Independent Contractor</h4>
<span>
<time datetime="2014-02-15">Feb 2014</time>
<time datetime="2015-02-15">Feb 2015</time>
</span>
</div>
<div class="spaced-list">
<strong>Software Engineering Consultant</strong>
<a href=""></a>
</div>
</header>
<h5>Highlights</h5>
<ul>
<li>Programmed Ruby on Rails business tier for health care billing and electronic record tracking</li>
<li>Instructed and coached test driven development</li>
<li>Acted as liaison between national offices and integrating disparate technology of merged companies in Cincinnati, OH and Phoenix, AZ.</li>
</ul>
</article>
<article>
<header>
<div class="spaced-list">
<h4>Roadtrippers</h4>
<span>
<time datetime="2013-01-01">Dec 2012</time>
<time datetime="2014-01-01">Dec 2013</time>
</span>
</div>
<div class="spaced-list">
<strong>Software Developer</strong>
<a href="https://roadtrippers.com">roadtrippers.com</a>
</div>
</header>
<p>Back end Ruby on Rails and dev-ops developer for successful travel planning
start-up in Cincinnati.</p>
<h5>Highlights</h5>
<ul>
<li>Created and maintained cloud infrastructure automation</li>
<li>Orchestrated migration from MongoDB to PostGIS including data move, and ODM/ORM code replacement</li>
</ul>
</article>
<article>
<header>
<div class="spaced-list">
<h4>MediaFuel</h4>
<span>
<time datetime="2011-01-01">Dec 2010</time>
<time datetime="2012-08-01">Jul 2012</time>
</span>
</div>
<div class="spaced-list">
<strong>Web developer</strong>
<a href="https://mediafuel.com">mediafuel.com</a>
</div>
</header>
<h5>Highlights</h5>
<ul>
<li>Dev-ops Linux server administration</li>
<li>MySQL database administration</li>
<li>PHP business tier development</li>
</ul>
</article>
<article>
<header>
<div class="spaced-list">
<h4>Ransburg Scout Reservation</h4>
<span>
<time datetime="2005-05-15">May 2005</time>
<time datetime="2012-08-15">Aug 2012</time>
</span>
</div>
<div class="spaced-list">
<strong>Technology Consultant</strong>
<a href="http://www.ransburgbsa.org/">www.ransburgbsa.org</a>
</div>
</header>
<p>Seasonal summer work developing and maintaining applications and
infrastructure for camp operations</p>
<h5>Highlights</h5>
<ul>
<li>PostgreSQL database administration</li>
<li>Network administration</li>
<li>Hardware deployment</li>
</ul>
</article>
</div>
</section>
<section id="volunteer">
<h3>Volunteer</h3>
<div class="stack">
<article>
<header>
<div class="spaced-list">
<h4>Black Girls Code</h4>
<span>
<time datetime="2018-06-15">Jun 2018</time>
Present
</span>
</div>
<div class="spaced-list">
<strong>Instructor</strong>
<a href="https://www.blackgirlscode.com/">www.blackgirlscode.com</a>
</div>
</header>
<p>not-for-profit organization that focuses on providing technology education
for African-American girls</p>
<h5>Highlights</h5>
<ul>
<li>robot SDKs</li>
<li>game development</li>
<li>Javascript</li>
</ul>
</article>
</div>
</section>
<section id="education">
<h3>Education</h3>
<div class="stack">
<article>
<header>
<div class="spaced-list">
<h4>Purdue University</h4>
<span>
<time datetime="2009-01-01">Dec 2008</time>
<time datetime="2012-05-01">Apr 2012</time>
</span>
</div>
<div class="spaced-list">
<strong>Computer and Information Science</strong>
<a href="https://www.purdue.edu/">www.purdue.edu</a>
</div>
</header>
<p>Bachelor</p>
</article>
</div>
</section>
<section id="projects">
<h3>Projects</h3>
<div class="stack">
<article>
<header>
<div class="spaced-list">
<h4>Miss Direction</h4>
<span>
<time datetime="2016-08-24">Aug 2016</time>
<time datetime="2016-08-24">Aug 2016</time>
</span>
</div>
<div class="spaced-list">
<span>
<strong>Team lead, Designer</strong>
at <strong>Smoogle</strong>
</span>
<a href="missdirection.example.com">missdirection.example.com</a>
</div>
</header>
<p>A mapping engine that misguides you</p>
<h5>Highlights</h5>
<ul>
<li>Won award at AIHacks 2016</li>
<li>Built by all women team of newbie programmers</li>
<li>Using modern technologies such as GoogleMaps, Chrome Extension and Javascript</li>
</ul>
</article>
</div>
</section>
<section id="awards">
<h3>Awards</h3>
<div class="stack">
<article>
<header>
<div class="spaced-list">
<h4>Digital Compression Pioneer Award</h4>
<time datetime="2014-11-01">Oct 2014</time>
</div>
<div class="spaced-list">
<div>
Awarded by <strong>Techcrunch</strong>
</div>
</div>
</header>
<p>There is no spoon.</p>
</article>
</div>
</section>
<section id="skills">
<h3>Skills</h3>
<div class="grid-list">
<div>
<h4>Web Development</h4>
<ul class="tag-list">
<li>HTML</li>
<li>CSS</li>
<li>Javascript</li>
</ul>
</div>
<div>
<h4>Compression</h4>
<ul class="tag-list">
<li>Mpeg</li>
<li>MP4</li>
<li>GIF</li>
</ul>
</div>
</div>
</section>
<section id="languages">
<h3>Languages</h3>
<div class="grid-list">
<div>
<h4>English</h4>
Native speaker
</div>
</div>
</section>
<section id="interests">
<h3>Interests</h3>
<div class="grid-list">
<div>
<h4>Wildlife</h4>
<ul class="tag-list">
<li>Ferrets</li>
<li>Unicorns</li>
</ul>
</div>
</div>
</section>
<section id="references">
<h3>References</h3>
<div class="stack">
<blockquote>
<p>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.</p>
<p>
<cite>Erlich Bachman</cite>
</p>
</blockquote>
</div>
</section>
</body>
</html>

View File

@ -1,164 +0,0 @@
{
"$schema": "https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json",
"basics": {
"name": "Stef Dunlap",
"label": "Programmer",
"image": "",
"email": "hello@kindrobot.ca",
"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!",
"location": {
"address": "2712 Broadway St",
"postalCode": "CA 94115",
"city": "San Francisco",
"countryCode": "US",
"region": "California"
},
"profiles": [
{
"network": "Twitter",
"username": "neutralthoughts",
"url": ""
},
{
"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"
]
},
{
"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/resume.json",
"version": "v1.0.0",
"lastModified": "2017-12-24T15:53:00"
}
}

7
yamlToJson.js Normal file
View File

@ -0,0 +1,7 @@
const fs = require('fs');
const YAML = require('yaml');
const resumeYaml = fs.readFileSync('./resume.yml', 'utf8')
const resumeObj = YAML.parse(resumeYaml)
console.log(JSON.stringify(resumeObj, null, 2))