Listen

Cast

Description

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:

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/