Compare commits
14 Commits
c19a6741c1
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ed9ff1071 | ||
|
|
a0b60021cf | ||
|
|
8487f1577e | ||
|
|
da21248adb | ||
|
|
28dd611b7b | ||
|
|
7f7256fe07 | ||
|
|
a79740c871 | ||
|
|
d644cf7be1 | ||
|
|
0bb733ac90 | ||
|
|
53ac3de436 | ||
|
|
e11eeddb6a | ||
|
|
c5e75cb2fb | ||
|
|
b00b568fa0 | ||
|
|
ec063d080c |
24
README.md
24
README.md
@@ -1,18 +1,16 @@
|
||||
# Resume
|
||||
|
||||
* todo
|
||||
* prepare stories
|
||||
* cross-team project with a hitch and deadline pressure
|
||||
* an urgent incident
|
||||
* in interviews, do the dumb version first
|
||||
|
||||
## Usage
|
||||
|
||||
1. modify [homebrew.yaml](./src/homebrew/homebrew.yaml)
|
||||
1. generate `cd ./src/homebrew; bash ./homebrew.sh`
|
||||
1. generate `cd ./src/homebrew; bash ./homebrew.sh` (interrupt when it starts timestamping)
|
||||
1. `open ./src/homebrew/homebrew.html`
|
||||
1. `ctrl + p` and save as pdf
|
||||
1. `ctrl + p` and save as `./src/homebrew/homebrew.pdf`
|
||||
1. commit + push
|
||||
|
||||
## CICD
|
||||
|
||||
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)
|
||||
1. `.gitea/...` CICD pushes to firebase + gitlab
|
||||
|
||||
@@ -77,7 +77,7 @@ cd $outdir
|
||||
git commit -m "$(date -u +%Y-%m-%dT%H:%M:%S)"
|
||||
git push origin main
|
||||
fi
|
||||
) || true
|
||||
)
|
||||
|
||||
(
|
||||
set -ueo pipefail
|
||||
@@ -93,4 +93,4 @@ cd $outdir
|
||||
fi
|
||||
echo firebase deploy "${log_args[@]}"
|
||||
firebase deploy "${args[@]}"
|
||||
)
|
||||
) || true
|
||||
|
||||
@@ -75,11 +75,11 @@
|
||||
</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="display: flex; flex-direction: column; gap: 6pt; margin-top: 9pt;">
|
||||
<view style="display: flex; flex-direction: row; align-items: center; font-size: 14pt;">
|
||||
<view style="height: 3.75pt; width: 30pt; background-color: rgb(129, 140, 248); margin-right: 10.5pt;">
|
||||
</view>
|
||||
<text style="font-weight: bold; letter-spacing: 0.3pt;">WORK EXPERIENCE</text>
|
||||
<text style="font-weight: bold; letter-spacing: 0.3pt;" class="resume-headings-i-title">Work Experience</text>
|
||||
</view>
|
||||
|
||||
|
||||
@@ -87,15 +87,17 @@
|
||||
|
||||
<view>
|
||||
|
||||
<text style="color: rgb(23, 23, 23); font-weight: bold;">Qualtrics</text>
|
||||
<span style="font-size: 14pt;">
|
||||
<text style="color: rgb(23, 23, 23); font-weight: bold;" class="resume-headings-i-headings-i-title-w-headings">Render</text>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<view style="display: flex; flex-direction: row; justify-content: space-between; margin-top: 4.5pt;">
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal;">Senior Software Engineer, Team Lead</text>
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal;">May 2022 - Present
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal; font-style: italic;" class="resume-headings-i-headings-i-headings-i-title">Senior Software Engineer</text>
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal; font-size: 9.5pt;">May 2025 - Present
|
||||
</text>
|
||||
</view>
|
||||
|
||||
@@ -103,32 +105,79 @@
|
||||
|
||||
|
||||
<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: 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;">Cut new PostgreSQL major version support development cost from 8 weeks to 1 week.</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;">Reduced point-in-time-recovery restore failure volume 60% and restore runtime up to 80% with dynamic tuning.</text>
|
||||
</view>
|
||||
|
||||
|
||||
</view>
|
||||
|
||||
<view style="display: flex; flex-direction: row; justify-content: space-between; margin-top: 4.5pt;">
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal; font-style: italic;" class="resume-headings-i-headings-i-headings-i-title">Software Engineer</text>
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal; font-size: 9.5pt;">Dec 2023 - May 2025
|
||||
</text>
|
||||
</view>
|
||||
|
||||
<view style="display: flex; flex-direction: column; margin-top: 4.5pt;">
|
||||
|
||||
|
||||
<view style="display: flex; flex-direction: row;">
|
||||
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.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;">Crafted PostgreSQL low-downtime migrations and in-place major version upgrades.</text>
|
||||
</view>
|
||||
|
||||
|
||||
</view>
|
||||
|
||||
|
||||
</view>
|
||||
|
||||
<view>
|
||||
|
||||
<span style="font-size: 14pt;">
|
||||
<text style="color: rgb(23, 23, 23); font-weight: bold;" class="resume-headings-i-headings-i-title-w-headings">Qualtrics</text>
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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; font-style: italic;" class="resume-headings-i-headings-i-headings-i-title">Senior Software Engineer, Team Lead</text>
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal; font-size: 9.5pt;">May 2022 - Dec 2023
|
||||
</text>
|
||||
</view>
|
||||
|
||||
<view style="display: flex; flex-direction: column; margin-top: 4.5pt;">
|
||||
|
||||
|
||||
<view style="display: flex; flex-direction: row;">
|
||||
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.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;">Optimized a Go application to increase consumption rate from Kafka by 340%, costing half the engineering effort of the proposed rewrite.</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;">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 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: 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;">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: 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: 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: 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>
|
||||
|
||||
@@ -136,8 +185,8 @@
|
||||
</view>
|
||||
|
||||
<view style="display: flex; flex-direction: row; justify-content: space-between; margin-top: 4.5pt;">
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal;">Software Engineer II</text>
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal;">Oct 2019 - May 2022
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal; font-style: italic;" class="resume-headings-i-headings-i-headings-i-title">Software Engineer II</text>
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal; font-size: 9.5pt;">Oct 2019 - May 2022
|
||||
</text>
|
||||
</view>
|
||||
|
||||
@@ -145,26 +194,16 @@
|
||||
|
||||
|
||||
<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;">Scripted no-downtime database reconfiguration, which was leveraged by 3 teams to update 168 instances.</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: 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;">Automated infrastructure patching for 30 microservices and 25 database clusters by creating a modular and testable Bash script framework.</text>
|
||||
</view>
|
||||
|
||||
<view style="display: flex; flex-direction: row;">
|
||||
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.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;">Administered on-call training, including 6 chaos tests gamedays across 5 systems.</text>
|
||||
</view>
|
||||
|
||||
|
||||
</view>
|
||||
|
||||
<view style="display: flex; flex-direction: row; justify-content: space-between; margin-top: 4.5pt;">
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal;">Software Engineer I</text>
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal;">Feb 2018 - Oct 2019
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal; font-style: italic;" class="resume-headings-i-headings-i-headings-i-title">Software Engineer I</text>
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal; font-size: 9.5pt;">Feb 2018 - Oct 2019
|
||||
</text>
|
||||
</view>
|
||||
|
||||
@@ -172,13 +211,13 @@
|
||||
|
||||
|
||||
<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 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>
|
||||
<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 Python tookit for full and incremental MongoDB backups, supporting partitioned deployments. The in-house standard for 21 teams.</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;">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>
|
||||
<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;">Decreased internal service's annual outages by 91% and hardware costs by 40% via database migration. Scoped alternatives, projected costs, and designed cutover.</text>
|
||||
</view>
|
||||
|
||||
|
||||
@@ -190,11 +229,11 @@
|
||||
|
||||
</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="display: flex; flex-direction: column; gap: 6pt; margin-top: 9pt;">
|
||||
<view style="display: flex; flex-direction: row; align-items: center; font-size: 14pt;">
|
||||
<view style="height: 3.75pt; width: 30pt; background-color: rgb(129, 140, 248); margin-right: 10.5pt;">
|
||||
</view>
|
||||
<text style="font-weight: bold; letter-spacing: 0.3pt;">EDUCATION</text>
|
||||
<text style="font-weight: bold; letter-spacing: 0.3pt;" class="resume-headings-i-title">Education</text>
|
||||
</view>
|
||||
|
||||
|
||||
@@ -203,7 +242,7 @@
|
||||
<view>
|
||||
|
||||
<view style="display: flex; flex-direction: row; justify-content: space-between; margin-top: 4.5pt;">
|
||||
<text style="color: rgb(23, 23, 23); font-weight: bold;">Wake Forest University</text>
|
||||
<text style="color: rgb(23, 23, 23); font-weight: bold;" class="resume-headings-i-headings-i-title-wo-headings">Wake Forest University</text>
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal;"><no value>
|
||||
</text>
|
||||
</view>
|
||||
@@ -223,32 +262,29 @@
|
||||
|
||||
</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="display: flex; flex-direction: column; gap: 6pt; margin-top: 9pt;">
|
||||
<view style="display: flex; flex-direction: row; align-items: center; font-size: 14pt;">
|
||||
<view style="height: 3.75pt; width: 30pt; background-color: rgb(129, 140, 248); margin-right: 10.5pt;">
|
||||
</view>
|
||||
<text style="font-weight: bold; letter-spacing: 0.3pt;">SKILLS</text>
|
||||
<text style="font-weight: bold; letter-spacing: 0.3pt;" class="resume-headings-i-title">Skills</text>
|
||||
</view>
|
||||
|
||||
|
||||
<view>
|
||||
|
||||
<view style="display: flex; flex-direction: row; justify-content: space-between;">
|
||||
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.35; margin-top: 0pt;">•
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal;">Languages: Go (Golang), Bash, Python3
|
||||
</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 style="color: rgb(23, 23, 23); font-weight: normal;">Languages: Go (Golang), Bash, Python3</text>
|
||||
</view>
|
||||
|
||||
<view style="display: flex; flex-direction: row; justify-content: space-between;">
|
||||
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.35; margin-top: 0pt;">•
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal;">Platforms: Docker, Hashicorp, Linux/Unix, AWS, REST, Microservices, Git
|
||||
</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 style="color: rgb(23, 23, 23); font-weight: normal;">Platforms: Kubernetes, Temporal, Hashicorp, Linux/Unix, AWS, REST, Microservices</text>
|
||||
</view>
|
||||
|
||||
<view style="display: flex; flex-direction: row; justify-content: space-between;">
|
||||
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.35; margin-top: 0pt;">•
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal;">Datastores: MongoDB, Redis, S3, Couchbase, DynamoDB
|
||||
</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 style="color: rgb(23, 23, 23); font-weight: normal;">Datastores: PostgreSQL, MongoDB, Redis, S3, Couchbase, DynamoDB</text>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
|
||||
Binary file not shown.
@@ -61,20 +61,19 @@
|
||||
</view>
|
||||
|
||||
{{ range .resume.headings }}
|
||||
<view style="display: flex; flex-direction: column; gap: 6pt; margin-top: 12pt;">
|
||||
<view style="display: flex; flex-direction: row; align-items: center;">
|
||||
<view style="display: flex; flex-direction: column; gap: 6pt; margin-top: 9pt;">
|
||||
<view style="display: flex; flex-direction: row; align-items: center; font-size: 14pt;">
|
||||
<view style="height: 3.75pt; width: 30pt; background-color: rgb(129, 140, 248); margin-right: 10.5pt;">
|
||||
</view>
|
||||
<text style="font-weight: bold; letter-spacing: 0.3pt;">{{ .title }}</text>
|
||||
<text style="font-weight: bold; letter-spacing: 0.3pt;" class="resume-headings-i-title">{{ .title }}</text>
|
||||
</view>
|
||||
|
||||
{{ if .what }}
|
||||
<view>
|
||||
{{ range .what }}
|
||||
<view style="display: flex; flex-direction: row; justify-content: space-between;">
|
||||
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.35; margin-top: 0pt;">•
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal;">{{ . }}
|
||||
</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 style="color: rgb(23, 23, 23); font-weight: normal;">{{ . }}</text>
|
||||
</view>
|
||||
{{ end }}
|
||||
</view>
|
||||
@@ -83,10 +82,12 @@
|
||||
{{ range .headings }}
|
||||
<view>
|
||||
{{ if .headings }}
|
||||
<text style="color: rgb(23, 23, 23); font-weight: bold;">{{ .title }}</text>
|
||||
<span style="font-size: 14pt;">
|
||||
<text style="color: rgb(23, 23, 23); font-weight: bold;" class="resume-headings-i-headings-i-title-w-headings">{{ .title }}</text>
|
||||
</span>
|
||||
{{ else }}
|
||||
<view style="display: flex; flex-direction: row; justify-content: space-between; margin-top: 4.5pt;">
|
||||
<text style="color: rgb(23, 23, 23); font-weight: bold;">{{ .title }}</text>
|
||||
<text style="color: rgb(23, 23, 23); font-weight: bold;" class="resume-headings-i-headings-i-title-wo-headings">{{ .title }}</text>
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal;">{{ .when }}
|
||||
</text>
|
||||
</view>
|
||||
@@ -101,8 +102,8 @@
|
||||
|
||||
{{ range .headings }}
|
||||
<view style="display: flex; flex-direction: row; justify-content: space-between; margin-top: 4.5pt;">
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal;">{{ .title }}</text>
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal;">{{ .when }}
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal; font-style: italic;" class="resume-headings-i-headings-i-headings-i-title">{{ .title }}</text>
|
||||
<text style="color: rgb(23, 23, 23); font-weight: normal; font-size: 9.5pt;">{{ .when }}
|
||||
</text>
|
||||
</view>
|
||||
|
||||
@@ -110,7 +111,7 @@
|
||||
|
||||
{{ range .what }}
|
||||
<view style="display: flex; flex-direction: row;">
|
||||
<text style="color: rgb(23, 23, 23); font-weight: bold; padding-left: 6pt; padding-right: 6pt; line-height: 1.35; margin-top: 0pt;">•</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.35; flex-grow: 1; flex-basis: 0px;">{{ . }}</text>
|
||||
</view>
|
||||
{{ end }}
|
||||
|
||||
@@ -18,31 +18,82 @@ resume:
|
||||
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>'
|
||||
headings:
|
||||
- title: WORK EXPERIENCE
|
||||
- title: Work Experience
|
||||
headings:
|
||||
- title: Render
|
||||
headings:
|
||||
- title: Senior Software Engineer
|
||||
when: May 2025 - Present
|
||||
what:
|
||||
- Cut new PostgreSQL major version support development cost from 8 weeks to 1 week.
|
||||
# refactored + go generated + templated CI from PG17 to PG18
|
||||
# had to wait 4w for TimescaleDB to ship, but no active time for us
|
||||
- Reduced point-in-time-recovery restore failure volume 60% and restore runtime up to 80% with dynamic tuning.
|
||||
# 40k paid, 30k free in 2025-12
|
||||
# performance tuning -> PGExport queries
|
||||
# pitr -> pitr holes, synchronous success tracking
|
||||
# -50% restore failure rate by limiting postgresql.conf memory
|
||||
# increment backups after 10k WAL files (1h of replay)
|
||||
# render_pg_archive.sh synchronously tracks PITR health
|
||||
#- Shipped autoscaling storage, in-place managed credential rotation
|
||||
- title: Software Engineer
|
||||
when: Dec 2023 - May 2025
|
||||
what:
|
||||
- Crafted PostgreSQL low-downtime migrations and in-place major version upgrades.
|
||||
# PGUpgrades
|
||||
# continuous canary testing matrix
|
||||
# 3 major version targets
|
||||
# FCR
|
||||
# all-in-one solution for cross-region, cross-account, cross-provider migrations
|
||||
# via physical replication
|
||||
# customer-triggered promotion
|
||||
# coupled to power HIPAA migration
|
||||
- title: Qualtrics
|
||||
headings:
|
||||
- title: Senior Software Engineer, Team Lead
|
||||
when: May 2022 - Present
|
||||
when: May 2022 - Dec 2023
|
||||
what:
|
||||
- Optimized a Go application to increase consumption rate from Kafka by 340%, costing half the engineering effort of the proposed rewrite.
|
||||
- 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.
|
||||
# Atlas QMP Consumer
|
||||
# optimized garbage collection of many small objects
|
||||
# from maps and allocs to pointers and slices
|
||||
#- 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.
|
||||
- Spearheaded AWS asset replication tooling, sparing 9 teams from duplicating work relocating up to 7 AWS technologies each.
|
||||
# Scanned AWS assets -> interactive script replicated configs to new AWS region
|
||||
# cloned S3, SQS, SNS, DynamoDB assets
|
||||
- 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.
|
||||
# Mongosback backup-check lists S3 for last backup timestamp
|
||||
- Created automated release test suites for 11 services, which catches 10 would-be customer facing bugs per month on average.
|
||||
# CRUDdy
|
||||
# tied to Nomad spec
|
||||
# on boot, healthchecks fail for new instance until e2e tests pass per-instance
|
||||
# blocked releases to staging
|
||||
- title: Software Engineer II
|
||||
when: Oct 2019 - May 2022
|
||||
what:
|
||||
- "Scripted no-downtime database reconfiguration, which was leveraged by 3 teams to update 168 instances."
|
||||
#- "Scripted no-downtime database reconfiguration, which was leveraged by 3 teams to update 168 instances."
|
||||
- Automated infrastructure patching for 30 microservices and 25 database clusters by creating a modular and testable Bash script framework.
|
||||
- Administered on-call training, including 6 chaos tests gamedays across 5 systems.
|
||||
# Nexpose-Remediations
|
||||
# Couchbase, Mongo, GaleraDB covered
|
||||
# spindown, isSpindownComplete, patch, reboot, pollRebooted, spinup, isSpinupComplete
|
||||
# used cross-team for all Mongo instances
|
||||
# bash tested via `source unit_test_setup.sh; test my_method`
|
||||
#- Administered on-call training, including 6 chaos tests gamedays across 5 systems.
|
||||
- title: Software Engineer I
|
||||
when: Feb 2018 - Oct 2019
|
||||
what:
|
||||
- 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.
|
||||
- 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
|
||||
- Founded Python tookit for full and incremental MongoDB backups, supporting partitioned deployments. The in-house standard for 21 teams.
|
||||
# Mongosback
|
||||
# Python3 script
|
||||
# Handles sharded AND replica sets
|
||||
# watches for any shard in progress AND replica set healthy enough to continue
|
||||
- Decreased internal service's annual outages by 91% and hardware costs by 40% via database migration. Scoped alternatives, projected costs, and designed cutover.
|
||||
# Couchbase for GENI (MaraudersMap) was a mess
|
||||
# indexes just kinda disappeared, meaning table scans often
|
||||
# evaluated Mongo, Galera, CockroachDB
|
||||
# Mongo ran with little RAM on laptop + fast startup + lowest latency
|
||||
- title: Education
|
||||
headings:
|
||||
- title: Wake Forest University
|
||||
not-when: Dec 2017
|
||||
@@ -58,9 +109,9 @@ resume:
|
||||
# when: Jun 2018
|
||||
# what:
|
||||
# - Refactored to correct bugs and improve efficiency by orders of magnitude
|
||||
- title: SKILLS
|
||||
- title: Skills
|
||||
what:
|
||||
- 'Languages: Go (Golang), Bash, Python3'
|
||||
- 'Platforms: Docker, Hashicorp, Linux/Unix, AWS, REST, Microservices, Git'
|
||||
- 'Datastores: MongoDB, Redis, S3, Couchbase, DynamoDB'
|
||||
- 'Platforms: Kubernetes, Temporal, Hashicorp, Linux/Unix, AWS, REST, Microservices'
|
||||
- 'Datastores: PostgreSQL, MongoDB, Redis, S3, Couchbase, DynamoDB'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user