CV/resume.tex

199 lines
No EOL
12 KiB
TeX

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Long Professional Curriculum Vitae
% LaTeX Template
% Version 1.1 (9/12/12)
%
% This template has been downloaded from:
% http://www.latextemplates.com
%
% Original author:
% Rensselaer Polytechnic Institute (http://www.rpi.edu/dept/arc/training/latex/resumes/)
%
% Important note:
% This template requires the res.cls file to be in the same directory as the
% .tex file. The res.cls file provides the resume style used for structuring the
% document.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%----------------------------------------------------------------------------------------
% PACKAGES AND OTHER DOCUMENT CONFIGURATIONS
%----------------------------------------------------------------------------------------
\documentclass[10pt]{res} % Use the res.cls style, the font size can be changed to 11pt or 12pt here
\usepackage{helvet} % Default font is the helvetica postscript font
%\usepackage{newcent} % To change the default font to the new century schoolbook postscript font uncomment this line and comment the one above
\newsectionwidth{0pt} % Stops section indenting
\begin{document}
%----------------------------------------------------------------------------------------
% YOUR NAME AND ADDRESS(ES) SECTION
%----------------------------------------------------------------------------------------
\name{Bastian Gruber\\ \\} % Your name at the top
% If you don't want one of the addresses, simply remove all the text in the first or second \address{} bracket
\address{{\bf Professional} \\ LinkedIn: linkedin.com/in/bastiangruber \\ Book: rustwebdevelopment.com \\ E-Mail: gruberbastian@me.com \\ Website: bastiangruber.ca}
\address{{\bf Code} \\ GitHub: github.com/gruberb \\ Git: code.novanexus.ca/gruberb} % Your address 2
%----------------------------------------------------------------------------------------
\begin{resume}
%----------------------------------------------------------------------------------------
% OBJECTIVE SECTION
%----------------------------------------------------------------------------------------
\section{\centerline{SUMMARY}}
\vspace{8pt} % Gap between title and text
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.
%----------------------------------------------------------------------------------------
\vspace{0.2in} % Some whitespace between sections
%----------------------------------------------------------------------------------------
% SKILLS SECTION
%----------------------------------------------------------------------------------------
\section{\centerline{SKILLS}}
\vspace{8pt} % Gap between title and text
{\bf Languages:} Rust, Python, TypeScript, JavaScript, Go \\
{\bf Frontend:} React, Angular, Vue.js \\
{\bf Backend:} Rust (Actix, Warp, Axum), Python (FastAPI), Node.js, Go \\
{\bf Patterns:} REST, GraphQL, gRPC, async Rust, distributed systems (P2P) \\
{\bf Infrastructure:} AWS, Google Cloud, Docker, Kubernetes, CI/CD, Grafana \\
{\bf Domains:} Systems Programming, FFI, Distributed Systems, Web Services, Micro Services, IoT, Blockchain, Firefox
%----------------------------------------------------------------------------------------
\vspace{0.2in} % Some whitespace between sections
%----------------------------------------------------------------------------------------
% PROFESSIONAL EXPERIENCE SECTION
%----------------------------------------------------------------------------------------
\section{\centerline{PROFESSIONAL EXPERIENCE}}
\vspace{8pt} % Gap between title and text
{\sl Staff Software Engineer - Full-time} \hfill February 2026 - Now \\
{\sl Senior Software Engineer - Full-time} \hfill July 2024 - January 2026 \\
Mozilla, Remote \\
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 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 \\
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 \\
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 \\
\begin{itemize} \itemsep -2pt
\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. 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)\\
Member of the first Rust engineering team (12 engineers), replacing core banking infrastructure and API gateway.
\begin{itemize} \itemsep -2pt
\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 \\
\begin{itemize} \itemsep -2pt
\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 across IoT, logistics, tourism, and ad-tech.
\begin{itemize} \itemsep -2pt
\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 \\
Small agile team building energy monitoring applications for business owners.
\begin{itemize} \itemsep -2pt
\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 replace legacy PHP/Backbone application with Node.js and React.
\begin{itemize} \itemsep -2pt
\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 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}}
\vspace{8pt} % Gap between title and text
{\sl Bachelor of Science, Computer Science} \hfill 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.
\end{resume}
\end{document}