chore: update CV

This commit is contained in:
Bastian Gruber 2026-03-17 07:52:00 -03:00
parent 9624514c38
commit 4dcec4e6b0
Signed by: gruberb
GPG key ID: 426AF1CBA0530691
10 changed files with 258 additions and 200 deletions

View file

@ -4,23 +4,23 @@ html: index.html
index.html: resume.tex res.cls resume.cfg style.css index.html: resume.tex res.cls resume.cfg style.css
htlatex resume.tex "resume.cfg,html5" "" "" "" htlatex resume.tex "resume.cfg,html5" "" "" ""
LANG=C LC_ALL=C sed -i '' 's|</head>|<link href="style.css" rel="stylesheet" type="text/css" /></head>|; s|<title></title>|<title>Bastian Gruber - CV</title>|' resume.html LANG=C LC_ALL=C sed -i 's|</head>|<link href="style.css" rel="stylesheet" type="text/css" /></head>|; s|<title></title>|<title>Bastian Gruber - CV</title>|' resume.html
LANG=C LC_ALL=C sed -i '' 's|linkedin.com/in/bastiangruber|<a href="https://linkedin.com/in/bastiangruber">linkedin.com/in/bastiangruber</a>|g' resume.html LANG=C LC_ALL=C sed -i 's|linkedin.com/in/bastiangruber|<a href="https://linkedin.com/in/bastiangruber">linkedin.com/in/bastiangruber</a>|g' resume.html
LANG=C LC_ALL=C sed -i '' 's|rustwebdevelopment.com|<a href="https://rustwebdevelopment.com">rustwebdevelopment.com</a>|g' resume.html LANG=C LC_ALL=C sed -i 's|rustwebdevelopment.com|<a href="https://rustwebdevelopment.com">rustwebdevelopment.com</a>|g' resume.html
LANG=C LC_ALL=C sed -i '' 's|gruberbastian@me.com|<a href="mailto:gruberbastian@me.com">gruberbastian@me.com</a>|g' resume.html LANG=C LC_ALL=C sed -i 's|gruberbastian@me.com|<a href="mailto:gruberbastian@me.com">gruberbastian@me.com</a>|g' resume.html
LANG=C LC_ALL=C sed -i '' 's|github.com/gruberb|<a href="https://github.com/gruberb">github.com/gruberb</a>|g' resume.html LANG=C LC_ALL=C sed -i 's|github.com/gruberb|<a href="https://github.com/gruberb">github.com/gruberb</a>|g' resume.html
LANG=C LC_ALL=C sed -i '' 's|code.novanexus.ca/gruberb|<a href="https://code.novanexus.ca/gruberb">code.novanexus.ca/gruberb</a>|g' resume.html LANG=C LC_ALL=C sed -i 's|code.novanexus.ca/gruberb|<a href="https://code.novanexus.ca/gruberb">code.novanexus.ca/gruberb</a>|g' resume.html
LANG=C LC_ALL=C sed -i '' 's|bastiangruber.ca|<a href="https://bastiangruber.ca">bastiangruber.ca</a>|g' resume.html LANG=C LC_ALL=C sed -i 's|bastiangruber.ca|<a href="https://bastiangruber.ca">bastiangruber.ca</a>|g' resume.html
LANG=C LC_ALL=C sed -i '' 's|Mozilla, Remote|<span class="company">Mozilla</span>, Remote|g' resume.html LANG=C LC_ALL=C sed -i 's|Mozilla, Remote|<span class="company">Mozilla</span>, Remote|g' resume.html
LANG=C LC_ALL=C sed -i '' 's|Toposware, Remote|<span class="company">Toposware</span>, Remote|g' resume.html LANG=C LC_ALL=C sed -i 's|Toposware (acquired by Polygon Labs), Remote|<span class="company">Toposware</span> (acquired by <span class="company">Polygon Labs</span>), Remote|g' resume.html
LANG=C LC_ALL=C sed -i '' 's|Centrifuge, Remote|<span class="company">Centrifuge</span>, Remote|g' resume.html LANG=C LC_ALL=C sed -i 's|Centrifuge, Remote|<span class="company">Centrifuge</span>, Remote|g' resume.html
LANG=C LC_ALL=C sed -i '' 's|Manning Publications|<span class="company">Manning Publications</span>|g' resume.html LANG=C LC_ALL=C sed -i 's|Manning Publications|<span class="company">Manning Publications</span>|g' resume.html
LANG=C LC_ALL=C sed -i '' 's|Twilio Inc., Remote|<span class="company">Twilio Inc.</span>, Remote|g' resume.html LANG=C LC_ALL=C sed -i 's|Twilio Inc., Remote|<span class="company">Twilio Inc.</span>, Remote|g' resume.html
LANG=C LC_ALL=C sed -i '' 's|Kraken Digital Currency Exchange, Remote|<span class="company">Kraken Digital Currency Exchange</span>, Remote|g' resume.html LANG=C LC_ALL=C sed -i 's|Kraken Digital Asset Exchange, Remote|<span class="company">Kraken Digital Asset Exchange</span>, Remote|g' resume.html
LANG=C LC_ALL=C sed -i '' 's|TH Ingolstadt|<span class="company">TH Ingolstadt</span>|g' resume.html LANG=C LC_ALL=C sed -i 's|TH Ingolstadt|<span class="company">TH Ingolstadt</span>|g' resume.html
LANG=C LC_ALL=C sed -i '' 's|OSRAM|<span class="company">OSRAM</span>|g' resume.html LANG=C LC_ALL=C sed -i 's|OSRAM|<span class="company">OSRAM</span>|g' resume.html
LANG=C LC_ALL=C sed -i '' 's|GIATA|<span class="company">GIATA</span>|g' resume.html LANG=C LC_ALL=C sed -i 's|GIATA|<span class="company">GIATA</span>|g' resume.html
LANG=C LC_ALL=C sed -i '' 's|Avenga|<span class="company">Avenga</span>|g' resume.html LANG=C LC_ALL=C sed -i 's|Avenga|<span class="company">Avenga</span>|g' resume.html
mv resume.html index.html mv resume.html index.html
pdf: resume.pdf pdf: resume.pdf
@ -32,7 +32,7 @@ clean:
rm -f index.html resume.aux resume.log resume.dvi resume.html resume.css resume.4ct resume.4tc resume.idv resume.lg resume.tmp resume.xref rm -f index.html resume.aux resume.log resume.dvi resume.html resume.css resume.4ct resume.4tc resume.idv resume.lg resume.tmp resume.xref
deploy: html deploy: html
mkdir -p ~/CodingIsFun/fun/bastiangruber.ca/src/cv mkdir -p ~/CodingIsFun/personal/bastiangruber.ca/src/cv
cp index.html style.css resume.css ~/CodingIsFun/fun/bastiangruber.ca/src/cv/ cp index.html style.css resume.css ~/CodingIsFun/personal/bastiangruber.ca/src/cv/
all: deploy pdf all: deploy pdf

View file

@ -54,9 +54,10 @@ class="td00">Git: <a href="https://code.novanexus.ca/gruberb">code.novanexus.ca/
<h4 class="sectionHead"><a <h4 class="sectionHead"><a
id="x1-10000"></a><div id="x1-10000"></a><div
class="centerline"> SUMMARY </div></h4><div class="section"> class="centerline"> SUMMARY </div></h4><div class="section">
<!--l. 55--><p class="noindent" >Staff Software Engineer at Mozilla, shipping Rust, C++, and Python to hundreds of millions of Firefox users. <!--l. 55--><p class="noindent" >Staff Engineer at Mozilla, shipping Rust, C++, and Python to hundreds of millions of Firefox users across Desktop,
Published author (&#8220;Rust Web Development&#8221; &#8211; Manning). Founder of Rust&amp;Tell Berlin, the largest Rust meetup Android, and iOS. Promoted for leading cross-team projects and getting complex, multi-platform features shipped.
globally. 12+ years of backend and systems work, published author (&#8220;Rust Web Development&#8221;), and 13 years of technical
writing for outlets like c&#8217;t and iX.
</p> </p>
</div><h4 class="sectionHead"><a </div><h4 class="sectionHead"><a
id="x1-20000"></a><div id="x1-20000"></a><div
@ -64,130 +65,167 @@ class="centerline"> SKILLS
<!--l. 68--><p class="noindent" ><span <!--l. 68--><p class="noindent" ><span
class="cmbx-10">Languages: </span>Rust, C++, Python, TypeScript, Go <br class="cmbx-10">Languages: </span>Rust, C++, Python, TypeScript, Go <br
class="newline" /><span class="newline" /><span
class="cmbx-10">Backend &amp; Systems: </span>Rust (Actix, Warp, Axum), Python (FastAPI), Node.js, async Rust, FFI/UniFFI class="cmbx-10">Systems &amp; Backend: </span>async Rust (Axum, Actix), Python/FastAPI, Node.js, FFI/UniFFI, gRPC, REST
<br <br
class="newline" /><span class="newline" /><span
class="cmbx-10">Patterns: </span>REST, GraphQL, gRPC, distributed systems (P2P), microservices <br class="cmbx-10">Architecture: </span>distributed systems, P2P protocols, system design, cross-platform (Desktop/Android/iOS)
<br
class="newline" /><span class="newline" /><span
class="cmbx-10">Infrastructure: </span>AWS, Google Cloud, Docker, Kubernetes, CI/CD, Grafana <br class="cmbx-10">Infrastructure &amp; Observability: </span>AWS, GCP, Docker, Kubernetes, CI/CD, Grafana, performance
class="newline" /><span profiling
class="cmbx-10">AI Tooling: </span>Claude Code, GitHub Copilot
</p> </p>
</div><h4 class="sectionHead"><a </div><h4 class="sectionHead"><a
id="x1-30000"></a><div id="x1-30000"></a><div
class="centerline"> PROFESSIONAL EXPERIENCE </div></h4><div class="section"> class="centerline"> PROFESSIONAL EXPERIENCE </div></h4><div class="section">
<!--l. 86--><p class="noindent" ><span <!--l. 85--><p class="noindent" ><span
class="cmsl-10">Staff Software Engineer (promoted from Senior) </span>July 2024 - Present class="cmsl-10">Staff Software Engineer </span>Feb 2026 - Present
<br
class="newline" /><span class="company">Mozilla</span>, Remote <br
class="newline" />Promoted for cross-team technical leadership and delivering multi-platform privacy features. </p>
<ul class="itemize1">
<li class="itemize">
<!--l. 89--><p class="noindent" >Leading the Image Service project: replaced 3 fragile, duplicated favicon systems with a single
GCS-backed API serving 4+ internal teams. Extended an existing Python/Airflow pipeline instead of
building a new service, reducing maintenance burden across the board
</p></li>
<li class="itemize">
<!--l. 90--><p class="noindent" >Implemented Oblivious HTTP (OHTTP) in application-services (shared Rust component
cross-compiled to Swift/Kotlin via UniFFI) and wrote the C++ integration for Firefox Desktop. Now
live on Firefox iOS, Android, and Desktop, covering millions of users
</p></li>
<li class="itemize">
<!--l. 91--><p class="noindent" >Maintaining the Firefox Push notification service (Rust backend, 50k req/s, sub-200ms latency).
Reduced memory footprint, added circuit breakers, built Grafana dashboards for observability</p></li></ul>
<!--l. 94--><p class="noindent" ><span
class="cmsl-10">Senior Software Engineer </span>Jun 2024 - Jan 2026
<br <br
class="newline" /><span class="company">Mozilla</span>, Remote <br class="newline" /><span class="company">Mozilla</span>, Remote <br
class="newline" /></p> class="newline" /></p>
<ul class="itemize1"> <ul class="itemize1">
<li class="itemize"> <li class="itemize">
<!--l. 89--><p class="noindent" >Implemented Oblivious HTTP (OHTTP) from scratch in application-services (shared Rust component <!--l. 97--><p class="noindent" >Core maintainer of Merino, the Python/FastAPI service powering Firefox Suggest. All search
cross-compiled to Swift/Kotlin via UniFFI) plus C++ and Rust for Firefox Desktop &#8211; users are now suggestions in Firefox route through Merino, which enriches and serves them in a privacy-preserving
unidentifiable when making privacy-sensitive requests across all platforms way
</p></li> </p></li>
<li class="itemize"> <li class="itemize">
<!--l. 90--><p class="noindent" >Consolidated four separate favicon implementations into a single Image Service &#8211; extended an existing <!--l. 98--><p class="noindent" >Code reviewer for UniFFI, Mozilla&#8217;s multi-language bindings generator (Rust to Kotlin, Swift, Python,
Python/Airflow pipeline rather than building a new microservice, now serving 4 teams from one JavaScript)
manifest behind a GCS-backed API
</p></li> </p></li>
<li class="itemize"> <li class="itemize">
<!--l. 91--><p class="noindent" >Maintained Firefox Push notification service (50k req/s, sub-200ms latency): reduced memory footprint, <!--l. 99--><p class="noindent" >Contributing directly to Firefox Desktop (mozilla-central): shipping Rust and C++ code
added circuit breakers, built Grafana dashboards
</p></li> </p></li>
<li class="itemize"> <li class="itemize">
<!--l. 92--><p class="noindent" >Contributor and code reviewer for UniFFI, Mozilla&#8217;s multi-language bindings generator (Rust to Kotlin, <!--l. 100--><p class="noindent" >Led &#8220;Rusty Fridays&#8221; sessions (6&#8211;10 engineers per session), building internal Rust knowledge across
teams</p></li></ul>
Swift, Python, JavaScript) <!--l. 103--><p class="noindent" ><span
</p></li> class="cmsl-10">Technical Editor, &#8220;From C to Rust&#8221; </span>Feb 2026 - Present
<li class="itemize">
<!--l. 93--><p class="noindent" >Led &#8220;Rusty Fridays&#8221; internal education sessions, mentoring engineers across teams through Rust
adoption</p></li></ul>
<!--l. 96--><p class="noindent" ><span
class="cmsl-10">Senior Systems Engineer, Team Lead </span>2023 - 2024
<br <br
class="newline" /><span class="company">Toposware</span>, Remote <br class="newline" /><span class="company">Manning Publications</span> (Contract, Part-time) <br
class="newline" />Core team of 4 building a peer-to-peer distributed network protocol from scratch in Rust. </p> class="newline" />Reviewing technical accuracy and pedagogical quality for Manning&#8217;s C-to-Rust migration guide.
</p><!--l. 109--><p class="noindent" ><span
class="cmsl-10">Senior Systems Engineer, Team Lead </span>Apr 2023 - Jun 2024
<br
class="newline" /><span class="company">Toposware</span> (acquired by <span class="company">Polygon Labs</span>), Remote <br
class="newline" />Core team of 4 building a peer-to-peer distributed network protocol from scratch in Rust. Our core implementation
of the double echo protocol and the Ethereum bridge became part of the Polygon stack after acquisition.
</p>
<ul class="itemize1"> <ul class="itemize1">
<li class="itemize"> <li class="itemize">
<!--l. 100--><p class="noindent" >Achieved 10x throughput per node by profiling the actual bottleneck &#8211; optimized batch processing and <!--l. 113--><p class="noindent" >Achieved 10x message throughput per node by profiling the actual bottleneck: optimized batch
serialization paths rather than redesigning the consensus layer processing and serialization paths after discovering nodes were compute-bound on crypto operations,
not network-limited
</p></li> </p></li>
<li class="itemize"> <li class="itemize">
<!--l. 101--><p class="noindent" >Led benchmark initiative that revealed nodes were compute-bound on crypto operations, not <!--l. 114--><p class="noindent" >Built the EVM bridge connecting external Ethereum-compatible chains to the core network
network-limited &#8211; redirected optimization effort accordingly
</p></li> </p></li>
<li class="itemize"> <li class="itemize">
<!--l. 102--><p class="noindent" >Built an EVM bridge connecting external Ethereum-compatible chains to the core network</p></li></ul> <!--l. 115--><p class="noindent" >Led the internal benchmarking initiative that changed where the team focused optimization effort</p></li></ul>
<!--l. 105--><p class="noindent" ><span <!--l. 118--><p class="noindent" ><span
class="cmsl-10">Senior Software Engineer </span>2022 - 2023 class="cmsl-10">Senior Software Engineer </span>Aug 2022 - Feb 2023
<br <br
class="newline" /><span class="company">Centrifuge</span>, Remote <br class="newline" /><span class="company">Centrifuge</span>, Remote <br
class="newline" />Protocol team building DeFi applications on Substrate/Polkadot in Rust. </p> class="newline" />Protocol team building DeFi infrastructure on Substrate/Polkadot in Rust. </p>
<ul class="itemize1"> <ul class="itemize1">
<li class="itemize"> <li class="itemize">
<!--l. 109--><p class="noindent" >Implemented on-chain fund pool mutations &#8211; core feature for the lending protocol enabling live capital <!--l. 122--><p class="noindent" >Implemented on-chain fund pool mutations, the core feature enabling live capital allocation adjustments
allocation adjustments in the lending protocol
</p></li> </p></li>
<li class="itemize"> <li class="itemize">
<!--l. 110--><p class="noindent" >Replaced manual documentation with CI-driven auto-generation from Rust source &#8211; eliminated <!--l. 123--><p class="noindent" >Replaced manual documentation with CI-driven auto-generation from Rust source, eliminating
persistent drift between code and public docs</p></li></ul> persistent drift between code and public docs</p></li></ul>
<!--l. 113--><p class="noindent" ><span <!--l. 126--><p class="noindent" ><span
class="cmsl-10">Author, &#8220;Rust Web Development&#8221; </span>2020 - 2022 class="cmsl-10">Author, &#8220;Rust Web Development&#8221; </span>Oct 2020 - Dec 2022
<br <br
class="newline" /><span class="company">Manning Publications</span> <br class="newline" /><span class="company">Manning Publications</span> <br
class="newline" />Published end-to-end guide covering async Rust, web frameworks, and production deployment. class="newline" />Wrote and published an end-to-end guide covering async Rust, web frameworks, and production deployment.
</p><!--l. 119--><p class="noindent" ><span </p><!--l. 132--><p class="noindent" ><span
class="cmsl-10">Sr. Solutions Architect (promoted from SA) </span>2020 - 2022 class="cmsl-10">Sr. Solutions Architect (promoted from SA) </span>Jun 2020 - Jul 2022
<br <br
class="newline" /><span class="company">Twilio Inc.</span>, Remote <br class="newline" /><span class="company">Twilio Inc.</span>, Remote <br
class="newline" /></p> class="newline" /></p>
<ul class="itemize1"> <ul class="itemize1">
<li class="itemize"> <li class="itemize">
<!--l. 122--><p class="noindent" >Technical lead for Fortune 500 engagements: debugged latency issues, redesigned messaging flows, <!--l. 135--><p class="noindent" >Technical lead for Fortune 500 professional services engagements: diagnosed latency issues, redesigned
advised on architectures matching client team size and resources messaging architectures, delivered implementation roadmaps sized to each client&#8217;s team and resources
</p></li> </p></li>
<li class="itemize"> <li class="itemize">
<!--l. 123--><p class="noindent" >Created reusable engagement playbooks adopted across the EMEA Professional Services team</p></li></ul> <!--l. 136--><p class="noindent" >Created reusable engagement playbooks adopted across the EMEA Professional Services team</p></li></ul>
<!--l. 139--><p class="noindent" ><span
<!--l. 126--><p class="noindent" ><span class="cmsl-10">Systems Engineer, Core Backend </span>Aug 2019 - May 2020
class="cmsl-10">Systems Engineer </span>2019 - 2020
<br <br
class="newline" /><span class="company">Kraken Digital Currency Exchange</span>, Remote <br class="newline" /><span class="company">Kraken Digital Asset Exchange</span>, Remote <br
class="newline" /></p> class="newline" />Part of the first Rust team rewriting Kraken&#8217;s core infrastructure from PHP. </p>
<ul class="itemize1"> <ul class="itemize1">
<li class="itemize"> <li class="itemize">
<!--l. 129--><p class="noindent" >Migrated core banking services and API gateway from PHP to Rust, achieving 100x throughput <!--l. 143--><p class="noindent" >Rewrote core banking services and API gateway in Rust, replacing legacy PHP services. The new stack
improvement &#8211; enabling order-of-magnitude traffic growth without scaling hardware handled significantly higher throughput with a smaller hardware footprint
</p></li> </p></li>
<li class="itemize"> <li class="itemize">
<!--l. 130--><p class="noindent" >Worked directly with the CTO on privacy-focused architectural decisions for the trading platform</p></li></ul> <!--l. 144--><p class="noindent" >Shipped the first version of the automated KYC verification flow, replacing manual processing right as
<!--l. 135--><p class="noindent" ><span COVID drove a massive spike in new customer sign-ups</p></li></ul>
class="cmsl-10">Earlier Career </span>2014 - 2019 <!--l. 149--><p class="noindent" ><span
class="cmsl-10">Earlier Career </span>2013 - 2019
<br <br
class="newline" />Sr. Software Engineer across enterprise clients (<span class="company">OSRAM</span>, Körber Digital, <span class="company">GIATA</span>, <span class="company">Avenga</span>) and startups (Dalia class="newline" />Sr. Software Engineer (freelance from 2016) across enterprise clients (<span class="company">OSRAM</span>, Körber Digital, <span class="company">GIATA</span>, <span class="company">Avenga</span>) and
Research, blogfoster, smartB) in Berlin. </p> startups (Dalia Research, blogfoster, smartB) in Berlin. </p>
<ul class="itemize1"> <ul class="itemize1">
<li class="itemize"> <li class="itemize">
<!--l. 138--><p class="noindent" >Founded &#8220;Rust &amp; Tell Berlin&#8221; meetup &#8211; grew it into the largest Rust meetup globally, still running <!--l. 152--><p class="noindent" >Founded &#8220;Rust &amp; Tell Berlin&#8221; meetup, grew it into the largest Rust meetup globally. Coordinated with
years later companies for venue sponsorship, organized speakers, photographers, and videographers. Gave talks
and created a welcoming space for the Rust community
</p></li> </p></li>
<li class="itemize"> <li class="itemize">
<!--l. 139--><p class="noindent" >Designed IoT authentication infrastructure at <span class="company">OSRAM</span> for thousands of connected devices (Node.js, <!--l. 153--><p class="noindent" >Designed IoT authentication infrastructure at <span class="company">OSRAM</span> for thousands of connected devices (Node.js,
Go, Lua) Go, Lua)
</p></li> </p></li>
<li class="itemize"> <li class="itemize">
<!--l. 140--><p class="noindent" >First engineering hire at Körber Digital: built real-time sensor data pipelines on AWS <!--l. 154--><p class="noindent" >First engineering hire at Körber Digital: built real-time sensor data pipelines on AWS (Lambda, ECS,
Route53)
</p></li> </p></li>
<li class="itemize"> <li class="itemize">
<!--l. 141--><p class="noindent" >Decomposed <span class="company">GIATA</span>&#8217;s monolithic ERP into 6 Docker-based microservices, improving system scalability</p></li></ul> <!--l. 155--><p class="noindent" >Decomposed <span class="company">GIATA</span>&#8217;s monolithic PHP system into 6 Docker-based services, taught the existing team
Scrum and JavaScript
</p></li>
<li class="itemize">
<!--l. 156--><p class="noindent" >Contributed to the Rust compiler and standard library during a self-directed sabbatical (2019)</p></li></ul>
<!--l. 159--><p class="noindent" ><span
class="cmsl-10">Technical Writer </span>2008 - 2020
<br
class="newline" />Freelance (Contract) <br
class="newline" />13 years writing for technical publications including c&#8217;t, iX, Macwelt (IDG/Heise), and tech blogs
(LogRocket, stadt-bremerhaven.de, mobilegeeks.de). Also authored &#8220;OS X für Einsteiger&#8221; (Bookboon,
2012).
</p>
</div><h4 class="sectionHead"><a </div><h4 class="sectionHead"><a
id="x1-40000"></a><div id="x1-40000"></a><div
class="centerline"> EDUCATION </div></h4><div class="section"> class="centerline"> EDUCATION </div></h4><div class="section">
<!--l. 148--><p class="noindent" ><span <!--l. 171--><p class="noindent" ><span
class="cmsl-10">Bachelor of Science, Computer Science </span><br class="cmsl-10">Bachelor of Science, Computer Science </span>Mar 2014
class="newline" /><span class="company">TH Ingolstadt</span> &#8211; Scholarship from Allianz Deutschland AG (fully funded) <br
class="newline" /><span class="company">TH Ingolstadt</span>. Scholarship from Allianz Deutschland AG (fully funded dual-study program, 2010&#8211;2014)
</p> </p>
</div></div> </div></div>

View file

@ -2,5 +2,5 @@
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-10000}{QQ2-1-1}{\centerline {SUMMARY}}}{1}\relax \doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-10000}{QQ2-1-1}{\centerline {SUMMARY}}}{1}\relax
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-20000}{QQ2-1-2}{\centerline {SKILLS}}}{1}\relax \doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-20000}{QQ2-1-2}{\centerline {SKILLS}}}{1}\relax
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-30000}{QQ2-1-3}{\centerline {PROFESSIONAL EXPERIENCE}}}{1}\relax \doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-30000}{QQ2-1-3}{\centerline {PROFESSIONAL EXPERIENCE}}}{1}\relax
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-40000}{QQ2-1-4}{\centerline {EDUCATION}}}{3}\relax \doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-40000}{QQ2-1-4}{\centerline {EDUCATION}}}{4}\relax
\par \par

View file

@ -2,4 +2,4 @@
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-10000}{QQ2-1-1}{\centerline {SUMMARY}}}{1}\relax \doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-10000}{QQ2-1-1}{\centerline {SUMMARY}}}{1}\relax
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-20000}{QQ2-1-2}{\centerline {SKILLS}}}{1}\relax \doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-20000}{QQ2-1-2}{\centerline {SKILLS}}}{1}\relax
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-30000}{QQ2-1-3}{\centerline {PROFESSIONAL EXPERIENCE}}}{1}\relax \doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-30000}{QQ2-1-3}{\centerline {PROFESSIONAL EXPERIENCE}}}{1}\relax
\doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-40000}{QQ2-1-4}{\centerline {EDUCATION}}}{3}\relax \doTocEntry\tocsection{0}{\csname a:TocLink\endcsname{1}{x1-40000}{QQ2-1-4}{\centerline {EDUCATION}}}{4}\relax

Binary file not shown.

Binary file not shown.

View file

@ -1,4 +1,4 @@
This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026) (preloaded format=latex 2026.3.1) 9 MAR 2026 09:46 This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026/Arch Linux) (preloaded format=latex 2026.3.10) 17 MAR 2026 07:46
entering extended mode entering extended mode
restricted \write18 enabled. restricted \write18 enabled.
%&-line parsing enabled. %&-line parsing enabled.
@ -12,9 +12,9 @@ ut resume.tex
(./resume.tex (./res.cls (./resume.tex (./res.cls
Document Style `res' <26 Sep 89>. Document Style `res' <26 Sep 89>.
Document Class: res 2000/05/19 v1.4b Resume class Document Class: res 2000/05/19 v1.4b Resume class
(/usr/local/texlive/2026basic/texmf-dist/tex/latex/base/article.cls (/usr/share/texmf-dist/tex/latex/base/article.cls
Document Class: article 2025/01/22 v1.4n Standard LaTeX document class Document Class: article 2025/01/22 v1.4n Standard LaTeX document class
(/usr/local/texlive/2026basic/texmf-dist/tex/latex/base/size10.clo (/usr/share/texmf-dist/tex/latex/base/size10.clo
File: size10.clo 2025/01/22 v1.4n Standard LaTeX file (size option) File: size10.clo 2025/01/22 v1.4n Standard LaTeX file (size option)
) )
\c@part=\count275 \c@part=\count275
@ -41,7 +41,7 @@ No auxiliary output files.
\resumewidth=\dimen150 \resumewidth=\dimen150
\@columnwidth=\dimen151 \@columnwidth=\dimen151
\c@numberofcolumns=\count283 \c@numberofcolumns=\count283
) (/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/tex4ht.sty ) (/usr/share/texmf-dist/tex/generic/tex4ht/tex4ht.sty
version 2025-12-14-13:41 version 2025-12-14-13:41
Package: tex4ht Package: tex4ht
-------------------------------------- --------------------------------------
@ -52,18 +52,17 @@ Package: tex4ht
-------------------------------------- --------------------------------------
\tmp:toks=\toks22 \tmp:toks=\toks22
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/usepackage.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/usepackage.4ht
version 2025-08-27-10:30 version 2025-08-27-10:30
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/latex/psnfss/helvet.sty (/usr/share/texmf-dist/tex/latex/psnfss/helvet.sty
Package: helvet 2020/03/25 PSNFSS-v9.3 (WaS) Package: helvet 2020/03/25 PSNFSS-v9.3 (WaS)
(/usr/local/texlive/2026basic/texmf-dist/tex/latex/graphics/keyval.sty (/usr/share/texmf-dist/tex/latex/graphics/keyval.sty
Package: keyval 2022/05/29 v1.15 key=value parser (DPC) Package: keyval 2022/05/29 v1.15 key=value parser (DPC)
\KV@toks@=\toks23 \KV@toks@=\toks23
)) )) (./resume.cfg
(./resume.cfg (/usr/share/texmf-dist/tex/generic/tex4ht/tex4ht.4ht
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/tex4ht.4ht
version 2025-07-09-13:35 version 2025-07-09-13:35
-------------------------------------- --------------------------------------
--- Note --- for additional information, use the command line option `info' --- Note --- for additional information, use the command line option `info'
@ -72,7 +71,7 @@ version 2025-07-09-13:35
:::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::
TeX4ht info is available in the log file TeX4ht info is available in the log file
:::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::
) (/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/tex4ht.sty ) (/usr/share/texmf-dist/tex/generic/tex4ht/tex4ht.sty
version 2025-12-14-13:41 version 2025-12-14-13:41
l.882 --- TeX4ht warning --- nonprimitive \everypar --- l.882 --- TeX4ht warning --- nonprimitive \everypar ---
@ -87,7 +86,7 @@ l.882 --- TeX4ht warning --- nonprimitive \everypar ---
\openout3 = `resume.xref'. \openout3 = `resume.xref'.
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
version 2026-01-04-08:10 version 2026-01-04-08:10
-------------------------------------- --------------------------------------
--- Note --- to remove the <?xml version=...?> processing instruction use the c --- Note --- to remove the <?xml version=...?> processing instruction use the c
@ -98,13 +97,13 @@ ommand line option `no-VERSION'
DOCTYPE' DOCTYPE'
-------------------------------------- --------------------------------------
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/unicode.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
version 2026-01-04-08:10 version 2026-01-04-08:10
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4-math.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
version 2026-01-29-13:49 version 2026-01-29-13:49
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html5.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
version 2026-01-18-07:06 version 2026-01-18-07:06
) )
-------------------------------------- --------------------------------------
@ -124,7 +123,7 @@ version 2026-01-18-07:06
--- Note --- for ^ of catcode 13, use the command line option `^13' --- Note --- for ^ of catcode 13, use the command line option `^13'
-------------------------------------- --------------------------------------
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
version 2026-01-04-08:10 version 2026-01-04-08:10
-------------------------------------- --------------------------------------
--- Note --- for alternative charset, use the command line option `charset=...' --- Note --- for alternative charset, use the command line option `charset=...'
@ -174,13 +173,13 @@ TeX4ht package options: html5,html,xhtml
on `imgdir:.../' on `imgdir:.../'
-------------------------------------- --------------------------------------
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/unicode.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
version 2026-01-04-08:10 version 2026-01-04-08:10
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4-math.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
version 2026-01-29-13:49 version 2026-01-29-13:49
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html5.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
version 2026-01-18-07:06 version 2026-01-18-07:06
-------------------------------------- --------------------------------------
--- Note --- To print a timestamp, use the command line option timestamp --- Note --- To print a timestamp, use the command line option timestamp
@ -204,21 +203,20 @@ o use custom a CSS design
\:tocout=\write4 \:tocout=\write4
\openout4 = `resume.4tc'. \openout4 = `resume.4tc'.
(resume.4tc)
(resume.4tc) (/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4.4ht
version 2026-01-04-08:10 version 2026-01-04-08:10
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/unicode.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
version 2026-01-04-08:10 version 2026-01-04-08:10
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4-math.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
version 2026-01-29-13:49 version 2026-01-29-13:49
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html5.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
version 2026-01-18-07:06 version 2026-01-18-07:06
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/latex.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/latex.4ht
version 2025-12-04-13:51 version 2025-12-04-13:51
LaTeX Info: Redefining \_ on input line 180. LaTeX Info: Redefining \_ on input line 180.
LaTeX Info: Redefining \begin on input line 634. LaTeX Info: Redefining \begin on input line 634.
@ -233,19 +231,19 @@ LaTeX Info: Redefining \> on input line 848.
ine option `refcaption' ine option `refcaption'
-------------------------------------- --------------------------------------
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
version 2026-01-04-08:10 version 2026-01-04-08:10
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/unicode.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
version 2026-01-04-08:10 version 2026-01-04-08:10
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4-math.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
version 2026-01-29-13:49 version 2026-01-29-13:49
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html5.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
version 2026-01-18-07:06 version 2026-01-18-07:06
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
version 2026-01-04-08:10 version 2026-01-04-08:10
-------------------------------------- --------------------------------------
--- Note --- For mini tocs immediately aftter the header use the command line o --- Note --- For mini tocs immediately aftter the header use the command line o
@ -293,10 +291,10 @@ ommand line option or a configuration similar to \Configure{HColWidth}{\HCode{
style="width:\HColWidth"}} style="width:\HColWidth"}}
-------------------------------------- --------------------------------------
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/unicode.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
version 2026-01-04-08:10 version 2026-01-04-08:10
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4-math.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
version 2026-01-29-13:49 version 2026-01-29-13:49
-------------------------------------- --------------------------------------
--- Note --- for pictorial eqnarray, use the command line option `pic-eqnarray' --- Note --- for pictorial eqnarray, use the command line option `pic-eqnarray'
@ -317,31 +315,31 @@ he command line option `pic-m+' (not safe!!)
--- Note --- for pictorial array, use the command line option `pic-array' --- Note --- for pictorial array, use the command line option `pic-array'
-------------------------------------- --------------------------------------
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html5.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
version 2026-01-18-07:06 version 2026-01-18-07:06
)) ))
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/fontmath.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/fontmath.4ht
version 2022-10-25-13:59 version 2022-10-25-13:59
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
version 2026-01-04-08:10 version 2026-01-04-08:10
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/unicode.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
version 2026-01-04-08:10 version 2026-01-04-08:10
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4-math.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
version 2026-01-29-13:49 version 2026-01-29-13:49
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html5.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
version 2026-01-18-07:06 version 2026-01-18-07:06
)) ))
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/res.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/res.4ht
version 2009-05-21-09:32 version 2009-05-21-09:32
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/article.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/article.4ht
version 2023-04-10-13:46 version 2023-04-10-13:46
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
version 2026-01-04-08:10 version 2026-01-04-08:10
-------------------------------------- --------------------------------------
--- Note --- for automatic sectioning pagination, use the command line option ` --- Note --- for automatic sectioning pagination, use the command line option `
@ -356,44 +354,43 @@ option `sec-filename'
index=2) index=2)
-------------------------------------- --------------------------------------
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/unicode.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
version 2026-01-04-08:10 version 2026-01-04-08:10
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4-math.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
version 2026-01-29-13:49 version 2026-01-29-13:49
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html5.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
version 2026-01-18-07:06 version 2026-01-18-07:06
)) ))
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/res-a.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/res-a.4ht
version 2009-05-21-09:32 version 2009-05-21-09:32
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
version 2026-01-04-08:10 version 2026-01-04-08:10
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/unicode.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
version 2026-01-04-08:10 version 2026-01-04-08:10
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4-math.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
version 2026-01-29-13:49 version 2026-01-29-13:49
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html5.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
version 2026-01-18-07:06 version 2026-01-18-07:06
)) ))
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html4.4ht
version 2026-01-04-08:10 version 2026-01-04-08:10
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/unicode.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/unicode.4ht
version 2026-01-04-08:10 version 2026-01-04-08:10
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html4-math.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html4-math.4ht
version 2026-01-29-13:49 version 2026-01-29-13:49
) )
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/html5.4ht (/usr/share/texmf-dist/tex/generic/tex4ht/html5.4ht
version 2026-01-18-07:06 version 2026-01-18-07:06
)) ))
(/usr/local/texlive/2026basic/texmf-dist/tex/latex/l3backend/l3backend-dvips.de (/usr/share/texmf-dist/tex/latex/l3backend/l3backend-dvips.def
f
File: l3backend-dvips.def 2025-10-09 L3 backend support: dvips File: l3backend-dvips.def 2025-10-09 L3 backend support: dvips
\l__pdfannot_backend_content_box=\box53 \l__pdfannot_backend_content_box=\box53
\l__pdfannot_backend_model_box=\box54 \l__pdfannot_backend_model_box=\box54
@ -428,19 +425,19 @@ LaTeX Font Info: External font `cmex10' loaded for size
(Font) <5> on input line 46. (Font) <5> on input line 46.
[1 [1
] [2] [3] ] [2] [3] [4]
*********** ***********
LaTeX2e <2025-11-01> LaTeX2e <2025-11-01>
L3 programming layer <2026-01-19> L3 programming layer <2026-01-19>
*********** ***********
) )
Here is how much of TeX's memory you used: Here is how much of TeX's memory you used:
4481 strings out of 469007 4481 strings out of 469516
58078 string characters out of 5454840 56217 string characters out of 5470833
592612 words of memory out of 5000000 592327 words of memory out of 5000000
33137 multiletter control sequences out of 15000+600000 33094 multiletter control sequences out of 15000+600000
629490 words of font info for 46 fonts, out of 8000000 for 9000 629490 words of font info for 46 fonts, out of 8000000 for 9000
319 hyphenation exceptions out of 8191 14 hyphenation exceptions out of 8191
49i,8n,59p,828b,464s stack positions out of 10000i,1000n,20000p,200000b,200000s 49i,8n,59p,882b,464s stack positions out of 10000i,1000n,20000p,200000b,200000s
Output written on resume.dvi (3 pages, 26000 bytes). Output written on resume.dvi (4 pages, 29120 bytes).

Binary file not shown.

View file

@ -52,7 +52,7 @@
\section{\centerline{SUMMARY}} \section{\centerline{SUMMARY}}
\vspace{8pt} % Gap between title and text \vspace{8pt} % Gap between title and text
Staff Software Engineer at Mozilla, shipping Rust, C++, and Python to hundreds of millions of Firefox users. Published author (``Rust Web Development'' -- Manning). Founder of Rust\&Tell Berlin, the largest Rust meetup globally. Staff Engineer at Mozilla, shipping Rust, C++, and Python to hundreds of millions of Firefox users across Desktop, Android, and iOS. Promoted for leading cross-team projects and getting complex, multi-platform features shipped. 12+ years of backend and systems work, published author (``Rust Web Development''), and 13 years of technical writing for outlets like c't and iX.
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
@ -66,10 +66,9 @@ Staff Software Engineer at Mozilla, shipping Rust, C++, and Python to hundreds o
\vspace{8pt} % Gap between title and text \vspace{8pt} % Gap between title and text
{\bf Languages:} Rust, C++, Python, TypeScript, Go \\ {\bf Languages:} Rust, C++, Python, TypeScript, Go \\
{\bf Backend \& Systems:} Rust (Actix, Warp, Axum), Python (FastAPI), Node.js, async Rust, FFI/UniFFI \\ {\bf Systems \& Backend:} async Rust (Axum, Actix), Python/FastAPI, Node.js, FFI/UniFFI, gRPC, REST \\
{\bf Patterns:} REST, GraphQL, gRPC, distributed systems (P2P), microservices \\ {\bf Architecture:} distributed systems, P2P protocols, system design, cross-platform (Desktop/Android/iOS) \\
{\bf Infrastructure:} AWS, Google Cloud, Docker, Kubernetes, CI/CD, Grafana \\ {\bf Infrastructure \& Observability:} AWS, GCP, Docker, Kubernetes, CI/CD, Grafana, performance profiling
{\bf AI Tooling:} Claude Code, GitHub Copilot
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
@ -79,74 +78,98 @@ Staff Software Engineer at Mozilla, shipping Rust, C++, and Python to hundreds o
% PROFESSIONAL EXPERIENCE SECTION % PROFESSIONAL EXPERIENCE SECTION
%---------------------------------------------------------------------------------------- %----------------------------------------------------------------------------------------
\section{\centerline{PROFESSIONAL EXPERIENCE}} \section{\centerline{PROFESSIONAL EXPERIENCE}}
\vspace{8pt} % Gap between title and text \vspace{8pt} % Gap between title and text
{\sl Staff Software Engineer (promoted from Senior)} \hfill July 2024 - Present \\ {\sl Staff Software Engineer} \hfill Feb 2026 - Present \\
Mozilla, Remote \\
Promoted for cross-team technical leadership and delivering multi-platform privacy features.
\begin{itemize} \itemsep -2pt
\item Leading the Image Service project: replaced 3 fragile, duplicated favicon systems with a single GCS-backed API serving 4+ internal teams. Extended an existing Python/Airflow pipeline instead of building a new service, reducing maintenance burden across the board
\item Implemented Oblivious HTTP (OHTTP) in application-services (shared Rust component cross-compiled to Swift/Kotlin via UniFFI) and wrote the C++ integration for Firefox Desktop. Now live on Firefox iOS, Android, and Desktop, covering millions of users
\item Maintaining the Firefox Push notification service (Rust backend, 50k req/s, sub-200ms latency). Reduced memory footprint, added circuit breakers, built Grafana dashboards for observability
\end{itemize}
{\sl Senior Software Engineer} \hfill Jun 2024 - Jan 2026 \\
Mozilla, Remote \\ Mozilla, Remote \\
\begin{itemize} \itemsep -2pt \begin{itemize} \itemsep -2pt
\item Implemented Oblivious HTTP (OHTTP) from scratch in application-services (shared Rust component cross-compiled to Swift/Kotlin via UniFFI) plus C++ and Rust for Firefox Desktop -- users are now unidentifiable when making privacy-sensitive requests across all platforms \item Core maintainer of Merino, the Python/FastAPI service powering Firefox Suggest. All search suggestions in Firefox route through Merino, which enriches and serves them in a privacy-preserving way
\item Consolidated four separate favicon implementations into a single Image Service -- extended an existing Python/Airflow pipeline rather than building a new microservice, now serving 4 teams from one manifest behind a GCS-backed API \item Code reviewer for UniFFI, Mozilla's multi-language bindings generator (Rust to Kotlin, Swift, Python, JavaScript)
\item Maintained Firefox Push notification service (50k req/s, sub-200ms latency): reduced memory footprint, added circuit breakers, built Grafana dashboards \item Contributing directly to Firefox Desktop (mozilla-central): shipping Rust and C++ code
\item Contributor and code reviewer for UniFFI, Mozilla's multi-language bindings generator (Rust to Kotlin, Swift, Python, JavaScript) \item Led ``Rusty Fridays'' sessions (6--10 engineers per session), building internal Rust knowledge across teams
\item Led ``Rusty Fridays'' internal education sessions, mentoring engineers across teams through Rust adoption
\end{itemize} \end{itemize}
{\sl Senior Systems Engineer, Team Lead} \hfill 2023 - 2024 \\ {\sl Technical Editor, ``From C to Rust''} \hfill Feb 2026 - Present \\
Toposware, Remote \\ Manning Publications (Contract, Part-time) \\
Core team of 4 building a peer-to-peer distributed network protocol from scratch in Rust. Reviewing technical accuracy and pedagogical quality for Manning's C-to-Rust migration guide.
\begin{itemize} \itemsep -2pt
\item Achieved 10x throughput per node by profiling the actual bottleneck -- optimized batch processing and serialization paths rather than redesigning the consensus layer
\item Led benchmark initiative that revealed nodes were compute-bound on crypto operations, not network-limited -- redirected optimization effort accordingly
\item Built an EVM bridge connecting external Ethereum-compatible chains to the core network
\end{itemize}
{\sl Senior Software Engineer} \hfill 2022 - 2023 \\
Centrifuge, Remote \\
Protocol team building DeFi applications on Substrate/Polkadot in Rust.
\begin{itemize} \itemsep -2pt
\item Implemented on-chain fund pool mutations -- core feature for the lending protocol enabling live capital allocation adjustments
\item Replaced manual documentation with CI-driven auto-generation from Rust source -- eliminated persistent drift between code and public docs
\end{itemize}
{\sl Author, ``Rust Web Development''} \hfill 2020 - 2022 \\
Manning Publications \\
Published end-to-end guide covering async Rust, web frameworks, and production deployment.
\vspace{4pt} \vspace{4pt}
{\sl Sr. Solutions Architect (promoted from SA)} \hfill 2020 - 2022 \\ {\sl Senior Systems Engineer, Team Lead} \hfill Apr 2023 - Jun 2024 \\
Toposware (acquired by Polygon Labs), Remote \\
Core team of 4 building a peer-to-peer distributed network protocol from scratch in Rust. Our core implementation of the double echo protocol and the Ethereum bridge became part of the Polygon stack after acquisition.
\begin{itemize} \itemsep -2pt
\item Achieved 10x message throughput per node by profiling the actual bottleneck: optimized batch processing and serialization paths after discovering nodes were compute-bound on crypto operations, not network-limited
\item Built the EVM bridge connecting external Ethereum-compatible chains to the core network
\item Led the internal benchmarking initiative that changed where the team focused optimization effort
\end{itemize}
{\sl Senior Software Engineer} \hfill Aug 2022 - Feb 2023 \\
Centrifuge, Remote \\
Protocol team building DeFi infrastructure on Substrate/Polkadot in Rust.
\begin{itemize} \itemsep -2pt
\item Implemented on-chain fund pool mutations, the core feature enabling live capital allocation adjustments in the lending protocol
\item Replaced manual documentation with CI-driven auto-generation from Rust source, eliminating persistent drift between code and public docs
\end{itemize}
{\sl Author, ``Rust Web Development''} \hfill Oct 2020 - Dec 2022 \\
Manning Publications \\
Wrote and published an end-to-end guide covering async Rust, web frameworks, and production deployment.
\vspace{4pt}
{\sl Sr. Solutions Architect (promoted from SA)} \hfill Jun 2020 - Jul 2022 \\
Twilio Inc., Remote \\ Twilio Inc., Remote \\
\begin{itemize} \itemsep -2pt \begin{itemize} \itemsep -2pt
\item Technical lead for Fortune 500 engagements: debugged latency issues, redesigned messaging flows, advised on architectures matching client team size and resources \item Technical lead for Fortune 500 professional services engagements: diagnosed latency issues, redesigned messaging architectures, delivered implementation roadmaps sized to each client's team and resources
\item Created reusable engagement playbooks adopted across the EMEA Professional Services team \item Created reusable engagement playbooks adopted across the EMEA Professional Services team
\end{itemize} \end{itemize}
{\sl Systems Engineer} \hfill 2019 - 2020 \\ {\sl Systems Engineer, Core Backend} \hfill Aug 2019 - May 2020 \\
Kraken Digital Currency Exchange, Remote \\ Kraken Digital Asset Exchange, Remote \\
Part of the first Rust team rewriting Kraken's core infrastructure from PHP.
\begin{itemize} \itemsep -2pt \begin{itemize} \itemsep -2pt
\item Migrated core banking services and API gateway from PHP to Rust, achieving 100x throughput improvement -- enabling order-of-magnitude traffic growth without scaling hardware \item Rewrote core banking services and API gateway in Rust, replacing legacy PHP services. The new stack handled significantly higher throughput with a smaller hardware footprint
\item Worked directly with the CTO on privacy-focused architectural decisions for the trading platform \item Shipped the first version of the automated KYC verification flow, replacing manual processing right as COVID drove a massive spike in new customer sign-ups
\end{itemize} \end{itemize}
\vspace{4pt} \vspace{4pt}
{\sl Earlier Career} \hfill 2014 - 2019 \\ {\sl Earlier Career} \hfill 2013 - 2019 \\
Sr. Software Engineer across enterprise clients (OSRAM, K\"orber Digital, GIATA, Avenga) and startups (Dalia Research, blogfoster, smartB) in Berlin. Sr. Software Engineer (freelance from 2016) across enterprise clients (OSRAM, K\"orber Digital, GIATA, Avenga) and startups (Dalia Research, blogfoster, smartB) in Berlin.
\begin{itemize} \itemsep -2pt \begin{itemize} \itemsep -2pt
\item Founded ``Rust \& Tell Berlin'' meetup -- grew it into the largest Rust meetup globally, still running years later \item Founded ``Rust \& Tell Berlin'' meetup, grew it into the largest Rust meetup globally. Coordinated with companies for venue sponsorship, organized speakers, photographers, and videographers. Gave talks and created a welcoming space for the Rust community
\item Designed IoT authentication infrastructure at OSRAM for thousands of connected devices (Node.js, Go, Lua) \item Designed IoT authentication infrastructure at OSRAM for thousands of connected devices (Node.js, Go, Lua)
\item First engineering hire at K\"orber Digital: built real-time sensor data pipelines on AWS \item First engineering hire at K\"orber Digital: built real-time sensor data pipelines on AWS (Lambda, ECS, Route53)
\item Decomposed GIATA's monolithic ERP into 6 Docker-based microservices, improving system scalability \item Decomposed GIATA's monolithic PHP system into 6 Docker-based services, taught the existing team Scrum and JavaScript
\item Contributed to the Rust compiler and standard library during a self-directed sabbatical (2019)
\end{itemize} \end{itemize}
\section{\centerline{EDUCATION}} {\sl Technical Writer} \hfill 2008 - 2020 \\
Freelance (Contract) \\
13 years writing for technical publications including c't, iX, Macwelt (IDG/Heise), and tech blogs (LogRocket, stadt-bremerhaven.de, mobilegeeks.de). Also authored ``OS X f\"ur Einsteiger'' (Bookboon, 2012).
%----------------------------------------------------------------------------------------
\vspace{0.2in} % Some whitespace between sections
\section{\centerline{EDUCATION}}
\vspace{8pt} % Gap between title and text \vspace{8pt} % Gap between title and text
{\sl Bachelor of Science, Computer Science} \\ {\sl Bachelor of Science, Computer Science} \hfill Mar 2014 \\
TH Ingolstadt -- Scholarship from Allianz Deutschland AG (fully funded) TH Ingolstadt. Scholarship from Allianz Deutschland AG (fully funded dual-study program, 2010--2014)

View file

@ -5,4 +5,4 @@
\:CrossWord{)Qx1-10000}{1}{1}% \:CrossWord{)Qx1-10000}{1}{1}%
\:CrossWord{)Qx1-20000}{1}{1}% \:CrossWord{)Qx1-20000}{1}{1}%
\:CrossWord{)Qx1-30000}{1}{1}% \:CrossWord{)Qx1-30000}{1}{1}%
\:CrossWord{)Qx1-40000}{1}{3}% \:CrossWord{)Qx1-40000}{1}{4}%