21% VAT(IVA) will be added to the ticket price
Most programmers try to ‘invent’ abstractions from scratch. This is an elusive goal. It requires a level of foresight rarely available. What if, instead, you could use existing, universal abstractions? For decades, programmers have dreamt of being able to assemble software from building blocks, like Lego bricks. In order to do this, such building blocks must be composable, like Lego bricks. What makes an abstraction composable?
It turns out that lambda calculus, abstract algebra, and category theory can teach us about composability and other fundamental abstractions of programming. Furthermore, it turns out that some of the most important design patterns in the Gang of Four book are special cases of such universal abstractions. Framing programming abstractions in mathematical terms has some advantages, one of which is that we get objective laws that we can use to test our assumptions. You can, for example, use such laws to determine whether an abstraction is composable – even in object-oriented programming!
In this workshop, you’ll learn some objective criteria to determine whether a design is composable, and when various design patterns apply. No special background in mathematics is required. The workshop will include a combination of lecture and exercises, including hands-on programming exercises. Successful participation in the workshop should enable you to use universal abstractions in your source code. As always, no silver bullet is implied. You will learn about universal abstractions, but it will not magically make all your code instantly perfect.
This workshop is for object-oriented programmers curious about functional programming and the mathematical foundations of programming. You’ll see F# and Haskell code examples during the workshop, but you don’t have to know these language; you’ll learn what you need along the way.
The fanciest C# features you’ll use is generics, so programmers with only passing familiarity with C# may be able to participate as well.
You’ll need to bring your own programming environment capable of compiling and running C# code on .NET Core, as well as xUnit.net-based unit tests. You’ll also need a Git client.
Mark Seemann helps programmers make code easier to maintain. His professional interests include functional programming, object–oriented development, software architecture, as well as software development in general. Apart from writing a book about Dependency Injection he has also created several Pluralsight courses, and written numerous articles and blog posts about programming. Originally poised to become a rock star or (failing that) graphic novelist (in the European tradition) he one day found himself with insufficient talent for either, a master’s degree in Economics, and a desire for working with computers. He has been doing the latter intermittently since 1995.
When not working with software or spending time with his family, Mark enjoys reading, listening to and playing music, as well as preparing or consuming gourmet food and wine.
ERNI was founded in 1994 in Switzerland to develop innovative software for international companies and SME. Right from the beginning sharing know-how to establish collective skills and focusing on economically sound engineering solutions played a key role. Together with our great crew, they are the basis for successful software projects. Today, the ERNI Group has more than 650 employees at 15 locations in 7 countries and continues to grow.
We are a group of passionate .NET developers based in Barcelona and with an open source mind. We love all stages of software development with a special focus in modern architecture and design, with DDD, CQRS, Event Sourcing, Functional Programming, Microservices, Docker, K8s and much more.
Databases are the core of back-end systems, this is why we spend a good amount of time working and learning about all different engines, concepts like CQRS, and how to work with data across distributed systems (microservices), with messaging systems like RabbitMQ, streaming databases like Kafka and hybrid systems like CosmosDB.
We believe that at the core of Agile software development we should constantly bring value to our customers, thats why we have a strong knowledge in infrastructure CI/CD systems and automation.