1312 lines
36 KiB
Markdown
1312 lines
36 KiB
Markdown
|
|
# Rustikon 2026 - Reader Script with Pronunciation Guide
|
|||
|
|
|
|||
|
|
Use this for practice. Read the SAY line.
|
|||
|
|
|
|||
|
|
## Slide 1
|
|||
|
|
|
|||
|
|
STORY: Act 1 - Hook & Promise
|
|||
|
|
TENSION: Low -> Medium
|
|||
|
|
EMPHASIS: Credibilidad y dolor real
|
|||
|
|
DELIVERY: Calma, pausas limpias
|
|||
|
|
|
|||
|
|
EN: Why I Needed Rust
|
|||
|
|
SAY: Why I Needed Rust (rahst)
|
|||
|
|
|
|||
|
|
EN: Finally, Infrastructure Automation I Can Sleep On
|
|||
|
|
SAY: Finally, Infrastructure (IN-fruh-STRUHK-cher) automation (aw-tuh-MAY-shun) I Can Sleep On
|
|||
|
|
|
|||
|
|
EN: 🛡 ●●●○○
|
|||
|
|
SAY: 🛡 ●●●○○
|
|||
|
|
|
|||
|
|
EN: 😴 ●●●○○
|
|||
|
|
SAY: 😴 ●●●○○
|
|||
|
|
|
|||
|
|
EN: 🔥 ●○○○○
|
|||
|
|
SAY: 🔥 ●○○○○
|
|||
|
|
|
|||
|
|
## Slide 2
|
|||
|
|
|
|||
|
|
STORY: Act 1 - Hook & Promise
|
|||
|
|
TENSION: Low -> Medium
|
|||
|
|
EMPHASIS: Credibilidad y dolor real
|
|||
|
|
DELIVERY: Calma, pausas limpias
|
|||
|
|
|
|||
|
|
EN: Years. One Problem.
|
|||
|
|
SAY: Years. / One Problem.
|
|||
|
|
|
|||
|
|
EN: 1987 → 2025
|
|||
|
|
SAY: 1987 → 2025
|
|||
|
|
|
|||
|
|
EN: Era Tool Lesson
|
|||
|
|
SAY: Era Tool Lesson
|
|||
|
|
|
|||
|
|
EN: ----- ------ --------
|
|||
|
|
SAY: ----- ------ --------
|
|||
|
|
|
|||
|
|
EN: 1990s Perl Power without safety is a disaster
|
|||
|
|
SAY: 1990s Perl Power without safety is a disaster
|
|||
|
|
|
|||
|
|
EN: 2000s Python Pragmatism without guarantees is fragile
|
|||
|
|
SAY: 2000s Python Pragmatism without guarantees is fragile
|
|||
|
|
|
|||
|
|
EN: 2010s Bash · Chef · Ansible · Terraform More tools don't solve paradigm problems
|
|||
|
|
SAY: 2010s Bash · Chef · Ansible (AN-suh-buhl) · Terraform (TEH-ruh-form) More tools don't solve paradigm (PAIR-uh-dym) problems
|
|||
|
|
|
|||
|
|
EN: 2020s Go · ???
|
|||
|
|
SAY: 2020s Go · ???
|
|||
|
|
|
|||
|
|
EN: Each time, I thought I had the answer.
|
|||
|
|
SAY: Each time, I thought I had the answer.
|
|||
|
|
|
|||
|
|
EN: Each time, reality proved me wrong.
|
|||
|
|
SAY: 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
|
|||
|
|
|
|||
|
|
EN: The Evolution
|
|||
|
|
SAY: The Evolution
|
|||
|
|
|
|||
|
|
EN: How we got here
|
|||
|
|
SAY: How we got here
|
|||
|
|
|
|||
|
|
## Slide 4
|
|||
|
|
|
|||
|
|
STORY: Act 2 - Escalation
|
|||
|
|
TENSION: Medium -> High
|
|||
|
|
EMPHASIS: Crecimiento de complejidad sin control
|
|||
|
|
DELIVERY: Ritmo creciente
|
|||
|
|
|
|||
|
|
EN: Stage 1 — Local (late 80s / early 90s)
|
|||
|
|
SAY: Stage 1 / Local (late 80s / early 90s)
|
|||
|
|
|
|||
|
|
EN: Dumb terminals. Single machine. One state.
|
|||
|
|
SAY: Dumb terminals. / Single machine. / One state.
|
|||
|
|
|
|||
|
|
EN: Local development, long deployment cycles, low urgency
|
|||
|
|
SAY: Local development, long deployment cycles, low urgency
|
|||
|
|
|
|||
|
|
EN: One state — easy to observe, easy to control
|
|||
|
|
SAY: One state / easy to observe, easy to control
|
|||
|
|
|
|||
|
|
EN: IaC: procedural scripts, logic hidden inside the application
|
|||
|
|
SAY: IaC (eye-ay-see): / procedural scripts, logic hidden inside the application
|
|||
|
|
|
|||
|
|
EN: > The Perl Era: we could do anything.
|
|||
|
|
SAY: > The Perl Era: / we could do anything.
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > We could also break anything.
|
|||
|
|
SAY: > We could also break anything.
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > Beautiful, terrifying metaprogramming.
|
|||
|
|
SAY: > Beautiful, terrifying metaprogramming.
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > No safety net.
|
|||
|
|
SAY: > No safety net.
|
|||
|
|
|
|||
|
|
EN: > Silent failures at 3 AM.
|
|||
|
|
SAY: > Silent failures at 3 AM.
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > Lesson: power without safety is a disaster.
|
|||
|
|
SAY: > Lesson: / power without safety is a disaster.
|
|||
|
|
|
|||
|
|
EN: 🛡 ●●●●○ 😴 ●●●●○ 🔥 ●○○○○
|
|||
|
|
SAY: 🛡 ●●●●○ 😴 ●●●●○ 🔥 ●○○○○
|
|||
|
|
|
|||
|
|
## Slide 5
|
|||
|
|
|
|||
|
|
STORY: Act 2 - Escalation
|
|||
|
|
TENSION: Medium -> High
|
|||
|
|
EMPHASIS: Crecimiento de complejidad sin control
|
|||
|
|
DELIVERY: Ritmo creciente
|
|||
|
|
|
|||
|
|
EN: Stage 2 — Networks / Internet
|
|||
|
|
SAY: Stage 2 / Networks / Internet
|
|||
|
|
|
|||
|
|
EN: Systems getting farther away. More people. More coordination.
|
|||
|
|
SAY: Systems getting farther away. / More people. / More coordination.
|
|||
|
|
|
|||
|
|
EN: Remote access, distributed teams, security becomes relevant
|
|||
|
|
SAY: Remote access, distributed teams, security becomes relevant
|
|||
|
|
|
|||
|
|
EN: Cost of downtime rises — processes become critical
|
|||
|
|
SAY: Cost of downtime rises / processes become critical
|
|||
|
|
|
|||
|
|
EN: Harmonizing: package installs, config, updates across multiple machines in parallel
|
|||
|
|
SAY: Harmonizing: / package installs, config, updates across multiple machines in parallel
|
|||
|
|
|
|||
|
|
EN: IaC: reproducible automation, first declarative attempts
|
|||
|
|
SAY: IaC (eye-ay-see): / reproducible automation (aw-tuh-MAY-shun), first declarative (dih-KLAR-uh-tiv) attempts
|
|||
|
|
|
|||
|
|
EN: > The Python Era: rapid development, great community.
|
|||
|
|
SAY: > The Python Era: / rapid development, great community.
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > But nothing stopped you from being wrong.
|
|||
|
|
SAY: > But nothing stopped you from being wrong.
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > Type hints came late — and optional.
|
|||
|
|
SAY: > Type hints came late / and optional.
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > Runtime errors >> compile-time errors.
|
|||
|
|
SAY: > Runtime errors >> compile-time errors.
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > Lesson: pragmatism without guarantees is fragile.
|
|||
|
|
SAY: > Lesson: / pragmatism without guarantees is fragile.
|
|||
|
|
|
|||
|
|
EN: More pieces. More people. Getting interesting.
|
|||
|
|
SAY: More pieces. / More people. / Getting interesting.
|
|||
|
|
|
|||
|
|
EN: 🛡 ●●●○○ 😴 ●●●○○ 🔥 ●●○○○
|
|||
|
|
SAY: 🛡 ●●●○○ 😴 ●●●○○ 🔥 ●●○○○
|
|||
|
|
|
|||
|
|
## Slide 6
|
|||
|
|
|
|||
|
|
STORY: Act 2 - Escalation
|
|||
|
|
TENSION: Medium -> High
|
|||
|
|
EMPHASIS: Crecimiento de complejidad sin control
|
|||
|
|
DELIVERY: Ritmo creciente
|
|||
|
|
|
|||
|
|
EN: Stage 3 — Containers / Cloud / CI-CD
|
|||
|
|
SAY: Stage 3 / Containers / Cloud / CI-CD
|
|||
|
|
|
|||
|
|
EN: Everything. Everywhere. All at once.
|
|||
|
|
SAY: Everything. / Everywhere. / All at once.
|
|||
|
|
|
|||
|
|
EN: Monolith → distributed, 24×7×365, high availability
|
|||
|
|
SAY: Monolith → distributed, 24×7×365, high availability
|
|||
|
|
|
|||
|
|
EN: Cloud, hybrid, multi-cloud, on-prem — simultaneously
|
|||
|
|
SAY: Cloud, hybrid, multi-cloud, on-prem / simultaneously
|
|||
|
|
|
|||
|
|
EN: Rollback and rollforward: database transactions, but for infrastructure
|
|||
|
|
SAY: Rollback and rollforward: / database transactions, but for Infrastructure (IN-fruh-STRUHK-cher)
|
|||
|
|
|
|||
|
|
EN: Scale horizontally AND vertically — and descale
|
|||
|
|
SAY: Scale horizontally AND vertically / and descale
|
|||
|
|
|
|||
|
|
EN: CI/CD continuous: new features, new deploys, permanent churn
|
|||
|
|
SAY: CI/CD (see-eye / see-dee) continuous: / new features, new deploys, permanent churn
|
|||
|
|
|
|||
|
|
EN: > The Cloud/IaC Era: Ansible, Terraform, Chef, Puppet.
|
|||
|
|
SAY: > The Cloud/IaC (eye-ay-see) Era: / Ansible (AN-suh-buhl), Terraform (TEH-ruh-form), Chef, Puppet.
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > What changed? The syntax.
|
|||
|
|
SAY: > What changed? The syntax.
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > What didn't? The fundamental problems.
|
|||
|
|
SAY: > What didn't? The fundamental problems.
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > Still fighting type safety. Still discovering errors in production.
|
|||
|
|
SAY: > Still fighting type safety. / Still discovering errors in production.
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > Lesson: more tools don't solve paradigm problems.
|
|||
|
|
SAY: > Lesson: / more tools don't solve paradigm (PAIR-uh-dym) problems.
|
|||
|
|
|
|||
|
|
EN: 🛡 ●●○○○ 😴 ●○○○○ 🔥 ●●●●○
|
|||
|
|
SAY: 🛡 ●●○○○ 😴 ●○○○○ 🔥 ●●●●○
|
|||
|
|
|
|||
|
|
## Slide 7
|
|||
|
|
|
|||
|
|
STORY: Act 2 - Escalation
|
|||
|
|
TENSION: Medium -> High
|
|||
|
|
EMPHASIS: Crecimiento de complejidad sin control
|
|||
|
|
DELIVERY: Ritmo creciente
|
|||
|
|
|
|||
|
|
EN: I could automate infrastructure.
|
|||
|
|
SAY: I could automate Infrastructure (IN-fruh-STRUHK-cher).
|
|||
|
|
|
|||
|
|
EN: But I couldn't make it reliable.
|
|||
|
|
SAY: But I couldn't make it reliable.
|
|||
|
|
|
|||
|
|
EN: I couldn't prevent mistakes.
|
|||
|
|
SAY: I couldn't prevent mistakes.
|
|||
|
|
|
|||
|
|
EN: I couldn't sleep.
|
|||
|
|
SAY: I couldn't sleep.
|
|||
|
|
|
|||
|
|
EN: 🛡 ●○○○○ 😴 ○○○○○ 🔥 ●●●●●
|
|||
|
|
SAY: 🛡 ●○○○○ 😴 ○○○○○ 🔥 ●●●●●
|
|||
|
|
|
|||
|
|
## Slide 8
|
|||
|
|
|
|||
|
|
STORY: Act 3 - Problem Anatomy
|
|||
|
|
TENSION: High
|
|||
|
|
EMPHASIS: Causa raiz y costo de fallar tarde
|
|||
|
|
DELIVERY: Didactico, frases cortas
|
|||
|
|
|
|||
|
|
EN: Why IaC Fails
|
|||
|
|
SAY: Why IaC (eye-ay-see) Fails
|
|||
|
|
|
|||
|
|
EN: The restaurant problem
|
|||
|
|
SAY: The restaurant problem
|
|||
|
|
|
|||
|
|
## Slide 9
|
|||
|
|
|
|||
|
|
STORY: Act 3 - Problem Anatomy
|
|||
|
|
TENSION: High
|
|||
|
|
EMPHASIS: Causa raiz y costo de fallar tarde
|
|||
|
|
DELIVERY: Didactico, frases cortas
|
|||
|
|
|
|||
|
|
EN: The Restaurant
|
|||
|
|
SAY: The Restaurant
|
|||
|
|
|
|||
|
|
EN: Every restaurant has at least three actors.
|
|||
|
|
SAY: Every restaurant has at least three actors.
|
|||
|
|
|
|||
|
|
EN: Restaurant Infrastructure
|
|||
|
|
SAY: Restaurant Infrastructure (IN-fruh-STRUHK-cher)
|
|||
|
|
|
|||
|
|
EN: --- ---
|
|||
|
|
SAY: --- ---
|
|||
|
|
|
|||
|
|
EN: Guest declares what they want Declarative config (YAML, HCL)
|
|||
|
|
SAY: Guest declares what they want declarative (dih-KLAR-uh-tiv) config (YAML, HCL)
|
|||
|
|
|
|||
|
|
EN: Waiter validates and transmits Orchestrator (K8s, Ansible)
|
|||
|
|
SAY: Waiter validates and transmits orchestrator (OR-kes-tray-ter) (K8s, Ansible (AN-suh-buhl))
|
|||
|
|
|
|||
|
|
EN: Kitchen executes and delivers Runtime / provisioning
|
|||
|
|
SAY: Kitchen executes and delivers Runtime / provisioning (pruh-VIH-zhuh-ning)
|
|||
|
|
|
|||
|
|
EN: Dish arrives — or doesn't Deployment succeeds — or not
|
|||
|
|
SAY: Dish arrives / or doesn't Deployment succeeds / or not
|
|||
|
|
|
|||
|
|
EN: What makes it work — or not:
|
|||
|
|
SAY: What makes it work / or not:
|
|||
|
|
|
|||
|
|
EN: The guest declares. Doesn't implement.
|
|||
|
|
SAY: The guest declares. / Doesn't implement.
|
|||
|
|
|
|||
|
|
EN: The waiter must know what's possible — before going to the kitchen.
|
|||
|
|
SAY: The waiter must know what's possible / before going to the kitchen.
|
|||
|
|
|
|||
|
|
EN: > "I want X" → waiter goes to kitchen
|
|||
|
|
SAY: > "I want X" → waiter goes to kitchen
|
|||
|
|
|
|||
|
|
EN: > → "we don't have X, why is it on the menu?"
|
|||
|
|
SAY: > → "we don't have X, why is it on the menu?"
|
|||
|
|
|
|||
|
|
EN: > → back to the table.
|
|||
|
|
SAY: > → back to the table.
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > Equivalent: I configured a host with port 8443 → that port isn't allowed → reconfigure from zero.
|
|||
|
|
SAY: > 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
|
|||
|
|
|
|||
|
|
EN: The Truth That Mutates
|
|||
|
|
SAY: The Truth That Mutates
|
|||
|
|
|
|||
|
|
EN: State is not static. It can change at every step of the chain.
|
|||
|
|
SAY: State is not static. / It can change at every step of the chain.
|
|||
|
|
|
|||
|
|
EN: Step Truth for this actor
|
|||
|
|
SAY: Step Truth for this actor
|
|||
|
|
|
|||
|
|
EN: --- ---
|
|||
|
|
SAY: --- ---
|
|||
|
|
|
|||
|
|
EN: Guest speaks What they want
|
|||
|
|
SAY: Guest speaks What they want
|
|||
|
|
|
|||
|
|
EN: Waiter's notepad What was written down
|
|||
|
|
SAY: Waiter's notepad What was written down
|
|||
|
|
|
|||
|
|
EN: Kitchen markings What's done / not done
|
|||
|
|
SAY: Kitchen markings What's done / not done
|
|||
|
|
|
|||
|
|
EN: Payment ticket What was actually served
|
|||
|
|
SAY: Payment ticket What was actually served
|
|||
|
|
|
|||
|
|
EN: > Fail early = fail cheap. Fail in production = nightmare.
|
|||
|
|
SAY: > Fail early = fail cheap. / Fail in production = nightmare.
|
|||
|
|
|
|||
|
|
EN: The context problem:
|
|||
|
|
SAY: The context problem:
|
|||
|
|
|
|||
|
|
EN: The waiter knows the regular customer: "always no salt."
|
|||
|
|
SAY: The waiter knows the regular customer: / "always no salt."
|
|||
|
|
|
|||
|
|
EN: The kitchen doesn't. If the waiter changes — that context disappears.
|
|||
|
|
SAY: The kitchen doesn't. / If the waiter changes / that context disappears.
|
|||
|
|
|
|||
|
|
EN: Configuration drift is the same thing: Implicit state. Not explicit. Not propagated. Lost silently.
|
|||
|
|
SAY: configuration (kun-fig-yuh-RAY-shun) drift is the same thing: / Implicit state. / Not explicit. / Not propagated. / Lost silently.
|
|||
|
|
|
|||
|
|
EN: The cost of failure depends on where it happens:
|
|||
|
|
SAY: The cost of failure depends on where it happens:
|
|||
|
|
|
|||
|
|
EN: Fail at the table (impossible order): cheap — caught before kitchen
|
|||
|
|
SAY: Fail at the table (impossible order): / cheap / caught before kitchen
|
|||
|
|
|
|||
|
|
EN: Fail in kitchen (ingredient missing): medium — renegotiate with guest
|
|||
|
|
SAY: Fail in kitchen (ingredient missing): / medium / renegotiate with guest
|
|||
|
|
|
|||
|
|
EN: Fail at delivery (wrong dish arrives): expensive — experience destroyed
|
|||
|
|
SAY: 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
|
|||
|
|
|
|||
|
|
EN: "We Don't Have Mushrooms"
|
|||
|
|
SAY: "We Don't Have Mushrooms"
|
|||
|
|
|
|||
|
|
EN: When an actor in the chain can't fulfill part of the order.
|
|||
|
|
SAY: When an actor in the chain can't fulfill part of the order.
|
|||
|
|
|
|||
|
|
EN: > "Can I substitute vegetables?"
|
|||
|
|
SAY: > "Can I substitute vegetables?"
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > That renegotiation must be explicit. Traced. Re-authorized. Not silent. Not assumed.
|
|||
|
|
SAY: > That renegotiation must be explicit. / Traced. / Re-authorized. / Not silent. / Not assumed.
|
|||
|
|
|
|||
|
|
EN: Configuration drift is silent renegotiation:
|
|||
|
|
SAY: configuration (kun-fig-yuh-RAY-shun) drift is silent renegotiation:
|
|||
|
|
|
|||
|
|
EN: The system changes. Nobody notified. State diverges without trace.
|
|||
|
|
SAY: The system changes. / Nobody notified. / State diverges without trace.
|
|||
|
|
|
|||
|
|
EN: Rust's answer — Option :
|
|||
|
|
SAY: Rust (rahst)'s answer / Option (OP-shun) :
|
|||
|
|
|
|||
|
|
EN: [code example]
|
|||
|
|
SAY: [code example]
|
|||
|
|
|
|||
|
|
EN: > The compiler is the waiter who cannot pretend an ingredient exists.
|
|||
|
|
SAY: > The compiler (kum-PIE-ler) 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
|
|||
|
|
|
|||
|
|
EN: The Config Evolution
|
|||
|
|
SAY: The Config Evolution
|
|||
|
|
|
|||
|
|
EN: How we got from code to YAML hell
|
|||
|
|
SAY: How we got from code to YAML hell
|
|||
|
|
|
|||
|
|
EN: Hardcoded — everything inside the binary. Full control. Zero flexibility.
|
|||
|
|
SAY: Hardcoded / everything inside the binary. / Full control. / Zero flexibility.
|
|||
|
|
|
|||
|
|
EN: External config (JSON) — works between machines. Unreadable for humans at scale.
|
|||
|
|
SAY: External config (JSON) / works between machines. / Unreadable for humans at scale.
|
|||
|
|
|
|||
|
|
EN: YAML / TOML — more readable. Fragile syntax. Implicit types. Silent errors.
|
|||
|
|
SAY: YAML / TOML / more readable. / Fragile syntax. / Implicit types. / Silent errors.
|
|||
|
|
|
|||
|
|
EN: YAML + Serde — Serde validates the structure:
|
|||
|
|
SAY: YAML + Serde (SER-dee) / Serde (SER-dee) validates the structure:
|
|||
|
|
|
|||
|
|
EN: Does the field exist? Is it the right type?
|
|||
|
|
SAY: Does the field exist? Is it the right type?
|
|||
|
|
|
|||
|
|
EN: Do we accept "elephant" as a pet? If the type is String... yes.
|
|||
|
|
SAY: Do we accept "elephant" as a pet? If the type is String... / yes.
|
|||
|
|
|
|||
|
|
EN: Serde validates shape. Not meaning.
|
|||
|
|
SAY: Serde (SER-dee) validates shape. / Not meaning.
|
|||
|
|
|
|||
|
|
EN: Helm / Jinja templates — YAML generated from variables (in YAML).
|
|||
|
|
SAY: Helm / Jinja templates / YAML generated from variables (in YAML).
|
|||
|
|
|
|||
|
|
EN: Does it validate the content of the generated YAML? No. Not at all.
|
|||
|
|
SAY: Does it validate the content of the generated YAML? No. / Not at all.
|
|||
|
|
|
|||
|
|
EN: Like using an LLM with a markdown reference: the format is there,
|
|||
|
|
SAY: Like using an LLM with a markdown reference: / the format is there,
|
|||
|
|
|
|||
|
|
EN: but is the content correct? Nobody guarantees that.
|
|||
|
|
SAY: but is the content correct? Nobody guarantees that.
|
|||
|
|
|
|||
|
|
## Slide 13
|
|||
|
|
|
|||
|
|
STORY: Act 3 - Problem Anatomy
|
|||
|
|
TENSION: High
|
|||
|
|
EMPHASIS: Causa raiz y costo de fallar tarde
|
|||
|
|
DELIVERY: Didactico, frases cortas
|
|||
|
|
|
|||
|
|
EN: Continuous CI/CD.
|
|||
|
|
SAY: Continuous CI/CD (see-eye / see-dee).
|
|||
|
|
|
|||
|
|
EN: No semantic validation.
|
|||
|
|
SAY: No semantic validation (val-ih-DAY-shun).
|
|||
|
|
|
|||
|
|
EN: Continuous hope.
|
|||
|
|
SAY: Continuous hope.
|
|||
|
|
|
|||
|
|
EN: (crossing our fingers in production)
|
|||
|
|
SAY: (crossing our fingers in production)
|
|||
|
|
|
|||
|
|
EN: 🛡 ●○○○○ 😴 ○○○○○ 🔥 ●●●●●
|
|||
|
|
SAY: 🛡 ●○○○○ 😴 ○○○○○ 🔥 ●●●●●
|
|||
|
|
|
|||
|
|
## Slide 14
|
|||
|
|
|
|||
|
|
STORY: Act 3 - Problem Anatomy
|
|||
|
|
TENSION: High
|
|||
|
|
EMPHASIS: Causa raiz y costo de fallar tarde
|
|||
|
|
DELIVERY: Didactico, frases cortas
|
|||
|
|
|
|||
|
|
EN: Three Questions Without Answers
|
|||
|
|
SAY: Three Questions Without Answers
|
|||
|
|
|
|||
|
|
EN: Question 1 —
|
|||
|
|
SAY: Question 1 —
|
|||
|
|
|
|||
|
|
EN: — Why do we wait for things to break?
|
|||
|
|
SAY: — Why do we wait for things to break?
|
|||
|
|
|
|||
|
|
EN: "Works on my machine" — in production, I don't know
|
|||
|
|
SAY: "Works on my machine" / in production, I don't know
|
|||
|
|
|
|||
|
|
EN: Fail late = maximum cost. We want: fail fast, fail cheap
|
|||
|
|
SAY: Fail late = maximum cost. / We want: / fail fast, fail cheap
|
|||
|
|
|
|||
|
|
EN: Question 2 —
|
|||
|
|
SAY: Question 2 —
|
|||
|
|
|
|||
|
|
EN: — Do we actually know what we want?
|
|||
|
|
SAY: — Do we actually know what we want?
|
|||
|
|
|
|||
|
|
EN: Is the declaration sufficient and consistent with what's possible?
|
|||
|
|
SAY: Is the declaration sufficient and consistent with what's possible?
|
|||
|
|
|
|||
|
|
EN: What are the boundaries? Static or dynamic? What is the source of truth — and when does it mutate?
|
|||
|
|
SAY: What are the boundaries? Static or dynamic? What is the source of truth / and when does it mutate?
|
|||
|
|
|
|||
|
|
EN: Question 3 —
|
|||
|
|
SAY: Question 3 —
|
|||
|
|
|
|||
|
|
EN: Can we guarantee determinism ?
|
|||
|
|
SAY: Can we guarantee determinism ?
|
|||
|
|
|
|||
|
|
EN: CI/CD without semantic validation = continuous hope
|
|||
|
|
SAY: CI/CD (see-eye / see-dee) without semantic validation (val-ih-DAY-shun) = continuous hope
|
|||
|
|
|
|||
|
|
EN: We want certainty, not randomness
|
|||
|
|
SAY: We want certainty, not randomness
|
|||
|
|
|
|||
|
|
EN: "Works on my machine" cannot be the production standard
|
|||
|
|
SAY: "Works on my machine" cannot be the production standard
|
|||
|
|
|
|||
|
|
EN: > We're not inventing anything new. Everything already exists.
|
|||
|
|
SAY: > We're not inventing anything new. / Everything already exists.
|
|||
|
|
|
|||
|
|
EN: > The question is whether we're managing it correctly.
|
|||
|
|
SAY: > 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
|
|||
|
|
|
|||
|
|
EN: The tools weren't the problem.
|
|||
|
|
SAY: The tools weren't the problem.
|
|||
|
|
|
|||
|
|
EN: The languages weren't the problem.
|
|||
|
|
SAY: The languages weren't the problem.
|
|||
|
|
|
|||
|
|
EN: The paradigm was the problem.
|
|||
|
|
SAY: The paradigm (PAIR-uh-dym) was the problem.
|
|||
|
|
|
|||
|
|
## Slide 16
|
|||
|
|
|
|||
|
|
STORY: Act 4 - Turning Point
|
|||
|
|
TENSION: Peak
|
|||
|
|
EMPHASIS: No faltan tools, falta paradigma
|
|||
|
|
DELIVERY: Silencios intencionales
|
|||
|
|
|
|||
|
|
EN: Systems we don't know how to control.
|
|||
|
|
SAY: Systems we don't know how to control.
|
|||
|
|
|
|||
|
|
EN: We hope they work.
|
|||
|
|
SAY: We hope they work.
|
|||
|
|
|
|||
|
|
EN: When they don't — we fix them.
|
|||
|
|
SAY: When they don't / we fix them.
|
|||
|
|
|
|||
|
|
EN: Continuous nightmare.
|
|||
|
|
SAY: Continuous nightmare.
|
|||
|
|
|
|||
|
|
EN: ( alarm state as the new normal)
|
|||
|
|
SAY: ( alarm state as the new normal)
|
|||
|
|
|
|||
|
|
EN: 🛡 ●○○○○ 😴 ○○○○○ 🔥 ●●●●●
|
|||
|
|
SAY: 🛡 ●○○○○ 😴 ○○○○○ 🔥 ●●●●●
|
|||
|
|
|
|||
|
|
## Slide 17
|
|||
|
|
|
|||
|
|
STORY: Act 4 - Turning Point
|
|||
|
|
TENSION: Peak
|
|||
|
|
EMPHASIS: No faltan tools, falta paradigma
|
|||
|
|
DELIVERY: Silencios intencionales
|
|||
|
|
|
|||
|
|
EN: Rust
|
|||
|
|
SAY: Rust (rahst)
|
|||
|
|
|
|||
|
|
EN: The answer to all three questions
|
|||
|
|
SAY: The answer to all three questions
|
|||
|
|
|
|||
|
|
## Slide 18
|
|||
|
|
|
|||
|
|
STORY: Act 4 - Turning Point
|
|||
|
|
TENSION: Peak
|
|||
|
|
EMPHASIS: No faltan tools, falta paradigma
|
|||
|
|
DELIVERY: Silencios intencionales
|
|||
|
|
|
|||
|
|
EN: The Bridge: From Serde to Types
|
|||
|
|
SAY: The Bridge: / From Serde (SER-dee) to Types
|
|||
|
|
|
|||
|
|
EN: Serde loads structurally valid config.
|
|||
|
|
SAY: Serde (SER-dee) loads structurally valid config.
|
|||
|
|
|
|||
|
|
EN: But "elephant" as pet: String compiles.
|
|||
|
|
SAY: But "elephant" as pet: / String compiles.
|
|||
|
|
|
|||
|
|
EN: Rust's answer: don't use String. Use a type.
|
|||
|
|
SAY: Rust (rahst)'s answer: / don't use String. / Use a type.
|
|||
|
|
|
|||
|
|
EN: [code example]
|
|||
|
|
SAY: [code example]
|
|||
|
|
|
|||
|
|
EN: This is the shift.:
|
|||
|
|
SAY: This is the shift.:
|
|||
|
|
|
|||
|
|
EN: Not the config format. The model of what it can contain.
|
|||
|
|
SAY: Not the config format. / The model of what it can contain.
|
|||
|
|
|
|||
|
|
EN: Serde validates shape Types validate meaning
|
|||
|
|
SAY: Serde (SER-dee) validates shape Types validate meaning
|
|||
|
|
|
|||
|
|
EN: The compiler validates before the binary exists.
|
|||
|
|
SAY: The compiler (kum-PIE-ler) validates before the binary exists.
|
|||
|
|
|
|||
|
|
## Slide 19
|
|||
|
|
|
|||
|
|
STORY: Act 5 - Resolution
|
|||
|
|
TENSION: High -> Medium
|
|||
|
|
EMPHASIS: Types y compiler como respuesta
|
|||
|
|
DELIVERY: Claro y tecnico
|
|||
|
|
|
|||
|
|
EN: What Rust Gives Us
|
|||
|
|
SAY: What Rust (rahst) Gives Us
|
|||
|
|
|
|||
|
|
EN: Answer to Question 1: fail early, fail cheap
|
|||
|
|
SAY: Answer to Question 1: / fail early, fail cheap
|
|||
|
|
|
|||
|
|
EN: [code example]
|
|||
|
|
SAY: [code example]
|
|||
|
|
|
|||
|
|
EN: Answer to Question 2: explicit contracts
|
|||
|
|
SAY: Answer to Question 2: / explicit contracts
|
|||
|
|
|
|||
|
|
EN: [code example]
|
|||
|
|
SAY: [code example]
|
|||
|
|
|
|||
|
|
## Slide 20
|
|||
|
|
|
|||
|
|
STORY: Act 5 - Resolution
|
|||
|
|
TENSION: High -> Medium
|
|||
|
|
EMPHASIS: Types y compiler como respuesta
|
|||
|
|
DELIVERY: Claro y tecnico
|
|||
|
|
|
|||
|
|
EN: The Compiler as Pre-Validator
|
|||
|
|
SAY: The compiler (kum-PIE-ler) as Pre-Validator
|
|||
|
|
|
|||
|
|
EN: Answer to Question 3:
|
|||
|
|
SAY: Answer to Question 3:
|
|||
|
|
|
|||
|
|
EN: guaranteed determinism
|
|||
|
|
SAY: guaranteed determinism
|
|||
|
|
|
|||
|
|
EN: [code example]
|
|||
|
|
SAY: [code example]
|
|||
|
|
|
|||
|
|
EN: The compiler validates:
|
|||
|
|
SAY: The compiler (kum-PIE-ler) validates:
|
|||
|
|
|
|||
|
|
EN: Before building the binary
|
|||
|
|
SAY: Before building the binary
|
|||
|
|
|
|||
|
|
EN: Not after hours of execution
|
|||
|
|
SAY: Not after hours of execution
|
|||
|
|
|
|||
|
|
EN: Not when a function nobody touched in months finally gets called
|
|||
|
|
SAY: Not when a function nobody touched in months finally gets called
|
|||
|
|
|
|||
|
|
EN: Predictable behavior: memory, resources, workflows
|
|||
|
|
SAY: Predictable behavior: / memory, resources, workflows
|
|||
|
|
|
|||
|
|
EN: The compiler is the waiter who validates the order.
|
|||
|
|
SAY: The compiler (kum-PIE-ler) is the waiter who validates the order.
|
|||
|
|
|
|||
|
|
EN: Before it reaches the kitchen.
|
|||
|
|
SAY: Before it reaches the kitchen.
|
|||
|
|
|
|||
|
|
EN: Before the guest waits.
|
|||
|
|
SAY: Before the guest waits.
|
|||
|
|
|
|||
|
|
EN: Before any ingredient is missing.
|
|||
|
|
SAY: Before any ingredient is missing.
|
|||
|
|
|
|||
|
|
EN: 🛡 ●●●●○ 😴 ●●●●○ 🔥 ●●○○○
|
|||
|
|
SAY: 🛡 ●●●●○ 😴 ●●●●○ 🔥 ●●○○○
|
|||
|
|
|
|||
|
|
## Slide 21
|
|||
|
|
|
|||
|
|
STORY: Act 5 - Resolution
|
|||
|
|
TENSION: High -> Medium
|
|||
|
|
EMPHASIS: Types y compiler como respuesta
|
|||
|
|
DELIVERY: Claro y tecnico
|
|||
|
|
|
|||
|
|
EN: The Human Impact
|
|||
|
|
SAY: The Human Impact
|
|||
|
|
|
|||
|
|
EN: When the system is trustworthy:
|
|||
|
|
SAY: When the system is trustworthy:
|
|||
|
|
|
|||
|
|
EN: ✓ Sleep comes back
|
|||
|
|
SAY: ✓ Sleep comes back
|
|||
|
|
|
|||
|
|
EN: ✓ Confidence returns
|
|||
|
|
SAY: ✓ Confidence returns
|
|||
|
|
|
|||
|
|
EN: ✓ The team trusts the automation
|
|||
|
|
SAY: ✓ The team trusts the automation (aw-tuh-MAY-shun)
|
|||
|
|
|
|||
|
|
EN: ✓ Stress decreases
|
|||
|
|
SAY: ✓ Stress decreases
|
|||
|
|
|
|||
|
|
EN: ✓ You can actually rest
|
|||
|
|
SAY: ✓ You can actually rest
|
|||
|
|
|
|||
|
|
EN: > What you can't measure: fear .
|
|||
|
|
SAY: > What you can't measure: / fear .
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > What you can measure: MTTR .
|
|||
|
|
SAY: > What you can measure: / MTTR .
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > Before: > 30 minutes. Now: .
|
|||
|
|
SAY: > Before: / > 30 minutes. / Now: / .
|
|||
|
|
|
|||
|
|
EN: 🛡 ●●●●● 😴 ●●●●● 🔥 ●○○○○
|
|||
|
|
SAY: 🛡 ●●●●● 😴 ●●●●● 🔥 ●○○○○
|
|||
|
|
|
|||
|
|
## Slide 22
|
|||
|
|
|
|||
|
|
STORY: Act 5 - Resolution
|
|||
|
|
TENSION: High -> Medium
|
|||
|
|
EMPHASIS: Types y compiler como respuesta
|
|||
|
|
DELIVERY: Claro y tecnico
|
|||
|
|
|
|||
|
|
EN: Continuous CI/CD.
|
|||
|
|
SAY: Continuous CI/CD (see-eye / see-dee).
|
|||
|
|
|
|||
|
|
EN: Types. Compiler. Explicit state.
|
|||
|
|
SAY: Types. / compiler (kum-PIE-ler). / Explicit state.
|
|||
|
|
|
|||
|
|
EN: Continuous certainty.
|
|||
|
|
SAY: Continuous certainty.
|
|||
|
|
|
|||
|
|
EN: (to keep sleeping well)
|
|||
|
|
SAY: (to keep sleeping well)
|
|||
|
|
|
|||
|
|
EN: 🛡 ●●●●● 😴 ●●●●● 🔥 ●○○○○
|
|||
|
|
SAY: 🛡 ●●●●● 😴 ●●●●● 🔥 ●○○○○
|
|||
|
|
|
|||
|
|
## Slide 23
|
|||
|
|
|
|||
|
|
STORY: Act 5 - Resolution
|
|||
|
|
TENSION: High -> Medium
|
|||
|
|
EMPHASIS: Types y compiler como respuesta
|
|||
|
|
DELIVERY: Claro y tecnico
|
|||
|
|
|
|||
|
|
EN: In Production
|
|||
|
|
SAY: In Production
|
|||
|
|
|
|||
|
|
EN: This is not theory
|
|||
|
|
SAY: 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
|
|||
|
|
|
|||
|
|
EN: import { ref, computed } from 'vue'
|
|||
|
|
SAY: import { ref, computed } from 'vue'
|
|||
|
|
|
|||
|
|
EN: const useWhite = ref(false)
|
|||
|
|
SAY: const useWhite = ref(false)
|
|||
|
|
|
|||
|
|
EN: const bgStyle = computed(() => ({
|
|||
|
|
SAY: const bgStyle = computed(() => ({
|
|||
|
|
|
|||
|
|
EN: backgroundImage: url('${useWhite.value ? "/w-arch-diag-v2.svg" : "/arch-diag-v2.svg"}'),
|
|||
|
|
SAY: backgroundImage: / url('${useWhite.value ? "/w-arch-diag-v2.svg" : / "/arch-diag-v2.svg"}'),
|
|||
|
|
|
|||
|
|
EN: backgroundSize: 'contain',
|
|||
|
|
SAY: backgroundSize: / 'contain',
|
|||
|
|
|
|||
|
|
EN: backgroundRepeat: 'no-repeat',
|
|||
|
|
SAY: backgroundRepeat: / 'no-repeat',
|
|||
|
|
|
|||
|
|
EN: backgroundPosition: 'center',
|
|||
|
|
SAY: backgroundPosition: / 'center',
|
|||
|
|
|
|||
|
|
EN: position: 'absolute',
|
|||
|
|
SAY: position: / 'absolute',
|
|||
|
|
|
|||
|
|
EN: inset: '0',
|
|||
|
|
SAY: inset: / '0',
|
|||
|
|
|
|||
|
|
EN: cursor: 'pointer',
|
|||
|
|
SAY: cursor: / 'pointer',
|
|||
|
|
|
|||
|
|
EN: }))
|
|||
|
|
SAY: }))
|
|||
|
|
|
|||
|
|
EN: 🌗
|
|||
|
|
SAY: 🌗
|
|||
|
|
|
|||
|
|
## Slide 25
|
|||
|
|
|
|||
|
|
STORY: Act 6 - Proof in Production
|
|||
|
|
TENSION: Medium -> High
|
|||
|
|
EMPHASIS: Casos reales e impacto operativo
|
|||
|
|
DELIVERY: Energetico y concreto
|
|||
|
|
|
|||
|
|
EN: Nickel
|
|||
|
|
SAY: Nickel
|
|||
|
|
|
|||
|
|
EN: YAML rejected. TOML rejected. Reason: no type safety.
|
|||
|
|
SAY: YAML rejected. / TOML rejected. / Reason: / no type safety.
|
|||
|
|
|
|||
|
|
EN: YAML wrote what we wanted.
|
|||
|
|
SAY: YAML wrote what we wanted.
|
|||
|
|
|
|||
|
|
EN: It couldn't say what was possible.
|
|||
|
|
SAY: It couldn't say what was possible.
|
|||
|
|
|
|||
|
|
EN: Nickel closes that gap
|
|||
|
|
SAY: Nickel closes that gap
|
|||
|
|
|
|||
|
|
EN: — at config time, not at 3 AM.
|
|||
|
|
SAY: — at config time, not at 3 AM.
|
|||
|
|
|
|||
|
|
EN: [code example]
|
|||
|
|
SAY: [code example]
|
|||
|
|
|
|||
|
|
EN: Typed Source of Truth
|
|||
|
|
SAY: Typed Source of Truth
|
|||
|
|
|
|||
|
|
EN: Result (ADR-003): zero configuration type errors in production.
|
|||
|
|
SAY: Result (ADR-003): / zero configuration (kun-fig-yuh-RAY-shun) type errors in production.
|
|||
|
|
|
|||
|
|
EN: Config hierarchy:
|
|||
|
|
SAY: Config hierarchy:
|
|||
|
|
|
|||
|
|
EN: defaults → workspace → profile → environment → runtime
|
|||
|
|
SAY: defaults → workspace → profile → environment → runtime
|
|||
|
|
|
|||
|
|
EN: Each layer merges.
|
|||
|
|
SAY: Each layer merges.
|
|||
|
|
|
|||
|
|
EN: Type system catches conflicts.
|
|||
|
|
SAY: Type system catches conflicts.
|
|||
|
|
|
|||
|
|
EN: At config time — not deployment time.
|
|||
|
|
SAY: At config time / not deployment time.
|
|||
|
|
|
|||
|
|
EN: The guest wrote an impossible order.
|
|||
|
|
SAY: The guest wrote an impossible order.
|
|||
|
|
|
|||
|
|
EN: Nickel makes impossible orders unwritable.
|
|||
|
|
SAY: Nickel makes impossible orders unwritable.
|
|||
|
|
|
|||
|
|
EN: > Serde validates shape.
|
|||
|
|
SAY: > Serde (SER-dee) validates shape.
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > Nickel validates meaning.
|
|||
|
|
SAY: > Nickel validates meaning.
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > The compiler validates before deployment.
|
|||
|
|
SAY: > The compiler (kum-PIE-ler) validates before deployment.
|
|||
|
|
|
|||
|
|
## Slide 26
|
|||
|
|
|
|||
|
|
STORY: Act 6 - Proof in Production
|
|||
|
|
TENSION: Medium -> High
|
|||
|
|
EMPHASIS: Casos reales e impacto operativo
|
|||
|
|
DELIVERY: Energetico y concreto
|
|||
|
|
|
|||
|
|
EN: Traits as Provider
|
|||
|
|
SAY: Traits as Provider
|
|||
|
|
|
|||
|
|
EN: The kitchen can change. AWS ≠ UpCloud ≠ bare metal. Same menu.
|
|||
|
|
SAY: The kitchen can change. / AWS ≠ UpCloud ≠ bare metal. / Same menu.
|
|||
|
|
|
|||
|
|
EN: [code example]
|
|||
|
|
SAY: [code example]
|
|||
|
|
|
|||
|
|
EN: Explicit state — no drift:
|
|||
|
|
SAY: Explicit state / no drift:
|
|||
|
|
|
|||
|
|
EN: [code example]
|
|||
|
|
SAY: [code example]
|
|||
|
|
|
|||
|
|
EN: Contracts
|
|||
|
|
SAY: Contracts
|
|||
|
|
|
|||
|
|
EN: Checkpoint every 5 minutes
|
|||
|
|
SAY: Checkpoint every 5 minutes
|
|||
|
|
|
|||
|
|
EN: No implicit state.
|
|||
|
|
SAY: No implicit state.
|
|||
|
|
|
|||
|
|
EN: > No "the waiter remembers the customer doesn't want salt."
|
|||
|
|
SAY: > No "the waiter remembers the customer doesn't want salt."
|
|||
|
|
|
|||
|
|
EN: It's in the order. Always. Explicit.
|
|||
|
|
SAY: 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
|
|||
|
|
|
|||
|
|
EN: Dependency Graph
|
|||
|
|
SAY: Dependency Graph
|
|||
|
|
|
|||
|
|
EN: Failfast: bool is not a config option.
|
|||
|
|
SAY: Failfast: / bool is not a config option.
|
|||
|
|
|
|||
|
|
EN: It's a principle encoded as a type.
|
|||
|
|
SAY: It's a principle encoded as a type.
|
|||
|
|
|
|||
|
|
EN: Typed DAG — dependency resolution enforced at workflow compile time:
|
|||
|
|
SAY: Typed DAG / dependency resolution enforced at workflow compile time:
|
|||
|
|
|
|||
|
|
EN: The kitchen doesn't serve the main course before the starter is done.
|
|||
|
|
SAY: The kitchen doesn't serve the main course before the starter is done.
|
|||
|
|
|
|||
|
|
EN: DependencyType::Hard is that rule. In the type system, not in a runbook.
|
|||
|
|
SAY: DependencyType::Hard is that rule. / In the type system, not in a runbook.
|
|||
|
|
|
|||
|
|
EN: [code example]
|
|||
|
|
SAY: [code example]
|
|||
|
|
|
|||
|
|
EN: Fail Fast, Fail Cheap
|
|||
|
|
SAY: Fail Fast, Fail Cheap
|
|||
|
|
|
|||
|
|
EN: DependencyType::Hard - failure stops the chain. Always.
|
|||
|
|
SAY: DependencyType::Hard - failure stops the chain. / Always.
|
|||
|
|
|
|||
|
|
EN: DependencyType::Soft - continues, explicitly degraded.
|
|||
|
|
SAY: DependencyType::Soft - continues, explicitly degraded.
|
|||
|
|
|
|||
|
|
EN: DependencyType::Optional - missing is expected and fine.
|
|||
|
|
SAY: DependencyType::Optional - missing is expected and fine.
|
|||
|
|
|
|||
|
|
EN: > The compiler catches the install order.
|
|||
|
|
SAY: > The compiler (kum-PIE-ler) catches the install order.
|
|||
|
|
|
|||
|
|
EN: > Not the on-call engineer at 2 AM.
|
|||
|
|
SAY: > Not the on-call engineer at 2 AM.
|
|||
|
|
|
|||
|
|
EN: 🛡 ●●●●● 😴 ●●●●● 🔥 ●○○○○
|
|||
|
|
SAY: 🛡 ●●●●● 😴 ●●●●● 🔥 ●○○○○
|
|||
|
|
|
|||
|
|
## Slide 28
|
|||
|
|
|
|||
|
|
STORY: Act 6 - Proof in Production
|
|||
|
|
TENSION: Medium -> High
|
|||
|
|
EMPHASIS: Casos reales e impacto operativo
|
|||
|
|
DELIVERY: Energetico y concreto
|
|||
|
|
|
|||
|
|
EN: Real Applications
|
|||
|
|
SAY: Real Applications
|
|||
|
|
|
|||
|
|
EN: ## Kubernetes
|
|||
|
|
SAY: ## Kubernetes (koo-ber-NET-eez)
|
|||
|
|
|
|||
|
|
EN: The orchestrator provisions cluster components as a typed workflow:
|
|||
|
|
SAY: The orchestrator (OR-kes-tray-ter) provisions cluster components as a typed workflow:
|
|||
|
|
|
|||
|
|
EN: [code example]
|
|||
|
|
SAY: [code example]
|
|||
|
|
|
|||
|
|
EN: Each dependency is a DependencyType.
|
|||
|
|
SAY: Each dependency is a DependencyType.
|
|||
|
|
|
|||
|
|
EN: The compiler catches: installing Cilium without Kubernetes.
|
|||
|
|
SAY: The compiler (kum-PIE-ler) catches: / installing Cilium without Kubernetes (koo-ber-NET-eez).
|
|||
|
|
|
|||
|
|
EN: Not the on-call engineer at 2 AM.
|
|||
|
|
SAY: Not the on-call engineer at 2 AM.
|
|||
|
|
|
|||
|
|
EN: >"In my machine it works" has a price here.
|
|||
|
|
SAY: >"In my machine it works" has a price here.
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > This is the highest-stakes infrastructure in the deck.
|
|||
|
|
SAY: > This is the highest-stakes Infrastructure (IN-fruh-STRUHK-cher) in the deck.
|
|||
|
|
|
|||
|
|
EN: ## Blockchain Validators
|
|||
|
|
SAY: ## Blockchain Validators
|
|||
|
|
|
|||
|
|
EN: Validators require brutal uptime.
|
|||
|
|
SAY: Validators require brutal uptime.
|
|||
|
|
|
|||
|
|
EN: A validator that fails loses funds — not your infrastructure's money.
|
|||
|
|
SAY: A validator that fails loses funds / not your Infrastructure (IN-fruh-STRUHK-cher)'s money.
|
|||
|
|
|
|||
|
|
EN: Your customer's.
|
|||
|
|
SAY: Your customer's.
|
|||
|
|
|
|||
|
|
EN: Post-quantum cryptography: CRYSTALS-Kyber + Falcon + AES-256-GCM hybrid. Validator keys protected against quantum computers.
|
|||
|
|
SAY: Post-quantum cryptography: / CRYSTALS-Kyber + Falcon + AES-256-GCM hybrid. / Validator keys protected against quantum computers.
|
|||
|
|
|
|||
|
|
EN: SLOs with real error budgets: 99.99% = 52.6 min downtime/year. Prometheus blocks deploys when burn rate exceeds budget.
|
|||
|
|
SAY: SLOs with real error budgets: / 99.99% = 52.6 min downtime/year. / Prometheus blocks deploys when burn rate exceeds budget.
|
|||
|
|
|
|||
|
|
EN: Deterministic config: validator parameters are types. A bondamount that isn't a valid u128 doesn't compile.
|
|||
|
|
SAY: 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
|
|||
|
|
|
|||
|
|
EN: Disaster Recovery
|
|||
|
|
SAY: Disaster Recovery
|
|||
|
|
|
|||
|
|
EN: Rollback as a type, not a procedure
|
|||
|
|
SAY: Rollback as a type, not a procedure
|
|||
|
|
|
|||
|
|
EN: 3 AM. Something broke. You need to rollback.
|
|||
|
|
SAY: 3 AM. / Something broke. / You need to rollback.
|
|||
|
|
|
|||
|
|
EN: Without types: you improvise.
|
|||
|
|
SAY: Without types: / you improvise.
|
|||
|
|
|
|||
|
|
EN: With types: you choose a strategy
|
|||
|
|
SAY: With types: / you choose a strategy
|
|||
|
|
|
|||
|
|
EN: — or it doesn't compile.
|
|||
|
|
SAY: — or it doesn't compile.
|
|||
|
|
|
|||
|
|
EN: [code example]
|
|||
|
|
SAY: [code example]
|
|||
|
|
|
|||
|
|
EN: Multi-backend backup: restic, borg, tar, rsync
|
|||
|
|
SAY: Multi-backend backup: / restic, borg, tar, rsync
|
|||
|
|
|
|||
|
|
EN: — all as enum variants.
|
|||
|
|
SAY: — all as enum (EE-num) variants.
|
|||
|
|
|
|||
|
|
EN: Production backup and DR restore use the same type, the same schema.
|
|||
|
|
SAY: Production backup and DR restore use the same type, the same schema.
|
|||
|
|
|
|||
|
|
EN: > The runbook exists.
|
|||
|
|
SAY: > The runbook exists.
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > Nobody reads it clearly at 3 AM under pressure.
|
|||
|
|
SAY: > Nobody reads it clearly at 3 AM under pressure.
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > The type forces the decision before the crisis.
|
|||
|
|
SAY: > The type forces the decision before the crisis.
|
|||
|
|
|
|||
|
|
EN: >
|
|||
|
|
SAY: >
|
|||
|
|
|
|||
|
|
EN: > The state is the same in prod and in DR. Always.
|
|||
|
|
SAY: > 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
|
|||
|
|
|
|||
|
|
EN: Self-Healing
|
|||
|
|
SAY: Self-Healing
|
|||
|
|
|
|||
|
|
EN: > When something breaks at 3 AM
|
|||
|
|
SAY: > When something breaks at 3 AM
|
|||
|
|
|
|||
|
|
EN: > — the system responds, not you.
|
|||
|
|
SAY: > / the system responds, not you.
|
|||
|
|
|
|||
|
|
EN: [code example]
|
|||
|
|
SAY: [code example]
|
|||
|
|
|
|||
|
|
EN: — Typed Remediation
|
|||
|
|
SAY: — Typed Remediation
|
|||
|
|
|
|||
|
|
EN: What happens at 3 AM:
|
|||
|
|
SAY: What happens at 3 AM:
|
|||
|
|
|
|||
|
|
EN: Alert fires → RemediationEngine matches condition → runs RestartService
|
|||
|
|
SAY: Alert fires → RemediationEngine matches condition → runs RestartService
|
|||
|
|
|
|||
|
|
EN: Works: silent. Nobody woken up.
|
|||
|
|
SAY: Works: / silent. / Nobody woken up.
|
|||
|
|
|
|||
|
|
EN: Fails 3×: page sent — with full state, checkpoint, and execution history.
|
|||
|
|
SAY: Fails 3×: / page sent / with full state, checkpoint, and execution history.
|
|||
|
|
|
|||
|
|
EN: > You wake up to information. Not to chaos.
|
|||
|
|
SAY: > You wake up to information. / Not to chaos.
|
|||
|
|
|
|||
|
|
EN: 🛡 ●●●●● 😴 ●●●●● 🔥 ●○○○○
|
|||
|
|
SAY: 🛡 ●●●●● 😴 ●●●●● 🔥 ●○○○○
|
|||
|
|
|
|||
|
|
## Slide 31
|
|||
|
|
|
|||
|
|
STORY: Act 6 - Proof in Production
|
|||
|
|
TENSION: Medium -> High
|
|||
|
|
EMPHASIS: Casos reales e impacto operativo
|
|||
|
|
DELIVERY: Energetico y concreto
|
|||
|
|
|
|||
|
|
EN: Without types. Without compiler. Without explicit state.
|
|||
|
|
SAY: Without types. / Without compiler (kum-PIE-ler). / Without explicit state.
|
|||
|
|
|
|||
|
|
EN: MTTR > 30 minutes.
|
|||
|
|
SAY: MTTR > 30 minutes.
|
|||
|
|
|
|||
|
|
EN: ────────────────────────
|
|||
|
|
SAY: ────────────────────────
|
|||
|
|
|
|||
|
|
EN: Rust. Types. Explicit state.
|
|||
|
|
SAY: Rust (rahst). / Types. / Explicit state.
|
|||
|
|
|
|||
|
|
EN: Automated response.
|
|||
|
|
SAY: Automated response.
|
|||
|
|
|
|||
|
|
EN: MTTR (at 3 AM. without you.)
|
|||
|
|
SAY: MTTR (at 3 AM. / without you.)
|
|||
|
|
|
|||
|
|
EN: 🛡 ●●●●● 😴 ●●●●● 🔥 ●○○○○
|
|||
|
|
SAY: 🛡 ●●●●● 😴 ●●●●● 🔥 ●○○○○
|
|||
|
|
|
|||
|
|
## Slide 32
|
|||
|
|
|
|||
|
|
STORY: Act 7 - Close & CTA
|
|||
|
|
TENSION: Medium -> Low
|
|||
|
|
EMPHASIS: Cierre emocional con accion
|
|||
|
|
DELIVERY: Lento y memorable
|
|||
|
|
|
|||
|
|
EN: Why This Matters
|
|||
|
|
SAY: Why This Matters
|
|||
|
|
|
|||
|
|
EN: For everyone in this room
|
|||
|
|
SAY: For everyone in this room
|
|||
|
|
|
|||
|
|
## Slide 33
|
|||
|
|
|
|||
|
|
STORY: Act 7 - Close & CTA
|
|||
|
|
TENSION: Medium -> Low
|
|||
|
|
EMPHASIS: Cierre emocional con accion
|
|||
|
|
DELIVERY: Lento y memorable
|
|||
|
|
|
|||
|
|
EN: For You
|
|||
|
|
SAY: For You
|
|||
|
|
|
|||
|
|
EN: If you've been frustrated like me
|
|||
|
|
SAY: If you've been frustrated like me
|
|||
|
|
|
|||
|
|
EN: Rust solves problems you already have.
|
|||
|
|
SAY: Rust (rahst) solves problems you already have.
|
|||
|
|
|
|||
|
|
EN: This is not hype. It is operational relief.
|
|||
|
|
SAY: This is not hype. / It is operational relief.
|
|||
|
|
|
|||
|
|
EN: Start here:
|
|||
|
|
SAY: Start here:
|
|||
|
|
|
|||
|
|
EN: Model your infrastructure as types
|
|||
|
|
SAY: Model your Infrastructure (IN-fruh-STRUHK-cher) as types
|
|||
|
|
|
|||
|
|
EN: Let the compiler pre-validate before deployment
|
|||
|
|
SAY: Let the compiler (kum-PIE-ler) pre-validate before deployment
|
|||
|
|
|
|||
|
|
EN: If you're earlier in your career
|
|||
|
|
SAY: If you're earlier in your career
|
|||
|
|
|
|||
|
|
EN: Start with type safety from day one.
|
|||
|
|
SAY: Start with type safety from day one.
|
|||
|
|
|
|||
|
|
EN: Build for reliability, not only speed.
|
|||
|
|
SAY: Build for reliability (rih-lai-uh-BIH-luh-tee), not only speed.
|
|||
|
|
|
|||
|
|
EN: The shortest path:
|
|||
|
|
SAY: The shortest path:
|
|||
|
|
|
|||
|
|
EN: Types for config.
|
|||
|
|
SAY: Types for config.
|
|||
|
|
|
|||
|
|
EN: Traits for providers.
|
|||
|
|
SAY: Traits for providers.
|
|||
|
|
|
|||
|
|
EN: Determinism for operations.
|
|||
|
|
SAY: Determinism for operations.
|
|||
|
|
|
|||
|
|
## Slide 34
|
|||
|
|
|
|||
|
|
STORY: Act 7 - Close & CTA
|
|||
|
|
TENSION: Medium -> Low
|
|||
|
|
EMPHASIS: Cierre emocional con accion
|
|||
|
|
DELIVERY: Lento y memorable
|
|||
|
|
|
|||
|
|
EN: I have perspective from long production experience.
|
|||
|
|
SAY: I have perspective from long production experience.
|
|||
|
|
|
|||
|
|
EN: I have seen technologies come and go.
|
|||
|
|
SAY: I have seen technologies come and go.
|
|||
|
|
|
|||
|
|
EN: Rust is not hype. Rust is relief with evidence.
|
|||
|
|
SAY: Rust (rahst) is not hype. / Rust (rahst) is relief with evidence.
|
|||
|
|
|
|||
|
|
EN: It solves real operational problems I had for decades.
|
|||
|
|
SAY: It solves real operational problems I had for decades.
|
|||
|
|
|
|||
|
|
EN: More years is not a liability.
|
|||
|
|
SAY: More years is not a liability.
|
|||
|
|
|
|||
|
|
EN: It is an advantage.
|
|||
|
|
SAY: 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
|
|||
|
|
|
|||
|
|
EN: Why I Needed Rust
|
|||
|
|
SAY: Why I Needed Rust (rahst)
|
|||
|
|
|
|||
|
|
EN: 🛡 ●●●●●
|
|||
|
|
SAY: 🛡 ●●●●●
|
|||
|
|
|
|||
|
|
EN: 😴 ●●●●●
|
|||
|
|
SAY: 😴 ●●●●●
|
|||
|
|
|
|||
|
|
EN: 🔥 ●○○○○
|
|||
|
|
SAY: 🔥 ●○○○○
|
|||
|
|
|
|||
|
|
EN: Three Closing Lines
|
|||
|
|
SAY: Three Closing Lines
|
|||
|
|
|
|||
|
|
EN: I have lived this problem for decades.
|
|||
|
|
SAY: I have lived this problem for decades.
|
|||
|
|
|
|||
|
|
EN: Rust gave me deterministic systems and better sleep.
|
|||
|
|
SAY: Rust (rahst) gave me deterministic systems and better sleep.
|
|||
|
|
|
|||
|
|
EN: Start small: model infrastructure as types.
|
|||
|
|
SAY: Start small: / model Infrastructure (IN-fruh-STRUHK-cher) as types.
|
|||
|
|
|
|||
|
|
EN: Thank you. Questions?
|
|||
|
|
SAY: Thank you. / Questions?
|
|||
|
|
|
|||
|
|
EN: More info:
|
|||
|
|
SAY: More info:
|
|||
|
|
|
|||
|
|
EN: · jesusperez.pro
|
|||
|
|
SAY: · jesusperez.pro
|
|||
|
|
|
|||
|
|
EN: · provisioning.systems · vapora.dev · rustelo.dev
|
|||
|
|
SAY: · provisioning (pruh-VIH-zhuh-ning).systems · vapora.dev · rustelo.dev
|
|||
|
|
|