# Rustikon 2026 - Live Reader Script (Speech Only)

Only lines to speak. Legend: `/` short pause, `//` long pause.

## Slide 1

STORY: Act 1 - Hook & Promise
TENSION: Low -> Medium
EMPHASIS: Credibilidad y dolor real
DELIVERY: Calma, pausas limpias

Why I Needed Rust

Finally. / infra Automation I Can Sleep On

## Slide 2

STORY: Act 1 - Hook & Promise
TENSION: Low -> Medium
EMPHASIS: Credibilidad y dolor real
DELIVERY: Calma, pausas limpias

Years. / One Problem.

Era Tool Lesson

1990s Perl Power without safety is a disaster

2000s Python practical work without safety rules is fragile

2010s Bash · Chef · Ansible · Terraform More tools don't solve approach problems

2020s Go · ???

Each time. / I thought I had the answer.

Each time. / reality proved me wrong.

## Slide 3

STORY: Act 1 - Hook & Promise
TENSION: Low -> Medium
EMPHASIS: Credibilidad y dolor real
DELIVERY: Calma, pausas limpias

The Evolution

How we got here

## Slide 4

STORY: Act 2 - Escalation
TENSION: Medium -> High
EMPHASIS: Crecimiento de complejidad sin control
DELIVERY: Ritmo creciente

Stage 1. / Local (late 80s / early 90s)

Dumb terminals. / Single machine. / One state.

Local development. / long deployment cycles. / low urgency

One state. / easy to observe. / easy to control

I A C: procedural scripts. / logic hidden inside the application

> The Perl Era: we could do anything.

> We could also break anything.

> Beautiful. / terrifying metaprogramming.

> No safety net.

> Silent failures at 3 AM.

> Lesson: power without safety is a disaster.

🛡 ●●●●○ &nbsp; 😴 ●●●●○ &nbsp; 🔥 ●○○○○

## Slide 5

STORY: Act 2 - Escalation
TENSION: Medium -> High
EMPHASIS: Crecimiento de complejidad sin control
DELIVERY: Ritmo creciente

Stage 2. / Networks / Internet

Systems getting farther away. / More people. / More coordination.

Remote access. / spread out teams. / security becomes relevant

Cost of downtime rises. / processes become critical

Harmonizing: package installs. / config. / updates across multiple machines in parallel

I A C: reproducible automation. / first declared attempts

> The Python Era: rapid development. / great community.

> But nothing stopped you from being wrong.

> Type hints came late. / and optional.

> Runtime errors >> compile-time errors.

> Lesson: practical work without safety rules is fragile.

More pieces. / More people. / Getting interesting.

🛡 ●●●○○ &nbsp; 😴 ●●●○○ &nbsp; 🔥 ●●○○○

## Slide 6

STORY: Act 2 - Escalation
TENSION: Medium -> High
EMPHASIS: Crecimiento de complejidad sin control
DELIVERY: Ritmo creciente

Stage 3. / Containers / Cloud / CI-CD

Everything. / Everywhere. / All at once.

Monolith → spread out. / all day. / every day. / high availability

Cloud. / hybrid. / multi-cloud. / on-prem. / simultaneously

Rollback and rollforward: database transactions. / but for infra

Scale horizontally AND vertically. / and descale

C I slash C D continuous: new features. / new deploys. / permanent churn

> The Cloud/I A C Era: Ansible. / Terraform. / Chef. / Puppet.

> What changed? The syntax.

> What didn't? The fundamental problems.

> Still fighting type safety. / Still discovering errors in production.

> Lesson: more tools don't solve approach problems.

🛡 ●●○○○ &nbsp; 😴 ●○○○○ &nbsp; 🔥 ●●●●○

## Slide 7

STORY: Act 2 - Escalation
TENSION: Medium -> High
EMPHASIS: Crecimiento de complejidad sin control
DELIVERY: Ritmo creciente

I could automate infra.

But I couldn't make it reliable.

I couldn't prevent mistakes.

I couldn't sleep.

🛡 ●○○○○ &nbsp;&nbsp; 😴 ○○○○○ &nbsp;&nbsp; 🔥 ●●●●●

## Slide 8

STORY: Act 3 - Problem Anatomy
TENSION: High
EMPHASIS: Causa raiz y costo de fallar tarde
DELIVERY: Didactico, frases cortas

Why I A C Fails

The restaurant problem

## Slide 9

STORY: Act 3 - Problem Anatomy
TENSION: High
EMPHASIS: Causa raiz y costo de fallar tarde
DELIVERY: Didactico, frases cortas

The Restaurant

Every restaurant has at least three actors.

Restaurant infra

Guest declares what they want declared config (YAML. / HCL)

Waiter validates and transmits controller (K8s. / Ansible)

Kitchen executes and delivers Runtime / setup

Dish arrives. / or doesn't Deployment succeeds. / or not

What makes it work. / or not:

The guest declares. / Doesn't implement.

The waiter must know what's possible. / before going to the kitchen.

> "I want X" → waiter goes to kitchen

> → "we don't have X. / why is it on the menu?"

> → back to the table.

> Equivalent: I configured a host with port 8443 → that port isn't allowed → reconfigure from zero.

## Slide 10

STORY: Act 3 - Problem Anatomy
TENSION: High
EMPHASIS: Causa raiz y costo de fallar tarde
DELIVERY: Didactico, frases cortas

The Truth That Mutates

State is not static. / It can change at every step of the chain.

Step Truth for this actor

Guest speaks What they want

Waiter's notepad What was written down

Kitchen markings What's done / not done

Payment ticket What was actually served

> Fail early = fail cheap. / Fail in production = nightmare.

The context problem:

The waiter knows the regular customer: "always no salt."

The kitchen doesn't. / If the waiter changes. / that context disappears.

config drift is the same thing: Implicit state. / Not explicit. / Not propagated. / Lost silently.

The cost of failure depends on where it happens:

Fail at the table (impossible order): cheap. / caught before kitchen

Fail in kitchen (ingredient missing): medium. / renegotiate with guest

Fail at delivery (wrong dish arrives): expensive. / experience destroyed

## Slide 11

STORY: Act 3 - Problem Anatomy
TENSION: High
EMPHASIS: Causa raiz y costo de fallar tarde
DELIVERY: Didactico, frases cortas

"We Don't Have Mushrooms"

When an actor in the chain can't fulfill part of the order.

> "Can I substitute vegetables?"

> That renegotiation must be explicit. / Traced. / Re-authorized. / Not silent. / Not assumed.

config drift is silent renegotiation:

The system changes. / Nobody notified. / State diverges without trace.

Rust's answer. / Option :

[code example]

> The compiler check is the waiter who cannot pretend an ingredient exists.

## Slide 12

STORY: Act 3 - Problem Anatomy
TENSION: High
EMPHASIS: Causa raiz y costo de fallar tarde
DELIVERY: Didactico, frases cortas

The Config Evolution

How we got from code to YAML hell

Hardcoded. / everything inside the binary. / Full control. / Zero flexibility.

External config (JSON). / works between machines. / Unreadable for humans at scale.

YAML / TOML. / more readable. / Fragile syntax. / Implicit types. / Silent errors.

YAML + Serde. / Serde validates the structure:

Does the field exist? Is it the right type?

Do we accept "elephant" as a pet? If the type is String... / yes.

Serde validates shape. / Not meaning.

Helm / Jinja templates. / YAML generated from variables (in YAML).

Does it validate the content of the generated YAML? No. / Not at all.

Like using an LLM with a markdown reference: the format is there.

but is the content correct? Nobody safety rules that.

## Slide 13

STORY: Act 3 - Problem Anatomy
TENSION: High
EMPHASIS: Causa raiz y costo de fallar tarde
DELIVERY: Didactico, frases cortas

Continuous C I slash C D.

No semantic check.

Continuous hope.

(crossing our fingers in production)

🛡 ●○○○○ &nbsp;&nbsp; 😴 ○○○○○ &nbsp;&nbsp; 🔥 ●●●●●

## Slide 14

STORY: Act 3 - Problem Anatomy
TENSION: High
EMPHASIS: Causa raiz y costo de fallar tarde
DELIVERY: Didactico, frases cortas

Three Questions Without Answers

Question 1 —

— Why do we wait for things to break?

"Works on my machine". / in production. / I don't know

Fail late = maximum cost. / We want: fail fast. / fail cheap

Question 2 —

— Do we actually know what we want?

Is the declaration sufficient and consistent with what's possible?

What are the boundaries? Static or dynamic? What is the source of truth. / and when does it mutate?

Question 3 —

Can we guarantee determinism ?

C I slash C D without semantic check = continuous hope

We want certainty. / not randomness

"Works on my machine" cannot be the production standard

> We're not inventing anything new. / Everything already exists.

> The question is whether we're managing it correctly.

## Slide 15

STORY: Act 4 - Turning Point
TENSION: Peak
EMPHASIS: No faltan tools, falta paradigma
DELIVERY: Silencios intencionales

The tools weren't the problem.

The languages weren't the problem.

The approach was the problem.

## Slide 16

STORY: Act 4 - Turning Point
TENSION: Peak
EMPHASIS: No faltan tools, falta paradigma
DELIVERY: Silencios intencionales

Systems we don't know how to control.

We hope they work.

When they don't. / we fix them.

Continuous nightmare.

( alarm state as the new normal)

🛡 ●○○○○ &nbsp;&nbsp; 😴 ○○○○○ &nbsp;&nbsp; 🔥 ●●●●●

## Slide 17

STORY: Act 4 - Turning Point
TENSION: Peak
EMPHASIS: No faltan tools, falta paradigma
DELIVERY: Silencios intencionales

Rust

The answer to all three questions

## Slide 18

STORY: Act 4 - Turning Point
TENSION: Peak
EMPHASIS: No faltan tools, falta paradigma
DELIVERY: Silencios intencionales

The Bridge: From Serde to Types

Serde loads structurally valid config.

But "elephant" as pet: String compiles.

Rust's answer: don't use String. / Use a type.

[code example]

This is the shift.:

Not the config format. / The model of what it can contain.

Serde validates shape Types validate meaning

The compiler check validates before the binary exists.

## Slide 19

STORY: Act 5 - Resolution
TENSION: High -> Medium
EMPHASIS: Types y compiler como respuesta
DELIVERY: Claro y tecnico

What Rust Gives Us

Answer to Question 1: fail early. / fail cheap

[code example]

Answer to Question 2: explicit contracts

[code example]

## Slide 20

STORY: Act 5 - Resolution
TENSION: High -> Medium
EMPHASIS: Types y compiler como respuesta
DELIVERY: Claro y tecnico

The compiler check as Pre-Validator

Answer to Question 3:

guaranteed determinism

[code example]

The compiler check validates:

Before building the binary

Not after hours of execution

Not when a function nobody touched in months finally gets called

Predictable behavior: memory. / resources. / workflows

The compiler check is the waiter who validates the order.

Before it reaches the kitchen.

Before the guest waits.

Before any ingredient is missing.

🛡 ●●●●○ &nbsp; 😴 ●●●●○ &nbsp; 🔥 ●●○○○

## Slide 21

STORY: Act 5 - Resolution
TENSION: High -> Medium
EMPHASIS: Types y compiler como respuesta
DELIVERY: Claro y tecnico

The Human Impact

When the system is trustworthy:

✓ Sleep comes back

✓ Confidence returns

✓ The team trusts the automation

✓ Stress decreases

✓ You can actually rest

> What you can't measure: fear .

> What you can measure: MTTR .

> Before: > 30 minutes. / Now: .

🛡 ●●●●●&nbsp; 😴 ●●●●●&nbsp; 🔥 ●○○○○

## Slide 22

STORY: Act 5 - Resolution
TENSION: High -> Medium
EMPHASIS: Types y compiler como respuesta
DELIVERY: Claro y tecnico

Continuous C I slash C D.

Types. / compiler check. / Explicit state.

Continuous certainty.

(to keep sleeping well)

🛡 ●●●●● &nbsp;&nbsp; 😴 ●●●●● &nbsp;&nbsp; 🔥 ●○○○○

## Slide 23

STORY: Act 5 - Resolution
TENSION: High -> Medium
EMPHASIS: Types y compiler como respuesta
DELIVERY: Claro y tecnico

In Production

This is not theory

## Slide 24 (name: provisioning)

STORY: Act 6 - Proof in Production
TENSION: Medium -> High
EMPHASIS: Casos reales e impacto operativo
DELIVERY: Energetico y concreto

import { ref. / computed } from 'vue'

const useWhite = ref(false)

const bgStyle = computed(() => ({

backgroundImage: url('${useWhite.value ? "/w-arch-diag-v2.svg" : "/arch-diag-v2.svg"}').

backgroundSize: 'contain'.

backgroundRepeat: 'no-repeat'.

backgroundPosition: 'center'.

position: 'absolute'.

inset: '0'.

cursor: 'pointer'.

## Slide 25

STORY: Act 6 - Proof in Production
TENSION: Medium -> High
EMPHASIS: Casos reales e impacto operativo
DELIVERY: Energetico y concreto

Nickel

YAML rejected. / TOML rejected. / Reason: no type safety.

YAML wrote what we wanted.

It couldn't say what was possible.

Nickel closes that gap

— at config time. / not at 3 AM.

[code example]

Typed Source of Truth

Result (ADR-003): zero config type errors in production.

Config hierarchy:

defaults → workspace → profile → environment → runtime

Each layer merges.

Type system catches conflicts.

At config time. / not deployment time.

The guest wrote an impossible order.

Nickel makes impossible orders unwritable.

> Serde validates shape.

> Nickel validates meaning.

> The compiler check validates before deployment.

## Slide 26

STORY: Act 6 - Proof in Production
TENSION: Medium -> High
EMPHASIS: Casos reales e impacto operativo
DELIVERY: Energetico y concreto

Traits as Provider

The kitchen can change. / AWS ≠ UpCloud ≠ bare metal. / Same menu.

[code example]

Explicit state. / no drift:

[code example]

Contracts

Checkpoint every 5 minutes

No implicit state.

> No "the waiter remembers the customer doesn't want salt."

It's in the order. / Always. / Explicit.

## Slide 27

STORY: Act 6 - Proof in Production
TENSION: Medium -> High
EMPHASIS: Casos reales e impacto operativo
DELIVERY: Energetico y concreto

Dependency Graph

Failfast: bool is not a config option.

It's a principle encoded as a type.

Typed DAG. / dependency resolution enforced at workflow compile time:

The kitchen doesn't serve the main course before the starter is done.

DependencyType::Hard is that rule. / In the type system. / not in a runbook.

[code example]

Fail Fast. / Fail Cheap

DependencyType::Hard - failure stops the chain. / Always.

DependencyType::Soft - continues. / explicitly degraded.

DependencyType::Optional - missing is expected and fine.

> The compiler check catches the install order.

> Not the on-call engineer at 2 AM.

🛡 ●●●●● &nbsp; 😴 ●●●●● &nbsp; 🔥 ●○○○○

## Slide 28

STORY: Act 6 - Proof in Production
TENSION: Medium -> High
EMPHASIS: Casos reales e impacto operativo
DELIVERY: Energetico y concreto

Real Applications

## Kubernetes

The controller provisions cluster components as a typed workflow:

[code example]

Each dependency is a DependencyType.

The compiler check catches: installing Cilium without Kubernetes.

Not the on-call engineer at 2 AM.

>"In my machine it works" has a price here.

> This is the highest-stakes infra in the deck.

## Blockchain Validators

Validators require brutal uptime.

A validator that fails loses funds. / not your infra's money.

Your customer's.

Post-quantum cryptography: CRYSTALS-Kyber + Falcon + AES-256-GCM hybrid. / Validator keys protected against quantum computers.

SLOs with real error budgets: 99.99% = 52.6 min downtime/year. / Prometheus blocks deploys when burn rate exceeds budget.

Deterministic config: validator parameters are types. / A bondamount that isn't a valid u128 doesn't compile.

## Slide 29

STORY: Act 6 - Proof in Production
TENSION: Medium -> High
EMPHASIS: Casos reales e impacto operativo
DELIVERY: Energetico y concreto

Disaster Recovery

Rollback as a type. / not a procedure

3 AM. / Something broke. / You need to rollback.

Without types: you improvise.

With types: you choose a strategy

— or it doesn't compile.

[code example]

Multi-backend backup: restic. / borg. / tar. / rsync

— all as enum variants.

Production backup and DR restore use the same type. / the same schema.

> The runbook exists.

> Nobody reads it clearly at 3 AM under pressure.

> The type forces the decision before the crisis.

> The state is the same in prod and in DR. / Always.

## Slide 30

STORY: Act 6 - Proof in Production
TENSION: Medium -> High
EMPHASIS: Casos reales e impacto operativo
DELIVERY: Energetico y concreto

Self-Healing

> When something breaks at 3 AM

>. / the system responds. / not you.

[code example]

— Typed Remediation

What happens at 3 AM:

Alert fires → RemediationEngine matches condition → runs RestartService

Works: silent. / Nobody woken up.

Fails 3×: page sent. / with full state. / checkpoint. / and execution history.

> You wake up to information. / Not to chaos.

🛡 ●●●●● &nbsp; 😴 ●●●●● &nbsp; 🔥 ●○○○○

## Slide 31

STORY: Act 6 - Proof in Production
TENSION: Medium -> High
EMPHASIS: Casos reales e impacto operativo
DELIVERY: Energetico y concreto

Without types. / Without compiler check. / Without explicit state.

MTTR > 30 minutes.

Rust. / Types. / Explicit state.

Automated response.

MTTR (at 3 AM. / without you.)

🛡 ●●●●● &nbsp;&nbsp; 😴 ●●●●● &nbsp;&nbsp; 🔥 ●○○○○

## Slide 32

STORY: Act 7 - Close & CTA
TENSION: Medium -> Low
EMPHASIS: Cierre emocional con accion
DELIVERY: Lento y memorable

Why This Matters

For everyone in this room

## Slide 33

STORY: Act 7 - Close & CTA
TENSION: Medium -> Low
EMPHASIS: Cierre emocional con accion
DELIVERY: Lento y memorable

For You

If you've been frustrated like me

Rust solves problems you already have.

This is not hype. / It is operational relief.

Start here:

Model your infra as types

Let the compiler check pre-validate before deployment

If you're earlier in your career

Start with type safety from day one.

Build for stable work. / not only speed.

The shortest path:

Types for config.

Traits for providers.

Determinism for operations.

## Slide 34

STORY: Act 7 - Close & CTA
TENSION: Medium -> Low
EMPHASIS: Cierre emocional con accion
DELIVERY: Lento y memorable

I have perspective from long production experience.

I have seen technologies come and go.

Rust is not hype. / Rust is relief with evidence.

It solves real operational problems I had for decades.

More years is not a liability.

It is an advantage.

## Slide 35 (name: end)

STORY: Act 7 - Close & CTA
TENSION: Medium -> Low
EMPHASIS: Cierre emocional con accion
DELIVERY: Lento y memorable

Why I Needed Rust

Three Closing Lines

I have lived this problem for decades.

Rust gave me deterministic systems and better sleep.

Start small: model infra as types.

Thank you. / Questions?

More info:

· jesusperez.pro

· setup.systems · vapora.dev · rustelo.dev

