chore: update CV
This commit is contained in:
parent
9624514c38
commit
4dcec4e6b0
10 changed files with 258 additions and 200 deletions
38
Makefile
38
Makefile
|
|
@ -4,23 +4,23 @@ html: index.html
|
||||||
|
|
||||||
index.html: resume.tex res.cls resume.cfg style.css
|
index.html: resume.tex res.cls resume.cfg style.css
|
||||||
htlatex resume.tex "resume.cfg,html5" "" "" ""
|
htlatex resume.tex "resume.cfg,html5" "" "" ""
|
||||||
LANG=C LC_ALL=C sed -i '' 's|</head>|<link href="style.css" rel="stylesheet" type="text/css" /></head>|; s|<title></title>|<title>Bastian Gruber - CV</title>|' resume.html
|
LANG=C LC_ALL=C sed -i 's|</head>|<link href="style.css" rel="stylesheet" type="text/css" /></head>|; s|<title></title>|<title>Bastian Gruber - CV</title>|' resume.html
|
||||||
LANG=C LC_ALL=C sed -i '' 's|linkedin.com/in/bastiangruber|<a href="https://linkedin.com/in/bastiangruber">linkedin.com/in/bastiangruber</a>|g' resume.html
|
LANG=C LC_ALL=C sed -i 's|linkedin.com/in/bastiangruber|<a href="https://linkedin.com/in/bastiangruber">linkedin.com/in/bastiangruber</a>|g' resume.html
|
||||||
LANG=C LC_ALL=C sed -i '' 's|rustwebdevelopment.com|<a href="https://rustwebdevelopment.com">rustwebdevelopment.com</a>|g' resume.html
|
LANG=C LC_ALL=C sed -i 's|rustwebdevelopment.com|<a href="https://rustwebdevelopment.com">rustwebdevelopment.com</a>|g' resume.html
|
||||||
LANG=C LC_ALL=C sed -i '' 's|gruberbastian@me.com|<a href="mailto:gruberbastian@me.com">gruberbastian@me.com</a>|g' resume.html
|
LANG=C LC_ALL=C sed -i 's|gruberbastian@me.com|<a href="mailto:gruberbastian@me.com">gruberbastian@me.com</a>|g' resume.html
|
||||||
LANG=C LC_ALL=C sed -i '' 's|github.com/gruberb|<a href="https://github.com/gruberb">github.com/gruberb</a>|g' resume.html
|
LANG=C LC_ALL=C sed -i 's|github.com/gruberb|<a href="https://github.com/gruberb">github.com/gruberb</a>|g' resume.html
|
||||||
LANG=C LC_ALL=C sed -i '' 's|code.novanexus.ca/gruberb|<a href="https://code.novanexus.ca/gruberb">code.novanexus.ca/gruberb</a>|g' resume.html
|
LANG=C LC_ALL=C sed -i 's|code.novanexus.ca/gruberb|<a href="https://code.novanexus.ca/gruberb">code.novanexus.ca/gruberb</a>|g' resume.html
|
||||||
LANG=C LC_ALL=C sed -i '' 's|bastiangruber.ca|<a href="https://bastiangruber.ca">bastiangruber.ca</a>|g' resume.html
|
LANG=C LC_ALL=C sed -i 's|bastiangruber.ca|<a href="https://bastiangruber.ca">bastiangruber.ca</a>|g' resume.html
|
||||||
LANG=C LC_ALL=C sed -i '' 's|Mozilla, Remote|<span class="company">Mozilla</span>, Remote|g' resume.html
|
LANG=C LC_ALL=C sed -i 's|Mozilla, Remote|<span class="company">Mozilla</span>, Remote|g' resume.html
|
||||||
LANG=C LC_ALL=C sed -i '' 's|Toposware, Remote|<span class="company">Toposware</span>, Remote|g' resume.html
|
LANG=C LC_ALL=C sed -i 's|Toposware (acquired by Polygon Labs), Remote|<span class="company">Toposware</span> (acquired by <span class="company">Polygon Labs</span>), Remote|g' resume.html
|
||||||
LANG=C LC_ALL=C sed -i '' 's|Centrifuge, Remote|<span class="company">Centrifuge</span>, Remote|g' resume.html
|
LANG=C LC_ALL=C sed -i 's|Centrifuge, Remote|<span class="company">Centrifuge</span>, Remote|g' resume.html
|
||||||
LANG=C LC_ALL=C sed -i '' 's|Manning Publications|<span class="company">Manning Publications</span>|g' resume.html
|
LANG=C LC_ALL=C sed -i 's|Manning Publications|<span class="company">Manning Publications</span>|g' resume.html
|
||||||
LANG=C LC_ALL=C sed -i '' 's|Twilio Inc., Remote|<span class="company">Twilio Inc.</span>, Remote|g' resume.html
|
LANG=C LC_ALL=C sed -i 's|Twilio Inc., Remote|<span class="company">Twilio Inc.</span>, Remote|g' resume.html
|
||||||
LANG=C LC_ALL=C sed -i '' 's|Kraken Digital Currency Exchange, Remote|<span class="company">Kraken Digital Currency Exchange</span>, Remote|g' resume.html
|
LANG=C LC_ALL=C sed -i 's|Kraken Digital Asset Exchange, Remote|<span class="company">Kraken Digital Asset Exchange</span>, Remote|g' resume.html
|
||||||
LANG=C LC_ALL=C sed -i '' 's|TH Ingolstadt|<span class="company">TH Ingolstadt</span>|g' resume.html
|
LANG=C LC_ALL=C sed -i 's|TH Ingolstadt|<span class="company">TH Ingolstadt</span>|g' resume.html
|
||||||
LANG=C LC_ALL=C sed -i '' 's|OSRAM|<span class="company">OSRAM</span>|g' resume.html
|
LANG=C LC_ALL=C sed -i 's|OSRAM|<span class="company">OSRAM</span>|g' resume.html
|
||||||
LANG=C LC_ALL=C sed -i '' 's|GIATA|<span class="company">GIATA</span>|g' resume.html
|
LANG=C LC_ALL=C sed -i 's|GIATA|<span class="company">GIATA</span>|g' resume.html
|
||||||
LANG=C LC_ALL=C sed -i '' 's|Avenga|<span class="company">Avenga</span>|g' resume.html
|
LANG=C LC_ALL=C sed -i 's|Avenga|<span class="company">Avenga</span>|g' resume.html
|
||||||
mv resume.html index.html
|
mv resume.html index.html
|
||||||
|
|
||||||
pdf: resume.pdf
|
pdf: resume.pdf
|
||||||
|
|
@ -32,7 +32,7 @@ clean:
|
||||||
rm -f index.html resume.aux resume.log resume.dvi resume.html resume.css resume.4ct resume.4tc resume.idv resume.lg resume.tmp resume.xref
|
rm -f index.html resume.aux resume.log resume.dvi resume.html resume.css resume.4ct resume.4tc resume.idv resume.lg resume.tmp resume.xref
|
||||||
|
|
||||||
deploy: html
|
deploy: html
|
||||||
mkdir -p ~/CodingIsFun/fun/bastiangruber.ca/src/cv
|
mkdir -p ~/CodingIsFun/personal/bastiangruber.ca/src/cv
|
||||||
cp index.html style.css resume.css ~/CodingIsFun/fun/bastiangruber.ca/src/cv/
|
cp index.html style.css resume.css ~/CodingIsFun/personal/bastiangruber.ca/src/cv/
|
||||||
|
|
||||||
all: deploy pdf
|
all: deploy pdf
|
||||||
|
|
|
||||||
174
index.html
174
index.html
|
|
@ -54,9 +54,10 @@ class="td00">Git: <a href="https://code.novanexus.ca/gruberb">code.novanexus.ca/
|
||||||
<h4 class="sectionHead"><a
|
<h4 class="sectionHead"><a
|
||||||
id="x1-10000"></a><div
|
id="x1-10000"></a><div
|
||||||
class="centerline"> SUMMARY </div></h4><div class="section">
|
class="centerline"> SUMMARY </div></h4><div class="section">
|
||||||
<!--l. 55--><p class="noindent" >Staff Software Engineer at Mozilla, shipping Rust, C++, and Python to hundreds of millions of Firefox users.
|
<!--l. 55--><p class="noindent" >Staff Engineer at Mozilla, shipping Rust, C++, and Python to hundreds of millions of Firefox users across Desktop,
|
||||||
Published author (“Rust Web Development” – Manning). Founder of Rust&Tell Berlin, the largest Rust meetup
|
Android, and iOS. Promoted for leading cross-team projects and getting complex, multi-platform features shipped.
|
||||||
globally.
|
12+ years of backend and systems work, published author (“Rust Web Development”), and 13 years of technical
|
||||||
|
writing for outlets like c’t and iX.
|
||||||
</p>
|
</p>
|
||||||
</div><h4 class="sectionHead"><a
|
</div><h4 class="sectionHead"><a
|
||||||
id="x1-20000"></a><div
|
id="x1-20000"></a><div
|
||||||
|
|
@ -64,130 +65,167 @@ class="centerline"> SKILLS
|
||||||
<!--l. 68--><p class="noindent" ><span
|
<!--l. 68--><p class="noindent" ><span
|
||||||
class="cmbx-10">Languages: </span>Rust, C++, Python, TypeScript, Go <br
|
class="cmbx-10">Languages: </span>Rust, C++, Python, TypeScript, Go <br
|
||||||
class="newline" /><span
|
class="newline" /><span
|
||||||
class="cmbx-10">Backend & Systems: </span>Rust (Actix, Warp, Axum), Python (FastAPI), Node.js, async Rust, FFI/UniFFI
|
class="cmbx-10">Systems & Backend: </span>async Rust (Axum, Actix), Python/FastAPI, Node.js, FFI/UniFFI, gRPC, REST
|
||||||
<br
|
<br
|
||||||
class="newline" /><span
|
class="newline" /><span
|
||||||
class="cmbx-10">Patterns: </span>REST, GraphQL, gRPC, distributed systems (P2P), microservices <br
|
class="cmbx-10">Architecture: </span>distributed systems, P2P protocols, system design, cross-platform (Desktop/Android/iOS)
|
||||||
|
<br
|
||||||
class="newline" /><span
|
class="newline" /><span
|
||||||
class="cmbx-10">Infrastructure: </span>AWS, Google Cloud, Docker, Kubernetes, CI/CD, Grafana <br
|
class="cmbx-10">Infrastructure & Observability: </span>AWS, GCP, Docker, Kubernetes, CI/CD, Grafana, performance
|
||||||
class="newline" /><span
|
profiling
|
||||||
class="cmbx-10">AI Tooling: </span>Claude Code, GitHub Copilot
|
|
||||||
</p>
|
</p>
|
||||||
</div><h4 class="sectionHead"><a
|
</div><h4 class="sectionHead"><a
|
||||||
id="x1-30000"></a><div
|
id="x1-30000"></a><div
|
||||||
class="centerline"> PROFESSIONAL EXPERIENCE </div></h4><div class="section">
|
class="centerline"> PROFESSIONAL EXPERIENCE </div></h4><div class="section">
|
||||||
<!--l. 86--><p class="noindent" ><span
|
<!--l. 85--><p class="noindent" ><span
|
||||||
class="cmsl-10">Staff Software Engineer (promoted from Senior) </span>July 2024 - Present
|
class="cmsl-10">Staff Software Engineer </span>Feb 2026 - Present
|
||||||
|
<br
|
||||||
|
class="newline" /><span class="company">Mozilla</span>, Remote <br
|
||||||
|
class="newline" />Promoted for cross-team technical leadership and delivering multi-platform privacy features. </p>
|
||||||
|
<ul class="itemize1">
|
||||||
|
<li class="itemize">
|
||||||
|
<!--l. 89--><p class="noindent" >Leading the Image Service project: replaced 3 fragile, duplicated favicon systems with a single
|
||||||
|
GCS-backed API serving 4+ internal teams. Extended an existing Python/Airflow pipeline instead of
|
||||||
|
building a new service, reducing maintenance burden across the board
|
||||||
|
</p></li>
|
||||||
|
<li class="itemize">
|
||||||
|
<!--l. 90--><p class="noindent" >Implemented Oblivious HTTP (OHTTP) in application-services (shared Rust component
|
||||||
|
cross-compiled to Swift/Kotlin via UniFFI) and wrote the C++ integration for Firefox Desktop. Now
|
||||||
|
live on Firefox iOS, Android, and Desktop, covering millions of users
|
||||||
|
</p></li>
|
||||||
|
<li class="itemize">
|
||||||
|
<!--l. 91--><p class="noindent" >Maintaining the Firefox Push notification service (Rust backend, 50k req/s, sub-200ms latency).
|
||||||
|
Reduced memory footprint, added circuit breakers, built Grafana dashboards for observability</p></li></ul>
|
||||||
|
|
||||||
|
<!--l. 94--><p class="noindent" ><span
|
||||||
|
class="cmsl-10">Senior Software Engineer </span>Jun 2024 - Jan 2026
|
||||||
<br
|
<br
|
||||||
class="newline" /><span class="company">Mozilla</span>, Remote <br
|
class="newline" /><span class="company">Mozilla</span>, Remote <br
|
||||||
class="newline" /></p>
|
class="newline" /></p>
|
||||||
<ul class="itemize1">
|
<ul class="itemize1">
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 89--><p class="noindent" >Implemented Oblivious HTTP (OHTTP) from scratch in application-services (shared Rust component
|
<!--l. 97--><p class="noindent" >Core maintainer of Merino, the Python/FastAPI service powering Firefox Suggest. All search
|
||||||
cross-compiled to Swift/Kotlin via UniFFI) plus C++ and Rust for Firefox Desktop – users are now
|
suggestions in Firefox route through Merino, which enriches and serves them in a privacy-preserving
|
||||||
unidentifiable when making privacy-sensitive requests across all platforms
|
way
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 90--><p class="noindent" >Consolidated four separate favicon implementations into a single Image Service – extended an existing
|
<!--l. 98--><p class="noindent" >Code reviewer for UniFFI, Mozilla’s multi-language bindings generator (Rust to Kotlin, Swift, Python,
|
||||||
Python/Airflow pipeline rather than building a new microservice, now serving 4 teams from one
|
JavaScript)
|
||||||
manifest behind a GCS-backed API
|
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 91--><p class="noindent" >Maintained Firefox Push notification service (50k req/s, sub-200ms latency): reduced memory footprint,
|
<!--l. 99--><p class="noindent" >Contributing directly to Firefox Desktop (mozilla-central): shipping Rust and C++ code
|
||||||
added circuit breakers, built Grafana dashboards
|
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 92--><p class="noindent" >Contributor and code reviewer for UniFFI, Mozilla’s multi-language bindings generator (Rust to Kotlin,
|
<!--l. 100--><p class="noindent" >Led “Rusty Fridays” sessions (6–10 engineers per session), building internal Rust knowledge across
|
||||||
|
teams</p></li></ul>
|
||||||
Swift, Python, JavaScript)
|
<!--l. 103--><p class="noindent" ><span
|
||||||
</p></li>
|
class="cmsl-10">Technical Editor, “From C to Rust” </span>Feb 2026 - Present
|
||||||
<li class="itemize">
|
|
||||||
<!--l. 93--><p class="noindent" >Led “Rusty Fridays” internal education sessions, mentoring engineers across teams through Rust
|
|
||||||
adoption</p></li></ul>
|
|
||||||
<!--l. 96--><p class="noindent" ><span
|
|
||||||
class="cmsl-10">Senior Systems Engineer, Team Lead </span>2023 - 2024
|
|
||||||
<br
|
<br
|
||||||
class="newline" /><span class="company">Toposware</span>, Remote <br
|
class="newline" /><span class="company">Manning Publications</span> (Contract, Part-time) <br
|
||||||
class="newline" />Core team of 4 building a peer-to-peer distributed network protocol from scratch in Rust. </p>
|
class="newline" />Reviewing technical accuracy and pedagogical quality for Manning’s C-to-Rust migration guide.
|
||||||
|
</p><!--l. 109--><p class="noindent" ><span
|
||||||
|
class="cmsl-10">Senior Systems Engineer, Team Lead </span>Apr 2023 - Jun 2024
|
||||||
|
<br
|
||||||
|
class="newline" /><span class="company">Toposware</span> (acquired by <span class="company">Polygon Labs</span>), Remote <br
|
||||||
|
class="newline" />Core team of 4 building a peer-to-peer distributed network protocol from scratch in Rust. Our core implementation
|
||||||
|
of the double echo protocol and the Ethereum bridge became part of the Polygon stack after acquisition.
|
||||||
|
</p>
|
||||||
<ul class="itemize1">
|
<ul class="itemize1">
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 100--><p class="noindent" >Achieved 10x throughput per node by profiling the actual bottleneck – optimized batch processing and
|
<!--l. 113--><p class="noindent" >Achieved 10x message throughput per node by profiling the actual bottleneck: optimized batch
|
||||||
serialization paths rather than redesigning the consensus layer
|
processing and serialization paths after discovering nodes were compute-bound on crypto operations,
|
||||||
|
not network-limited
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 101--><p class="noindent" >Led benchmark initiative that revealed nodes were compute-bound on crypto operations, not
|
<!--l. 114--><p class="noindent" >Built the EVM bridge connecting external Ethereum-compatible chains to the core network
|
||||||
network-limited – redirected optimization effort accordingly
|
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 102--><p class="noindent" >Built an EVM bridge connecting external Ethereum-compatible chains to the core network</p></li></ul>
|
<!--l. 115--><p class="noindent" >Led the internal benchmarking initiative that changed where the team focused optimization effort</p></li></ul>
|
||||||
<!--l. 105--><p class="noindent" ><span
|
<!--l. 118--><p class="noindent" ><span
|
||||||
class="cmsl-10">Senior Software Engineer </span>2022 - 2023
|
class="cmsl-10">Senior Software Engineer </span>Aug 2022 - Feb 2023
|
||||||
<br
|
<br
|
||||||
class="newline" /><span class="company">Centrifuge</span>, Remote <br
|
class="newline" /><span class="company">Centrifuge</span>, Remote <br
|
||||||
class="newline" />Protocol team building DeFi applications on Substrate/Polkadot in Rust. </p>
|
class="newline" />Protocol team building DeFi infrastructure on Substrate/Polkadot in Rust. </p>
|
||||||
<ul class="itemize1">
|
<ul class="itemize1">
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 109--><p class="noindent" >Implemented on-chain fund pool mutations – core feature for the lending protocol enabling live capital
|
<!--l. 122--><p class="noindent" >Implemented on-chain fund pool mutations, the core feature enabling live capital allocation adjustments
|
||||||
allocation adjustments
|
in the lending protocol
|
||||||
|
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 110--><p class="noindent" >Replaced manual documentation with CI-driven auto-generation from Rust source – eliminated
|
<!--l. 123--><p class="noindent" >Replaced manual documentation with CI-driven auto-generation from Rust source, eliminating
|
||||||
persistent drift between code and public docs</p></li></ul>
|
persistent drift between code and public docs</p></li></ul>
|
||||||
<!--l. 113--><p class="noindent" ><span
|
<!--l. 126--><p class="noindent" ><span
|
||||||
class="cmsl-10">Author, “Rust Web Development” </span>2020 - 2022
|
class="cmsl-10">Author, “Rust Web Development” </span>Oct 2020 - Dec 2022
|
||||||
<br
|
<br
|
||||||
class="newline" /><span class="company">Manning Publications</span> <br
|
class="newline" /><span class="company">Manning Publications</span> <br
|
||||||
class="newline" />Published end-to-end guide covering async Rust, web frameworks, and production deployment.
|
class="newline" />Wrote and published an end-to-end guide covering async Rust, web frameworks, and production deployment.
|
||||||
</p><!--l. 119--><p class="noindent" ><span
|
</p><!--l. 132--><p class="noindent" ><span
|
||||||
class="cmsl-10">Sr. Solutions Architect (promoted from SA) </span>2020 - 2022
|
class="cmsl-10">Sr. Solutions Architect (promoted from SA) </span>Jun 2020 - Jul 2022
|
||||||
<br
|
<br
|
||||||
class="newline" /><span class="company">Twilio Inc.</span>, Remote <br
|
class="newline" /><span class="company">Twilio Inc.</span>, Remote <br
|
||||||
class="newline" /></p>
|
class="newline" /></p>
|
||||||
<ul class="itemize1">
|
<ul class="itemize1">
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 122--><p class="noindent" >Technical lead for Fortune 500 engagements: debugged latency issues, redesigned messaging flows,
|
<!--l. 135--><p class="noindent" >Technical lead for Fortune 500 professional services engagements: diagnosed latency issues, redesigned
|
||||||
advised on architectures matching client team size and resources
|
messaging architectures, delivered implementation roadmaps sized to each client’s team and resources
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 123--><p class="noindent" >Created reusable engagement playbooks adopted across the EMEA Professional Services team</p></li></ul>
|
<!--l. 136--><p class="noindent" >Created reusable engagement playbooks adopted across the EMEA Professional Services team</p></li></ul>
|
||||||
|
<!--l. 139--><p class="noindent" ><span
|
||||||
<!--l. 126--><p class="noindent" ><span
|
class="cmsl-10">Systems Engineer, Core Backend </span>Aug 2019 - May 2020
|
||||||
class="cmsl-10">Systems Engineer </span>2019 - 2020
|
|
||||||
<br
|
<br
|
||||||
class="newline" /><span class="company">Kraken Digital Currency Exchange</span>, Remote <br
|
class="newline" /><span class="company">Kraken Digital Asset Exchange</span>, Remote <br
|
||||||
class="newline" /></p>
|
class="newline" />Part of the first Rust team rewriting Kraken’s core infrastructure from PHP. </p>
|
||||||
<ul class="itemize1">
|
<ul class="itemize1">
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 129--><p class="noindent" >Migrated core banking services and API gateway from PHP to Rust, achieving 100x throughput
|
<!--l. 143--><p class="noindent" >Rewrote core banking services and API gateway in Rust, replacing legacy PHP services. The new stack
|
||||||
improvement – enabling order-of-magnitude traffic growth without scaling hardware
|
handled significantly higher throughput with a smaller hardware footprint
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 130--><p class="noindent" >Worked directly with the CTO on privacy-focused architectural decisions for the trading platform</p></li></ul>
|
<!--l. 144--><p class="noindent" >Shipped the first version of the automated KYC verification flow, replacing manual processing right as
|
||||||
<!--l. 135--><p class="noindent" ><span
|
COVID drove a massive spike in new customer sign-ups</p></li></ul>
|
||||||
class="cmsl-10">Earlier Career </span>2014 - 2019
|
<!--l. 149--><p class="noindent" ><span
|
||||||
|
class="cmsl-10">Earlier Career </span>2013 - 2019
|
||||||
<br
|
<br
|
||||||
class="newline" />Sr. Software Engineer across enterprise clients (<span class="company">OSRAM</span>, Körber Digital, <span class="company">GIATA</span>, <span class="company">Avenga</span>) and startups (Dalia
|
class="newline" />Sr. Software Engineer (freelance from 2016) across enterprise clients (<span class="company">OSRAM</span>, Körber Digital, <span class="company">GIATA</span>, <span class="company">Avenga</span>) and
|
||||||
Research, blogfoster, smartB) in Berlin. </p>
|
startups (Dalia Research, blogfoster, smartB) in Berlin. </p>
|
||||||
<ul class="itemize1">
|
<ul class="itemize1">
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 138--><p class="noindent" >Founded “Rust & Tell Berlin” meetup – grew it into the largest Rust meetup globally, still running
|
<!--l. 152--><p class="noindent" >Founded “Rust & Tell Berlin” meetup, grew it into the largest Rust meetup globally. Coordinated with
|
||||||
years later
|
companies for venue sponsorship, organized speakers, photographers, and videographers. Gave talks
|
||||||
|
and created a welcoming space for the Rust community
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 139--><p class="noindent" >Designed IoT authentication infrastructure at <span class="company">OSRAM</span> for thousands of connected devices (Node.js,
|
<!--l. 153--><p class="noindent" >Designed IoT authentication infrastructure at <span class="company">OSRAM</span> for thousands of connected devices (Node.js,
|
||||||
Go, Lua)
|
Go, Lua)
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 140--><p class="noindent" >First engineering hire at Körber Digital: built real-time sensor data pipelines on AWS
|
<!--l. 154--><p class="noindent" >First engineering hire at Körber Digital: built real-time sensor data pipelines on AWS (Lambda, ECS,
|
||||||
|
Route53)
|
||||||
|
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 141--><p class="noindent" >Decomposed <span class="company">GIATA</span>’s monolithic ERP into 6 Docker-based microservices, improving system scalability</p></li></ul>
|
<!--l. 155--><p class="noindent" >Decomposed <span class="company">GIATA</span>’s monolithic PHP system into 6 Docker-based services, taught the existing team
|
||||||
|
Scrum and JavaScript
|
||||||
|
</p></li>
|
||||||
|
<li class="itemize">
|
||||||
|
<!--l. 156--><p class="noindent" >Contributed to the Rust compiler and standard library during a self-directed sabbatical (2019)</p></li></ul>
|
||||||
|
<!--l. 159--><p class="noindent" ><span
|
||||||
|
class="cmsl-10">Technical Writer </span>2008 - 2020
|
||||||
|
<br
|
||||||
|
class="newline" />Freelance (Contract) <br
|
||||||
|
class="newline" />13 years writing for technical publications including c’t, iX, Macwelt (IDG/Heise), and tech blogs
|
||||||
|
(LogRocket, stadt-bremerhaven.de, mobilegeeks.de). Also authored “OS X für Einsteiger” (Bookboon,
|
||||||
|
2012).
|
||||||
|
</p>
|
||||||
</div><h4 class="sectionHead"><a
|
</div><h4 class="sectionHead"><a
|
||||||
id="x1-40000"></a><div
|
id="x1-40000"></a><div
|
||||||
class="centerline"> EDUCATION </div></h4><div class="section">
|
class="centerline"> EDUCATION </div></h4><div class="section">
|
||||||
<!--l. 148--><p class="noindent" ><span
|
<!--l. 171--><p class="noindent" ><span
|
||||||
class="cmsl-10">Bachelor of Science, Computer Science </span><br
|
class="cmsl-10">Bachelor of Science, Computer Science </span>Mar 2014
|
||||||
class="newline" /><span class="company">TH Ingolstadt</span> – Scholarship from Allianz Deutschland AG (fully funded)
|
<br
|
||||||
|
class="newline" /><span class="company">TH Ingolstadt</span>. Scholarship from Allianz Deutschland AG (fully funded dual-study program, 2010–2014)
|
||||||
</p>
|
</p>
|
||||||
</div></div>
|
</div></div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,5 +2,5 @@
|
||||||
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-10000}{QQ2-1-1}{\centerline {SUMMARY}}}{1}\relax
|
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-10000}{QQ2-1-1}{\centerline {SUMMARY}}}{1}\relax
|
||||||
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-20000}{QQ2-1-2}{\centerline {SKILLS}}}{1}\relax
|
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-20000}{QQ2-1-2}{\centerline {SKILLS}}}{1}\relax
|
||||||
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-30000}{QQ2-1-3}{\centerline {PROFESSIONAL EXPERIENCE}}}{1}\relax
|
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-30000}{QQ2-1-3}{\centerline {PROFESSIONAL EXPERIENCE}}}{1}\relax
|
||||||
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-40000}{QQ2-1-4}{\centerline {EDUCATION}}}{3}\relax
|
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-40000}{QQ2-1-4}{\centerline {EDUCATION}}}{4}\relax
|
||||||
\par
|
\par
|
||||||
|
|
|
||||||
|
|
@ -2,4 +2,4 @@
|
||||||
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-10000}{QQ2-1-1}{\centerline {SUMMARY}}}{1}\relax
|
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-10000}{QQ2-1-1}{\centerline {SUMMARY}}}{1}\relax
|
||||||
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-20000}{QQ2-1-2}{\centerline {SKILLS}}}{1}\relax
|
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-20000}{QQ2-1-2}{\centerline {SKILLS}}}{1}\relax
|
||||||
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-30000}{QQ2-1-3}{\centerline {PROFESSIONAL EXPERIENCE}}}{1}\relax
|
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-30000}{QQ2-1-3}{\centerline {PROFESSIONAL EXPERIENCE}}}{1}\relax
|
||||||
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-40000}{QQ2-1-4}{\centerline {EDUCATION}}}{3}\relax
|
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-40000}{QQ2-1-4}{\centerline {EDUCATION}}}{4}\relax
|
||||||
|
|
|
||||||
BIN
resume.dvi
BIN
resume.dvi
Binary file not shown.
BIN
resume.idv
BIN
resume.idv
Binary file not shown.
125
resume.log
125
resume.log
|
|
@ -1,4 +1,4 @@
|
||||||
This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026) (preloaded format=latex 2026.3.1) 9 MAR 2026 09:46
|
This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026/Arch Linux) (preloaded format=latex 2026.3.10) 17 MAR 2026 07:46
|
||||||
entering extended mode
|
entering extended mode
|
||||||
restricted \write18 enabled.
|
restricted \write18 enabled.
|
||||||
%&-line parsing enabled.
|
%&-line parsing enabled.
|
||||||
|
|
@ -12,9 +12,9 @@ ut resume.tex
|
||||||
(./resume.tex (./res.cls
|
(./resume.tex (./res.cls
|
||||||
Document Style `res' <26 Sep 89>.
|
Document Style `res' <26 Sep 89>.
|
||||||
Document Class: res 2000/05/19 v1.4b Resume class
|
Document Class: res 2000/05/19 v1.4b Resume class
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/latex/base/article.cls
|
(/usr/share/texmf-dist/tex/latex/base/article.cls
|
||||||
Document Class: article 2025/01/22 v1.4n Standard LaTeX document class
|
Document Class: article 2025/01/22 v1.4n Standard LaTeX document class
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/latex/base/size10.clo
|
(/usr/share/texmf-dist/tex/latex/base/size10.clo
|
||||||
File: size10.clo 2025/01/22 v1.4n Standard LaTeX file (size option)
|
File: size10.clo 2025/01/22 v1.4n Standard LaTeX file (size option)
|
||||||
)
|
)
|
||||||
\c@part=\count275
|
\c@part=\count275
|
||||||
|
|
@ -41,7 +41,7 @@ No auxiliary output files.
|
||||||
\resumewidth=\dimen150
|
\resumewidth=\dimen150
|
||||||
\@columnwidth=\dimen151
|
\@columnwidth=\dimen151
|
||||||
\c@numberofcolumns=\count283
|
\c@numberofcolumns=\count283
|
||||||
) (/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/tex4ht.sty
|
) (/usr/share/texmf-dist/tex/generic/tex4ht/tex4ht.sty
|
||||||
version 2025-12-14-13:41
|
version 2025-12-14-13:41
|
||||||
Package: tex4ht
|
Package: tex4ht
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
|
@ -52,18 +52,17 @@ Package: tex4ht
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
\tmp:toks=\toks22
|
\tmp:toks=\toks22
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/usepackage.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/usepackage.4ht
|
||||||
version 2025-08-27-10:30
|
version 2025-08-27-10:30
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/latex/psnfss/helvet.sty
|
(/usr/share/texmf-dist/tex/latex/psnfss/helvet.sty
|
||||||
Package: helvet 2020/03/25 PSNFSS-v9.3 (WaS)
|
Package: helvet 2020/03/25 PSNFSS-v9.3 (WaS)
|
||||||
|
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/latex/graphics/keyval.sty
|
(/usr/share/texmf-dist/tex/latex/graphics/keyval.sty
|
||||||
Package: keyval 2022/05/29 v1.15 key=value parser (DPC)
|
Package: keyval 2022/05/29 v1.15 key=value parser (DPC)
|
||||||
\KV@toks@=\toks23
|
\KV@toks@=\toks23
|
||||||
))
|
)) (./resume.cfg
|
||||||
(./resume.cfg
|
(/usr/share/texmf-dist/tex/generic/tex4ht/tex4ht.4ht
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/tex4ht.4ht
|
|
||||||
version 2025-07-09-13:35
|
version 2025-07-09-13:35
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
--- Note --- for additional information, use the command line option `info'
|
--- Note --- for additional information, use the command line option `info'
|
||||||
|
|
@ -72,7 +71,7 @@ version 2025-07-09-13:35
|
||||||
::::::::::::::::::::::::::::::::::::::::::
|
::::::::::::::::::::::::::::::::::::::::::
|
||||||
TeX4ht info is available in the log file
|
TeX4ht info is available in the log file
|
||||||
::::::::::::::::::::::::::::::::::::::::::
|
::::::::::::::::::::::::::::::::::::::::::
|
||||||
) (/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/tex4ht.sty
|
) (/usr/share/texmf-dist/tex/generic/tex4ht/tex4ht.sty
|
||||||
version 2025-12-14-13:41
|
version 2025-12-14-13:41
|
||||||
|
|
||||||
l.882 --- TeX4ht warning --- nonprimitive \everypar ---
|
l.882 --- TeX4ht warning --- nonprimitive \everypar ---
|
||||||
|
|
@ -87,7 +86,7 @@ l.882 --- TeX4ht warning --- nonprimitive \everypar ---
|
||||||
\openout3 = `resume.xref'.
|
\openout3 = `resume.xref'.
|
||||||
|
|
||||||
|
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
|
||||||
version 2026-01-04-08:10
|
version 2026-01-04-08:10
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
--- Note --- to remove the <?xml version=...?> processing instruction use the c
|
--- Note --- to remove the <?xml version=...?> processing instruction use the c
|
||||||
|
|
@ -98,13 +97,13 @@ ommand line option `no-VERSION'
|
||||||
DOCTYPE'
|
DOCTYPE'
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
||||||
version 2026-01-04-08:10
|
version 2026-01-04-08:10
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
||||||
version 2026-01-29-13:49
|
version 2026-01-29-13:49
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html5.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
|
||||||
version 2026-01-18-07:06
|
version 2026-01-18-07:06
|
||||||
)
|
)
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
|
@ -124,7 +123,7 @@ version 2026-01-18-07:06
|
||||||
--- Note --- for ^ of catcode 13, use the command line option `^13'
|
--- Note --- for ^ of catcode 13, use the command line option `^13'
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
|
||||||
version 2026-01-04-08:10
|
version 2026-01-04-08:10
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
--- Note --- for alternative charset, use the command line option `charset=...'
|
--- Note --- for alternative charset, use the command line option `charset=...'
|
||||||
|
|
@ -174,13 +173,13 @@ TeX4ht package options: html5,html,xhtml
|
||||||
on `imgdir:.../'
|
on `imgdir:.../'
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
||||||
version 2026-01-04-08:10
|
version 2026-01-04-08:10
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
||||||
version 2026-01-29-13:49
|
version 2026-01-29-13:49
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html5.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
|
||||||
version 2026-01-18-07:06
|
version 2026-01-18-07:06
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
--- Note --- To print a timestamp, use the command line option timestamp
|
--- Note --- To print a timestamp, use the command line option timestamp
|
||||||
|
|
@ -204,21 +203,20 @@ o use custom a CSS design
|
||||||
\:tocout=\write4
|
\:tocout=\write4
|
||||||
\openout4 = `resume.4tc'.
|
\openout4 = `resume.4tc'.
|
||||||
|
|
||||||
|
(resume.4tc)
|
||||||
(resume.4tc)
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4.4ht
|
|
||||||
version 2026-01-04-08:10
|
version 2026-01-04-08:10
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
||||||
version 2026-01-04-08:10
|
version 2026-01-04-08:10
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
||||||
version 2026-01-29-13:49
|
version 2026-01-29-13:49
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html5.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
|
||||||
version 2026-01-18-07:06
|
version 2026-01-18-07:06
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/latex.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/latex.4ht
|
||||||
version 2025-12-04-13:51
|
version 2025-12-04-13:51
|
||||||
LaTeX Info: Redefining \_ on input line 180.
|
LaTeX Info: Redefining \_ on input line 180.
|
||||||
LaTeX Info: Redefining \begin on input line 634.
|
LaTeX Info: Redefining \begin on input line 634.
|
||||||
|
|
@ -233,19 +231,19 @@ LaTeX Info: Redefining \> on input line 848.
|
||||||
ine option `refcaption'
|
ine option `refcaption'
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
|
||||||
version 2026-01-04-08:10
|
version 2026-01-04-08:10
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
||||||
version 2026-01-04-08:10
|
version 2026-01-04-08:10
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
||||||
version 2026-01-29-13:49
|
version 2026-01-29-13:49
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html5.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
|
||||||
version 2026-01-18-07:06
|
version 2026-01-18-07:06
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
|
||||||
version 2026-01-04-08:10
|
version 2026-01-04-08:10
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
--- Note --- For mini tocs immediately aftter the header use the command line o
|
--- Note --- For mini tocs immediately aftter the header use the command line o
|
||||||
|
|
@ -293,10 +291,10 @@ ommand line option or a configuration similar to \Configure{HColWidth}{\HCode{
|
||||||
style="width:\HColWidth"}}
|
style="width:\HColWidth"}}
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
||||||
version 2026-01-04-08:10
|
version 2026-01-04-08:10
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
||||||
version 2026-01-29-13:49
|
version 2026-01-29-13:49
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
--- Note --- for pictorial eqnarray, use the command line option `pic-eqnarray'
|
--- Note --- for pictorial eqnarray, use the command line option `pic-eqnarray'
|
||||||
|
|
@ -317,31 +315,31 @@ he command line option `pic-m+' (not safe!!)
|
||||||
--- Note --- for pictorial array, use the command line option `pic-array'
|
--- Note --- for pictorial array, use the command line option `pic-array'
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html5.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
|
||||||
version 2026-01-18-07:06
|
version 2026-01-18-07:06
|
||||||
))
|
))
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/fontmath.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/fontmath.4ht
|
||||||
version 2022-10-25-13:59
|
version 2022-10-25-13:59
|
||||||
|
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
|
||||||
version 2026-01-04-08:10
|
version 2026-01-04-08:10
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
||||||
version 2026-01-04-08:10
|
version 2026-01-04-08:10
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
||||||
version 2026-01-29-13:49
|
version 2026-01-29-13:49
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html5.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
|
||||||
version 2026-01-18-07:06
|
version 2026-01-18-07:06
|
||||||
))
|
))
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/res.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/res.4ht
|
||||||
version 2009-05-21-09:32
|
version 2009-05-21-09:32
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/article.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/article.4ht
|
||||||
version 2023-04-10-13:46
|
version 2023-04-10-13:46
|
||||||
|
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
|
||||||
version 2026-01-04-08:10
|
version 2026-01-04-08:10
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
--- Note --- for automatic sectioning pagination, use the command line option `
|
--- Note --- for automatic sectioning pagination, use the command line option `
|
||||||
|
|
@ -356,44 +354,43 @@ option `sec-filename'
|
||||||
index=2)
|
index=2)
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
||||||
version 2026-01-04-08:10
|
version 2026-01-04-08:10
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
||||||
version 2026-01-29-13:49
|
version 2026-01-29-13:49
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html5.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
|
||||||
version 2026-01-18-07:06
|
version 2026-01-18-07:06
|
||||||
))
|
))
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/res-a.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/res-a.4ht
|
||||||
version 2009-05-21-09:32
|
version 2009-05-21-09:32
|
||||||
|
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
|
||||||
version 2026-01-04-08:10
|
version 2026-01-04-08:10
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
||||||
version 2026-01-04-08:10
|
version 2026-01-04-08:10
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
||||||
version 2026-01-29-13:49
|
version 2026-01-29-13:49
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html5.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
|
||||||
version 2026-01-18-07:06
|
version 2026-01-18-07:06
|
||||||
))
|
))
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
|
||||||
version 2026-01-04-08:10
|
version 2026-01-04-08:10
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
||||||
version 2026-01-04-08:10
|
version 2026-01-04-08:10
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
||||||
version 2026-01-29-13:49
|
version 2026-01-29-13:49
|
||||||
)
|
)
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html5.4ht
|
(/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
|
||||||
version 2026-01-18-07:06
|
version 2026-01-18-07:06
|
||||||
))
|
))
|
||||||
(/usr/local/texlive/2026basic/texmf-dist/tex/latex/l3backend/l3backend-dvips.de
|
(/usr/share/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
|
||||||
f
|
|
||||||
File: l3backend-dvips.def 2025-10-09 L3 backend support: dvips
|
File: l3backend-dvips.def 2025-10-09 L3 backend support: dvips
|
||||||
\l__pdfannot_backend_content_box=\box53
|
\l__pdfannot_backend_content_box=\box53
|
||||||
\l__pdfannot_backend_model_box=\box54
|
\l__pdfannot_backend_model_box=\box54
|
||||||
|
|
@ -428,19 +425,19 @@ LaTeX Font Info: External font `cmex10' loaded for size
|
||||||
(Font) <5> on input line 46.
|
(Font) <5> on input line 46.
|
||||||
[1
|
[1
|
||||||
|
|
||||||
] [2] [3]
|
] [2] [3] [4]
|
||||||
***********
|
***********
|
||||||
LaTeX2e <2025-11-01>
|
LaTeX2e <2025-11-01>
|
||||||
L3 programming layer <2026-01-19>
|
L3 programming layer <2026-01-19>
|
||||||
***********
|
***********
|
||||||
)
|
)
|
||||||
Here is how much of TeX's memory you used:
|
Here is how much of TeX's memory you used:
|
||||||
4481 strings out of 469007
|
4481 strings out of 469516
|
||||||
58078 string characters out of 5454840
|
56217 string characters out of 5470833
|
||||||
592612 words of memory out of 5000000
|
592327 words of memory out of 5000000
|
||||||
33137 multiletter control sequences out of 15000+600000
|
33094 multiletter control sequences out of 15000+600000
|
||||||
629490 words of font info for 46 fonts, out of 8000000 for 9000
|
629490 words of font info for 46 fonts, out of 8000000 for 9000
|
||||||
319 hyphenation exceptions out of 8191
|
14 hyphenation exceptions out of 8191
|
||||||
49i,8n,59p,828b,464s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
49i,8n,59p,882b,464s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||||
|
|
||||||
Output written on resume.dvi (3 pages, 26000 bytes).
|
Output written on resume.dvi (4 pages, 29120 bytes).
|
||||||
|
|
|
||||||
BIN
resume.pdf
BIN
resume.pdf
Binary file not shown.
115
resume.tex
115
resume.tex
|
|
@ -52,7 +52,7 @@
|
||||||
\section{\centerline{SUMMARY}}
|
\section{\centerline{SUMMARY}}
|
||||||
|
|
||||||
\vspace{8pt} % Gap between title and text
|
\vspace{8pt} % Gap between title and text
|
||||||
Staff Software Engineer at Mozilla, shipping Rust, C++, and Python to hundreds of millions of Firefox users. Published author (``Rust Web Development'' -- Manning). Founder of Rust\&Tell Berlin, the largest Rust meetup globally.
|
Staff Engineer at Mozilla, shipping Rust, C++, and Python to hundreds of millions of Firefox users across Desktop, Android, and iOS. Promoted for leading cross-team projects and getting complex, multi-platform features shipped. 12+ years of backend and systems work, published author (``Rust Web Development''), and 13 years of technical writing for outlets like c't and iX.
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
%----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -66,10 +66,9 @@ Staff Software Engineer at Mozilla, shipping Rust, C++, and Python to hundreds o
|
||||||
|
|
||||||
\vspace{8pt} % Gap between title and text
|
\vspace{8pt} % Gap between title and text
|
||||||
{\bf Languages:} Rust, C++, Python, TypeScript, Go \\
|
{\bf Languages:} Rust, C++, Python, TypeScript, Go \\
|
||||||
{\bf Backend \& Systems:} Rust (Actix, Warp, Axum), Python (FastAPI), Node.js, async Rust, FFI/UniFFI \\
|
{\bf Systems \& Backend:} async Rust (Axum, Actix), Python/FastAPI, Node.js, FFI/UniFFI, gRPC, REST \\
|
||||||
{\bf Patterns:} REST, GraphQL, gRPC, distributed systems (P2P), microservices \\
|
{\bf Architecture:} distributed systems, P2P protocols, system design, cross-platform (Desktop/Android/iOS) \\
|
||||||
{\bf Infrastructure:} AWS, Google Cloud, Docker, Kubernetes, CI/CD, Grafana \\
|
{\bf Infrastructure \& Observability:} AWS, GCP, Docker, Kubernetes, CI/CD, Grafana, performance profiling
|
||||||
{\bf AI Tooling:} Claude Code, GitHub Copilot
|
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
%----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -79,74 +78,98 @@ Staff Software Engineer at Mozilla, shipping Rust, C++, and Python to hundreds o
|
||||||
% PROFESSIONAL EXPERIENCE SECTION
|
% PROFESSIONAL EXPERIENCE SECTION
|
||||||
%----------------------------------------------------------------------------------------
|
%----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
\section{\centerline{PROFESSIONAL EXPERIENCE}}
|
\section{\centerline{PROFESSIONAL EXPERIENCE}}
|
||||||
|
|
||||||
\vspace{8pt} % Gap between title and text
|
\vspace{8pt} % Gap between title and text
|
||||||
|
|
||||||
{\sl Staff Software Engineer (promoted from Senior)} \hfill July 2024 - Present \\
|
{\sl Staff Software Engineer} \hfill Feb 2026 - Present \\
|
||||||
|
Mozilla, Remote \\
|
||||||
|
Promoted for cross-team technical leadership and delivering multi-platform privacy features.
|
||||||
|
\begin{itemize} \itemsep -2pt
|
||||||
|
\item Leading the Image Service project: replaced 3 fragile, duplicated favicon systems with a single GCS-backed API serving 4+ internal teams. Extended an existing Python/Airflow pipeline instead of building a new service, reducing maintenance burden across the board
|
||||||
|
\item Implemented Oblivious HTTP (OHTTP) in application-services (shared Rust component cross-compiled to Swift/Kotlin via UniFFI) and wrote the C++ integration for Firefox Desktop. Now live on Firefox iOS, Android, and Desktop, covering millions of users
|
||||||
|
\item Maintaining the Firefox Push notification service (Rust backend, 50k req/s, sub-200ms latency). Reduced memory footprint, added circuit breakers, built Grafana dashboards for observability
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
{\sl Senior Software Engineer} \hfill Jun 2024 - Jan 2026 \\
|
||||||
Mozilla, Remote \\
|
Mozilla, Remote \\
|
||||||
\begin{itemize} \itemsep -2pt
|
\begin{itemize} \itemsep -2pt
|
||||||
\item Implemented Oblivious HTTP (OHTTP) from scratch in application-services (shared Rust component cross-compiled to Swift/Kotlin via UniFFI) plus C++ and Rust for Firefox Desktop -- users are now unidentifiable when making privacy-sensitive requests across all platforms
|
\item Core maintainer of Merino, the Python/FastAPI service powering Firefox Suggest. All search suggestions in Firefox route through Merino, which enriches and serves them in a privacy-preserving way
|
||||||
\item Consolidated four separate favicon implementations into a single Image Service -- extended an existing Python/Airflow pipeline rather than building a new microservice, now serving 4 teams from one manifest behind a GCS-backed API
|
\item Code reviewer for UniFFI, Mozilla's multi-language bindings generator (Rust to Kotlin, Swift, Python, JavaScript)
|
||||||
\item Maintained Firefox Push notification service (50k req/s, sub-200ms latency): reduced memory footprint, added circuit breakers, built Grafana dashboards
|
\item Contributing directly to Firefox Desktop (mozilla-central): shipping Rust and C++ code
|
||||||
\item Contributor and code reviewer for UniFFI, Mozilla's multi-language bindings generator (Rust to Kotlin, Swift, Python, JavaScript)
|
\item Led ``Rusty Fridays'' sessions (6--10 engineers per session), building internal Rust knowledge across teams
|
||||||
\item Led ``Rusty Fridays'' internal education sessions, mentoring engineers across teams through Rust adoption
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
{\sl Senior Systems Engineer, Team Lead} \hfill 2023 - 2024 \\
|
{\sl Technical Editor, ``From C to Rust''} \hfill Feb 2026 - Present \\
|
||||||
Toposware, Remote \\
|
Manning Publications (Contract, Part-time) \\
|
||||||
Core team of 4 building a peer-to-peer distributed network protocol from scratch in Rust.
|
Reviewing technical accuracy and pedagogical quality for Manning's C-to-Rust migration guide.
|
||||||
\begin{itemize} \itemsep -2pt
|
|
||||||
\item Achieved 10x throughput per node by profiling the actual bottleneck -- optimized batch processing and serialization paths rather than redesigning the consensus layer
|
|
||||||
\item Led benchmark initiative that revealed nodes were compute-bound on crypto operations, not network-limited -- redirected optimization effort accordingly
|
|
||||||
\item Built an EVM bridge connecting external Ethereum-compatible chains to the core network
|
|
||||||
\end{itemize}
|
|
||||||
|
|
||||||
{\sl Senior Software Engineer} \hfill 2022 - 2023 \\
|
|
||||||
Centrifuge, Remote \\
|
|
||||||
Protocol team building DeFi applications on Substrate/Polkadot in Rust.
|
|
||||||
\begin{itemize} \itemsep -2pt
|
|
||||||
\item Implemented on-chain fund pool mutations -- core feature for the lending protocol enabling live capital allocation adjustments
|
|
||||||
\item Replaced manual documentation with CI-driven auto-generation from Rust source -- eliminated persistent drift between code and public docs
|
|
||||||
\end{itemize}
|
|
||||||
|
|
||||||
{\sl Author, ``Rust Web Development''} \hfill 2020 - 2022 \\
|
|
||||||
Manning Publications \\
|
|
||||||
Published end-to-end guide covering async Rust, web frameworks, and production deployment.
|
|
||||||
|
|
||||||
\vspace{4pt}
|
\vspace{4pt}
|
||||||
|
|
||||||
{\sl Sr. Solutions Architect (promoted from SA)} \hfill 2020 - 2022 \\
|
{\sl Senior Systems Engineer, Team Lead} \hfill Apr 2023 - Jun 2024 \\
|
||||||
|
Toposware (acquired by Polygon Labs), Remote \\
|
||||||
|
Core team of 4 building a peer-to-peer distributed network protocol from scratch in Rust. Our core implementation of the double echo protocol and the Ethereum bridge became part of the Polygon stack after acquisition.
|
||||||
|
\begin{itemize} \itemsep -2pt
|
||||||
|
\item Achieved 10x message throughput per node by profiling the actual bottleneck: optimized batch processing and serialization paths after discovering nodes were compute-bound on crypto operations, not network-limited
|
||||||
|
\item Built the EVM bridge connecting external Ethereum-compatible chains to the core network
|
||||||
|
\item Led the internal benchmarking initiative that changed where the team focused optimization effort
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
{\sl Senior Software Engineer} \hfill Aug 2022 - Feb 2023 \\
|
||||||
|
Centrifuge, Remote \\
|
||||||
|
Protocol team building DeFi infrastructure on Substrate/Polkadot in Rust.
|
||||||
|
\begin{itemize} \itemsep -2pt
|
||||||
|
\item Implemented on-chain fund pool mutations, the core feature enabling live capital allocation adjustments in the lending protocol
|
||||||
|
\item Replaced manual documentation with CI-driven auto-generation from Rust source, eliminating persistent drift between code and public docs
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
{\sl Author, ``Rust Web Development''} \hfill Oct 2020 - Dec 2022 \\
|
||||||
|
Manning Publications \\
|
||||||
|
Wrote and published an end-to-end guide covering async Rust, web frameworks, and production deployment.
|
||||||
|
|
||||||
|
\vspace{4pt}
|
||||||
|
|
||||||
|
{\sl Sr. Solutions Architect (promoted from SA)} \hfill Jun 2020 - Jul 2022 \\
|
||||||
Twilio Inc., Remote \\
|
Twilio Inc., Remote \\
|
||||||
\begin{itemize} \itemsep -2pt
|
\begin{itemize} \itemsep -2pt
|
||||||
\item Technical lead for Fortune 500 engagements: debugged latency issues, redesigned messaging flows, advised on architectures matching client team size and resources
|
\item Technical lead for Fortune 500 professional services engagements: diagnosed latency issues, redesigned messaging architectures, delivered implementation roadmaps sized to each client's team and resources
|
||||||
\item Created reusable engagement playbooks adopted across the EMEA Professional Services team
|
\item Created reusable engagement playbooks adopted across the EMEA Professional Services team
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
{\sl Systems Engineer} \hfill 2019 - 2020 \\
|
{\sl Systems Engineer, Core Backend} \hfill Aug 2019 - May 2020 \\
|
||||||
Kraken Digital Currency Exchange, Remote \\
|
Kraken Digital Asset Exchange, Remote \\
|
||||||
|
Part of the first Rust team rewriting Kraken's core infrastructure from PHP.
|
||||||
\begin{itemize} \itemsep -2pt
|
\begin{itemize} \itemsep -2pt
|
||||||
\item Migrated core banking services and API gateway from PHP to Rust, achieving 100x throughput improvement -- enabling order-of-magnitude traffic growth without scaling hardware
|
\item Rewrote core banking services and API gateway in Rust, replacing legacy PHP services. The new stack handled significantly higher throughput with a smaller hardware footprint
|
||||||
\item Worked directly with the CTO on privacy-focused architectural decisions for the trading platform
|
\item Shipped the first version of the automated KYC verification flow, replacing manual processing right as COVID drove a massive spike in new customer sign-ups
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\vspace{4pt}
|
\vspace{4pt}
|
||||||
|
|
||||||
{\sl Earlier Career} \hfill 2014 - 2019 \\
|
{\sl Earlier Career} \hfill 2013 - 2019 \\
|
||||||
Sr. Software Engineer across enterprise clients (OSRAM, K\"orber Digital, GIATA, Avenga) and startups (Dalia Research, blogfoster, smartB) in Berlin.
|
Sr. Software Engineer (freelance from 2016) across enterprise clients (OSRAM, K\"orber Digital, GIATA, Avenga) and startups (Dalia Research, blogfoster, smartB) in Berlin.
|
||||||
\begin{itemize} \itemsep -2pt
|
\begin{itemize} \itemsep -2pt
|
||||||
\item Founded ``Rust \& Tell Berlin'' meetup -- grew it into the largest Rust meetup globally, still running years later
|
\item Founded ``Rust \& Tell Berlin'' meetup, grew it into the largest Rust meetup globally. Coordinated with companies for venue sponsorship, organized speakers, photographers, and videographers. Gave talks and created a welcoming space for the Rust community
|
||||||
\item Designed IoT authentication infrastructure at OSRAM for thousands of connected devices (Node.js, Go, Lua)
|
\item Designed IoT authentication infrastructure at OSRAM for thousands of connected devices (Node.js, Go, Lua)
|
||||||
\item First engineering hire at K\"orber Digital: built real-time sensor data pipelines on AWS
|
\item First engineering hire at K\"orber Digital: built real-time sensor data pipelines on AWS (Lambda, ECS, Route53)
|
||||||
\item Decomposed GIATA's monolithic ERP into 6 Docker-based microservices, improving system scalability
|
\item Decomposed GIATA's monolithic PHP system into 6 Docker-based services, taught the existing team Scrum and JavaScript
|
||||||
|
\item Contributed to the Rust compiler and standard library during a self-directed sabbatical (2019)
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\section{\centerline{EDUCATION}}
|
{\sl Technical Writer} \hfill 2008 - 2020 \\
|
||||||
|
Freelance (Contract) \\
|
||||||
|
13 years writing for technical publications including c't, iX, Macwelt (IDG/Heise), and tech blogs (LogRocket, stadt-bremerhaven.de, mobilegeeks.de). Also authored ``OS X f\"ur Einsteiger'' (Bookboon, 2012).
|
||||||
|
|
||||||
|
%----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
\vspace{0.2in} % Some whitespace between sections
|
||||||
|
|
||||||
|
\section{\centerline{EDUCATION}}
|
||||||
|
|
||||||
\vspace{8pt} % Gap between title and text
|
\vspace{8pt} % Gap between title and text
|
||||||
|
|
||||||
{\sl Bachelor of Science, Computer Science} \\
|
{\sl Bachelor of Science, Computer Science} \hfill Mar 2014 \\
|
||||||
TH Ingolstadt -- Scholarship from Allianz Deutschland AG (fully funded)
|
TH Ingolstadt. Scholarship from Allianz Deutschland AG (fully funded dual-study program, 2010--2014)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,4 +5,4 @@
|
||||||
\:CrossWord{)Qx1-10000}{1}{1}%
|
\:CrossWord{)Qx1-10000}{1}{1}%
|
||||||
\:CrossWord{)Qx1-20000}{1}{1}%
|
\:CrossWord{)Qx1-20000}{1}{1}%
|
||||||
\:CrossWord{)Qx1-30000}{1}{1}%
|
\:CrossWord{)Qx1-30000}{1}{1}%
|
||||||
\:CrossWord{)Qx1-40000}{1}{3}%
|
\:CrossWord{)Qx1-40000}{1}{4}%
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue