![Page 1: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/1.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 1/87
AnnaNeyzberg @Aneyzb she/her
Hannah Howard @techgirlwonder
she/her
anna@carbon�ve.com
hannah@carbon�ve.co
m
ANNA + HANNAH #ABOUTUS
![Page 2: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/2.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 2/87
GO VS. ELIXIR
A Concurrency Comparison
![Page 3: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/3.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 3/87
![Page 4: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/4.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 4/87
![Page 5: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/5.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 5/87
![Page 6: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/6.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 6/87
![Page 7: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/7.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 7/87
![Page 8: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/8.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 8/87
![Page 9: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/9.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 9/87
![Page 10: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/10.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 10/87
BUT WE ALSOHAVE
![Page 11: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/11.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 11/87
![Page 12: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/12.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 12/87
![Page 13: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/13.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 13/87
SO HOW ISTHIS
RELEVANT?
![Page 14: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/14.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 14/87
![Page 15: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/15.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 15/87
“Concurrency isthe composition of
independentlyexecuting
processes, whileparallelism is the
simultaneousexecution of
computations“-
![Page 16: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/16.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 16/87
PARALLELISMIS ABOUT
EXECUTINGMANY THINGSAT ONCE. IT'S
FOCUS ISEXECUTION
![Page 17: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/17.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 17/87
CONCURRENCYIS ABOUT
DEALING WITHMANY THINGSAT ONCE. IT'S
FOCUS ISSTRUCTURE
![Page 18: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/18.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 18/87
THIS REQUIRESCOORDINATION
![Page 19: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/19.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 19/87
COORDINATIONINTRODUCES
COMPLEXITY...
![Page 20: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/20.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 20/87
HOW DO WE
COORDINATEBETWEEN
TASKSWORKING
TOGETHER?
![Page 21: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/21.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 21/87
THE PROBLEM
Concurrency Without Coordination
![Page 22: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/22.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 22/87
THREADS COORDINATE BYSHARING DATA
Use same memory spaceUse mutation on shared state to
communicateUse various locks to prevent
overwriting each others work
![Page 23: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/23.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 23/87
THREADS
Old School Concurrency
![Page 24: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/24.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 24/87
MOST WIDELY
USEDPROGRAMMING
LANGUAGESSUPPORTTHREADS.
![Page 25: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/25.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 25/87
MO THREADS
Mo Problems
![Page 26: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/26.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 26/87
CHALLENGES WITHTHREADS
1. Lots of shared mutable state2. Dead locks / unpredictabiity3. Expontential complexity to manage
![Page 27: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/27.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 27/87
THE ACTORMODEL
![Page 28: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/28.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 28/87
INVENTED BYCARL HEWITT
1973
![Page 29: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/29.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 29/87
ERLANGCREATED IN
1986
![Page 30: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/30.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 30/87
CONCEPTUALMODEL TODEAL WITH
CONCURRENTCOMPUTATION
![Page 31: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/31.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 31/87
DEFINESSOME
GENERALRULES FOR
HOW THESYSTEM’S
COMPONENTSSHOULD
BEHAVE ANDINTERACT
WITH EACHOTHER
![Page 32: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/32.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 32/87
![Page 33: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/33.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 33/87
One ant is no ant.- https://www.brianstorti.com/the-actor-model/
![Page 34: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/34.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 34/87
![Page 35: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/35.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 35/87
![Page 36: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/36.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 36/87
![Page 37: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/37.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 37/87
PROCCESSES1. Are not OS processes2. Light weight3. Do not share memory4. Have a unique ID
![Page 38: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/38.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 38/87
THE ACTORMODEL IS
PHYSICALLYBASED
![Page 39: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/39.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 39/87
![Page 40: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/40.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 40/87
![Page 41: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/41.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 41/87
DISTRIBUTEDELIXIR
![Page 42: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/42.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 42/87
LET IT CRASH
![Page 43: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/43.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 43/87
![Page 44: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/44.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 44/87
![Page 45: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/45.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 45/87
THE BEAM
![Page 46: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/46.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 46/87
PREEMPTIVESCHEDULING
![Page 47: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/47.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 47/87
![Page 48: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/48.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 48/87
ELIXIR PRIORITIES1. Scalable2. Fault Tolerant (Telco Strong)3. Fast
![Page 49: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/49.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 49/87
GO AND CSP
![Page 50: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/50.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 50/87
CSP:Communicating Sequential Processes
![Page 51: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/51.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 51/87
PROCESS
![Page 52: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/52.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 52/87
CSP PROCESS != OS PROCESS
![Page 53: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/53.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 53/87
CHANNELS
![Page 54: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/54.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 54/87
PROCESSESKNOW
CHANNELS,NOT OTHERPROCESSES
![Page 55: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/55.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 55/87
Processes choose behavior by listeningon multiple channels
CHOICE:
![Page 56: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/56.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 56/87
LOOKING AT CSP IN GO
![Page 57: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/57.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 57/87
1. package main 2. 3. import "fmt" 4. 5. func read(incoming <-chan string, done chan<- struct{}) { 6. readValue := <-incoming 7. fmt.Printf("%s\n", readValue) 8. done <- struct{}{} 9. } 10. 11. func write(outgoing chan<- string, done chan<- struct{}) {12. outgoing <- "bananas"
Wait for both to complete
![Page 58: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/58.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 58/87
SYNCHRONOUSCHANNELS =
COORDINATION
![Page 59: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/59.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 59/87
Choice in Go with select!
![Page 60: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/60.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 60/87
HOW GO IMPLEMENTS CSP
![Page 61: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/61.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 61/87
A goroutine is alightweight thread
managed by the Goruntime.
- Of�cial Tour Of Go
![Page 62: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/62.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 62/87
*stares Britnely*
GOROUTINES SHARE MEMORY
![Page 63: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/63.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 63/87
BUT WAIT THERE'S MORE...
![Page 64: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/64.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 64/87
Sync Package:
ALL THETHREAD SYNCPRIMITIVES, IN
GO!
![Page 65: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/65.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 65/87
Do notcommunicate bysharing memory;
instead, sharememory by
communicating.- Go Docs
![Page 66: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/66.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 66/87
This approach can be taken toofar. Reference counts may bebest done by putting a mutex
around an integer variable, forinstance. But as a high-levelapproach, using channels to
control access makes it easierto write clear, correct programs.
- Also Go Docs
![Page 67: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/67.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 67/87
Other Go Fun Fact:GO ROUTINES ARE SCHEDULED COOPERATIVELY!
![Page 68: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/68.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 68/87
WTF GO?
![Page 69: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/69.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 69/87
GO COMPILES TO NATIVE CODE
![Page 70: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/70.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 70/87
GO RUN-TIME IS SMALL (2MB)
![Page 71: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/71.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 71/87
GO IS (ALMOST) A SYSTEMS PROGRAMMING LANGUAGE
![Page 72: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/72.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 72/87
GO PRIORITIES1. Ease of adoption2. Speed3. Flexibility
![Page 73: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/73.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 73/87
CSP VS ACTOR MODEL
![Page 74: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/74.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 74/87
CSP AND ACTOR MODELSIMILARITIES
1. Abstract 'processes' managed byruntime2. Share data bycommunicating/message passing
![Page 75: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/75.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 75/87
Erlang's syntaxderived from
Prolog and washeavily in�uencedby smalltalk, CSP
and the functionalprogramming.
- Joe Armstrong, Erlang Creator
![Page 76: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/76.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 76/87
Difference #1:
PROCESSIDENTITY
![Page 77: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/77.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 77/87
Difference #2:
DIRECTCOMMUNICATION
VS CHANNELS
![Page 78: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/78.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 78/87
Difference #3:
ASYNCHRONOUSVS
SYNCHRONOUSMESSAGEPASSING
![Page 79: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/79.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 79/87
NO SO DIFFERENT AFTER ALL?
![Page 80: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/80.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 80/87
HOW TO GIVE CSPPROCESS AN IDENTITY
1 CSP channel+ 1 CSP Process Reading From Channel= Channel Becomes De-facto Identity
![Page 81: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/81.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 81/87
HOW TO PASS CSPMESSAGES
ASYNCHRONOUSLYMessage Queue Process+ Channel For Sending+ Channel For Receiving= Asynchronous Message Passing
![Page 82: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/82.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 82/87
https://medium.com/capital-one-tech/building-an-unbounded-channel-in-
go-789e175cd2cd
BUILDING AN UNBOUNDED CHANNEL IN GO:
![Page 83: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/83.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 83/87
A GenServer in Go!
1. package counter 2. 3. type counterMessage interface { 4. handle(c * Counter) 5. } 6. 7. type Counter struct { 8. counterMessages chan counterMessage 9. 10. // do not touch outside run loop 11. value int
![Page 84: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/84.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 84/87
HOW DO WE IMPLEMENT CHANNELS IN ELIXIR?:
![Page 85: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/85.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 85/87
12. { queue, len, :unbuffered } ->
1. defmodule ElixirConurrency.Queue do 2. def new(max_size) do 3. { :queue.new, 0, max_size } 4. end 5. 6. def new(:unbuffered) do 7. { :queue.new, 0, :unbuffered } 8. end 9. 10. def put(bounded_queue, item ) do 11. case bounded_queue do
13. queue = :queue.in(item, queue) 14. {{:ok, queue }, len + 1} 15. { queue, len, max_size } -> 16. if len == max_size do 17. {:buffered, queue}
if queue unbuffered
![Page 86: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/86.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 86/87
CONCLUSIONS
![Page 87: ANNA + HANNAH #ABOUTUS...3/18/2019 Spectacle Boilerplate 1/ 87 Anna Neyzberg @Aneyzb she/her Hannah Howard @techgirlwonder she/her anna@carb onve.com3/18/2019](https://reader034.vdocument.in/reader034/viewer/2022042909/5f3a69034bff3821fa0ffd0c/html5/thumbnails/87.jpg)
3/18/2019 Spectacle Boilerplate
http://localhost:3000/#/?export 87/87
http://concurrency.techgirlwonder.com
THANK YOU!