Slide 1

Slide 1 text

LIbRarY DEsiGnED tHe bESt I evER

Slide 2

Slide 2 text

WhAT HOw

Slide 3

Slide 3 text

@wHatYOuhIDe

Slide 4

Slide 4 text

FORZA FOOTBALL

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

WhAT HOw

Slide 7

Slide 7 text

WhAT

Slide 8

Slide 8 text

abStRacT

Slide 9

Slide 9 text

abStRacT COmPleX cODe

Slide 10

Slide 10 text

abStRacT PAtTerNs/IDeAs

Slide 11

Slide 11 text

TwO TyPEs OF liBrARiEs

Slide 12

Slide 12 text

"leT mE HanDlE ThiS fOR yoU"

Slide 13

Slide 13 text

{:ok, conn} = Redix.start_link() Redix.command(conn, ["GET", "my_key"]) #=> {:ok, "my_value"}

Slide 14

Slide 14 text

"HEre'S hOW yoU HanDlE ThiS"

Slide 15

Slide 15 text

Saul.validate( some_data, one_of([&is_ref/1, &is_pid/1]) )

Slide 16

Slide 16 text

leT mE HanDlE ThiS fOR yoU heRE's How YOu hANdLe tHIs

Slide 17

Slide 17 text

HOw

Slide 18

Slide 18 text

EXteNsIBle

Slide 19

Slide 19 text

buILt-iN 80 exTEnSibLE 20

Slide 20

Slide 20 text

Mix.Shell Mix.Shell.IO Mix.Shell.Process Mix.Shell.Quiet

Slide 21

Slide 21 text

geT Out OF poINtS

Slide 22

Slide 22 text

LAw oF ABsTrACtiONs LEakY

Slide 23

Slide 23 text

fragment( "lower(?)", post.title )

Slide 24

Slide 24 text

COmPosABle

Slide 25

Slide 25 text

LAnGuAge FEatURes USe

Slide 26

Slide 26 text

sTreAMs

Slide 27

Slide 27 text

Xandra.stream_pages!(query) |> Task.async_stream(mapper) |> Enum.reduce(acc, fun)

Slide 28

Slide 28 text

EXisTInG cONveNtIoNs KnOW

Slide 29

Slide 29 text

{:ok, term} {:error, term}

Slide 30

Slide 30 text

FOcuSEd coMpOSabLE <3

Slide 31

Slide 31 text

EaSy USe TO

Slide 32

Slide 32 text

coNsISteNt pRinCIpLe Of LeAsT asTOniShMEnT

Slide 33

Slide 33 text

TrANsParENt ThIN enOuGh ThAT yoU Can SEe ThROugH

Slide 34

Slide 34 text

{:ok, socket} = :gen_tcp.connect GrEaT ErRorS

Slide 35

Slide 35 text

DOcuME nTatIoN

Slide 36

Slide 36 text

WrITe dOCs FOr YoUr FutURe sELf

Slide 37

Slide 37 text

WhAT HOw

Slide 38

Slide 38 text

@wHatYOuhIDe