diff --git a/Makefile b/Makefile index 9316ab2..bb8b068 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: html pdf clean +.PHONY: html pdf clean deploy all html: index.html @@ -11,6 +11,24 @@ index.html: resume.tex res.cls resume.cfg style.css sed -i 's|github.com/gruberb|github.com/gruberb|g' resume.html sed -i 's|code.novanexus.ca|code.novanexus.ca|g' resume.html sed -i 's|bastiangruber.ca|bastiangruber.ca|g' resume.html + sed -i 's|Mozilla, Remote|Mozilla, Remote|g' resume.html + sed -i 's|Toposware, Remote|Toposware, Remote|g' resume.html + sed -i 's|Centrifuge, Remote|Centrifuge, Remote|g' resume.html + sed -i 's|Manning Publications, Remote|Manning Publications, Remote|g' resume.html + sed -i 's|Twilio Inc., Remote|Twilio Inc., Remote|g' resume.html + sed -i 's|Kraken Digital Currency Exchange, Remote|Kraken Digital Currency Exchange, Remote|g' resume.html + sed -i 's|Self Employed, Berlin/Toronto|Self Employed, Berlin/Toronto|g' resume.html + sed -i 's|smartB Energy Management GmbH, Berlin|smartB Energy Management GmbH, Berlin|g' resume.html + sed -i 's|blogfoster GmbH, Berlin|blogfoster GmbH, Berlin|g' resume.html + sed -i 's|Dalia Research, Berlin|Dalia Research, Berlin|g' resume.html + sed -i 's|TH Ingolstadt|TH Ingolstadt|g' resume.html + sed -i 's|OSRAM|OSRAM|g' resume.html + sed -i 's|Körber Digital|Körber Digital|g' resume.html + sed -i 's|Avenga|Avenga|g' resume.html + sed -i 's|ERGO Group|ERGO Group|g' resume.html + sed -i 's|GIATA|GIATA|g' resume.html + sed -i 's|PaperHive|PaperHive|g' resume.html + sed -i 's|Glispa|Glispa|g' resume.html mv resume.html index.html pdf: resume.pdf @@ -21,4 +39,8 @@ resume.pdf: resume.tex res.cls clean: rm -f index.html resume.aux resume.log resume.dvi resume.html resume.css resume.4ct resume.4tc resume.idv resume.lg resume.tmp resume.xref -all: html pdf +deploy: html + mkdir -p ~/CodingIsFun/personal/bastiangruber.ca/src/cv + cp index.html style.css resume.css ~/CodingIsFun/personal/bastiangruber.ca/src/cv/ + +all: deploy pdf diff --git a/index.html b/index.html index 68793ca..4426ccb 100644 --- a/index.html +++ b/index.html @@ -11,23 +11,24 @@  
- -
Professional  
LinkedIn: linkedin.com/in/bastiangruber 
Project: rustwebdevelopment.com  
E-Mail: gruberbastian@me.com  
+ + +
Code  
Book: rustwebdevelopment.com  
E-Mail: gruberbastian@me.com  
Website: bastiangruber.ca  
- -
Code  
GitHub: github.com/gruberb 
Code: code.novanexus.ca  
Website: bastiangruber.ca  
+Git: code.novanexus.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.

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, Firefox, FFI, protocol implementation, IoT, blockchain +

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
Senior Software Engineer - Full-time July 2024 - February 2026 -
Mozilla, Remote
Contributing to Firefox (desktop and mobile) shipped to hundreds of millions of users. All work is open source. +
Mozilla, Remote
Contributing to Firefox (desktop and mobile) shipped to hundreds of millions of users. All work is open source.

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, +
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.

@@ -64,7 +65,7 @@ Grafana dashboards.

  • 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 +
    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.

    -

    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 Publications, Remote
    Writing the book ”Rust Web Development”. Research, writing and marketing the book in partnership with Manning.

    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 +
    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.

    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 +
    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.

    -

    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 +
    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.

    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 +
    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.

    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. +
    smartB Energy Management GmbH, Berlin
    Worked in a small agile team creating an application for business owners to monitor energy consumption.

    -

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

    +
    blogfoster GmbH, Berlin
    First developer hired to rewrite existing PHP/Backbone application using NodeJS and React.

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

    +
    Dalia Research, Berlin
    First and sole frontend developer at 8-person startup.

    EDUCATION

    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, +
    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.

    diff --git a/resume.dvi b/resume.dvi index ad3e762..76c0e39 100644 Binary files a/resume.dvi and b/resume.dvi differ diff --git a/resume.idv b/resume.idv index ab3b556..9fd1665 100644 Binary files a/resume.idv and b/resume.idv differ diff --git a/resume.log b/resume.log index c3aa1e3..f699da6 100644 --- a/resume.log +++ b/resume.log @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.141592653-2.6-1.40.27 (TeX Live 2026/dev/Arch Linux) (preloaded format=latex 2026.1.20) 20 JAN 2026 18:11 +This is pdfTeX, Version 3.141592653-2.6-1.40.27 (TeX Live 2026/dev/Arch Linux) (preloaded format=latex 2026.1.20) 20 JAN 2026 18:52 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -385,10 +385,10 @@ L3 programming layer <2025-01-18> Here is how much of TeX's memory you used: 4466 strings out of 475172 56029 string characters out of 5767121 - 579455 words of memory out of 5000000 + 578455 words of memory out of 5000000 27423 multiletter control sequences out of 15000+600000 560606 words of font info for 42 fonts, out of 8000000 for 9000 14 hyphenation exceptions out of 8191 51i,8n,60p,834b,464s stack positions out of 10000i,1000n,20000p,200000b,200000s -Output written on resume.dvi (5 pages, 33040 bytes). +Output written on resume.dvi (5 pages, 33068 bytes). diff --git a/resume.pdf b/resume.pdf index 3558790..6a3f951 100644 Binary files a/resume.pdf and b/resume.pdf differ diff --git a/resume.tex b/resume.tex index 885e849..0a049a3 100644 --- a/resume.tex +++ b/resume.tex @@ -37,9 +37,9 @@ % 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 \\ Project: rustwebdevelopment.com \\ E-Mail: gruberbastian@me.com} +\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 \\ Code: code.novanexus.ca \\ Website: bastiangruber.ca} % Your address 2 +\address{{\bf Code} \\ GitHub: github.com/gruberb \\ Git: code.novanexus.ca} % Your address 2 %---------------------------------------------------------------------------------------- @@ -70,7 +70,7 @@ Staff Software Engineer and published author ("Rust Web Development" - Manning) {\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, Firefox, FFI, protocol implementation, IoT, blockchain +{\bf Domains:} Systems Programming, FFI, Distributed Systems, Web Services, Micro Services, IoT, Blockchain, Firefox %---------------------------------------------------------------------------------------- diff --git a/style.css b/style.css index c1fa6ba..2434e8a 100644 --- a/style.css +++ b/style.css @@ -1,25 +1,29 @@ /* CV Styles - Dark Theme matching bastiangruber.ca */ + +/* Inter - modern, highly readable font for CVs */ +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap'); + * { box-sizing: border-box; } html { - color: #e2e8f0; + color: #f1f5f9; background-color: #1a1f29; } body { margin: 0 auto; - max-width: 850px; + max-width: 900px; padding: 40px 50px; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; - font-size: 15px; - line-height: 1.6; + font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; + font-size: 17px; + line-height: 1.65; background-color: #1a1f29; - color: #e2e8f0; + color: #f1f5f9; color-scheme: dark; } @media (max-width: 600px) { - body { font-size: 14px; padding: 20px; } + body { font-size: 16px; padding: 20px; } } @media print { @@ -28,7 +32,7 @@ body { /* Name header */ .cmbx-12 { - font-size: 28px; + font-size: 32px; font-weight: 600; display: block; text-align: center; @@ -44,15 +48,15 @@ body { /* Contact info */ .center-addresses { width: 100%; - margin: 15px 0 30px 0; + margin: 10px 0 15px 0; border-collapse: collapse; } .center-addresses td { padding: 0 20px; vertical-align: top; - font-size: 14px; - line-height: 1.8; + font-size: 16px; + line-height: 1.5; } .first-address { @@ -89,13 +93,13 @@ body { /* Section headers */ .sectionHead { - margin: 35px 0 15px 0; - padding-bottom: 8px; + margin: 20px 0 10px 0; + padding-bottom: 6px; border-bottom: 2px solid #fbbf24; } .sectionHead .centerline { - font-size: 12px; + font-size: 14px; font-weight: 600; letter-spacing: 2px; color: #fbbf24; @@ -110,7 +114,27 @@ div.section { .cmsl-10 { font-weight: 600; font-style: normal; - color: #e2e8f0; + color: #fbbf24; + font-size: 1.05em; +} + +/* Company names */ +.company { + font-weight: 600; + color: #f8fafc; +} + +/* Position blocks - add spacing between jobs */ +div.section > p.noindent { + margin-top: 20px; + padding-top: 15px; + border-top: 1px solid #2d3748; +} + +div.section > p.noindent:first-of-type { + margin-top: 0; + padding-top: 0; + border-top: none; } /* Bold text */ @@ -126,7 +150,7 @@ ul.itemize1 { li.itemize { margin-bottom: 5px; - color: #94a3b8; + color: #cbd5e1; } /* Paragraphs */