Beginners are
learning the wrong
stuff! Argh!
Operating Systems are
libraries that run on one
machine that mean your
unwritten software can
talk to hardware disks,
networks and monitors,
Linux, Windows OSX...
Application Systems are
libraries that run on two or
more machines that enable
your unwritten software to
cluster and failover when one
fails, Erlang OTP, Google
App Engine...
She meets 'Bob' on the
internet and clusters her
VM with his....
Coz Erlang clusters with a shared cookie,
Alice trusts Bob and Bob trusts Alice til rpc call os cmd rm -rf /* doth them part
DNS is the hard way to provide uniqueness
Email addresses is the easy way
...and you communicate via a proxy...
Basically you anotate
the code to say 'here is a
collection of functions
and behaviours' if you
have the right cryptographic
keys you can use them
...and if I send you a PID
you I give you permissions
to send messages back to it
(...via a proxy of course...)
And then it all went Pete Tong...
Erlang WTD
Gordon Guthrie
First Principle
Get the new programmer to the point of
delivering working software as quickly
as possible by designing out accidentals,
irrelevances and esoteric 'knowledge'
from their first experiences of
programming...
Why Not
Erlang OTP?
Short Course In Erlang OTP
Erlang is an actor based programming language where you programme lots of individual processes
Processes don't share state (process isolation) just sending each other messages (message passing)
It's like a beehive - some processes have the role of worker's - they do stuff specific to your programme, some are supervisor's they check the workers are ok
When a process sends a message to another one it doesn't know where it is (distribution)
Third Principle
Photo by Free Press Pics on Flickr (CC)
Alice is running an Erlang VM
Photo by Dietmar Temps on Flickr (CC)
What could possibly
go wrong?
Photo byTruthout.org on Flickr (CC)
Supervisor
Worker
Supervisor
Worker
Supervisor
Worker
Supervisor
Worker
Erlang code consists of modules
Each module is a collection of attributes and a collection of functions
WTD consists of two attributes
Second Principle
Your learn to programme from other people,
therefore your tools should be social, social
code repositories like github, social
communities like mailing lists and irc. If you
are going to learn to build distributed
applications you need social clusters