Introduction Participation If you are interested in contributing to this book, check out the contribution guidelines. Design patterns In software development, we often come across problems that share similarities regardless of the environment they appear in. Although the implementation details are crucial to solve the task at hand, we may abstract from these particularities to find the common prac