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
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, Remote|<span class="company">Toposware</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 Currency Exchange, Remote|<span class="company">Kraken Digital Currency 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
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
mv resume.html index.html
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
deploy: html
mkdir -p ~/CodingIsFun/fun/bastiangruber.ca/src/cv
cp index.html style.css resume.css ~/CodingIsFun/fun/bastiangruber.ca/src/cv/
mkdir -p ~/CodingIsFun/personal/bastiangruber.ca/src/cv
cp index.html style.css resume.css ~/CodingIsFun/personal/bastiangruber.ca/src/cv/
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
id="x1-10000"></a><div
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.
Published author (&#8220;Rust Web Development&#8221; &#8211; Manning). Founder of Rust&amp;Tell Berlin, the largest Rust meetup
globally.
<!--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 (&#8220;Rust Web Development&#8221;), and 13 years of technical
writing for outlets like c&#8217;t and iX.
</p>
</div><h4 class="sectionHead"><a
id="x1-20000"></a><div
@ -64,130 +65,167 @@ class="centerline"> SKILLS
<!--l. 68--><p class="noindent" ><span
class="cmbx-10">Languages: </span>Rust, C++, Python, TypeScript, Go <br
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
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="cmbx-10">Infrastructure: </span>AWS, Google Cloud, Docker, Kubernetes, CI/CD, Grafana <br
class="newline" /><span
class="cmbx-10">AI Tooling: </span>Claude Code, GitHub Copilot
class="cmbx-10">Infrastructure &amp; Observability: </span>AWS, GCP, Docker, Kubernetes, CI/CD, Grafana, performance
profiling
</p>
</div><h4 class="sectionHead"><a
id="x1-30000"></a><div
class="centerline"> PROFESSIONAL EXPERIENCE </div></h4><div class="section">
<!--l. 86--><p class="noindent" ><span
class="cmsl-10">Staff Software Engineer (promoted from Senior) </span>July 2024 - Present
<!--l. 85--><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
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
class="newline" /><span class="company">Mozilla</span>, Remote <br
class="newline" /></p>
<ul class="itemize1">
<li class="itemize">
<!--l. 89--><p class="noindent" >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 &#8211; users are now
unidentifiable when making privacy-sensitive requests across all platforms
<!--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
</p></li>
<li class="itemize">
<!--l. 90--><p class="noindent" >Consolidated four separate favicon implementations into a single Image Service &#8211; extended an existing
Python/Airflow pipeline rather than building a new microservice, now serving 4 teams from one
manifest behind a GCS-backed API
<!--l. 98--><p class="noindent" >Code reviewer for UniFFI, Mozilla&#8217;s multi-language bindings generator (Rust to Kotlin, Swift, Python,
JavaScript)
</p></li>
<li class="itemize">
<!--l. 91--><p class="noindent" >Maintained Firefox Push notification service (50k req/s, sub-200ms latency): reduced memory footprint,
added circuit breakers, built Grafana dashboards
<!--l. 99--><p class="noindent" >Contributing directly to Firefox Desktop (mozilla-central): shipping Rust and C++ code
</p></li>
<li class="itemize">
<!--l. 92--><p class="noindent" >Contributor and code reviewer for UniFFI, Mozilla&#8217;s multi-language bindings generator (Rust to Kotlin,
Swift, Python, JavaScript)
</p></li>
<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
<!--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>
<!--l. 103--><p class="noindent" ><span
class="cmsl-10">Technical Editor, &#8220;From C to Rust&#8221; </span>Feb 2026 - Present
<br
class="newline" /><span class="company">Toposware</span>, Remote <br
class="newline" />Core team of 4 building a peer-to-peer distributed network protocol from scratch in Rust. </p>
class="newline" /><span class="company">Manning Publications</span> (Contract, Part-time) <br
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">
<li class="itemize">
<!--l. 100--><p class="noindent" >Achieved 10x throughput per node by profiling the actual bottleneck &#8211; optimized batch processing and
serialization paths rather than redesigning the consensus layer
<!--l. 113--><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. 101--><p class="noindent" >Led benchmark initiative that revealed nodes were compute-bound on crypto operations, not
network-limited &#8211; redirected optimization effort accordingly
<!--l. 114--><p class="noindent" >Built the EVM bridge connecting external Ethereum-compatible chains to the core network
</p></li>
<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. 105--><p class="noindent" ><span
class="cmsl-10">Senior Software Engineer </span>2022 - 2023
<!--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
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 applications on Substrate/Polkadot in Rust. </p>
class="newline" />Protocol team building DeFi infrastructure on Substrate/Polkadot in Rust. </p>
<ul class="itemize1">
<li class="itemize">
<!--l. 109--><p class="noindent" >Implemented on-chain fund pool mutations &#8211; core feature for the lending protocol enabling live capital
allocation adjustments
<!--l. 122--><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. 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>
<!--l. 113--><p class="noindent" ><span
class="cmsl-10">Author, &#8220;Rust Web Development&#8221; </span>2020 - 2022
<!--l. 126--><p class="noindent" ><span
class="cmsl-10">Author, &#8220;Rust Web Development&#8221; </span>Oct 2020 - Dec 2022
<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.
</p><!--l. 119--><p class="noindent" ><span
class="cmsl-10">Sr. Solutions Architect (promoted from SA) </span>2020 - 2022
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
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. 122--><p class="noindent" >Technical lead for Fortune 500 engagements: debugged latency issues, redesigned messaging flows,
advised on architectures matching client team size and resources
<!--l. 135--><p class="noindent" >Technical lead for Fortune 500 professional services engagements: diagnosed latency issues, redesigned
messaging architectures, delivered implementation roadmaps sized to each client&#8217;s team and resources
</p></li>
<li class="itemize">
<!--l. 123--><p class="noindent" >Created reusable engagement playbooks adopted across the EMEA Professional Services team</p></li></ul>
<!--l. 126--><p class="noindent" ><span
class="cmsl-10">Systems Engineer </span>2019 - 2020
<!--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
class="cmsl-10">Systems Engineer, Core Backend </span>Aug 2019 - May 2020
<br
class="newline" /><span class="company">Kraken Digital Currency Exchange</span>, Remote <br
class="newline" /></p>
class="newline" /><span class="company">Kraken Digital Asset Exchange</span>, Remote <br
class="newline" />Part of the first Rust team rewriting Kraken&#8217;s core infrastructure from PHP. </p>
<ul class="itemize1">
<li class="itemize">
<!--l. 129--><p class="noindent" >Migrated core banking services and API gateway from PHP to Rust, achieving 100x throughput
improvement &#8211; enabling order-of-magnitude traffic growth without scaling hardware
<!--l. 143--><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. 130--><p class="noindent" >Worked directly with the CTO on privacy-focused architectural decisions for the trading platform</p></li></ul>
<!--l. 135--><p class="noindent" ><span
class="cmsl-10">Earlier Career </span>2014 - 2019
<!--l. 144--><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
class="cmsl-10">Earlier Career </span>2013 - 2019
<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
Research, blogfoster, smartB) in Berlin. </p>
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. 138--><p class="noindent" >Founded &#8220;Rust &amp; Tell Berlin&#8221; meetup &#8211; grew it into the largest Rust meetup globally, still running
years later
<!--l. 152--><p class="noindent" >Founded &#8220;Rust &amp; Tell Berlin&#8221; 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. 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)
</p></li>
<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>
<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
id="x1-40000"></a><div
class="centerline"> EDUCATION </div></h4><div class="section">
<!--l. 148--><p class="noindent" ><span
class="cmsl-10">Bachelor of Science, Computer Science </span><br
class="newline" /><span class="company">TH Ingolstadt</span> &#8211; Scholarship from Allianz Deutschland AG (fully funded)
<!--l. 171--><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&#8211;2014)
</p>
</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-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-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

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-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-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
restricted \write18 enabled.
%&-line parsing enabled.
@ -12,9 +12,9 @@ ut resume.tex
(./resume.tex (./res.cls
Document Style `res' <26 Sep 89>.
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
(/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)
)
\c@part=\count275
@ -41,7 +41,7 @@ No auxiliary output files.
\resumewidth=\dimen150
\@columnwidth=\dimen151
\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
Package: tex4ht
--------------------------------------
@ -52,18 +52,17 @@ Package: tex4ht
--------------------------------------
\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
)
(/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)
(/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)
\KV@toks@=\toks23
))
(./resume.cfg
(/usr/local/texlive/2026basic/texmf-dist/tex/generic/tex4ht/tex4ht.4ht
)) (./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'
@ -72,7 +71,7 @@ version 2025-07-09-13:35
::::::::::::::::::::::::::::::::::::::::::
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
l.882 --- TeX4ht warning --- nonprimitive \everypar ---
@ -87,7 +86,7 @@ l.882 --- TeX4ht warning --- nonprimitive \everypar ---
\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
--------------------------------------
--- Note --- to remove the <?xml version=...?> processing instruction use the c
@ -98,13 +97,13 @@ ommand line option `no-VERSION'
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
)
(/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
)
(/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
)
--------------------------------------
@ -124,7 +123,7 @@ version 2026-01-18-07:06
--- 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
--------------------------------------
--- Note --- for alternative charset, use the command line option `charset=...'
@ -174,13 +173,13 @@ TeX4ht package options: html5,html,xhtml
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
)
(/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
)
(/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
--------------------------------------
--- Note --- To print a timestamp, use the command line option timestamp
@ -204,21 +203,20 @@ o use custom a CSS design
\:tocout=\write4
\openout4 = `resume.4tc'.
(resume.4tc)
(/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
)
(/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
)
(/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
)
(/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
)
(/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
LaTeX Info: Redefining \_ on input line 180.
LaTeX Info: Redefining \begin on input line 634.
@ -233,19 +231,19 @@ LaTeX Info: Redefining \> on input line 848.
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
)
(/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
)
(/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
)
(/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
)
(/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
--------------------------------------
--- 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"}}
--------------------------------------
)
(/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
)
(/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
--------------------------------------
--- 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'
--------------------------------------
)
(/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
))
(/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
(/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
)
(/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
)
(/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
)
(/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
))
(/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
)
(/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
(/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
--------------------------------------
--- Note --- for automatic sectioning pagination, use the command line option `
@ -356,44 +354,43 @@ option `sec-filename'
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
)
(/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
)
(/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
))
(/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
(/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
)
(/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
)
(/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
)
(/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
))
(/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
)
(/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
)
(/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
)
(/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
))
(/usr/local/texlive/2026basic/texmf-dist/tex/latex/l3backend/l3backend-dvips.de
f
(/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
@ -428,19 +425,19 @@ LaTeX Font Info: External font `cmex10' loaded for size
(Font) <5> on input line 46.
[1
] [2] [3]
] [2] [3] [4]
***********
LaTeX2e <2025-11-01>
L3 programming layer <2026-01-19>
***********
)
Here is how much of TeX's memory you used:
4481 strings out of 469007
58078 string characters out of 5454840
592612 words of memory out of 5000000
33137 multiletter control sequences out of 15000+600000
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
319 hyphenation exceptions out of 8191
49i,8n,59p,828b,464s stack positions out of 10000i,1000n,20000p,200000b,200000s
14 hyphenation exceptions out of 8191
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}}
\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
{\bf Languages:} Rust, C++, Python, TypeScript, Go \\
{\bf Backend \& Systems:} Rust (Actix, Warp, Axum), Python (FastAPI), Node.js, async Rust, FFI/UniFFI \\
{\bf Patterns:} REST, GraphQL, gRPC, distributed systems (P2P), microservices \\
{\bf Infrastructure:} AWS, Google Cloud, Docker, Kubernetes, CI/CD, Grafana \\
{\bf AI Tooling:} Claude Code, GitHub Copilot
{\bf Systems \& Backend:} async Rust (Axum, Actix), Python/FastAPI, Node.js, FFI/UniFFI, gRPC, REST \\
{\bf Architecture:} distributed systems, P2P protocols, system design, cross-platform (Desktop/Android/iOS) \\
{\bf Infrastructure \& Observability:} AWS, GCP, Docker, Kubernetes, CI/CD, Grafana, performance profiling
%----------------------------------------------------------------------------------------
@ -83,70 +82,94 @@ Staff Software Engineer at Mozilla, shipping Rust, C++, and Python to hundreds o
\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 \\
\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 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 Maintained Firefox Push notification service (50k req/s, sub-200ms latency): reduced memory footprint, added circuit breakers, built Grafana dashboards
\item Contributor and code reviewer for UniFFI, Mozilla's multi-language bindings generator (Rust to Kotlin, Swift, Python, JavaScript)
\item Led ``Rusty Fridays'' internal education sessions, mentoring engineers across teams through Rust adoption
\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 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
\end{itemize}
{\sl Senior Systems Engineer, Team Lead} \hfill 2023 - 2024 \\
Toposware, Remote \\
Core team of 4 building a peer-to-peer distributed network protocol from scratch in Rust.
\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.
{\sl Technical Editor, ``From C to Rust''} \hfill Feb 2026 - Present \\
Manning Publications (Contract, Part-time) \\
Reviewing technical accuracy and pedagogical quality for Manning's C-to-Rust migration guide.
\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 \\
\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
\end{itemize}
{\sl Systems Engineer} \hfill 2019 - 2020 \\
Kraken Digital Currency Exchange, Remote \\
{\sl Systems Engineer, Core Backend} \hfill Aug 2019 - May 2020 \\
Kraken Digital Asset Exchange, Remote \\
Part of the first Rust team rewriting Kraken's core infrastructure from PHP.
\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 Worked directly with the CTO on privacy-focused architectural decisions for the trading platform
\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 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}
\vspace{4pt}
{\sl Earlier Career} \hfill 2014 - 2019 \\
Sr. Software Engineer across enterprise clients (OSRAM, K\"orber Digital, GIATA, Avenga) and startups (Dalia Research, blogfoster, smartB) in Berlin.
{\sl Earlier Career} \hfill 2013 - 2019 \\
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
\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 First engineering hire at K\"orber Digital: built real-time sensor data pipelines on AWS
\item Decomposed GIATA's monolithic ERP into 6 Docker-based microservices, improving system scalability
\item First engineering hire at K\"orber Digital: built real-time sensor data pipelines on AWS (Lambda, ECS, Route53)
\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}
{\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
{\sl Bachelor of Science, Computer Science} \\
TH Ingolstadt -- Scholarship from Allianz Deutschland AG (fully funded)
{\sl Bachelor of Science, Computer Science} \hfill Mar 2014 \\
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-20000}{1}{1}%
\:CrossWord{)Qx1-30000}{1}{1}%
\:CrossWord{)Qx1-40000}{1}{3}%
\:CrossWord{)Qx1-40000}{1}{4}%