Compare commits
129 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
173cd383e4 | ||
|
|
93643d0881 | ||
|
|
c5bc7e291d | ||
|
|
f30e3fbe71 | ||
|
|
d7c2207eca | ||
|
|
f62ab35fa8 | ||
|
|
a2a6cccd93 | ||
|
|
523c4fd9a6 | ||
|
|
fb68fce267 | ||
|
|
95c4253e26 | ||
|
|
8e246d07be | ||
|
|
76ea44a124 | ||
|
|
a3f7753a71 | ||
|
|
e23d61a4f0 | ||
|
|
155bba7b5a | ||
|
|
143ae9ba04 | ||
|
|
0512028c40 | ||
|
|
78e6af29ed | ||
|
|
fce00bad38 | ||
|
|
be5671616f | ||
|
|
e8bd522a52 | ||
|
|
30fdbe31f9 | ||
|
|
6c9d11f035 | ||
|
|
47c11b8fba | ||
|
|
de9d53f494 | ||
|
|
712881ad02 | ||
|
|
41cee6f459 | ||
|
|
e3e14d6ed0 | ||
|
|
8ae43a6356 | ||
|
|
9068fa6647 | ||
|
|
c72098a66c | ||
|
|
3d2c4ef882 | ||
|
|
ddf2af808c | ||
|
|
a66222e143 | ||
|
|
5570e6edbe | ||
|
|
5b3106f981 | ||
|
|
5f51d1564e | ||
|
|
e295b06efe | ||
|
|
143dabb7d9 | ||
|
|
cc81b47e49 | ||
|
|
e7ed323f2c | ||
|
|
507f3436c7 | ||
|
|
077a03c35e | ||
|
|
a504c357c5 | ||
|
|
c24ab809a5 | ||
|
|
76aa1a20cf | ||
|
|
d4560d05fd | ||
|
|
96af96b22b | ||
|
|
7864a95eb1 | ||
|
|
a8a0cbad96 | ||
|
|
9a320d1a43 | ||
|
|
2fcd38ef01 | ||
|
|
10f199a93d | ||
|
|
97e5f3150f | ||
|
|
0735f99f65 | ||
|
|
9c3c235073 | ||
|
|
afa43aafdf | ||
|
|
6767833e8e | ||
|
|
09608c5938 | ||
|
|
8184467dc2 | ||
|
|
edaf7b7efd | ||
|
|
16966c4753 | ||
|
|
ab38461d16 | ||
|
|
83a00d5034 | ||
|
|
f238e32e1f | ||
|
|
dff3bf2179 | ||
|
|
30baf3ffef | ||
|
|
a925580e89 | ||
|
|
8b2e8e39fd | ||
|
|
d94ddad195 | ||
|
|
204aee596d | ||
|
|
28cf47111f | ||
|
|
046903a7f5 | ||
|
|
c1224ff604 | ||
|
|
4a2e8dc48b | ||
|
|
949f968245 | ||
|
|
9cc98adfae | ||
|
|
af2db988fb | ||
|
|
aba83156ee | ||
|
|
ae6ed10323 | ||
|
|
0c06d17407 | ||
|
|
c6fc22b178 | ||
|
|
d1278dc5b7 | ||
|
|
e6c1d153b7 | ||
|
|
88c4caf3a0 | ||
|
|
0e640d0219 | ||
|
|
7ee12afe20 | ||
|
|
2ef773b4fe | ||
|
|
ded72f67ed | ||
|
|
d478599217 | ||
|
|
cd7251ee45 | ||
|
|
98fd145856 | ||
|
|
4adaa14452 | ||
|
|
1e5b251590 | ||
|
|
e97fcc2d8c | ||
|
|
8b1d395f19 | ||
|
|
c714db922b | ||
|
|
6e98d349e8 | ||
|
|
196bcac6dd | ||
|
|
abd6e369da | ||
|
|
eda630dcde | ||
|
|
23b6271f36 | ||
|
|
f0c9b1c3a4 | ||
|
|
dadd94778b | ||
|
|
36b285f706 | ||
|
|
99b97efd80 | ||
|
|
7deca1b9c9 | ||
|
|
49314cc0c5 | ||
|
|
d69c76f85b | ||
|
|
1d258f18ed | ||
|
|
38390a780c | ||
|
|
38470725a6 | ||
|
|
aa7795215e | ||
|
|
057251fecc | ||
|
|
204670a626 | ||
|
|
476bc0ea10 | ||
|
|
7538839ade | ||
|
|
91d7b82988 | ||
|
|
56d847ea1e | ||
|
|
98e1f7c8cb | ||
|
|
702dea753e | ||
|
|
98475466e1 | ||
|
|
b21e6a3013 | ||
|
|
63f7a83318 | ||
|
|
32e836579f | ||
|
|
5c0ea418d5 | ||
|
|
9393801259 | ||
|
|
c9be79a3c8 | ||
|
|
f8d95489bb |
7
.firebase/hosting.ZGVwbG95L3B1YmxpYw.cache
Normal file → Executable file
7
.firebase/hosting.ZGVwbG95L3B1YmxpYw.cache
Normal file → Executable file
@@ -1,3 +1,4 @@
|
||||
index.html,1616964719736,3f99d785be835c8aff1990faf8bf678d2779414226c3ba41a6bf8210c9044e85
|
||||
resume.css,1616964719738,9561dffbb8787cf3367cce3e3eb1169b74852e6fe7c4f8422bf9ad39affdd2d8
|
||||
resume.pdf,1616964719741,81d95603bad78aa3f433e5acd87ad92afb7d4a765684b662b4d237524603d4d0
|
||||
index.html,1697076028715,3bd03c4d83dbeb2ed2b7bee9267742390fb06c0bee7086dc5befae5529fcbca2
|
||||
BreeLaPointeResume.pdf,1697076028715,e65c67dce31a4e83006e2876b59398353a76ef1c3884fee6bdfb15a1a69745fb
|
||||
fonts/Lato-Bold.ttf,1697076028715,e77763dcc0ed479b272159ee5dad99264d0cea536b5fd3072504d6687e18ba54
|
||||
fonts/Lato-Regular.ttf,1697076028715,1272611e0b7f2015372f7ff6bce5bd351b5746578cbaff916ed6c0bf67f84e10
|
||||
|
||||
0
.firebaserc
Normal file → Executable file
0
.firebaserc
Normal file → Executable file
4
.gitignore
vendored
Normal file → Executable file
4
.gitignore
vendored
Normal file → Executable file
@@ -1,7 +1,11 @@
|
||||
**/*.sw*
|
||||
/.firebase/*.cache
|
||||
**/*.pdf
|
||||
resume
|
||||
**/*.tar
|
||||
deploy
|
||||
vendor
|
||||
firebase-debug.log
|
||||
/**/node_modules
|
||||
/json-resume/out
|
||||
!/open-resume.com.d/resume.pdf
|
||||
|
||||
82
.harness/firebase-deploy.yaml
Normal file
82
.harness/firebase-deploy.yaml
Normal file
@@ -0,0 +1,82 @@
|
||||
version: 1
|
||||
kind: pipeline
|
||||
spec:
|
||||
stages:
|
||||
- name: debug
|
||||
type: ci
|
||||
spec:
|
||||
steps:
|
||||
- name: debug
|
||||
type: run
|
||||
spec:
|
||||
name: debug
|
||||
container: alpine/git
|
||||
shell: sh
|
||||
script: |
|
||||
export build_event=${{ build.event }}
|
||||
export build_target=${{ build.target }}
|
||||
export build_before=${{ build.before }}
|
||||
export build_after=${{ build.after }}
|
||||
env | grep ^build_
|
||||
git --no-pager diff --name-only $build_before..$build_after
|
||||
- name: dockers
|
||||
type: ci
|
||||
spec:
|
||||
volumes:
|
||||
- name: dockersock
|
||||
spec: {}
|
||||
type: temp
|
||||
steps:
|
||||
- name: dind
|
||||
when: build.event == "push" && build.target == "main"
|
||||
type: background
|
||||
spec:
|
||||
container:
|
||||
image: registry-app.inhome.blapointe.com:5001/docker:latest
|
||||
privileged: true
|
||||
mount:
|
||||
- name: dockersock
|
||||
path: /var/run
|
||||
- name: docker
|
||||
type: run
|
||||
when: build.event == "push" && build.target == "main"
|
||||
spec:
|
||||
name: docker
|
||||
container: registry-app.inhome.blapointe.com:5001/docker:latest
|
||||
mount:
|
||||
- name: dockersock
|
||||
path: /var/run
|
||||
shell: sh
|
||||
script: |
|
||||
set -ueo pipefail
|
||||
|
||||
export build_before=${{ build.before }}
|
||||
export build_after=${{ build.after }}
|
||||
|
||||
apk add --no-cache git
|
||||
t=registry-app.inhome.blapointe.com:5001/portfolio/resume/builder:latest
|
||||
if git diff --name-only $build_before..$build_after | grep Dockerfile.cicd; then
|
||||
until docker ps; do
|
||||
sleep 5
|
||||
done
|
||||
docker build -t "$t" -f ./Dockerfile.cicd .
|
||||
docker push "$t"
|
||||
fi
|
||||
- name: build
|
||||
type: ci
|
||||
spec:
|
||||
steps:
|
||||
- name: build
|
||||
type: run
|
||||
when: build.event == "push" && build.target == "main"
|
||||
spec:
|
||||
name: build
|
||||
container:
|
||||
image: registry-app.inhome.blapointe.com:5001/portfolio/resume/builder:latest
|
||||
user: root
|
||||
envs:
|
||||
FIREBASE_CI_TOKEN: ${{ secrets.get("resume-firebase-squeaky2x3-gmail-token") }}
|
||||
GITLAB_PAT: ${{ secrets.get("resume-gitlab-gitlab-breel-dev-token") }}
|
||||
shell: sh
|
||||
script: |
|
||||
bash ./deploy.firebase.sh
|
||||
9
.vale.ini
Normal file
9
.vale.ini
Normal file
@@ -0,0 +1,9 @@
|
||||
StylesPath = styles
|
||||
|
||||
MinAlertLevel = suggestion
|
||||
|
||||
Packages = proselint, write-good, Readability, Joblint
|
||||
|
||||
[*]
|
||||
BasedOnStyles = Vale, proselint, write-good, Readability, Joblint
|
||||
|
||||
14
Dockerfile.cicd
Normal file
14
Dockerfile.cicd
Normal file
@@ -0,0 +1,14 @@
|
||||
FROM jdkato/vale:latest as vale
|
||||
|
||||
FROM andreysenov/firebase-tools:latest
|
||||
|
||||
USER root
|
||||
|
||||
RUN echo installing dependencies...
|
||||
RUN apt -y install git woff2 bash
|
||||
|
||||
RUN echo copying vale...
|
||||
COPY --from=vale /bin/vale /bin/vale
|
||||
|
||||
RUN echo OK
|
||||
|
||||
Binary file not shown.
23
README.md
Executable file
23
README.md
Executable file
@@ -0,0 +1,23 @@
|
||||
# Resume
|
||||
|
||||
1. open https://www.open-resume.com/resume-builder
|
||||
1. in browser, `inspect > storage > local storage > about:srcdoc`
|
||||
1. `cat ./open-resume.com.d/local*.json`
|
||||
1. paste into `about:srcdoc` `Value`
|
||||
1. refresh
|
||||
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
|
||||
|
||||
1. `gitness.inhome.blapointe.com` has a `./.harness` pipeline
|
||||
1. the pipeline
|
||||
1. renders [Resume](#resume) as `$(mktemp -d)/public`
|
||||
1. clones [gitlab](https://gitlab.com/breel/resume.git)
|
||||
1. replaces [gitlab](https://gitlab.com/breel/resume.git) with `.../public/`
|
||||
1. pushes [gitlab](https://gitlab.com/breel/resume.git)
|
||||
1. [render](https://dashboard.render.com/static/srv-cklkk8o710pc73d7fn7g) detects public repo event and updates its static site hosting for [breel.dev](https://breel.dev)
|
||||
1. [firebase](https://console.firebase.google.com/u/0/project/blapointe-com/overview) deploys `.../public/` for [blapointe.com](https://blapointe.com)
|
||||
95
deploy.firebase.sh
Normal file → Executable file
95
deploy.firebase.sh
Normal file → Executable file
@@ -1,24 +1,93 @@
|
||||
#! /bin/bash
|
||||
#! /bin/sh
|
||||
|
||||
set -o pipefail
|
||||
set -e
|
||||
set -u
|
||||
|
||||
if ! which firebase; then
|
||||
echo curl -sL https://firebase.tools | upgrade=true bash
|
||||
cd src
|
||||
|
||||
if which vale; then
|
||||
f=$(mktemp)
|
||||
cat open-resume.com.d/local-storage-about-srcdoc-open-resume.json | sed 's/"[^"]*":/"."/g' > $f
|
||||
vale sync
|
||||
vale $f || true
|
||||
fi
|
||||
|
||||
outdir=./deploy
|
||||
if tty && ! which firebase; then
|
||||
f="$(mktemp)"
|
||||
wget https://firebase.tools -O - > "$f"
|
||||
export upgrade=true
|
||||
sudo bash "$f"
|
||||
fi
|
||||
which firebase
|
||||
|
||||
outdir=$(mktemp -d)
|
||||
cleanup() {
|
||||
rm -rf "$outdir"
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
rm -rf $outdir
|
||||
mkdir -p $outdir/public
|
||||
cp ./resume.md-main/resume.html $outdir/public/index.html
|
||||
cp ./resume.md-main/resume.css $outdir/public/
|
||||
cp ./resume.md-main/resume.pdf $outdir/public/
|
||||
cp ./open-resume.com.d/resume.html.2 $outdir/public/index.html
|
||||
cp ./open-resume.com.d/resume.pdf $outdir/public/BreeLaPointeResume.pdf
|
||||
cp -r ./open-resume.com.d/fonts $outdir/public/
|
||||
|
||||
firebase login
|
||||
echo firebase init
|
||||
firebase deploy || (
|
||||
firebase logout
|
||||
firebase login
|
||||
firebase deploy
|
||||
(
|
||||
if ! which woff2_compress; then
|
||||
sudo apt -y install woff2
|
||||
fi
|
||||
set -ueo pipefail
|
||||
for f in "$outdir"/public/fonts/*.ttf; do
|
||||
echo ttf to woff2 for "$f"
|
||||
if [ -f "$f" ]; then
|
||||
woff2_compress "$f"
|
||||
rm "$f"
|
||||
fi
|
||||
basename_f="${f##*/}"
|
||||
find "$outdir/public" -type f | grep -v public.fonts | while read -r f2; do
|
||||
sed -i "s#$basename_f#${basename_f%.ttf}.woff2#g" "$f2"
|
||||
done
|
||||
echo asserting no $basename_f
|
||||
! grep -R "$basename_f" "$outdir/public"
|
||||
echo asserting ${basename_f%.ttf}.woff2
|
||||
grep -R "${basename_f%.ttf}.woff2" "$outdir/public"
|
||||
done
|
||||
du -sh "$outdir/public/fonts/"*
|
||||
)
|
||||
|
||||
cp -r ../firebase.json ../.firebaserc ../.firebase $outdir/
|
||||
sed -i "s#deploy/public#public#" $outdir/firebase.json
|
||||
cd $outdir
|
||||
|
||||
(
|
||||
set -ueo pipefail
|
||||
if [ -n "$GITLAB_PAT" ]; then
|
||||
export HOME="$(mktemp -d)"
|
||||
git clone https://gitlab%40breel.dev:"$GITLAB_PAT"@gitlab.com/breel/resume.git gitlab-resume.d
|
||||
git config --global user.name "gitlab@breel.dev"
|
||||
git config --global user.email "gitlab@breel.dev"
|
||||
rm -rf ./gitlab-resume.d/*
|
||||
cp -r ./public/* ./gitlab-resume.d/
|
||||
cd ./gitlab-resume.d/
|
||||
git add -A :/
|
||||
git commit -m "$(date -u +%Y-%m-%dT%H:%M:%S)"
|
||||
git push origin main
|
||||
fi
|
||||
) || true
|
||||
|
||||
(
|
||||
set -ueo pipefail
|
||||
echo firebase uses squeaky2x3@gmail.com
|
||||
! tty || firebase login
|
||||
echo firebase init
|
||||
args=()
|
||||
log_args=()
|
||||
if ! tty; then
|
||||
args+=("--token" "$FIREBASE_CI_TOKEN")
|
||||
log_args+=("--token" "${FIREBASE_CI_TOKEN:0:1}")
|
||||
test "${FIREBASE_CI_TOKEN:0:1}" != "$"
|
||||
fi
|
||||
echo firebase deploy "${log_args[@]}"
|
||||
firebase deploy "${args[@]}"
|
||||
)
|
||||
|
||||
29
deploy.sh
29
deploy.sh
@@ -1,29 +0,0 @@
|
||||
#! /bin/bash
|
||||
|
||||
set -o pipefail
|
||||
set -e
|
||||
|
||||
outdir=./deploy
|
||||
|
||||
rm -rf $outdir
|
||||
mkdir -p $outdir/public
|
||||
cp ./resume.md-main/resume.html $outdir/public/index.html
|
||||
cp ./resume.md-main/resume.css $outdir/public/
|
||||
cp ./resume.md-main/resume.pdf $outdir/public/
|
||||
(
|
||||
printf "runtime: go114\n"
|
||||
true || go version \
|
||||
| grep -Eo '[0-9]+\.[0-9]+' \
|
||||
| sed 's/[^0-9]//'
|
||||
) > $outdir/app.yaml
|
||||
cp ./main.go $outdir/
|
||||
pushd $outdir
|
||||
GOOS=linux CGO_ENABLED=0 go build -ldflags "-s -w" -a -installsuffix cgo -trimpath
|
||||
rm main.go
|
||||
popd
|
||||
tar -czf ./deploy.tar $outdir
|
||||
rm -rf $outdir
|
||||
scp -i $HOME/.ssh/gcp.blapointe.com ./deploy.tar gcp.blapointe.com:./
|
||||
ssh -i $HOME/.ssh/gcp.blapointe.com gcp.blapointe.com bash -c "true; tar -xf deploy.tar; mv $outdir/${outdir##*/} ./services/bin/resume; rm -rf services/lib/resume; mv $outdir/public services/lib/resume; rm -rf deploy.tar $outdir"
|
||||
rm -f ./deploy.tar
|
||||
|
||||
3
firebase.json
Normal file → Executable file
3
firebase.json
Normal file → Executable file
@@ -6,7 +6,8 @@
|
||||
"**/.*",
|
||||
"**/node_modules/**",
|
||||
"firebase*",
|
||||
"resume.md-main/**"
|
||||
"resume.md-main/**",
|
||||
"json-resume/**"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Page Not Found</title>
|
||||
|
||||
<style media="screen">
|
||||
body { background: #ECEFF1; color: rgba(0,0,0,0.87); font-family: Roboto, Helvetica, Arial, sans-serif; margin: 0; padding: 0; }
|
||||
#message { background: white; max-width: 360px; margin: 100px auto 16px; padding: 32px 24px 16px; border-radius: 3px; }
|
||||
#message h3 { color: #888; font-weight: normal; font-size: 16px; margin: 16px 0 12px; }
|
||||
#message h2 { color: #ffa100; font-weight: bold; font-size: 16px; margin: 0 0 8px; }
|
||||
#message h1 { font-size: 22px; font-weight: 300; color: rgba(0,0,0,0.6); margin: 0 0 16px;}
|
||||
#message p { line-height: 140%; margin: 16px 0 24px; font-size: 14px; }
|
||||
#message a { display: block; text-align: center; background: #039be5; text-transform: uppercase; text-decoration: none; color: white; padding: 16px; border-radius: 4px; }
|
||||
#message, #message a { box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); }
|
||||
#load { color: rgba(0,0,0,0.4); text-align: center; font-size: 13px; }
|
||||
@media (max-width: 600px) {
|
||||
body, #message { margin-top: 0; background: white; box-shadow: none; }
|
||||
body { border-top: 16px solid #ffa100; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="message">
|
||||
<h2>404</h2>
|
||||
<h1>Page Not Found</h1>
|
||||
<p>The specified file was not found on this website. Please check the URL for mistakes and try again.</p>
|
||||
<h3>Why am I seeing this?</h3>
|
||||
<p>This page was generated by the Firebase Command-Line Interface. To modify it, edit the <code>404.html</code> file in your project's configured <code>public</code> directory.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,80 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Welcome to Firebase Hosting</title>
|
||||
|
||||
<!-- update the version number as needed -->
|
||||
<script defer src="/__/firebase/7.21.1/firebase-app.js"></script>
|
||||
<!-- include only the Firebase features as you need -->
|
||||
<script defer src="/__/firebase/7.21.1/firebase-auth.js"></script>
|
||||
<script defer src="/__/firebase/7.21.1/firebase-database.js"></script>
|
||||
<script defer src="/__/firebase/7.21.1/firebase-messaging.js"></script>
|
||||
<script defer src="/__/firebase/7.21.1/firebase-storage.js"></script>
|
||||
<script defer src="/__/firebase/7.21.1/firebase-analytics.js"></script>
|
||||
<script defer src="/__/firebase/7.21.1/firebase-remote-config.js"></script>
|
||||
<script defer src="/__/firebase/7.21.1/firebase-performance.js"></script>
|
||||
<!-- initialize the SDK after all desired features are loaded -->
|
||||
<script defer src="/__/firebase/init.js"></script>
|
||||
|
||||
<style media="screen">
|
||||
body { background: #ECEFF1; color: rgba(0,0,0,0.87); font-family: Roboto, Helvetica, Arial, sans-serif; margin: 0; padding: 0; }
|
||||
#message { background: white; max-width: 360px; margin: 100px auto 16px; padding: 32px 24px; border-radius: 3px; }
|
||||
#message h2 { color: #ffa100; font-weight: bold; font-size: 16px; margin: 0 0 8px; }
|
||||
#message h1 { font-size: 22px; font-weight: 300; color: rgba(0,0,0,0.6); margin: 0 0 16px;}
|
||||
#message p { line-height: 140%; margin: 16px 0 24px; font-size: 14px; }
|
||||
#message a { display: block; text-align: center; background: #039be5; text-transform: uppercase; text-decoration: none; color: white; padding: 16px; border-radius: 4px; }
|
||||
#message, #message a { box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); }
|
||||
#load { color: rgba(0,0,0,0.4); text-align: center; font-size: 13px; }
|
||||
@media (max-width: 600px) {
|
||||
body, #message { margin-top: 0; background: white; box-shadow: none; }
|
||||
body { border-top: 16px solid #ffa100; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="message">
|
||||
<h2>Welcome</h2>
|
||||
<h1>Firebase Hosting Setup Complete</h1>
|
||||
<p>You're seeing this because you've successfully setup Firebase Hosting. Now it's time to go build something extraordinary!</p>
|
||||
<a target="_blank" href="https://firebase.google.com/docs/hosting/">Open Hosting Documentation</a>
|
||||
</div>
|
||||
<p id="load">Firebase SDK Loading…</p>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const loadEl = document.querySelector('#load');
|
||||
// // 🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥
|
||||
// // The Firebase SDK is initialized and available here!
|
||||
//
|
||||
// firebase.auth().onAuthStateChanged(user => { });
|
||||
// firebase.database().ref('/path/to/ref').on('value', snapshot => { });
|
||||
// firebase.messaging().requestPermission().then(() => { });
|
||||
// firebase.storage().ref('/path/to/ref').getDownloadURL().then(() => { });
|
||||
// firebase.analytics(); // call to activate
|
||||
// firebase.analytics().logEvent('tutorial_completed');
|
||||
// firebase.performance(); // call to activate
|
||||
//
|
||||
// // 🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥
|
||||
|
||||
try {
|
||||
let app = firebase.app();
|
||||
let features = [
|
||||
'auth',
|
||||
'database',
|
||||
'messaging',
|
||||
'storage',
|
||||
'analytics',
|
||||
'remoteConfig',
|
||||
'performance',
|
||||
].filter(feature => typeof app[feature] === 'function');
|
||||
loadEl.textContent = `Firebase SDK loaded with ${features.join(', ')}`;
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
loadEl.textContent = 'Error loading the Firebase SDK, check the console.';
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,21 +0,0 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 Mike Lee Williams
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -1,21 +0,0 @@
|
||||
.PHONY: resume watch clean
|
||||
|
||||
resume: resume.pdf resume.html
|
||||
|
||||
watch:
|
||||
ls *.md *.css | entr make resume
|
||||
|
||||
name := $(shell grep "^\#" resume.md | head -1 | sed -e 's/^\#[[:space:]]*//' | xargs)
|
||||
|
||||
resume.html: preamble.html resume.md postamble.html
|
||||
cat preamble.html | sed -e 's/___NAME___/$(name)/' > $@
|
||||
python3 -m markdown -x smarty resume.md >> $@
|
||||
cat postamble.html >> $@
|
||||
|
||||
resume.pdf: resume.html resume.css
|
||||
weasyprint resume.html resume.pdf
|
||||
qpdf --empty --pages ./resume.pdf 1-1 -- ./resume.truncate.pdf
|
||||
mv ./resume.truncate.pdf ./resume.pdf
|
||||
|
||||
clean:
|
||||
rm -f resume.html resume.pdf
|
||||
@@ -1,69 +0,0 @@
|
||||
# resume.md
|
||||
|
||||

|
||||
|
||||
|
||||
Write your resume in
|
||||
[Markdown](https://raw.githubusercontent.com/williamsmj/resume.md/main/resume.md),
|
||||
style it with [CSS](resume.css), output to [HTML](resume.html) and
|
||||
[PDF](resume.pdf).
|
||||
|
||||
|
||||
## Instructions
|
||||
|
||||
1. Clone this repository
|
||||
|
||||
2. Install the dependencies:
|
||||
<pre>
|
||||
pip install <a href="https://python-markdown.github.io/">markdown</a> <a href="https://weasyprint.org/">weasyprint</a>
|
||||
</pre>
|
||||
|
||||
3. Edit [resume.md](resume.md) (the placeholder text is taken with thanks from the
|
||||
[JSON Resume Project](https://jsonresume.org/themes/))
|
||||
|
||||
4. Run `make resume` to build resume.html and resume.pdf.
|
||||
|
||||
## Customization
|
||||
|
||||
Edit [resume.css](resume.css) to change the appearance of your resume. The
|
||||
default style is extremely generic, which is perhaps what you want in a resume,
|
||||
but CSS gives you a lot of flexibility. See, e.g. [The Tech Resume
|
||||
Inside-Out](https://www.thetechinterview.com/) for good advice about what a
|
||||
resume should look like (and what it should say).
|
||||
|
||||
Because the source is plain markdown and python-markdown is a very bare bones
|
||||
markdown compiler, elements cannot be tagged with ids or classes in the markdown
|
||||
source. If you need more control over the HTML, take a look at
|
||||
[kramdown](https://kramdown.gettalong.org/syntax.html). I chose not to use it
|
||||
for this project to avoid a non-python dependency.
|
||||
|
||||
Change the appearance of the PDF version (without affecting the HTML version) by
|
||||
adding rules under the `@media print` CSS selector.
|
||||
|
||||
Change the margins and paper size of the PDF version by editing the [`@page` CSS
|
||||
rule](https://developer.mozilla.org/en-US/docs/Web/CSS/%40page/size).
|
||||
|
||||
If you make a resume.css that you like, please submit a pull request. I'd be
|
||||
happy to collect these.
|
||||
|
||||
## Tips
|
||||
|
||||
Run `make watch` while you are working on your resume to rebuild it whenever
|
||||
resume.md or resume.css change (requires
|
||||
[entr](http://eradman.com/entrproject/)).
|
||||
|
||||
The simplest way to maintain multiple versions of your resume is to comment bits
|
||||
of text in or out based on the audience. This can be done with standard HTML
|
||||
comment syntax (e.g. `<!-- Skills: Microsoft Word -->`) but beware that
|
||||
commented out text will be included in the HTML source that you are presumably
|
||||
going to put online or share.
|
||||
|
||||
An alternative is to keep snippets of Markdown (or CSS) in separate files, and
|
||||
collect them into a single file for each version of your resume using a
|
||||
templating tool, makefile or shell script.
|
||||
|
||||
Use, e.g. `git tag` to record which version of the resume you sent to which
|
||||
person.
|
||||
|
||||
Use `git diff --word-diff` to make `git diff` more legible (this applies any
|
||||
time you run git diff on natural language).
|
||||
@@ -1,35 +0,0 @@
|
||||
</div>
|
||||
|
||||
<script src="/__/firebase/7.21.1/firebase-app.js"></script>
|
||||
<script src="/__/firebase/init.js"></script>
|
||||
|
||||
</body>
|
||||
<br>
|
||||
<footer>
|
||||
<div id="social">
|
||||
<a title="PDF" href="./resume.pdf">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16 11h5l-9 10-9-10h5v-11h8v11zm1 11h-10v2h10v-2z"/></svg>
|
||||
</a>
|
||||
<a title="LinkedIn" href="https://linkedin.com/in/lapoba16">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path d="M19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z"/>
|
||||
</svg>
|
||||
</a>
|
||||
<a title="Website" href="https://blapointe.com/">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path d="M13.144 8.171c-.035-.066.342-.102.409-.102.074.009-.196.452-.409.102zm-2.152-3.072l.108-.031c.064.055-.072.095-.051.136.086.155.021.248.008.332-.014.085-.104.048-.149.093-.053.066.258.075.262.085.011.033-.375.089-.304.171.096.136.824-.195.708-.176.225-.113.029-.125-.097-.19-.043-.215-.079-.547-.213-.68l.088-.102c-.206-.299-.36.362-.36.362zm13.008 6.901c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12s5.372-12 12-12c6.627 0 12 5.373 12 12zm-8.31-5.371c-.006-.146-.19-.284-.382-.031-.135.174-.111.439-.184.557-.104.175.567.339.567.174.025-.277.732-.063.87-.025.248.069.643-.226.211-.381-.355-.13-.542-.269-.574-.523 0 0 .188-.176.106-.166-.218.027-.614.786-.614.395zm6.296 5.371c0-1.035-.177-2.08-.357-2.632-.058-.174-.189-.312-.359-.378-.256-.1-1.337.597-1.5.254-.107-.229-.324.146-.572.008-.12-.066-.454-.515-.605-.46-.309.111.474.964.688 1.076.201-.152.852-.465.992-.038.268.804-.737 1.685-1.251 2.149-.768.694-.624-.449-1.147-.852-.275-.211-.272-.66-.55-.815-.124-.07-.693-.725-.688-.813l-.017.166c-.094.071-.294-.268-.315-.321 0 .295.48.765.639 1.001.271.405.416.995.748 1.326.178.178.858.914 1.035.898.193-.017.803-.458.911-.433.644.152-1.516 3.205-1.721 3.583-.169.317.138 1.101.113 1.476-.029.433-.37.573-.693.809-.346.253-.265.745-.556.925-.517.318-.889 1.353-1.623 1.348-.216-.001-1.14.36-1.261.007-.094-.256-.22-.45-.353-.703-.13-.248-.015-.505-.173-.724-.109-.152-.475-.497-.508-.677-.002-.155.117-.626.28-.708.229-.117.044-.458.016-.656-.048-.354-.267-.646-.53-.851-.389-.299-.188-.537-.097-.964 0-.204-.124-.472-.398-.392-.564.164-.393-.44-.804-.413-.296.021-.538.209-.813.292-.346.104-.7-.082-1.042-.125-1.407-.178-1.866-1.786-1.499-2.946.037-.19-.114-.542-.048-.689.158-.352.48-.747.762-1.014.158-.15.361-.112.547-.229.287-.181.291-.553.572-.781.4-.325.946-.318 1.468-.388.278-.037 1.336-.266 1.503-.06 0 .038.191.604-.019.572.433.023 1.05.749 1.461.579.211-.088.134-.736.567-.423.262.188 1.436.272 1.68.069.15-.124.234-.93.052-1.021.116.115-.611.124-.679.098-.12-.044-.232.114-.425.025.116.055-.646-.354-.218-.667-.179.131-.346-.037-.539.107-.133.108.062.18-.128.274-.302.153-.53-.525-.644-.602-.116-.076-1.014-.706-.77-.295l.789.785c-.039.025-.207-.286-.207-.059.053-.135.02.579-.104.347-.055-.089.09-.139.006-.268 0-.085-.228-.168-.272-.226-.125-.155-.457-.497-.637-.579-.05-.023-.764.087-.824.11-.07.098-.13.201-.179.311-.148.055-.287.126-.419.214l-.157.353c-.068.061-.765.291-.769.3.029-.075-.487-.171-.453-.321.038-.165.213-.68.168-.868-.048-.197 1.074.284 1.146-.235.029-.225.046-.487-.313-.525.068.008.695-.246.799-.36.146-.168.481-.442.724-.442.284 0 .223-.413.354-.615.131.053-.07.376.087.507-.01-.103.445.057.489.033.104-.054.684-.022.594-.294-.1-.277.051-.195.181-.253-.022.009.34-.619.402-.413-.043-.212-.421.074-.553.063-.305-.024-.176-.52-.061-.665.089-.115-.243-.256-.247-.036-.006.329-.312.627-.241 1.064.108.659-.735-.159-.809-.114-.28.17-.509-.214-.364-.444.148-.235.505-.224.652-.476.104-.178.225-.385.385-.52.535-.449.683-.09 1.216-.041.521.048.176.124.104.324-.069.19.286.258.409.099.07-.092.229-.323.298-.494.089-.222.901-.197.334-.536-.374-.223-2.004-.672-3.096-.672-.236 0-.401.263-.581.412-.356.295-1.268.874-1.775.698-.519-.179-1.63.66-1.808.666-.065.004.004-.634.358-.681-.153.023 1.247-.707 1.209-.859-.046-.18-2.799.822-2.676 1.023.059.092.299.092-.016.294-.18.109-.372.801-.541.801-.505.221-.537-.435-1.099.409l-.894.36c-1.328 1.411-2.247 3.198-2.58 5.183-.013.079.334.226.379.28.112.134.112.712.167.901.138.478.479.744.74 1.179.154.259.41.914.329 1.186.108-.178 1.07.815 1.246 1.022.414.487.733 1.077.061 1.559-.217.156.33 1.129.048 1.368l-.361.093c-.356.219-.195.756.021.982 1.818 1.901 4.38 3.087 7.22 3.087 5.517 0 9.989-4.472 9.989-9.989zm-11.507-6.357c.125-.055.293-.053.311-.22.015-.148.044-.046.08-.1.035-.053-.067-.138-.11-.146-.064-.014-.108.069-.149.104l-.072.019-.068.087.008.048-.087.106c-.085.084.002.139.087.102z"/>
|
||||
</svg>
|
||||
</a>
|
||||
<a title="Email" href="mailto:contact@blapointe.com">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path d="M0 3v18h24v-18h-24zm6.623 7.929l-4.623 5.712v-9.458l4.623 3.746zm-4.141-5.929h19.035l-9.517 7.713-9.518-7.713zm5.694 7.188l3.824 3.099 3.83-3.104 5.612 6.817h-18.779l5.513-6.812zm9.208-1.264l4.616-3.741v9.348l-4.616-5.607z"/>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div id="thanks">
|
||||
<div>
|
||||
Thanks to <a href="https://github.com/williamsmj/resume.md/">resume.md</a> and <a href="https://iconmonstr.com/">iconmonstr</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</html>
|
||||
@@ -1,8 +0,0 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>___NAME___</title>
|
||||
<link rel="stylesheet" type="text/css" href="resume.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="resume">
|
||||
@@ -1,178 +0,0 @@
|
||||
body {
|
||||
color: #000000;
|
||||
background: #EEEEEE;
|
||||
font: 1.1em "Times New Roman";
|
||||
line-height: 1.2;
|
||||
margin: 40px 0;
|
||||
}
|
||||
#resume, footer {
|
||||
background: #FFFFFF;
|
||||
border: 1px solid #CCCCCC;
|
||||
box-shadow: 2px 2px 4px #AAAAAA;
|
||||
-webkit-box-shadow: 2px 2px 4px #AAAAAA;
|
||||
}
|
||||
#social > a {
|
||||
display: block;
|
||||
max-width: 2em;
|
||||
width: 2em;
|
||||
}
|
||||
#social {
|
||||
padding: 20px 30px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
#social a, #social a:link, #social a:visited {
|
||||
color: #000;
|
||||
text-decoration: underline;
|
||||
}
|
||||
#social a {
|
||||
margin: 0 1em 0 0;
|
||||
}
|
||||
#social a:hover {
|
||||
color: #444;
|
||||
text-decoration: underline;
|
||||
}
|
||||
#resume {
|
||||
max-width: 800px;
|
||||
padding: 40px 60px;
|
||||
}
|
||||
footer {
|
||||
max-width: 925px;
|
||||
}
|
||||
#resume, footer {
|
||||
margin: 0 auto;
|
||||
}
|
||||
h1 {
|
||||
text-transform: uppercase;
|
||||
text-align: center;
|
||||
font-size: 150%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
h2 {
|
||||
border-bottom: 1px solid #000000;
|
||||
text-transform: uppercase;
|
||||
font-size: 130%;
|
||||
margin: 1.0em 0 0 0;
|
||||
padding: 0;
|
||||
}
|
||||
h3 {
|
||||
font-size: 100%;
|
||||
margin: 0.8em 0 0.3em 0;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
h3 > div:nth-child(1) {
|
||||
flex: 1;
|
||||
padding: 0 2em 0 0;
|
||||
}
|
||||
h3 > div:nth-child(2) {
|
||||
flex: none;
|
||||
}
|
||||
p {
|
||||
margin: 0 0 0.5em 0;
|
||||
padding: 0;
|
||||
}
|
||||
ul {
|
||||
padding: 0;
|
||||
margin: 0 1.5em;
|
||||
}
|
||||
/* ul immediately after h1 = contact list */
|
||||
h1 + ul {
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
li {
|
||||
margin: .5em 0 0 0;
|
||||
}
|
||||
h1 + ul > li {
|
||||
margin: initial;
|
||||
display: inline;
|
||||
white-space: pre;
|
||||
list-style-type: none;
|
||||
}
|
||||
h1 + ul > li:after {
|
||||
content: " \2022 ";
|
||||
}
|
||||
h1 + ul > li:last-child:after {
|
||||
content: "";
|
||||
}
|
||||
/* p immediately after contact list = summary */
|
||||
h1 + ul + p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
footer {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
footer > div {
|
||||
flex: 2;
|
||||
min-width: 20em;
|
||||
}
|
||||
#thanks {
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
font-style: italic;
|
||||
opacity: 75%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
@media print {
|
||||
body {
|
||||
font-size: 12pt;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: none;
|
||||
}
|
||||
#resume {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0px;
|
||||
background: none;
|
||||
box-shadow: none;
|
||||
-webkit-box-shadow: none;
|
||||
}
|
||||
/* Make links black in PDF */
|
||||
/* Move this outside the print block to apply this in HTML too */
|
||||
a, a:link, a:visited, a:hover {
|
||||
color: #000000;
|
||||
text-decoration: underline;
|
||||
}
|
||||
/*
|
||||
ul:not(:nth-child(2)) > li:nth-child(1),
|
||||
ul:not(:nth-child(2)) > li:nth-child(2) {
|
||||
display: list-item;
|
||||
}
|
||||
ul:not(:nth-child(2)) > li,
|
||||
*/
|
||||
footer {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@page {
|
||||
/* Change margins and paper size of PDF */
|
||||
/* https://developer.mozilla.org/en-US/docs/Web/CSS/@page */
|
||||
size: letter;
|
||||
margin: 0.5in 0.8in;
|
||||
}
|
||||
@media screen and (max-width: 800px) {
|
||||
body {
|
||||
font-size: 16pt;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: #FFFFFF !important;
|
||||
}
|
||||
#resume {
|
||||
margin: 0;
|
||||
padding: 1em;
|
||||
border: 0px;
|
||||
background: none;
|
||||
box-shadow: none;
|
||||
-webkit-box-shadow: none;
|
||||
}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Bree LaPointe</title>
|
||||
<link rel="stylesheet" type="text/css" href="resume.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="resume">
|
||||
@@ -1,57 +0,0 @@
|
||||
<!-- Accomplished [X] by measure of [Y] by doing [Z] -->
|
||||
# Bree LaPointe
|
||||
|
||||
- <contact@blapointe.com>
|
||||
- 336-701-6159
|
||||
- [blapointe.com](https://blapointe.com)
|
||||
- Provo, UT
|
||||
|
||||
## Experience
|
||||
|
||||
### <div><div>Senior Software Engineer, <i>Qualtrics</i></div></div> <div>May 2022 -- Present</div>
|
||||
|
||||
<!-- tmp -->
|
||||
|
||||
### <div><div>Software Engineer II, <i>Qualtrics</i></div></div> <div>Oct 2019 -- May 2022</div>
|
||||
|
||||
- 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.
|
||||
- Led genericized AWS asset management tooling ahead of company-wide mass migration initiative.
|
||||
|
||||
### <div><div>Software Engineer I, <i>Qualtrics</i></div></div> <div>Feb 2018 -- Oct 2019</div>
|
||||
|
||||
- Automated no-downtime system patching for 30 services and 25 database clusters by creating a modular and testable scripting framework.
|
||||
- Increased availability of a service from 98% to 99.99% and reduced hardware costs by 40% by selecting, training team on, and migrating without service interruption to a different database.
|
||||
|
||||
## Projects
|
||||
|
||||
### <div>Disaster Recovery Champion</div> <div>Dec 2020 -- Present</div>
|
||||
|
||||
- Supported training runs with documentation, tools, and live support for all teams.
|
||||
- Enforced continuous compliance for 17 database clusters with monitoring and alerting.
|
||||
|
||||
### <div>Software Engineering Book Club and White Paper Club Lead</div> <div>Jan 2019 -- Present</div>
|
||||
|
||||
### <div>MongoDB Virtual Team Member</div> <div>Jul 2018 -- Present</div>
|
||||
|
||||
- Encouraged performant and reliable deployments by advising on configuration and data models.
|
||||
- Genericized disaster recovery for 21 teams by building backup, restore, and monitoring tools.
|
||||
|
||||
### <div>Publication: Arabidopsis thaliana computationally-generated next-state gene interaction models</div> <div>Jan 2017 -- Dec 2017</div>
|
||||
|
||||
- Improved research implementation efficiency by orders of magnitude by refactoring.
|
||||
|
||||
## Education
|
||||
|
||||
### <div><div>Master of Science, Computer Science, <i>Wake Forest University</i></div></div> <div>Jan 2016 -- Dec 2017</div>
|
||||
|
||||
- 3.88/4.00 GPA
|
||||
|
||||
### <div><div>Bachelor of Arts, Computer Science, <i>High Point University</i></div></div> <div>Aug 2013 -- Dec 2015</div>
|
||||
|
||||
- 3.91/4.00 GPA
|
||||
|
||||
## Skills
|
||||
|
||||
- **Languages**: Golang, Python3, bash
|
||||
- **Platforms**: MongoDB, Redis, Linux, AWS, Docker, Rundeck, Jenkins, Hashicorp stack
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 118 KiB |
@@ -1,5 +0,0 @@
|
||||
pip3 install weasyprint markdown
|
||||
sudo apt-get install libcairo2-dev
|
||||
sudo apt-get install -y libsdl-pango-dev
|
||||
sudo apt-get install -y qpdf
|
||||
echo 'while true; do make resume; sleep 3; done &> /dev/null & disown'
|
||||
10
src/go.mod
Executable file
10
src/go.mod
Executable file
@@ -0,0 +1,10 @@
|
||||
module gogs.inhome.blapointe.com/local/resume
|
||||
|
||||
go 1.20
|
||||
|
||||
require (
|
||||
gogs.inhome.blapointe.com/local/args v0.0.0-20230410154220-44370f257b34
|
||||
golang.org/x/time v0.3.0
|
||||
)
|
||||
|
||||
require gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
8
src/go.sum
Executable file
8
src/go.sum
Executable file
@@ -0,0 +1,8 @@
|
||||
gogs.inhome.blapointe.com/local/args v0.0.0-20230410154220-44370f257b34 h1:0tuX5dfOksiOQD1vbJjVNVTVxTTIng7UrUdSLF5T+Ao=
|
||||
gogs.inhome.blapointe.com/local/args v0.0.0-20230410154220-44370f257b34/go.mod h1:YG9n3Clg7683ohkVnJK2hdX8bBS9EojIsd1qPZumX0Y=
|
||||
golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
|
||||
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
55
src/homebrew/homebrew.html
Normal file
55
src/homebrew/homebrew.html
Normal file
@@ -0,0 +1,55 @@
|
||||
<html>
|
||||
<header>
|
||||
</header>
|
||||
<body>
|
||||
<div name="name">
|
||||
<h1>Bree LaPointe </h1>
|
||||
<h4>Senior Software Engineer</h4>
|
||||
</div>
|
||||
<div name="contact">
|
||||
|
||||
<div style="display: inline-block">
|
||||
<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">contact@blapointe.com</a>
|
||||
</div>
|
||||
|
||||
<div style="display: inline-block">
|
||||
<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>
|
||||
<a href="tel:3367016159">(336) 701 - 6159</a>
|
||||
</div>
|
||||
|
||||
<div style="display: inline-block">
|
||||
<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>
|
||||
<a href="<no value>">Provo, UT</a>
|
||||
</div>
|
||||
|
||||
<div style="display: inline-block">
|
||||
<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">linkedin.com/in/lapoba16</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div>
|
||||
map[title:Skills what:[Languages: Golang, Bash, Python3 Platforms: Docker, Hashicorp, Linux/Unix, AWS, Jenkins, REST, Microservices, Git Datastores: MongoDB, Redis, S3, Couchbase, DynamoDB]]
|
||||
</div>
|
||||
|
||||
<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]
|
||||
</div>
|
||||
|
||||
<div>
|
||||
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]
|
||||
</div>
|
||||
|
||||
<div>
|
||||
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]
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div name="headings">
|
||||
</div>
|
||||
</body>
|
||||
<footer>
|
||||
</footer>
|
||||
</html>
|
||||
|
||||
16
src/homebrew/homebrew.sh
Normal file
16
src/homebrew/homebrew.sh
Normal file
@@ -0,0 +1,16 @@
|
||||
#! /bin/bash
|
||||
|
||||
if ! which tpl; then
|
||||
go install github.com/bluebrown/go-template-cli/cmd/tpl@latest
|
||||
fi &> /dev/null
|
||||
if ! which gojq; then
|
||||
go install github.com/itchyny/gojq@latest
|
||||
fi &> /dev/null
|
||||
|
||||
while sleep 1; do
|
||||
clear
|
||||
cat ./homebrew.yaml \
|
||||
| gojq --yaml-input . \
|
||||
| tpl --file homebrew.tmpl \
|
||||
| tee ./homebrew.html
|
||||
done
|
||||
27
src/homebrew/homebrew.tmpl
Normal file
27
src/homebrew/homebrew.tmpl
Normal file
@@ -0,0 +1,27 @@
|
||||
<html>
|
||||
<header>
|
||||
</header>
|
||||
<body>
|
||||
<div name="name">
|
||||
<h1>{{ range .resume.name }}{{ . }} {{ end }}</h1>
|
||||
<h4>{{ .resume.title }}</h4>
|
||||
</div>
|
||||
<div name="contact">
|
||||
{{ range .resume.contact.links }}
|
||||
<div style="display: inline-block">
|
||||
{{ .svg }}
|
||||
<a href="{{ .link }}">{{ .text }}</a>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ range .resume.headings }}
|
||||
<div>
|
||||
{{ . }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
<div name="headings">
|
||||
</div>
|
||||
</body>
|
||||
<footer>
|
||||
</footer>
|
||||
</html>
|
||||
63
src/homebrew/homebrew.yaml
Normal file
63
src/homebrew/homebrew.yaml
Normal file
@@ -0,0 +1,63 @@
|
||||
resume:
|
||||
name:
|
||||
- Bree
|
||||
- LaPointe
|
||||
title: 'Senior Software Engineer'
|
||||
contact:
|
||||
links:
|
||||
- text: 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>'
|
||||
- text: (336) 701 - 6159
|
||||
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>'
|
||||
- text: Provo, UT
|
||||
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="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>'
|
||||
- text: 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>'
|
||||
headings:
|
||||
- title: Skills
|
||||
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:
|
||||
- title: Qualtrics
|
||||
headings:
|
||||
- title: Senior Software Engineer, Team Lead
|
||||
when: May 2022 - Present
|
||||
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.
|
||||
- title: Software Engineer II
|
||||
when: Oct 2019 - May 2022
|
||||
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.
|
||||
- title: Software Engineer I
|
||||
when: Feb 2018 - Oct 2019
|
||||
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.
|
||||
- title: Education
|
||||
headings:
|
||||
- title: Wake Forest University
|
||||
when: Dec 2017
|
||||
what:
|
||||
- Master of Science in Computer Science - 3.88/4.00
|
||||
- title: High Point University
|
||||
when: Dec 2015
|
||||
what:
|
||||
- Bachelor of Arts in Computer Science - 3.91/4.00
|
||||
- title: Publications
|
||||
headings:
|
||||
- title: Arabidopsis thaliana computationally-generated next-state gene interaction models
|
||||
when: Jun 2018
|
||||
what:
|
||||
- Refactored to correct bugs and improve efficiency by orders of magnitude
|
||||
2
main.go → src/main.go
Normal file → Executable file
2
main.go → src/main.go
Normal file → Executable file
@@ -2,7 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"local/args"
|
||||
"gogs.inhome.blapointe.com/local/args"
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
37
src/open-resume.com.d/clean_resume_html.sh
Executable file
37
src/open-resume.com.d/clean_resume_html.sh
Executable file
@@ -0,0 +1,37 @@
|
||||
#! /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' \
|
||||
|
||||
BIN
src/open-resume.com.d/fonts/Lato-Bold.ttf
Normal file
BIN
src/open-resume.com.d/fonts/Lato-Bold.ttf
Normal file
Binary file not shown.
BIN
src/open-resume.com.d/fonts/Lato-Regular.ttf
Normal file
BIN
src/open-resume.com.d/fonts/Lato-Regular.ttf
Normal file
Binary file not shown.
153
src/open-resume.com.d/local-storage-about-srcdoc-open-resume.json
Executable file
153
src/open-resume.com.d/local-storage-about-srcdoc-open-resume.json
Executable file
@@ -0,0 +1,153 @@
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
30
src/open-resume.com.d/resume.html
Normal file
30
src/open-resume.com.d/resume.html
Normal file
File diff suppressed because one or more lines are too long
30
src/open-resume.com.d/resume.html.2
Executable file
30
src/open-resume.com.d/resume.html.2
Executable file
File diff suppressed because one or more lines are too long
BIN
src/open-resume.com.d/resume.pdf
Normal file
BIN
src/open-resume.com.d/resume.pdf
Normal file
Binary file not shown.
Reference in New Issue
Block a user