Compare commits
25 Commits
v0.2.1
...
c19a6741c1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c19a6741c1 | ||
|
|
8afa0a8be4 | ||
|
|
dcd4d2676b | ||
|
|
fa86ad236a | ||
|
|
8e37db681c | ||
|
|
7d0489efc1 | ||
|
|
c106e71369 | ||
|
|
a3a24a1e62 | ||
|
|
9e28fc0499 | ||
|
|
6bdeb5c2d4 | ||
|
|
066949aec5 | ||
|
|
fddd8c380e | ||
|
|
bfcb62f3fd | ||
|
|
ac1a48261c | ||
|
|
69ee836205 | ||
|
|
a55ac869b7 | ||
|
|
2f8590e3e2 | ||
|
|
746b4c2c24 | ||
|
|
d7b07f8317 | ||
|
|
7676e1f443 | ||
|
|
dec8416915 | ||
|
|
72a7f7e91e | ||
|
|
c739041642 | ||
|
|
85d7bbe0c2 | ||
|
|
29b2dce736 |
24
.gitea/workflows/builder.yaml
Normal file
24
.gitea/workflows/builder.yaml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
name: builder
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- 'Dockerfile.cicd'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
builder:
|
||||||
|
name: builder
|
||||||
|
runs-on: dind
|
||||||
|
steps:
|
||||||
|
- name: checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: builder
|
||||||
|
run: |
|
||||||
|
t=registry-app.inhome.blapointe.com:5001/portfolio/resume/builder:latest
|
||||||
|
until docker ps; do
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
docker build -t "$t" -f ./Dockerfile.cicd .
|
||||||
|
docker push "$t"
|
||||||
|
docker rmi $(docker ps | grep ${t%:*} | grep '<none>' | awk '{print $3}') || true
|
||||||
30
.gitea/workflows/cicd.yaml
Normal file
30
.gitea/workflows/cicd.yaml
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
name: cicd
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- 'src/**'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
cicd:
|
||||||
|
name: cicd
|
||||||
|
runs-on: dind
|
||||||
|
steps:
|
||||||
|
- name: checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: cicd
|
||||||
|
run: |
|
||||||
|
echo "export FIREBASE_CI_TOKEN='${{ secrets.FIREBASE_CI_TOKEN }}'" >> ./.env
|
||||||
|
echo "export GITLAB_PAT='${{ secrets.GITLAB_PAT }}'" >> ./.env
|
||||||
|
f=$(mktemp)
|
||||||
|
echo '
|
||||||
|
FROM registry-app.inhome.blapointe.com:5001/portfolio/resume/builder:latest
|
||||||
|
WORKDIR /mnt
|
||||||
|
COPY ./ /mnt/
|
||||||
|
RUN bash -c "true; source ./.env; bash ./deploy.firebase.sh"
|
||||||
|
' | sed 's/^ *//' > $f
|
||||||
|
docker build -f $f -t resume-build:resume-build .
|
||||||
|
result=$?
|
||||||
|
docker rmi resume-build:resume-build || true
|
||||||
|
exit $?
|
||||||
@@ -1,86 +0,0 @@
|
|||||||
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: |
|
|
||||||
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
|
|
||||||
@@ -19,4 +19,3 @@ RUN echo copying vale...
|
|||||||
COPY --from=vale /bin/vale /bin/vale
|
COPY --from=vale /bin/vale /bin/vale
|
||||||
|
|
||||||
RUN echo OK
|
RUN echo OK
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
529
cv/202001-202310.yaml.origin-main
Normal file
529
cv/202001-202310.yaml.origin-main
Normal file
@@ -0,0 +1,529 @@
|
|||||||
|
- when: 2020
|
||||||
|
what: edits healthcheck as a modular stack monorepo before it was cool that does visibility+remediation
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2020
|
||||||
|
what: BoQ hosting 2020..2023
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- pride-for-others
|
||||||
|
- when: 2020
|
||||||
|
what: GOBS from p2p to stateless (via redis, killing leveldb)
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2020
|
||||||
|
what: nexpose-remediations and blackduck sme
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2020
|
||||||
|
what: scale test rems vs re
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- failfast
|
||||||
|
- when: 2020
|
||||||
|
what: mongo sme designed and released rems-mongo
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2020
|
||||||
|
what: re, terminator to nomad
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2020
|
||||||
|
what: design GOBS off of Couchbase
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2020
|
||||||
|
what: REMS migration implementation
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2020
|
||||||
|
what: DRS for REMS
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2020
|
||||||
|
what: isolation for REMS
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2020
|
||||||
|
what: FSDef,FSIndex to GOBS from Couchbase
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2020
|
||||||
|
what: GOBS on Mongo with Xongo w/ Ryan intern
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2020
|
||||||
|
what: Mongo on TLS SME/pilot
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2020
|
||||||
|
what: Mongosback V2 for cron > rundeck
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2020
|
||||||
|
what: REMS+DSCat Mongo SME
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2021
|
||||||
|
what: systems review planning
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- pride-for-others
|
||||||
|
- when: 2021
|
||||||
|
what: mentored new hire until he left the team for his starter project (S3)
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- pride-for-others
|
||||||
|
- when: 2021
|
||||||
|
what: mentored sr engineer on bash, rundeck, in-house metrics and alerting, ssh...
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2021
|
||||||
|
what: on-call training with chaos testing, hands-on log perusing
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- pride-for-others
|
||||||
|
- when: 2021
|
||||||
|
what: s2se; scripted Galera with safety for multi-team
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2021
|
||||||
|
what: dr backup check to monitor s3 compliance w/ 19 teams onboarded and eventually handed to dbteam
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2021
|
||||||
|
what: Mongosback V2.1 autorelease after bake time, indexes
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2021
|
||||||
|
what: REMS on SSDs analysis, budget proposal, approval, deploy, mock traffic
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2021
|
||||||
|
what: Took REMS migration implementaion back from handoff and reduced ETA from inf to 3w at max speed w/ visibility and parallelism
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2021
|
||||||
|
what: found Go likes lots of small > few big RAM nodes
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2021
|
||||||
|
what: |
|
||||||
|
REMS quality of life
|
||||||
|
* idempotency test
|
||||||
|
* brand/user/issuer/byte limiting
|
||||||
|
* squishing
|
||||||
|
* lazy JSON parsing
|
||||||
|
* resumable jobs
|
||||||
|
* heartbeating jobs
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2021
|
||||||
|
what: DSCat mongo query analysis and optimization
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2021
|
||||||
|
what: cross-team Mongo incident remediation, support, guidance, SME
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2021
|
||||||
|
what: couchsback to v2 as rclone
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2021
|
||||||
|
what: pushed against proposed optimizations (rems cleaning of old edit fields on stale edits) and proved gains (.3% data saved on wire to TS) wouldnt pay off but complied when commanded
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2021
|
||||||
|
what: Mongo multi-phase, multi-timezone interactive training with offline reading and video + online chaos testing + forum for anonymous feedback
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- pride-for-others
|
||||||
|
- when: 2021
|
||||||
|
what: LegacyPublicAPI; they wanted to hand to us, so I executed what it'd take to shift ownership to us and documented the gotchas, and it was so bad that they reverted my complete code and revisited so this handoff wouldnt repeat with other teams
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2021
|
||||||
|
what: healthcheck platform design approved but implementaion priority rejected
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- pride-for-others
|
||||||
|
- when: 2022
|
||||||
|
what: champion of quality: suspected and saw symptoms of data incorrectness in REMS snapshots, insisted and provided more and more evidence despite willful holiday ignorance, eventually recognized as p1
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2022
|
||||||
|
what: became team lead
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2022
|
||||||
|
what: cost-benefit of geni on ddb: 10x the cost but reduces hardlyAnyOperationalBurdenQuantified
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2022
|
||||||
|
what: geni iops -> i insist and tune docker when team wants to ignore call to action
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2022
|
||||||
|
what: response-files OOMs image resizing sidecar proposed + open source used
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2022
|
||||||
|
what: generic aws migration scripts w/ mentee leveraged by tens of teams for s3, ddb, lambda, sns, sqs
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- pride-for-others
|
||||||
|
- scalability
|
||||||
|
- when: 2022
|
||||||
|
what: cicd for team; onboarding + converting + creating continuous testing framework
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2022
|
||||||
|
what: sahithig + itony mentorships; spead asks what's wrong with onboarding? what onboarding!
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- pride-for-others
|
||||||
|
- scalability
|
||||||
|
- when: 2022
|
||||||
|
what: monorepo and parallelizing and caching packages = Jenkins from 10m to 2m
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- scalability
|
||||||
|
- when: 2022
|
||||||
|
what: autopatching for vuln remediation via scheduled builds for team w/ stable, quiet cicd
|
||||||
|
how: []
|
||||||
|
- scalability
|
||||||
|
- when: 2022
|
||||||
|
what: |
|
||||||
|
The REMS Data Loss Incident
|
||||||
|
* mongo bug around leaked oplog lock = no disk persistence = total loss
|
||||||
|
* upstream replayed jobs or shared their mongodb oplog so i could rebuild
|
||||||
|
* forward-facing communication; instead of sorry, this is our root cause and future prevention
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2022
|
||||||
|
what: miss; jfe needs faster virus scanning so I give 'em 10%. They want 10x because they retry all N files of their batch of M every time. Losers.
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2022
|
||||||
|
what: every aws migration solo or nearly
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2022
|
||||||
|
what: ajw initial release from 25% e2e test to 75%
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- pride-for-others
|
||||||
|
- when: 2022
|
||||||
|
what: became team lead :sparkles: and promoted to l5
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- role-model-dad
|
||||||
|
- when: 2022
|
||||||
|
what: coda doc for planning splits owners from contributors w/ weights
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2022
|
||||||
|
what: miss; davidc exported to orcs despite wishes to stay
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- role-model-dad
|
||||||
|
- when: 2022
|
||||||
|
what: swimlanes of rems; byte write/read rate limits, terminator specific pool
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2022
|
||||||
|
what: |
|
||||||
|
tested REMS no-ops when carter ignored me asking him to
|
||||||
|
* "please write 1 test before i get back from vacation"
|
||||||
|
* 0 forever
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- pride-for-others
|
||||||
|
- when: 2022
|
||||||
|
what: generic nomad cost analysis grafana
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2023
|
||||||
|
what: learning the performance feedback game; my perception is no one else's reality; make a rubric and define specific examples against it
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- pride-for-others
|
||||||
|
- role-model-dad
|
||||||
|
- when: 2023
|
||||||
|
what: miss; horizons doc review wasn’t generalized/brief enough
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- pride-for-others
|
||||||
|
- customer-obsesssion
|
||||||
|
- when: 2023
|
||||||
|
what: 2nd highest contributor to runbook blitz
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- pride-for-others
|
||||||
|
- when: 2023
|
||||||
|
what: when overloaded with ops, told team and offloaded + handed off threads
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2023
|
||||||
|
what: fairness for rems; if attempt to use N threads per box, defer to low prio queue
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- scalability
|
||||||
|
- when: 2023
|
||||||
|
what: |
|
||||||
|
interactive cicd tutorial with dpie so they could execute side-by-side
|
||||||
|
* not my fault they didnt
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-for-others
|
||||||
|
- scalability
|
||||||
|
- when: 2023
|
||||||
|
what: chaos test gameday to train new teammate oncall
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2023
|
||||||
|
what: |
|
||||||
|
Couchbase-aggedon
|
||||||
|
* i told 'em how to patch that shit motherfuckers are usual
|
||||||
|
* i go to office because that team insists
|
||||||
|
* i stop 'em from terminating early many times
|
||||||
|
* a hash means we dont need to check, right?
|
||||||
|
* ive got a script it's good enough i wrote it
|
||||||
|
* ive got v2 of my script it's good enough i wrote it
|
||||||
|
* this is a lotta pain, we should give up
|
||||||
|
* taught 8 teammates how to sed/grep/script/bash
|
||||||
|
* delegating threads; spiking accesslogs, spiking redis dumps, spiking couchbase backup/restore
|
||||||
|
* discovered bugs that meant some threads were not viable
|
||||||
|
* reduced problem to safest state for round 1, next safest for round 2, ...
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2023
|
||||||
|
what: BoQ final
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2023
|
||||||
|
what: generic datastore customers could opt into us doing stateramp for them in GENI if they set jwts
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- scalability
|
||||||
|
- when: 2023
|
||||||
|
what: REMS /partitions, /entrypoints for TS to parallel data load via index scan+hash live vs. keithc INSISTED on not live :eye_roll:
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- scalability
|
||||||
|
- when: 2023
|
||||||
|
what: proposed AtlasQMP as bugfixed singleton, parallelized nomad, or lambda cost and speed and devcost and deliverytime
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- scalability
|
||||||
|
- when: 2023
|
||||||
|
what: response-files split from library-files so we can move to our own database without sideaffect
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2023
|
||||||
|
what: |
|
||||||
|
challenge; q2/q3 planning without knowing what medical leave teammate would do
|
||||||
|
* 1. offboard what mattered that he was doing
|
||||||
|
* 2. ask him repeatedly to offboard early and ask for updates how it's going
|
||||||
|
* 3. guess things he really wants and assume he won't be here for forseeable future even if he does return
|
||||||
|
* coordinate with mathis on expectations upon his return
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-for-others
|
||||||
|
- when: 2023
|
||||||
|
what: |
|
||||||
|
REMS vs Translations
|
||||||
|
* Translatsions gets 500 rows from AE without translations and translates those
|
||||||
|
* prone to eventual consistency, blocks, brand deprioritizing, random bugs
|
||||||
|
* REMS got a backlog so we told them first
|
||||||
|
* and we bumped over and over for them to look
|
||||||
|
* and it escalated to a snafu
|
||||||
|
* root cause was squishing taking 90% of our cpu on this backlog of repeat work so sync squishing expedited to full release
|
||||||
|
* REMS emit a bug to TS that missed edits, so Translatsions kept re-translating what REMS perceived to be no-ops
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2023
|
||||||
|
what: insist on oncall covers during stressful weeks, high effort windows, and okr release time
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- role-model-dad
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2023
|
||||||
|
what: still SME on mongo backups and use-case-specific performance optimization
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- scalability
|
||||||
|
- when: 2023
|
||||||
|
what: more E2E tests on previously E2E test free repos because old mentee sahithig didn't feel comfortable joining the team fearing she's break stuff
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- scalability
|
||||||
|
- pride-for-others
|
||||||
|
- when: 2023
|
||||||
|
what: navigated a teammate getting exported to a team he didnt want to join AND later getting exported from that team and almost someone else getting exported too
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- role-model-dad
|
||||||
|
- when: 2023
|
||||||
|
what: |
|
||||||
|
CSchmalzle
|
||||||
|
* burnt out in q1 from too many projects in-flight
|
||||||
|
* bi-weekly "are you closing stuff?"
|
||||||
|
* daily "yaknow that 2 day thing? is it done? when will it be done? what do we need to do to ship it?" for 2 months
|
||||||
|
* insisted he pick things to handoff and we got 2 from him
|
||||||
|
* released a lotta stuff untested and broken and i doubled back to fix it
|
||||||
|
* entire team adds quality as key result
|
||||||
|
* terrible mr of copy-pasting + 2k lines of code
|
||||||
|
* "learn2git"
|
||||||
|
* multi-mr
|
||||||
|
* refactors separate
|
||||||
|
* wants to release his mass changes that include customer-facing system behavior changes because "we'll be more correct"
|
||||||
|
* and lots of support to remediate kanban
|
||||||
|
* and i say NO u fok
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-for-others
|
||||||
|
- scalability
|
||||||
|
- when: 2023
|
||||||
|
what: i get team approval on a design to stop not-deleting customer data, they say we should fix at system level, so I spike and prove system level, just for other team to nope.avi out (REMS MoM delete)
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2023
|
||||||
|
what: |
|
||||||
|
XMD Contact Consolidation Consumer
|
||||||
|
* "read our kafka topic like this and call your apis with it"
|
||||||
|
* ezpz BUT i dont wanna own your business logic by proxy
|
||||||
|
* "but our manager said you would, and something about throttling"
|
||||||
|
* handle our 429s and you'll be k
|
||||||
|
* "but our manager..."
|
||||||
|
* ...3 weeks later...
|
||||||
|
* listen here m8, u guys own your own 1 write per second shit, ya hear?
|
||||||
|
* "we didnt even want that, y'all just took 2 years to get back to us >:("
|
||||||
|
* o
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2023
|
||||||
|
what: test everything; atlas qmp canary from ignored to release blocking via librdkafka configs, sleep deletions
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2023
|
||||||
|
what: test everything; atlas data loader first e2e test
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2023
|
||||||
|
what: test everything; block dev if merging release isn't noop
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2023
|
||||||
|
what: test everything; legacy responses first e2e test
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- scalability
|
||||||
|
- when: 2023
|
||||||
|
what: test everything; except don't; response-files keepalives cross-dc would expire and break response-files allocs permanently, so tests couldn't pass to release fix
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2023
|
||||||
|
what: test everything; our tests found FSCS outages and then FSCS team found they had no visibility
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- when: 2023
|
||||||
|
what: test everything; janus cruddy e2e tests
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-for-others
|
||||||
|
- when: 2023
|
||||||
|
what: high availability; 2 instances of singleton with distributed lock as cheap and good enough path forward
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- scalability
|
||||||
|
- when: 2023
|
||||||
|
what: designed rems mom deleting parallel with atlas, proposed drs team fixes it and impacted team volume, got deferred indefinitely and solved the same problem yet again but for rems mom
|
||||||
|
how: []
|
||||||
|
why:
|
||||||
|
- pride-in-craft
|
||||||
|
- scalability
|
||||||
|
- when: 2022
|
||||||
|
what: feedback; told sean implying we should spend QED time on ops work is against the spirit of QED time but he is an authority figure and makes it uncomfortable not to
|
||||||
|
- when: 2022
|
||||||
|
what: feedback; when i needed to ask michaelp for a remote exception, i had to share i was hesistant because he made possibly leaving engineers sound ostracized and ejected immediately
|
||||||
7
cv/pick_n.sh
Normal file
7
cv/pick_n.sh
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
cd "$(dirname "$(realpath "$BASH_SOURCE")")"
|
||||||
|
cat ./20* \
|
||||||
|
| gojq -c --yaml-input '.[] | [.grade, (.quantity | length), .]' \
|
||||||
|
| sort \
|
||||||
|
| head -n ${1:-${N:-15}} \
|
||||||
|
| $(which jq) -c
|
||||||
8
cv/prompts.yaml
Normal file
8
cv/prompts.yaml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
- topic: resume wording
|
||||||
|
src: https://www.linkedin.com/posts/thedanielbotero_use-these-chatgpt-prompts-if-you-want-to-activity-7119669945298284546-q1DA/?utm_source=share&utm_medium=member_desktop
|
||||||
|
prompt: |
|
||||||
|
Review my current resume and suggest improvements to ensure it is error-free, precise, and effectively communicates my skill, expertise, and experience. Provide feedback on the structure, including formatting and layout, and avoid any kind of personal opinions or preferences or biases.
|
||||||
|
- topic: LinkedIn profile headline
|
||||||
|
src: https://www.linkedin.com/posts/thedanielbotero_use-these-chatgpt-prompts-if-you-want-to-activity-7119669945298284546-q1DA/?utm_source=share&utm_medium=member_desktop
|
||||||
|
prompt: |
|
||||||
|
I work in Software Development as a Senior Software Engineer. Can you help me in creating a headline that will catch the interest of recruiters and possible employers?
|
||||||
10
cv/rendered.sh
Normal file
10
cv/rendered.sh
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
cd "$(dirname "$(realpath "$BASH_SOURCE")")"
|
||||||
|
cat 2* \
|
||||||
|
| gojq -c --yaml-input '.[] | {when: .when, s: .rendered}' \
|
||||||
|
| grep -v null \
|
||||||
|
| grep -v '""' \
|
||||||
|
| $(which jq) -r -c . \
|
||||||
|
| sort \
|
||||||
|
| $(which jq) -s 'group_by(.when) | map({key: (.[0].when | tostring), value: [.[] | .s]}) | from_entries' \
|
||||||
|
| gojq --yaml-output
|
||||||
@@ -8,20 +8,27 @@ cd src
|
|||||||
|
|
||||||
echo PRINTING PDF
|
echo PRINTING PDF
|
||||||
echo ...which google
|
echo ...which google
|
||||||
which google-chrome-stable
|
bin=google-chrome-stable
|
||||||
echo ...which miniserve
|
if ! which $bin; then
|
||||||
|
bin=chromium
|
||||||
|
fi
|
||||||
|
which $bin
|
||||||
|
if ! which miniserve; then
|
||||||
|
wget -O $GOPATH/bin/miniserve https://github.com/svenstaro/miniserve/releases/download/v0.24.0/miniserve-0.24.0-x86_64-unknown-linux-musl
|
||||||
|
chmod +x $GOPATH/bin/miniserve
|
||||||
|
fi
|
||||||
which miniserve
|
which miniserve
|
||||||
miniserve ./homebrew/ &
|
miniserve -p 58080 ./homebrew/ &
|
||||||
pid=${!}
|
pid=${!}
|
||||||
until curl localhost:8080; do sleep 5; done
|
until curl localhost:58080; do sleep 5; done
|
||||||
google-chrome-stable \
|
$bin \
|
||||||
--no-sandbox \
|
--no-sandbox \
|
||||||
--headless \
|
--headless \
|
||||||
--disable-gpu \
|
--disable-gpu \
|
||||||
--print-to-pdf=./homebrew/homebrew.pdf \
|
--print-to-pdf=./homebrew/homebrew.pdf \
|
||||||
--run-all-compositor-stages-before-draw \
|
--run-all-compositor-stages-before-draw \
|
||||||
--no-pdf-header-footer \
|
--no-pdf-header-footer \
|
||||||
http://localhost:8080/homebrew.html
|
http://localhost:58080/homebrew.html
|
||||||
get_state() {
|
get_state() {
|
||||||
cksum ./homebrew/homebrew.pdf | awk '{print $1}'
|
cksum ./homebrew/homebrew.pdf | awk '{print $1}'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,18 +19,20 @@
|
|||||||
@font-face {font-family: "Merriweather"; src: url("./fonts/Merriweather-Bold.ttf"); font-weight: bold;}
|
@font-face {font-family: "Merriweather"; src: url("./fonts/Merriweather-Bold.ttf"); font-weight: bold;}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body style="margin: auto !important; padding-bottom: .0em !important; width: 512pt; margin: 0; padding: 0; -webkit-text-size-adjust:none;">
|
<body style="margin: auto !important; padding-bottom: .0em !important; max-width: 512pt; margin: 0; padding: 0; -webkit-text-size-adjust:none;">
|
||||||
<div>
|
<div>
|
||||||
<div class="frame-content">
|
<div class="frame-content">
|
||||||
<document title="Bree LaPointe Resume" author="Bree LaPointe " producer="OpenResume">
|
<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;">
|
<page style="display: flex; flex-direction: column; color: rgb(23, 23, 23); font-family: Lato; font-size: 11.5pt;">
|
||||||
<view style="width: 100%; height: 10.5pt; background-color: rgb(129, 140, 248);">
|
<view style="width: 100%; height: 10.5pt; background-color: rgb(129, 140, 248);">
|
||||||
</view>
|
</view>
|
||||||
<view style="display: flex; flex-direction: column; padding: 0px 18pt;">
|
<view style="display: flex; flex-direction: column; padding: 0px 18pt;">
|
||||||
<view style="display: flex; flex-direction: column; gap: 6pt; margin-top: 12pt;">
|
<view style="display: flex; flex-direction: column; gap: 6pt; margin-top: 12pt;">
|
||||||
<view style="display: flex; flex-direction: row; justify-content: space-between;">
|
<view style="display: flex; flex-direction: row; justify-content: space-between;">
|
||||||
|
<text>
|
||||||
<text style="color: rgb(129, 140, 248); font-weight: bold; font-size: 20pt;">Bree LaPointe
|
<text style="color: rgb(129, 140, 248); font-weight: bold; font-size: 20pt;">Bree LaPointe
|
||||||
</text>
|
</text>
|
||||||
|
</text>
|
||||||
|
|
||||||
<a href="./BreeLaPointeResume.pdf" download class="no-print">
|
<a href="./BreeLaPointeResume.pdf" download class="no-print">
|
||||||
<text style="color: rgb(99, 99, 99); font-weight: normal; text-decoration: none;"><u>Download as PDF</u>
|
<text style="color: rgb(99, 99, 99); font-weight: normal; text-decoration: none;"><u>Download as PDF</u>
|
||||||
@@ -46,17 +48,8 @@
|
|||||||
<view style="display: flex; flex-direction: row; align-items: center; gap: 3pt;">
|
<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="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 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">
|
<a href="mailto:hello@breel.dev" style="text-decoration: none;" target="_blank" rel="noreferrer">
|
||||||
<text style="color: rgb(23, 23, 23); font-weight: normal;">contact@blapointe.com</text>
|
<text style="color: rgb(23, 23, 23); font-weight: normal;">hello@breel.dev</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="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" style="text-decoration: none;" target="_blank" rel="noreferrer">
|
|
||||||
<text style="color: rgb(23, 23, 23); font-weight: normal;">(336) 701-6159</text>
|
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
@@ -71,8 +64,8 @@
|
|||||||
<view style="display: flex; flex-direction: row; align-items: center; gap: 3pt;">
|
<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>
|
<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">
|
<a href="https://linkedin.com/in/breeldev" style="text-decoration: none;" target="_blank" rel="noreferrer">
|
||||||
<text style="color: rgb(23, 23, 23); font-weight: normal;">linkedin.com/in/lapoba16</text>
|
<text style="color: rgb(23, 23, 23); font-weight: normal;">linkedin.com/in/breeldev</text>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
@@ -110,18 +103,33 @@
|
|||||||
|
|
||||||
|
|
||||||
<view style="display: flex; flex-direction: row;">
|
<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: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.35; margin-top: 0pt;">•</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>
|
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.35; flex-grow: 1; flex-basis: 0px;">Optimized a Go application to increase consumption rate from Kafka by 340%, costing half the engineering effort of the proposed rewrite.</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view style="display: flex; flex-direction: row;">
|
<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: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.35; margin-top: 0pt;">•</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>
|
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.35; flex-grow: 1; flex-basis: 0px;">Devised a MongoDB live indexing strategy, which supported both current and future use cases, and saved the computing and filling of a new 99% unused native database index.</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view style="display: flex; flex-direction: row;">
|
<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: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.35; margin-top: 0pt;">•</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>
|
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.35; flex-grow: 1; flex-basis: 0px;">Spearheaded AWS asset replication tooling, sparing 9 teams from duplicating work relocating up to 7 AWS technologies each.</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.35; margin-top: 0pt;">•</text>
|
||||||
|
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.35; flex-grow: 1; flex-basis: 0px;">Mentored 2 intern, 2 new grad, and 4 mid-level engineers on operational tools, best practices for 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.35; margin-top: 0pt;">•</text>
|
||||||
|
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.35; flex-grow: 1; flex-basis: 0px;">Founded the in-house standard system to continuously verify 16 teams' compliance with disaster recovery requirements.</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.35; margin-top: 0pt;">•</text>
|
||||||
|
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.35; flex-grow: 1; flex-basis: 0px;">Created automated release test suites for 11 services, which catches 10 would-be customer facing bugs per month on average.</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
|
||||||
@@ -137,28 +145,18 @@
|
|||||||
|
|
||||||
|
|
||||||
<view style="display: flex; flex-direction: row;">
|
<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: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.35; margin-top: 0pt;">•</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>
|
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.35; flex-grow: 1; flex-basis: 0px;">Scripted no-downtime database reconfiguration, which was leveraged by 3 teams to update 168 instances.</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view style="display: flex; flex-direction: row;">
|
<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: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.35; margin-top: 0pt;">•</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>
|
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.35; flex-grow: 1; flex-basis: 0px;">Automated infrastructure patching for 30 microservices and 25 database clusters by creating a modular and testable Bash script framework.</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view style="display: flex; flex-direction: row;">
|
<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: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.35; margin-top: 0pt;">•</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>
|
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.35; flex-grow: 1; flex-basis: 0px;">Administered on-call training, including 6 chaos tests gamedays across 5 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;">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>
|
||||||
|
|
||||||
|
|
||||||
@@ -174,13 +172,13 @@
|
|||||||
|
|
||||||
|
|
||||||
<view style="display: flex; flex-direction: row;">
|
<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: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.35; margin-top: 0pt;">•</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>
|
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.35; flex-grow: 1; flex-basis: 0px;">Created custom Python tooling to create, increment, restore, and check for MongoDB database backups for standalone, replicated, and sharded deployments without customer impact, and has been the in-house standard for 21 teams for 4 years.</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view style="display: flex; flex-direction: row;">
|
<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: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.35; margin-top: 0pt;">•</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>
|
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.35; flex-grow: 1; flex-basis: 0px;">Decreased backend service's annual outages by 91% and reduced hardware costs by 40% by selecting, training owners on, and migrating without downtime to a different datastore.</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
|
||||||
@@ -220,59 +218,6 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
</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;"><no value>
|
|
||||||
</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>
|
||||||
|
|
||||||
|
|
||||||
@@ -289,19 +234,19 @@
|
|||||||
<view>
|
<view>
|
||||||
|
|
||||||
<view style="display: flex; flex-direction: row; justify-content: space-between;">
|
<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: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.35; margin-top: 0pt;">•
|
||||||
<text style="color: rgb(23, 23, 23); font-weight: normal;">Languages: Golang, Bash, Python3
|
<text style="color: rgb(23, 23, 23); font-weight: normal;">Languages: Go (Golang), Bash, Python3
|
||||||
</text>
|
</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view style="display: flex; flex-direction: row; justify-content: space-between;">
|
<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: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.35; margin-top: 0pt;">•
|
||||||
<text style="color: rgb(23, 23, 23); font-weight: normal;">Platforms: Docker, Hashicorp, Linux/Unix, AWS, Jenkins, REST, Microservices, Git
|
<text style="color: rgb(23, 23, 23); font-weight: normal;">Platforms: Docker, Hashicorp, Linux/Unix, AWS, REST, Microservices, Git
|
||||||
</text>
|
</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view style="display: flex; flex-direction: row; justify-content: space-between;">
|
<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: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.35; margin-top: 0pt;">•
|
||||||
<text style="color: rgb(23, 23, 23); font-weight: normal;">Datastores: MongoDB, Redis, S3, Couchbase, DynamoDB
|
<text style="color: rgb(23, 23, 23); font-weight: normal;">Datastores: MongoDB, Redis, S3, Couchbase, DynamoDB
|
||||||
</text>
|
</text>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
Binary file not shown.
@@ -22,8 +22,8 @@ while sleep 1; do
|
|||||||
| sed "s/tel:/$(html_escape_str tel: | sed 's/\&/\\\&/g')/g" \
|
| sed "s/tel:/$(html_escape_str tel: | sed 's/\&/\\\&/g')/g" \
|
||||||
| gojq --yaml-input . \
|
| gojq --yaml-input . \
|
||||||
| tpl --file homebrew.tmpl \
|
| tpl --file homebrew.tmpl \
|
||||||
| tee ./homebrew.html \
|
> ./homebrew.html.2
|
||||||
> /dev/null
|
mv ./homebrew.html.2 ./homebrew.html
|
||||||
date
|
date
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
@@ -19,18 +19,20 @@
|
|||||||
@font-face {font-family: "Merriweather"; src: url("./fonts/Merriweather-Bold.ttf"); font-weight: bold;}
|
@font-face {font-family: "Merriweather"; src: url("./fonts/Merriweather-Bold.ttf"); font-weight: bold;}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body style="margin: auto !important; padding-bottom: .0em !important; width: 512pt; margin: 0; padding: 0; -webkit-text-size-adjust:none;">
|
<body style="margin: auto !important; padding-bottom: .0em !important; max-width: 512pt; margin: 0; padding: 0; -webkit-text-size-adjust:none;">
|
||||||
<div>
|
<div>
|
||||||
<div class="frame-content">
|
<div class="frame-content">
|
||||||
<document title="{{ range .resume.name }}{{ . }} {{ end }}Resume" author="{{ range .resume.name }}{{ . }} {{ end }}" producer="OpenResume">
|
<document title="{{ range .resume.name }}{{ . }} {{ end }}Resume" author="{{ range .resume.name }}{{ . }} {{ end }}" producer="OpenResume">
|
||||||
<page style="display: flex; flex-direction: column; color: rgb(23, 23, 23); font-family: Lato; font-size: 11pt;">
|
<page style="display: flex; flex-direction: column; color: rgb(23, 23, 23); font-family: Lato; font-size: 11.5pt;">
|
||||||
<view style="width: 100%; height: 10.5pt; background-color: rgb(129, 140, 248);">
|
<view style="width: 100%; height: 10.5pt; background-color: rgb(129, 140, 248);">
|
||||||
</view>
|
</view>
|
||||||
<view style="display: flex; flex-direction: column; padding: 0px 18pt;">
|
<view style="display: flex; flex-direction: column; padding: 0px 18pt;">
|
||||||
<view style="display: flex; flex-direction: column; gap: 6pt; margin-top: 12pt;">
|
<view style="display: flex; flex-direction: column; gap: 6pt; margin-top: 12pt;">
|
||||||
<view style="display: flex; flex-direction: row; justify-content: space-between;">
|
<view style="display: flex; flex-direction: row; justify-content: space-between;">
|
||||||
|
<text>
|
||||||
<text style="color: rgb(129, 140, 248); font-weight: bold; font-size: 20pt;">{{ range .resume.name }}{{ . }} {{ end }}
|
<text style="color: rgb(129, 140, 248); font-weight: bold; font-size: 20pt;">{{ range .resume.name }}{{ . }} {{ end }}
|
||||||
</text>
|
</text>
|
||||||
|
</text>
|
||||||
{{ if .resume.pdf_file_name }}
|
{{ if .resume.pdf_file_name }}
|
||||||
<a href="./{{ .resume.pdf_file_name }}" download class="no-print">
|
<a href="./{{ .resume.pdf_file_name }}" download class="no-print">
|
||||||
<text style="color: rgb(99, 99, 99); font-weight: normal; text-decoration: none;"><u>Download as PDF</u>
|
<text style="color: rgb(99, 99, 99); font-weight: normal; text-decoration: none;"><u>Download as PDF</u>
|
||||||
@@ -70,7 +72,7 @@
|
|||||||
<view>
|
<view>
|
||||||
{{ range .what }}
|
{{ range .what }}
|
||||||
<view style="display: flex; flex-direction: row; justify-content: space-between;">
|
<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: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.35; margin-top: 0pt;">•
|
||||||
<text style="color: rgb(23, 23, 23); font-weight: normal;">{{ . }}
|
<text style="color: rgb(23, 23, 23); font-weight: normal;">{{ . }}
|
||||||
</text>
|
</text>
|
||||||
</view>
|
</view>
|
||||||
@@ -108,8 +110,8 @@
|
|||||||
|
|
||||||
{{ range .what }}
|
{{ range .what }}
|
||||||
<view style="display: flex; flex-direction: row;">
|
<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: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.35; margin-top: 0pt;">•</text>
|
||||||
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.3; flex-grow: 1; flex-basis: 0px;">{{ . }}</text>
|
<text style="color: rgb(23, 23, 23); font-weight: normal; line-height: 1.35; flex-grow: 1; flex-basis: 0px;">{{ . }}</text>
|
||||||
</view>
|
</view>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
|||||||
@@ -6,16 +6,16 @@ resume:
|
|||||||
title: 'Senior Software Engineer'
|
title: 'Senior Software Engineer'
|
||||||
contact:
|
contact:
|
||||||
links:
|
links:
|
||||||
- text: 'contact@blapointe.com'
|
- text: 'hello@breel.dev'
|
||||||
link: 'mailto:contact@blapointe.com'
|
link: 'mailto:hello@breel.dev'
|
||||||
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
|
||||||
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>'
|
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
|
- text: linkedin.com/in/breeldev
|
||||||
link: https://linkedin.com/in/lapoba16
|
link: https://linkedin.com/in/breeldev
|
||||||
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: WORK EXPERIENCE
|
- title: WORK EXPERIENCE
|
||||||
@@ -25,41 +25,42 @@ resume:
|
|||||||
- title: Senior Software Engineer, Team Lead
|
- title: Senior Software Engineer, Team Lead
|
||||||
when: May 2022 - Present
|
when: May 2022 - Present
|
||||||
what:
|
what:
|
||||||
- Mentored entry and mid-level engineers on stability, clean code, and distributed systems.
|
- Optimized a Go application to increase consumption rate from Kafka by 340%, costing half the engineering effort of the proposed rewrite.
|
||||||
- Hosted engineering book and white paper clubs for continuous improvement and cross-team experience sharing for 2 years.
|
- Devised a MongoDB live indexing strategy, which supported both current and future use cases, and saved the computing and filling of a new 99% unused native database index.
|
||||||
- Recovered 98% of data lost in critical incident via coordinating cross team efforts and dissecting native database operation logs.
|
- Spearheaded AWS asset replication tooling, sparing 9 teams from duplicating work relocating up to 7 AWS technologies each.
|
||||||
|
- Mentored 2 intern, 2 new grad, and 4 mid-level engineers on operational tools, best practices for maintainable software, and career development.
|
||||||
|
- Founded the in-house standard system to continuously verify 16 teams' compliance with disaster recovery requirements.
|
||||||
|
- Created automated release test suites for 11 services, which catches 10 would-be customer facing bugs per month on average.
|
||||||
- title: Software Engineer II
|
- title: Software Engineer II
|
||||||
when: Oct 2019 - May 2022
|
when: Oct 2019 - May 2022
|
||||||
what:
|
what:
|
||||||
- Developed and owned highly available and reliable data storage and operational tooling.
|
- "Scripted no-downtime database reconfiguration, which was leveraged by 3 teams to update 168 instances."
|
||||||
- Mentored 2 interns, 2 new hires, and 3 mid-level cross team engineers on operational tools, maintainable software, and career development.
|
- Automated infrastructure patching for 30 microservices and 25 database clusters by creating a modular and testable Bash script framework.
|
||||||
- Genericized AWS asset management tooling ahead of company-wide mass migration initiative.
|
- Administered on-call training, including 6 chaos tests gamedays across 5 systems.
|
||||||
- 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
|
- title: Software Engineer I
|
||||||
when: Feb 2018 - Oct 2019
|
when: Feb 2018 - Oct 2019
|
||||||
what:
|
what:
|
||||||
- Automated no-downtime system patching for 30 services and 25 database clusters by creating a modular and testable scripting framework.
|
- Created custom Python tooling to create, increment, restore, and check for MongoDB database backups for standalone, replicated, and sharded deployments without customer impact, and has been the in-house standard for 21 teams for 4 years.
|
||||||
- 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.
|
- Decreased backend service's annual outages by 91% and reduced hardware costs by 40% by selecting, training owners on, and migrating without downtime to a different datastore.
|
||||||
- title: EDUCATION
|
- title: EDUCATION
|
||||||
headings:
|
headings:
|
||||||
- title: Wake Forest University
|
- title: Wake Forest University
|
||||||
not-when: Dec 2017
|
not-when: Dec 2017
|
||||||
what:
|
what:
|
||||||
- Master of Science in Computer Science - 3.88/4.00 GPA
|
- Master of Science in Computer Science - 3.88/4.00 GPA
|
||||||
- title: High Point University
|
#- title: High Point University
|
||||||
not-when: Dec 2015
|
# not-when: Dec 2015
|
||||||
what:
|
# what:
|
||||||
- Bachelor of Arts in Computer Science - 3.91/4.00 GPA
|
# - 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
|
- title: SKILLS
|
||||||
what:
|
what:
|
||||||
- 'Languages: Golang, Bash, Python3'
|
- 'Languages: Go (Golang), Bash, Python3'
|
||||||
- 'Platforms: Docker, Hashicorp, Linux/Unix, AWS, Jenkins, REST, Microservices, Git'
|
- 'Platforms: Docker, Hashicorp, Linux/Unix, AWS, REST, Microservices, Git'
|
||||||
- 'Datastores: MongoDB, Redis, S3, Couchbase, DynamoDB'
|
- 'Datastores: MongoDB, Redis, S3, Couchbase, DynamoDB'
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user