Jesús Pérez d59644b96f
feat: unified auth model, project onboarding, install pipeline, config management
The full scope across this batch: POST /sessions key→token exchange, SessionStore dual-index with revoke_by_id, CLI Bearer injection (ONTOREF_TOKEN), ontoref setup
  --gen-keys, install scripts, daemon config form roundtrip, ADR-004/005, on+re self-description update (fully-self-described), and landing page refresh.
2026-03-13 20:56:31 +00:00

490 lines
9.0 KiB
Markdown

---
theme: default
title: Why I Needed Rust
titleTemplate: '%s - Rustikon 2026'
layout: cover
---
# Why I Needed Rust
## Finally Infrastructure Automation I Can Sleep On
Jesús Pérez Lorenzo
Las Palmas, Spain
Rustikon 2026
---
# The Problem Statement
After decades in infrastructure, I was exhausted.
Not by the work.
By the failures.
<style>
h1 { font-size: 3rem; }
p { font-size: 1.5rem; color: var(--color-text-secondary); margin: 0.5em 0; }
</style>
---
layout: two-cols
---
# 38 Years of Infrastructure
**1987 — 2025**
::left::
- Perl (1990s)
- Python (2000s)
- Bash (2000s)
- Chef (2010s)
- Ansible (2010s)
- Terraform (2010s)
- Go (2010s-2020s)
- ???
::right::
> "I've tried everything to solve the provisioning problem."
Each time, I thought I had the answer.
Each time, reality proved me wrong.
---
# The Perl Era (1990s)
**Power and Chaos**
<div class="box-highlight">
<strong>The Promise:</strong> We could do anything
<strong>The Reality:</strong> We could break anything
</div>
- Metaprogramming that was beautiful and terrifying
- No safety net
- Silent failures at 3 AM
- **Lesson:** Power without safety is a disaster
---
# The Python Pragmatism (2000s)
**Flexible, Rapid, Trusted**
<div class="box-highlight">
<strong>The Appeal:</strong> Rapid development, great community
<strong>The Problem:</strong> Nothing stopped you from being wrong
</div>
- Type hints came late (and optional)
- Runtime errors > compile-time errors
- Scripts that "worked on my machine"
- **Lesson:** Pragmatism without guarantees is fragile
---
# The Cloud Scale (2010s)
**More Tools, Same Problems**
Tools arrived: **Ansible • Terraform • Chef • Puppet**
<div class="box-highlight">
<strong>What changed?</strong> The syntax
<strong>What didn't?</strong> The fundamental problems
</div>
- Still fighting type safety
- Still discovering errors in production
- Still maintaining undocumented scripts
- **Lesson:** More tools don't solve paradigm problems
---
# The Breaking Point
<div style="text-align: center; margin: 3em 0;">
**I could automate infrastructure**
**But I couldn't make it reliable**
**I couldn't prevent mistakes**
**I couldn't sleep**
</div>
---
layout: section
---
# The Real Problems
What Actually Fails
---
# What Actually Fails
- **Typos discovered at 3 AM** in production configs
- **Scripts that "worked on my machine"** fail everywhere else
- **Nobody understands the code** even 6 months later
- **Changes that break other things** silently
- **Secrets scattered everywhere** without audit trails
<div class="box-highlight">
It's not about <strong>deployment</strong>.
It's about <strong>reliable deployment</strong> that doesn't cause panic.
</div>
---
# The Cost
Not just technical:
- Hours debugging cryptic errors
- Sleep lost to on-call incidents
- Team stress and burnout
- Lack of confidence in deployments
- Technical debt that compounds
- **The thing you can't measure: fear**
---
# The Realization
The tools weren't the problem.
The languages weren't the problem.
**The paradigm was the problem.**
I needed something that:
- Forced clarity (not enabled chaos)
- Prevented errors (before production)
- Made assumptions explicit (not hidden)
- Gave confidence (not anxiety)
---
layout: section
---
# Rust Enters the Picture
The Shift
---
# First Encounter with Rust
<div class="box-highlight">
<strong>"Type safety?"</strong>
<strong>"Memory safety?"</strong>
<strong>"Do I really need this?"</strong>
This looks... complicated.
</div>
Initial reaction: skepticism mixed with curiosity
---
# The Shift: Type System as Defense
<div style="text-align: center; margin: 2em 0;">
**Wait.**
**The compiler could prevent my mistakes?**
**Before they reach production?**
**Before I even run the code?**
</div>
This changed everything.
---
# What Changed For Me
| Problem | Old Way | Rust Way |
|---------|---------|----------|
| Typos in config | 3 AM incident | Compile error |
| "Works on my machine" | Hope and prayers | Guaranteed same output |
| Secrets leaking | Runtime discovery | Type system prevents it |
| Undocumented constraints | Institutional knowledge | Compiler enforces it |
| Silent failures | Debug for hours | Explicit error handling |
---
# The Infrastructure Insight
<div class="box-highlight">
I could define constraints in code.
Compiler enforced them everywhere.
Changes forced adaptation everywhere.
No silent failures.
</div>
This is not a small thing.
---
# The Human Impact
When the system is trustworthy:
- ✓ Sleep comes back
- ✓ Confidence returns
- ✓ Team trusts the automation
- ✓ Stress decreases
- ✓ You can actually rest
---
layout: section
---
# What I Built
The Implementation
---
# Current Projects
**Building in Rust:**
- **project-provisioning** — Infrastructure provisioning orchestrator
- **secretumvault** — Secrets management with PQC
- **typedialog** — Interactive configuration forms
- **daemon-cli** — Unified service abstraction
Not selling products.
**Demonstrating that it works.**
---
# The Key Patterns
Type-safe declarations
- Schema defines constraints at compile-time
Schema-driven generation
- Forms, validation, templates all derived from one source
Distributed orchestration
- Control, not chaos. Semaphore-based coordination
Unified governance
- Auth, audit, compliance as first-class concerns
**Each pattern prevents specific failures.**
---
# Why Rust Specifically
<div class="box-highlight">
<strong>Type System</strong>
Prevents entire categories of errors before execution
<strong>Performance</strong>
No overhead, can be truly reactive
<strong>Ecosystem</strong>
Coherent tools (Nickel, Nushell, KCL) not disparate solutions
<strong>Single Binary</strong>
Deploy anywhere, no dependency hell
<strong>Community</strong>
People who care about correctness
</div>
---
layout: section
---
# What I Learned
The Philosophy
---
# Three Key Insights
**1. Infrastructure is your core, not an afterthought**
It's not a support function. It's the foundation your business runs on.
**2. Reliability requires preventing errors, not handling them**
You can't code around a broken paradigm.
**3. Engineers deserve better than anxiety**
We shouldn't be woken at 3 AM by infrastructure failures.
---
# The Age Advantage
<div class="box-highlight">
At 63, I have perspective.
I've seen technologies come and go.
<strong>Rust isn't hype. It solves real problems I've had for decades.</strong>
Being older isn't a liability.
It's an advantage.
</div>
I can tell you: this matters.
---
# What Infrastructure Actually Is
- **Core of your business** — not a cost center
- **Must evolve** with business needs
- **Can't be fragile** — customers depend on it
- **Can't cause panic** — engineers can't be on-call all the time
- **Engineers deserve to rest** — this is non-negotiable
---
layout: section
---
# The Ask
For Everyone Here
---
# For Infrastructure Veterans
If you've been frustrated like me:
- ✓ Listen up
- ✓ Rust solves the problems *you know*
- ✓ Not problems you've never had
- ✓ Give it a real chance
- ✓ Your sleep will thank you
---
# For Younger Engineers
Learn from someone who tried everything:
- ✓ Don't waste 30 years on fragile infrastructure
- ✓ Start with type safety
- ✓ Build for reliability from- day one
- ✓ You'll thank yourself later
---
# The Simple Ask
<div style="text-align: center; margin: 3em 0;">
**Think differently about infrastructure.**
Type safety isn't luxury.
It's foundation.
You deserve better than 3 AM panic.
</div>
---
layout: cover
---
# Why I Needed Rust, Finally
## Because I Wanted to Sleep
Questions?
---
# Resources & Contact
**Projects:**
- github.com/jesusperez/provisioning
- github.com/jesusperez/secretumvault
- github.com/jesusperez/typedialog
**Community:**
- Rust Las Palmas — rust-laspalmas.dev
**Contact:**
- jesusperez.pro
<style>
a { color: var(--rust-orange); }
</style>
---
# Speaker Notes
## Delivery Tips
- **Opening:** Vulnerable, honest. Show the struggle before the solution.
- **Tone shift:** Around slide "The Shift" — move from struggling to architect who figured it out.
- **Key moments:** Pause after emotional beats. Let them sink in.
- **Age:** Not an apology, not bragging. Just perspective.
- **Closing:** Hopeful, inclusive. This is for everyone.
## Audience Engagement
- **Opening question:** "Who's been woken up at 3 AM by infrastructure failure?" (show of hands)
- **Pause points:** After problem slides, let silence sit
- **Expression:** Show relief when talking about Rust solution
- **Ending:** Direct eye contact, slow delivery
## Timing
- 2 min: Opening (slides 1-2)
- 5 min: Journey (slides 3-8)
- 5 min: Problems (slides 9-12)
- 6 min: Rust discovery (slides 13-17)
- 5 min: Implementation (slides 18-20)
- 4 min: Philosophy (slides 21-23)
- 2 min: Call to action (slides 24-26)
- 1 min: Closing (slide 27)
- **Total: 30 minutes + Q&A**
## If Extending to 40 min
Add stories:
- Specific 3 AM incident (2 min)
- First Rust project struggles (2 min)
- Team adoption journey (2 min)
- Measurable improvements (2 min)