With nearly 3000 commits and 200 contributors Ecto is one of the biggest and oldest Elixir repositories. Not only that - it's one of the most popular Elixir projects. And yet there's a lot happening all the time, especially now with the 2.0 release. Looking at the commit history of Ecto one can discover a journey most of Elixir developers take - first trying to force object-oriented habits into functional frame, later sprinkling some functional goodness here-and-there to finally entirely accept and embrace it and fully leverage OTP. The talk will take us through this journey focusing though on the more recent changes. Audience will discover how changes in the language affected the library and, in reverse, how the development of Ecto affected Elixir itself. For a short time, the talk will focus on the NoSQL integration, what it means and why it was possible to integrate, rather SQL oriented Ecto, with NoSQL databases that easily. We'll see exactly what architectural choices in Ecto and what features of Elixir allow for creating such a versatile software. Briefly, other database libraries (in Elixir and not only) will be looked into in search for the inspiration of some of the Ecto's features. We'll see how those ideas were incorporated, modified and expanded upon. The bulk part of the talk will centre on the recent changes, exploring and explaining them in depth. It will focus especially on changes affecting application's architecture and promoting functional style of programs: migration from Model to Schema, deprecation of callbacks and introduction of Ecto.Multi. With that last change, we'll discuss a new way of building application's service layer for database interaction that Multi makes possible and easy to build. Finally, together, we'll look into the future and wish how Ecto and it's ecosystem can be further developed and expanded.
* Gaining a better understanding of what functional programming means through analysis of real code and looking into it's evolution.
* Exploring how Elixir can be used for building flexible and clean software.
* Understanding basic concepts of Ecto, it's recent changes and new features.
* Finding out how database applications can be structured with the use of Ecto.
Intermediate developers familiar with Elixir and it's concepts. Some knowledge of Ecto may help but it is definitely not required.
Student during mornings, developer at afternoons and open source contributor by evenings. Michal is programming languages enthusiast, focusing mostly on the functional side. He is a member of the Ecto core team and maintainer of the MongoDB adapter. He's Google Summer of Code 2015 alumni, where he worked on Ecto and its MongoDB integration supervised by José Valim himself. When not programming he enjoys reading books, travelling, and sailing - no matter if sunny, rainy or stormy - it's even better if all of those are combined!