Elixir Wizards

Supervised State Replication in Elixir with Micah Cooper


Listen Later

In Season 15 episode 2, Elixir Wizards Sundi Myint and Charles Suggs chat with Micah Cooper to talk about distributed systems, data replication, and what it actually looks like to build these ideas in Elixir.

 
Micah shares his journey from Ruby to Elixir and walks us through Visor, a library he’s building based on the Viewstamps replication algorithm. Inspired by systems like TigerBeetle, Visor explores how you can replicate state across nodes using GenServers, giving you fault tolerance and recovery without relying entirely on traditional database patterns.
 
We talk about the difference between distributed systems and data replication, where things tend to get misunderstood, and what changes when you start thinking about state this way. The conversation also touches on event sourcing, tradeoffs in system design, and how Elixir’s distributed model makes some of these concepts more approachable than you might expect.
 
Along the way, we talk about building for curiosity, experimenting with new ideas, and how projects like this push the ecosystem forward.

 

Topics discussed in this episode:
  • Building Visor and working with the Viewstamps replication model
  • Replicating GenServer state across nodes
  • Distributed systems vs. data replication
  • Lessons from TigerBeetle and financial system design
  • Event sourcing challenges and tradeoffs
  • Rethinking database-first architectures
  • Snapshotting, recovery, and fault tolerance
  • The role of Elixir’s distributed model
  • Experimentation, learning, and building for curiosity
  •  

    Links mentioned:

    Micah’s GitHub https://github.com/mrmicahcooper

    Micah’s GitLab https://gitlab.com/mrmicahcooper
    The Visor repository: https://gitlab.com/mrmicahcooper/visor
    Visor Hex Package https://hex.pm/packages/visor
    Ruby on Rails https://rubyonrails.org/
    Phoenix LiveView Framework https://www.phoenixframework.org/
    Zig Programming Language https://ziglang.org/
    TigerBeetle https://tigerbeetle.com/
    TigerBeetle internal docs https://github.com/tigerbeetle/tigerbeetle/tree/main/docs/internals
    The BEAM https://www.erlang-solutions.com/blog/the-beam-erlangs-virtual-machine/
    GenServer https://hexdocs.pm/elixir/GenServer.html
    Apache Kafka https://github.com/apache/kafka
    RabbitMQ https://www.rabbitmq.com/
    Redpanda https://www.redpanda.com/
    SQL https://www.ibm.com/think/topics/structured-query-language
    Kubernetes https://kubernetes.io/
    YAML https://yaml.org/
    Nomad Workload Orchestrator https://developer.hashicorp.com/nomad
    Flutter https://flutter.dev/
    Commanded https://hexdocs.pm/commanded/Commanded.html
    Go Programming Language https://go.dev/
    Clojure Programming Language https://clojure.org/
    Nebulex https://hexdocs.pm/nebulex/Nebulex.html
    Mnesia https://www.erlang.org/doc/apps/mnesia/mnesia.html
    Cachex https://hexdocs.pm/cachex/Cachex.html
    libgraph https://hexdocs.pm/libgraph/Graph.html
    Horde https://hexdocs.pm/horde/Horde.Registry.html
    NocFree split keyboard https://www.nocfree.com/
    Micah’s LinkedIn https://www.linkedin.com/in/micah-cooper-4a737560/ 

    ...more
    View all episodesView all episodes
    Download on the App Store

    Elixir WizardsBy SmartLogic LLC

    • 4.9
    • 4.9
    • 4.9
    • 4.9
    • 4.9

    4.9

    22 ratings