Workshop-Tage 2026

Iryna Dohndorf

Iryna Dohndorf is a software engineer at Karakun, where she works on customer projects using the Java technology stack. With strong technical expertise, genuine curiosity, and a deep passion for computer science, she develops technologies that tackle the challenges of modern companies and today’s society.

An enthusiastic interdisciplinary researcher and developer, Iryna has conducted research in modeling and optimization at TU Dortmund and has worked on software for autonomous driving, government agencies, and EU projects supporting the advancement of organic farming.

Beyond her project work, Iryna is deeply engaged in the international developer community. She is an active member of the BaselOne Program Committee and the Devoxx UK Program Committee,and a frequent speaker at international conferences. Through her talks, writing, and community
involvement, she aims to inspire developers, encourage critical thinking about emerging technologies,
and contribute to the sustainable growth of the global Java ecosystem.

Outside of work, she enjoys spending time with family and friends, and is passionate about swimming, skiing, and—most recently—cycling.

You can learn more about her software development work and research at: https://iryna-dohndorf.netlify.app


Session

09-10
09:00
480min
What Doesn't Kill Your JVM Makes It Stronger: From Probabilistic Testing to Resilience Patterns
Iryna Dohndorf, Mike Mannion

Software does not simply break — it reveals. Every fault, latency spike, and cascading failure is a signal about the assumptions baked into your design. The question is whether your system — and your test suite — is equipped to hear it.
This workshop fuses two complementary disciplines into one intensive, hands-on session:
Probabilistic Testing with Punit — the statistical tooling that lets Java teams measure, enforce, and version-control the resilience properties of non-deterministic systems: LLM integrations, ML inference, distributed services, and randomized algorithms that traditional binary pass/fail tests were never designed to handle.
Resilience Engineering for Java — the design principles, and architectural patterns that turn pressure into performance, like circuit breakers, fault injection, and TDD-driven failure handling.

The thread connecting both halves is a concrete end-to-end scenario: an AI-enriched Java application, where non-deterministic LLM calls meet production-grade resilience requirements. Participants work through the full arc — from writing probabilistic test specifications and latency percentile assertions, to implementing and verifying the resilience patterns that make those specifications pass.
Participants leave with a concrete vocabulary, a proven pattern catalogue, and running JUnit 5 tests that express and verify resilience as first-class distributional contracts, and not vague aspirations.

Room K91