M A E B e r u t to u f e h t W E N E D A M S A E D I D L O

#CODEBEAMSF Sometimes in order to keep moving forward, not only must you take one step at a time, but you must be willing to look back occasionally and evaluate your past, no matter how painful it is. Looking back lets you know whether or not you are headed in the right direction. – G.K. ADAMS

#CODEBEAMSF Epigram 53 So many good ideas are never heard from again once they embark in a voyage on the semantic gulf – A L A N J. P E R L I S , E P I G R A M S O N P RO G R A M M I N G ( 1 9 8 2 )

#CODEBEAMSF M E TA

M E TA B R O O K LY N Z E L E N K A , @ e x p e d e • Cofounder/CTO at Fission • https://fission.codes • Web native apps (“post-serverless”) • Goal: make back-end & DevOps obsolete 😈 • PLT & VMs • Prev. Ethereum Core Developer • Founded VanFP & VanBEAM • Primary author of Witchcraft Suite, Exceptional, &c #CODEBEAMSF

M E TA #CODEBEAMSF DISCOVER THE FUTURE OF ERLANG AND ELIXIR

M E TA #CODEBEAMSF THE BEAM DOES SO MUCH RIGHT 👏

M E TA #CODEBEAMSF H OW D O W E M O V E FO R WA R D AS A N E C O SYST E M , C R O S S L A N G U A G E , C R O S S PA R A D I G M ?

M E TA LOCAL MAXIMA #CODEBEAMSF 😍 😄 😭

M E TA SPOILER ALERT 🚨

  1. Breaking out of linear thinking / von Neumann 🌀 2. New types of modularity (for the BEAM) 🔌 3. Composable languages 🗣 #CODEBEAMSF

#CODEBEAMSF IN THE BEGINNING… 🌴🦖

IN THE BEGINNING… 🌴🦖 #CODEBEAMSF Epigram 28 Around computers it is difficult to find the correct unit of time to measure progress. Some cathedrals took a century to complete. Can you imagine the grandeur and scope of a program that would take as long? – A L A N J. P E R L I S , E P I G R A M S O N P RO G R A M M I N G ( 1 9 8 2 )

IN THE BEGINNING… 🌴🦖 29 years #CODEBEAMSF 34 years

#CODEBEAMSF PA R A D I G M R E D S H I F T

PA R A D I G M R E D S H I F T #CODEBEAMSF It’s really difficult to distinguish a new paradigm from a really bad idea […] The new shiny object is part of the old paradigm – D O U G L A S C R O C K F O R D , T H E P O W E R O F T H E PA R A D I G M ( 2 0 1 8 )

PA R A D I G M R E D S H I F T N O V E LT Y B U D G E T #CODEBEAMSF

PA R A D I G M R E D S H I F T L A W O F C O N S E R VAT I O N O F C O M P L E X I T Y Every application has an inherent amount of complexity that cannot be removed or hidden, but only moved from place to place – LARRY TESLER #CODEBEAMSF

PA R A D I G M R E D S H I F T T H E “ W H AT I F ” T R E E #CODEBEAMSF 3. SML Module System 🔌 4. Natural & Biz Language 🕴 ✂ 2. Applicative Model 🤹 ✂

  1. Array-based 📈

PA R A D I G M R E D S H I F T #CODEBEAMSF L E T ’ S S TA R T W I T H S O M E T H I N G A L I E N 🛸👽

PA R A D I G M R E D S H I F T SOMETHING ALIEN #CODEBEAMSF LIFE←{↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵} Attribution: wikipedia user LucasVB

PA R A D I G M R E D S H I F T W H AT C A N W E L E A R N F R O M A P L? C E L L U L A R A U T O M ATA & A C T O R S A S O R G A N I S M S 🌸 • Each step is very simple • Reasoning about dynamic organisms is hard • Emergent behaviour 😱 • VM in your brain to reason at a higher level • We can abstract some of this away • Broadway • Arrows #CODEBEAMSF

PA R A D I G M R E D S H I F T W H AT C A N W E L E A R N F R O M A P L? U N I V E R S A L S C A L I N G L AW #CODEBEAMSF Amdahl’s Law Incoherence Penalty http://www.perfdynamics.com/Manifesto/USLscalability.html USL

#CODEBEAMSF PA R A D I G M R E D S H I F T W H AT C A N W E L E A R N F R O M A P L? D O A L L / A U T O M AT I C PA R A L L E L I S M / C Y C L I C M U LT I T H R E A D I N G 🔄

  1. Shared-nothing architecture 2. Good for embarrassingly parallel problems 3. Macro could do a LOT more with this at compile-time 4. Impurity and granular control mean that we don’t get this by default (with good reason)

PA R A D I G M R E D S H I F T OTP → TOP TA B L E O R I E N T E D P R O G R A M M I N G #CODEBEAMSF

PA R A D I G M R E D S H I F T TA B L E - O R I E N T E D P R O G R A M M I N G N A I V E TA B L E S #CODEBEAMSF Name Handle City Brooklyn expede Va n c o u ve r Boris bmann Va n c o u ve r Steven icidasset Ghent

PA R A D I G M R E D S H I F T TA B L E - O R I E N T E D P R O G R A M M I N G P E R F E C T LY PA R A L L E L C O N T R O L TA B L E S #CODEBEAMSF Functions Zero dependencies by definition Data

PA R A D I G M R E D S H I F T TA B L E - O R I E N T E D P R O G R A M M I N G THE NTH-DIMENSION 🚀 #CODEBEAMSF

PA R A D I G M R E D S H I F T TA B L E - O R I E N T E D P R O G R A M M I N G #CODEBEAMSF

#CODEBEAMSF COMPOSITION & MODULARITY

COMPOSITION & MODULARITY #CODEBEAMSF Epigram 6 Symmetry is a complexity-reducing concept; seek it everywhere. Epigram 105 You can’t communicate complexity, only an awareness of it. – A L A N J. P E R L I S , E P I G R A M S O N P RO G R A M M I N G , 1 9 8 2

COMPOSITION & MODULARITY #CODEBEAMSF W H AT D O Y O U M E A N BY “C O M P O SA B L E ” ?

COMPOSITION & MODULARITY W H AT D O Y O U M E A N B Y “ C O M P O S I T I O N ” ? Orthogonality #CODEBEAMSF Commutativity Modularity HOF Composition

COMPOSITION & MODULARITY W H AT D O Y O U M E A N B Y “ C O M P O S I T I O N ” ? #CODEBEAMSF FOCUS Composition of the data dimension a b c d e

COMPOSITION & MODULARITY W H AT D O Y O U M E A N B Y “ C O M P O S I T I O N ” ? #CODEBEAMSF FOCUS Composition of the function dimension f g w flo ta Da h

COMPOSITION & MODULARITY W H AT D O Y O U M E A N B Y “ C O M P O S I T I O N ” ? FOCUS Composition of capabilities (protocols and HOFs) data function 🔁 #CODEBEAMSF

COMPOSITION & MODULARITY W H AT D O Y O U M E A N B Y “ C O M P O S I T I O N ” ? EXECUTION ORTHOGONALITY #CODEBEAMSF A program can be developed on a sequential platform, even if it is meant to run on a parallel platform, because the behaviour is not affected by whether we execute it using a sequential or parallel dynamics. – R O B E R T H A R P E R , P R A C T I C A L F O U N D AT I O N S F O R P R O G R A M M I N G L A N G U A G E S , 2 0 1 2 t m m o c It 👍 ! s e ut

COMPOSITION & MODULARITY W H AT D O Y O U M E A N B Y “ C O M P O S I T I O N ” ? E X P L I C I T D ATA F L O W #CODEBEAMSF

COMPOSITION & MODULARITY HOW MODULAR ARE MODULES? (AND LIBRARIES) #CODEBEAMSF

COMPOSITION & MODULARITY HOW MODULAR ARE MODULES? MODULE-LEVEL MODULARITY “hot-swappable dependencies” #CODEBEAMSF

COMPOSITION & MODULARITY HOW MODULAR ARE MODULES? HACKING EXTENDING THE MODULE SYSTEM 😉 #CODEBEAMSF

COMPOSITION & MODULARITY HOW MODULAR ARE MODULES? HIGHER ORDER MODULES 💖 B E H AV I O U R S #CODEBEAMSF

#CODEBEAMSF D E C L A R AT I V E E M B E D D E D D S L S 🍏🍊

D E C L A R AT I V E E M B E D D E D D S L S #CODEBEAMSF I have regarded it as the highest goal of programming language design to enable good ideas to be elegantly expressed – TO N Y H O A R E , T U R I N G AWA R D L E C T U R E , 1 9 8 0

D E C L A R AT I V E E M B E D D E D D S L S I S N ’ T E V E R Y T H I N G A D S L? a P d ra m ig Wide t a P n r te e g u a g n a L #CODEBEAMSF D L S a r F k r o w e m e c a f r e t In c i l p p A Narrow t a n io

D E C L A R AT I V E E M B E D D E D D S L S I S N ’ T E V E R Y T H I N G A D S L? COUNTEREXAMPLE THIS IS JUST ELIXIR! #CODEBEAMSF

D E C L A R AT I V E E M B E D D E D D S L S A L G E B R A I C D ATA T Y P E E D S L #CODEBEAMSF

D E C L A R AT I V E E M B E D D E D D S L S #CODEBEAMSF BUSINESS LANGUAGE FOR BUSINESS TIME 💼

D E C L A R AT I V E E M B E D D E D D S L S BUSINESS LANGUAGE #CODEBEAMSF W H AT C A N W E L E A R N F R O M C O B O L? ( Y E S . R E A L LY. C O B O L . ) – Toggl, How to Kill at the Dragon in 9 Programming Languages

D E C L A R AT I V E E M B E D D E D D S L S W H AT C A N W E L E A R N F R O M C O B O L? #CODEBEAMSF

D E C L A R AT I V E E M B E D D E D D S L S W H AT C A N W E L E A R N F R O M C O B O L? W H E N N O O N E W A N T S T O G O T O J A I L 👩⚖ • Needs to be readable by lawyers • i.e. who can’t read code • Formal methods / static analysis • Including the compiler, of course • An unholy union of COBOL and Prolog #CODEBEAMSF

D E C L A R AT I V E E M B E D D E D D S L S UPSIDE

  1. Great for communicating with domain experts 2. We know how these DSLs work (e.g. they form an algebra) 3. They can be correct-by-construction 4. Check for various properties 1. Compile- or run-time 5. A language that exactly fits your needs (DDD) #CODEBEAMSF

D E C L A R AT I V E E M B E D D E D D S L S #CODEBEAMSF B U T W E H AV E A P R O B L E M 😱 H I N T: I T ’S I N F L E X I B I L I T Y

D E C L A R AT I V E E M B E D D E D D S L S #CODEBEAMSF 🏖 SHALLOW EMBEDDING 🦀 T H E Q U I C K A N D D I R T Y W AY

D E C L A R AT I V E E M B E D D E D D S L S SHALLOW EMBEDDING • Just use the built-in AST • What it can represent is limited • e.g. Ecto, Algae #CODEBEAMSF

D E C L A R AT I V E E M B E D D E D D S L S #CODEBEAMSF 🌊 DEEP EMBEDDING 🦈 “BE T TER AST ”

D E C L A R AT I V E E M B E D D E D D S L S DEEP EMBEDDING THREE STEPS

  1. Build a game plan 2. Transform (optional) 3. Tear down #CODEBEAMSF

D E C L A R AT I V E E M B E D D E D D S L S DEEP EMBEDDING “BUILD A PLAN” EXAMPLE #CODEBEAMSF

D E C L A R AT I V E E M B E D D E D D S L S DEEP EMBEDDING TRADEOFFS #CODEBEAMSF • More work to write (write your own AST) • Way more powerful (full control) • Precisely the vocabulary that you need — exact surface area • Can check more things about the meaning of your code • Logic-as-data is MUCH simpler to debug than running functions • Time travelling debugging! • Unlike protocols, you’re not locked into one canonical implementation

D E C L A R AT I V E E M B E D D E D D S L S DEEP EMBEDDING COMBINE POWERFUL, MODULAR, REUSABLE DSLS! #CODEBEAMSF

D E C L A R AT I V E E M B E D D E D D S L S DEEP EMBEDDING DESUGAR #CODEBEAMSF

D E C L A R AT I V E E M B E D D E D D S L S DEEP EMBEDDING HUH, KINDA THIS FEELS LIKE GENSERVER #CODEBEAMSF

D E C L A R AT I V E E M B E D D E D D S L S DEEP EMBEDDING WITH THEIR POWERS COMBINED! #CODEBEAMSF

D E C L A R AT I V E E M B E D D E D D S L S DEEP EMBEDDING ONE LAST LINE #CODEBEAMSF

D E C L A R AT I V E E M B E D D E D D S L S DEEP EMBEDDING MORE FLEXIBLE THAN PROTOCOLS #CODEBEAMSF

  1. Protocols require canonicity 2. Libraries of well-defined mini-languages, even without interpreter 3. Different in tests and prod (trivial to mock)

#CODEBEAMSF L E T ’ S M A K E N E W M I S TA K E S ! 💥 ✨ 5 PROBLEMS FOR THE NEXT 30 YEARS OF BEAM

L E T ’ S M A K E N E W M I S TA K E S 5 PROBLEMS FOR THE NEXT 30 YEARS OF BEAM #CODEBEAMSF

  1. Wasm — client & edge BEAM 2. Lower the barrier to entry (low code) 3. Correctness tools (i.e. better static & dynamic analysis, formal methods) 4. Automatic dynamic parallel evaluation 5. Mobile agents (incl. dynamic FaaS)

#CODEBEAMSF PA R T I N G T H O U G H T 🧠

PA R T I N G T H O U G H T 🧠 #CODEBEAMSF Epigram 101 Dealing with failure is easy: work hard to improve. Success is also easy to handle: you’ve solved the wrong problem. Work hard to improve. – A L A N J. P E R L I S , E P I G R A M S O N P RO G R A M M I N G ( 1 9 8 2 )

#CODEBEAMSF 🇺🇸 T H A N K Y O U , S A N F R A N C I S C O 🎉 brooklyn@fission.codes g i t h u b . c o m /e x p e d e @expede