Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Best Library I Ever Designed

The Best Library I Ever Designed

Andrea Leopardi

May 04, 2017
Tweet

More Decks by Andrea Leopardi

Other Decks in Programming

Transcript

  1. LIbRarY
    DEsiGnED
    tHe bESt
    I evER

    View Slide

  2. WhAT
    HOw

    View Slide

  3. @wHatYOuhIDe

    View Slide

  4. FORZA FOOTBALL

    View Slide

  5. View Slide

  6. WhAT
    HOw

    View Slide

  7. WhAT

    View Slide

  8. abStRacT

    View Slide

  9. abStRacT
    COmPleX cODe

    View Slide

  10. abStRacT
    PAtTerNs/IDeAs

    View Slide

  11. TwO TyPEs
    OF liBrARiEs

    View Slide

  12. "leT mE HanDlE
    ThiS fOR yoU"

    View Slide

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

    View Slide

  14. "HEre'S hOW yoU
    HanDlE ThiS"

    View Slide

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

    View Slide

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

    View Slide

  17. HOw

    View Slide

  18. EXteNsIBle

    View Slide

  19. buILt-iN
    80
    exTEnSibLE
    20

    View Slide

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

    View Slide

  21. geT Out OF poINtS

    View Slide

  22. LAw oF
    ABsTrACtiONs
    LEakY

    View Slide

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

    View Slide

  24. COmPosABle

    View Slide

  25. LAnGuAge
    FEatURes
    USe

    View Slide

  26. sTreAMs

    View Slide

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

    View Slide

  28. EXisTInG
    cONveNtIoNs
    KnOW

    View Slide

  29. {:ok, term}
    {:error, term}

    View Slide

  30. FOcuSEd
    coMpOSabLE
    <3

    View Slide

  31. EaSy USe
    TO

    View Slide

  32. coNsISteNt
    pRinCIpLe Of LeAsT
    asTOniShMEnT

    View Slide

  33. TrANsParENt
    ThIN enOuGh ThAT yoU
    Can SEe ThROugH

    View Slide

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

    View Slide

  35. DOcuME
    nTatIoN

    View Slide

  36. WrITe dOCs FOr
    YoUr FutURe sELf

    View Slide

  37. WhAT
    HOw

    View Slide

  38. @wHatYOuhIDe

    View Slide