chore: add kubernetes experience
This commit is contained in:
parent
4dcec4e6b0
commit
e6dfd1b932
8 changed files with 257 additions and 460 deletions
34
Makefile
34
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
|
perl -0pi -e '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
|
perl -0pi -e '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
|
perl -0pi -e '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
|
perl -0pi -e '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
|
perl -0pi -e '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
|
perl -0pi -e '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
|
perl -0pi -e '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
|
perl -0pi -e 's|Mozilla, Remote|<span class="company">Mozilla</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
|
perl -0pi -e '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
|
perl -0pi -e '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
|
perl -0pi -e '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
|
perl -0pi -e 's|Twilio Inc\., Remote|<span class="company">Twilio Inc.</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
|
perl -0pi -e '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
|
perl -0pi -e '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
|
perl -0pi -e '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
|
perl -0pi -e '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
|
perl -0pi -e '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
|
||||||
|
|
|
||||||
89
index.html
89
index.html
|
|
@ -54,15 +54,16 @@ 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 Engineer at Mozilla, shipping Rust, C++, and Python to hundreds of millions of Firefox users across Desktop,
|
<!--l. 60--><p class="noindent" >Staff Engineer at Mozilla, shipping Rust, C++, and Python to hundreds of millions of Firefox users
|
||||||
Android, and iOS. Promoted for leading cross-team projects and getting complex, multi-platform features shipped.
|
across Desktop, Android, and iOS. Promoted for leading cross-team projects and getting complex,
|
||||||
12+ years of backend and systems work, published author (“Rust Web Development”), and 13 years of technical
|
multi-platform features shipped. 12+ years of backend and systems work across distributed services,
|
||||||
writing for outlets like c’t and iX.
|
Kubernetes-based infrastructure, and production operations; published Rust author and long-time technical
|
||||||
|
writer.
|
||||||
</p>
|
</p>
|
||||||
</div><h4 class="sectionHead"><a
|
</div><h4 class="sectionHead"><a
|
||||||
id="x1-20000"></a><div
|
id="x1-20000"></a><div
|
||||||
class="centerline"> SKILLS </div></h4><div class="section">
|
class="centerline"> SKILLS </div></h4><div class="section">
|
||||||
<!--l. 68--><p class="noindent" ><span
|
<!--l. 73--><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">Systems & Backend: </span>async Rust (Axum, Actix), Python/FastAPI, Node.js, FFI/UniFFI, gRPC, REST
|
class="cmbx-10">Systems & Backend: </span>async Rust (Axum, Actix), Python/FastAPI, Node.js, FFI/UniFFI, gRPC, REST
|
||||||
|
|
@ -77,141 +78,141 @@ profiling
|
||||||
</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. 85--><p class="noindent" ><span
|
<!--l. 90--><p class="noindent" ><span
|
||||||
class="cmsl-10">Staff Software Engineer </span>Feb 2026 - Present
|
class="cmsl-10">Staff Software Engineer </span>Feb 2026 - Present
|
||||||
<br
|
<br
|
||||||
class="newline" /><span class="company">Mozilla</span>, Remote <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>
|
class="newline" />Promoted for cross-team technical leadership and delivering multi-platform privacy features. </p>
|
||||||
<ul class="itemize1">
|
<ul class="itemize1">
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 89--><p class="noindent" >Leading the Image Service project: replaced 3 fragile, duplicated favicon systems with a single
|
<!--l. 94--><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
|
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
|
building a new service, reducing maintenance burden across the board
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 90--><p class="noindent" >Implemented Oblivious HTTP (OHTTP) in application-services (shared Rust component
|
<!--l. 95--><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
|
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
|
live on Firefox iOS, Android, and Desktop, covering millions of users
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 91--><p class="noindent" >Maintaining the Firefox Push notification service (Rust backend, 50k req/s, sub-200ms latency).
|
<!--l. 96--><p class="noindent" >Maintaining the Firefox Push notification service (Rust backend on Kubernetes, 50k req/s, sub-200ms
|
||||||
Reduced memory footprint, added circuit breakers, built Grafana dashboards for observability</p></li></ul>
|
latency). Reduced memory footprint, added circuit breakers, built Grafana dashboards for observability</p></li></ul>
|
||||||
|
|
||||||
<!--l. 94--><p class="noindent" ><span
|
<!--l. 99--><p class="noindent" ><span
|
||||||
class="cmsl-10">Senior Software Engineer </span>Jun 2024 - Jan 2026
|
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. 97--><p class="noindent" >Core maintainer of Merino, the Python/FastAPI service powering Firefox Suggest. All search
|
<!--l. 102--><p class="noindent" >Core maintainer of Merino, the Kubernetes-deployed Python/FastAPI service powering Firefox
|
||||||
suggestions in Firefox route through Merino, which enriches and serves them in a privacy-preserving
|
Suggest. All search suggestions in Firefox route through Merino, which enriches and serves them in a
|
||||||
way
|
privacy-preserving way
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 98--><p class="noindent" >Code reviewer for UniFFI, Mozilla’s multi-language bindings generator (Rust to Kotlin, Swift, Python,
|
<!--l. 103--><p class="noindent" >Code reviewer for UniFFI, Mozilla’s multi-language bindings generator (Rust to Kotlin, Swift, Python,
|
||||||
JavaScript)
|
JavaScript)
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 99--><p class="noindent" >Contributing directly to Firefox Desktop (mozilla-central): shipping Rust and C++ code
|
<!--l. 104--><p class="noindent" >Contributing directly to Firefox Desktop (mozilla-central): shipping Rust and C++ code
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 100--><p class="noindent" >Led “Rusty Fridays” sessions (6–10 engineers per session), building internal Rust knowledge across
|
<!--l. 105--><p class="noindent" >Led “Rusty Fridays” sessions (6–10 engineers per session), building internal Rust knowledge across
|
||||||
teams</p></li></ul>
|
teams</p></li></ul>
|
||||||
<!--l. 103--><p class="noindent" ><span
|
<!--l. 108--><p class="noindent" ><span
|
||||||
class="cmsl-10">Technical Editor, “From C to Rust” </span>Feb 2026 - Present
|
class="cmsl-10">Technical Editor, “From C to Rust” </span>Feb 2026 - Present
|
||||||
<br
|
<br
|
||||||
class="newline" /><span class="company">Manning Publications</span> (Contract, Part-time) <br
|
class="newline" /><span class="company">Manning Publications</span> (Contract, Part-time) <br
|
||||||
class="newline" />Reviewing technical accuracy and pedagogical quality for Manning’s C-to-Rust migration guide.
|
class="newline" />Reviewing technical accuracy and pedagogical quality for Manning’s C-to-Rust migration guide.
|
||||||
</p><!--l. 109--><p class="noindent" ><span
|
</p><!--l. 114--><p class="noindent" ><span
|
||||||
class="cmsl-10">Senior Systems Engineer, Team Lead </span>Apr 2023 - Jun 2024
|
class="cmsl-10">Senior Systems Engineer, Team Lead </span>Apr 2023 - Jun 2024
|
||||||
<br
|
<br
|
||||||
class="newline" /><span class="company">Toposware</span> (acquired by <span class="company">Polygon Labs</span>), Remote <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
|
class="newline" />Core team of 4 building a peer-to-peer distributed network protocol from scratch in Rust, with Kubernetes-based
|
||||||
of the double echo protocol and the Ethereum bridge became part of the Polygon stack after acquisition.
|
deployment and benchmarking environments. Our core implementation of the double echo protocol and the
|
||||||
</p>
|
Ethereum bridge became part of the Polygon stack after acquisition. </p>
|
||||||
<ul class="itemize1">
|
<ul class="itemize1">
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 113--><p class="noindent" >Achieved 10x message throughput per node by profiling the actual bottleneck: optimized batch
|
<!--l. 118--><p class="noindent" >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,
|
processing and serialization paths after discovering nodes were compute-bound on crypto operations,
|
||||||
not network-limited
|
not network-limited
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 114--><p class="noindent" >Built the EVM bridge connecting external Ethereum-compatible chains to the core network
|
<!--l. 119--><p class="noindent" >Built the EVM bridge connecting external Ethereum-compatible chains to the core network
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 115--><p class="noindent" >Led the internal benchmarking initiative that changed where the team focused optimization effort</p></li></ul>
|
<!--l. 120--><p class="noindent" >Led the internal benchmarking initiative that changed where the team focused optimization effort</p></li></ul>
|
||||||
<!--l. 118--><p class="noindent" ><span
|
<!--l. 123--><p class="noindent" ><span
|
||||||
class="cmsl-10">Senior Software Engineer </span>Aug 2022 - Feb 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 infrastructure 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. 122--><p class="noindent" >Implemented on-chain fund pool mutations, the core feature enabling live capital allocation adjustments
|
<!--l. 127--><p class="noindent" >Implemented on-chain fund pool mutations, the core feature enabling live capital allocation adjustments
|
||||||
in the lending protocol
|
in the lending protocol
|
||||||
|
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 123--><p class="noindent" >Replaced manual documentation with CI-driven auto-generation from Rust source, eliminating
|
<!--l. 128--><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. 126--><p class="noindent" ><span
|
<!--l. 131--><p class="noindent" ><span
|
||||||
class="cmsl-10">Author, “Rust Web Development” </span>Oct 2020 - Dec 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" />Wrote and published an 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. 132--><p class="noindent" ><span
|
</p><!--l. 137--><p class="noindent" ><span
|
||||||
class="cmsl-10">Sr. Solutions Architect (promoted from SA) </span>Jun 2020 - Jul 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. 135--><p class="noindent" >Technical lead for Fortune 500 professional services engagements: diagnosed latency issues, redesigned
|
<!--l. 140--><p class="noindent" >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
|
messaging architectures, delivered implementation roadmaps sized to each client’s team and resources
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 136--><p class="noindent" >Created reusable engagement playbooks adopted across the EMEA Professional Services team</p></li></ul>
|
<!--l. 141--><p class="noindent" >Created reusable engagement playbooks adopted across the EMEA Professional Services team</p></li></ul>
|
||||||
<!--l. 139--><p class="noindent" ><span
|
<!--l. 144--><p class="noindent" ><span
|
||||||
class="cmsl-10">Systems Engineer, Core Backend </span>Aug 2019 - May 2020
|
class="cmsl-10">Systems Engineer, Core Backend </span>Aug 2019 - May 2020
|
||||||
<br
|
<br
|
||||||
class="newline" /><span class="company">Kraken Digital Asset Exchange</span>, Remote <br
|
class="newline" /><span class="company">Kraken Digital Asset Exchange</span>, Remote <br
|
||||||
class="newline" />Part of the first Rust team rewriting Kraken’s core infrastructure from PHP. </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. 143--><p class="noindent" >Rewrote core banking services and API gateway in Rust, replacing legacy PHP services. The new stack
|
<!--l. 148--><p class="noindent" >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
|
handled significantly higher throughput with a smaller hardware footprint
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 144--><p class="noindent" >Shipped the first version of the automated KYC verification flow, replacing manual processing right as
|
<!--l. 149--><p class="noindent" >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</p></li></ul>
|
COVID drove a massive spike in new customer sign-ups</p></li></ul>
|
||||||
<!--l. 149--><p class="noindent" ><span
|
<!--l. 154--><p class="noindent" ><span
|
||||||
class="cmsl-10">Earlier Career </span>2013 - 2019
|
class="cmsl-10">Earlier Career </span>2013 - 2019
|
||||||
<br
|
<br
|
||||||
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
|
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
|
||||||
startups (Dalia 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. 152--><p class="noindent" >Founded “Rust & Tell Berlin” meetup, grew it into the largest Rust meetup globally. Coordinated with
|
<!--l. 157--><p class="noindent" >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
|
companies for venue sponsorship, organized speakers, photographers, and videographers. Gave talks
|
||||||
and created a welcoming space for the Rust community
|
and created a welcoming space for the Rust community
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 153--><p class="noindent" >Designed IoT authentication infrastructure at <span class="company">OSRAM</span> for thousands of connected devices (Node.js,
|
<!--l. 158--><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. 154--><p class="noindent" >First engineering hire at Körber Digital: built real-time sensor data pipelines on AWS (Lambda, ECS,
|
<!--l. 159--><p class="noindent" >First engineering hire at Körber Digital: built real-time sensor data pipelines and cloud service
|
||||||
Route53)
|
deployments on AWS (Lambda, ECS, Route53, Kubernetes)
|
||||||
|
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<li class="itemize">
|
||||||
<!--l. 155--><p class="noindent" >Decomposed <span class="company">GIATA</span>’s monolithic PHP system into 6 Docker-based services, taught the existing team
|
<!--l. 160--><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
|
Scrum and JavaScript
|
||||||
</p></li>
|
</p></li>
|
||||||
<li class="itemize">
|
<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. 161--><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
|
<!--l. 164--><p class="noindent" ><span
|
||||||
class="cmsl-10">Technical Writer </span>2008 - 2020
|
class="cmsl-10">Technical Writer </span>2008 - 2020
|
||||||
<br
|
<br
|
||||||
class="newline" />Freelance (Contract) <br
|
class="newline" />Freelance (Contract) <br
|
||||||
|
|
@ -222,7 +223,7 @@ class="newline" />13 years writing for technical publications including c’
|
||||||
</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. 171--><p class="noindent" ><span
|
<!--l. 176--><p class="noindent" ><span
|
||||||
class="cmsl-10">Bachelor of Science, Computer Science </span>Mar 2014
|
class="cmsl-10">Bachelor of Science, Computer Science </span>Mar 2014
|
||||||
<br
|
<br
|
||||||
class="newline" /><span class="company">TH Ingolstadt</span>. Scholarship from Allianz Deutschland AG (fully funded dual-study program, 2010–2014)
|
class="newline" /><span class="company">TH Ingolstadt</span>. Scholarship from Allianz Deutschland AG (fully funded dual-study program, 2010–2014)
|
||||||
|
|
|
||||||
BIN
resume.dvi
BIN
resume.dvi
Binary file not shown.
BIN
resume.idv
BIN
resume.idv
Binary file not shown.
462
resume.log
462
resume.log
|
|
@ -1,20 +1,17 @@
|
||||||
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
|
This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026) (preloaded format=pdflatex 2026.3.1) 24 APR 2026 14:21
|
||||||
entering extended mode
|
entering extended mode
|
||||||
restricted \write18 enabled.
|
restricted \write18 enabled.
|
||||||
%&-line parsing enabled.
|
%&-line parsing enabled.
|
||||||
**\makeatletter\def\HCode{\futurelet\HCode\HChar}\def\HChar{\ifx"\HCode\def\HCo
|
**resume.tex
|
||||||
de"##1"{\Link##1}\expandafter\HCode\else\expandafter\Link\fi}\def\Link#1.a.b.c.
|
(./resume.tex
|
||||||
{\g@addto@macro\@documentclasshook{\RequirePackage[#1,html]{tex4ht}}\let\HCode\
|
LaTeX2e <2025-11-01>
|
||||||
documentstyle\def\documentstyle{\let\documentstyle\HCode\expandafter\def\csname
|
L3 programming layer <2026-01-19>
|
||||||
tex4ht\endcsname{#1,html}\def\HCode####1{\documentstyle[tex4ht,}\@ifnextchar[{
|
(./res.cls
|
||||||
\HCode}{\documentstyle[tex4ht]}}}\makeatother\HCode resume.cfg,html5.a.b.c.\inp
|
|
||||||
ut resume.tex
|
|
||||||
(./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/share/texmf-dist/tex/latex/base/article.cls
|
(/usr/local/texlive/2026basic/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/share/texmf-dist/tex/latex/base/size10.clo
|
(/usr/local/texlive/2026basic/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,403 +38,86 @@ No auxiliary output files.
|
||||||
\resumewidth=\dimen150
|
\resumewidth=\dimen150
|
||||||
\@columnwidth=\dimen151
|
\@columnwidth=\dimen151
|
||||||
\c@numberofcolumns=\count283
|
\c@numberofcolumns=\count283
|
||||||
) (/usr/share/texmf-dist/tex/generic/tex4ht/tex4ht.sty
|
) (/usr/local/texlive/2026basic/texmf-dist/tex/latex/psnfss/helvet.sty
|
||||||
version 2025-12-14-13:41
|
|
||||||
Package: tex4ht
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for _ at preamble, use the command line option `early_'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for ^ at preamble, use the command line option `early^'
|
|
||||||
--------------------------------------
|
|
||||||
\tmp:toks=\toks22
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/usepackage.4ht
|
|
||||||
version 2025-08-27-10:30
|
|
||||||
)
|
|
||||||
(/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/share/texmf-dist/tex/latex/graphics/keyval.sty
|
(/usr/local/texlive/2026basic/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@=\toks22
|
||||||
)) (./resume.cfg
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/tex4ht.4ht
|
|
||||||
version 2025-07-09-13:35
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for additional information, use the command line option `info'
|
|
||||||
--------------------------------------
|
|
||||||
|
|
||||||
::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
TeX4ht info is available in the log file
|
|
||||||
::::::::::::::::::::::::::::::::::::::::::
|
|
||||||
) (/usr/share/texmf-dist/tex/generic/tex4ht/tex4ht.sty
|
|
||||||
version 2025-12-14-13:41
|
|
||||||
|
|
||||||
l.882 --- TeX4ht warning --- nonprimitive \everypar ---
|
|
||||||
--- needs --- tex4ht resume ---
|
|
||||||
\tmp:cnt=\count284
|
|
||||||
\openout15 = `resume.tmp'.
|
|
||||||
|
|
||||||
(./resume.tmp)
|
|
||||||
\tmp:dim=\skip52
|
|
||||||
(./resume.xref)
|
|
||||||
\:refout=\write3
|
|
||||||
\openout3 = `resume.xref'.
|
|
||||||
|
|
||||||
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
|
|
||||||
version 2026-01-04-08:10
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- to remove the <?xml version=...?> processing instruction use the c
|
|
||||||
ommand line option `no-VERSION'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- to remove the DOCTYPE declaration use the command line option `no-
|
|
||||||
DOCTYPE'
|
|
||||||
--------------------------------------
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
|
||||||
version 2026-01-04-08:10
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
|
||||||
version 2026-01-29-13:49
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
|
|
||||||
version 2026-01-18-07:06
|
|
||||||
)
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for marking of the base font, use the command line option `fonts+'
|
|
||||||
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for non active _, use the command line option `no_'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for _ of catcode 13, use the command line option `_13'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for non active ^, use the command line option `no^'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for ^ of catcode 13, use the command line option `^13'
|
|
||||||
--------------------------------------
|
|
||||||
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
|
|
||||||
version 2026-01-04-08:10
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for alternative charset, use the command line option `charset=...'
|
|
||||||
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- to ignore CSS font decoration, use the `NoFonts' command line opti
|
|
||||||
on
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for jpg bitmaps of pictures, use the `jpg' command line option. (C
|
|
||||||
haracter bitmaps are controled only by `g' records of tex4ht.env and `-g' switc
|
|
||||||
hes of tex4ht.c)
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for gif bitmaps of pictures, use the `gif' command line option. (C
|
|
||||||
haracter bitmaps are controled only by `g' records of tex4ht.env and `-g' switc
|
|
||||||
hes of tex4ht.c)
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for content and toc in 2 frames, use the command line option `fram
|
|
||||||
es'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for content, toc, and footnotes in 3 frames, use the command line
|
|
||||||
option `frames-fn'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for file extension name xht, use the command line option `xht'
|
|
||||||
--------------------------------------
|
|
||||||
TeX4ht package options: html5,html,xhtml
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- To print a timestamp, use the command line option timestamp
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- to ignore CSS code, use the command line option `-css
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for inline CSS code, use the command line option `css-in'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for pop ups on mouse over, use the command line option `mouseover'
|
|
||||||
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for addressing images in a subdirectory, use the command line opti
|
|
||||||
on `imgdir:.../'
|
|
||||||
--------------------------------------
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
|
||||||
version 2026-01-04-08:10
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
|
||||||
version 2026-01-29-13:49
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
|
|
||||||
version 2026-01-18-07:06
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- To print a timestamp, use the command line option timestamp
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- We use a default CSS style. Use the `nostyle' option if you want t
|
|
||||||
o use custom a CSS design
|
|
||||||
--------------------------------------
|
|
||||||
)
|
|
||||||
\:tokwrite=\toks24
|
|
||||||
\:tokpage=\toks25
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for back links to toc, use the command line option `sections+'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for linear crosslinks of pages, use the command line option `next'
|
|
||||||
|
|
||||||
--------------------------------------
|
|
||||||
\openout15 = `resume.4ct'.
|
|
||||||
|
|
||||||
\:tocout=\write4
|
|
||||||
\openout4 = `resume.4tc'.
|
|
||||||
|
|
||||||
(resume.4tc)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
|
|
||||||
version 2026-01-04-08:10
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
|
||||||
version 2026-01-04-08:10
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
|
||||||
version 2026-01-29-13:49
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
|
|
||||||
version 2026-01-18-07:06
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/latex.4ht
|
|
||||||
version 2025-12-04-13:51
|
|
||||||
LaTeX Info: Redefining \_ on input line 180.
|
|
||||||
LaTeX Info: Redefining \begin on input line 634.
|
|
||||||
LaTeX Info: Redefining \end on input line 682.
|
|
||||||
LaTeX Info: Redefining \, on input line 844.
|
|
||||||
LaTeX Info: Redefining \; on input line 845.
|
|
||||||
LaTeX Info: Redefining \! on input line 846.
|
|
||||||
LaTeX Info: Redefining \: on input line 847.
|
|
||||||
LaTeX Info: Redefining \> on input line 848.
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for links into captions, instead of float heads, use the command l
|
|
||||||
ine option `refcaption'
|
|
||||||
--------------------------------------
|
|
||||||
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
|
|
||||||
version 2026-01-04-08:10
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
|
||||||
version 2026-01-04-08:10
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
|
||||||
version 2026-01-29-13:49
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
|
|
||||||
version 2026-01-18-07:06
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
|
|
||||||
version 2026-01-04-08:10
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- For mini tocs immediately aftter the header use the command line o
|
|
||||||
ption `minitoc<'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- For full TOC on each page compatible with the collapsetoc DOM filt
|
|
||||||
er, use the `fulltoc' command line option.
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for enumerated list elements with valued data, use the command lin
|
|
||||||
e option `enumerate+'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for enumerated list elements li's with value attributes, use the c
|
|
||||||
ommand line option `enumerate-'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for CSS2 code, use the command line option `css2'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for pictorial tabular, use the command line option `pic-tabular'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for bitmap fbox'es, use the command line option `pic-fbox'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for minipage with width, use the command line option `minipage-wid
|
|
||||||
th'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for bitmap framebox'es, use the command line option `pic-framebox'
|
|
||||||
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for inline footnotes use command line option `fn-in'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for tracing of latex font commands, use the command line option `f
|
|
||||||
onts'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for width specifications of tabular p entries, use the `p-width' c
|
|
||||||
ommand line option or a configuration similar to \Configure{HColWidth}{\HCode{
|
|
||||||
style="width:\HColWidth"}}
|
|
||||||
--------------------------------------
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
|
||||||
version 2026-01-04-08:10
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
|
||||||
version 2026-01-29-13:49
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for pictorial eqnarray, use the command line option `pic-eqnarray'
|
|
||||||
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for pictorial array, use the command line option `pic-array'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for pictorial $...$ environments, use the command line option `pic
|
|
||||||
-m' (not recommended!!)
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for pictorial $...$ and $$...$$ environments with latex alt, use t
|
|
||||||
he command line option `pic-m+' (not safe!!)
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for pictorial array, use the command line option `pic-array'
|
|
||||||
--------------------------------------
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
|
|
||||||
version 2026-01-18-07:06
|
|
||||||
))
|
))
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/fontmath.4ht
|
(/usr/local/texlive/2026basic/texmf-dist/tex/latex/l3backend/l3backend-pdftex.d
|
||||||
version 2022-10-25-13:59
|
ef
|
||||||
|
File: l3backend-pdftex.def 2025-10-09 L3 backend support: PDF output (pdfTeX)
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
|
\l__color_backend_stack_int=\count284
|
||||||
version 2026-01-04-08:10
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
|
||||||
version 2026-01-04-08:10
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
|
||||||
version 2026-01-29-13:49
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
|
|
||||||
version 2026-01-18-07:06
|
|
||||||
))
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/res.4ht
|
|
||||||
version 2009-05-21-09:32
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/article.4ht
|
|
||||||
version 2023-04-10-13:46
|
|
||||||
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
|
|
||||||
version 2026-01-04-08:10
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for automatic sectioning pagination, use the command line option `
|
|
||||||
1', `2', `3', '4', '5', '6', or '7'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for files named derived from section titles, use the command line
|
|
||||||
option `sec-filename'
|
|
||||||
--------------------------------------
|
|
||||||
--------------------------------------
|
|
||||||
--- Note --- for i-columns index, use the command line option `index=i' (e.g.,
|
|
||||||
index=2)
|
|
||||||
--------------------------------------
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
|
||||||
version 2026-01-04-08:10
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
|
||||||
version 2026-01-29-13:49
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
|
|
||||||
version 2026-01-18-07:06
|
|
||||||
))
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/res-a.4ht
|
|
||||||
version 2009-05-21-09:32
|
|
||||||
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
|
|
||||||
version 2026-01-04-08:10
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
|
||||||
version 2026-01-04-08:10
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
|
||||||
version 2026-01-29-13:49
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
|
|
||||||
version 2026-01-18-07:06
|
|
||||||
))
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
|
|
||||||
version 2026-01-04-08:10
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
|
|
||||||
version 2026-01-04-08:10
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
|
|
||||||
version 2026-01-29-13:49
|
|
||||||
)
|
|
||||||
(/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
|
|
||||||
version 2026-01-18-07:06
|
|
||||||
))
|
|
||||||
(/usr/share/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
|
|
||||||
File: l3backend-dvips.def 2025-10-09 L3 backend support: dvips
|
|
||||||
\l__pdfannot_backend_content_box=\box53
|
|
||||||
\l__pdfannot_backend_model_box=\box54
|
|
||||||
\g__pdfannot_backend_int=\count285
|
|
||||||
\g__pdfannot_backend_link_int=\count286
|
|
||||||
\g__pdfannot_backend_link_sf_int=\count287
|
|
||||||
)
|
)
|
||||||
|
|
||||||
LaTeX Warning: Unused global option(s):
|
LaTeX Warning: Unused global option(s):
|
||||||
[10pt].
|
[10pt].
|
||||||
|
|
||||||
No file resume.aux.
|
No file resume.aux.
|
||||||
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 2.
|
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 35.
|
||||||
LaTeX Font Info: ... okay on input line 2.
|
LaTeX Font Info: ... okay on input line 35.
|
||||||
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 2.
|
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 35.
|
||||||
LaTeX Font Info: ... okay on input line 2.
|
LaTeX Font Info: ... okay on input line 35.
|
||||||
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 2.
|
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 35.
|
||||||
LaTeX Font Info: ... okay on input line 2.
|
LaTeX Font Info: ... okay on input line 35.
|
||||||
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 2.
|
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 35.
|
||||||
LaTeX Font Info: ... okay on input line 2.
|
LaTeX Font Info: ... okay on input line 35.
|
||||||
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 2.
|
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 35.
|
||||||
LaTeX Font Info: ... okay on input line 2.
|
LaTeX Font Info: ... okay on input line 35.
|
||||||
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 2.
|
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 35.
|
||||||
LaTeX Font Info: ... okay on input line 2.
|
LaTeX Font Info: ... okay on input line 35.
|
||||||
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 2.
|
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 35.
|
||||||
LaTeX Font Info: ... okay on input line 2.
|
LaTeX Font Info: ... okay on input line 35.
|
||||||
--- file resume.css ---
|
|
||||||
)
|
|
||||||
LaTeX Font Info: External font `cmex10' loaded for size
|
LaTeX Font Info: External font `cmex10' loaded for size
|
||||||
(Font) <7> on input line 46.
|
(Font) <7> on input line 51.
|
||||||
LaTeX Font Info: External font `cmex10' loaded for size
|
LaTeX Font Info: External font `cmex10' loaded for size
|
||||||
(Font) <5> on input line 46.
|
(Font) <5> on input line 51.
|
||||||
[1
|
|
||||||
|
|
||||||
] [2] [3] [4]
|
Overfull \hbox (3.9103pt too wide) in paragraph at lines 95--96
|
||||||
|
[]\OT1/cmr/m/n/10 Implemented Obliv-i-ous HTTP (OHTTP) in application-services
|
||||||
|
(shared Rust com-po-nent cross-compiled
|
||||||
|
[]
|
||||||
|
|
||||||
|
|
||||||
|
Underfull \hbox (badness 10000) in paragraph at lines 99--101
|
||||||
|
|
||||||
|
[]
|
||||||
|
|
||||||
|
[1
|
||||||
|
|
||||||
|
|
||||||
|
Non-PDF special ignored!
|
||||||
|
<special> papersize=210mm,297mm
|
||||||
|
{/usr/local/texlive/2026basic/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
|
||||||
|
Underfull \hbox (badness 10000) in paragraph at lines 137--139
|
||||||
|
|
||||||
|
[]
|
||||||
|
|
||||||
|
[2] [3]
|
||||||
***********
|
***********
|
||||||
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 469516
|
599 strings out of 469006
|
||||||
56217 string characters out of 5470833
|
10764 string characters out of 5454814
|
||||||
592327 words of memory out of 5000000
|
444756 words of memory out of 5000000
|
||||||
33094 multiletter control sequences out of 15000+600000
|
29364 multiletter control sequences out of 15000+600000
|
||||||
629490 words of font info for 46 fonts, out of 8000000 for 9000
|
629322 words of font info for 45 fonts, out of 8000000 for 9000
|
||||||
14 hyphenation exceptions out of 8191
|
319 hyphenation exceptions out of 8191
|
||||||
49i,8n,59p,882b,464s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
49i,8n,52p,440b,204s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||||
|
</Users/bastian/Library/texlive/2026basic/texmf-var/fonts/pk/ljfour/jknappen
|
||||||
|
/ec/tcrm1000.600pk></usr/local/texlive/2026basic/texmf-dist/fonts/type1/public/
|
||||||
|
amsfonts/cm/cmbx10.pfb></usr/local/texlive/2026basic/texmf-dist/fonts/type1/pub
|
||||||
|
lic/amsfonts/cm/cmbx12.pfb></usr/local/texlive/2026basic/texmf-dist/fonts/type1
|
||||||
|
/public/amsfonts/cm/cmr10.pfb></usr/local/texlive/2026basic/texmf-dist/fonts/ty
|
||||||
|
pe1/public/amsfonts/cm/cmsl10.pfb>
|
||||||
|
Output written on resume.pdf (3 pages, 77251 bytes).
|
||||||
|
PDF statistics:
|
||||||
|
39 PDF objects out of 1000 (max. 8388607)
|
||||||
|
24 compressed objects within 1 object stream
|
||||||
|
0 named destinations out of 1000 (max. 500000)
|
||||||
|
1 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||||
|
|
||||||
Output written on resume.dvi (4 pages, 29120 bytes).
|
|
||||||
|
|
|
||||||
115
resume.md
115
resume.md
|
|
@ -3,10 +3,121 @@ address:
|
||||||
- |
|
- |
|
||||||
**Professional**\
|
**Professional**\
|
||||||
LinkedIn: linkedin.com/in/bastiangruber\
|
LinkedIn: linkedin.com/in/bastiangruber\
|
||||||
Project: rustwebdevelopment.com\
|
Book: rustwebdevelopment.com\
|
||||||
E-Mail: gruberbastian@me.com
|
E-Mail: gruberbastian@me.com\
|
||||||
|
Website: bastiangruber.ca
|
||||||
- |
|
- |
|
||||||
**Code**\
|
**Code**\
|
||||||
GitHub: github.com/gruberb\
|
GitHub: github.com/gruberb\
|
||||||
|
Git: code.novanexus.ca/gruberb
|
||||||
---
|
---
|
||||||
|
|
||||||
|
# Bastian Gruber
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
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 across distributed services, Kubernetes-based infrastructure, and production operations; published Rust author and long-time technical writer.
|
||||||
|
|
||||||
|
## Skills
|
||||||
|
|
||||||
|
**Languages:** Rust, C++, Python, TypeScript, Go
|
||||||
|
|
||||||
|
**Systems & Backend:** async Rust (Axum, Actix), Python/FastAPI, Node.js, FFI/UniFFI, gRPC, REST
|
||||||
|
|
||||||
|
**Architecture:** distributed systems, P2P protocols, system design, cross-platform (Desktop/Android/iOS)
|
||||||
|
|
||||||
|
**Infrastructure & Observability:** AWS, GCP, Docker, Kubernetes, CI/CD, Grafana, performance profiling
|
||||||
|
|
||||||
|
## Professional Experience
|
||||||
|
|
||||||
|
### Staff Software Engineer, Mozilla
|
||||||
|
|
||||||
|
Feb 2026 - Present, Remote
|
||||||
|
|
||||||
|
Promoted for cross-team technical leadership and delivering multi-platform privacy features.
|
||||||
|
|
||||||
|
- 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
|
||||||
|
- 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
|
||||||
|
- Maintaining the Firefox Push notification service (Rust backend on Kubernetes, 50k req/s, sub-200ms latency). Reduced memory footprint, added circuit breakers, built Grafana dashboards for observability
|
||||||
|
|
||||||
|
### Senior Software Engineer, Mozilla
|
||||||
|
|
||||||
|
Jun 2024 - Jan 2026, Remote
|
||||||
|
|
||||||
|
- Core maintainer of Merino, the Kubernetes-deployed Python/FastAPI service powering Firefox Suggest. All search suggestions in Firefox route through Merino, which enriches and serves them in a privacy-preserving way
|
||||||
|
- Code reviewer for UniFFI, Mozilla's multi-language bindings generator (Rust to Kotlin, Swift, Python, JavaScript)
|
||||||
|
- Contributing directly to Firefox Desktop (mozilla-central): shipping Rust and C++ code
|
||||||
|
- Led "Rusty Fridays" sessions (6-10 engineers per session), building internal Rust knowledge across teams
|
||||||
|
|
||||||
|
### Technical Editor, "From C to Rust", Manning Publications
|
||||||
|
|
||||||
|
Feb 2026 - Present, Contract, Part-time
|
||||||
|
|
||||||
|
Reviewing technical accuracy and pedagogical quality for Manning's C-to-Rust migration guide.
|
||||||
|
|
||||||
|
### Senior Systems Engineer, Team Lead, Toposware
|
||||||
|
|
||||||
|
Apr 2023 - Jun 2024, Remote
|
||||||
|
|
||||||
|
Core team of 4 building a peer-to-peer distributed network protocol from scratch in Rust, with Kubernetes-based deployment and benchmarking environments. Our core implementation of the double echo protocol and the Ethereum bridge became part of the Polygon stack after acquisition.
|
||||||
|
|
||||||
|
- 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
|
||||||
|
- Built the EVM bridge connecting external Ethereum-compatible chains to the core network
|
||||||
|
- Led the internal benchmarking initiative that changed where the team focused optimization effort
|
||||||
|
|
||||||
|
### Senior Software Engineer, Centrifuge
|
||||||
|
|
||||||
|
Aug 2022 - Feb 2023, Remote
|
||||||
|
|
||||||
|
Protocol team building DeFi infrastructure on Substrate/Polkadot in Rust.
|
||||||
|
|
||||||
|
- Implemented on-chain fund pool mutations, the core feature enabling live capital allocation adjustments in the lending protocol
|
||||||
|
- Replaced manual documentation with CI-driven auto-generation from Rust source, eliminating persistent drift between code and public docs
|
||||||
|
|
||||||
|
### Author, "Rust Web Development", Manning Publications
|
||||||
|
|
||||||
|
Oct 2020 - Dec 2022
|
||||||
|
|
||||||
|
Wrote and published an end-to-end guide covering async Rust, web frameworks, and production deployment.
|
||||||
|
|
||||||
|
### Sr. Solutions Architect, Twilio Inc.
|
||||||
|
|
||||||
|
Jun 2020 - Jul 2022, Remote
|
||||||
|
|
||||||
|
- 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
|
||||||
|
- Created reusable engagement playbooks adopted across the EMEA Professional Services team
|
||||||
|
|
||||||
|
### Systems Engineer, Core Backend, Kraken Digital Asset Exchange
|
||||||
|
|
||||||
|
Aug 2019 - May 2020, Remote
|
||||||
|
|
||||||
|
Part of the first Rust team rewriting Kraken's core infrastructure from PHP.
|
||||||
|
|
||||||
|
- 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
|
||||||
|
- 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
|
||||||
|
|
||||||
|
### Earlier Career
|
||||||
|
|
||||||
|
2013 - 2019
|
||||||
|
|
||||||
|
Sr. Software Engineer (freelance from 2016) across enterprise clients (OSRAM, Koerber Digital, GIATA, Avenga) and startups (Dalia Research, blogfoster, smartB) in Berlin.
|
||||||
|
|
||||||
|
- 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
|
||||||
|
- Designed IoT authentication infrastructure at OSRAM for thousands of connected devices (Node.js, Go, Lua)
|
||||||
|
- First engineering hire at Koerber Digital: built real-time sensor data pipelines and cloud service deployments on AWS (Lambda, ECS, Route53, Kubernetes)
|
||||||
|
- Decomposed GIATA's monolithic PHP system into 6 Docker-based services, taught the existing team Scrum and JavaScript
|
||||||
|
- Contributed to the Rust compiler and standard library during a self-directed sabbatical (2019)
|
||||||
|
|
||||||
|
### Technical Writer, Freelance
|
||||||
|
|
||||||
|
2008 - 2020, 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 fuer Einsteiger" (Bookboon, 2012).
|
||||||
|
|
||||||
|
## Education
|
||||||
|
|
||||||
|
### Bachelor of Science, Computer Science
|
||||||
|
|
||||||
|
Mar 2014, TH Ingolstadt
|
||||||
|
|
||||||
|
Scholarship from Allianz Deutschland AG (fully funded dual-study program, 2010-2014).
|
||||||
|
|
|
||||||
BIN
resume.pdf
BIN
resume.pdf
Binary file not shown.
17
resume.tex
17
resume.tex
|
|
@ -21,6 +21,11 @@
|
||||||
%----------------------------------------------------------------------------------------
|
%----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
\documentclass[10pt]{res} % Use the res.cls style, the font size can be changed to 11pt or 12pt here
|
\documentclass[10pt]{res} % Use the res.cls style, the font size can be changed to 11pt or 12pt here
|
||||||
|
\special{papersize=210mm,297mm}
|
||||||
|
\ifx\pdfpagewidth\undefined\else
|
||||||
|
\pdfpagewidth=210mm
|
||||||
|
\pdfpageheight=297mm
|
||||||
|
\fi
|
||||||
|
|
||||||
\usepackage{helvet} % Default font is the helvetica postscript font
|
\usepackage{helvet} % Default font is the helvetica postscript font
|
||||||
%\usepackage{newcent} % To change the default font to the new century schoolbook postscript font uncomment this line and comment the one above
|
%\usepackage{newcent} % To change the default font to the new century schoolbook postscript font uncomment this line and comment the one above
|
||||||
|
|
@ -52,7 +57,7 @@
|
||||||
\section{\centerline{SUMMARY}}
|
\section{\centerline{SUMMARY}}
|
||||||
|
|
||||||
\vspace{8pt} % Gap between title and text
|
\vspace{8pt} % Gap between title and text
|
||||||
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.
|
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 across distributed services, Kubernetes-based infrastructure, and production operations; published Rust author and long-time technical writer.
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
%----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -88,13 +93,13 @@ Promoted for cross-team technical leadership and delivering multi-platform priva
|
||||||
\begin{itemize} \itemsep -2pt
|
\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 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 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
|
\item Maintaining the Firefox Push notification service (Rust backend on Kubernetes, 50k req/s, sub-200ms latency). Reduced memory footprint, added circuit breakers, built Grafana dashboards for observability
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
{\sl Senior Software Engineer} \hfill Jun 2024 - Jan 2026 \\
|
{\sl Senior Software Engineer} \hfill Jun 2024 - Jan 2026 \\
|
||||||
Mozilla, Remote \\
|
Mozilla, Remote \\
|
||||||
\begin{itemize} \itemsep -2pt
|
\begin{itemize} \itemsep -2pt
|
||||||
\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 Core maintainer of Merino, the Kubernetes-deployed 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 Code reviewer for UniFFI, Mozilla's multi-language bindings generator (Rust to Kotlin, Swift, Python, JavaScript)
|
\item Code reviewer for UniFFI, Mozilla's multi-language bindings generator (Rust to Kotlin, Swift, Python, JavaScript)
|
||||||
\item Contributing directly to Firefox Desktop (mozilla-central): shipping Rust and C++ code
|
\item Contributing directly to Firefox Desktop (mozilla-central): shipping Rust and C++ code
|
||||||
\item Led ``Rusty Fridays'' sessions (6--10 engineers per session), building internal Rust knowledge across teams
|
\item Led ``Rusty Fridays'' sessions (6--10 engineers per session), building internal Rust knowledge across teams
|
||||||
|
|
@ -108,7 +113,7 @@ Reviewing technical accuracy and pedagogical quality for Manning's C-to-Rust mig
|
||||||
|
|
||||||
{\sl Senior Systems Engineer, Team Lead} \hfill Apr 2023 - Jun 2024 \\
|
{\sl Senior Systems Engineer, Team Lead} \hfill Apr 2023 - Jun 2024 \\
|
||||||
Toposware (acquired by Polygon Labs), Remote \\
|
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.
|
Core team of 4 building a peer-to-peer distributed network protocol from scratch in Rust, with Kubernetes-based deployment and benchmarking environments. Our core implementation of the double echo protocol and the Ethereum bridge became part of the Polygon stack after acquisition.
|
||||||
\begin{itemize} \itemsep -2pt
|
\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 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 Built the EVM bridge connecting external Ethereum-compatible chains to the core network
|
||||||
|
|
@ -151,7 +156,7 @@ Sr. Software Engineer (freelance from 2016) across enterprise clients (OSRAM, K\
|
||||||
\begin{itemize} \itemsep -2pt
|
\begin{itemize} \itemsep -2pt
|
||||||
\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 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 (Lambda, ECS, Route53)
|
\item First engineering hire at K\"orber Digital: built real-time sensor data pipelines and cloud service deployments on AWS (Lambda, ECS, Route53, Kubernetes)
|
||||||
\item Decomposed GIATA's monolithic PHP system into 6 Docker-based services, taught the existing team Scrum and JavaScript
|
\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)
|
\item Contributed to the Rust compiler and standard library during a self-directed sabbatical (2019)
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
@ -174,4 +179,4 @@ TH Ingolstadt. Scholarship from Allianz Deutschland AG (fully funded dual-study
|
||||||
|
|
||||||
|
|
||||||
\end{resume}
|
\end{resume}
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue