A presentation at CodeBEAM SF in in San Francisco, CA, USA by Brooklyn Zelenka
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 🚨
#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 🤹 ✂
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 🔄
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
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
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
#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
#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
Languages and ecosystems are more than simply syntax; they’re ways of thinking. They have features, idioms, and community standards that drive us towards certain ways of doing things. Erlang is over 30 years old, and has a very mature way of doing things. Elixir came on the scene, bringing with it some new ideas from other ecosystems. We’re seeing even more of this with BEAM languages from LFE to Alpaca to Erlog.
Ideas come in and out of fashion. Some of them are lost and aren’t given a chance again. But as technology continues to evolve, perhaps there’s space for what’s old to be made new again! This talk will explore a few idea lost to time that perhaps have their chance to shine again. It asks what could languages would look like if history had gone slightly differently, and what depths we can plumb for the next 30 years and 50 languages on the BEAM.