11 Commits

Author SHA1 Message Date
bel
de42646ae5 white space 2023-10-15 14:53:19 -06:00
bel
c543a78033 drop open-resume for homebrewed go template of open-resume because yaml file easier 2023-10-15 14:52:37 -06:00
bel
50f5741041 NOW homebrew ready for move it 2023-10-15 14:42:39 -06:00
bel
0c17821874 homebrew done i spose 2023-10-15 14:42:01 -06:00
bel
7079ad4b1d just whitespace vertical away 2023-10-15 14:38:40 -06:00
bel
98c972cc90 start 2023-10-15 14:18:28 -06:00
bel
2b19a1d2f8 start 2023-10-15 14:16:46 -06:00
bel
86e5716d33 only do full deploy.firebase.sh if open-resume.d changed 2023-10-15 14:13:10 -06:00
bel
4a96954c2d it was because fonts lol 2023-10-15 14:11:36 -06:00
bel
9cfaae18d7 almost homebrew.tmpl but lost 4 columns 2023-10-15 10:28:45 -06:00
bel
b128e9d6f5 open-resume to homebrew.tmpl 2023-10-15 09:36:58 -06:00
14 changed files with 452 additions and 356 deletions

View File

@@ -79,4 +79,8 @@ spec:
GITLAB_PAT: ${{ secrets.get("resume-gitlab-gitlab-breel-dev-token") }} GITLAB_PAT: ${{ secrets.get("resume-gitlab-gitlab-breel-dev-token") }}
shell: sh shell: sh
script: | script: |
bash ./deploy.firebase.sh export build_before=${{ build.before }}
export build_after=${{ build.after }}
if git --no-pager diff --name-only $build_before..$build_after | grep src.homebrew; then
bash ./deploy.firebase.sh
fi

View File

@@ -1,17 +1,12 @@
# Resume # Resume
1. open https://www.open-resume.com/resume-builder 1. modify [homebrew.yaml](./src/homebrew/homebrew.yaml)
1. in browser, `inspect > storage > local storage > about:srcdoc` 1. generate `cd ./src/homebrew; bash ./homebrew.sh`
1. `cat ./open-resume.com.d/local*.json` 1. `open ./src/homebrew/homebrew.html`
1. paste into `about:srcdoc` `Value` 1. `ctrl + p` and save as pdf
1. refresh 1. commit + push
1. download resume as `./open-resume.com.d/resume.pdf`
1. inspect iframe > `<html>` > copy outer HTML
1. `pbpaste > ./open-resume.com.d/resume.html`
1. `cd ./open-resume.com.d/; bash ./clean_resume_html.sh; cd ..`
1. `bash ./deploy.firebase.sh`
# Today ## CICD
1. `gitness.inhome.blapointe.com` has a `./.harness` pipeline 1. `gitness.inhome.blapointe.com` has a `./.harness` pipeline
1. the pipeline 1. the pipeline

View File

@@ -8,7 +8,7 @@ cd src
if which vale; then if which vale; then
f=$(mktemp) f=$(mktemp)
cat open-resume.com.d/local-storage-about-srcdoc-open-resume.json | sed 's/"[^"]*":/"."/g' > $f cp homebrew/homebrew.yaml $f
vale sync vale sync
vale $f || true vale $f || true
fi fi
@@ -29,9 +29,8 @@ trap cleanup EXIT
rm -rf $outdir rm -rf $outdir
mkdir -p $outdir/public mkdir -p $outdir/public
cp ./open-resume.com.d/resume.html.2 $outdir/public/index.html cp homebrew/homebrew.html $outdir/public/index.html
cp ./open-resume.com.d/resume.pdf $outdir/public/BreeLaPointeResume.pdf cp -r ./homebrew/fonts $outdir/public/
cp -r ./open-resume.com.d/fonts $outdir/public/
( (
if ! which woff2_compress; then if ! which woff2_compress; then

View File

@@ -1,55 +1,310 @@
<html> <html>
<header> <head>
</header> <link rel="preload" as="font" href="./fonts/Lato-Regular.ttf" type="font/ttf" crossorigin="anonymous">
<body> </link>
<div name="name"> <link rel="preload" as="font" href="./fonts/Lato-Bold.ttf" type="font/ttf" crossorigin="anonymous">
<h1>Bree LaPointe </h1> </link>
<h4>Senior Software Engineer</h4> <style>
</div> @font-face {font-family: "Roboto"; src: url("./fonts/Roboto-Regular.ttf");}
<div name="contact"> @font-face {font-family: "Roboto"; src: url("./fonts/Roboto-Bold.ttf"); font-weight: bold;}@font-face {font-family: "Lato"; src: url("./fonts/Lato-Regular.ttf");}
@font-face {font-family: "Lato"; src: url("./fonts/Lato-Bold.ttf"); font-weight: bold;}@font-face {font-family: "Montserrat"; src: url("./fonts/Montserrat-Regular.ttf");}
<div style="display: inline-block"> @font-face {font-family: "Montserrat"; src: url("./fonts/Montserrat-Bold.ttf"); font-weight: bold;}@font-face {font-family: "OpenSans"; src: url("./fonts/OpenSans-Regular.ttf");}
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="width: 13pt; height: 13pt; fill: rgb(82, 82, 82);"><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"></path></svg> @font-face {font-family: "OpenSans"; src: url("./fonts/OpenSans-Bold.ttf"); font-weight: bold;}@font-face {font-family: "Raleway"; src: url("./fonts/Raleway-Regular.ttf");}
<a href="mailto:contact@blapointe.com">contact@blapointe.com</a> @font-face {font-family: "Raleway"; src: url("./fonts/Raleway-Bold.ttf"); font-weight: bold;}@font-face {font-family: "Caladea"; src: url("./fonts/Caladea-Regular.ttf");}
</div> @font-face {font-family: "Caladea"; src: url("./fonts/Caladea-Bold.ttf"); font-weight: bold;}@font-face {font-family: "Lora"; src: url("./fonts/Lora-Regular.ttf");}
@font-face {font-family: "Lora"; src: url("./fonts/Lora-Bold.ttf"); font-weight: bold;}@font-face {font-family: "RobotoSlab"; src: url("./fonts/RobotoSlab-Regular.ttf");}
<div style="display: inline-block"> @font-face {font-family: "RobotoSlab"; src: url("./fonts/RobotoSlab-Bold.ttf"); font-weight: bold;}@font-face {font-family: "PlayfairDisplay"; src: url("./fonts/PlayfairDisplay-Regular.ttf");}
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="width: 13pt; height: 13pt; fill: rgb(82, 82, 82);"><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"></path></svg> @font-face {font-family: "PlayfairDisplay"; src: url("./fonts/PlayfairDisplay-Bold.ttf"); font-weight: bold;}@font-face {font-family: "Merriweather"; src: url("./fonts/Merriweather-Regular.ttf");}
<a href="tel:3367016159">(336) 701 - 6159</a> @font-face {font-family: "Merriweather"; src: url("./fonts/Merriweather-Bold.ttf"); font-weight: bold;}
</div> </style>
</head>
<div style="display: inline-block"> <body style="margin: auto !important; padding-bottom: .0em !important; width: 512pt; margin: 0; padding: 0; -webkit-text-size-adjust:none;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="width: 13pt; height: 13pt; fill: rgb(82, 82, 82);"><path d="M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128z"></path></svg> <div>
<a href="<no value>">Provo, UT</a> <div class="frame-content">
</div> <document title="Bree LaPointe Resume" author="Bree LaPointe " producer="OpenResume">
<page style="display: flex; flex-direction: column; color: rgb(23, 23, 23); font-family: Lato; font-size: 11pt;">
<div style="display: inline-block"> <view style="width: 100%; height: 10.5pt; background-color: rgb(129, 140, 248);">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="width: 13pt; height: 13pt; fill: rgb(82, 82, 82);"><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg> </view>
<a href="https://linkedin.com/in/lapoba16">linkedin.com/in/lapoba16</a> <view style="display: flex; flex-direction: column; padding: 0px 18pt;">
</div> <view style="display: flex; flex-direction: column; gap: 6pt; margin-top: 12pt;">
<text style="color: rgb(129, 140, 248); font-weight: bold; font-size: 20pt;">Bree LaPointe
</text>
<div> <text style="color: rgb(23, 23, 23); font-weight: normal;">Senior Software Engineer
map[title:Skills what:[Languages: Golang, Bash, Python3 Platforms: Docker, Hashicorp, Linux/Unix, AWS, Jenkins, REST, Microservices, Git Datastores: MongoDB, Redis, S3, Couchbase, DynamoDB]] </text>
</div> <view style="display: flex; flex-flow: row wrap; justify-content: space-between; margin-top: 1.5pt;">
<div>
map[headings:[map[headings:[map[title:Senior Software Engineer, Team Lead what:[Mentored entry and mid-level engineers on stability, clean code, and distributed systems. Hosted engineering book and white paper clubs for continuous improvement and cross-team experience sharing for 2 years. Recovered 98% of data lost in critical incident via coordinating cross team efforts and dissecting native database operation logs.] when:May 2022 - Present] map[title:Software Engineer II what:[Developed and owned highly available and reliable data storage and operational tooling. Mentored 2 interns, 2 new hires, and 3 mid-level cross team engineers on operational tools, maintainable software, and career development. Genericized AWS asset management tooling ahead of company-wide mass migration initiative. Championed disaster recovery by supporting training runs with documentation, tools, and live support across teams and enforced continuous compliance for 17 database clusters with monitoring and alerting. Lent expertise owning MongoDB across teams by advising on configuration and data models and genericizing disaster recovery tooling for 21 teams.] when:Oct 2019 - May 2022] map[title:Software Engineer I what:[Automated no-downtime system patching for 30 services and 25 database clusters by creating a modular and testable scripting framework. Raised backend service's availability to 99.99% and reduced hardware costs by 40% by selecting, training team on, and live migrating to a different datastore.] when:Feb 2018 - Oct 2019]] title:Qualtrics]] title:Work Experience] <view style="display: flex; flex-direction: row; align-items: center; gap: 3pt;">
</div> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="width: 13pt; height: 13pt; fill: rgb(82, 82, 82);"><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"></path></svg>
<a href="mailto:contact@blapointe.com" style="text-decoration: none;" target="_blank" rel="noreferrer">
<div> <text style="color: rgb(23, 23, 23); font-weight: normal;">contact@blapointe.com</text>
map[headings:[map[title:Wake Forest University what:[Master of Science in Computer Science - 3.88/4.00] when:Dec 2017] map[title:High Point University what:[Bachelor of Arts in Computer Science - 3.91/4.00] when:Dec 2015]] title:Education] </a>
</div> </view>
<div> <view style="display: flex; flex-direction: row; align-items: center; gap: 3pt;">
map[headings:[map[title:Arabidopsis thaliana computationally-generated next-state gene interaction models what:[Refactored to correct bugs and improve efficiency by orders of magnitude] when:Jun 2018]] title:Publications] <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="width: 13pt; height: 13pt; fill: rgb(82, 82, 82);"><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"></path></svg>
</div> <a href="tel:3367016159" style="text-decoration: none;" target="_blank" rel="noreferrer">
<text style="color: rgb(23, 23, 23); font-weight: normal;">(336) 701-6159</text>
</div> </a>
<div name="headings"> </view>
</div>
</body> <view style="display: flex; flex-direction: row; align-items: center; gap: 3pt;">
<footer> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="width: 13pt; height: 13pt; fill: rgb(82, 82, 82);"><path d="M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128z"></path></svg>
</footer> <a href="<no value>" style="text-decoration: none;" target="_blank" rel="noreferrer">
<text style="color: rgb(23, 23, 23); font-weight: normal;">Provo, UT</text>
</a>
</view>
<view style="display: flex; flex-direction: row; align-items: center; gap: 3pt;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="width: 13pt; height: 13pt; fill: rgb(82, 82, 82);"><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg>
<a href="https://linkedin.com/in/lapoba16" style="text-decoration: none;" target="_blank" rel="noreferrer">
<text style="color: rgb(23, 23, 23); font-weight: normal;">linkedin.com/in/lapoba16</text>
</a>
</view>
</view>
</view>
<view style="display: flex; flex-direction: column; gap: 6pt; margin-top: 12pt;">
<view style="display: flex; flex-direction: row; align-items: center;">
<view style="height: 3.75pt; width: 30pt; background-color: rgb(129, 140, 248); margin-right: 10.5pt;">
</view>
<text style="font-weight: bold; letter-spacing: 0.3pt;">WORK EXPERIENCE</text>
</view>
<view>
<text style="color: rgb(23, 23, 23); font-weight: bold;">Qualtrics</text>
<view style="display: flex; flex-direction: row; justify-content: space-between; margin-top: 4.5pt;">
<text style="color: rgb(23, 23, 23); font-weight: normal;">Senior Software Engineer, Team Lead</text>
<text style="color: rgb(23, 23, 23); font-weight: normal;">May 2022 - Present
</text>
</view>
<view style="display: flex; flex-direction: column; margin-top: 4.5pt;">
<view style="display: flex; flex-direction: row;">
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.3;"></text>
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.3; flex-grow: 1; flex-basis: 0px;">Mentored entry and mid-level engineers on stability, clean code, and distributed systems.</text>
</view>
<view style="display: flex; flex-direction: row;">
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.3;"></text>
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.3; flex-grow: 1; flex-basis: 0px;">Hosted engineering book and white paper clubs for continuous improvement and cross-team experience sharing for 2 years.</text>
</view>
<view style="display: flex; flex-direction: row;">
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.3;"></text>
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.3; flex-grow: 1; flex-basis: 0px;">Recovered 98% of data lost in critical incident via coordinating cross team efforts and dissecting native database operation logs.</text>
</view>
</view>
<view style="display: flex; flex-direction: row; justify-content: space-between; margin-top: 4.5pt;">
<text style="color: rgb(23, 23, 23); font-weight: normal;">Software Engineer II</text>
<text style="color: rgb(23, 23, 23); font-weight: normal;">Oct 2019 - May 2022
</text>
</view>
<view style="display: flex; flex-direction: column; margin-top: 4.5pt;">
<view style="display: flex; flex-direction: row;">
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.3;"></text>
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.3; flex-grow: 1; flex-basis: 0px;">Developed and owned highly available and reliable data storage and operational tooling.</text>
</view>
<view style="display: flex; flex-direction: row;">
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.3;"></text>
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.3; flex-grow: 1; flex-basis: 0px;">Mentored 2 interns, 2 new hires, and 3 mid-level cross team engineers on operational tools, maintainable software, and career development.</text>
</view>
<view style="display: flex; flex-direction: row;">
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.3;"></text>
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.3; flex-grow: 1; flex-basis: 0px;">Genericized AWS asset management tooling ahead of company-wide mass migration initiative.</text>
</view>
<view style="display: flex; flex-direction: row;">
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.3;"></text>
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.3; flex-grow: 1; flex-basis: 0px;">Championed disaster recovery by supporting training runs with documentation, tools, and live support across teams and enforced continuous compliance for 17 database clusters with monitoring and alerting.</text>
</view>
<view style="display: flex; flex-direction: row;">
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.3;"></text>
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.3; flex-grow: 1; flex-basis: 0px;">Lent expertise owning MongoDB across teams by advising on configuration and data models and genericizing disaster recovery tooling for 21 teams.</text>
</view>
</view>
<view style="display: flex; flex-direction: row; justify-content: space-between; margin-top: 4.5pt;">
<text style="color: rgb(23, 23, 23); font-weight: normal;">Software Engineer I</text>
<text style="color: rgb(23, 23, 23); font-weight: normal;">Feb 2018 - Oct 2019
</text>
</view>
<view style="display: flex; flex-direction: column; margin-top: 4.5pt;">
<view style="display: flex; flex-direction: row;">
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.3;"></text>
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.3; flex-grow: 1; flex-basis: 0px;">Automated no-downtime system patching for 30 services and 25 database clusters by creating a modular and testable scripting framework.</text>
</view>
<view style="display: flex; flex-direction: row;">
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.3;"></text>
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.3; flex-grow: 1; flex-basis: 0px;">Raised backend service's availability to 99.99% and reduced hardware costs by 40% by selecting, training team on, and live migrating to a different datastore.</text>
</view>
</view>
</view>
</view>
<view style="display: flex; flex-direction: column; gap: 6pt; margin-top: 12pt;">
<view style="display: flex; flex-direction: row; align-items: center;">
<view style="height: 3.75pt; width: 30pt; background-color: rgb(129, 140, 248); margin-right: 10.5pt;">
</view>
<text style="font-weight: bold; letter-spacing: 0.3pt;">EDUCATION</text>
</view>
<view>
<view style="display: flex; flex-direction: row; justify-content: space-between; margin-top: 4.5pt;">
<text style="color: rgb(23, 23, 23); font-weight: bold;">Wake Forest University</text>
<text style="color: rgb(23, 23, 23); font-weight: normal;">Dec 2017
</text>
</view>
<view style="display: flex; flex-direction: row; justify-content: space-between; margin-top: 4.5pt;">
<text style="color: rgb(23, 23, 23); font-weight: normal;">Master of Science in Computer Science - 3.88/4.00 GPA
</text>
</view>
</view>
<view>
<view style="display: flex; flex-direction: row; justify-content: space-between; margin-top: 4.5pt;">
<text style="color: rgb(23, 23, 23); font-weight: bold;">High Point University</text>
<text style="color: rgb(23, 23, 23); font-weight: normal;">Dec 2015
</text>
</view>
<view style="display: flex; flex-direction: row; justify-content: space-between; margin-top: 4.5pt;">
<text style="color: rgb(23, 23, 23); font-weight: normal;">Bachelor of Arts in Computer Science - 3.91/4.00 GPA
</text>
</view>
</view>
</view>
<view style="display: flex; flex-direction: column; gap: 6pt; margin-top: 12pt;">
<view style="display: flex; flex-direction: row; align-items: center;">
<view style="height: 3.75pt; width: 30pt; background-color: rgb(129, 140, 248); margin-right: 10.5pt;">
</view>
<text style="font-weight: bold; letter-spacing: 0.3pt;">PUBLICATIONS</text>
</view>
<view>
<view style="display: flex; flex-direction: row; justify-content: space-between; margin-top: 4.5pt;">
<text style="color: rgb(23, 23, 23); font-weight: bold;">Arabidopsis thaliana computationally-generated next-state gene interaction models</text>
<text style="color: rgb(23, 23, 23); font-weight: normal;">Jun 2018
</text>
</view>
<view style="display: flex; flex-direction: row; justify-content: space-between; margin-top: 4.5pt;">
<text style="color: rgb(23, 23, 23); font-weight: normal;">Refactored to correct bugs and improve efficiency by orders of magnitude
</text>
</view>
</view>
</view>
<view style="display: flex; flex-direction: column; gap: 6pt; margin-top: 12pt;">
<view style="display: flex; flex-direction: row; align-items: center;">
<view style="height: 3.75pt; width: 30pt; background-color: rgb(129, 140, 248); margin-right: 10.5pt;">
</view>
<text style="font-weight: bold; letter-spacing: 0.3pt;">SKILLS</text>
</view>
<view>
<view style="display: flex; flex-direction: row; justify-content: space-between;">
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.3;">
<text style="color: rgb(23, 23, 23); font-weight: normal;">Languages: Golang, Bash, Python3
</text>
</view>
<view style="display: flex; flex-direction: row; justify-content: space-between;">
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.3;">
<text style="color: rgb(23, 23, 23); font-weight: normal;">Platforms: Docker, Hashicorp, Linux/Unix, AWS, Jenkins, REST, Microservices, Git
</text>
</view>
<view style="display: flex; flex-direction: row; justify-content: space-between;">
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.3;">
<text style="color: rgb(23, 23, 23); font-weight: normal;">Datastores: MongoDB, Redis, S3, Couchbase, DynamoDB
</text>
</view>
</view>
</view>
</view>
</view>
</page>
</document>
</div>
</div>
</body>
</html> </html>

View File

@@ -8,9 +8,10 @@ if ! which gojq; then
fi &> /dev/null fi &> /dev/null
while sleep 1; do while sleep 1; do
clear date
cat ./homebrew.yaml \ cat ./homebrew.yaml \
| gojq --yaml-input . \ | gojq --yaml-input . \
| tpl --file homebrew.tmpl \ | tpl --file homebrew.tmpl \
| tee ./homebrew.html > ./homebrew.html
done done

View File

@@ -1,27 +1,119 @@
<html> <html>
<header> <head>
</header> <link rel="preload" as="font" href="./fonts/Lato-Regular.ttf" type="font/ttf" crossorigin="anonymous">
<body> </link>
<div name="name"> <link rel="preload" as="font" href="./fonts/Lato-Bold.ttf" type="font/ttf" crossorigin="anonymous">
<h1>{{ range .resume.name }}{{ . }} {{ end }}</h1> </link>
<h4>{{ .resume.title }}</h4> <style>
</div> @font-face {font-family: "Roboto"; src: url("./fonts/Roboto-Regular.ttf");}
<div name="contact"> @font-face {font-family: "Roboto"; src: url("./fonts/Roboto-Bold.ttf"); font-weight: bold;}@font-face {font-family: "Lato"; src: url("./fonts/Lato-Regular.ttf");}
{{ range .resume.contact.links }} @font-face {font-family: "Lato"; src: url("./fonts/Lato-Bold.ttf"); font-weight: bold;}@font-face {font-family: "Montserrat"; src: url("./fonts/Montserrat-Regular.ttf");}
<div style="display: inline-block"> @font-face {font-family: "Montserrat"; src: url("./fonts/Montserrat-Bold.ttf"); font-weight: bold;}@font-face {font-family: "OpenSans"; src: url("./fonts/OpenSans-Regular.ttf");}
{{ .svg }} @font-face {font-family: "OpenSans"; src: url("./fonts/OpenSans-Bold.ttf"); font-weight: bold;}@font-face {font-family: "Raleway"; src: url("./fonts/Raleway-Regular.ttf");}
<a href="{{ .link }}">{{ .text }}</a> @font-face {font-family: "Raleway"; src: url("./fonts/Raleway-Bold.ttf"); font-weight: bold;}@font-face {font-family: "Caladea"; src: url("./fonts/Caladea-Regular.ttf");}
</div> @font-face {font-family: "Caladea"; src: url("./fonts/Caladea-Bold.ttf"); font-weight: bold;}@font-face {font-family: "Lora"; src: url("./fonts/Lora-Regular.ttf");}
{{ end }} @font-face {font-family: "Lora"; src: url("./fonts/Lora-Bold.ttf"); font-weight: bold;}@font-face {font-family: "RobotoSlab"; src: url("./fonts/RobotoSlab-Regular.ttf");}
{{ range .resume.headings }} @font-face {font-family: "RobotoSlab"; src: url("./fonts/RobotoSlab-Bold.ttf"); font-weight: bold;}@font-face {font-family: "PlayfairDisplay"; src: url("./fonts/PlayfairDisplay-Regular.ttf");}
<div> @font-face {font-family: "PlayfairDisplay"; src: url("./fonts/PlayfairDisplay-Bold.ttf"); font-weight: bold;}@font-face {font-family: "Merriweather"; src: url("./fonts/Merriweather-Regular.ttf");}
{{ . }} @font-face {font-family: "Merriweather"; src: url("./fonts/Merriweather-Bold.ttf"); font-weight: bold;}
</div> </style>
{{ end }} </head>
</div> <body style="margin: auto !important; padding-bottom: .0em !important; width: 512pt; margin: 0; padding: 0; -webkit-text-size-adjust:none;">
<div name="headings"> <div>
</div> <div class="frame-content">
</body> <document title="{{ range .resume.name }}{{ . }} {{ end }}Resume" author="{{ range .resume.name }}{{ . }} {{ end }}" producer="OpenResume">
<footer> <page style="display: flex; flex-direction: column; color: rgb(23, 23, 23); font-family: Lato; font-size: 11pt;">
</footer> <view style="width: 100%; height: 10.5pt; background-color: rgb(129, 140, 248);">
</view>
<view style="display: flex; flex-direction: column; padding: 0px 18pt;">
<view style="display: flex; flex-direction: column; gap: 6pt; margin-top: 12pt;">
<text style="color: rgb(129, 140, 248); font-weight: bold; font-size: 20pt;">{{ range .resume.name }}{{ . }} {{ end }}
</text>
<text style="color: rgb(23, 23, 23); font-weight: normal;">{{ .resume.title }}
</text>
<view style="display: flex; flex-flow: row wrap; justify-content: space-between; margin-top: 1.5pt;">
{{ range .resume.contact.links }}
<view style="display: flex; flex-direction: row; align-items: center; gap: 3pt;">
{{ .svg }}
<a href="{{ .link }}" style="text-decoration: none;" target="_blank" rel="noreferrer">
<text style="color: rgb(23, 23, 23); font-weight: normal;">{{ .text }}</text>
</a>
</view>
{{ end }}
</view>
</view>
{{ range .resume.headings }}
<view style="display: flex; flex-direction: column; gap: 6pt; margin-top: 12pt;">
<view style="display: flex; flex-direction: row; align-items: center;">
<view style="height: 3.75pt; width: 30pt; background-color: rgb(129, 140, 248); margin-right: 10.5pt;">
</view>
<text style="font-weight: bold; letter-spacing: 0.3pt;">{{ .title }}</text>
</view>
{{ if .what }}
<view>
{{ range .what }}
<view style="display: flex; flex-direction: row; justify-content: space-between;">
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.3;">•
<text style="color: rgb(23, 23, 23); font-weight: normal;">{{ . }}
</text>
</view>
{{ end }}
</view>
{{ end }}
{{ range .headings }}
<view>
{{ if .headings }}
<text style="color: rgb(23, 23, 23); font-weight: bold;">{{ .title }}</text>
{{ else }}
<view style="display: flex; flex-direction: row; justify-content: space-between; margin-top: 4.5pt;">
<text style="color: rgb(23, 23, 23); font-weight: bold;">{{ .title }}</text>
<text style="color: rgb(23, 23, 23); font-weight: normal;">{{ .when }}
</text>
</view>
{{ end }}
{{ range .what }}
<view style="display: flex; flex-direction: row; justify-content: space-between; margin-top: 4.5pt;">
<text style="color: rgb(23, 23, 23); font-weight: normal;">{{ . }}
</text>
</view>
{{ end }}
{{ range .headings }}
<view style="display: flex; flex-direction: row; justify-content: space-between; margin-top: 4.5pt;">
<text style="color: rgb(23, 23, 23); font-weight: normal;">{{ .title }}</text>
<text style="color: rgb(23, 23, 23); font-weight: normal;">{{ .when }}
</text>
</view>
<view style="display: flex; flex-direction: column; margin-top: 4.5pt;">
{{ range .what }}
<view style="display: flex; flex-direction: row;">
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.3;">•</text>
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.3; flex-grow: 1; flex-basis: 0px;">{{ . }}</text>
</view>
{{ end }}
</view>
{{ end }}
</view>
{{ end }}
</view>
{{ end }}
</view>
</view>
</page>
</document>
</div>
</div>
</body>
</html> </html>

View File

@@ -8,7 +8,7 @@ resume:
- text: contact@blapointe.com - text: contact@blapointe.com
link: mailto:contact@blapointe.com link: mailto:contact@blapointe.com
svg: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="width: 13pt; height: 13pt; fill: rgb(82, 82, 82);"><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"></path></svg>' svg: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="width: 13pt; height: 13pt; fill: rgb(82, 82, 82);"><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"></path></svg>'
- text: (336) 701 - 6159 - text: (336) 701-6159
link: tel:3367016159 link: tel:3367016159
svg: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="width: 13pt; height: 13pt; fill: rgb(82, 82, 82);"><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"></path></svg>' svg: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="width: 13pt; height: 13pt; fill: rgb(82, 82, 82);"><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"></path></svg>'
- text: Provo, UT - text: Provo, UT
@@ -17,12 +17,7 @@ resume:
link: https://linkedin.com/in/lapoba16 link: https://linkedin.com/in/lapoba16
svg: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="width: 13pt; height: 13pt; fill: rgb(82, 82, 82);"><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg>' svg: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="width: 13pt; height: 13pt; fill: rgb(82, 82, 82);"><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg>'
headings: headings:
- title: Skills - title: WORK EXPERIENCE
what:
- 'Languages: Golang, Bash, Python3'
- 'Platforms: Docker, Hashicorp, Linux/Unix, AWS, Jenkins, REST, Microservices, Git'
- 'Datastores: MongoDB, Redis, S3, Couchbase, DynamoDB'
- title: Work Experience
headings: headings:
- title: Qualtrics - title: Qualtrics
headings: headings:
@@ -45,19 +40,24 @@ resume:
what: what:
- Automated no-downtime system patching for 30 services and 25 database clusters by creating a modular and testable scripting framework. - Automated no-downtime system patching for 30 services and 25 database clusters by creating a modular and testable scripting framework.
- Raised backend service's availability to 99.99% and reduced hardware costs by 40% by selecting, training team on, and live migrating to a different datastore. - Raised backend service's availability to 99.99% and reduced hardware costs by 40% by selecting, training team on, and live migrating to a different datastore.
- title: Education - title: EDUCATION
headings: headings:
- title: Wake Forest University - title: Wake Forest University
when: Dec 2017 when: Dec 2017
what: what:
- Master of Science in Computer Science - 3.88/4.00 - Master of Science in Computer Science - 3.88/4.00 GPA
- title: High Point University - title: High Point University
when: Dec 2015 when: Dec 2015
what: what:
- Bachelor of Arts in Computer Science - 3.91/4.00 - Bachelor of Arts in Computer Science - 3.91/4.00 GPA
- title: Publications - title: PUBLICATIONS
headings: headings:
- title: Arabidopsis thaliana computationally-generated next-state gene interaction models - title: Arabidopsis thaliana computationally-generated next-state gene interaction models
when: Jun 2018 when: Jun 2018
what: what:
- Refactored to correct bugs and improve efficiency by orders of magnitude - Refactored to correct bugs and improve efficiency by orders of magnitude
- title: SKILLS
what:
- 'Languages: Golang, Bash, Python3'
- 'Platforms: Docker, Hashicorp, Linux/Unix, AWS, Jenkins, REST, Microservices, Git'
- 'Datastores: MongoDB, Redis, S3, Couchbase, DynamoDB'

View File

@@ -1,37 +0,0 @@
#! /bin/bash
set -o pipefail
echo '> copy outer HTML of html just inside iframe' >&2
font_family="$(cat resume.html | grep -o 'font-family[^;]*' | tail -n 1 | awk '{print $NF}')"
cat resume.html \
| sed 's/>...<\/text/> - <\/text/g' \
| sed 's/overflow: hidden;/margin: auto !important; padding-bottom: .0em !important;/g' \
| sed 's/padding: 0px 60pt;/padding: 0px 18pt;/' \
| sed 's/width: 612pt;/width: 512pt;/' \
| sed "s#<link [^>]*as=\"font\"[^>]*/fonts/[^${font_family:0:1}][^>]*>##g" \
| sed "s#<link [^>]*as=\"font\"[^>]*/fonts/${font_family:0:1}[^${font_family:1:1}][^>]*>##g" \
| sed "s#/fonts/#./fonts/#g" \
> resume.html.2 \
|| rm resume.html.2
for font_file in $(
cat resume.html.2 \
| grep -o 'href="./fonts/[^"]*' \
| sed 's#.*"./##'
); do
if [ ! -f "$font_file" ]; then
mkdir -p ./${font_file%/*}/
curl -sS -L https://www.open-resume.com/$font_file > $font_file
fi
done
# | sed 's#"/fonts/#"https://www.open-resume.com/fonts/#g' \
#| sed 's/margin-top: 15pt;/margin-top: 20pt;/g' \
#| sed 's/margin-top: 12pt;/margin-top: 17pt;/g' \
#| sed 's/margin-top: 8pt;/margin-top: 12pt;/g' \
#| sed 's/margin-top: 6pt;/margin-top: 10pt;/g' \

View File

@@ -1,153 +0,0 @@
{
"resume": {
"profile": {
"name": "Bree LaPointe",
"summary": "Senior Software Engineer",
"email": "contact@blapointe.com",
"phone": "(336) 701-6159",
"location": "Provo, UT",
"url": "linkedin.com/in/lapoba16"
},
"workExperiences": [
{
"company": "Qualtrics",
"jobTitle": "Senior Software Engineer, Team Lead",
"date": "May 2022 - Present",
"descriptions": [
"Mentored entry and mid-level engineers on stability, clean code, and distributed systems.",
"Hosted engineering book and white paper clubs for continuous improvement and cross-team experience sharing for 2 years.",
"Recovered 98% of data lost in critical incident via coordinating cross team efforts and dissecting native database operation logs."
]
},
{
"company": "Qualtrics",
"jobTitle": "Software Engineer II",
"date": "Oct 2019 - May 2022",
"descriptions": [
"Developed and owned highly available and reliable data storage and operational tooling.",
"Mentored 2 interns, 2 new hires, and 3 mid-level cross team engineers on operational tools, maintainable software, and career development.",
"Genericized AWS asset management tooling ahead of company-wide mass migration initiative.",
"Championed disaster recovery by supporting training runs with documentation, tools, and live support across teams and enforced continuous compliance for 17 database clusters with monitoring and alerting.",
"Lent expertise owning MongoDB across teams by advising on configuration and data models and genericizing disaster recovery tooling for 21 teams."
]
},
{
"company": "Qualtrics",
"jobTitle": "Software Engineer I",
"date": "Feb 2018 - Oct 2019",
"descriptions": [
"Automated no-downtime system patching for 30 services and 25 database clusters by creating a modular and testable scripting framework.",
"Raised backend service's availability to 99.99% and reduced hardware costs by 40% by selecting, training team on, and live migrating to a different datastore."
]
}
],
"educations": [
{
"school": "Wake Forest University",
"degree": "Master of Science in Computer Science",
"gpa": "3.88/4.00",
"date": "Dec 2017",
"descriptions": []
},
{
"school": "High Point University",
"degree": "Bachelor of Arts in Computer Science",
"gpa": "3.91/4.00",
"date": "Dec 2015",
"descriptions": []
}
],
"projects": [
{
"project": "Arabidopsis thaliana computationally-generated next-state gene interaction models",
"date": "June 2018",
"descriptions": [
"Refactored to correct bugs and improve efficiency by orders of magnitude"
]
}
],
"skills": {
"featuredSkills": [
{
"skill": "",
"rating": 4
},
{
"skill": "",
"rating": 4
},
{
"skill": "",
"rating": 4
},
{
"skill": "",
"rating": 4
},
{
"skill": "",
"rating": 4
},
{
"skill": "",
"rating": 4
}
],
"descriptions": [
"Languages: Golang, Bash, Python3",
"Platforms: Docker, Hashicorp, Linux/Unix, AWS, Jenkins, REST, Microservices, Git",
"Datastores: MongoDB, Redis, S3, Couchbase, DynamoDB"
],
"notfeaturedSkills": [
{
"skill": "Golang",
"rating": 4
},
{
"skill": "Bash",
"rating": 4
},
{
"skill": "Python3",
"rating": 3
}
]
},
"custom": {
"descriptions": []
}
},
"settings": {
"themeColor": "#818cf8",
"fontFamily": "Lato",
"fontSize": "11",
"documentSize": "Letter",
"formToShow": {
"workExperiences": true,
"educations": true,
"projects": true,
"skills": true,
"custom": false
},
"formToHeading": {
"workExperiences": "WORK EXPERIENCE",
"educations": "EDUCATION",
"projects": "PUBLICATIONS",
"skills": "SKILLS",
"custom": "PUBLICATIONS"
},
"formsOrder": [
"workExperiences",
"educations",
"projects",
"skills",
"custom"
],
"showBulletPoints": {
"educations": false,
"projects": true,
"skills": true,
"custom": false
}
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.