Update styling
This commit is contained in:
parent
1df95e7ab6
commit
6f9bb23cef
8 changed files with 97 additions and 50 deletions
26
Makefile
26
Makefile
|
|
@ -1,4 +1,4 @@
|
||||||
.PHONY: html pdf clean
|
.PHONY: html pdf clean deploy all
|
||||||
|
|
||||||
html: index.html
|
html: index.html
|
||||||
|
|
||||||
|
|
@ -11,6 +11,24 @@ index.html: resume.tex res.cls resume.cfg style.css
|
||||||
sed -i 's|github.com/gruberb|<a href="https://github.com/gruberb">github.com/gruberb</a>|g' resume.html
|
sed -i 's|github.com/gruberb|<a href="https://github.com/gruberb">github.com/gruberb</a>|g' resume.html
|
||||||
sed -i 's|code.novanexus.ca|<a href="https://code.novanexus.ca">code.novanexus.ca</a>|g' resume.html
|
sed -i 's|code.novanexus.ca|<a href="https://code.novanexus.ca">code.novanexus.ca</a>|g' resume.html
|
||||||
sed -i 's|bastiangruber.ca|<a href="https://bastiangruber.ca">bastiangruber.ca</a>|g' resume.html
|
sed -i 's|bastiangruber.ca|<a href="https://bastiangruber.ca">bastiangruber.ca</a>|g' resume.html
|
||||||
|
sed -i 's|Mozilla, Remote|<span class="company">Mozilla</span>, Remote|g' resume.html
|
||||||
|
sed -i 's|Toposware, Remote|<span class="company">Toposware</span>, Remote|g' resume.html
|
||||||
|
sed -i 's|Centrifuge, Remote|<span class="company">Centrifuge</span>, Remote|g' resume.html
|
||||||
|
sed -i 's|Manning Publications, Remote|<span class="company">Manning Publications</span>, Remote|g' resume.html
|
||||||
|
sed -i 's|Twilio Inc., Remote|<span class="company">Twilio Inc.</span>, Remote|g' resume.html
|
||||||
|
sed -i 's|Kraken Digital Currency Exchange, Remote|<span class="company">Kraken Digital Currency Exchange</span>, Remote|g' resume.html
|
||||||
|
sed -i 's|Self Employed, Berlin/Toronto|<span class="company">Self Employed</span>, Berlin/Toronto|g' resume.html
|
||||||
|
sed -i 's|smartB Energy Management GmbH, Berlin|<span class="company">smartB Energy Management GmbH</span>, Berlin|g' resume.html
|
||||||
|
sed -i 's|blogfoster GmbH, Berlin|<span class="company">blogfoster GmbH</span>, Berlin|g' resume.html
|
||||||
|
sed -i 's|Dalia Research, Berlin|<span class="company">Dalia Research</span>, Berlin|g' resume.html
|
||||||
|
sed -i 's|TH Ingolstadt|<span class="company">TH Ingolstadt</span>|g' resume.html
|
||||||
|
sed -i 's|OSRAM|<span class="company">OSRAM</span>|g' resume.html
|
||||||
|
sed -i 's|Körber Digital|<span class="company">Körber Digital</span>|g' resume.html
|
||||||
|
sed -i 's|Avenga|<span class="company">Avenga</span>|g' resume.html
|
||||||
|
sed -i 's|ERGO Group|<span class="company">ERGO Group</span>|g' resume.html
|
||||||
|
sed -i 's|GIATA|<span class="company">GIATA</span>|g' resume.html
|
||||||
|
sed -i 's|PaperHive|<span class="company">PaperHive</span>|g' resume.html
|
||||||
|
sed -i 's|Glispa|<span class="company">Glispa</span>|g' resume.html
|
||||||
mv resume.html index.html
|
mv resume.html index.html
|
||||||
|
|
||||||
pdf: resume.pdf
|
pdf: resume.pdf
|
||||||
|
|
@ -21,4 +39,8 @@ resume.pdf: resume.tex res.cls
|
||||||
clean:
|
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
|
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
|
||||||
|
|
|
||||||
53
index.html
53
index.html
|
|
@ -11,23 +11,24 @@
|
||||||
</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;'>Project: <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></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-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-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;'>Code: <a href="https://code.novanexus.ca">code.novanexus.ca</a> </td></tr><tr id='TBL-3-4-' style='vertical-align:baseline;'><td class='td00' id='TBL-3-4-1' style='white-space:nowrap; text-align:left;'>Website: <a href="https://bastiangruber.ca">bastiangruber.ca</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">code.novanexus.ca</a> </td></tr></table> </div></td></tr></table>
|
||||||
</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 building
|
||||||
scalable backend systems. Currently contributing to Firefox at Mozilla, shipping code to hundreds of millions of
|
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.
|
users. 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, Firefox, FFI, protocol implementation, 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
|
||||||
</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
|
<!-- l. 87 --><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 - February 2026
|
<br class='newline' /><span class='cmsl-10'>Senior Software Engineer - Full-time </span>July 2024 - February 2026
|
||||||
<br class='newline' />Mozilla, 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' />Contributing to Firefox (desktop and mobile) shipped 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'>Leading the Image Service project: designing and implementing a cross-team service to provide favicons
|
||||||
|
|
@ -39,8 +40,8 @@ users. Founded Rust&Tell Berlin, the largest Rust meetup globally.
|
||||||
<li class='itemize'>Implemented OHTTP (Oblivious HTTP) support in application-services, enabling privacy-preserving
|
<li class='itemize'>Implemented OHTTP (Oblivious HTTP) support in application-services, enabling privacy-preserving
|
||||||
API requests across Firefox Desktop, Android, and iOS
|
API requests across Firefox Desktop, Android, and iOS
|
||||||
</li>
|
</li>
|
||||||
<li class='itemize'>Building and maintaining the Push notification service for Firefox (async Rust backend handling
|
|
||||||
|
|
||||||
|
<li class='itemize'>Building and maintaining the Push notification service for Firefox (async Rust backend handling
|
||||||
millions of concurrent connections)
|
millions of concurrent connections)
|
||||||
</li>
|
</li>
|
||||||
<li class='itemize'>Contributing directly to Firefox (mozilla-central): shipping Rust and C++ code to Desktop
|
<li class='itemize'>Contributing directly to Firefox (mozilla-central): shipping Rust and C++ code to Desktop
|
||||||
|
|
@ -49,7 +50,7 @@ users. Founded Rust&Tell Berlin, the largest Rust meetup globally.
|
||||||
</li>
|
</li>
|
||||||
<li class='itemize'>Creating internal Rust learning resources and leading ”Rusty Fridays” sessions for engineers</li></ul>
|
<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
|
<!-- l. 101 --><p class='noindent'><span class='cmsl-10'>Senior Systems Engineer, Team Lead - Full-time </span>April 2023 - June 2024
|
||||||
<br class='newline' />Toposware, Remote <br class='newline' />Developing a Peer-to-Peer distributed network, with high throughput and low latency. Part of the core team,
|
<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,
|
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
|
implementing the core protocol, re-wrote the CLI, led benchmark initiatives, set up part of the CI/CD flow and
|
||||||
Grafana dashboards. </p>
|
Grafana dashboards. </p>
|
||||||
|
|
@ -64,7 +65,7 @@ Grafana dashboards. </p>
|
||||||
</li>
|
</li>
|
||||||
<li class='itemize'>Connected external EVM chains to the core network</li></ul>
|
<li class='itemize'>Connected external EVM chains to the core network</li></ul>
|
||||||
<!-- l. 112 --><p class='noindent'><span class='cmsl-10'>Senior Software Engineer - Full-time </span>August 2022 - February 2023
|
<!-- l. 112 --><p class='noindent'><span class='cmsl-10'>Senior Software Engineer - Full-time </span>August 2022 - February 2023
|
||||||
<br class='newline' />Centrifuge, Remote <br class='newline' />Part of the protocol team implementing the DeFi application on top of Substrate. Working in a self-governed
|
<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>
|
organization, leading the documentation efforts around Rust and the protocol implementation. </p>
|
||||||
<ul class='itemize1'>
|
<ul class='itemize1'>
|
||||||
<li class='itemize'>Implemented the auto-generation of the online documentation with every PR
|
<li class='itemize'>Implemented the auto-generation of the online documentation with every PR
|
||||||
|
|
@ -72,11 +73,11 @@ organization, leading the documentation efforts around Rust and the protocol imp
|
||||||
<li class='itemize'>Enabled mutating of money pools in the protocol
|
<li class='itemize'>Enabled mutating of money pools in the protocol
|
||||||
</li>
|
</li>
|
||||||
<li class='itemize'>Implemented client facing APIs on top of the money fund pools
|
<li class='itemize'>Implemented client facing APIs on top of the money fund pools
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
<li class='itemize'>Co-authored RFCs to enhance the protocol</li></ul>
|
<li class='itemize'>Co-authored RFCs to enhance the protocol</li></ul>
|
||||||
|
|
||||||
<!-- l. 122 --><p class='noindent'><span class='cmsl-10'>Author of ”Rust Web Development” </span>October 2020 - December 2022
|
<!-- l. 122 --><p class='noindent'><span class='cmsl-10'>Author of ”Rust Web Development” </span>October 2020 - December 2022
|
||||||
<br class='newline' />Manning Publications, Remote <br class='newline' />Writing the book ”Rust Web Development”. Research, writing and marketing the book in partnership with
|
<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>
|
Manning. </p>
|
||||||
<ul class='itemize1'>
|
<ul class='itemize1'>
|
||||||
<li class='itemize'>Published technical book on building web services with Rust
|
<li class='itemize'>Published technical book on building web services with Rust
|
||||||
|
|
@ -86,7 +87,7 @@ Manning. </p>
|
||||||
<li class='itemize'>Book available worldwide through Manning Publications</li></ul>
|
<li class='itemize'>Book available worldwide through Manning Publications</li></ul>
|
||||||
<!-- l. 131 --><p class='noindent'><span class='cmsl-10'>Sr. Solutions Architect (Professional Services) - Full-time </span>May 2021 - July 2022
|
<!-- l. 131 --><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' />Twilio Inc., 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. Enabled enterprise customers to
|
||||||
integrate Twilio APIs through architecture design, code reviews, and hands-on implementation support.
|
integrate Twilio APIs through architecture design, code reviews, and hands-on implementation support.
|
||||||
</p>
|
</p>
|
||||||
<ul class='itemize1'>
|
<ul class='itemize1'>
|
||||||
|
|
@ -98,18 +99,18 @@ integrate Twilio APIs through architecture design, code reviews, and hands-on im
|
||||||
</li>
|
</li>
|
||||||
<li class='itemize'>Involved in hiring, onboarding, and scaling the Professional Services team</li></ul>
|
<li class='itemize'>Involved in hiring, onboarding, and scaling the Professional Services team</li></ul>
|
||||||
<!-- l. 142 --><p class='noindent'><span class='cmsl-10'>Systems Engineer - Contract </span>August 2019 - May 2020
|
<!-- l. 142 --><p class='noindent'><span class='cmsl-10'>Systems Engineer - Contract </span>August 2019 - May 2020
|
||||||
<br class='newline' />Kraken Digital Currency Exchange, 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
|
<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
|
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>
|
Rust in a well-tested highly secure manner. </p>
|
||||||
<ul class='itemize1'>
|
<ul class='itemize1'>
|
||||||
<li class='itemize'>Re-wrote several PHP services in Rust to increase the throughput 100fold
|
<li class='itemize'>Re-wrote several PHP services in Rust to increase the throughput 100fold
|
||||||
</li>
|
</li>
|
||||||
<li class='itemize'>Wrote new services in Rust from the ground up
|
<li class='itemize'>Wrote new services in Rust from the ground up
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
<li class='itemize'>Cross-communication with different teams and the CTO</li></ul>
|
<li class='itemize'>Cross-communication with different teams and the CTO</li></ul>
|
||||||
|
|
||||||
<!-- l. 151 --><p class='noindent'><span class='cmsl-10'>Rust Developer - Freelance </span>March 2019 - July 2019
|
<!-- l. 151 --><p class='noindent'><span class='cmsl-10'>Rust Developer - Freelance </span>March 2019 - July 2019
|
||||||
<br class='newline' />Self Employed, Berlin/Toronto <br class='newline' />Took time to deep-dive into Rust, founded the Rust&Tell Berlin MeetUp, contributed to Rust core and created
|
<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>
|
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'>Founded and organized the monthly ”Rust & Tell Berlin” meetup (now largest Rust meetup globally)
|
||||||
|
|
@ -118,43 +119,43 @@ learning paths for NodeJS developers transitioning to Rust. </p>
|
||||||
</li>
|
</li>
|
||||||
<li class='itemize'>Created Rust learning resources for NodeJS developers</li></ul>
|
<li class='itemize'>Created Rust learning resources for NodeJS developers</li></ul>
|
||||||
<!-- l. 160 --><p class='noindent'><span class='cmsl-10'>Sr. Software Engineer - Freelance </span>March 2016 - February 2019
|
<!-- l. 160 --><p class='noindent'><span class='cmsl-10'>Sr. Software Engineer - Freelance </span>March 2016 - February 2019
|
||||||
<br class='newline' />OSRAM, Körber Digital, Avenga, ERGO Group, GIATA, PaperHive, Glispa (Berlin) <br class='newline' />Freelance consultant for enterprise clients. Focus on microservices architecture, IoT platforms, and frontend
|
<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
|
||||||
development. </p>
|
development. </p>
|
||||||
<ul class='itemize1'>
|
<ul class='itemize1'>
|
||||||
<li class='itemize'>Built authentication infrastructure for OSRAM’s large-scale IoT platform (Node.js, Go, Lua)
|
<li class='itemize'>Built authentication infrastructure for <span class="company">OSRAM</span>’s large-scale IoT platform (Node.js, Go, Lua)
|
||||||
</li>
|
</li>
|
||||||
<li class='itemize'>First engineering hire at Körber Digital; established tech stack and real-time data pipelines on AWS
|
<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>
|
</li>
|
||||||
<li class='itemize'>Tech Lead at Avenga; enabled Scrum processes and refactored codebase into microservices
|
<li class='itemize'>Tech Lead at <span class="company">Avenga</span>; enabled Scrum processes and refactored codebase into microservices
|
||||||
</li>
|
</li>
|
||||||
<li class='itemize'>Migrated legacy PHP systems to Node.js microservices with Docker at GIATA
|
<li class='itemize'>Migrated legacy PHP systems to Node.js microservices with Docker at <span class="company">GIATA</span>
|
||||||
</li>
|
</li>
|
||||||
<li class='itemize'>Built in-house analytics dashboards and ad platforms at Glispa with AngularJS
|
<li class='itemize'>Built in-house analytics dashboards and ad platforms at <span class="company">Glispa</span> with AngularJS
|
||||||
</li>
|
</li>
|
||||||
<li class='itemize'>Mentored teams on Scrum adoption and modern JavaScript practices</li></ul>
|
<li class='itemize'>Mentored teams on Scrum adoption and modern JavaScript practices</li></ul>
|
||||||
<!-- l. 172 --><p class='noindent'><span class='cmsl-10'>Software Engineer - Full-time </span>August 2015 - February 2016
|
<!-- l. 172 --><p class='noindent'><span class='cmsl-10'>Software Engineer - Full-time </span>August 2015 - February 2016
|
||||||
<br class='newline' />smartB Energy Management GmbH, Berlin <br class='newline' />Worked in a small agile team creating an application for business owners to monitor energy consumption.
|
<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.
|
||||||
</p>
|
</p>
|
||||||
<ul class='itemize1'>
|
<ul class='itemize1'>
|
||||||
<li class='itemize'>Full-stack development with JavaScript and Python
|
<li class='itemize'>Full-stack development with JavaScript and Python
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
<li class='itemize'>Heavy use of pair programming and TDD practices</li></ul>
|
<li class='itemize'>Heavy use of pair programming and TDD practices</li></ul>
|
||||||
|
|
||||||
<!-- l. 180 --><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' />blogfoster GmbH, Berlin <br class='newline' />First developer hired to rewrite existing PHP/Backbone application using NodeJS 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 for this young startup
|
||||||
</li>
|
</li>
|
||||||
<li class='itemize'>Mapped out architecture with CTO; implemented TDD practices</li></ul>
|
<li class='itemize'>Mapped out architecture with CTO; implemented TDD practices</li></ul>
|
||||||
<!-- l. 188 --><p class='noindent'><span class='cmsl-10'>Frontend Developer - Full-time </span>February 2014 - March 2015
|
<!-- l. 188 --><p class='noindent'><span class='cmsl-10'>Frontend Developer - Full-time </span>February 2014 - March 2015
|
||||||
<br class='newline' />Dalia Research, 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'>Built survey platform and analytics dashboards in AngularJS
|
||||||
</li>
|
</li>
|
||||||
<li class='itemize'>Translated business requirements into product features across all browsers and devices</li></ul>
|
<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
|
<!-- l. 200 --><p class='noindent'><span class='cmsl-10'>Bachelor of Science, Computer Science </span>September 2010 - February 2014
|
||||||
<br class='newline' />TH Ingolstadt<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>
|
||||||
|
|
|
||||||
BIN
resume.dvi
BIN
resume.dvi
Binary file not shown.
BIN
resume.idv
BIN
resume.idv
Binary file not shown.
|
|
@ -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
|
entering extended mode
|
||||||
restricted \write18 enabled.
|
restricted \write18 enabled.
|
||||||
%&-line parsing enabled.
|
%&-line parsing enabled.
|
||||||
|
|
@ -385,10 +385,10 @@ L3 programming layer <2025-01-18>
|
||||||
Here is how much of TeX's memory you used:
|
Here is how much of TeX's memory you used:
|
||||||
4466 strings out of 475172
|
4466 strings out of 475172
|
||||||
56029 string characters out of 5767121
|
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
|
27423 multiletter control sequences out of 15000+600000
|
||||||
560606 words of font info for 42 fonts, out of 8000000 for 9000
|
560606 words of font info for 42 fonts, out of 8000000 for 9000
|
||||||
14 hyphenation exceptions out of 8191
|
14 hyphenation exceptions out of 8191
|
||||||
51i,8n,60p,834b,464s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
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).
|
||||||
|
|
|
||||||
BIN
resume.pdf
BIN
resume.pdf
Binary file not shown.
|
|
@ -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
|
% 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 Backend:} Rust (Actix, Warp, Axum), Python (FastAPI), Node.js, Go \\
|
||||||
{\bf Patterns:} REST, GraphQL, gRPC, async Rust, distributed systems (P2P) \\
|
{\bf Patterns:} REST, GraphQL, gRPC, async Rust, distributed systems (P2P) \\
|
||||||
{\bf Infrastructure:} AWS, Google Cloud, Docker, Kubernetes, CI/CD, Grafana \\
|
{\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
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
%----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
||||||
56
style.css
56
style.css
|
|
@ -1,25 +1,29 @@
|
||||||
/* CV Styles - Dark Theme matching bastiangruber.ca */
|
/* 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; }
|
* { box-sizing: border-box; }
|
||||||
|
|
||||||
html {
|
html {
|
||||||
color: #e2e8f0;
|
color: #f1f5f9;
|
||||||
background-color: #1a1f29;
|
background-color: #1a1f29;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
max-width: 850px;
|
max-width: 900px;
|
||||||
padding: 40px 50px;
|
padding: 40px 50px;
|
||||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
|
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
|
||||||
font-size: 15px;
|
font-size: 17px;
|
||||||
line-height: 1.6;
|
line-height: 1.65;
|
||||||
background-color: #1a1f29;
|
background-color: #1a1f29;
|
||||||
color: #e2e8f0;
|
color: #f1f5f9;
|
||||||
color-scheme: dark;
|
color-scheme: dark;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 600px) {
|
@media (max-width: 600px) {
|
||||||
body { font-size: 14px; padding: 20px; }
|
body { font-size: 16px; padding: 20px; }
|
||||||
}
|
}
|
||||||
|
|
||||||
@media print {
|
@media print {
|
||||||
|
|
@ -28,7 +32,7 @@ body {
|
||||||
|
|
||||||
/* Name header */
|
/* Name header */
|
||||||
.cmbx-12 {
|
.cmbx-12 {
|
||||||
font-size: 28px;
|
font-size: 32px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
display: block;
|
display: block;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
@ -44,15 +48,15 @@ body {
|
||||||
/* Contact info */
|
/* Contact info */
|
||||||
.center-addresses {
|
.center-addresses {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin: 15px 0 30px 0;
|
margin: 10px 0 15px 0;
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
}
|
}
|
||||||
|
|
||||||
.center-addresses td {
|
.center-addresses td {
|
||||||
padding: 0 20px;
|
padding: 0 20px;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
font-size: 14px;
|
font-size: 16px;
|
||||||
line-height: 1.8;
|
line-height: 1.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.first-address {
|
.first-address {
|
||||||
|
|
@ -89,13 +93,13 @@ body {
|
||||||
|
|
||||||
/* Section headers */
|
/* Section headers */
|
||||||
.sectionHead {
|
.sectionHead {
|
||||||
margin: 35px 0 15px 0;
|
margin: 20px 0 10px 0;
|
||||||
padding-bottom: 8px;
|
padding-bottom: 6px;
|
||||||
border-bottom: 2px solid #fbbf24;
|
border-bottom: 2px solid #fbbf24;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sectionHead .centerline {
|
.sectionHead .centerline {
|
||||||
font-size: 12px;
|
font-size: 14px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
letter-spacing: 2px;
|
letter-spacing: 2px;
|
||||||
color: #fbbf24;
|
color: #fbbf24;
|
||||||
|
|
@ -110,7 +114,27 @@ div.section {
|
||||||
.cmsl-10 {
|
.cmsl-10 {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-style: normal;
|
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 */
|
/* Bold text */
|
||||||
|
|
@ -126,7 +150,7 @@ ul.itemize1 {
|
||||||
|
|
||||||
li.itemize {
|
li.itemize {
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
color: #94a3b8;
|
color: #cbd5e1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Paragraphs */
|
/* Paragraphs */
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue