Slides for my talk at Elixir Conf EU 2018 (www.elixirconf.eu/elixirconf2018)
What happens when you don't like centralized things? You do P2P! I created a distributed smart office using Elixir that runs in a single P2P network. There are a lot of subtleties into this. How can we prevent someone from entering the network? How do we manage shared data? What topology do we use? How about nodes that are unrealiable and we are not sure when they will connect or disconnect? What if YOU want to add a node and we can't trust you to deliver messages? I will use the office as an example and teach you how different the reasoning between a web-like centralised context and a P2P distributed system is. We will go from simple P2P topologies (gossip, trees) to more complex ones (Gnutella2, HyParView, Plumtrees), analyse their problems and take a look at what CRDTs are and how awesome they can be for shared data.