about summary refs log tree commit diff
path: root/presentations/erlang-2016
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2020-06-26T19·38+0100
committertazjin <mail@tazj.in>2020-06-26T19·51+0000
commit2e3b03b5ae04cc9d4da0001aff07962bf4107d42 (patch)
tree75d929acb15720bc8eb1182d105e2ecaa2626ba0 /presentations/erlang-2016
parent1d0e421cb86861c64b58d5aa66dce295ffe28af5 (diff)
chore(tazjin): Move my presentations to my user directory r/1090
Change-Id: I72b25680e7167c3a55477111c28b1d4936c60e2c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/606
Reviewed-by: tazjin <mail@tazj.in>
Diffstat (limited to 'presentations/erlang-2016')
-rw-r--r--presentations/erlang-2016/.skip-subtree0
-rw-r--r--presentations/erlang-2016/README.md6
-rw-r--r--presentations/erlang-2016/presentation.md222
-rw-r--r--presentations/erlang-2016/presentation.pdfbin1777976 -> 0 bytes
-rw-r--r--presentations/erlang-2016/src/hello.erl5
-rw-r--r--presentations/erlang-2016/src/hello1.erl5
-rw-r--r--presentations/erlang-2016/src/hello2.erl11
-rw-r--r--presentations/erlang-2016/src/hello_server.erl12
-rw-r--r--presentations/erlang-2016/src/hello_server2.erl36
-rw-r--r--presentations/erlang-2016/src/hello_sup.erl24
10 files changed, 0 insertions, 321 deletions
diff --git a/presentations/erlang-2016/.skip-subtree b/presentations/erlang-2016/.skip-subtree
deleted file mode 100644
index e69de29bb2d1..000000000000
--- a/presentations/erlang-2016/.skip-subtree
+++ /dev/null
diff --git a/presentations/erlang-2016/README.md b/presentations/erlang-2016/README.md
deleted file mode 100644
index e1b6c83b99cc..000000000000
--- a/presentations/erlang-2016/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-These are the slides for a presentation I gave for the Oslo javaBin meetup in
-2016.
-
-Unfortunately there is no recording of the presentation due to a technical error
-(video was recorded, but no audio). This is a bit of a shame because I think
-these are some of the best slides I've ever made.
diff --git a/presentations/erlang-2016/presentation.md b/presentations/erlang-2016/presentation.md
deleted file mode 100644
index 526564b88268..000000000000
--- a/presentations/erlang-2016/presentation.md
+++ /dev/null
@@ -1,222 +0,0 @@
-slidenumbers: true
-Erlang.
-======
-
-### Fault-tolerant, concurrent programming.
-
----
-
-## A brief history of Erlang
-
----
-
-![](https://www.ericsson.com/thinkingahead/the-networked-society-blog/wp-content/uploads/2014/09/bfW5FSr.jpg)
-
-
-^ Telefontornet in Stockholm, around 1890. Used until 1913. 
-
----
-
-![](https://3.bp.blogspot.com/-UF7W9yTUO2g/VBqw-1HNTzI/AAAAAAAAPeg/KvsMbNSAcII/s1600/6835942484_1531372d8f_b.jpg)
-
-^ Telephones were operated manually at Switchboards. Anyone old enough to remember? I'm certainly not. 
-
----
-
-![fit](https://russcam.github.io/fsharp-akka-talk/images/ericsson-301-AXD.png)
-
-^ Eventually we did that in software, and we got better at it over time. Ericsson AXD 301, first commercial Erlang switch. But lets take a step back.
-
----
-
-## Phone switches must be ...
-
-Highly concurrent
-
-Fault-tolerant
-
-Distributed
-
-(Fast!)
-
-![right 150%](http://learnyousomeerlang.com/static/img/erlang-the-movie.png)
-
----
-
-## ... and so is Erlang!
-
----
-
-## Erlang as a whole:
-
-- Unique process model (actors!)
-- Built-in fault-tolerance & error handling
-- Distributed processes
-- Three parts!
-
----
-
-## Part 1: Erlang, the language
-
-- Functional
-- Prolog-inspired syntax
-- Everything is immutable
-- *Extreme* pattern-matching
-
----
-### Hello Joe
-
-```erlang
-hello_joe.
-```
-
----
-### Hello Joe
-
-```erlang
--module(hello1).
--export([hello_joe/0]).
-
-hello_joe() ->
-    hello_joe.
-```
-
----
-### Hello Joe
-
-```erlang
--module(hello1).
--export([hello_joe/0]).
-
-hello_joe() ->
-    hello_joe.
-    
-% 1> c(hello1).
-% {ok,hello1}
-% 2> hello1:hello_joe().
-% hello_joe
-```
-
----
-### Hello Joe
-
-```erlang
--module(hello2).
--export([hello/1]).
-
-hello(Name) ->
-    io:format("Hello ~s!~n", [Name]).
-
-% 3> c(hello2).
-% {ok,hello2}
-% 4> hello2:hello("Joe").
-% Hello Joe!
-% ok
-```
-
----
-
-## [fit] Hello ~~world~~ Joe is boring!
-## [fit] Lets do it with processes.
-
----
-### Hello Server
-
-```erlang
--module(hello_server).
--export([start_server/0]).
-
-start_server() ->
-    spawn(fun() -> server() end).
-
-server() ->
-    receive
-        {greet, Name} ->
-            io:format("Hello ~s!~n", [Name]),
-            server()
-    end.
-```
-
----
-
-## [fit] Some issues with that ...
-
-- What about unused messages?
-- What if the server crashes?
-
----
-
-## [fit] Part 2: Open Telecom Platform
-
-### **It's called Erlang/OTP for a reason.**
-
----
-
-# OTP: An Application Framework
-
-- Supervision - keep processes alive!
-
-- OTP Behaviours - common process patterns
-
-- Extensive standard library
-
-- Error handling, debuggers, testing, ...
-
-- Lots more!
-
-^ Standard library includes lots of things from simple network libraries over testing frameworks to cryptography, complete LDAP clients etc.
-
----
-
-# Supervision
-
-![inline](http://erlang.org/doc/design_principles/sup6.gif)
-
-^ Supervision keeps processes alive, different restart behaviours, everything should be supervised to avoid "process" (and therefore memory) leaks
-
----
-
-# OTP Behaviours
-
-* `gen_server`
-* `gen_statem` 
-* `gen_event`
-* `supervisor`
-
-^ gen = generic. explain server, explain statem, event = event handling with registered handlers, supervisor ...
-
----
-
-`gen_server`
-
----
-
-## [fit] Part 3: BEAM
-
-### Bogdan/Bjørn Erlang Abstract machine
-
----
-
-## A VM for Erlang
-
-* Many were written, BEAM survived
-* Concurrent garbage-collection
-* Lower-level bytecode than JVM
-* Very open to new languages
-  (Elixir, LFE, Joxa, ...)
-
----
-
-## What next?
-
-* Ole's talk, obviously!
-* Learn You Some Erlang!
-  www.learnyousomeerlang.com
-* Watch *Erlang the Movie*
-* (soon!) Join the Oslo BEAM meetup group
-
----
-
-# [fit] Questions?
-
-`@tazjin`
diff --git a/presentations/erlang-2016/presentation.pdf b/presentations/erlang-2016/presentation.pdf
deleted file mode 100644
index ec8d996704b2..000000000000
--- a/presentations/erlang-2016/presentation.pdf
+++ /dev/null
Binary files differdiff --git a/presentations/erlang-2016/src/hello.erl b/presentations/erlang-2016/src/hello.erl
deleted file mode 100644
index 56404a0c5a20..000000000000
--- a/presentations/erlang-2016/src/hello.erl
+++ /dev/null
@@ -1,5 +0,0 @@
--module(hello).
--export([hello_joe/0]).
-
-hello_joe() ->
-    hello_joe.
diff --git a/presentations/erlang-2016/src/hello1.erl b/presentations/erlang-2016/src/hello1.erl
deleted file mode 100644
index ca78261399e1..000000000000
--- a/presentations/erlang-2016/src/hello1.erl
+++ /dev/null
@@ -1,5 +0,0 @@
--module(hello1).
--export([hello_joe/0]).
-
-hello_joe() ->
-    hello_joe.
diff --git a/presentations/erlang-2016/src/hello2.erl b/presentations/erlang-2016/src/hello2.erl
deleted file mode 100644
index 2d1f6c84c401..000000000000
--- a/presentations/erlang-2016/src/hello2.erl
+++ /dev/null
@@ -1,11 +0,0 @@
--module(hello2).
--export([hello/1]).
-
-hello(Name) ->
-    io:format("Hey ~s!~n", [Name]).
-
-% 3> c(hello2).
-% {ok,hello2}
-% 4> hello2:hello("Joe").
-% Hello Joe!
-% ok
diff --git a/presentations/erlang-2016/src/hello_server.erl b/presentations/erlang-2016/src/hello_server.erl
deleted file mode 100644
index 01df14ac57d5..000000000000
--- a/presentations/erlang-2016/src/hello_server.erl
+++ /dev/null
@@ -1,12 +0,0 @@
--module(hello_server).
--export([start_server/0, server/0]).
-
-start_server() ->
-    spawn(fun() -> server() end).
-
-server() ->
-    receive
-        {greet, Name} ->
-            io:format("Hello ~s!~n", [Name]),
-            hello_server:server()
-    end.
diff --git a/presentations/erlang-2016/src/hello_server2.erl b/presentations/erlang-2016/src/hello_server2.erl
deleted file mode 100644
index 24bb934ee503..000000000000
--- a/presentations/erlang-2016/src/hello_server2.erl
+++ /dev/null
@@ -1,36 +0,0 @@
--module(hello_server2).
--behaviour(gen_server).
--compile(export_all).
-
-%%% Start callback for supervisor
-start_link() ->
-    gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).
-
-%%% gen_server callbacks
-
-init([]) ->
-    {ok, sets:new()}.
-
-handle_call({greet, Name}, _From, State) ->
-    io:format("Hello ~s!~n", [Name]),
-    NewState = sets:add_element(Name, State),
-    {reply, ok, NewState};
-
-handle_call({bye, Name}, _From, State) ->
-    io:format("Goodbye ~s!~n", [Name]),
-    NewState = sets:del_element(Name, State),
-    {reply, ok, NewState}.
-
-terminate(normal, State) ->
-    [io:format("Goodbye ~s!~n", [Name]) || Name <- State],
-    ok.
-
-%%% Unused gen_server callbacks
-code_change(_OldVsn, State, _Extra) ->
-    {ok, State}.
-
-handle_info(_Info, State) ->
-    {noreply, State}.
-
-handle_cast(_Request, State) ->
-    {noreply, State}.
diff --git a/presentations/erlang-2016/src/hello_sup.erl b/presentations/erlang-2016/src/hello_sup.erl
deleted file mode 100644
index 7fee0928c575..000000000000
--- a/presentations/erlang-2016/src/hello_sup.erl
+++ /dev/null
@@ -1,24 +0,0 @@
--module(hello_sup).
--behaviour(supervisor).
--export([start_link/0, init/1]).
-
-%%% Module API
-
-start_link() ->
-    supervisor:start_link({local, ?MODULE}, ?MODULE, []).
-
-%%% Supervisor callbacks
-
-init([]) ->
-    Children = [hello_spec()],
-    {ok, { {one_for_one, 5, 10}, Children}}.
-
-%%% Private
-
-hello_spec() ->
-    #{id       => hello_server2,
-      start    => {hello_server2, start_link, []},
-      restart  => permanent,
-      shutdown => 5000,
-      type     => worker,
-      module   => [hello_server2]}.