Building an API from the Domain Outwards

When building backend services, it is very easy to start with the framework. Create the controller. Generate the database entity. Add the repository. Then somewhere between HTTP requests and database tables, try to find a place where the business logic fits. I have built many systems this way. It works. Until it doesn’t. Over time I have started moving in the opposite direction: Start with the domain. Everything else is just an adapter. ...

July 5, 2026 · 3 min · Johan Basson

Railway-Oriented Programming Without the Magic

A practical introduction to Railway-Oriented Programming in Kotlin using Arrow’s Either. Learn how to replace exception-driven business logic with explicit, composable error handling.

July 2, 2026 · 4 min · Johan Basson

Discovering Railway-Oriented Programming

A talk by Scott Wlaschin changed the way I think about error handling and composing business logic in Kotlin.

June 15, 2025 · 3 min · Johan Basson

How Functional Programming Changed the Way I Write Kotlin

Functional programming didn’t change the language I use. It changed the way I think about designing software.

June 10, 2025 · 2 min · Johan Basson