About this Event
Flock. community is organizing a two day workshop focusing on domain model isolation and pragmatic functional programming! Tech stack is Kotlin, Spring Boot, Arrow, Maven. Seats are limited!
๐ก The domain model is the most critical aspect of your application. To reason about it clearly and accurately, it should be free of implementation details. Thatโs why your controllers and adapters should depend on the domainโand not the other way around. To achieve this, you need to map your data classes to your domain, where type class implementations in Kotlin can be particularly helpful.
๐๐ฌ ๐ญ๐ก๐ข๐ฌ ๐๐๐ฌ๐ฒ?
โ๏ธ Perhaps not, but it is simple.
During the workshop you will learn ๐ญ๐ก๐ซ๐๐ ๐ฌ๐ญ๐๐ฉ๐ฌ ๐ญ๐จ ๐๐๐๐๐๐ญ๐ข๐ฏ๐๐ฅ๐ฒ ๐ข๐ฌ๐จ๐ฅ๐๐ญ๐ ๐ฒ๐จ๐ฎ๐ซ ๐๐จ๐ฆ๐๐ข๐ง:
1๏ธโฃ ๐๐จ๐๐ฎ๐ฅ๐๐ซ๐ข๐ณ๐ ๐ฒ๐จ๐ฎ๐ซ ๐๐จ๐ฆ๐๐ข๐ง ๐ฅ๐จ๐ ๐ข๐
Move your domain classes and business logic to a dedicated module free from external dependencies. While other modules can depend on your domain module, they should remain independent, adhering to the principles of hexagonal architecture.
2๏ธโฃ ๐๐๐๐ง๐ญ๐ข๐๐ฒ ๐๐ซ๐๐๐ค๐ข๐ง๐ ๐ฉ๐จ๐ข๐ง๐ญ๐ฌ
Compile your code and observe where issues arise. Typically, repository implementations will face challenges as they no longer have direct access to the business logic. You will learn to resolve this problem, fostering a clean separation of concerns.
3๏ธโฃ ๐๐๐๐จ๐ฎ๐ฉ๐ฅ๐ ๐๐๐ญ๐ ๐ฆ๐จ๐๐๐ฅ๐ฌ
Map your inbound and outbound modules to your domain. Itโs crucial to decouple data transfer models from the domain, particularly in the API and SPI modules. Applying hexagonal architecture allows for a clear boundary, preventing the domain model from leaking outside the application, which significantly improves maintainability and testability.
About the teacher
Jerre van Veluw is a software engineer at Flock. He is passionate about application architecture and pragmatic functional programming, which he has implemented for clients such as bol.com, ING, and more recently, the Port of Rotterdam. He's a speaker at conferences and recently spoke at Devoxx Belgium and Kotlin Dev Day.
Why should you attend?
- You're a software engineer working daily in Java / Kotlin codebases
- You're interested in concepts like Domain Driven Design, Functional Programming, Single Responsibility Concern etc.
- You are eager to learn new things
Program
Thursday
09:00 - 09:30 Doors open and registration
09:30 - 09:45 Kick-off and introduction
09:45 - 12:15 Isolate your domain
12:15 - 13:00 Lunch
13:00 - 14:30 Isolate your domain - Continued
14:30 - 16:30 Value classes
16:30 - 17:00 Wrap-up
Friday
09:00 - 09:15 Doors open
09:15 - 12:15 Either Monad - Arrow Library
12:15 - 13:00 Lunch
13:00 - 14:30 Either Monad - Continued
14:30 - 16:30 Api/Spi definitions
16:30 - 17:00 Wrap-up
17:00 Drinks and bites
What do I need to bring?
We will take care of most things. You need to bring/have a laptop with:
- Your favorite IDE (We use IntelliJ)
- A JDK installed (We use Temurin-21 installed with sdkman)
- Docker installed
Thursday
๐: 09:30 AM - 12:00 PM
Morning
Host: Jerre van Veluw
Info: A deep dive into isolating your domain; a hands-on approach to refactoring a non-isolated application into one that separates the domain integration layers.
๐: 01:00 PM - 05:00 PM
Afternoon
Host: Jerre van Veluw
Info: Continued deep dive and refactor. Highlights around value classes workshop
Friday
๐: 09:30 AM - 12:00 PM
Friday
Host: Jerre van Veluw
Info: An in-depth exploration of the Either monad with Arrow
๐: 01:00 PM - 05:00 PM
Afternoon
Host: Jerre van Veluw
Info: A bit more monads, API/SPI definitions, wrap-up, and informal drinks and bites to close the workshop.
Event Venue & Nearby Stays
Office Flock. community, Lange Viestraat 2B, Utrecht, Netherlands
EUR 995.00








