From d4ffa599b44c1ea07f3edbe03e001c3f0bcb6cc6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 17 Jun 2026 17:41:01 +0200 Subject: [PATCH 1/4] Pro turns into Mentorship --- content/blog/bugs-rust-wont-catch/index.md | 8 +- content/blog/cpp-rust-interop/index.md | 8 +- content/blog/hiring-rust-engineers/index.md | 8 +- .../blog/long-term-rust-maintenance/index.md | 8 +- content/blog/memory-safety/index.md | 59 +------------- content/blog/pitfalls-of-safe-rust/index.md | 8 +- .../rust-learning-resources-2026/index.md | 10 +-- .../index.md | 7 +- .../index.md | 7 +- .../blog/tips-for-faster-ci-builds/index.md | 8 +- .../index.md | 6 +- content/blog/why-rust/index.md | 3 +- content/{pro => mentorship}/_index.md | 11 +-- .../{pro => mentorship}/ferris-builder.png | Bin content/{pro => mentorship}/ferris-learn.png | Bin content/{pro => mentorship}/ferris-master.png | Bin content/{pro => mentorship}/mentor.svg | 0 content/{pro => mentorship}/social.png | Bin content/services/_index.md | 2 + sass/_base.scss | 5 +- sass/{_pro.scss => _mentorship.scss} | 0 sass/_next-steps.scss | 42 ++++++++++ sass/style.scss | 3 +- templates/base.html | 69 +--------------- templates/{pro.html => mentorship.html} | 55 +------------ templates/shortcodes/next_steps.html | 26 ++++++ templates/snippets/footer.html | 2 +- templates/snippets/nav.html | 74 ++++++++++++++++++ 28 files changed, 172 insertions(+), 257 deletions(-) rename content/{pro => mentorship}/_index.md (97%) rename content/{pro => mentorship}/ferris-builder.png (100%) rename content/{pro => mentorship}/ferris-learn.png (100%) rename content/{pro => mentorship}/ferris-master.png (100%) rename content/{pro => mentorship}/mentor.svg (100%) rename content/{pro => mentorship}/social.png (100%) rename sass/{_pro.scss => _mentorship.scss} (100%) create mode 100644 sass/_next-steps.scss rename templates/{pro.html => mentorship.html} (81%) create mode 100644 templates/shortcodes/next_steps.html create mode 100644 templates/snippets/nav.html diff --git a/content/blog/bugs-rust-wont-catch/index.md b/content/blog/bugs-rust-wont-catch/index.md index 4f928de3..55b3c3d0 100644 --- a/content/blog/bugs-rust-wont-catch/index.md +++ b/content/blog/bugs-rust-wont-catch/index.md @@ -376,10 +376,4 @@ The type system can encode many things, but it cannot encode conditions outside Idiomatic Rust, then, is not just code that the borrow checker accepts or that `clippy` leaves alone. It is code whose types, names, and control flow tell the *truth* about the system they run in. And that truth is sometimes ugly. It could mean using file descriptors instead of paths, `OsStr` instead of `String`, [`?` instead of `unwrap`](/blog/pitfalls-of-safe-rust/), and bug-for-bug compatibility over clean semantics. None of it is as pretty as the version you would write on a whiteboard. But it is more honest. -{% info(title="Need Help Hardening Your Rust Codebase?", icon="crab") %} - -Is your team shipping Rust into production and want to make sure you're not falling into the same traps? -I offer Rust consulting services, from code reviews and security-focused audits to training your team on the patterns that the compiler won't enforce for you. -[Get in touch](/#contact) to learn more. - -{% end %} +{{ next_steps(context="Shipping Rust to production and want to make sure you're not falling into the traps the compiler won't catch?") }} diff --git a/content/blog/cpp-rust-interop/index.md b/content/blog/cpp-rust-interop/index.md index 47091d46..f86fca20 100644 --- a/content/blog/cpp-rust-interop/index.md +++ b/content/blog/cpp-rust-interop/index.md @@ -103,13 +103,7 @@ Here are some key takeaways from Tyler's experiences with Rust and C++: As Tyler's experiences illustrate, the benefits of Rust often become most apparent in the "day two operations" of software development – in code reviews, refactoring, and managing complexity. -{% info(title="Make the most of Rust", icon="crab") %} - -Is your company considering to migrate from C++ to Rust? -I offer consulting services to get you up to speed with your Rust projects, from training your team to code reviews and architecture consulting. -Check out my [services page](/services) to learn more. - -{% end %} +{{ next_steps(context="Moving a C++ codebase to Rust? Getting the interop boundaries right is exactly the kind of decision that pays off with a second pair of eyes.") }} ## Recommended Reading diff --git a/content/blog/hiring-rust-engineers/index.md b/content/blog/hiring-rust-engineers/index.md index a422adca..6f1df915 100644 --- a/content/blog/hiring-rust-engineers/index.md +++ b/content/blog/hiring-rust-engineers/index.md @@ -141,11 +141,5 @@ work with your hiring manager to help them understand how to hire more Rust devs Good luck with your Rust hiring process! -{% info(title="Is your company adopting Rust?", icon="crab") %} - -Let me help you make the most of Rust. -I offer consulting services to get you up to speed with your Rust projects, from training your team to code reviews and architecture consulting. -Check out my [services page](/services) to learn more. - -{% end %} +{{ next_steps(context="Building out a Rust team and want to set them up for long-term success?") }} diff --git a/content/blog/long-term-rust-maintenance/index.md b/content/blog/long-term-rust-maintenance/index.md index 2588743f..5b67e1c9 100644 --- a/content/blog/long-term-rust-maintenance/index.md +++ b/content/blog/long-term-rust-maintenance/index.md @@ -577,11 +577,7 @@ tooling, and active community. By following the principles outlined in this post, you can ensure that your codebase remains robust and maintainable for years to come. -{% info(title="Supercharge Your Rust Adoption", icon="radio") %} - If you want to learn from top companies that have successfully adopted Rust, -consider subscribing to the [Rust In Production Podcast](/podcast). - -In case your company is considering to adopt Rust for a new project, feel free to reach out for a [consultation](/#contact). +consider subscribing to the [Rust in Production Podcast](/podcast). -{% end %} +{{ next_steps(context="Planning Rust for the long haul and want a codebase that stays maintainable for years?") }} diff --git a/content/blog/memory-safety/index.md b/content/blog/memory-safety/index.md index 3f71cff7..8c515ac1 100644 --- a/content/blog/memory-safety/index.md +++ b/content/blog/memory-safety/index.md @@ -55,14 +55,6 @@ This is a **global, bipartisan, cross-sector consensus** that memory-unsafe code The direction is clear. The question is not _whether_ your organization will need to address this, it's _when_, and whether you'll do so on your own terms or under external pressure. -{% info(title="Where Does Your Organization Stand?", icon="warning") %} - -If your software touches critical infrastructure, handles sensitive data, or ships into regulated markets, the regulatory direction above applies to you. Most organizations I work with underestimate how long it takes to build internal Rust expertise and draft a credible memory safety roadmap. - -I help companies close that gap, typically saving months of trial and error. **[Book a free assessment call](/#contact)** and let's figure out your exposure before deadlines set the pace. - -{% end %} - ## Memory Safety Vulnerabilities Are Everywhere Before we talk about regulation, let's talk about the problem. @@ -253,48 +245,13 @@ At a minimum: 4. Interim mitigations for code that won't be migrated soon (compiler hardening, fuzzing, static analysis). 5. A timeline with milestones showing a credible, prioritized reduction of memory safety vulnerabilities. -This is exactly the kind of work I do with my clients at [corrode](/services/). We've helped organizations across industries, from -cloud infrastructure to embedded devices to backend services, develop practical Rust adoption strategies (see our [case studies](/learn/case-studies/) for real-world examples). - (For a complete guide on the organizational side, see our [Rust Business Adoption Checklist](/blog/successful-rust-business-adoption-checklist/).) ## You Don't Have to Do This Alone -Making this transition on your own, on top of an already overwhelming workload, is hard. -But here's the good news: **you don't need to figure this out from scratch**. - -The Rust ecosystem is mature, the tooling is excellent, and there is a growing body of industry experience to draw from. What most organizations lack is not motivation. It's **guidance**. - -That's where I come in. - -At [corrode](/) I provide Rust consulting and training specifically designed for organizations navigating this transition. I've helped teams: - -- Evaluate whether Rust is the right fit for their specific use case. -- Build memory safety roadmaps aligned with CISA and EU CRA requirements. -- Train existing C/C++ developers to become productive in Rust. -- Architect interoperability layers between legacy C/C++ and new Rust code. -- Review and audit Rust codebases for production readiness. -- Hire and grow Rust teams (see our guide on [hiring Rust engineers](/blog/hiring-rust-engineers/)). - -I've also spent years documenting real-world Rust adoption through the [**Rust in Production podcast**](/podcast/), where companies like [Microsoft](/podcast/s04e01-microsoft/), [Cloudflare](/podcast/s05e03-cloudflare/), [1Password](/podcast/s04e06-1password/), [Volvo](/podcast/s03e08-volvo/), and [many others](/podcast/) share their experiences. - -I write about the practicalities of long-term Rust adoption on this blog, from [flattening the learning curve](/blog/flattening-rusts-learning-curve/) to [long-term maintenance strategies](/blog/long-term-rust-maintenance/) to understanding [Rust for foundational software](/blog/foundational-software/). +Making this transition on your own, on top of an already overwhelming workload, is hard. But the Rust ecosystem is mature, the tooling is excellent, and there is a growing body of industry experience to draw from. -## The Cost of Inaction Far Exceeds the Cost of Action - -Let me put it in business terms. - -Engaging a Rust consultant is an **insurance** policy for your organization. -The cost of a consulting engagement is a rounding error compared to: - -- A single critical CVE in production ($150,000+ per Microsoft's estimate). -- A regulatory non-compliance penalty under the EU Cyber Resilience Act. -- An emergency scramble to produce a memory safety roadmap when your government customer asks for one. -- The reputational damage of a headline-grabbing breach traced to a buffer overflow in 2026. - -**Starting now means you control the timeline, the budget, and the scope.** You choose which components to migrate first. You train your team at a sustainable pace. You build institutional knowledge before you _need_ it. - -Waiting means someone else, a regulator, a customer, a competitor, dictates the terms. +I've documented real-world Rust adoption through the [**Rust in Production podcast**](/podcast/), where companies like [Microsoft](/podcast/s04e01-microsoft/), [Cloudflare](/podcast/s05e03-cloudflare/), [1Password](/podcast/s04e06-1password/), [Volvo](/podcast/s03e08-volvo/), and [many others](/podcast/) share their experiences. I also write about long-term Rust adoption on this blog, from [flattening the learning curve](/blog/flattening-rusts-learning-curve/) to [long-term maintenance strategies](/blog/long-term-rust-maintenance/) to [Rust for foundational software](/blog/foundational-software/). ## Next Steps @@ -309,17 +266,7 @@ Here's what I recommend: I'd love to help you with any or all of the above. -{% info(title="Let's Talk About Your Memory Safety Strategy", icon="crab") %} - -If you're evaluating Rust or need to build a memory safety roadmap for compliance, [reach out for a free initial consultation](/#contact). - -I work with organizations of all sizes, from startups to Fortune 500 companies, to make Rust adoption practical, sustainable, and aligned with regulatory requirements. - -Let's make sure your organization is ahead of the curve, not behind it. - -**[Get in touch →](/#contact)** - -{% end %} +{{ next_steps(context="Evaluating Rust or building a memory safety roadmap for compliance?") }} ## Frequently Asked Questions diff --git a/content/blog/pitfalls-of-safe-rust/index.md b/content/blog/pitfalls-of-safe-rust/index.md index 65c76c65..029c1b1a 100644 --- a/content/blog/pitfalls-of-safe-rust/index.md +++ b/content/blog/pitfalls-of-safe-rust/index.md @@ -914,10 +914,4 @@ That's why testing, linting, and fuzzing are still important in Rust. For maximum robustness, combine Rust's safety guarantees with strict checks and strong verification methods. -{% info(title="Let an Expert Review Your Rust Code", icon="crab") %} - -I hope you found this article helpful! -If you want to take your Rust code to the next level, consider a code review by an expert. -I offer code reviews for Rust projects of all sizes. [Get in touch](/services/) to learn more. - -{% end %} +{{ next_steps(context="Want a second pair of expert eyes on your Rust code before it ships?") }} diff --git a/content/blog/rust-learning-resources-2026/index.md b/content/blog/rust-learning-resources-2026/index.md index fb1538f2..2b3f0523 100644 --- a/content/blog/rust-learning-resources-2026/index.md +++ b/content/blog/rust-learning-resources-2026/index.md @@ -142,12 +142,4 @@ All the material is open source and free. You can browse the [full workshop cata You can go through the material on your own to see if it fits your needs. Once you're ready, feel free to reach out about tailoring the content for you and your team. -{% info(title="Speed Up Your Learning Process", icon="crab") %} - -Is your company considering a switch to Rust? - -Rust is known for its steep learning curve, but with the right resources and guidance, you can become proficient in a matter of weeks. I offer hands-on workshops and training for teams and individuals who want to accelerate their learning process. - -Check out my [services page](/services) or [send me an email](mailto:hi@corrode.dev?subject=Rust%20Workshops) to learn more. - -{% end %} \ No newline at end of file +{{ next_steps(context="Want to accelerate past Rust's learning curve with hands-on guidance?") }} \ No newline at end of file diff --git a/content/blog/rust-prevents-data-races-not-race-conditions/index.md b/content/blog/rust-prevents-data-races-not-race-conditions/index.md index febc42a7..3eea771e 100644 --- a/content/blog/rust-prevents-data-races-not-race-conditions/index.md +++ b/content/blog/rust-prevents-data-races-not-race-conditions/index.md @@ -357,9 +357,4 @@ Rust holds an enormous amount for you, and what remains is the part that lives i If you want to go deeper on the concurrency side of this, read [Rust Atomics and Locks](https://mara.nl/atomics/) by Mara Bos. It's free online. -{% info(title="Want to get concurrency right in your Rust codebase?", icon="crab") %} - -I offer Rust consulting, from code reviews and audits to training your team on the patterns the compiler won't enforce for you, including the concurrency traps in this post. -[Get in touch](/#contact) to learn more. - -{% end %} +{{ next_steps(context="Want to get concurrency right in your Rust codebase, including the traps covered in this post?") }} diff --git a/content/blog/successful-rust-business-adoption-checklist/index.md b/content/blog/successful-rust-business-adoption-checklist/index.md index 0049a3ab..09c91eb0 100644 --- a/content/blog/successful-rust-business-adoption-checklist/index.md +++ b/content/blog/successful-rust-business-adoption-checklist/index.md @@ -451,9 +451,4 @@ By acknowledging the challenges and following these strategies, you can ensure a Check out our ['Rust in Production' podcast](/podcast/) for insights from industry experts on how their teams successfully adopted Rust in production. -{% info(title="Need Help with Your Rust Project?") %} - -If you're considering adopting Rust for your next project, I can help you get started. -[Reach out for a free consultation](/#contact) if you need help with your Rust project. I'm happy to help you get the most out of Rust and guide you through the process. - -{% end %} \ No newline at end of file +{{ next_steps(context="Considering Rust for your next project and want guidance from someone who's done it before?") }} \ No newline at end of file diff --git a/content/blog/tips-for-faster-ci-builds/index.md b/content/blog/tips-for-faster-ci-builds/index.md index bc035603..18d0fde6 100644 --- a/content/blog/tips-for-faster-ci-builds/index.md +++ b/content/blog/tips-for-faster-ci-builds/index.md @@ -299,10 +299,4 @@ If you've implemented all these optimizations and your builds are still slow, it Remember that each project is unique. Start with the easier wins like Swatinem's cache action and `--locked` flag, then progressively implement more advanced optimizations as needed. Monitor your CI metrics to ensure the changes are having the desired effect. -{% info(title="Need Professional Support?", icon="crab") %} - -Is your Rust CI still too slow despite implementing these optimizations? -I can help you identify and fix performance bottlenecks in your build pipeline. -[Book a free consultation](/services) to discuss your specific needs. - -{% end %} \ No newline at end of file +{{ next_steps(context="Is your Rust CI still too slow despite these optimizations?") }} \ No newline at end of file diff --git a/content/blog/tips-for-faster-rust-compile-times/index.md b/content/blog/tips-for-faster-rust-compile-times/index.md index 13a58267..2109f026 100644 --- a/content/blog/tips-for-faster-rust-compile-times/index.md +++ b/content/blog/tips-for-faster-rust-compile-times/index.md @@ -1190,8 +1190,4 @@ I hope that you were able to use some of these tips to speed up your Rust builds In case you found other ways to speed up your Rust builds, or if you have any questions or feedback, I'd love to hear from you. -{% info(title="Get Professional Support", icon="crab") %} -If you need support for commercial Rust projects, -I can also help you with performance problems and reducing your build times. -[Get in touch.](/services) -{% end %} +{{ next_steps(context="Fighting slow Rust builds on a commercial project?") }} diff --git a/content/blog/why-rust/index.md b/content/blog/why-rust/index.md index e9579ce1..aa6b4146 100644 --- a/content/blog/why-rust/index.md +++ b/content/blog/why-rust/index.md @@ -660,8 +660,7 @@ invaluable. Equally, if you are ready to embrace Rust and are seeking expertise in training or consulting to ensure a smooth transition, specialized support is essential. -[Get in touch](/services/) to explore if Rust is the right choice for your -organization and how it can contribute to your long-term success. +{{ next_steps(context="Weighing whether Rust is the right choice for your organization?") }} {% info(title="Rust in Production Podcast", icon="radio") %} Real-world experiences are the best way to learn about the benefits and diff --git a/content/pro/_index.md b/content/mentorship/_index.md similarity index 97% rename from content/pro/_index.md rename to content/mentorship/_index.md index 3df48c2e..90ab3baa 100644 --- a/content/pro/_index.md +++ b/content/mentorship/_index.md @@ -1,7 +1,8 @@ +++ title = "Personal Rust Mentorship" -template = "pro.html" +template = "mentorship.html" description = "Master Rust from first principles with personalized mentorship. Work 1-on-1 with an expert to build deep intuition for systems programming." +aliases = ["pro"] +++
@@ -29,7 +30,7 @@ Spend time programming at the edge of your abilities with expert 1-on-1 coaching

Focused on your success

-Mentorship vs Self-learning chart +Mentorship vs Self-learning chart

Learning Rust can feel overwhelming. @@ -136,20 +137,20 @@ We'll work on what matters to you: whether that's language fundamentals, systems

Discover the joy of Rust

We'll cover ownership, lifetimes, and design patterns from the ground up. Learn what separates the good from the best, and write production-ready Rust code you can maintain for years to come.

-Ferris the Crab as a Wizard +Ferris the Crab as a Wizard

You'll gain the confidence to "open the hood" and see how things really work, moving past surface-level abstractions. We'll dive into the standard library source code and learn how to navigate it without any additional tools.

Systems Design & Project Structure

Bring your own projects or work on mine. We'll explore how to structure applications and make design trade-offs in a way that feels natural, logical, and scales beautifully.

-Ferris the Crab reading a book +Ferris the Crab reading a book

Learn Generously with Code Review

Learning how to give and receive kind, constructive feedback is an essential skill. I'll help you spot areas for improvement, communicate them effectively, and foster a collaborative engineering culture in your team.

-Ferris the Crab surfing +Ferris the Crab surfing
diff --git a/content/pro/ferris-builder.png b/content/mentorship/ferris-builder.png similarity index 100% rename from content/pro/ferris-builder.png rename to content/mentorship/ferris-builder.png diff --git a/content/pro/ferris-learn.png b/content/mentorship/ferris-learn.png similarity index 100% rename from content/pro/ferris-learn.png rename to content/mentorship/ferris-learn.png diff --git a/content/pro/ferris-master.png b/content/mentorship/ferris-master.png similarity index 100% rename from content/pro/ferris-master.png rename to content/mentorship/ferris-master.png diff --git a/content/pro/mentor.svg b/content/mentorship/mentor.svg similarity index 100% rename from content/pro/mentor.svg rename to content/mentorship/mentor.svg diff --git a/content/pro/social.png b/content/mentorship/social.png similarity index 100% rename from content/pro/social.png rename to content/mentorship/social.png diff --git a/content/services/_index.md b/content/services/_index.md index d285c6b1..4bb81325 100644 --- a/content/services/_index.md +++ b/content/services/_index.md @@ -11,6 +11,8 @@ aliases = ["about"] Your browser does not support the video tag. +**Looking for help just for yourself?** Most of my work is with teams, but I also mentor individual engineers one-on-one. If that's you, [Rust mentorship](/mentorship) is built for exactly that. + ## Here’s the problem... Rust is a complex language with a large API surface. Writing production-grade Rust requires a lot of architectural decisions. As a team lead excited about Rust, you're responsible for your project's success. diff --git a/sass/_base.scss b/sass/_base.scss index 855f0afe..a8a08ca0 100644 --- a/sass/_base.scss +++ b/sass/_base.scss @@ -217,7 +217,7 @@ nav { justify-content: space-between; height: 70px; width: 100%; - max-width: 1100px; + max-width: 1200px; min-width: 300px; margin: 40px auto 20px auto; padding: 0.5em 1em; @@ -231,7 +231,7 @@ nav { } .menu > li { - margin: 0 1rem; + margin: 0 1.25rem; overflow: hidden; display: flex; align-items: center; @@ -315,7 +315,6 @@ nav { border-radius: 6px; border: 2px solid $brightPrim; font-weight: 600; - transition: all 0.2s ease; &:hover { background-color: $brightScnd; diff --git a/sass/_pro.scss b/sass/_mentorship.scss similarity index 100% rename from sass/_pro.scss rename to sass/_mentorship.scss diff --git a/sass/_next-steps.scss b/sass/_next-steps.scss new file mode 100644 index 00000000..b8790bec --- /dev/null +++ b/sass/_next-steps.scss @@ -0,0 +1,42 @@ +.next-steps { + padding: 30px 40px; + border-radius: 4px; + border: 1px solid $heroDark; + margin: 3em 0; +} + +.next-steps-header { + display: flex; + gap: 10px; + align-items: center; + margin-bottom: 0.5em; + + h4 { + margin: 0; + padding: 0; + } +} + +.next-steps-context { + margin: 0 0 1em; +} + +.next-steps-paths { + margin: 0; + padding-left: 1.2em; + + li { + margin: 0.4em 0; + line-height: 1.5; + } + + a { + font-weight: 700; + } +} + +@media (prefers-color-scheme: dark) { + .next-steps { + border-color: rgba(255, 255, 255, 0.5); + } +} diff --git a/sass/style.scss b/sass/style.scss index c63ef387..7bdcc0bf 100644 --- a/sass/style.scss +++ b/sass/style.scss @@ -9,4 +9,5 @@ @import "./_podcast.scss"; @import "./podcast-callout"; @import "./faq.scss"; -@import "./_pro.scss"; +@import "./_mentorship.scss"; +@import "./_next-steps.scss"; diff --git a/templates/base.html b/templates/base.html index ffe09864..abe51207 100644 --- a/templates/base.html +++ b/templates/base.html @@ -122,74 +122,7 @@
- + {% include "snippets/nav.html" %}
{% block content %}{% endblock %} diff --git a/templates/pro.html b/templates/mentorship.html similarity index 81% rename from templates/pro.html rename to templates/mentorship.html index 79f8982c..acdb06ee 100644 --- a/templates/pro.html +++ b/templates/mentorship.html @@ -81,60 +81,7 @@
- - + {% include "snippets/nav.html" %}
{{ section.content | safe }}
diff --git a/templates/shortcodes/next_steps.html b/templates/shortcodes/next_steps.html new file mode 100644 index 00000000..20b54c08 --- /dev/null +++ b/templates/shortcodes/next_steps.html @@ -0,0 +1,26 @@ +
+
+ +

Where to go from here

+
+ {% if context %} +

+ {{ context | markdown(inline=true) | safe }} +

+ {% else %} +

+ Whether you're working on this with a team or on your own, you don't + have to figure it out alone. +

+ {% endif %} +
    +
  • + For your team. Training, code review, and + architecture support to ship Rust with confidence. +
  • +
  • + For yourself. 1-on-1 mentorship to build + deep Rust intuition at your own pace. +
  • +
+
diff --git a/templates/snippets/footer.html b/templates/snippets/footer.html index 6e102619..bf301760 100644 --- a/templates/snippets/footer.html +++ b/templates/snippets/footer.html @@ -64,7 +64,7 @@

Idiomatic Rust in your inbox

Company

diff --git a/templates/snippets/nav.html b/templates/snippets/nav.html new file mode 100644 index 00000000..0538b95c --- /dev/null +++ b/templates/snippets/nav.html @@ -0,0 +1,74 @@ + \ No newline at end of file From 17d8ffb742d013786eb860b847d6b283c3e12d2c Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 17 Jun 2026 17:57:47 +0200 Subject: [PATCH 2/4] Reorder nav by commitment gradient; tidy mentorship/why-rust copy --- content/blog/why-rust/index.md | 13 ------------- content/mentorship/_index.md | 2 +- templates/snippets/nav.html | 24 ++++++++++++------------ 3 files changed, 13 insertions(+), 26 deletions(-) diff --git a/content/blog/why-rust/index.md b/content/blog/why-rust/index.md index aa6b4146..4703fd57 100644 --- a/content/blog/why-rust/index.md +++ b/content/blog/why-rust/index.md @@ -662,19 +662,6 @@ essential. {{ next_steps(context="Weighing whether Rust is the right choice for your organization?") }} -{% info(title="Rust in Production Podcast", icon="radio") %} -Real-world experiences are the best way to learn about the benefits and -challenges of a technology. That's why we started Rust in Production, a -podcast about companies that bet big on Rust. - -Listen to the first-hand accounts from decision-makers about why they chose Rust and how it -impacted their business. -Each episode is a deep dive into the motivations, challenges, and lessons learned -from adopting Rust in production by companies that shape the future of infrastructure. - -More information here. -{% end %} - ## Talks * Considering Rust — Jon Gjengset, 2020 diff --git a/content/mentorship/_index.md b/content/mentorship/_index.md index 90ab3baa..7903f102 100644 --- a/content/mentorship/_index.md +++ b/content/mentorship/_index.md @@ -307,7 +307,7 @@ We'll work on what matters to you: whether that's language fundamentals, systems }, { "q": "What if I can't make a scheduled session?", - "a": "Life happens. Just let me know and we'll move your session to another slot. Sessions in the Pack are valid for 3 months, and Deep Dive sessions for 6 months, so there's plenty of flexibility." + "a": "Life happens. Just let me know and we'll move your session to another slot. The 5-session block is valid for 3 months, and the 10-session block for 6 months, so there's plenty of flexibility." }, { "q": "How do I know you're the right mentor?", diff --git a/templates/snippets/nav.html b/templates/snippets/nav.html index 0538b95c..a8c38a2f 100644 --- a/templates/snippets/nav.html +++ b/templates/snippets/nav.html @@ -35,6 +35,18 @@ href="{{ config.base_url ~ '/' }}">Home +
  • + + Blog + +
  • +
  • + + Podcast + +
  • @@ -53,18 +65,6 @@ Mentorship
  • -
  • - - Blog - -
  • -
  • - - Podcast - -
  • Consulting From b47c4af3b13367d9a2b00180620d42c4620cef6d Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 17 Jun 2026 18:13:24 +0200 Subject: [PATCH 3/4] nav and consulting page --- content/services/_index.md | 8 +++++--- sass/_base.scss | 3 +++ sass/_mentorship.scss | 27 +++++++++++++++++++++++++++ templates/snippets/nav.html | 2 +- 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/content/services/_index.md b/content/services/_index.md index 4bb81325..1bc3f477 100644 --- a/content/services/_index.md +++ b/content/services/_index.md @@ -1,5 +1,5 @@ +++ -title = "From Prototype To Production In Half The Time" +title = "Help Your Team Ship Production Rust in Half the Time" template = "page.html" sort_by = "date" description = "Friendly, professional Rust consulting services to help companies make the most of Rust. Our offerings include training, consulting, mentoring, code reviews, and team augmentation." @@ -11,11 +11,13 @@ aliases = ["about"] Your browser does not support the video tag. -**Looking for help just for yourself?** Most of my work is with teams, but I also mentor individual engineers one-on-one. If that's you, [Rust mentorship](/mentorship) is built for exactly that. +**Friendly, expert Rust consulting and training for engineering teams.** I help your team adopt Rust and ship production-grade services with confidence: faster, and without the costly missteps along the way. + +*Looking for help just for yourself? I also offer 1-on-1 [Rust mentorship](/mentorship) for individual engineers.* ## Here’s the problem... -Rust is a complex language with a large API surface. Writing production-grade Rust requires a lot of architectural decisions. As a team lead excited about Rust, you're responsible for your project's success. +You're a team lead, excited about Rust and responsible for your project's success. But Rust is a complex language with a large API surface, and writing production-grade Rust requires a lot of architectural decisions. Your team wants to do things right, but lacks experience, and you're trying to reduce risk. Courses alone won't cut it. Nameless agencies offer help, but they don't care about your project or team. diff --git a/sass/_base.scss b/sass/_base.scss index a8a08ca0..2038a343 100644 --- a/sass/_base.scss +++ b/sass/_base.scss @@ -315,6 +315,9 @@ nav { border-radius: 6px; border: 2px solid $brightPrim; font-weight: 600; + transition: + background-color 0.2s ease, + border-color 0.2s ease; &:hover { background-color: $brightScnd; diff --git a/sass/_mentorship.scss b/sass/_mentorship.scss index 1858573e..cdabf03e 100644 --- a/sass/_mentorship.scss +++ b/sass/_mentorship.scss @@ -34,6 +34,33 @@ color: $brightBgrd; } } + + // The page is force-dark regardless of theme, so the toggle does nothing here. + .nav-theme-toggle { + display: none; + } + + // The page background is always $brightPrim, so the default button (dark on + // dark) would be invisible. Always use the light-on-dark treatment here. + .cta-button { + background-color: white; + color: $brightPrim; + border-color: white; + + span { + color: $brightPrim; + } + + &:hover { + background-color: $brightBgrd; + border-color: $brightBgrd; + color: $brightPrim; + + span { + color: $brightPrim; + } + } + } } // Main Content diff --git a/templates/snippets/nav.html b/templates/snippets/nav.html index a8c38a2f..b6cd768e 100644 --- a/templates/snippets/nav.html +++ b/templates/snippets/nav.html @@ -17,7 +17,7 @@