chore: update CV texts
This commit is contained in:
parent
eb73bf2145
commit
f48c0f5c34
4 changed files with 204 additions and 216 deletions
218
index.html
218
index.html
|
|
@ -1,164 +1,156 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang='en-US' xml:lang='en-US'>
|
<html lang='en-US' xml:lang='en-US'>
|
||||||
<head> <title>Bastian Gruber - CV</title>
|
<head> <title>Bastian Gruber - CV</title>
|
||||||
<meta charset='utf-8' />
|
<meta charset='utf-8' />
|
||||||
<meta content='TeX4ht (https://tug.org/tex4ht/)' name='generator' />
|
<meta content='TeX4ht (https://tug.org/tex4ht/)' name='generator' />
|
||||||
<meta content='width=device-width,initial-scale=1' name='viewport' />
|
<meta content='width=device-width,initial-scale=1' name='viewport' />
|
||||||
<link href='resume.css' rel='stylesheet' type='text/css' />
|
<link href='resume.css' rel='stylesheet' type='text/css' />
|
||||||
<meta content='resume.tex' name='src' />
|
<meta content='resume.tex' name='src' />
|
||||||
<link href="style.css" rel="stylesheet" type="text/css" /></head><body>
|
<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>
|
<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>
|
</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>
|
<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-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-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-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-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-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>
|
</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'>
|
<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
|
<!-- l. 55 --><p class='noindent'>Staff Software Engineer and published author (“Rust Web Development” – Manning) with 15+ years making
|
||||||
scalable backend systems. Currently contributing to Firefox at Mozilla, shipping code to hundreds of millions of
|
pragmatic architecture decisions for backend systems at scale. Currently shipping Rust, C++, and Python code to
|
||||||
users. Founded Rust&Tell Berlin, the largest Rust meetup globally.
|
hundreds of millions of Firefox users at Mozilla. Founded Rust&Tell Berlin, the largest Rust meetup globally.
|
||||||
</p>
|
</p>
|
||||||
</div><h4 class='sectionHead' id='skills'><a id='x1-20000'></a><div class='centerline'> SKILLS </div></h4><div class='section'>
|
</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,
|
<!-- 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
|
Firefox
|
||||||
</p>
|
</p>
|
||||||
</div><h4 class='sectionHead' id='professional-experience'><a id='x1-30000'></a><div class='centerline'> PROFESSIONAL EXPERIENCE </div></h4><div class='section'>
|
</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='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>
|
</p>
|
||||||
<ul class='itemize1'>
|
<ul class='itemize1'>
|
||||||
<li class='itemize'>Leading the Image Service project: designing and implementing a cross-team service to provide favicons
|
<li class='itemize'>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
|
||||||
and images to Firefox Desktop and mobile
|
|
||||||
</li>
|
</li>
|
||||||
<li class='itemize'>Contributor to UniFFI, Mozilla’s multi-language bindings generator for Rust, enabling Rust code to
|
<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 – users are now unidentifiable when making privacy-sensitive requests across all platforms
|
||||||
be called from Kotlin (Android), Swift (iOS), Python, and JavaScript (Desktop)
|
|
||||||
</li>
|
</li>
|
||||||
<li class='itemize'>Implemented OHTTP (Oblivious HTTP) support in application-services, enabling privacy-preserving
|
<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
|
||||||
API requests across Firefox Desktop, Android, and iOS
|
|
||||||
</li>
|
</li>
|
||||||
|
<li class='itemize'>Contributor and code reviewer for UniFFI, Mozilla’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 “Rusty Fridays” 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
|
<!-- Toposware -->
|
||||||
millions of concurrent connections)
|
<p class='noindent'><span class='cmsl-10'>Senior Systems Engineer, Team Lead - Full-time </span>April 2023 - June 2024
|
||||||
</li>
|
<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>
|
||||||
<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>
|
|
||||||
<ul class='itemize1'>
|
<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 – optimized batch processing and serialization paths, tuned message volumes to avoid throughput degradation – rather than redesigning the consensus layer
|
||||||
</li>
|
</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 – findings redirected optimization effort away from networking toward crypto performance
|
||||||
</li>
|
</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 – reduced operator misconfiguration during node setup
|
||||||
</li>
|
</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>
|
||||||
<li class='itemize'>Connected external EVM chains to the core network</li></ul>
|
<li class='itemize'>Set up load testing, CI/CD pipelines, and Grafana dashboards for production observability</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>
|
<!-- Centrifuge -->
|
||||||
<li class='itemize'>Co-authored RFCs to enhance the protocol</li></ul>
|
<p class='noindent'><span class='cmsl-10'>Senior Software Engineer - Full-time </span>August 2022 - February 2023
|
||||||
<!-- 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">Centrifuge</span>, Remote <br class='newline' />Protocol team building DeFi applications on Substrate/Polkadot in a self-governed organization.</p>
|
||||||
<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>
|
|
||||||
<ul class='itemize1'>
|
<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 – core feature for the lending protocol
|
||||||
</li>
|
</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>
|
||||||
<li class='itemize'>Book available worldwide through Manning Publications</li></ul>
|
<li class='itemize'>Replaced manual documentation with CI-driven auto-generation from Rust source on every PR – eliminated persistent drift between code and public docs
|
||||||
<!-- l. 131 --><p class='noindent'><span class='cmsl-10'>Sr. Solutions Architect (Professional Services) - Full-time </span>May 2021 - July 2022
|
</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 “Rust Web Development” </span>October 2020 - December 2022
|
||||||
|
<br class='newline' /><span class="company">Manning Publications</span>, Remote</p>
|
||||||
|
<ul class='itemize1'>
|
||||||
|
<li class='itemize'>Published “Rust Web Development” through Manning – 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='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
|
<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.
|
||||||
integrate Twilio APIs through architecture design, code reviews, and hands-on implementation support.
|
|
||||||
</p>
|
</p>
|
||||||
<ul class='itemize1'>
|
<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>
|
||||||
<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 – reduced client spend while using battle-tested components
|
||||||
</li>
|
</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>
|
||||||
<li class='itemize'>Involved in hiring, onboarding, and scaling the Professional Services team</li></ul>
|
<li class='itemize'>Hired and onboarded engineers to scale 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>
|
<!-- Kraken -->
|
||||||
<li class='itemize'>Cross-communication with different teams and the CTO</li></ul>
|
<p class='noindent'><span class='cmsl-10'>Systems Engineer - Contract </span>August 2019 - May 2020
|
||||||
<!-- l. 151 --><p class='noindent'><span class='cmsl-10'>Rust Developer - Freelance </span>March 2019 - July 2019
|
<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>
|
||||||
<br class='newline' /><span class="company">Self Employed</span>, Berlin/Toronto <br class='newline' />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. </p>
|
|
||||||
<ul class='itemize1'>
|
<ul class='itemize1'>
|
||||||
<li class='itemize'>Founded and organized the monthly ”Rust & 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 – enabling the exchange to absorb order-of-magnitude traffic growth without scaling hardware
|
||||||
</li>
|
</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>
|
||||||
<li class='itemize'>Created Rust learning resources for NodeJS developers</li></ul>
|
<li class='itemize'>Worked directly with the CTO on privacy-focused architectural decisions for the trading platform</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
|
<!-- Self Employed -->
|
||||||
development. </p>
|
<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'>
|
<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 “Rust & Tell Berlin” meetup – grew it into the largest Rust meetup globally, still running years later
|
||||||
</li>
|
</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>
|
||||||
<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ö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>’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>
|
||||||
<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ö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>
|
||||||
<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>’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
|
||||||
</li>
|
</li>
|
||||||
<li class='itemize'>Mentored teams on Scrum adoption and modern JavaScript practices</li></ul>
|
<li class='itemize'>Tech Lead at <span class="company">Avenga</span>: introduced Scrum and refactored a monolith into microservices to unblock parallel team development
|
||||||
<!-- l. 172 --><p class='noindent'><span class='cmsl-10'>Software Engineer - Full-time </span>August 2015 - February 2016
|
</li>
|
||||||
<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'>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>
|
</p>
|
||||||
<ul class='itemize1'>
|
<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>
|
<!-- blogfoster -->
|
||||||
<li class='itemize'>Heavy use of pair programming and TDD practices</li></ul>
|
<p class='noindent'><span class='cmsl-10'>Software Engineer - Freelance </span>March 2015 - July 2015
|
||||||
<!-- 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 replace legacy PHP/Backbone application with Node.js and React.</p>
|
||||||
<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>
|
|
||||||
<ul class='itemize1'>
|
<ul class='itemize1'>
|
||||||
<li class='itemize'>Built the first version of the ad marketplace for this young startup
|
<li class='itemize'>Built the first version of the ad marketplace; co-designed architecture with the CTO using TDD from day one</li></ul>
|
||||||
</li>
|
|
||||||
<li class='itemize'>Mapped out architecture with CTO; implemented TDD practices</li></ul>
|
<!-- Dalia -->
|
||||||
<!-- l. 188 --><p class='noindent'><span class='cmsl-10'>Frontend Developer - Full-time </span>February 2014 - March 2015
|
<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>
|
<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'>
|
<ul class='itemize1'>
|
||||||
<li class='itemize'>Built survey platform and analytics dashboards in AngularJS
|
<li class='itemize'>Bootstrapped the customer-facing survey platform and analytics dashboards in AngularJS – core UI remained largely untouched in production for close to 10 years</li></ul>
|
||||||
</li>
|
|
||||||
<li class='itemize'>Translated business requirements into product features across all browsers and devices</li></ul>
|
|
||||||
</div><h4 class='sectionHead' id='education'><a id='x1-40000'></a><div class='centerline'> EDUCATION </div></h4><div class='section'>
|
</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,
|
<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.
|
Java, PL/I and mainframe systems on the side.
|
||||||
</p>
|
</p>
|
||||||
</div></div>
|
</div></div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
100
resume.log
100
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
|
entering extended mode
|
||||||
restricted \write18 enabled.
|
restricted \write18 enabled.
|
||||||
%&-line parsing enabled.
|
%&-line parsing enabled.
|
||||||
**resume.tex
|
**resume.tex
|
||||||
(./resume.tex
|
(./resume.tex
|
||||||
LaTeX2e <2024-11-01> patch level 2
|
LaTeX2e <2025-11-01>
|
||||||
L3 programming layer <2025-01-18>
|
L3 programming layer <2026-01-19>
|
||||||
(./res.cls
|
(./res.cls
|
||||||
Document Style `res' <26 Sep 89>.
|
Document Style `res' <26 Sep 89>.
|
||||||
Document Class: res 2000/05/19 v1.4b Resume class
|
Document Class: res 2000/05/19 v1.4b Resume class
|
||||||
(/usr/share/texmf-dist/tex/latex/base/article.cls
|
(/usr/local/texlive/2026basic/texmf-dist/tex/latex/base/article.cls
|
||||||
Document Class: article 2024/06/29 v1.4n Standard LaTeX document class
|
Document Class: article 2025/01/22 v1.4n Standard LaTeX document class
|
||||||
(/usr/share/texmf-dist/tex/latex/base/size10.clo
|
(/usr/local/texlive/2026basic/texmf-dist/tex/latex/base/size10.clo
|
||||||
File: size10.clo 2024/06/29 v1.4n Standard LaTeX file (size option)
|
File: size10.clo 2025/01/22 v1.4n Standard LaTeX file (size option)
|
||||||
)
|
)
|
||||||
\c@part=\count196
|
\c@part=\count275
|
||||||
\c@section=\count197
|
\c@section=\count276
|
||||||
\c@subsection=\count198
|
\c@subsection=\count277
|
||||||
\c@subsubsection=\count199
|
\c@subsubsection=\count278
|
||||||
\c@paragraph=\count266
|
\c@paragraph=\count279
|
||||||
\c@subparagraph=\count267
|
\c@subparagraph=\count280
|
||||||
\c@figure=\count268
|
\c@figure=\count281
|
||||||
\c@table=\count269
|
\c@table=\count282
|
||||||
\abovecaptionskip=\skip49
|
\abovecaptionskip=\skip49
|
||||||
\belowcaptionskip=\skip50
|
\belowcaptionskip=\skip50
|
||||||
\bibindent=\dimen141
|
\bibindent=\dimen148
|
||||||
)
|
)
|
||||||
No auxiliary output files.
|
No auxiliary output files.
|
||||||
|
|
||||||
|
|
@ -33,22 +33,22 @@ No auxiliary output files.
|
||||||
\tabular@tail=\toks19
|
\tabular@tail=\toks19
|
||||||
\@ta=\toks20
|
\@ta=\toks20
|
||||||
\undefined@token=\toks21
|
\undefined@token=\toks21
|
||||||
\sectionwidth=\dimen142
|
\sectionwidth=\dimen149
|
||||||
\sectionskip=\skip51
|
\sectionskip=\skip51
|
||||||
\resumewidth=\dimen143
|
\resumewidth=\dimen150
|
||||||
\@columnwidth=\dimen144
|
\@columnwidth=\dimen151
|
||||||
\c@numberofcolumns=\count270
|
\c@numberofcolumns=\count283
|
||||||
) (/usr/share/texmf-dist/tex/latex/psnfss/helvet.sty
|
) (/usr/local/texlive/2026basic/texmf-dist/tex/latex/psnfss/helvet.sty
|
||||||
Package: helvet 2020/03/25 PSNFSS-v9.3 (WaS)
|
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)
|
Package: keyval 2022/05/29 v1.15 key=value parser (DPC)
|
||||||
\KV@toks@=\toks22
|
\KV@toks@=\toks22
|
||||||
))
|
))
|
||||||
(/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
(/usr/local/texlive/2026basic/texmf-dist/tex/latex/l3backend/l3backend-pdftex.d
|
||||||
File: l3backend-pdftex.def 2024-05-08 L3 backend support: PDF output (pdfTeX)
|
ef
|
||||||
\l__color_backend_stack_int=\count271
|
File: l3backend-pdftex.def 2025-10-09 L3 backend support: PDF output (pdfTeX)
|
||||||
\l__pdf_internal_box=\box52
|
\l__color_backend_stack_int=\count284
|
||||||
)
|
)
|
||||||
|
|
||||||
LaTeX Warning: Unused global option(s):
|
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.
|
(Font) <7> on input line 46.
|
||||||
LaTeX Font Info: External font `cmex10' loaded for size
|
LaTeX Font Info: External font `cmex10' loaded for size
|
||||||
(Font) <5> on input line 46.
|
(Font) <5> on input line 46.
|
||||||
|
|
||||||
|
|
||||||
[1
|
[1
|
||||||
|
|
||||||
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}{/usr/share/texmf-dist/fonts
|
{/usr/local/texlive/2026basic/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
|
||||||
/enc/dvips/cm-super/cm-super-ts1.enc}]
|
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
|
LaTeX2e <2025-11-01>
|
||||||
L3 programming layer <2025-01-18>
|
L3 programming layer <2026-01-19>
|
||||||
***********
|
***********
|
||||||
)
|
)
|
||||||
Here is how much of TeX's memory you used:
|
Here is how much of TeX's memory you used:
|
||||||
605 strings out of 475171
|
598 strings out of 469006
|
||||||
10850 string characters out of 5767095
|
10756 string characters out of 5454814
|
||||||
404915 words of memory out of 5000000
|
445756 words of memory out of 5000000
|
||||||
23670 multiletter control sequences out of 15000+600000
|
29363 multiletter control sequences out of 15000+600000
|
||||||
560438 words of font info for 41 fonts, out of 8000000 for 9000
|
629322 words of font info for 45 fonts, out of 8000000 for 9000
|
||||||
14 hyphenation exceptions out of 8191
|
319 hyphenation exceptions out of 8191
|
||||||
49i,8n,52p,364b,200s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
49i,8n,52p,357b,206s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||||
</usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb></usr/share/
|
</Users/bastian/Library/texlive/2026basic/texmf-var/fonts/pk/ljfour/jknappen
|
||||||
texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb></usr/share/texmf-dist/fon
|
/ec/tcrm1000.600pk></usr/local/texlive/2026basic/texmf-dist/fonts/type1/public/
|
||||||
ts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texmf-dist/fonts/type1/public
|
amsfonts/cm/cmbx10.pfb></usr/local/texlive/2026basic/texmf-dist/fonts/type1/pub
|
||||||
/amsfonts/cm/cmsl10.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm
|
lic/amsfonts/cm/cmbx12.pfb></usr/local/texlive/2026basic/texmf-dist/fonts/type1
|
||||||
1000.pfb>
|
/public/amsfonts/cm/cmr10.pfb></usr/local/texlive/2026basic/texmf-dist/fonts/ty
|
||||||
Output written on resume.pdf (3 pages, 81673 bytes).
|
pe1/public/amsfonts/cm/cmsl10.pfb>
|
||||||
|
Output written on resume.pdf (3 pages, 77604 bytes).
|
||||||
PDF statistics:
|
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
|
24 compressed objects within 1 object stream
|
||||||
0 named destinations out of 1000 (max. 500000)
|
0 named destinations out of 1000 (max. 500000)
|
||||||
1 words of extra memory for PDF output out of 10000 (max. 10000000)
|
1 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||||
|
|
|
||||||
BIN
resume.pdf
BIN
resume.pdf
Binary file not shown.
102
resume.tex
102
resume.tex
|
|
@ -52,7 +52,7 @@
|
||||||
\section{\centerline{SUMMARY}}
|
\section{\centerline{SUMMARY}}
|
||||||
|
|
||||||
\vspace{8pt} % Gap between title and text
|
\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 Staff Software Engineer - Full-time} \hfill February 2026 - Now \\
|
||||||
{\sl Senior Software Engineer - Full-time} \hfill July 2024 - January 2026 \\
|
{\sl Senior Software Engineer - Full-time} \hfill July 2024 - January 2026 \\
|
||||||
Mozilla, Remote \\
|
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
|
\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 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 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 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 Implemented OHTTP (Oblivious HTTP) support in application-services, enabling privacy-preserving API requests across Firefox Desktop, Android, and iOS
|
\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 Building and maintaining the Push notification service for Firefox (async Rust backend handling millions of concurrent connections)
|
\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 Contributing directly to Firefox (mozilla-central): shipping Rust and C++ code to Desktop
|
\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 Maintaining Merino, the web service powering Firefox Suggest with Python/FastAPI
|
\item Led ``Rusty Fridays'' internal education sessions, guiding engineers through Rust adoption and mentoring junior contributors across teams
|
||||||
\item Creating internal Rust learning resources and leading "Rusty Fridays" sessions for engineers
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
{\sl Senior Systems Engineer, Team Lead - Full-time} \hfill April 2023 - June 2024 \\
|
{\sl Senior Systems Engineer, Team Lead - Full-time} \hfill April 2023 - June 2024 \\
|
||||||
Toposware, Remote \\
|
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.
|
Core team of 4 building a peer-to-peer distributed network protocol from scratch in Rust.
|
||||||
\begin{itemize} \itemsep -2pt % Reduce space between items
|
\begin{itemize} \itemsep -2pt
|
||||||
\item Increased the throughput of a node 10x
|
\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 Re-wrote the CLI to add configuration and robustness, better user guidance
|
\item Led benchmark initiative with 3 engineers that revealed nodes were compute-bound on crypto operations, not network-limited -- redirected optimization effort accordingly
|
||||||
\item Led a team of 3 engineers for an internal benchmark project
|
\item Rewrote the CLI from scratch, replacing error-prone CLI parameters with local config files -- reduced operator misconfiguration during node setup
|
||||||
\item Implemented load testing for part of the codebase
|
\item Built an EVM bridge connecting external Ethereum-compatible chains to the core network
|
||||||
\item Connected external EVM chains to the core network
|
\item Set up load testing, CI/CD pipelines, and Grafana dashboards for production observability
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
{\sl Senior Software Engineer - Full-time} \hfill August 2022 - February 2023 \\
|
{\sl Senior Software Engineer - Full-time} \hfill August 2022 - February 2023 \\
|
||||||
Centrifuge, Remote \\
|
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.
|
Protocol team building DeFi applications on Substrate/Polkadot in a self-governed organization.
|
||||||
\begin{itemize} \itemsep -2pt % Reduce space between items
|
\begin{itemize} \itemsep -2pt
|
||||||
\item Implemented the auto-generation of the online documentation with every PR
|
\item Implemented fund pool mutations on-chain, enabling users to adjust capital allocations in live pools -- core feature for the lending protocol
|
||||||
\item Enabled mutating of money pools in the protocol
|
\item Built client-facing APIs on top of fund pools, giving external integrators programmatic access to pool operations
|
||||||
\item Implemented client facing APIs on top of the money fund pools
|
\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 enhance the protocol
|
\item Co-authored RFCs to build consensus on new protocol features across the decentralized team
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
{\sl Author of "Rust Web Development"} \hfill October 2020 - December 2022 \\
|
{\sl Author of "Rust Web Development"} \hfill October 2020 - December 2022 \\
|
||||||
Manning Publications, Remote \\
|
Manning Publications, Remote \\
|
||||||
Writing the book "Rust Web Development". Research, writing and marketing the book in partnership with Manning.
|
|
||||||
\begin{itemize} \itemsep -2pt
|
\begin{itemize} \itemsep -2pt
|
||||||
\item Published technical book on building web services with Rust
|
\item Published ``Rust Web Development'' through Manning -- end-to-end guide covering async Rust, web frameworks, and production deployment, distributed globally
|
||||||
\item Created comprehensive tutorials covering async Rust, web frameworks, and deployment
|
|
||||||
\item Book available worldwide through Manning Publications
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
{\sl Sr. Solutions Architect (Professional Services) - Full-time} \hfill May 2021 - July 2022 \\
|
{\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 \\
|
{\sl Solutions Architect (Professional Services) - Full-time} \hfill June 2020 - May 2021 \\
|
||||||
Twilio Inc., Remote \\
|
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.
|
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 % Reduce space between items
|
\begin{itemize} \itemsep -2pt
|
||||||
\item Technical Lead for Fortune 500 client engagements, from architecture to delivery
|
\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 Built reusable integration patterns and deliverables adopted across EMEA team
|
\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 Established technical review processes and best practices for customer implementations
|
\item Created reusable engagement playbooks (setup checklists, edge-case discovery questions, technical review templates) adopted across the EMEA team
|
||||||
\item Involved in hiring, onboarding, and scaling the Professional Services team
|
\item Hired and onboarded engineers to scale the Professional Services team
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
{\sl Systems Engineer - Contract} \hfill August 2019 - May 2020 \\
|
{\sl Systems Engineer - Contract} \hfill August 2019 - May 2020 \\
|
||||||
Kraken Digital Currency Exchange, Remote (San Francisco)\\
|
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
|
\begin{itemize} \itemsep -2pt
|
||||||
\item Re-wrote several PHP services in Rust to increase the throughput 100fold
|
\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 Wrote new services in Rust from the ground up
|
\item Built new Rust services from scratch with comprehensive test coverage and security-first design
|
||||||
\item Cross-communication with different teams and the CTO
|
\item Worked directly with the CTO on privacy-focused architectural decisions for the trading platform
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
{\sl Rust Developer - Freelance} \hfill March 2019 - July 2019 \\
|
{\sl Rust Developer - Freelance} \hfill March 2019 - July 2019 \\
|
||||||
Self Employed, Berlin/Toronto \\
|
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
|
\begin{itemize} \itemsep -2pt
|
||||||
\item Founded and organized the monthly "Rust \& Tell Berlin" meetup (now largest Rust meetup globally)
|
\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 various Rust libraries
|
\item Contributed to Rust core and ecosystem libraries
|
||||||
\item Created Rust learning resources for NodeJS developers
|
\item Created Rust learning resources specifically for Node.js developers transitioning to systems programming
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
{\sl Sr. Software Engineer - Freelance} \hfill March 2016 - February 2019 \\
|
{\sl Sr. Software Engineer - Freelance} \hfill March 2016 - February 2019 \\
|
||||||
OSRAM, K\"orber Digital, Avenga, ERGO Group, GIATA, PaperHive, Glispa (Berlin) \\
|
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
|
\begin{itemize} \itemsep -2pt
|
||||||
\item Built authentication infrastructure for OSRAM's large-scale IoT platform (Node.js, Go, Lua)
|
\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; established tech stack and real-time data pipelines on AWS
|
\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 Tech Lead at Avenga; enabled Scrum processes and refactored codebase into microservices
|
\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 Migrated legacy PHP systems to Node.js microservices with Docker at GIATA
|
\item Tech Lead at Avenga: introduced Scrum and refactored a monolith into microservices to unblock parallel team development
|
||||||
\item Built in-house analytics dashboards and ad platforms at Glispa with AngularJS
|
\item Built analytics dashboards and ad platforms at Glispa (AngularJS); mentored teams on modern JavaScript practices
|
||||||
\item Mentored teams on Scrum adoption and modern JavaScript practices
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
{\sl Software Engineer - Full-time} \hfill August 2015 - February 2016 \\
|
{\sl Software Engineer - Full-time} \hfill August 2015 - February 2016 \\
|
||||||
smartB Energy Management GmbH, Berlin \\
|
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
|
\begin{itemize} \itemsep -2pt
|
||||||
\item Full-stack development with JavaScript and Python
|
\item Introduced pair programming and component-based frontend architecture, enabling multiple developers to work on the same codebase without conflicts
|
||||||
\item Heavy use of pair programming and TDD practices
|
\item Full-stack development with JavaScript and Python using TDD
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
{\sl Software Engineer - Freelance} \hfill March 2015 - July 2015 \\
|
{\sl Software Engineer - Freelance} \hfill March 2015 - July 2015 \\
|
||||||
blogfoster GmbH, Berlin \\
|
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
|
\begin{itemize} \itemsep -2pt
|
||||||
\item Built the first version of the ad marketplace for this young startup
|
\item Built the first version of the ad marketplace; co-designed architecture with the CTO using TDD from day one
|
||||||
\item Mapped out architecture with CTO; implemented TDD practices
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
{\sl Frontend Developer - Full-time} \hfill February 2014 - March 2015 \\
|
{\sl Frontend Developer - Full-time} \hfill February 2014 - March 2015 \\
|
||||||
Dalia Research, Berlin \\
|
Dalia Research, Berlin \\
|
||||||
First and sole frontend developer at 8-person startup.
|
First and sole frontend developer at 8-person startup.
|
||||||
\begin{itemize} \itemsep -2pt
|
\begin{itemize} \itemsep -2pt
|
||||||
\item Built survey platform and analytics dashboards in AngularJS
|
\item Bootstrapped the customer-facing survey platform and analytics dashboards in AngularJS -- core UI remained largely untouched in production for close to 10 years
|
||||||
\item Translated business requirements into product features across all browsers and devices
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\section{\centerline{EDUCATION}}
|
\section{\centerline{EDUCATION}}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue