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

Elixir is a game changer - let's spread the love

Elixir is a game changer - let's spread the love

Avatar for Roman Heinrich

Roman Heinrich

February 19, 2016
Tweet

More Decks by Roman Heinrich

Other Decks in Programming

Transcript

  1. HI

  2. MY SLIDES ARE PLAIN I DID NOT REHEARSE MY TALK

    IT’S MY FIRST TALK AT A MEETUP I’VE GOT TOO MUCH TO SHARE TO FIT IT INTO A SINGLE TALK WHAT CAN GO WRONG? ;)
  3. - PROGRAMMING IN THE SMALL - PROGRAMMING IN THE LARGE

    - A LITTLE SURPRISE TOPICS TODAY:
  4. THAT IS WHAT MOST OF OUR TASKS LOOK LIKE. GET

    STUFF FROM SOMEWHERE, CHANGE IT SOMEHOW, SEND IT SOMEWHERE.
  5. IT GIVES YOU A PROTOCOL TO CONTROL THE FLOW WITH

    EXPECTED ERRORS, RAISING FUNCTIONS AND SIDE-EFFECTS
  6. defmodule TripleArrowExample do use PlumberGirl def tagged_inc(v) do IO.puts "inc

    for #{v}" # sideeffect for demonstration {:ok, v + 1} end def error_fn(_) do {:error, "I'm a bad fn!"} end def raising_fn(_) do raise "I'm raising!" end def result do 1 |> tagged_inc >>> tagged_inc >>> tagged_inc end def error_result do 1 |> tagged_inc >>> tagged_inc >>> error_fn >>> tagged_inc end def raising_result do 1 |> tagged_inc >>> tagged_inc >>> raising_fn >>> tagged_inc end end iex> TripleArrowExample.result inc for 1 inc for 2 inc for 3 {:ok, 4}
  7. defmodule Some do import PipeHere def check_pipe_here do "abc" |>

    Regex.match?(~r/a/, _) |> pipe_here end end iex> Some.check_pipe_here true
  8. defmodule Plugin1 do use Plugin.Builder plugin :first_fn def first_fn(acc, _)

    do Map.put(acc, :first_fn_passed, true) end end defmodule Plugin2 do use Plugin.Builder plugin :second_fn def second_fn(acc, _) do Map.put(acc, :second_fn_passed, true) end end defmodule Plugin3 do use Plugin.Builder plugin Plugin1 plugin Plugin2 end acc = Plugin.call(Plugin3, %{}) true = Map.get(acc, :first_fn_passed) true = Map.get(acc, :second_fn_passed)
  9. BE CAREFUL WITH EXPERTS! THEY FORGET TO HAVE FUN. THEY

    KNOW THEIR ANSWERS… BUT PROBABLY NOT YOURS…
  10. Printf, who's now sitting right in front of me, is

    on his way home. Talking with him made me realize how much of what I do flies in the face of what I liked, what I started programming for. Each of the people Printf met are roles I see myself taking one day or another over time. I was encouraged by them to become them, and probably encouraged people to do the same. Where I got dragged in the game of trying to become a real programmer, Printf didn't. He said he was okay with not being a real programmer, that he preferred to be a programmer with a human face.
  11. - NO DEVELOPERS - NO BIG CORPORATION BEHIND - FUNCTIONAL

    ERLANG WTF - NO OBJECTS OMG! TYPICAL FEARS (MANAGERS)
  12. - FEW JOBS - TIME INVESTMENT UNCLEAR - FEW LIBRARIES

    - FEW STACKOVERFLOW ANSWERS… - NO DEVISE/ACTIVE_ADMIN/ETC… TYPICAL FEARS (DEV)
  13. - BLOG TO HAVE DEV TESTIMONIALS IN ONE PLACE -

    TWITTER ACCOUNT TO HAVE A TIMELINE OF THE PUBLIC PERCEPTION - GITHUB TEAM TO COLLECT GOOD / USEFUL LIBRARIES IN ONE PLACE RUBY2ELIXIR
  14. - ONLY SOME MUCH CAN BE DONE BY A SINGLE

    PERSON - STILL NOT A VERY EFFECTIVE STRATEGY TO MAKE ELIXIR MORE POPULAR CONCERNS
  15. FEED A MAN AND YOU HAVE TO FEED HIM EVERYDAY.

    TEACH HIM FISHING AND HE’LL BE SET FOR LIFE… OR SOMETHING LIKE THIS ;)
  16. EXPECTED RESULT: - ELIXIR INSTALLED ON SOMEBODY’S LAPTOP - THEY

    HAVE USED THE BASICS IN IEX - THEY HAVE A STANDARD SURVIVAL KIT TO GIVE A WORKSHOP THEMSELVES
  17. ABOUT SPEAKER Roman Heinrich ELIXIR ENTHUSIAST RUBY DEVELOPER REACT.JS LOVER

    DEVOPS GUY GITHUB.COM/MINDREFRAMER TWITTER.COM/MINDREFRAMER DEVOPSBOX.ES