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

From Noob to Contributing Noob

From Noob to Contributing Noob

my talk at ElixirConf 2019 (Prague)

Daniel Serrano

November 22, 2018
Tweet

More Decks by Daniel Serrano

Other Decks in Programming

Transcript

  1. From Noob to
    Contributing Noob
    Lisbon |> Elixir

    View Slide

  2. $> whoami
    Lisbon |> Elixir
    Daniel Serrano
    Software Engineer
    Biometrics Team @
    @dnlserrano

    View Slide

  3. Outline
    Lisbon |> Elixir
    • a bit about my early days with Elixir
    • how I went from not knowing the language to contributing to
    OSS projects
    • httpoison
    • spandex
    • elixir-thrift
    • the community behind Elixir

    View Slide

  4. Early days
    Lisbon |> Elixir

    View Slide

  5. Beginning
    Lisbon |> Elixir
    Nizar Venturini
    @trenpixster

    View Slide

  6. Later on…
    Lisbon |> Elixir
    Paulo Pereira
    @odesassossegado

    View Slide

  7. Later on…
    Lisbon |> Elixir
    Paulo Pereira
    @odesassossegado

    View Slide

  8. Later on…
    Lisbon |> Elixir
    Paulo Pereira
    @odesassossegado

    View Slide

  9. Onfido a
    Lisbon |> Elixir
    • using it to run a research pipeline made up of a
    sequence of Python executables in a fault-tolerant way
    • very hacky
    • 1st pull-request in Elixir during hackathon
    • lots of in-house knowledge that has been building up and more…

    View Slide

  10. In the Biometrics Team a
    Lisbon |> Elixir

    View Slide

  11. Motus
    Lisbon |> Elixir
    • poolboy
    • worker pools
    • fuse
    • circuit breaking
    • ex_statsd
    • metrics
    • mox
    • mocks for testing
    • httpoison
    • http
    • spandex
    • tracing
    microservices aggregator

    View Slide

  12. Boxxie
    Python microservice
    Content-Type:
    multipart/mixed;boundary=firstboundary123
    --firstboundary123
    Content-Type: application/json
    {“metadata”: …}
    --firstboundary123
    Content-Type: image/png
    [binary]
    --firstboundary123
    Content-Type: application/json
    {“metadata”: …}
    --firstboundary123
    Content-Type: image/png
    [binary]
    --firstboundary123--
    multipart
    response
    request
    Lisbon |> Elixir

    View Slide

  13. Lisbon |> Elixir

    View Slide

  14. httpoison
    • did not support multipart out-of-the-box
    • depends on hackney
    Lisbon |> Elixir

    View Slide

  15. Lisbon |> Elixir

    View Slide

  16. Lisbon |> Elixir

    View Slide

  17. Lisbon |> Elixir

    View Slide

  18. Lisbon |> Elixir
    :hackney_multipart.decode_form/2

    View Slide

  19. Lisbon |> Elixir

    View Slide

  20. before
    after
    Lisbon |> Elixir

    View Slide

  21. Lisbon |> Elixir

    View Slide

  22. commit message
    Lisbon |> Elixir

    View Slide

  23. hexdocs
    Lisbon |> Elixir

    View Slide

  24. README
    Lisbon |> Elixir

    View Slide

  25. httpoison
    contribution done ✔
    Lisbon |> Elixir

    View Slide

  26. Distributed Tracing
    Lisbon |> Elixir

    View Slide

  27. spandex
    Lisbon |> Elixir

    View Slide

  28. spandex
    upgrade news
    Lisbon |> Elixir

    View Slide

  29. spandex
    v2.4.0
    re-implement function decorators in our project
    Lisbon |> Elixir

    View Slide

  30. spandex
    v2.4.0
    “How would you feel about
    bringing back function decorators?”
    Lisbon |> Elixir

    View Slide

  31. spandex
    v2.4.0
    Lisbon |> Elixir

    View Slide

  32. spandex
    v2.4.0

    Lisbon |> Elixir

    View Slide

  33. spandex
    v2.4.0
    • recognition for your work
    • gives you a sense of accomplishment
    • fosters deeper, broader knowledge
    • strengthens the community
    Lisbon |> Elixir

    View Slide

  34. spandex
    contribution done ✔
    Lisbon |> Elixir

    View Slide

  35. • Uber’s open-source distributed tracing platform
    • uses Thrift as the underlying communication protocol
    Lisbon |> Elixir

    View Slide

  36. service
    struct
    Thrift IDL
    Lisbon |> Elixir

    View Slide

  37. elixir-thrift
    Lisbon |> Elixir

    View Slide

  38. elixir-thrift
    Lisbon |> Elixir

    View Slide

  39. elixir-thrift
    contribution done ✔
    Lisbon |> Elixir

    View Slide

  40. Community

    View Slide

  41. MINASWAN
    “Matz is nice and so we are nice”
    Yukihiro Matsumoto
    Lisbon |> Elixir

    View Slide

  42. JINASWAN
    José Valim
    “José is nice and so we are nice”
    Lisbon |> Elixir

    View Slide

  43. Get Involved
    • follow Elixir community members on Twitter
    • watch elixirforum.com
    • sign up for the Plataformatec newsletter on Elixir
    • listen to podcasts
    • read (and write) blog posts
    • present talks at the Lisbon |> Elixir meetup
    Lisbon |> Elixir

    View Slide

  44. Thank you
    questions?
    Lisbon |> Elixir

    View Slide