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
|
||||
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|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|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|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|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
|
||||
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|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
|
||||
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|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|</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|linkedin.com/in/bastiangruber|<a href="https://linkedin.com/in/bastiangruber">linkedin.com/in/bastiangruber</a>|g' resume.html
|
||||
perl -0pi -e 's|rustwebdevelopment.com|<a href="https://rustwebdevelopment.com">rustwebdevelopment.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
|
||||
perl -0pi -e 's|github.com/gruberb|<a href="https://github.com/gruberb">github.com/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
|
||||
perl -0pi -e 's|bastiangruber.ca|<a href="https://bastiangruber.ca">bastiangruber.ca</a>|g' resume.html
|
||||
perl -0pi -e 's|Mozilla, Remote|<span class="company">Mozilla</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
|
||||
perl -0pi -e 's|Centrifuge, Remote|<span class="company">Centrifuge</span>, Remote|g' resume.html
|
||||
perl -0pi -e 's|Manning Publications|<span class="company">Manning Publications</span>|g' resume.html
|
||||
perl -0pi -e 's|Twilio Inc\., Remote|<span class="company">Twilio Inc.</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
|
||||
perl -0pi -e 's|TH Ingolstadt|<span class="company">TH Ingolstadt</span>|g' resume.html
|
||||
perl -0pi -e 's|OSRAM|<span class="company">OSRAM</span>|g' resume.html
|
||||
perl -0pi -e 's|GIATA|<span class="company">GIATA</span>|g' resume.html
|
||||
perl -0pi -e 's|Avenga|<span class="company">Avenga</span>|g' resume.html
|
||||
mv resume.html index.html
|
||||
|
||||
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
|
||||
id="x1-10000"></a><div
|
||||
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,
|
||||
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.
|
||||
<!--l. 60--><p class="noindent" >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.
|
||||
</p>
|
||||
</div><h4 class="sectionHead"><a
|
||||
id="x1-20000"></a><div
|
||||
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="newline" /><span
|
||||
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
|
||||
id="x1-30000"></a><div
|
||||
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
|
||||
<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
|
||||
<!--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
|
||||
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
|
||||
<!--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
|
||||
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. 96--><p class="noindent" >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</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
|
||||
<br
|
||||
class="newline" /><span class="company">Mozilla</span>, Remote <br
|
||||
class="newline" /></p>
|
||||
<ul class="itemize1">
|
||||
<li class="itemize">
|
||||
<!--l. 97--><p class="noindent" >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
|
||||
<!--l. 102--><p class="noindent" >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
|
||||
</p></li>
|
||||
<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)
|
||||
</p></li>
|
||||
<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>
|
||||
<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>
|
||||
<!--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
|
||||
<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.
|
||||
</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
|
||||
<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>
|
||||
class="newline" />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. </p>
|
||||
<ul class="itemize1">
|
||||
<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,
|
||||
not network-limited
|
||||
</p></li>
|
||||
<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>
|
||||
<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. 118--><p class="noindent" ><span
|
||||
<!--l. 120--><p class="noindent" >Led the internal benchmarking initiative that changed where the team focused optimization effort</p></li></ul>
|
||||
<!--l. 123--><p class="noindent" ><span
|
||||
class="cmsl-10">Senior Software Engineer </span>Aug 2022 - Feb 2023
|
||||
<br
|
||||
class="newline" /><span class="company">Centrifuge</span>, Remote <br
|
||||
class="newline" />Protocol team building DeFi infrastructure on Substrate/Polkadot in Rust. </p>
|
||||
<ul class="itemize1">
|
||||
<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
|
||||
|
||||
</p></li>
|
||||
<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>
|
||||
<!--l. 126--><p class="noindent" ><span
|
||||
<!--l. 131--><p class="noindent" ><span
|
||||
class="cmsl-10">Author, “Rust Web Development” </span>Oct 2020 - Dec 2022
|
||||
<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.
|
||||
</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
|
||||
<br
|
||||
class="newline" /><span class="company">Twilio Inc.</span>, Remote <br
|
||||
class="newline" /></p>
|
||||
<ul class="itemize1">
|
||||
<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
|
||||
</p></li>
|
||||
<li class="itemize">
|
||||
<!--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. 141--><p class="noindent" >Created reusable engagement playbooks adopted across the EMEA Professional Services team</p></li></ul>
|
||||
<!--l. 144--><p class="noindent" ><span
|
||||
class="cmsl-10">Systems Engineer, Core Backend </span>Aug 2019 - May 2020
|
||||
<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>
|
||||
<ul class="itemize1">
|
||||
<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
|
||||
</p></li>
|
||||
<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>
|
||||
<!--l. 149--><p class="noindent" ><span
|
||||
<!--l. 154--><p class="noindent" ><span
|
||||
class="cmsl-10">Earlier Career </span>2013 - 2019
|
||||
<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
|
||||
startups (Dalia Research, blogfoster, smartB) in Berlin. </p>
|
||||
<ul class="itemize1">
|
||||
<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
|
||||
and created a welcoming space for the Rust community
|
||||
</p></li>
|
||||
<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)
|
||||
</p></li>
|
||||
<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,
|
||||
Route53)
|
||||
<!--l. 159--><p class="noindent" >First engineering hire at Körber Digital: built real-time sensor data pipelines and cloud service
|
||||
deployments on AWS (Lambda, ECS, Route53, Kubernetes)
|
||||
|
||||
</p></li>
|
||||
<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
|
||||
</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
|
||||
<!--l. 161--><p class="noindent" >Contributed to the Rust compiler and standard library during a self-directed sabbatical (2019)</p></li></ul>
|
||||
<!--l. 164--><p class="noindent" ><span
|
||||
class="cmsl-10">Technical Writer </span>2008 - 2020
|
||||
<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
|
||||
id="x1-40000"></a><div
|
||||
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
|
||||
<br
|
||||
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
|
||||
restricted \write18 enabled.
|
||||
%&-line parsing enabled.
|
||||
**\makeatletter\def\HCode{\futurelet\HCode\HChar}\def\HChar{\ifx"\HCode\def\HCo
|
||||
de"##1"{\Link##1}\expandafter\HCode\else\expandafter\Link\fi}\def\Link#1.a.b.c.
|
||||
{\g@addto@macro\@documentclasshook{\RequirePackage[#1,html]{tex4ht}}\let\HCode\
|
||||
documentstyle\def\documentstyle{\let\documentstyle\HCode\expandafter\def\csname
|
||||
tex4ht\endcsname{#1,html}\def\HCode####1{\documentstyle[tex4ht,}\@ifnextchar[{
|
||||
\HCode}{\documentstyle[tex4ht]}}}\makeatother\HCode resume.cfg,html5.a.b.c.\inp
|
||||
ut resume.tex
|
||||
(./resume.tex (./res.cls
|
||||
**resume.tex
|
||||
(./resume.tex
|
||||
LaTeX2e <2025-11-01>
|
||||
L3 programming layer <2026-01-19>
|
||||
(./res.cls
|
||||
Document Style `res' <26 Sep 89>.
|
||||
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
|
||||
(/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)
|
||||
)
|
||||
\c@part=\count275
|
||||
|
|
@ -41,403 +38,86 @@ No auxiliary output files.
|
|||
\resumewidth=\dimen150
|
||||
\@columnwidth=\dimen151
|
||||
\c@numberofcolumns=\count283
|
||||
) (/usr/share/texmf-dist/tex/generic/tex4ht/tex4ht.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
|
||||
) (/usr/local/texlive/2026basic/texmf-dist/tex/latex/psnfss/helvet.sty
|
||||
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)
|
||||
\KV@toks@=\toks23
|
||||
)) (./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
|
||||
\KV@toks@=\toks22
|
||||
))
|
||||
(/usr/share/texmf-dist/tex/generic/tex4ht/fontmath.4ht
|
||||
version 2022-10-25-13:59
|
||||
|
||||
(/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/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
|
||||
(/usr/local/texlive/2026basic/texmf-dist/tex/latex/l3backend/l3backend-pdftex.d
|
||||
ef
|
||||
File: l3backend-pdftex.def 2025-10-09 L3 backend support: PDF output (pdfTeX)
|
||||
\l__color_backend_stack_int=\count284
|
||||
)
|
||||
|
||||
LaTeX Warning: Unused global option(s):
|
||||
[10pt].
|
||||
|
||||
No file resume.aux.
|
||||
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 2.
|
||||
LaTeX Font Info: ... okay on input line 2.
|
||||
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 2.
|
||||
LaTeX Font Info: ... okay on input line 2.
|
||||
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 2.
|
||||
LaTeX Font Info: ... okay on input line 2.
|
||||
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 2.
|
||||
LaTeX Font Info: ... okay on input line 2.
|
||||
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 2.
|
||||
LaTeX Font Info: ... okay on input line 2.
|
||||
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 2.
|
||||
LaTeX Font Info: ... okay on input line 2.
|
||||
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 2.
|
||||
LaTeX Font Info: ... okay on input line 2.
|
||||
--- file resume.css ---
|
||||
)
|
||||
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
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
|
||||
(Font) <5> on input line 46.
|
||||
[1
|
||||
(Font) <5> on input line 51.
|
||||
|
||||
] [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>
|
||||
L3 programming layer <2026-01-19>
|
||||
***********
|
||||
)
|
||||
Here is how much of TeX's memory you used:
|
||||
4481 strings out of 469516
|
||||
56217 string characters out of 5470833
|
||||
592327 words of memory out of 5000000
|
||||
33094 multiletter control sequences out of 15000+600000
|
||||
629490 words of font info for 46 fonts, out of 8000000 for 9000
|
||||
14 hyphenation exceptions out of 8191
|
||||
49i,8n,59p,882b,464s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||
599 strings out of 469006
|
||||
10764 string characters out of 5454814
|
||||
444756 words of memory out of 5000000
|
||||
29364 multiletter control sequences out of 15000+600000
|
||||
629322 words of font info for 45 fonts, out of 8000000 for 9000
|
||||
319 hyphenation exceptions out of 8191
|
||||
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**\
|
||||
LinkedIn: linkedin.com/in/bastiangruber\
|
||||
Project: rustwebdevelopment.com\
|
||||
E-Mail: gruberbastian@me.com
|
||||
Book: rustwebdevelopment.com\
|
||||
E-Mail: gruberbastian@me.com\
|
||||
Website: bastiangruber.ca
|
||||
- |
|
||||
**Code**\
|
||||
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.
15
resume.tex
15
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
|
||||
\special{papersize=210mm,297mm}
|
||||
\ifx\pdfpagewidth\undefined\else
|
||||
\pdfpagewidth=210mm
|
||||
\pdfpageheight=297mm
|
||||
\fi
|
||||
|
||||
\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
|
||||
|
|
@ -52,7 +57,7 @@
|
|||
\section{\centerline{SUMMARY}}
|
||||
|
||||
\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
|
||||
\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
|
||||
\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}
|
||||
|
||||
{\sl Senior Software Engineer} \hfill Jun 2024 - Jan 2026 \\
|
||||
Mozilla, Remote \\
|
||||
\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 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
|
||||
|
|
@ -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 \\
|
||||
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
|
||||
\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
|
||||
|
|
@ -151,7 +156,7 @@ Sr. Software Engineer (freelance from 2016) across enterprise clients (OSRAM, K\
|
|||
\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 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 Contributed to the Rust compiler and standard library during a self-directed sabbatical (2019)
|
||||
\end{itemize}
|
||||
|
|
|
|||
Loading…
Reference in a new issue