# Rustikon 2026 - Simple Reader Script (Easy English) Short and clear lines for easy pronunciation. ## 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. 1987 โ†’ 2025 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. ๐Ÿ›ก โ—โ—โ—โ—โ—‹   ๐Ÿ˜ด โ—โ—โ—โ—โ—‹   ๐Ÿ”ฅ โ—โ—‹โ—‹โ—‹โ—‹ ## 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. ๐Ÿ›ก โ—โ—โ—โ—‹โ—‹   ๐Ÿ˜ด โ—โ—โ—โ—‹โ—‹   ๐Ÿ”ฅ โ—โ—โ—‹โ—‹โ—‹ ## 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. ๐Ÿ›ก โ—โ—โ—‹โ—‹โ—‹   ๐Ÿ˜ด โ—โ—‹โ—‹โ—‹โ—‹   ๐Ÿ”ฅ โ—โ—โ—โ—โ—‹ ## 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. ๐Ÿ›ก โ—โ—‹โ—‹โ—‹โ—‹    ๐Ÿ˜ด โ—‹โ—‹โ—‹โ—‹โ—‹    ๐Ÿ”ฅ โ—โ—โ—โ—โ— ## 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) ๐Ÿ›ก โ—โ—‹โ—‹โ—‹โ—‹    ๐Ÿ˜ด โ—‹โ—‹โ—‹โ—‹โ—‹    ๐Ÿ”ฅ โ—โ—โ—โ—โ— ## 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) ๐Ÿ›ก โ—โ—‹โ—‹โ—‹โ—‹    ๐Ÿ˜ด โ—‹โ—‹โ—‹โ—‹โ—‹    ๐Ÿ”ฅ โ—โ—โ—โ—โ— ## 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. ๐Ÿ›ก โ—โ—โ—โ—โ—‹   ๐Ÿ˜ด โ—โ—โ—โ—โ—‹   ๐Ÿ”ฅ โ—โ—โ—‹โ—‹โ—‹ ## 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: . ๐Ÿ›ก โ—โ—โ—โ—โ—  ๐Ÿ˜ด โ—โ—โ—โ—โ—  ๐Ÿ”ฅ โ—โ—‹โ—‹โ—‹โ—‹ ## 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) ๐Ÿ›ก โ—โ—โ—โ—โ—    ๐Ÿ˜ด โ—โ—โ—โ—โ—    ๐Ÿ”ฅ โ—โ—‹โ—‹โ—‹โ—‹ ## 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. ๐Ÿ›ก โ—โ—โ—โ—โ—   ๐Ÿ˜ด โ—โ—โ—โ—โ—   ๐Ÿ”ฅ โ—โ—‹โ—‹โ—‹โ—‹ ## 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. ๐Ÿ›ก โ—โ—โ—โ—โ—   ๐Ÿ˜ด โ—โ—โ—โ—โ—   ๐Ÿ”ฅ โ—โ—‹โ—‹โ—‹โ—‹ ## 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.) ๐Ÿ›ก โ—โ—โ—โ—โ—    ๐Ÿ˜ด โ—โ—โ—โ—โ—    ๐Ÿ”ฅ โ—โ—‹โ—‹โ—‹โ—‹ ## 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