• Supervision Tree


    In one of my previous post (Let it crash) we talked about how good Erlang and Elixir are at fault tolerance, and how they could restart an app when it crashes, so it wouldn’t cause any impact in our customers. We also mentioned that all of this was handled by the supervision tree ...
  • Always return a single type from a function


    While these sorts of problems affect equally both functional and OOP programming, we are going to be talking primarily about functional programming, mainly because the style of coding used in this example is functional, but everything in this post can be extrapolated into the OOP world ...
  • Let It Crash


    When I first started becoming interested in Erlang and Elixir I was very confused about that 'Let it crash' motto that everyone was talking about. This is probably now one of the few reason why I like elixir. Surely you shouldn’t let your system crash I thought back in time. Why would I let my system crash and annoy a lot of my customers ? So what was all of this about it ?
  • Dependency Inversion Principle


    The Dependency Inversion principle is one of the famous SOLID principles. The solid principles are a group of good practices that allow you to write better and cleaner code in a way that is easy to maintain, reusable, highly cohesive and strongly decoupled ...
  • Liskov Substitution Principle


    The Liskov Substitution principle is one of the famous SOLID principles. The solid principles are a group of good practices that allow you to write better and cleaner code in a way that is easy to maintain, reusable, highly cohesive and strongly decoupled ...
  • Interface Segregation Principle


    No client should be forced to depend on methods it does not use. The interface-segregation principle (ISP) is one of the famous SOLID principles. The solid principles are a group of good practices that allow you to write better and cleaner code in a way that is easy to maintain, reusable, highly cohesive and strongly decoupled ...
  • Open Closed Principle


    Software entities (classes, modules …) should be open for extension but closed for modification. In other words, theoretically you should never need to change existing code or classes ...
  • Agile Methodologies


    The use of the word agile derives from the agile manifesto. A small group of people got together in 2001 to discuss their feelings that the traditional approach to managing software development projects was failing far too often. They came up with the agile manifesto, which describes 4 important values that are as relevant today as they were then ...
  • Pattern Matching


    Like many developers, I come from an OOP background. Throughout my time as an OOP developer, I have encountered its strengths and weaknesses. I believe that many of the weaknesses can be overcome through functional programming paradigms, and I want to demonstrate exactly how through an example involving pattern matching ...
  • Single Responsibility Principle


    The Single responsibility principle is one of the famous SOLID principles. The solid principles are a group of good practices that allow you to write better and cleaner code in a way that is easy to maintain, reusable, highly cohesive and strongly decoupled ...