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

ElixirConf.EU 2017 Recap

ElixirConf.EU 2017 Recap

Recap of ElixirConf.EU 2017 at Elixir Shanghai meetup

Lou Xun

May 21, 2017
Tweet

More Decks by Lou Xun

Other Decks in Programming

Transcript

  1. 2017
    ElixirConf.EU

    View Slide

  2. View Slide

  3. José Valim
    Day 1 Keynote
    • Elixir 5yrs old, 1.0 -> 1.4
    • _Seven Languages in Seven Weeks_
    • "Elixir" before Elixir
    • defobject >,<
    • Elixir Goals -> Rethink meta-programming
    • Elixir ~= Data(types) + Modules + Processes
    • http: //theerlangelist.com //article/spawn_or_not
    • Time -> Runtime
    • Elixir 1.5

    View Slide

  4. Tonći Galić
    CQRS/ES + Elixir
    • Event Sourcing
    • eventual consistency
    • CQRS
    • Command
    • Query
    • Responsibility Segregation
    • +Elixir
    • gen_server/gen_statem/gen_stage
    • pattern matching
    • etc…
    • https: //10consulting.com/2017/01/04/building-a-cqrs-web-
    application-in-elixir-using-phoenix/

    View Slide

  5. Andrea Amantini
    Nextjournal
    • https: //nextjournal.com/
    • editor + interactive, connected code cells
    • Dependencies of code cells -> Graph of processes
    • Cuneiform (cuneiform-lang.org)
    • GenStage (:digraph, BroadcastDispatcher)
    • Applications
    • Phoenix Channel
    • Runner App
    • Erlang Ports
    • Docker

    View Slide

  6. View Slide

  7. Dániel Vámosi
    Visualization
    • https: //github.com/koudelka/visualixir
    • http: // www.erlang.pl/
    • “Paparazzi”

    View Slide

  8. Introducing
    ExLoglite
    LIGHTNING TALK

    View Slide

  9. View Slide

  10. Tetiana Dushenkivska & Keith Salisbury
    Day 2 Keynote
    • _The Age of Elixir_
    • Community
    • Elixir Shanghai !!

    View Slide

  11. Thomas Arts
    QuickCheck
    • Improved Elixir integration (eqc_ex)
    • PBT x ex_loglite
    • Shrinking
    • Quviq customers: Volvo, Dropbox, Basho…
    • Erlang -> Elixir for B2B
    • Spec! (JSON Schema)
    • generator, validator
    • Real-time system challenge (timestamp…)
    • JSON Schema + QuickCheck for random data
    generation

    View Slide

  12. defmodule ExLogLite.LogModelEQC do
    use ExUnit.Case
    use EQC.ExUnit
    alias ExLogLite.LogModel
    property "`build` always return string of a specific
    length" do
    forall {s, n} <- {utf8(), choose(1, 1000)} do
    ensure byte_size(LogModel.build(s, n)) == n
    end
    end
    end

    View Slide

  13. View Slide

  14. GraphQL
    Bruce Williams & Benjamin Wilson

    View Slide

  15. Bruce Williams & Benjamin Wilson
    GraphQL
    • 3yrs of Elixir @ CargoSence
    • RESTful APIs -> GraphQL
    • Absinthe
    • and friends…
    • Schema -> Objects -> Fields (type, another obj)
    • GraphQL Document
    • Query (like an object)
    • or Mutation, results are like queries
    • or Subscriptions

    View Slide

  16. View Slide

  17. Bruce Williams & Benjamin Wilson
    Absinthe
    • Resolver -> Macro (Map.get)
    • Execution / Data loading:
    • Batching
    • absinthe_ecto
    • lazy loading
    • combine sub-tree query
    • Projection (eager loading)
    • Extending Absinthe (hexdocs)
    • Phases |> Pipeline
    • Limit by complexity, etc…
    • middleware (per-field)

    View Slide

  18. GRAPHQL
    BOOK
    COMING SOON

    View Slide

  19. Petri Kero
    Scalable Mobile Game Backend
    • Distillery release
    • Docker -> Kubernetes
    • libcluster
    • Distributed Locks
    • Global PG
    • Sloppy Quorum
    • Use AI client for load
    testing
    • 420k concurrents @ 8-node,
    36 vCPU cluster
    • scaling up steps…

    View Slide

  20. View Slide

  21. Chris McCord
    Closing Keynote
    • Why Phoenix 1.3
    • Lonestar ElixirConf 2017- KEYNOTE: Phoenix 1.3
    • still rc >,<
    • Phoenix 1.4
    • Metrics
    • Instrumenting

    View Slide

  22. ADOPTING
    ELIXIR
    NEW BOOK2

    View Slide

  23. See U Next Time
    @aquarhead

    View Slide