Although the mystical land of functional programming preaches separation of data and behavior, keeping everything explicit, there are cases when coupling those (or dispatching based on type) are useful. This talks is about when, how and why to couple data and behavior, showcasing real code where Elixir Protocols are used to simplify and abstract common logic of different data types.
Showcase benefits and methods for coupling data and behavior (with Elixir in mind):
I'm a software engineer with 10 years of experience, focused on web applications, from ops to backend. Currently in love Elixir, having worked with the language since 2015, being an active member of Elixir Meetups in São Paulo, Brazil and spreading Elixir love all around :)
Before that, I've worked a lot with Java: SpringBoot and VRaptor for web apps, and Solr, Kafka and Spark for Search and Analytics. I also did some work with embedded media systems, and did my master dissertation on wireless sensor networks.