By popular demand, we've met this summer with engineers interested in software design and concurrency in our Cluj-Napoca office 📍after a successful session held in Bucharest. This time, Gabriel Bornea, software engineer & team lead and Tiberiu Tofan, software engineer at ING Hubs Romania shared their insights and learnings with the local engineering community.
Agenda
🔶 Errors, the forgotten part of your domain | Gabriel Bornea | check out his talk recording ▶️ here (from the Bucharest session)
'Errors are usually treated as an afterthought — logged, ignored, or handled inconsistently. But they’re more than just failures; errors represent important domain events that can shape how systems behave and respond to the real world.
In this talk, we will look at how modeling errors explicitly can make applications more predictable, resilient, and easier to maintain. We’ll see how to use sum types and typed errors; and how types like Either<E, A> and IO<E, A> help us manage errors without relying on exceptions.
We will also cover ways to accumulate multiple errors, design systems that can recover gracefully from failures, and improve observability with structured error handling. By the end of this session, we’ll have practical techniques to turn errors into a first-class part of our domain, leading to more robust systems and a better development experience.'
🔶 Own your design: functional principles vs the framework | Tiberiu Tofan | check out his talk recording ▶️ here (from the Bucharest session)
'Frameworks like Spring can tempt engineers to apply various shortcuts that compromise clean design, such as primitive obsession and exception-based error handling. We will discover how to reclaim control by using Domain-Driven Design, hexagonal architecture, and functional programming principles.
In this session, we will go through practical strategies to keep domain logic clean, reduce coupling, and adopt functional error handling. These ensure design remains at the core of the solution, irrespective of what the framework encourages.'
🎤 Speakers
Gabriel (Gabi) Bornea, software engineer & team lead at ING Hubs Romania
Gabriel has been working with JVM languages for over 15 years; he’s into functional programming, automatic testing and reactive programming. He has a strong background in Java, Kotlin, and TypeScript, but still enjoys the occasional dive into Scala or F#.
He contributes to open-source projects whenever he can and is one of the most popular ING Hubs Romania speakers at various conferences where he discusses the benefits and practicality of functional programming. Gabriel enjoys sharing practical insights on building resilient, maintainable systems—focusing on despaghettifying code to make it more robust, readable, and easy to work with.
Tiberiu (Tibi) Tofan, software engineer at ING Hubs Romania
Tiberiu has been with ING Hubs Romania for six years now and is experienced in JVM – mostly Java, Scala, and Kotlin. In the two decades (and counting) on the JVM front, Tiberiu’s focus has been on solid architecture, functional design, and maintainable code.
He is dedicated to building solutions that endure over time, prioritising reliability and simplicity.
_____________________
ING Hubs hangouts is a series of talks, masterclasses, and workshops by ING Hubs Romania, delivering opportunities for learning, networking, and sharing on technology trends, programming languages and related topics.