From f48c0f5c342f6e6b211ac562c4ee0bdfbb6e2e7d Mon Sep 17 00:00:00 2001 From: Bastian Gruber Date: Wed, 4 Mar 2026 11:52:26 -0400 Subject: [PATCH] chore: update CV texts --- index.html | 218 ++++++++++++++++++++++++++--------------------------- resume.log | 100 ++++++++++++------------ resume.pdf | Bin 81673 -> 77604 bytes resume.tex | 102 ++++++++++++------------- 4 files changed, 204 insertions(+), 216 deletions(-) diff --git a/index.html b/index.html index 49d2060..e8e4954 100644 --- a/index.html +++ b/index.html @@ -1,164 +1,156 @@ - - - Bastian Gruber - CV - - - - - + + + Bastian Gruber - CV + + + + + -
-
Bastian Gruber 
 
 
-
- - - -
Professional  
LinkedIn: linkedin.com/in/bastiangruber 
Book: rustwebdevelopment.com  
E-Mail: gruberbastian@me.com  
Website: bastiangruber.ca  
- -
Code  
GitHub: github.com/gruberb  
Git: code.novanexus.ca/gruberb 
+
+
Bastian Gruber
+
+ + + +
Professional
LinkedIn: linkedin.com/in/bastiangruber
Book: rustwebdevelopment.com
E-Mail: gruberbastian@me.com
Website: bastiangruber.ca

SUMMARY

-

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.

SKILLS

Languages: Rust, Python, TypeScript, JavaScript, Go
Frontend: React, Angular, Vue.js
Backend: Rust (Actix, Warp, Axum), Python (FastAPI), Node.js, Go
Patterns: REST, GraphQL, gRPC, async Rust, distributed systems (P2P)
Infrastructure: AWS, Google Cloud, Docker, Kubernetes, CI/CD, Grafana
Domains: Systems Programming, FFI, Distributed Systems, Web Services, Micro Services, IoT, Blockchain, Firefox

PROFESSIONAL EXPERIENCE

-

Staff Software Engineer - Full-time February 2026 - Now + +

Staff Software Engineer - Full-time February 2026 - Now
Senior Software Engineer - Full-time July 2024 - January 2026 -
Mozilla, Remote
Contributing to Firefox (desktop and mobile) shipped to hundreds of millions of users. All work is open source. +
Mozilla, Remote
Shipping Rust, C++, and Python code across Firefox desktop and mobile to hundreds of millions of users. All work is open source.

    -
  • Leading the Image Service project: designing and implementing a cross-team service to provide favicons - and images to Firefox Desktop and mobile +
  • 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
  • -
  • 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) +
  • 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
  • -
  • Implemented OHTTP (Oblivious HTTP) support in application-services, enabling privacy-preserving - API requests across Firefox Desktop, Android, and iOS +
  • Maintained Firefox Push notification service (50k requests/second, sub-200ms latency): reduced memory footprint, added circuit breakers, and built Grafana dashboards for operational visibility
  • +
  • Contributor and code reviewer for UniFFI, Mozilla’s multi-language bindings generator enabling Rust code to be called from Kotlin, Swift, Python, and JavaScript +
  • +
  • Built Rust extensions for Merino (Python/FastAPI service powering Firefox Suggest); wrote RFCs, mapped out project plans, and surfaced cross-team blockers early +
  • +
  • Led “Rusty Fridays” internal education sessions, guiding engineers through Rust adoption and mentoring junior contributors across teams
-
  • Building and maintaining the Push notification service for Firefox (async Rust backend handling - millions of concurrent connections) -
  • -
  • Contributing directly to Firefox (mozilla-central): shipping Rust and C++ code to Desktop -
  • -
  • Maintaining Merino, the web service powering Firefox Suggest with Python/FastAPI -
  • -
  • Creating internal Rust learning resources and leading ”Rusty Fridays” sessions for engineers
  • -

    Senior Systems Engineer, Team Lead - Full-time 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.

    + +

    Senior Systems Engineer, Team Lead - Full-time April 2023 - June 2024 +
    Toposware, Remote
    Core team of 4 building a peer-to-peer distributed network protocol from scratch in Rust.

      -
    • Increased the throughput of a node 10x +
    • 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
    • -
    • Re-wrote the CLI to add configuration and robustness, better user guidance +
    • Led benchmark initiative with 3 engineers that revealed nodes were compute-bound on encryption/decryption, not network-limited – findings redirected optimization effort away from networking toward crypto performance
    • -
    • Led a team of 3 engineers for an internal benchmark project +
    • Rewrote the CLI from scratch, replacing error-prone CLI parameters with local config files – reduced operator misconfiguration during node setup
    • -
    • Implemented load testing for part of the codebase +
    • Built an EVM bridge connecting external Ethereum-compatible chains to the core network
    • -
    • Connected external EVM chains to the core network
    -

    Senior Software Engineer - Full-time 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.

    -
      -
    • Implemented the auto-generation of the online documentation with every PR -
    • -
    • Enabled mutating of money pools in the protocol -
    • -
    • Implemented client facing APIs on top of the money fund pools +
    • Set up load testing, CI/CD pipelines, and Grafana dashboards for production observability
    - -
  • Co-authored RFCs to enhance the protocol
  • -

    Author of ”Rust Web Development” October 2020 - December 2022 -
    Manning Publications, Remote
    Writing the book ”Rust Web Development”. Research, writing and marketing the book in partnership with -Manning.

    + +

    Senior Software Engineer - Full-time August 2022 - February 2023 +
    Centrifuge, Remote
    Protocol team building DeFi applications on Substrate/Polkadot in a self-governed organization.

      -
    • Published technical book on building web services with Rust +
    • Implemented fund pool mutations on-chain, enabling users to adjust capital allocations in live pools – core feature for the lending protocol
    • -
    • Created comprehensive tutorials covering async Rust, web frameworks, and deployment +
    • Built client-facing APIs on top of fund pools, giving external integrators programmatic access to pool operations
    • -
    • Book available worldwide through Manning Publications
    -

    Sr. Solutions Architect (Professional Services) - Full-time May 2021 - July 2022 +

  • Replaced manual documentation with CI-driven auto-generation from Rust source on every PR – eliminated persistent drift between code and public docs +
  • +
  • Co-authored RFCs to build consensus on new protocol features across the decentralized team
  • + + +

    Author of “Rust Web Development” October 2020 - December 2022 +
    Manning Publications, Remote

    +
      +
    • Published “Rust Web Development” through Manning – end-to-end guide covering async Rust, web frameworks, and production deployment, distributed globally
    + + +

    Sr. Solutions Architect (Professional Services) - Full-time May 2021 - July 2022
    Solutions Architect (Professional Services) - Full-time 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. +
    Twilio Inc., Remote
    Second Solutions Architect hired for the new EMEA Professional Services team. Led enterprise integrations across contact center, messaging, and voice products.

      -
    • Technical Lead for Fortune 500 client engagements, from architecture to delivery +
    • 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
    • -
    • Built reusable integration patterns and deliverables adopted across EMEA team +
    • 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
    • -
    • Established technical review processes and best practices for customer implementations +
    • Created reusable engagement playbooks (setup checklists, edge-case discovery questions, technical review templates) adopted across the EMEA team
    • -
    • Involved in hiring, onboarding, and scaling the Professional Services team
    -

    Systems Engineer - Contract 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.

    -
      -
    • Re-wrote several PHP services in Rust to increase the throughput 100fold -
    • -
    • Wrote new services in Rust from the ground up +
    • Hired and onboarded engineers to scale the Professional Services team
    - -
  • Cross-communication with different teams and the CTO
  • -

    Rust Developer - Freelance 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.

    + +

    Systems Engineer - Contract August 2019 - May 2020 +
    Kraken Digital Currency Exchange, Remote (San Francisco)
    Member of the first Rust engineering team (12 engineers), replacing core banking infrastructure and API gateway.

      -
    • Founded and organized the monthly ”Rust & Tell Berlin” meetup (now largest Rust meetup globally) +
    • 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
    • -
    • Contributed to Rust core and various Rust libraries +
    • Built new Rust services from scratch with comprehensive test coverage and security-first design
    • -
    • Created Rust learning resources for NodeJS developers
    -

    Sr. Software Engineer - Freelance March 2016 - February 2019 -
    OSRAM, Körber Digital, Avenga, ERGO Group, GIATA, PaperHive, Glispa (Berlin)
    Freelance consultant for enterprise clients. Focus on microservices architecture, IoT platforms, and frontend -development.

    +
  • Worked directly with the CTO on privacy-focused architectural decisions for the trading platform
  • + + +

    Rust Developer - Freelance March 2019 - July 2019 +
    Self Employed, Berlin/Toronto

      -
    • Built authentication infrastructure for OSRAM’s large-scale IoT platform (Node.js, Go, Lua) +
    • Founded the monthly “Rust & Tell Berlin” meetup – grew it into the largest Rust meetup globally, still running years later
    • -
    • First engineering hire at Körber Digital; established tech stack and real-time data pipelines on AWS +
    • Contributed to Rust core and ecosystem libraries
    • -
    • Tech Lead at Avenga; enabled Scrum processes and refactored codebase into microservices +
    • Created Rust learning resources specifically for Node.js developers transitioning to systems programming
    + + +

    Sr. Software Engineer - Freelance March 2016 - February 2019 +
    OSRAM, Körber Digital, Avenga, ERGO Group, GIATA, PaperHive, Glispa (Berlin)
    Freelance consultant for enterprise clients across IoT, logistics, tourism, and ad-tech.

    +
      +
    • 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)
    • -
    • Migrated legacy PHP systems to Node.js microservices with Docker at GIATA +
    • First engineering hire at Körber Digital: chose Node.js/React/AWS stack, built real-time data pipelines with a time-series database optimized for fast retrieval of sensor data
    • -
    • Built in-house analytics dashboards and ad platforms at Glispa with AngularJS +
    • 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
    • -
    • Mentored teams on Scrum adoption and modern JavaScript practices
    -

    Software Engineer - Full-time 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. +

  • Tech Lead at Avenga: introduced Scrum and refactored a monolith into microservices to unblock parallel team development +
  • +
  • Built analytics dashboards and ad platforms at Glispa (AngularJS); mentored teams on modern JavaScript practices
  • + + +

    Software Engineer - Full-time August 2015 - February 2016 +
    smartB Energy Management GmbH, Berlin
    Small agile team building energy monitoring applications for business owners.

      -
    • Full-stack development with JavaScript and Python +
    • Introduced pair programming and component-based frontend architecture, enabling multiple developers to work on the same codebase without conflicts +
    • +
    • Full-stack development with JavaScript and Python using TDD
    - -
  • Heavy use of pair programming and TDD practices
  • -

    Software Engineer - Freelance March 2015 - July 2015 -
    blogfoster GmbH, Berlin
    First developer hired to rewrite existing PHP/Backbone application using NodeJS and React.

    + +

    Software Engineer - Freelance March 2015 - July 2015 +
    blogfoster GmbH, Berlin
    First developer hired to replace legacy PHP/Backbone application with Node.js and React.

      -
    • Built the first version of the ad marketplace for this young startup -
    • -
    • Mapped out architecture with CTO; implemented TDD practices
    -

    Frontend Developer - Full-time February 2014 - March 2015 -
    Dalia Research, Berlin
    First and sole frontend developer at 8-person startup.

    +
  • Built the first version of the ad marketplace; co-designed architecture with the CTO using TDD from day one
  • + + +

    Frontend Developer - Full-time February 2014 - March 2015 +
    Dalia Research, Berlin
    First and sole frontend developer at 8-person startup.

      -
    • Built survey platform and analytics dashboards in AngularJS -
    • -
    • Translated business requirements into product features across all browsers and devices
    +
  • Bootstrapped the customer-facing survey platform and analytics dashboards in AngularJS – core UI remained largely untouched in production for close to 10 years
  • +

    EDUCATION

    -

    Bachelor of Science, Computer Science September 2010 - February 2014 +

    Bachelor of Science, Computer Science September 2010 - February 2014
    TH Ingolstadt
    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.

    - - + + \ No newline at end of file diff --git a/resume.log b/resume.log index 5237b1b..36a2222 100644 --- a/resume.log +++ b/resume.log @@ -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 - -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 + +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) diff --git a/resume.pdf b/resume.pdf index 5299a9ce6860ceb9d8bd6ade4e0811399c5c529f..b1e9f46c51414e48747d50ac7021891fbd8fb2d3 100644 GIT binary patch delta 34402 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�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 diff --git a/resume.tex b/resume.tex index 3690901..f30e0d2 100644 --- a/resume.tex +++ b/resume.tex @@ -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}}