199 lines
No EOL
12 KiB
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} |