chore: update CV texts

This commit is contained in:
Bastian Gruber 2026-03-04 11:52:26 -04:00
parent eb73bf2145
commit f48c0f5c34
No known key found for this signature in database
GPG key ID: 2E8AA0462DB41CBE
4 changed files with 204 additions and 216 deletions

View file

@ -7,154 +7,146 @@
<link href='resume.css' rel='stylesheet' type='text/css' />
<meta content='resume.tex' name='src' />
<link href="style.css" rel="stylesheet" type="text/css" /></head><body>
<div class='resume'> <!-- tex4ht:inline --><div class='tabular'> <table class='tabular' id='TBL-1'><colgroup id='TBL-1-1g'><col id='TBL-1-1' /></colgroup><tr id='TBL-1-1-' style='vertical-align:baseline;'><td class='td00' id='TBL-1-1-1' style='white-space:nowrap; text-align:left;'><span class='cmbx-12'>Bastian Gruber</span> </td></tr><tr id='TBL-1-2-' style='vertical-align:baseline;'><td class='td00' id='TBL-1-2-1' style='white-space:nowrap; text-align:left;'>  </td>
</tr><tr id='TBL-1-3-' style='vertical-align:baseline;'><td class='td00' id='TBL-1-3-1' style='white-space:nowrap; text-align:left;'>  </td></tr></table> </div>
<table class='center-addresses'><tr><td class='first-address'><!-- tex4ht:inline --><div class='tabular'> <table class='tabular' id='TBL-2'><colgroup id='TBL-2-1g'><col id='TBL-2-1' /></colgroup><tr id='TBL-2-1-' style='vertical-align:baseline;'><td class='td00' id='TBL-2-1-1' style='white-space:nowrap; text-align:left;'><span class='cmbx-10'>Professional </span> </td>
</tr><tr id='TBL-2-2-' style='vertical-align:baseline;'><td class='td00' id='TBL-2-2-1' style='white-space:nowrap; text-align:left;'>LinkedIn: <a href="https://linkedin.com/in/bastiangruber">linkedin.com/in/bastiangruber</a> </td>
</tr><tr id='TBL-2-3-' style='vertical-align:baseline;'><td class='td00' id='TBL-2-3-1' style='white-space:nowrap; text-align:left;'>Book: <a href="https://rustwebdevelopment.com">rustwebdevelopment.com</a>  </td>
</tr><tr id='TBL-2-4-' style='vertical-align:baseline;'><td class='td00' id='TBL-2-4-1' style='white-space:nowrap; text-align:left;'>E-Mail: <a href="mailto:gruberbastian@me.com">gruberbastian@me.com</a>  </td>
</tr><tr id='TBL-2-5-' style='vertical-align:baseline;'><td class='td00' id='TBL-2-5-1' style='white-space:nowrap; text-align:left;'>Website: <a href="https://bastiangruber.ca">bastiangruber.ca</a>  </td></tr></table> </div></td><td class='second-address'><!-- tex4ht:inline --><div class='tabular'> <table class='tabular' id='TBL-3'><colgroup id='TBL-3-1g'><col id='TBL-3-1' /></colgroup><tr id='TBL-3-1-' style='vertical-align:baseline;'><td class='td00' id='TBL-3-1-1' style='white-space:nowrap; text-align:left;'><span class='cmbx-10'>Code </span> </td>
</tr><tr id='TBL-3-2-' style='vertical-align:baseline;'><td class='td00' id='TBL-3-2-1' style='white-space:nowrap; text-align:left;'>GitHub: <a href="https://github.com/gruberb">github.com/gruberb</a>  </td>
</tr><tr id='TBL-3-3-' style='vertical-align:baseline;'><td class='td00' id='TBL-3-3-1' style='white-space:nowrap; text-align:left;'>Git: <a href="https://code.novanexus.ca/gruberb">code.novanexus.ca/gruberb</a> </td></tr></table> </div></td></tr></table>
<div class='resume'> <!-- tex4ht:inline --><div class='tabular'> <table class='tabular' id='TBL-1'><colgroup id='TBL-1-1g'><col id='TBL-1-1' /></colgroup><tr id='TBL-1-1-' style='vertical-align:baseline;'><td class='td00' id='TBL-1-1-1' style='white-space:nowrap; text-align:left;'><span class='cmbx-12'>Bastian Gruber</span> </td></tr><tr id='TBL-1-2-' style='vertical-align:baseline;'><td class='td00' id='TBL-1-2-1' style='white-space:nowrap; text-align:left;'> </td>
</tr><tr id='TBL-1-3-' style='vertical-align:baseline;'><td class='td00' id='TBL-1-3-1' style='white-space:nowrap; text-align:left;'> </td></tr></table> </div>
<table class='center-addresses'><tr><td class='first-address'><!-- tex4ht:inline --><div class='tabular'> <table class='tabular' id='TBL-2'><colgroup id='TBL-2-1g'><col id='TBL-2-1' /></colgroup><tr id='TBL-2-1-' style='vertical-align:baseline;'><td class='td00' id='TBL-2-1-1' style='white-space:nowrap; text-align:left;'><span class='cmbx-10'>Professional </span> </td>
</tr><tr id='TBL-2-2-' style='vertical-align:baseline;'><td class='td00' id='TBL-2-2-1' style='white-space:nowrap; text-align:left;'>LinkedIn: <a href="https://linkedin.com/in/bastiangruber">linkedin.com/in/bastiangruber</a> </td>
</tr><tr id='TBL-2-3-' style='vertical-align:baseline;'><td class='td00' id='TBL-2-3-1' style='white-space:nowrap; text-align:left;'>Book: <a href="https://rustwebdevelopment.com">rustwebdevelopment.com</a> </td>
</tr><tr id='TBL-2-4-' style='vertical-align:baseline;'><td class='td00' id='TBL-2-4-1' style='white-space:nowrap; text-align:left;'>E-Mail: <a href="mailto:gruberbastian@me.com">gruberbastian@me.com</a> </td>
</tr><tr id='TBL-2-5-' style='vertical-align:baseline;'><td class='td00' id='TBL-2-5-1' style='white-space:nowrap; text-align:left;'>Website: <a href="https://bastiangruber.ca">bastiangruber.ca</a> </td></tr></table> </div></td><td class='second-address'><!-- tex4ht:inline --><div class='tabular'> <table class='tabular' id='TBL-3'><colgroup id='TBL-3-1g'><col id='TBL-3-1' /></colgroup><tr id='TBL-3-1-' style='vertical-align:baseline;'><td class='td00' id='TBL-3-1-1' style='white-space:nowrap; text-align:left;'><span class='cmbx-10'>Code </span> </td>
</tr><tr id='TBL-3-2-' style='vertical-align:baseline;'><td class='td00' id='TBL-3-2-1' style='white-space:nowrap; text-align:left;'>GitHub: <a href="https://github.com/gruberb">github.com/gruberb</a> </td>
</tr><tr id='TBL-3-3-' style='vertical-align:baseline;'><td class='td00' id='TBL-3-3-1' style='white-space:nowrap; text-align:left;'>Git: <a href="https://code.novanexus.ca/gruberb">code.novanexus.ca/gruberb</a> </td></tr></table> </div></td></tr></table>
<h4 class='sectionHead' id='summary'><a id='x1-10000'></a><div class='centerline'> SUMMARY </div></h4><div class='section'>
<!-- l. 55 --><p class='noindent'>Staff Software Engineer and published author (”Rust Web Development” - Manning) with 15+ years building
scalable backend systems. Currently contributing to Firefox at Mozilla, shipping code to hundreds of millions of
users. Founded Rust&amp;Tell Berlin, the largest Rust meetup globally.
<!-- l. 55 --><p class='noindent'>Staff Software Engineer and published author (&ldquo;Rust Web Development&rdquo; &ndash; Manning) with 15+ years making
pragmatic architecture decisions for backend systems at scale. Currently shipping Rust, C++, and Python code to
hundreds of millions of Firefox users at Mozilla. Founded Rust&amp;Tell Berlin, the largest Rust meetup globally.
</p>
</div><h4 class='sectionHead' id='skills'><a id='x1-20000'></a><div class='centerline'> SKILLS </div></h4><div class='section'>
<!-- l. 68 --><p class='noindent'><span class='cmbx-10'>Languages: </span>Rust, Python, TypeScript, JavaScript, Go <br class='newline' /><span class='cmbx-10'>Frontend: </span>React, Angular, Vue.js <br class='newline' /><span class='cmbx-10'>Backend: </span>Rust (Actix, Warp, Axum), Python (FastAPI), Node.js, Go <br class='newline' /><span class='cmbx-10'>Patterns: </span>REST, GraphQL, gRPC, async Rust, distributed systems (P2P) <br class='newline' /><span class='cmbx-10'>Infrastructure: </span>AWS, Google Cloud, Docker, Kubernetes, CI/CD, Grafana <br class='newline' /><span class='cmbx-10'>Domains: </span>Systems Programming, FFI, Distributed Systems, Web Services, Micro Services, IoT, Blockchain,
Firefox
</p>
</div><h4 class='sectionHead' id='professional-experience'><a id='x1-30000'></a><div class='centerline'> PROFESSIONAL EXPERIENCE </div></h4><div class='section'>
<!-- l. 87 --><p class='noindent'><span class='cmsl-10'>Staff Software Engineer - Full-time </span>February 2026 - Now
<!-- Mozilla -->
<p class='noindent'><span class='cmsl-10'>Staff Software Engineer - Full-time </span>February 2026 - Now
<br class='newline' /><span class='cmsl-10'>Senior Software Engineer - Full-time </span>July 2024 - January 2026
<br class='newline' /><span class="company">Mozilla</span>, Remote <br class='newline' />Contributing to Firefox (desktop and mobile) shipped to hundreds of millions of users. All work is open source.
<br class='newline' /><span class="company">Mozilla</span>, Remote <br class='newline' />Shipping Rust, C++, and Python code across Firefox desktop and mobile to hundreds of millions of users. All work is open source.
</p>
<ul class='itemize1'>
<li class='itemize'>Leading the Image Service project: designing and implementing a cross-team service to provide favicons
and images to Firefox Desktop and mobile
<li class='itemize'>Consolidated four separate favicon implementations across Firefox teams into a single Image Service &ndash; chose to extend an existing Python/Airflow pipeline rather than build a new microservice, now serving 4 teams from one manifest behind a GCS-backed API
</li>
<li class='itemize'>Contributor to UniFFI, Mozillas multi-language bindings generator for Rust, enabling Rust code to
be called from Kotlin (Android), Swift (iOS), Python, and JavaScript (Desktop)
<li class='itemize'>Implemented Oblivious HTTP (OHTTP) from scratch in application-services (shared Rust component cross-compiled to Swift and Kotlin via UniFFI) plus handwritten C++ and Rust for Firefox Desktop &ndash; users are now unidentifiable when making privacy-sensitive requests across all platforms
</li>
<li class='itemize'>Implemented OHTTP (Oblivious HTTP) support in application-services, enabling privacy-preserving
API requests across Firefox Desktop, Android, and iOS
<li class='itemize'>Maintained Firefox Push notification service (50k requests/second, sub-200ms latency): reduced memory footprint, added circuit breakers, and built Grafana dashboards for operational visibility
</li>
<li class='itemize'>Contributor and code reviewer for UniFFI, Mozilla&rsquo;s multi-language bindings generator enabling Rust code to be called from Kotlin, Swift, Python, and JavaScript
</li>
<li class='itemize'>Built Rust extensions for Merino (Python/FastAPI service powering Firefox Suggest); wrote RFCs, mapped out project plans, and surfaced cross-team blockers early
</li>
<li class='itemize'>Led &ldquo;Rusty Fridays&rdquo; internal education sessions, guiding engineers through Rust adoption and mentoring junior contributors across teams</li></ul>
<li class='itemize'>Building and maintaining the Push notification service for Firefox (async Rust backend handling
millions of concurrent connections)
</li>
<li class='itemize'>Contributing directly to Firefox (mozilla-central): shipping Rust and C++ code to Desktop
</li>
<li class='itemize'>Maintaining Merino, the web service powering Firefox Suggest with Python/FastAPI
</li>
<li class='itemize'>Creating internal Rust learning resources and leading ”Rusty Fridays” sessions for engineers</li></ul>
<!-- l. 101 --><p class='noindent'><span class='cmsl-10'>Senior Systems Engineer, Team Lead - Full-time </span>April 2023 - June 2024
<br class='newline' /><span class="company">Toposware</span>, Remote <br class='newline' />Developing a Peer-to-Peer distributed network, with high throughput and low latency. Part of the core team,
consisting out of 4 people. Implementing the protocol and the services in-house. Debugging of production issues,
implementing the core protocol, re-wrote the CLI, led benchmark initiatives, set up part of the CI/CD flow and
Grafana dashboards. </p>
<!-- Toposware -->
<p class='noindent'><span class='cmsl-10'>Senior Systems Engineer, Team Lead - Full-time </span>April 2023 - June 2024
<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>
<ul class='itemize1'>
<li class='itemize'>Increased the throughput of a node 10x
<li class='itemize'>Achieved 10x throughput per node by profiling and targeting the actual bottleneck &ndash; optimized batch processing and serialization paths, tuned message volumes to avoid throughput degradation &ndash; rather than redesigning the consensus layer
</li>
<li class='itemize'>Re-wrote the CLI to add configuration and robustness, better user guidance
<li class='itemize'>Led benchmark initiative with 3 engineers that revealed nodes were compute-bound on encryption/decryption, not network-limited &ndash; findings redirected optimization effort away from networking toward crypto performance
</li>
<li class='itemize'>Led a team of 3 engineers for an internal benchmark project
<li class='itemize'>Rewrote the CLI from scratch, replacing error-prone CLI parameters with local config files &ndash; reduced operator misconfiguration during node setup
</li>
<li class='itemize'>Implemented load testing for part of the codebase
<li class='itemize'>Built an EVM bridge connecting external Ethereum-compatible chains to the core network
</li>
<li class='itemize'>Connected external EVM chains to the core network</li></ul>
<!-- l. 112 --><p class='noindent'><span class='cmsl-10'>Senior Software Engineer - Full-time </span>August 2022 - February 2023
<br class='newline' /><span class="company">Centrifuge</span>, Remote <br class='newline' />Part of the protocol team implementing the DeFi application on top of Substrate. Working in a self-governed
organization, leading the documentation efforts around Rust and the protocol implementation. </p>
<ul class='itemize1'>
<li class='itemize'>Implemented the auto-generation of the online documentation with every PR
</li>
<li class='itemize'>Enabled mutating of money pools in the protocol
</li>
<li class='itemize'>Implemented client facing APIs on top of the money fund pools
<li class='itemize'>Set up load testing, CI/CD pipelines, and Grafana dashboards for production observability</li></ul>
</li>
<li class='itemize'>Co-authored RFCs to enhance the protocol</li></ul>
<!-- l. 122 --><p class='noindent'><span class='cmsl-10'>Author of ”Rust Web Development” </span>October 2020 - December 2022
<br class='newline' /><span class="company">Manning Publications</span>, Remote <br class='newline' />Writing the book ”Rust Web Development”. Research, writing and marketing the book in partnership with
Manning. </p>
<!-- Centrifuge -->
<p class='noindent'><span class='cmsl-10'>Senior Software Engineer - Full-time </span>August 2022 - February 2023
<br class='newline' /><span class="company">Centrifuge</span>, Remote <br class='newline' />Protocol team building DeFi applications on Substrate/Polkadot in a self-governed organization.</p>
<ul class='itemize1'>
<li class='itemize'>Published technical book on building web services with Rust
<li class='itemize'>Implemented fund pool mutations on-chain, enabling users to adjust capital allocations in live pools &ndash; core feature for the lending protocol
</li>
<li class='itemize'>Created comprehensive tutorials covering async Rust, web frameworks, and deployment
<li class='itemize'>Built client-facing APIs on top of fund pools, giving external integrators programmatic access to pool operations
</li>
<li class='itemize'>Book available worldwide through Manning Publications</li></ul>
<!-- l. 131 --><p class='noindent'><span class='cmsl-10'>Sr. Solutions Architect (Professional Services) - Full-time </span>May 2021 - July 2022
<li class='itemize'>Replaced manual documentation with CI-driven auto-generation from Rust source on every PR &ndash; eliminated persistent drift between code and public docs
</li>
<li class='itemize'>Co-authored RFCs to build consensus on new protocol features across the decentralized team</li></ul>
<!-- Manning -->
<p class='noindent'><span class='cmsl-10'>Author of &ldquo;Rust Web Development&rdquo; </span>October 2020 - December 2022
<br class='newline' /><span class="company">Manning Publications</span>, Remote</p>
<ul class='itemize1'>
<li class='itemize'>Published &ldquo;Rust Web Development&rdquo; through Manning &ndash; end-to-end guide covering async Rust, web frameworks, and production deployment, distributed globally</li></ul>
<!-- Twilio -->
<p class='noindent'><span class='cmsl-10'>Sr. Solutions Architect (Professional Services) - Full-time </span>May 2021 - July 2022
<br class='newline' /><span class='cmsl-10'>Solutions Architect (Professional Services) - Full-time </span>June 2020 - May 2021
<br class='newline' /><span class="company">Twilio Inc.</span>, Remote <br class='newline' />Second Solutions Architect hired for the new EMEA Professional Services team. Enabled enterprise customers to
integrate Twilio APIs through architecture design, code reviews, and hands-on implementation support.
<br class='newline' /><span class="company">Twilio Inc.</span>, Remote <br class='newline' />Second Solutions Architect hired for the new EMEA Professional Services team. Led enterprise integrations across contact center, messaging, and voice products.
</p>
<ul class='itemize1'>
<li class='itemize'>Technical Lead for Fortune 500 client engagements, from architecture to delivery
<li class='itemize'>Technical lead for Fortune 500 engagements: debugged audio quality and latency issues, redesigned messaging flows, and advised clients on achievable architectures given their team size and resources
</li>
<li class='itemize'>Built reusable integration patterns and deliverables adopted across EMEA team
<li class='itemize'>Advocated for combining two existing lower-cost Twilio products over adopting a newer, more expensive one for a major engagement &ndash; reduced client spend while using battle-tested components
</li>
<li class='itemize'>Established technical review processes and best practices for customer implementations
<li class='itemize'>Created reusable engagement playbooks (setup checklists, edge-case discovery questions, technical review templates) adopted across the EMEA team
</li>
<li class='itemize'>Involved in hiring, onboarding, and scaling the Professional Services team</li></ul>
<!-- l. 142 --><p class='noindent'><span class='cmsl-10'>Systems Engineer - Contract </span>August 2019 - May 2020
<br class='newline' /><span class="company">Kraken Digital Currency Exchange</span>, Remote (San Francisco)<br class='newline' />Part of the first Rust team of the company, replacing the core trading engine with Rust. Worked alongside 12 highly
experienced Software Developers from all over the world. Refactor code from PHP to Rust, wrote new features in
Rust in a well-tested highly secure manner. </p>
<ul class='itemize1'>
<li class='itemize'>Re-wrote several PHP services in Rust to increase the throughput 100fold
</li>
<li class='itemize'>Wrote new services in Rust from the ground up
<li class='itemize'>Hired and onboarded engineers to scale the Professional Services team</li></ul>
</li>
<li class='itemize'>Cross-communication with different teams and the CTO</li></ul>
<!-- l. 151 --><p class='noindent'><span class='cmsl-10'>Rust Developer - Freelance </span>March 2019 - July 2019
<br class='newline' /><span class="company">Self Employed</span>, Berlin/Toronto <br class='newline' />Took time to deep-dive into Rust, founded the Rust&amp;Tell Berlin MeetUp, contributed to Rust core and created
learning paths for NodeJS developers transitioning to Rust. </p>
<!-- Kraken -->
<p class='noindent'><span class='cmsl-10'>Systems Engineer - Contract </span>August 2019 - May 2020
<br class='newline' /><span class="company">Kraken Digital Currency Exchange</span>, Remote (San Francisco)<br class='newline' />Member of the first Rust engineering team (12 engineers), replacing core banking infrastructure and API gateway.</p>
<ul class='itemize1'>
<li class='itemize'>Founded and organized the monthly ”Rust &amp; Tell Berlin” meetup (now largest Rust meetup globally)
<li class='itemize'>Migrated core banking services and API gateway from PHP to Rust, achieving 100x throughput improvement &ndash; enabling the exchange to absorb order-of-magnitude traffic growth without scaling hardware
</li>
<li class='itemize'>Contributed to Rust core and various Rust libraries
<li class='itemize'>Built new Rust services from scratch with comprehensive test coverage and security-first design
</li>
<li class='itemize'>Created Rust learning resources for NodeJS developers</li></ul>
<!-- l. 160 --><p class='noindent'><span class='cmsl-10'>Sr. Software Engineer - Freelance </span>March 2016 - February 2019
<br class='newline' /><span class="company">OSRAM</span>, <span class="company">Körber Digital</span>, <span class="company">Avenga</span>, <span class="company">ERGO Group</span>, <span class="company">GIATA</span>, <span class="company">PaperHive</span>, <span class="company">Glispa</span> (Berlin) <br class='newline' />Freelance consultant for enterprise clients. Focus on microservices architecture, IoT platforms, and frontend
development. </p>
<li class='itemize'>Worked directly with the CTO on privacy-focused architectural decisions for the trading platform</li></ul>
<!-- Self Employed -->
<p class='noindent'><span class='cmsl-10'>Rust Developer - Freelance </span>March 2019 - July 2019
<br class='newline' /><span class="company">Self Employed</span>, Berlin/Toronto</p>
<ul class='itemize1'>
<li class='itemize'>Built authentication infrastructure for <span class="company">OSRAM</span>s large-scale IoT platform (Node.js, Go, Lua)
<li class='itemize'>Founded the monthly &ldquo;Rust &amp; Tell Berlin&rdquo; meetup &ndash; grew it into the largest Rust meetup globally, still running years later
</li>
<li class='itemize'>First engineering hire at <span class="company">Körber Digital</span>; established tech stack and real-time data pipelines on AWS
<li class='itemize'>Contributed to Rust core and ecosystem libraries
</li>
<li class='itemize'>Tech Lead at <span class="company">Avenga</span>; enabled Scrum processes and refactored codebase into microservices
<li class='itemize'>Created Rust learning resources specifically for Node.js developers transitioning to systems programming</li></ul>
<!-- Freelance -->
<p class='noindent'><span class='cmsl-10'>Sr. Software Engineer - Freelance </span>March 2016 - February 2019
<br class='newline' /><span class="company">OSRAM</span>, <span class="company">K&ouml;rber Digital</span>, <span class="company">Avenga</span>, <span class="company">ERGO Group</span>, <span class="company">GIATA</span>, <span class="company">PaperHive</span>, <span class="company">Glispa</span> (Berlin) <br class='newline' />Freelance consultant for enterprise clients across IoT, logistics, tourism, and ad-tech.</p>
<ul class='itemize1'>
<li class='itemize'>Designed authentication infrastructure for <span class="company">OSRAM</span>&rsquo;s IoT platform (thousands of connected lighting devices) using Keycloak for user auth and service-to-service auth across microservices (Node.js, Go, Lua)
</li>
<li class='itemize'>Migrated legacy PHP systems to Node.js microservices with Docker at <span class="company">GIATA</span>
<li class='itemize'>First engineering hire at <span class="company">K&ouml;rber Digital</span>: chose Node.js/React/AWS stack, built real-time data pipelines with a time-series database optimized for fast retrieval of sensor data
</li>
<li class='itemize'>Built in-house analytics dashboards and ad platforms at <span class="company">Glispa</span> with AngularJS
<li class='itemize'>Decomposed <span class="company">GIATA</span>&rsquo;s monolithic tourism ERP into 6 Docker-based microservices &ndash; rewrote the hotel ingestion pipeline and mass photo upload system, significantly improving UI responsiveness and system scalability
</li>
<li class='itemize'>Mentored teams on Scrum adoption and modern JavaScript practices</li></ul>
<!-- l. 172 --><p class='noindent'><span class='cmsl-10'>Software Engineer - Full-time </span>August 2015 - February 2016
<br class='newline' /><span class="company">smartB Energy Management GmbH</span>, Berlin <br class='newline' />Worked in a small agile team creating an application for business owners to monitor energy consumption.
<li class='itemize'>Tech Lead at <span class="company">Avenga</span>: introduced Scrum and refactored a monolith into microservices to unblock parallel team development
</li>
<li class='itemize'>Built analytics dashboards and ad platforms at <span class="company">Glispa</span> (AngularJS); mentored teams on modern JavaScript practices</li></ul>
<!-- smartB -->
<p class='noindent'><span class='cmsl-10'>Software Engineer - Full-time </span>August 2015 - February 2016
<br class='newline' /><span class="company">smartB Energy Management GmbH</span>, Berlin <br class='newline' />Small agile team building energy monitoring applications for business owners.
</p>
<ul class='itemize1'>
<li class='itemize'>Full-stack development with JavaScript and Python
<li class='itemize'>Introduced pair programming and component-based frontend architecture, enabling multiple developers to work on the same codebase without conflicts
</li>
<li class='itemize'>Full-stack development with JavaScript and Python using TDD</li></ul>
</li>
<li class='itemize'>Heavy use of pair programming and TDD practices</li></ul>
<!-- l. 180 --><p class='noindent'><span class='cmsl-10'>Software Engineer - Freelance </span>March 2015 - July 2015
<br class='newline' /><span class="company">blogfoster GmbH</span>, Berlin <br class='newline' />First developer hired to rewrite existing PHP/Backbone application using NodeJS and React. </p>
<!-- blogfoster -->
<p class='noindent'><span class='cmsl-10'>Software Engineer - Freelance </span>March 2015 - July 2015
<br class='newline' /><span class="company">blogfoster GmbH</span>, Berlin <br class='newline' />First developer hired to replace legacy PHP/Backbone application with Node.js and React.</p>
<ul class='itemize1'>
<li class='itemize'>Built the first version of the ad marketplace for this young startup
</li>
<li class='itemize'>Mapped out architecture with CTO; implemented TDD practices</li></ul>
<!-- l. 188 --><p class='noindent'><span class='cmsl-10'>Frontend Developer - Full-time </span>February 2014 - March 2015
<li class='itemize'>Built the first version of the ad marketplace; co-designed architecture with the CTO using TDD from day one</li></ul>
<!-- Dalia -->
<p class='noindent'><span class='cmsl-10'>Frontend Developer - Full-time </span>February 2014 - March 2015
<br class='newline' /><span class="company">Dalia Research</span>, Berlin <br class='newline' />First and sole frontend developer at 8-person startup.</p>
<ul class='itemize1'>
<li class='itemize'>Built survey platform and analytics dashboards in AngularJS
</li>
<li class='itemize'>Translated business requirements into product features across all browsers and devices</li></ul>
<li class='itemize'>Bootstrapped the customer-facing survey platform and analytics dashboards in AngularJS &ndash; core UI remained largely untouched in production for close to 10 years</li></ul>
</div><h4 class='sectionHead' id='education'><a id='x1-40000'></a><div class='centerline'> EDUCATION </div></h4><div class='section'>
<!-- l. 200 --><p class='noindent'><span class='cmsl-10'>Bachelor of Science, Computer Science </span>September 2010 - February 2014
<p class='noindent'><span class='cmsl-10'>Bachelor of Science, Computer Science </span>September 2010 - February 2014
<br class='newline' /><span class="company">TH Ingolstadt</span><br class='newline' />Scholarship from Allianz Deutschland AG to study Computer Science, fully funded and with trainings in Scrum,
Java, PL/I and mainframe systems on the side.
</p>

View file

@ -1,30 +1,30 @@
This is pdfTeX, Version 3.141592653-2.6-1.40.27 (TeX Live 2026/dev/Arch Linux) (preloaded format=pdflatex 2026.1.20) 22 JAN 2026 15:24
This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026) (preloaded format=pdflatex 2026.3.1) 4 MAR 2026 11:52
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
**resume.tex
(./resume.tex
LaTeX2e <2024-11-01> patch level 2
L3 programming layer <2025-01-18>
LaTeX2e <2025-11-01>
L3 programming layer <2026-01-19>
(./res.cls
Document Style `res' <26 Sep 89>.
Document Class: res 2000/05/19 v1.4b Resume class
(/usr/share/texmf-dist/tex/latex/base/article.cls
Document Class: article 2024/06/29 v1.4n Standard LaTeX document class
(/usr/share/texmf-dist/tex/latex/base/size10.clo
File: size10.clo 2024/06/29 v1.4n Standard LaTeX file (size option)
(/usr/local/texlive/2026basic/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
File: size10.clo 2025/01/22 v1.4n Standard LaTeX file (size option)
)
\c@part=\count196
\c@section=\count197
\c@subsection=\count198
\c@subsubsection=\count199
\c@paragraph=\count266
\c@subparagraph=\count267
\c@figure=\count268
\c@table=\count269
\c@part=\count275
\c@section=\count276
\c@subsection=\count277
\c@subsubsection=\count278
\c@paragraph=\count279
\c@subparagraph=\count280
\c@figure=\count281
\c@table=\count282
\abovecaptionskip=\skip49
\belowcaptionskip=\skip50
\bibindent=\dimen141
\bibindent=\dimen148
)
No auxiliary output files.
@ -33,22 +33,22 @@ No auxiliary output files.
\tabular@tail=\toks19
\@ta=\toks20
\undefined@token=\toks21
\sectionwidth=\dimen142
\sectionwidth=\dimen149
\sectionskip=\skip51
\resumewidth=\dimen143
\@columnwidth=\dimen144
\c@numberofcolumns=\count270
) (/usr/share/texmf-dist/tex/latex/psnfss/helvet.sty
\resumewidth=\dimen150
\@columnwidth=\dimen151
\c@numberofcolumns=\count283
) (/usr/local/texlive/2026basic/texmf-dist/tex/latex/psnfss/helvet.sty
Package: helvet 2020/03/25 PSNFSS-v9.3 (WaS)
(/usr/share/texmf-dist/tex/latex/graphics/keyval.sty
(/usr/local/texlive/2026basic/texmf-dist/tex/latex/graphics/keyval.sty
Package: keyval 2022/05/29 v1.15 key=value parser (DPC)
\KV@toks@=\toks22
))
(/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
File: l3backend-pdftex.def 2024-05-08 L3 backend support: PDF output (pdfTeX)
\l__color_backend_stack_int=\count271
\l__pdf_internal_box=\box52
(/usr/local/texlive/2026basic/texmf-dist/tex/latex/l3backend/l3backend-pdftex.d
ef
File: l3backend-pdftex.def 2025-10-09 L3 backend support: PDF output (pdfTeX)
\l__color_backend_stack_int=\count284
)
LaTeX Warning: Unused global option(s):
@ -73,37 +73,41 @@ LaTeX Font Info: External font `cmex10' loaded for size
(Font) <7> on input line 46.
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <5> on input line 46.
[1
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}{/usr/share/texmf-dist/fonts
/enc/dvips/cm-super/cm-super-ts1.enc}]
{/usr/local/texlive/2026basic/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
Underfull \hbox (badness 10000) in paragraph at lines 121--123
[2]
[]
[3]
Underfull \hbox (badness 10000) in paragraph at lines 147--149
[]
[2] [3]
***********
LaTeX2e <2024-11-01> patch level 2
L3 programming layer <2025-01-18>
LaTeX2e <2025-11-01>
L3 programming layer <2026-01-19>
***********
)
Here is how much of TeX's memory you used:
605 strings out of 475171
10850 string characters out of 5767095
404915 words of memory out of 5000000
23670 multiletter control sequences out of 15000+600000
560438 words of font info for 41 fonts, out of 8000000 for 9000
14 hyphenation exceptions out of 8191
49i,8n,52p,364b,200s stack positions out of 10000i,1000n,20000p,200000b,200000s
</usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb></usr/share/
texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb></usr/share/texmf-dist/fon
ts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texmf-dist/fonts/type1/public
/amsfonts/cm/cmsl10.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm
1000.pfb>
Output written on resume.pdf (3 pages, 81673 bytes).
598 strings out of 469006
10756 string characters out of 5454814
445756 words of memory out of 5000000
29363 multiletter control sequences out of 15000+600000
629322 words of font info for 45 fonts, out of 8000000 for 9000
319 hyphenation exceptions out of 8191
49i,8n,52p,357b,206s stack positions out of 10000i,1000n,20000p,200000b,200000s
</Users/bastian/Library/texlive/2026basic/texmf-var/fonts/pk/ljfour/jknappen
/ec/tcrm1000.600pk></usr/local/texlive/2026basic/texmf-dist/fonts/type1/public/
amsfonts/cm/cmbx10.pfb></usr/local/texlive/2026basic/texmf-dist/fonts/type1/pub
lic/amsfonts/cm/cmbx12.pfb></usr/local/texlive/2026basic/texmf-dist/fonts/type1
/public/amsfonts/cm/cmr10.pfb></usr/local/texlive/2026basic/texmf-dist/fonts/ty
pe1/public/amsfonts/cm/cmsl10.pfb>
Output written on resume.pdf (3 pages, 77604 bytes).
PDF statistics:
40 PDF objects out of 1000 (max. 8388607)
39 PDF objects out of 1000 (max. 8388607)
24 compressed objects within 1 object stream
0 named destinations out of 1000 (max. 500000)
1 words of extra memory for PDF output out of 10000 (max. 10000000)

Binary file not shown.

View file

@ -52,7 +52,7 @@
\section{\centerline{SUMMARY}}
\vspace{8pt} % Gap between title and text
Staff Software Engineer and published author ("Rust Web Development" - Manning) with 15+ years building scalable backend systems. Currently contributing to Firefox at Mozilla, shipping code to hundreds of millions of users. Founded Rust\&Tell Berlin, the largest Rust meetup globally.
Staff Software Engineer and published author ("Rust Web Development" -- Manning) with 15+ years making pragmatic architecture decisions for backend systems at scale. Currently shipping Rust, C++, and Python code to hundreds of millions of Firefox users at Mozilla. Founded Rust\&Tell Berlin, the largest Rust meetup globally.
%----------------------------------------------------------------------------------------
@ -87,110 +87,102 @@ Staff Software Engineer and published author ("Rust Web Development" - Manning)
{\sl Staff Software Engineer - Full-time} \hfill February 2026 - Now \\
{\sl Senior Software Engineer - Full-time} \hfill July 2024 - January 2026 \\
Mozilla, Remote \\
Contributing to Firefox (desktop and mobile) shipped to hundreds of millions of users. All work is open source.
Shipping Rust, C++, and Python code across Firefox desktop and mobile to hundreds of millions of users. All work is open source.
\begin{itemize} \itemsep -2pt
\item Leading the Image Service project: designing and implementing a cross-team service to provide favicons and images to Firefox Desktop and mobile
\item Contributor to UniFFI, Mozilla's multi-language bindings generator for Rust, enabling Rust code to be called from Kotlin (Android), Swift (iOS), Python, and JavaScript (Desktop)
\item Implemented OHTTP (Oblivious HTTP) support in application-services, enabling privacy-preserving API requests across Firefox Desktop, Android, and iOS
\item Building and maintaining the Push notification service for Firefox (async Rust backend handling millions of concurrent connections)
\item Contributing directly to Firefox (mozilla-central): shipping Rust and C++ code to Desktop
\item Maintaining Merino, the web service powering Firefox Suggest with Python/FastAPI
\item Creating internal Rust learning resources and leading "Rusty Fridays" sessions for engineers
\item Consolidated four separate favicon implementations across Firefox teams into a single Image Service -- chose to extend an existing Python/Airflow pipeline rather than build a new microservice, now serving 4 teams from one manifest behind a GCS-backed API
\item Implemented Oblivious HTTP (OHTTP) from scratch in application-services (shared Rust component cross-compiled to Swift and Kotlin via UniFFI) plus handwritten C++ and Rust for Firefox Desktop -- users are now unidentifiable when making privacy-sensitive requests across all platforms
\item Maintained Firefox Push notification service (50k requests/second, sub-200ms latency): reduced memory footprint, added circuit breakers, and built Grafana dashboards for operational visibility
\item Contributor and code reviewer for UniFFI, Mozilla's multi-language bindings generator enabling Rust code to be called from Kotlin, Swift, Python, and JavaScript
\item Built Rust extensions for Merino (Python/FastAPI service powering Firefox Suggest); wrote RFCs, mapped out project plans, and surfaced cross-team blockers early
\item Led ``Rusty Fridays'' internal education sessions, guiding engineers through Rust adoption and mentoring junior contributors across teams
\end{itemize}
{\sl Senior Systems Engineer, Team Lead - Full-time} \hfill April 2023 - June 2024 \\
Toposware, Remote \\
Developing a Peer-to-Peer distributed network, with high throughput and low latency. Part of the core team, consisting out of 4 people. Implementing the protocol and the services in-house. Debugging of production issues, implementing the core protocol, re-wrote the CLI, led benchmark initiatives, set up part of the CI/CD flow and Grafana dashboards.
\begin{itemize} \itemsep -2pt % Reduce space between items
\item Increased the throughput of a node 10x
\item Re-wrote the CLI to add configuration and robustness, better user guidance
\item Led a team of 3 engineers for an internal benchmark project
\item Implemented load testing for part of the codebase
\item Connected external EVM chains to the core network
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 and targeting the actual bottleneck -- optimized batch processing and serialization paths, tuned message volumes to avoid throughput degradation -- rather than redesigning the consensus layer
\item Led benchmark initiative with 3 engineers that revealed nodes were compute-bound on crypto operations, not network-limited -- redirected optimization effort accordingly
\item Rewrote the CLI from scratch, replacing error-prone CLI parameters with local config files -- reduced operator misconfiguration during node setup
\item Built an EVM bridge connecting external Ethereum-compatible chains to the core network
\item Set up load testing, CI/CD pipelines, and Grafana dashboards for production observability
\end{itemize}
{\sl Senior Software Engineer - Full-time} \hfill August 2022 - February 2023 \\
Centrifuge, Remote \\
Part of the protocol team implementing the DeFi application on top of Substrate. Working in a self-governed organization, leading the documentation efforts around Rust and the protocol implementation.
\begin{itemize} \itemsep -2pt % Reduce space between items
\item Implemented the auto-generation of the online documentation with every PR
\item Enabled mutating of money pools in the protocol
\item Implemented client facing APIs on top of the money fund pools
\item Co-authored RFCs to enhance the protocol
Protocol team building DeFi applications on Substrate/Polkadot in a self-governed organization.
\begin{itemize} \itemsep -2pt
\item Implemented fund pool mutations on-chain, enabling users to adjust capital allocations in live pools -- core feature for the lending protocol
\item Built client-facing APIs on top of fund pools, giving external integrators programmatic access to pool operations
\item Replaced manual documentation with CI-driven auto-generation from Rust source on every PR -- eliminated persistent drift between code and public docs
\item Co-authored RFCs to build consensus on new protocol features across the decentralized team
\end{itemize}
{\sl Author of "Rust Web Development"} \hfill October 2020 - December 2022 \\
Manning Publications, Remote \\
Writing the book "Rust Web Development". Research, writing and marketing the book in partnership with Manning.
\begin{itemize} \itemsep -2pt
\item Published technical book on building web services with Rust
\item Created comprehensive tutorials covering async Rust, web frameworks, and deployment
\item Book available worldwide through Manning Publications
\item Published ``Rust Web Development'' through Manning -- end-to-end guide covering async Rust, web frameworks, and production deployment, distributed globally
\end{itemize}
{\sl Sr. Solutions Architect (Professional Services) - Full-time} \hfill May 2021 - July 2022 \\
{\sl Solutions Architect (Professional Services) - Full-time} \hfill June 2020 - May 2021 \\
Twilio Inc., Remote \\
Second Solutions Architect hired for the new EMEA Professional Services team. Enabled enterprise customers to integrate Twilio APIs through architecture design, code reviews, and hands-on implementation support.
\begin{itemize} \itemsep -2pt % Reduce space between items
\item Technical Lead for Fortune 500 client engagements, from architecture to delivery
\item Built reusable integration patterns and deliverables adopted across EMEA team
\item Established technical review processes and best practices for customer implementations
\item Involved in hiring, onboarding, and scaling the Professional Services team
Second Solutions Architect hired for the new EMEA Professional Services team. Led enterprise integrations across contact center, messaging, and voice products.
\begin{itemize} \itemsep -2pt
\item Technical lead for Fortune 500 engagements: debugged audio quality and latency issues, redesigned messaging flows, and advised clients on achievable architectures given their team size and resources
\item Advocated for combining two existing lower-cost Twilio products over adopting a newer, more expensive one for a major engagement -- reduced client spend while using battle-tested components
\item Created reusable engagement playbooks (setup checklists, edge-case discovery questions, technical review templates) adopted across the EMEA team
\item Hired and onboarded engineers to scale the Professional Services team
\end{itemize}
{\sl Systems Engineer - Contract} \hfill August 2019 - May 2020 \\
Kraken Digital Currency Exchange, Remote (San Francisco)\\
Part of the first Rust team of the company, replacing the core trading engine with Rust. Worked alongside 12 highly experienced Software Developers from all over the world. Refactor code from PHP to Rust, wrote new features in Rust in a well-tested highly secure manner.
Member of the first Rust engineering team (12 engineers), replacing core banking infrastructure and API gateway.
\begin{itemize} \itemsep -2pt
\item Re-wrote several PHP services in Rust to increase the throughput 100fold
\item Wrote new services in Rust from the ground up
\item Cross-communication with different teams and the CTO
\item Migrated core banking services and API gateway from PHP to Rust, achieving 100x throughput improvement -- enabling the exchange to absorb order-of-magnitude traffic growth without scaling hardware
\item Built new Rust services from scratch with comprehensive test coverage and security-first design
\item Worked directly with the CTO on privacy-focused architectural decisions for the trading platform
\end{itemize}
{\sl Rust Developer - Freelance} \hfill March 2019 - July 2019 \\
Self Employed, Berlin/Toronto \\
Took time to deep-dive into Rust, founded the Rust\&Tell Berlin MeetUp, contributed to Rust core and created learning paths for NodeJS developers transitioning to Rust.
\begin{itemize} \itemsep -2pt
\item Founded and organized the monthly "Rust \& Tell Berlin" meetup (now largest Rust meetup globally)
\item Contributed to Rust core and various Rust libraries
\item Created Rust learning resources for NodeJS developers
\item Founded the monthly ``Rust \& Tell Berlin'' meetup -- grew it into the largest Rust meetup globally, still running years later
\item Contributed to Rust core and ecosystem libraries
\item Created Rust learning resources specifically for Node.js developers transitioning to systems programming
\end{itemize}
{\sl Sr. Software Engineer - Freelance} \hfill March 2016 - February 2019 \\
OSRAM, K\"orber Digital, Avenga, ERGO Group, GIATA, PaperHive, Glispa (Berlin) \\
Freelance consultant for enterprise clients. Focus on microservices architecture, IoT platforms, and frontend development.
Freelance consultant for enterprise clients across IoT, logistics, tourism, and ad-tech.
\begin{itemize} \itemsep -2pt
\item Built authentication infrastructure for OSRAM's large-scale IoT platform (Node.js, Go, Lua)
\item First engineering hire at K\"orber Digital; established tech stack and real-time data pipelines on AWS
\item Tech Lead at Avenga; enabled Scrum processes and refactored codebase into microservices
\item Migrated legacy PHP systems to Node.js microservices with Docker at GIATA
\item Built in-house analytics dashboards and ad platforms at Glispa with AngularJS
\item Mentored teams on Scrum adoption and modern JavaScript practices
\item Designed authentication infrastructure for OSRAM's IoT platform (thousands of connected lighting devices) using Keycloak for user auth and service-to-service auth across microservices (Node.js, Go, Lua)
\item First engineering hire at K\"orber Digital: chose Node.js/React/AWS stack, built real-time data pipelines with a time-series database optimized for fast retrieval of sensor data
\item Decomposed GIATA's monolithic tourism ERP into 6 Docker-based microservices -- rewrote the hotel ingestion pipeline and mass photo upload system, significantly improving UI responsiveness and system scalability
\item Tech Lead at Avenga: introduced Scrum and refactored a monolith into microservices to unblock parallel team development
\item Built analytics dashboards and ad platforms at Glispa (AngularJS); mentored teams on modern JavaScript practices
\end{itemize}
{\sl Software Engineer - Full-time} \hfill August 2015 - February 2016 \\
smartB Energy Management GmbH, Berlin \\
Worked in a small agile team creating an application for business owners to monitor energy consumption.
Small agile team building energy monitoring applications for business owners.
\begin{itemize} \itemsep -2pt
\item Full-stack development with JavaScript and Python
\item Heavy use of pair programming and TDD practices
\item Introduced pair programming and component-based frontend architecture, enabling multiple developers to work on the same codebase without conflicts
\item Full-stack development with JavaScript and Python using TDD
\end{itemize}
{\sl Software Engineer - Freelance} \hfill March 2015 - July 2015 \\
blogfoster GmbH, Berlin \\
First developer hired to rewrite existing PHP/Backbone application using NodeJS and React.
First developer hired to replace legacy PHP/Backbone application with Node.js and React.
\begin{itemize} \itemsep -2pt
\item Built the first version of the ad marketplace for this young startup
\item Mapped out architecture with CTO; implemented TDD practices
\item Built the first version of the ad marketplace; co-designed architecture with the CTO using TDD from day one
\end{itemize}
{\sl Frontend Developer - Full-time} \hfill February 2014 - March 2015 \\
Dalia Research, Berlin \\
First and sole frontend developer at 8-person startup.
\begin{itemize} \itemsep -2pt
\item Built survey platform and analytics dashboards in AngularJS
\item Translated business requirements into product features across all browsers and devices
\item Bootstrapped the customer-facing survey platform and analytics dashboards in AngularJS -- core UI remained largely untouched in production for close to 10 years
\end{itemize}
\section{\centerline{EDUCATION}}