A presentation at Empex MTN in in Salt Lake City, UT, USA by Brooklyn Zelenka
The Escape From Flatland !⚗ Building the Languages of the Future, Today #$
Language is an instrument of human reason, and not merely a medium for the expression of thought – George Boole
Daring ideas are like chess pieces moved forward. They may be beaten, but they may start a winning game. – Goethe
Brooklyn Zelenka @expede
Brooklyn Zelenka @expede • CTO at Fission (https://fission.codes) • Far edge apps (“post-serverless”) • Goal: make back-ends and DevOps obsolete
Brooklyn Zelenka @expede • CTO at Fission (https://fission.codes) • Far edge apps (“post-serverless”) • Goal: make back-ends and DevOps obsolete • PLT, VMs, DSys
Brooklyn Zelenka @expede • CTO at Fission (https://fission.codes) • Far edge apps (“post-serverless”) • Goal: make back-ends and DevOps obsolete • PLT, VMs, DSys • Original author of Witchcraft, Algae, Exceptional, etc
Brooklyn Zelenka @expede • CTO at Fission (https://fission.codes) • Far edge apps (“post-serverless”) • Goal: make back-ends and DevOps obsolete • PLT, VMs, DSys • Original author of Witchcraft, Algae, Exceptional, etc • Standards: UCAN (editor), EIPs, FVM, Multiformats, others
Brooklyn Zelenka @expede • CTO at Fission (https://fission.codes) • Far edge apps (“post-serverless”) • Goal: make back-ends and DevOps obsolete • PLT, VMs, DSys • Original author of Witchcraft, Algae, Exceptional, etc • Standards: UCAN (editor), EIPs, FVM, Multiformats, others • Founded VanFP, VanBEAM, DSys Reading Group (join us!)
Brooklyn Zelenka @expede • CTO at Fission (https://fission.codes) • Far edge apps (“post-serverless”) • Goal: make back-ends and DevOps obsolete • PLT, VMs, DSys • Original author of Witchcraft, Algae, Exceptional, etc • Standards: UCAN (editor), EIPs, FVM, Multiformats, others • Founded VanFP, VanBEAM, DSys Reading Group (join us!) https://lu.ma/distributed-systems
Meta & Two Keynotes, Both Alike in Dignity %
Meta & Two Keynotes, Both Alike in Dignity %
Meta & Two Keynotes, Both Alike in Dignity %
Meta & Two Keynotes, Both Alike in Dignity % Part I: Empex MTN ’ Part II: CodeBEAM EU (
Meta & Growth Mindset
Meta & Growth Mindset We ❤ Elixir
Meta & Growth Mindset We ❤ Elixir It’s important to think critically about our tools
Meta & Growth Mindset We ❤ Elixir It’s important to think critically about our tools We need to hold Elixir to the highest standard
Meta & Growth Mindset We ❤ Elixir It’s important to think critically about our tools We need to hold Elixir to the highest standard Let’s ask uncomfortable questions
Meta & Growth Mindset We ❤ Elixir It’s important to think critically about our tools We need to hold Elixir to the highest standard Let’s ask uncomfortable questions Growth requires dissatisfaction & inspiration
Meta & Growth Mindset We ❤ Elixir It’s important to think critically about our tools We need to hold Elixir to the highest standard Let’s ask uncomfortable questions Growth requires dissatisfaction & inspiration
The Children of Elixir Manifesto ☎→⚗→X
The Children of Elixir Manifesto ☎→⚗→X
Manifesto ☎→⚗→ My Obsession
Manifesto ☎→⚗→ My Obsession
Manifesto ☎→⚗→ My Obsession The BEAM does so much right +
Manifesto ☎→⚗→ My Obsession The BEAM does so much right + In many ways, we’re actually ahead of the industry
Manifesto ☎→⚗→ My Obsession The BEAM does so much right + In many ways, we’re actually ahead of the industry (mainly using ideas from the late 80s ,)
Manifesto ☎→⚗→ My Obsession The BEAM does so much right + In many ways, we’re actually ahead of the industry (mainly using ideas from the late 80s ,) …but our lead won’t last…
Manifesto ☎→⚗→ My Obsession The BEAM does so much right + In many ways, we’re actually ahead of the industry (mainly using ideas from the late 80s ,) …but our lead won’t last… Where do we go from here?
Manifesto ☎→⚗→ Our Code is Too “Flat”
Manifesto ☎→⚗→ Our Code is Too “Flat” Code in 2022 is needlessly difficult & complex!
Manifesto ☎→⚗→ Our Code is Too “Flat” Code in 2022 is needlessly difficult & complex!
Manifesto ☎→⚗→ Our Code is Too “Flat” Code in 2022 is needlessly difficult & complex! If software is going to continue eating the world, it needs to be faster, more flexible, clearer, correct, and teachable
Manifesto ☎→⚗→ Our Code is Too “Flat” Code in 2022 is needlessly difficult & complex! If software is going to continue eating the world, it needs to be faster, more flexible, clearer, correct, and teachable
Manifesto ☎→⚗→ Our Code is Too “Flat” Code in 2022 is needlessly difficult & complex! If software is going to continue eating the world, it needs to be faster, more flexible, clearer, correct, and teachable How do we build more structure from our existing parts? How do we add dimension?
Manifesto ☎→⚗→ Our Code is Too “Flat” Code in 2022 is needlessly difficult & complex! If software is going to continue eating the world, it needs to be faster, more flexible, clearer, correct, and teachable How do we build more structure from our existing parts? How do we add dimension?
Manifesto ☎→⚗→ Our Code is Too “Flat” Code in 2022 is needlessly difficult & complex! If software is going to continue eating the world, it needs to be faster, more flexible, clearer, correct, and teachable How do we build more structure from our existing parts? How do we add dimension?
Manifesto ☎→⚗→ Our Code is Too “Flat” Code in 2022 is needlessly difficult & complex! If software is going to continue eating the world, it needs to be faster, more flexible, clearer, correct, and teachable How do we build more structure from our existing parts? How do we add dimension?
Manifesto ☎→⚗→ Our Code is Too “Flat” Code in 2022 is needlessly difficult & complex! If software is going to continue eating the world, it needs to be faster, more flexible, clearer, correct, and teachable How do we build more structure from our existing parts? How do we add dimension?
Manifesto ☎→⚗→ Our Code is Too “Flat” Code in 2022 is needlessly difficult & complex! If software is going to continue eating the world, it needs to be faster, more flexible, clearer, correct, and teachable How do we build more structure from our existing parts? How do we add dimension?
Manifesto ☎→⚗→ The Pit of Success
Manifesto ☎→⚗→ The Pit of Success In stark contrast to a summit, a peak, or a journey across a desert to find victory through many trials and surprises, we want [devs] to simply fall into winning practices by using our platform and frameworks. To the extent that we make it easy to get into trouble we fail. – Rico Mariani, Microsoft Research MindSwap 2003
Manifesto ☎→⚗→ Tools For Thought
Manifesto ☎→⚗→ Tools For Thought
Manifesto ☎→⚗→ Tools For Thought • We have better mental tools than our ancestors • Abstraction appears 50k-100k years ago • Arabic numerals > roman numerals • Metric conversions > Imperial • 24-hours & 360-degrees have nice divisiors
Manifesto ☎→⚗→ Tools For Thought • We have better mental tools than our ancestors • Abstraction appears 50k-100k years ago • Arabic numerals > roman numerals • Metric conversions > Imperial • 24-hours & 360-degrees have nice divisiors
Manifesto ☎→⚗→ Random Walk Image by Pradyumna Yadav
Manifesto ☎→⚗→ Random Walk Image by Pradyumna Yadav
Manifesto ☎→⚗→ Random Walk Image by Pradyumna Yadav
Manifesto ☎→⚗→ Random Walk Image by Pradyumna Yadav
Manifesto ☎→⚗→ Random Walk Image by Pradyumna Yadav
Manifesto ☎→⚗→ Random Walk - Image by Pradyumna Yadav
Manifesto ☎→⚗→ Random Walk . / Image by Pradyumna Yadav
Manifesto ☎→⚗→ The World Is Changing
Manifesto ☎→⚗→ The World Is Changing
Manifesto ☎→⚗→ The World Is Changing 23 01 Invention Custom Off-the-Shelf Utility
Manifesto ☎→⚗→ The World Is Changing 23 01 Invention Custom Off-the-Shelf Utility
Manifesto ☎→⚗→ The World Is Changing 23 01 Invention Custom Off-the-Shelf Utility
Manifesto ☎→⚗→ The World Is Changing 23 01 Invention Custom Off-the-Shelf Utility
Manifesto ☎→⚗→ The World Is Changing 23 01 Invention Custom Off-the-Shelf Utility
Manifesto ☎→⚗→ The World Is Changing 23 01 Invention Custom Off-the-Shelf Utility
Manifesto ☎→⚗→ A Cambrian Explosion of Approaches! CC BY-SA 3.0: mariowiki.com
Manifesto ☎→⚗→ A Cambrian Explosion of Approaches! ☎→⚗→Gj CC BY-SA 3.0: mariowiki.com
Manifesto ☎→⚗→ A Cambrian Explosion of Approaches! ☎→⚗→Gj → 4 CC BY-SA 3.0: mariowiki.com
Manifesto ☎→⚗→ A Cambrian Explosion of Approaches! ☎→⚗→Gj → 4 → CC BY-SA 3.0: mariowiki.com
Manifesto ☎→⚗→ A Cambrian Explosion of Approaches! ☎→⚗→Gj → 4 → →5 CC BY-SA 3.0: mariowiki.com
Manifesto ☎→⚗→ A Cambrian Explosion of Approaches! → ☎→⚗→Gj → 4 → →5 CC BY-SA 3.0: mariowiki.com
Manifesto ☎→⚗→ A Cambrian Explosion of Approaches! → $ → ☎→⚗→Gj → 4 → →5 CC BY-SA 3.0: mariowiki.com
Manifesto ☎→⚗→ A Cambrian Explosion of Approaches! 6 → → $ → ☎→⚗→Gj → 4 → →5 CC BY-SA 3.0: mariowiki.com
Manifesto ☎→⚗→ Sources of Inspiration
Manifesto ☎→⚗→ Sources of Inspiration 7 Things I’ve seen work in production
Manifesto ☎→⚗→ Sources of Inspiration 7 Things I’ve seen work in production 8 Ideas from the 70s & 80s
Manifesto ☎→⚗→ Sources of Inspiration 7 Things I’ve seen work in production 8 Ideas from the 70s & 80s 9 Functional Pearls
Manifesto ☎→⚗→ Sources of Inspiration 7 Things I’ve seen work in production 8 Ideas from the 70s & 80s 9 Functional Pearls : Programming language research
Manifesto ☎→⚗→ Sources of Inspiration 7 Things I’ve seen work in production 8 Ideas from the 70s & 80s 9 Functional Pearls : Programming language research ; Distributed databases
Manifesto ☎→⚗→ Sources of Inspiration 7 Things I’ve seen work in production 8 Ideas from the 70s & 80s 9 Functional Pearls : Programming language research ; Distributed databases < Other ecosystems (e.g. Scheme, OCaml, Haxl, Racket)
Manifesto ☎→⚗→ Sources of Inspiration 7 Things I’ve seen work in production 8 Ideas from the 70s & 80s 9 Functional Pearls : Programming language research ; Distributed databases < Other ecosystems (e.g. Scheme, OCaml, Haxl, Racket) = Criminally underused Elixir features
Manifesto ☎→⚗→ Three Stupidly Powerful Concepts
Manifesto ☎→⚗→ Three Stupidly Powerful Concepts eDSL
Manifesto ☎→⚗→ Three Stupidly Powerful Concepts eDSL Code as Data Managed Effects Active Metadata
Manifesto ☎→⚗→ Three Stupidly Powerful Concepts eDSL Expressivity Code as Data Modular Languages Denotational Design Managed Effects Active Metadata
Manifesto ☎→⚗→ Three Stupidly Powerful Concepts eDSL Expressivity Code as Data Modular Languages Denotational Design Managed Effects Active Metadata Derivative DSLs
Manifesto ☎→⚗→ Three Stupidly Powerful Concepts eDSL Expressivity Code as Data Modular Languages Denotational Design Runners Managed Effects Implicit Concurrency Model Testing Active Metadata Derivative DSLs
Manifesto ☎→⚗→ Three Stupidly Powerful Concepts eDSL Expressivity Code as Data Modular Languages Derivative DSLs Denotational Design Runners Managed Effects Implicit Concurrency Model Testing Active Metadata Structural Optimistic
Manifesto ☎→⚗→ Three Stupidly Powerful Concepts eDSL Expressivity Code as Data Modular Languages Derivative DSLs Denotational Design Runners Managed Effects Structural Implicit Concurrency Model Testing Provenance Active Metadata Proof Carrying Code Optimistic
Manifesto ☎→⚗→ Three Stupidly Powerful Concepts eDSL Expressivity Code as Data Modular Languages Derivative DSLs Denotational Design Runners Managed Effects Structural Implicit Concurrency Model Testing Optimistic Provenance Active Metadata Proof Carrying Code Time Travel
Manifesto ☎→⚗→ Three Stupidly Powerful Concepts eDSL Expressivity Code as Data Modular Languages Derivative DSLs Denotational Design Runners Managed Effects Implicit Concurrency Model Testing
Structural Optimistic Provenance Active Metadata Proof Carrying Code Time Travel
Modular Semantics Millions of Tiny Languages
Modular Semantics Millions of Tiny Languages s e g a u g n a L
Millions of Tiny Languages ⚛
Millions of Tiny Languages ⚛ We really don’t want to build a programming language from scratch[…], let’s inherit infrastructure from some other language – Paul Hudak, Building Domain Specific Embedded Languages
Millions of Tiny Languages ⚛ We really don’t want to build a programming language from scratch[…], let’s inherit infrastructure from some other language – Paul Hudak, Building Domain Specific Embedded Languages e m o “S r e oth u g n a l ? ” e g a
Millions of Tiny Languages ⚛ All the Way Down
Millions of Tiny Languages ⚛ All the Way Down
Millions of Tiny Languages ⚛ All the Way Down Binary Physics Mathematics
Millions of Tiny Languages ⚛ All the Way Down Binary Physics Mathematics
Millions of Tiny Languages ⚛ All the Way Down Kernel syscalls x 8 6 / A R M / R I S C-V Binary Physics Mathematics
Millions of Tiny Languages ⚛ All the Way Down Elixir AST BEAM bytecode Kernel syscalls x 8 6 / A R M / R I S C-V Binary Physics Mathematics
Millions of Tiny Languages ⚛ All the Way Down Application Domain Librar y / Framework Elixir Language Elixir AST BEAM bytecode Kernel syscalls x 8 6 / A R M / R I S C-V Binary Physics Mathematics
Millions of Tiny Languages ⚛ All the Way Down Natural Language GUI Metaphor Application Domain Librar y / Framework Elixir Language Elixir AST BEAM bytecode Kernel syscalls x 8 6 / A R M / R I S C-V Binary Physics Mathematics
Millions of Tiny Languages ⚛ Big Three Models
Millions of Tiny Languages ⚛ Big Three Models
Millions of Tiny Languages ⚛ Big Three Models •→• ↓ ↓ ■→▴ A @
Millions of Tiny Languages ⚛ Big Three Models •→• ↓ ↓ ■→▴ A @ Dynamic Operational Mechanical
Millions of Tiny Languages ⚛ Big Three Models •→• ↓ ↓ ■→▴ A @ Dynamic Operational Mechanical
Millions of Tiny Languages ⚛ Big Three Models Universal Denotational Mathematical •→• ↓ ↓ ■→▴ A @ Dynamic Operational Mechanical
Millions of Tiny Languages ⚛ Big Three Models Universal Denotational Mathematical •→• ↓ ↓ ■→▴ A @ Dynamic Operational Mechanical
Millions of Tiny Languages ⚛ Big Three Models Universal Denotational Mathematical •→• ↓ ↓ ■→▴ A Symbolist Semiotic Natural Language @ Dynamic Operational Mechanical
Millions of Tiny Languages ⚛ Big Three Models Universal Denotational Mathematical •→• ↓ ↓ ■→▴ A Symbolist Semiotic Natural Language @ Dynamic Operational Mechanical
Millions of Tiny Languages ⚛ Big Three Models Universal Denotational Mathematical •→• ↓ ↓ ■→▴ A Symbolist Semiotic Natural Language @ Dynamic Operational Mechanical
Millions of Tiny Languages ⚛ Big Three Models A Symbolist Semiotic Natural Language On its ef iz es lB al Universal Denotational Mathematical •→• ↓ ↓ ■→▴ @ Dynamic Operational Mechanical
Millions of Tiny Languages ⚛ Big Three Models A Symbolist Semiotic Natural Language On its ef iz es lB al Universal Denotational Mathematical •→• ↓ ↓ ■→▴ @ Dynamic Operational Mechanical
Manifesto ☎→⚗→ “Expressive” C⚔E>
Manifesto ☎→⚗→ “Expressive” C⚔E>
Millions of Tiny Languages ⚛ Tower of (Expressive) Power
Millions of Tiny Languages ⚛ Tower of (Expressive) Power
Millions of Tiny Languages ⚛ Tower of (Expressive) Power
Millions of Tiny Languages ⚛ Tower of (Expressive) Power
Millions of Tiny Languages ⚛ Tower of (Expressive) Power
Millions of Tiny Languages ⚛ Tower of (Expressive) Power
Millions of Tiny Languages ⚛ Tower of (Expressive) Power
Millions of Tiny Languages ⚛ Tower of (Expressive) Power
Millions of Tiny Languages ⚛ Practical Bounds
Millions of Tiny Languages ⚛ Practical Bounds Can a language be too expressive?
Millions of Tiny Languages ⚛ Practical Bounds Can a language be too expressive? Useful Programs
Millions of Tiny Languages ⚛ Practical Bounds Can a language be too expressive? Useful Programs Buggy Programs
Millions of Tiny Languages ⚛ Practical Bounds Can a language be too expressive? Useful Programs Yours Buggy Programs
Millions of Tiny Languages ⚛ Practical Bounds Can a language be too expressive? Useful Programs Yours Buggy Programs
Millions of Tiny Languages ⚛ Welcome to the Danger Zone ⚠
Millions of Tiny Languages ⚛ What’s So Bad About Control? GH
Millions of Tiny Languages ⚛ What’s So Bad About Control? GH Line 1 Line 2 Line 3 Line 4 Line 5 — GOTO Line 6
Millions of Tiny Languages ⚛ What’s So Bad About Control? GH Line 1 Line 2 Line 3 Line 4 Line 5 — GOTO Line 6
Millions of Tiny Languages ⚛ What’s So Bad About Control? GH Line 1 Line 2 Line 3 Line 4 Line 5 — GOTO Line 6
Millions of Tiny Languages ⚛ What’s So Bad About Control? GH Turing completeness considered harmful Line 1 Line 2 Line 3 Line 4 Line 5 — GOTO Line 6 5
Millions of Tiny Languages ⚛ What’s So Bad About Control? GH Turing completeness considered harmful Line 1 Line 2 Line 3 Line 4 Line 5 — GOTO Line 6 5
Millions of Tiny Languages ⚛ Aside: “Accidentally” Turing Complete https://harrisonwl.github.io/assets/courses/malware/spring2017/papers/mov-is-turing-complete.pdf https://github.com/ealter/vim_turing_machine https://github.com/Microsoft/TypeScript/issues/14833 https://vanbever.eu/pdfs/vanbever_turing_icnp_2013.pdf https://arxiv.org/pdf/1904.09828.pdf https://softwareengineering.stackexchange.com/a/136179
Millions of Tiny Languages ⚛ Aside: “Accidentally” Turing Complete • x86 MOV (just by itself) • TypeScript’s Type System • Vim Normal Mode • Magic the Gathering • BGP • Pokemon Yellow • Peano arithmetic • Unicode (conjectured) • Musical Notation • Sendmail’s Config https://harrisonwl.github.io/assets/courses/malware/spring2017/papers/mov-is-turing-complete.pdf https://github.com/ealter/vim_turing_machine https://github.com/Microsoft/TypeScript/issues/14833 https://vanbever.eu/pdfs/vanbever_turing_icnp_2013.pdf https://arxiv.org/pdf/1904.09828.pdf https://softwareengineering.stackexchange.com/a/136179
Millions of Tiny Languages ⚛ The Lesson I
Millions of Tiny Languages ⚛ The Lesson I The bottom line is that the more powerful a language (i.e. the more that is possible within the language), the harder it is to understand systems constructed in it – Ben Mosley & Peter Marks, Out of the Tarpit
Millions of Tiny Languages ⚛ Three Focused Vocabularies
Millions of Tiny Languages ⚛ Three Focused Vocabularies
Millions of Tiny Languages ⚛ Three Focused Vocabularies
Millions of Tiny Languages ⚛ Three Focused Vocabularies
Millions of Tiny Languages ⚛ Three Focused Vocabularies
Millions of Tiny Languages ⚛ Compositional Vocabularies
Millions of Tiny Languages ⚛ Compositional Vocabularies
Millions of Tiny Languages ⚛ Compositional Vocabularies
Millions of Tiny Languages ⚛ Compositional Vocabularies
Millions of Tiny Languages ⚛ Compositional Vocabularies
Millions of Tiny Languages ⚛ Compositional Vocabularies
Millions of Tiny Languages ⚛ Compositional Vocabularies
Millions of Tiny Languages ⚛ Compositional Vocabularies
Millions of Tiny Languages ⚛ Compositional Vocabularies
Millions of Tiny Languages ⚛ Compositional Vocabularies
Millions of Tiny Languages ⚛ Compositional Vocabularies
Millions of Tiny Languages ⚛ Compositional Vocabularies J K L
Millions of Tiny Languages ⚛ Compositional Vocabularies J K Components: 4 L
Millions of Tiny Languages ⚛ Compositional Vocabularies J K Components: 4 Results: All of computer graphics L
Millions of Tiny Languages ⚛ Interleaved Terms
Millions of Tiny Languages ⚛ Interleaved Terms
Millions of Tiny Languages ⚛ Interleaved Terms
Millions of Tiny Languages ⚛ Interleaved Terms
✨ An AST of Your Own ✨ Building Up & Tearing Down NO
Building Up & Tearing Down NO Shallow Pipes https://hexdocs.pm/ecto/Ecto.Changeset.html#module-validations-and-constraints
Building Up & Tearing Down NO Shallow Pipes • Just use the built-in AST • What it can represent is limited • Single, canonical implementations • e.g. most libraries https://hexdocs.pm/ecto/Ecto.Changeset.html#module-validations-and-constraints
Building Up & Tearing Down NO Shallow Pipes https://github.com/witchcrafters/algae/blob/main/lib/algae/tree/binary_search.ex
Building Up & Tearing Down NO Shallow Pipes https://github.com/witchcrafters/algae/blob/main/lib/algae/tree/binary_search.ex
Building Up & Tearing Down NO Shallow Pipes https://github.com/witchcrafters/algae/blob/main/lib/algae/tree/binary_search.ex
Building Up & Tearing Down NO Shallow Pipes https://github.com/witchcrafters/algae/blob/main/lib/algae/tree/binary_search.ex
Building Up & Tearing Down NO Shallow Pipes https://github.com/witchcrafters/algae/blob/main/lib/algae/tree/binary_search.ex
Building Up & Tearing Down NO Whatever You Want It To Be Natural Language GUI Metaphor Application Domain Librar y / Framework Elixir Language Elixir AST BEAM bytecode Kernel syscalls x 8 6 / A R M / R I S C-V Binary Physics Mathematics
Building Up & Tearing Down NO Whatever You Want It To Be Natural Language GUI Metaphor Application Domain There is nothing sacred about Elixir’s AST; it’s just well suited for its ecological niche Librar y / Framework Elixir Language Elixir AST BEAM bytecode Kernel syscalls x 8 6 / A R M / R I S C-V Binary Physics Mathematics
Building Up & Tearing Down NO Whatever You Want It To Be Natural Language GUI Metaphor Application Domain There is nothing sacred about Elixir’s AST; it’s just well suited for its ecological niche Librar y / Framework Elixir Language Elixir AST BEAM bytecode Kernel syscalls x 8 6 / A R M / R I S C-V Binary Physics Mathematics
Building Up & Tearing Down NO Invocation & Rewriting
Building Up & Tearing Down NO Invocation & Rewriting
Building Up & Tearing Down NO Invocation & Rewriting
Building Up & Tearing Down NO Invocation & Rewriting
Building Up & Tearing Down NO Connectives
Building Up & Tearing Down NO Connectives
Building Up & Tearing Down NO Connectives
Building Up & Tearing Down NO Connectives
Building Up & Tearing Down NO Connectives
Building Up & Tearing Down NO Connectives
Building Up & Tearing Down NO Connectives
Building Up & Tearing Down NO GenEffect
Building Up & Tearing Down NO GenEffect
Building Up & Tearing Down NO GenEffect
Building Up & Tearing Down NO GenEffect
Building Up & Tearing Down NO Interpreter
Building Up & Tearing Down NO Interpreter
Building Up & Tearing Down NO Interpreter
Building Up & Tearing Down NO Interpreter
Building Up & Tearing Down NO Interpreter
Building Up & Tearing Down NO Interpreter Why not use a protocol? Canonicity!
Domain & Denotation Standard Vocabularies P
Standard Vocabularies P What Is Common?
Standard Vocabularies P What Is Common? M ! t n e m e v o
Standard Vocabularies P One Level Down
Standard Vocabularies P One Level Down
Standard Vocabularies P One Level Down
Standard Vocabularies P What’s Important About Laws?
Standard Vocabularies P What’s Important About Laws? Consistent in all contexts
Standard Vocabularies P Denotative Redux
Standard Vocabularies P Denotative Redux
Standard Vocabularies P Denotative Redux We are only drawing a most important distinction — between discovering something and inventing something. But mathematicians make the most important discoveries. – Alan Turing, via Wittgenstein’s Lectures on the Foundations of Mathematics
Standard Vocabularies P
Safety First Purify Your Effects 3⛑R
Purify Your Effects 3⛑R
Purify Your Effects 3⛑R Have no truck with the grubby compromises of imperative programming — Simon Peyton Jones
Purify Your Effects 3⛑R Tools Down
Purify Your Effects 3⛑R Tools Down Elixir is surprisingly imperative, yet gives you all the tools of equational reasoning …so let’s use them!
Purify Your Effects 3⛑R Description vs Invocation
Purify Your Effects 3⛑R Description vs Invocation Impure functions produce side effects Pure functions manipulate data Side effects → managed effects
Purify Your Effects 3⛑R Description vs Invocation Impure functions produce side effects Pure functions manipulate data Side effects → managed effects function
Purify Your Effects 3⛑R Description vs Invocation Impure functions produce side effects Pure functions manipulate data Side effects → managed effects input function
Purify Your Effects 3⛑R Description vs Invocation Impure functions produce side effects Pure functions manipulate data Side effects → managed effects input function output function
Purify Your Effects 3⛑R Description vs Invocation Impure functions produce side effects Pure functions manipulate data Side effects → managed effects effect input effect function output function
Purify Your Effects 3⛑R Description vs Invocation Impure functions produce side effects Pure functions manipulate data Side effects → managed effects effect input function output effect function
Purify Your Effects 3⛑R 4-Layer Architecture
Purify Your Effects 3⛑R 4-Layer Architecture Imperative Managed Effects Pure Functions Data
Purify Your Effects 3⛑R 4-Layer Architecture 5 Action Imperative Managed Effects Pure Functions Data SInformation
Purify Your Effects 3⛑R 4-Layer Architecture 5 Action Unstable T Imperative Managed Effects Pure Functions Data SInformation Stable U
Purify Your Effects 3⛑R Purified Actions
Well Behaved Models Testing Minus the Teeth V
Testing Minus the Teeth V Faking Without Mocks
Testing Minus the Teeth V Faking Without Mocks •Inspect the pure data! •Have tests write to a list as they run •Fake databases with maps •Fake sending email with logs
Testing Minus the Teeth V Faking Without Mocks •Inspect the pure data! •Have tests write to a list as they run •Fake databases with maps •Fake sending email with logs
Testing Minus the Teeth V Faking Without Mocks •Inspect the pure data! •Have tests write to a list as they run •Fake databases with maps •Fake sending email with logs
Testing Minus the Teeth V Faking Without Mocks •Inspect the pure data! •Have tests write to a list as they run •Fake databases with maps •Fake sending email with logs
Control Dominator Take the Wheel Implicit Parallelism W
Implicit Parallelism W Humans are Terrible at Concurrency X
Implicit Parallelism W Humans are Terrible at Concurrency X The main way of dealing with concurrency has been reduced to sequential reasoning […] it requires to cope with many possible, unpredictable behaviors of process, and the communication media Everything is NOT reducible to sequential thinking — Sergio Rajsbaum & Michel Raynal, 60 Years of Mastering Concurrency Through Sequential Thinking
Implicit Parallelism W Coordination Costs
Implicit Parallelism W Throughput Coordination Costs Parallelization
Implicit Parallelism W Ideal (Linear) Throughput Coordination Costs Parallelization
Implicit Parallelism W Coordination Costs Ideal (Linear) Throughput Amdahl’s Law Parallelization
Implicit Parallelism W Coordination Costs Ideal (Linear) Throughput Amdahl’s Law Universal Scaling Law Parallelization
Implicit Parallelism W Coordination Costs Ideal (Linear) Throughput Amdahl’s Law Incoherence, Data Contention Universal Scaling Law Parallelization
Implicit Parallelism W Confluence / Church-Rosser
Implicit Parallelism W Confluence / Church-Rosser
Implicit Parallelism W Confluence / Church-Rosser
Implicit Parallelism W Confluence / Church-Rosser
Implicit Parallelism W Confluence / Church-Rosser
Implicit Parallelism W Confluence / Church-Rosser Commutes!
Implicit Parallelism W Confluence / Church-Rosser Commutes!
Implicit Parallelism W Confluence / Church-Rosser Commutes!
Implicit Parallelism W Dependency Analysis
Implicit Parallelism W Dependency Analysis
Implicit Parallelism W Dependency Analysis
Implicit Parallelism W Dependency Analysis msg recipient upcase send DB.insert date
Implicit Parallelism W Dependency Analysis msg recipient upcase send DB.insert date
Implicit Parallelism W Dependency Analysis msg recipient upcase send DB.insert date
Implicit Parallelism W Dependency Analysis msg recipient upcase send DB.insert date
Implicit Parallelism W Actor Problem: Data Locality Coordination
Implicit Parallelism W Actor Problem: Data Locality Coordination Z Y [
Implicit Parallelism W Actor Problem: Data Locality Coordination \ Z \ Y \ [
Implicit Parallelism W Actor Problem: Data Locality Coordination \ Z] \ Y] \ []
Implicit Parallelism W Actor Problem: Data Locality Coordination \ Z] \ Y] \ [] ✉ ✉ ✉ ✉ ✉ ✉ ✉ ✉ ✉ ✉ ✉ ✉
Implicit Parallelism W Actor Problem: Data Locality Coordination \ Z] ✉ ✉ ✉ ✉ _ \ Y] \ [] ✉ ✉ ✉ ✉ ✉ ✉ ✉ ✉
Implicit Parallelism W Actor Problem: Data Locality Coordination \ Z] ✉ ✉ ✉ ✉ _ \ Y ☠] \ [] ✉ ✉ ✉ ✉ ✉ ✉ ✉ ✉
Implicit Parallelism W Actor Problem: Data Locality Coordination \ Z] ✉ ✉ ✉ ✉ _ a \ Y ☠] \ [] ✉ ✉ ✉ ✉ ✉ ✉ ✉ ✉
Purify Your Effects 3⛑R Optimistic Concurrency: STM https://www.cs.rochester.edu/u/scott/papers/2006_TRANSACT_RSTM.pdf
Purify Your Effects 3⛑R Optimistic Concurrency: STM c b d https://www.cs.rochester.edu/u/scott/papers/2006_TRANSACT_RSTM.pdf
Purify Your Effects 3⛑R Optimistic Concurrency: STM c b d https://www.cs.rochester.edu/u/scott/papers/2006_TRANSACT_RSTM.pdf
Purify Your Effects 3⛑R Optimistic Concurrency: STM c b _ d _ https://www.cs.rochester.edu/u/scott/papers/2006_TRANSACT_RSTM.pdf
Purify Your Effects 3⛑R Optimistic Concurrency: STM c b _ ⚙ d _ ⚙ https://www.cs.rochester.edu/u/scott/papers/2006_TRANSACT_RSTM.pdf
Purify Your Effects 3⛑R Optimistic Concurrency: STM c ⚙ b d _ _ ⚠ ⚠ ⚠ ⚠ ⚙ https://www.cs.rochester.edu/u/scott/papers/2006_TRANSACT_RSTM.pdf
Purify Your Effects 3⛑R Optimistic Concurrency: STM c ⚙ b d _ _ ⚠ ⚠ ⚠ ⚠ f ⚙ f https://www.cs.rochester.edu/u/scott/papers/2006_TRANSACT_RSTM.pdf
Purify Your Effects 3⛑R Optimistic Concurrency: STM c ⚙ b d _ _ ⚠ ⚠ ⚠ ⚠ f g ⚙ f g https://www.cs.rochester.edu/u/scott/papers/2006_TRANSACT_RSTM.pdf
Purify Your Effects 3⛑R Optimistic Concurrency: STM c ⚙ b d _ _ ⚠ ⚠ ⚠ ⚠ f g c b d ⚙ f g https://www.cs.rochester.edu/u/scott/papers/2006_TRANSACT_RSTM.pdf
Purify Your Effects 3⛑R Optimistic Concurrency: STM c ⚙ b d _ _ ⚠ ⚠ ⚠ ⚠ f g c b d ⚙ f g https://www.cs.rochester.edu/u/scott/papers/2006_TRANSACT_RSTM.pdf
Purify Your Effects 3⛑R Optimistic Concurrency: STM c ⚙ b d _ _ ⚠ ⚠ ⚠ ⚠ f g c c h b d d h ⚙ f g https://www.cs.rochester.edu/u/scott/papers/2006_TRANSACT_RSTM.pdf
Purify Your Effects 3⛑R Optimistic Concurrency: STM c ⚙ b d _ _ ⚠ ⚠ ⚠ ⚠ f g c c b d d h h ⚙ ⚙ f g https://www.cs.rochester.edu/u/scott/papers/2006_TRANSACT_RSTM.pdf
Purify Your Effects 3⛑R Optimistic Concurrency: STM c ⚙ b d _ _ ⚠ ⚠ ⚠ ⚠ f g c c b d d h h ⚙ ⚙ _ _ f g https://www.cs.rochester.edu/u/scott/papers/2006_TRANSACT_RSTM.pdf
Purify Your Effects 3⛑R Optimistic Concurrency: STM c ⚙ b d _ _ ⚠ ⚠ ⚠ ⚠ f g c c b d d h h ⚙ ⚙ _O _ f g https://www.cs.rochester.edu/u/scott/papers/2006_TRANSACT_RSTM.pdf
Purify Your Effects 3⛑R Optimistic Concurrency: STM c ⚙ b d _ _ ⚠ ⚠ ⚠ ⚠ f g c c b d d h h ⚙ ⚙ _O _ c d f g https://www.cs.rochester.edu/u/scott/papers/2006_TRANSACT_RSTM.pdf
Purify Your Effects 3⛑R Optimistic Concurrency: STM c ⚙ b d _ _ ⚠ ⚠ ⚠ ⚠ f g f g c c b d d h h ⚙ _O _ c d ⚙ ⚙ ⚙ https://www.cs.rochester.edu/u/scott/papers/2006_TRANSACT_RSTM.pdf
Purify Your Effects 3⛑R Optimistic Concurrency: STM c ⚙ b d _ _ ⚠ ⚠ ⚠ ⚠ f g f g c c b d d h h ⚙ _O _ c d ⚙ ⚙ f f ⚙ https://www.cs.rochester.edu/u/scott/papers/2006_TRANSACT_RSTM.pdf
Purify Your Effects 3⛑R Optimistic Concurrency: STM c ⚙ b d _ _ ⚠ ⚠ ⚠ ⚠ f g f g c c b d d h h ⚙ _O _ c d ⚙ ⚙ f g f g ⚙ https://www.cs.rochester.edu/u/scott/papers/2006_TRANSACT_RSTM.pdf
Purify Your Effects 3⛑R Optimistic Concurrency: STM c ⚙ b d _ _ ⚠ ⚠ ⚠ ⚠ f g f g c c b d d h h ⚙ _O _ c d ⚙ ⚙ f g f g ⚙ https://www.cs.rochester.edu/u/scott/papers/2006_TRANSACT_RSTM.pdf
Purify Your Effects 3⛑R Optimistic Concurrency: STM l k i j :
Purify Your Effects 3⛑R Optimistic Concurrency: STM
Effectful Proof, Provenance, & Power Metadata in Motion m
Effectful Proof, Provenance, & Power Metadata in Motion nm
Metadata in Motion mn
Metadata in Motion mn It’s only data provenance if it’s derived from the Provence region of France. Otherwise it’s just sparkling metadata. – Adapted from @onfiv
Metadata in Motion mn Proof Carrying Code
Metadata in Motion mn Proof Carrying Code
Metadata in Motion mn Proof Carrying Code
Metadata in Motion mn Proof Carrying Code
Metadata in Motion mn Proof Carrying Code mergesort is way easier now
Metadata in Motion mn Carrying Capabilities https://kataskeue.com/gdp.pdf https://arxiv.org/pdf/1907.07154.pdf
Metadata in Motion mn Carrying Capabilities https://kataskeue.com/gdp.pdf https://arxiv.org/pdf/1907.07154.pdf
Metadata in Motion mn Carrying Capabilities https://kataskeue.com/gdp.pdf https://arxiv.org/pdf/1907.07154.pdf
Metadata in Motion mn Provenance
Metadata in Motion mn Provenance
Metadata in Motion mn Provenance
Metadata in Motion mn Provenance
Metadata in Motion mn Provenance++
Tools for The Intrepid ⚒
Wrapping Up Tools for The Intrepid ⚒
Tools for The Intrepid ⚒
Tools for The Intrepid ⚒ A programming language influences the way that its users think about programming; matching a language to a methodology increases the likelihood that the methodology will be used – Barbara Liskov et al, Abstraction Mechanisms in CLU
Tools for The Intrepid ⚒ What Just Happened?
Tools for The Intrepid ⚒ What Just Happened?
Tools for The Intrepid ⚒ What Just Happened?
Tools for The Intrepid ⚒ What Just Happened?
Tools for The Intrepid ⚒ What Just Happened?
Tools for The Intrepid ⚒ What Just Happened?
Tools for The Intrepid ⚒
Tools for The Intrepid ⚒ Is this the future?
Tools for The Intrepid ⚒ Is this the future? I don’t know! p
Tools for The Intrepid ⚒ Is this the future? I don’t know! p We need to experiment with more directions
Tools for The Intrepid ⚒ Is this the future? I don’t know! p We need to experiment with more directions These are but a few options
Tools for The Intrepid ⚒ Is this the future? I don’t know! p We need to experiment with more directions These are but a few options Go explore! q
Tools for The Intrepid ⚒ Is this the future? I don’t know! p We need to experiment with more directions These are but a few options Go explore! q (And share what you find)
r Thank You, Salt Lake City! ’ https://lu.ma/distributed-systems https://fission.codes/discord github.com/expede @expede