Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
what is this elixir thing everyone is talking about
José Tomás Albornoz
September 16, 2016
Programming
0
100
what is this elixir thing everyone is talking about
some of my fav features of elixir
lightning talk for CodeDaze.io on September 16th, 2016
José Tomás Albornoz
September 16, 2016
Tweet
Share
More Decks by José Tomás Albornoz
See All by José Tomás Albornoz
Things I learned when working on a small startup
eljojo
0
49
Introduction to Dokku
eljojo
1
120
Baruco 2014: How I Built My Own Twitch-Plays-Pokémon
eljojo
0
520
Introduction to Docker
eljojo
0
170
Other Decks in Programming
See All in Programming
How to start contributing to Kubernetes Projects
ydfu
0
140
一口目から美味しいReactのスルメ本🦑
taro28
2
620
設計の考え方とやり方
masuda220
PRO
55
30k
FargateとAthenaで作る、機械学習システム
nayuts
0
180
YATA: collaborative documents and how to make them fast
horusiath
1
160
More Than Micro Frontends: 3 Further Use Cases for Module Federation @DWX 2022
manfredsteyer
PRO
0
380
レビュー駆動学習のススメ_StaPy#83
soogie
0
320
테라폼으로 ECR 관리하기 (How to Manage ECR with Terraform)
posquit0
0
530
WindowsコンテナDojo: 第4回 Red Hat OpenShift Localを使ってみよう
oniak3ibm
PRO
0
190
サーバーレスパターンから学ぶデータ分析基盤構築 / devio2022
kasacchiful
0
490
20220706_Google Apps Scriptを実演で学ぶ~ GAS × Slack ~
apachan
2
620
ECサイトの脆弱性診断をいい感じにやりたい/OWASPKansaiNight_LT1_220727
owaspkansai
0
290
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1020
420k
Designing for Performance
lara
597
64k
Why You Should Never Use an ORM
jnunemaker
PRO
47
7.7k
Designing on Purpose - Digital PM Summit 2013
jponch
106
5.7k
Statistics for Hackers
jakevdp
782
210k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
237
19k
Automating Front-end Workflow
addyosmani
1351
200k
Bootstrapping a Software Product
garrettdimon
296
110k
What's in a price? How to price your products and services
michaelherold
229
9.4k
Unsuck your backbone
ammeep
659
55k
Happy Clients
brianwarren
89
5.6k
For a Future-Friendly Web
brad_frost
166
7.5k
Transcript
what is this elixir thing everyone's talking about by jojo
what is elixir
elixir is a functional language
created by José Valim
that runs on the erlang vm
pattern matching iex(1)> [first, second] = [1, 2] [1, 2]
iex(2)> first 1
pattern matching iex(2)> [first, second] = [1,2,3] ** (MatchError) no
match of right hand side value: [1, 2, 3]
pattern matching iex(1)> payload = %{username: "eljojo", stuff: true} %{stuff:
true, username: "eljojo"} iex(2)> %{username: name} = payload %{stuff: true, username: "eljojo"} iex(3)> name "eljojo"
function overloading def make_sound(:cow) do IO.puts "MOOOOOOOOO" end def make_sound(:cat)
do IO.puts "MEEEOOWW" end def make_sound(_) do IO.puts "¯\_(ϑ)_/¯" end
function overloading def make_sound(%{animal: :cow}) do IO.puts "MOOOOOOOOO" end def
make_sound(%{animal: :cat}) do IO.puts "MEEEOOWW" end def make_sound(%{animal: name}) do IO.puts "not sure how to #{name} ¯\_(ϑ)_/¯" end
we also got guards def page_ops(downtime) when downtime < 10
do IO.puts "¯\_(ϑ)_/¯" end def page_ops(downtime) when downtime >= 10 do PagerDuty.notify(whatever) end
pipe operator def add_one(number), do: number + 1 def multiply_by_three(number),
do: number * 3 multiply_by_three(add_one(1)) # => 6
pipe operator def add_one(number), do: number + 1 def multiply_by_three(number),
do: number * 3 1 |> add_one |> multiply_by_three # => 6
processes + messages current_process = self() spawn_link(fn -> send(current_process, {:msg,
"hello world"}) end) receive do {:msg, contents} -> IO.puts contents end
processes + messages # machine one receive do {:msg, contents}
-> IO.puts contents end # machine two process_name = "$MACHINE_ONE" spawn_link(fn -> send(process_name, {:msg, "yo!"}) end)
what is phoenix
A productive web framework that does not compromise speed and
maintainability.
it's basically rails for elixir, but cooler
validations def changeset(struct, params \\ %{}) do struct |> cast(params,
[:email_address, :first_name]) |> validate_required([:email_address]) end def changeset_after_signup(struct, params \\ %{}) do changeset(struct, params) |> validate_required([:first_name]) end
we're hiring!
@eljojo