Skip to main content
🚀 Taking AI from prototype to production? Find the architecture, GPU, security and governance gaps before they become incidents. Get a Production AI Readiness Assessment
Luca Berton pointing at the Welcome to DevWorld sign outside RAI Amsterdam in February 2025
Conferences

DevWorld Conference 2025 Amsterdam: A Throwback

A throwback to DevWorld 2025 at RAI Amsterdam: modelling side effects as effects, Event Sourcing vs Transaction Script, the AI track and the evening.

LB
Luca Berton
¡ 3 min read

I’ve written about DevWorld 2026 already, but I never published my photos from the year before. So here’s a throwback. DevWorld Conference 2025 ran on 27 and 28 February 2025 at RAI Amsterdam, and these photos are from the first day.

Luca Berton pointing at the Welcome to DevWorld sign outside RAI Amsterdam

The way in: “Welcome to DevWorld”, with a QR code to download the conference app.

The main hall

Inside, the main stage was in a large dark hall, with big screens on both sides of the stage and more screens hanging above the seats.

Luca Berton in front of the DevWorld 2025 main stage at RAI Amsterdam, with the speaker shown on large screens

The main stage, early in the afternoon.

Duck Stage: “Modeling side effects as Effects”

Most of my photos are from one session on Duck Stage 1. It’s an open stage under the glass roof of the hall. The audience wore wireless headphones, a setup that lets several stages run side by side in one space without the sound overlapping.

The talk was “Modeling side effects as Effects”, and the code on the slides was F#. The idea was simple: describe a side effect as data, then run it somewhere else. The first slide I photographed declared type Effect = SendEmail of string and a perform function of type Effect -> Async<Result<Cmd list, Error>>. Inside perform, the comments said where the real work happens: “call to the email server” and “use try/catch, process errors…”.

The Duck Stage 1 at DevWorld 2025 with a full audience in wireless headphones and the slide Modeling side effects as Effects

“Modeling side effects as Effects” on Duck Stage 1: the effect is a type, and perform is the only place that touches the email server.

The next slide put Event Sourcing and Transaction Script side by side, using the same object definition for both:

  • decide: State -> Cmd -> Result<Event list * Effect list, Error>
  • evolve: State -> Event -> State
  • perform: Effect -> Async<Result<Cmd list, Error>>
  • init: State * Effect list

The two handle functions on the slide differed only in how they stored data. The Event Sourcing version loaded the events, rebuilt state with List.fold object.evolve, called decide, then appended the new events. The Transaction Script version loaded the current state from a database (falling back to object.init), ran the same decide and evolve, then saved the new state. Both returned the effects to perform afterwards.

DevWorld 2025 slide comparing Event Sourcing and Transaction Script handlers in F#, with the speaker at the lectern

Event Sourcing on the left, Transaction Script on the right: same domain logic, different persistence.

My take: this is the part I find most useful for platform work. If decide and evolve are pure and return effects instead of running them, you can test the business logic without mocks. You can also change how you store data later without rewriting it.

Where Event Modeling comes from

Another slide put the talk in context with a short history of the ideas behind it:

  • Event Modeling: Adam Dymitruk, 2018
  • Event Storming: Alberto Brandolini, 2013
  • CQRS: Greg Young, 2007
  • Event Sourcing: Martin Fowler, 2005
  • Domain-Driven Design: Eric Evans, 2003

Next to the list was an Event Modeling diagram with swimlanes of coloured sticky notes, credited on the slide to Yves Goeleven.

DevWorld 2025 Event Modeling slide listing Event Modeling, Event Storming, CQRS, Event Sourcing and Domain-Driven Design with their authors and years

Fifteen years of modelling ideas on one slide, from Domain-Driven Design in 2003 to Event Modeling in 2018.

The AI track

Later, the AI track stage was getting ready for its next session. The screen read “The AI track is made possible by Kickstart AI”, and people were putting their headphones on.

DevWorld 2025 AI track stage at RAI Amsterdam with the screen reading The AI track is made possible by Kickstart AI

The AI track stage between sessions, sponsored by Kickstart AI.

By the 2026 edition, AI had moved onto the keynote stage, as I wrote in my posts on the AI infrastructure keynote and Checkmarx’s AppSec session. In 2025, AI had its own sponsored track.

The evening

The day carried on into the evening. A DevWorld banner hung across a street, with balloons strung across the street behind it: “We hope you’re having a good time!”

Luca Berton under a DevWorld banner reading We hope you're having a good time, hung across a street at night

Luca Berton raising a glass in a bar lit in pink and green on the evening of DevWorld 2025

The DevWorld banner over the street, and a drink to end day one.

Looking back

My take, looking back at the Duck Stage slides: you don’t need a framework to separate decisions from side effects. You need a type for the effect and the discipline to run it in one place. The silent-stage format is also a practical way to fit more talks into one open hall.

Free 30-min Production AI consultation

Book Now