# Rustikon 2026 - Live Reader (30-Min Timing) Total target: 30:00 (1800s) How to use: - Keep your pace near each slide target. - If you are late, cut one example line and move on. - If you are early, add one short emphasis line. ## Slide 1 [target: 20s | cumulative: 00:20] 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 [target: 54s | cumulative: 01:14] 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 [target: 17s | cumulative: 01:31] 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 [target: 77s | cumulative: 02:48] 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. ๐Ÿ›ก โ—โ—โ—โ—โ—‹   ๐Ÿ˜ด โ—โ—โ—โ—โ—‹   ๐Ÿ”ฅ โ—โ—‹โ—‹โ—‹โ—‹ ## Slide 5 [target: 87s | cumulative: 04:15] 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. ๐Ÿ›ก โ—โ—โ—โ—‹โ—‹   ๐Ÿ˜ด โ—โ—โ—โ—‹โ—‹   ๐Ÿ”ฅ โ—โ—โ—‹โ—‹โ—‹ ## Slide 6 [target: 85s | cumulative: 05:40] 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. ๐Ÿ›ก โ—โ—โ—‹โ—‹โ—‹   ๐Ÿ˜ด โ—โ—‹โ—‹โ—‹โ—‹   ๐Ÿ”ฅ โ—โ—โ—โ—โ—‹ ## Slide 7 [target: 27s | cumulative: 06:07] 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. ๐Ÿ›ก โ—โ—‹โ—‹โ—‹โ—‹    ๐Ÿ˜ด โ—‹โ—‹โ—‹โ—‹โ—‹    ๐Ÿ”ฅ โ—โ—โ—โ—โ— ## Slide 8 [target: 17s | cumulative: 06:24] 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 [target: 90s | cumulative: 07:54] 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 [target: 90s | cumulative: 09:24] 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 [target: 61s | cumulative: 10:25] 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 [target: 90s | cumulative: 11:55] 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 [target: 23s | cumulative: 12:18] 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) ๐Ÿ›ก โ—โ—‹โ—‹โ—‹โ—‹    ๐Ÿ˜ด โ—‹โ—‹โ—‹โ—‹โ—‹    ๐Ÿ”ฅ โ—โ—โ—โ—โ— ## Slide 14 [target: 90s | cumulative: 13:48] 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 [target: 19s | cumulative: 14:07] 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 [target: 35s | cumulative: 14:42] 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) ๐Ÿ›ก โ—โ—‹โ—‹โ—‹โ—‹    ๐Ÿ˜ด โ—‹โ—‹โ—‹โ—‹โ—‹    ๐Ÿ”ฅ โ—โ—โ—โ—โ— ## Slide 17 [target: 17s | cumulative: 14:59] 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 [target: 51s | cumulative: 15:50] 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 [target: 24s | cumulative: 16:14] 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 [target: 64s | cumulative: 17:18] 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. ๐Ÿ›ก โ—โ—โ—โ—โ—‹   ๐Ÿ˜ด โ—โ—โ—โ—โ—‹   ๐Ÿ”ฅ โ—โ—โ—‹โ—‹โ—‹ ## Slide 21 [target: 53s | cumulative: 18:11] 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: . ๐Ÿ›ก โ—โ—โ—โ—โ—  ๐Ÿ˜ด โ—โ—โ—โ—โ—  ๐Ÿ”ฅ โ—โ—‹โ—‹โ—‹โ—‹ ## Slide 22 [target: 22s | cumulative: 18:33] 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) ๐Ÿ›ก โ—โ—โ—โ—โ—    ๐Ÿ˜ด โ—โ—โ—โ—โ—    ๐Ÿ”ฅ โ—โ—‹โ—‹โ—‹โ—‹ ## Slide 23 [target: 16s | cumulative: 18:49] 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) [target: 36s | cumulative: 19:25] 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 [target: 84s | cumulative: 20:49] 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 [target: 44s | cumulative: 21:33] 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 [target: 84s | cumulative: 22:57] 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. ๐Ÿ›ก โ—โ—โ—โ—โ—   ๐Ÿ˜ด โ—โ—โ—โ—โ—   ๐Ÿ”ฅ โ—โ—‹โ—‹โ—‹โ—‹ ## Slide 28 [target: 90s | cumulative: 24:27] 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 [target: 82s | cumulative: 25:49] 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 [target: 60s | cumulative: 26:49] 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. ๐Ÿ›ก โ—โ—โ—โ—โ—   ๐Ÿ˜ด โ—โ—โ—โ—โ—   ๐Ÿ”ฅ โ—โ—‹โ—‹โ—‹โ—‹ ## Slide 31 [target: 32s | cumulative: 27:21] 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.) ๐Ÿ›ก โ—โ—โ—โ—โ—    ๐Ÿ˜ด โ—โ—โ—โ—โ—    ๐Ÿ”ฅ โ—โ—‹โ—‹โ—‹โ—‹ ## Slide 32 [target: 16s | cumulative: 27:37] 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 [target: 59s | cumulative: 28:36] 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 [target: 40s | cumulative: 29:16] 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) [target: 44s | cumulative: 30:00] 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 ## Checkpoints - 05:00 -> around Slide 6 - 10:00 -> around Slide 11 - 15:00 -> around Slide 18 - 20:00 -> around Slide 25 - 25:00 -> around Slide 29 - 30:00 -> around Slide 35