← Extractions

Mariusz Gil — The good, the bad and the remote: collaborative domain modeling with EventStorming

At wroclove.rb 2022, PHP software architect Mariusz Gil reflects on running EventStorming workshops after the March 2020 lockdown forced them online. He shares what was lost (unbounded communication, body language, group switching, engagement), what online tools enabled (broader reach, iterative cycles, visualization), and practical advice on tool mastery, backup plans, split-merge facilitation, and making workshop outcomes stick.

Model
claude-opus-4-7
Ingestion
085d31a6
Input tokens
453,727
fresh
282,545
cached
159,709
cache write
11,473
Output tokens
14,477
Duration
257.5s
Roundtrips
11
Tool calls
20
Cost
$0.00
Nodes/edges extracted
20 / 33
Read set (nodes/edges)
97 / 2

Nodes (20)

update Mariusz Gil person
attrs (empty) {"roles" => "software architect, CTO, trainer, consultant", "languages" => "Polish, English", "experience_years" => "...
description Conference speaker. Software architect with 22–23 years of experience who works primarily in PHP (self-describing as 'not the Ruby guy')....
short_description Conference speaker. PHP software architect, EventStorming facilitator, and host of a Polish software-architecture podcast.
update The good, the bad and the remote — collaborative domain modeling with EventStorming talk
description Talk at wroclove.rb 2022. Mariusz Gil's wroclove.rb 2022 talk. Not an introduction to EventStorming itself but a reflection on moving the techn...
short_description Talk at wroclove.rb 2022. Mariusz Gil's wroclove.rb 2022 talk on doing EventStorming remotely.
create Better Software Design podcast resource
kind (empty) resource
name (empty) Better Software Design podcast
slug (empty) better-software-design-podcast
attrs (empty) {"type" => "podcast", "language" => "Polish (with some English episodes)"}
description (empty) Polish-language podcast on software architecture hosted by Mariusz Gil. Mostly Polish but contains a few English epis...
short_description (empty) Mariusz Gil's Polish-language podcast on software architecture.
create Institute of Computer Science, Wrocław company
kind (empty) company
name (empty) Institute of Computer Science, Wrocław
slug (empty) institute-of-computer-science-wroclaw
attrs (empty) {"industry" => "higher education / computer science", "location" => "Wrocław, Poland"}
description (empty) Institute of Computer Science where Mariusz Gil graduated and later taught students how to use software-modeling tech...
short_description (empty) Academic institute at the University of Wrocław; Mariusz Gil's alma mater.
create Miro tool
kind (empty) tool
name (empty) Miro
slug (empty) miro
attrs (empty) {"category" => "service"}
description (empty) Online whiteboard (formerly RealtimeBoard). Mariusz Gil's primary modeling tool in remote EventStorming because it im...
short_description (empty) Online collaborative whiteboard used for remote EventStorming.
create Zoom tool
kind (empty) tool
name (empty) Zoom
slug (empty) zoom
attrs (empty) {"category" => "service"}
description (empty) Video conferencing tool used by Mariusz Gil alongside Miro as his go-to pair for remote EventStorming sessions. He la...
short_description (empty) Video conferencing tool used alongside Miro for remote workshops.
create PHP tool
kind (empty) tool
name (empty) PHP
slug (empty) php
attrs (empty) {"category" => "language"}
description (empty) General-purpose server-side programming language. Mariusz Gil's day-to-day language.
short_description (empty) Server-side scripting language; Mariusz Gil's primary language.
create Online Whiteboard Trend 2020 concept
kind (empty) concept
name (empty) Online Whiteboard Trend 2020
slug (empty) online-whiteboard-trend-2020
attrs (empty) {"category" => "practice"}
description (empty) Trend Mariusz Gil highlights: a Google-trends-style chart for the phrase 'online whiteboard' spiked when lockdowns be...
short_description (empty) March-2020 spike in interest in online whiteboards triggered by the lockdown.
create Remote EventStorming Split-Merge Structure concept
kind (empty) concept
name (empty) Remote EventStorming Split-Merge Structure
slug (empty) remote-eventstorming-split-merge-structure
attrs (empty) {"category" => "practice"}
description (empty) Facilitation structure Mariusz Gil recommends for remote EventStorming. Offline everyone talks in one room; remote (v...
short_description (empty) Facilitation pattern of repeatedly splitting attendees into subgroups and merging their findings.
create Workshop Iteration Cycles (Plan–Work–Rethink–Iterate) concept
kind (empty) concept
name (empty) Workshop Iteration Cycles (Plan–Work–Rethink–Iterate)
slug (empty) workshop-iteration-cycles-plan-work-rethink-iterate
attrs (empty) {"category" => "practice"}
description (empty) Mariusz Gil's argument that remote EventStorming is actually better suited to iterative cycles than its offline count...
short_description (empty) Running remote modeling as repeated small cycles rather than a 1-3 day offline marathon.
create Master Your Tools takeaway
kind (empty) takeaway
name (empty) Master Your Tools
slug (empty) master-your-tools
attrs (empty) {"type" => "recommendation"}
description (empty) Advice from Mariusz Gil: developers typically use maybe 30% of their editor's features; for remote EventStorming you ...
short_description (empty) Don't just know your workshop tools — master them, with a minimal toolset.
create Always Have Backup Plans for Remote Workshops takeaway
kind (empty) takeaway
name (empty) Always Have Backup Plans for Remote Workshops
slug (empty) always-have-backup-plans-for-remote-workshops
attrs (empty) {"type" => "recommendation"}
description (empty) All drawn from Mariusz Gil's experience that same week: silent microphone (computer update broke permissions, require...
short_description (empty) Assume network, audio, power, and data-location will fail — prepare backups for each.
create Add Fun to Keep Remote Workshops Human takeaway
kind (empty) takeaway
name (empty) Add Fun to Keep Remote Workshops Human
slug (empty) add-fun-to-keep-remote-workshops-human
attrs (empty) {"type" => "insight"}
description (empty) Mariusz Gil's secret sauce: seemingly silly additions (icons, smileys, playful visualizations) on the remote modeling...
short_description (empty) Icons, smileys, and playful visuals make hard conversations easier — even with the CEO.
create Single Accountable Owner for Workshop Outcomes takeaway
kind (empty) takeaway
name (empty) Single Accountable Owner for Workshop Outcomes
slug (empty) single-accountable-owner-for-workshop-outcomes
attrs (empty) {"type" => "recommendation"}
description (empty) Mariusz Gil's answer to 'the workshop ended and nothing happened': if responsibility sits with the group, nothing hap...
short_description (empty) Assign one empowered person to push workshop outcomes into delivery.
create Stickies Translate Directly To Code takeaway
kind (empty) takeaway
name (empty) Stickies Translate Directly To Code
slug (empty) stickies-translate-directly-to-code
attrs (empty) {"type" => "insight"}
description (empty) Mariusz Gil's way to convince developers to participate: show them that the orange event stickies become emitted even...
short_description (empty) EventStorming stickies map 1:1 to events, commands, objects, and tests — convincing developers.
create Asynchronous EventStorming Experience question
kind (empty) question
name (empty) Asynchronous EventStorming Experience
slug (empty) asynchronous-eventstorming-experience
attrs (empty) {"answer_summary" => "No experience. A single new sticky spawns new questions/opinions, so async would extend the wor...
description (empty) Audience member asks whether Mariusz Gil has experimented with asynchronous EventStorming — e.g. because of time-zone...
short_description (empty) Has the speaker tried asynchronous (non-overlapping) EventStorming sessions?
create Convincing Developers to Participate in EventStorming question
kind (empty) question
name (empty) Convincing Developers to Participate in EventStorming
slug (empty) convincing-developers-to-participate-in-eventstorming
attrs (empty) {"answer_summary" => "Show stickies translating to code: events, commands, aggregates, acceptance tests, objects. One...
description (empty) Audience member asks how to convince code-focused developers to participate and be proactive in workshops. Answer: de...
short_description (empty) How to get developers to engage and be vocal in modeling workshops.
create Moderating the Merge Phase in Remote Workshops question
kind (empty) question
name (empty) Moderating the Merge Phase in Remote Workshops
slug (empty) moderating-the-merge-phase-in-remote-workshops
attrs (empty) {"answer_summary" => "Use a shared baseline vocabulary; at merge, the facilitator restates each group's result aloud ...
description (empty) Audience member observes that in remote workshops people returning from breakouts often seem to live in different wor...
short_description (empty) How to bring subgroups back together when they seem to live in different worlds.
create Including Unavailable Domain Experts question
kind (empty) question
name (empty) Including Unavailable Domain Experts
slug (empty) including-unavailable-domain-experts
attrs (empty) {"answer_summary" => "Two approaches: annotate unanswered questions and resolve between iterations, or keep busy expe...
description (empty) Audience member asks how Mariusz Gil handles domain experts too busy for the full workshop. Two approaches: (1) annot...
short_description (empty) How to handle people who can't attend full sessions due to schedules.
create Turning Workshop Enthusiasm Into Real Results question
kind (empty) question
name (empty) Turning Workshop Enthusiasm Into Real Results
slug (empty) turning-workshop-enthusiasm-into-real-results
attrs (empty) {"answer_summary" => "Pre-check why the workshop was organized. Afterwards assign a single empowered owner, and frame...
description (empty) Audience member from Poland describes a common pattern: everyone leaves a workshop excited and convinced things will ...
short_description (empty) How to avoid the post-workshop letdown where nothing ships.

Edges (33)

update Mariusz GilauthoredThe good, the bad and the remote — collaborative domain modeling with EventStorming
context (empty) Mariusz Gil delivered this talk at wroclove.rb 2022.
update The good, the bad and the remote — collaborative domain modeling with EventStormingpresented_atwroclove.rb 2022
context (empty) Talk given at wroclove.rb 2022 on 2022-03-11.
create The good, the bad and the remote — collaborative domain modeling with EventStormingaboutEventStorming
context (empty) The talk is about running EventStorming workshops, especially remotely.
relation (empty) about
source_node_id (empty) 66d74771-ad0c-46b7-88af-5c92021cb679
target_node_id (empty) f531d860-d7e6-449c-8289-ffa29995f7d1
create Stickies Translate Directly To Codefrom_talkThe good, the bad and the remote — collaborative domain modeling with EventStorming
context (empty) Answer given during Q&A about convincing developers to engage.
relation (empty) from_talk
source_node_id (empty) 7ced3b04-333d-4bb0-977b-cd6fc03b8c89
target_node_id (empty) 66d74771-ad0c-46b7-88af-5c92021cb679
create Master Your ToolsaboutMiro
context (empty) Mastery advice applies to Miro as the primary workshop tool.
relation (empty) about
source_node_id (empty) 928f911d-9c46-444b-9ce5-2bbdb646c0aa
target_node_id (empty) eb21ba2a-ce2d-4e37-b9d2-9e39ef4bc449
create Master Your ToolsaboutZoom
context (empty) Mastery advice applies to Zoom as the companion tool.
relation (empty) about
source_node_id (empty) 928f911d-9c46-444b-9ce5-2bbdb646c0aa
target_node_id (empty) 46b786cc-6e50-4a08-ae42-7c7e015cf0ec
create The good, the bad and the remote — collaborative domain modeling with EventStormingaboutDomain-Driven Design
context (empty) Gil combines EventStorming with DDD to derive aggregates, acceptance criteria, and object design.
relation (empty) about
source_node_id (empty) 66d74771-ad0c-46b7-88af-5c92021cb679
target_node_id (empty) 6e2f88bd-e521-41a3-91d4-aeb5f8fd2486
create The good, the bad and the remote — collaborative domain modeling with EventStormingaboutRemote EventStorming Split-Merge Structure
context (empty) Talk explains how remote workshops must be structured as repeated split/merge cycles.
relation (empty) about
source_node_id (empty) 66d74771-ad0c-46b7-88af-5c92021cb679
target_node_id (empty) c22c8dea-c45e-433e-96da-9c3d9e4e21b4
create The good, the bad and the remote — collaborative domain modeling with EventStormingaboutWorkshop Iteration Cycles (Plan–Work–Rethink–Iterate)
context (empty) Talk recommends replacing offline marathons with short iterative cycles.
relation (empty) about
source_node_id (empty) 66d74771-ad0c-46b7-88af-5c92021cb679
target_node_id (empty) ddb662d7-38bb-45ca-a1c9-42630372d34a
create The good, the bad and the remote — collaborative domain modeling with EventStormingaboutOnline Whiteboard Trend 2020
context (empty) Talk highlights the March-2020 online-whiteboard surge as the moment remote modeling became viable.
relation (empty) about
source_node_id (empty) 66d74771-ad0c-46b7-88af-5c92021cb679
target_node_id (empty) 6dd7a5cf-1718-4039-b437-295f31f7d7e8
create Mariusz Gilworks_atInstitute of Computer Science, Wrocław
attrs (empty) {"roles" => "alumnus, former instructor"}
context (empty) Gil graduated there and has taught software-modeling techniques to students.
relation (empty) works_at
source_node_id (empty) 08302a51-ffc8-4ba3-862b-d06a7d650774
target_node_id (empty) f6552480-5ebc-4c60-8da1-e2ec7210f792
create Mariusz GilauthoredBetter Software Design podcast
context (empty) Gil hosts this Polish-language software-architecture podcast.
relation (empty) authored
source_node_id (empty) 08302a51-ffc8-4ba3-862b-d06a7d650774
target_node_id (empty) 26ffbfbe-7583-4355-a902-29fc244f4143
create Mariusz GilusesPHP
context (empty) Gil identifies as a PHP developer rather than a Ruby developer.
relation (empty) uses
source_node_id (empty) 08302a51-ffc8-4ba3-862b-d06a7d650774
target_node_id (empty) 7dfa7df2-1da4-482c-8c3b-d5bbabd2eca6
create Mariusz Gilhas_skillEventStorming
attrs (empty) {"level" => "expert"}
context (empty) Uses EventStorming daily to refactor legacy systems and teach modeling.
relation (empty) has_skill
source_node_id (empty) 08302a51-ffc8-4ba3-862b-d06a7d650774
target_node_id (empty) f531d860-d7e6-449c-8289-ffa29995f7d1
create Mariusz Gilhas_skillDomain-Driven Design
attrs (empty) {"level" => "expert"}
context (empty) Combines DDD with EventStorming on daily client work.
relation (empty) has_skill
source_node_id (empty) 08302a51-ffc8-4ba3-862b-d06a7d650774
target_node_id (empty) 6e2f88bd-e521-41a3-91d4-aeb5f8fd2486
create Mariusz GilrecommendsMiro
context (empty) Go-to remote EventStorming tool because it imposes no design limits.
relation (empty) recommends
source_node_id (empty) 08302a51-ffc8-4ba3-862b-d06a7d650774
target_node_id (empty) eb21ba2a-ce2d-4e37-b9d2-9e39ef4bc449
create Mariusz GilusesZoom
context (empty) Pairs Zoom with Miro as his minimal remote-workshop toolset.
relation (empty) uses
source_node_id (empty) 08302a51-ffc8-4ba3-862b-d06a7d650774
target_node_id (empty) 46b786cc-6e50-4a08-ae42-7c7e015cf0ec
create Mariusz GilrecommendsIntroducing EventStorming
context (empty) References Alberto Brandolini's book, noting its remote chapter is 'intentionally left blank'.
relation (empty) recommends
source_node_id (empty) 08302a51-ffc8-4ba3-862b-d06a7d650774
target_node_id (empty) 3eba1d1d-8917-4a38-91c1-77dad0f41209
update Alberto Brandoliniworks_onEventStorming
attrs {"role" => "creator"} {"role" => "inventor"}
context Creator of the EventStorming technique. Brandolini invented EventStorming and wrote the 'Introducing EventStorming' book.
update Alberto BrandoliniauthoredIntroducing EventStorming
context LeanPub book on EventStorming. Author of the book referenced in the talk.
create Eric Evansworks_onDomain-Driven Design
attrs (empty) {"role" => "originator"}
context (empty) Evans' metaphor large-scale structure (from the DDD book) is cited by Gil.
relation (empty) works_on
source_node_id (empty) 7361f3c1-0565-4aed-9cb6-a152905b7615
target_node_id (empty) 6e2f88bd-e521-41a3-91d4-aeb5f8fd2486
create Master Your Toolsfrom_talkThe good, the bad and the remote — collaborative domain modeling with EventStorming
context (empty) First explicit advice of the talk.
relation (empty) from_talk
source_node_id (empty) 928f911d-9c46-444b-9ce5-2bbdb646c0aa
target_node_id (empty) 66d74771-ad0c-46b7-88af-5c92021cb679
create Always Have Backup Plans for Remote Workshopsfrom_talkThe good, the bad and the remote — collaborative domain modeling with EventStorming
context (empty) Derived from Gil's own same-week mishaps (audio, power, data-location).
relation (empty) from_talk
source_node_id (empty) a8bfaf31-d850-47ca-a55b-d8db9e036fc3
target_node_id (empty) 66d74771-ad0c-46b7-88af-5c92021cb679
create Add Fun to Keep Remote Workshops Humanfrom_talkThe good, the bad and the remote — collaborative domain modeling with EventStorming
context (empty) Gil's secret-sauce recommendation illustrated by playful visuals.
relation (empty) from_talk
source_node_id (empty) ee97dc69-4480-433b-808b-2ac36e630eb9
target_node_id (empty) 66d74771-ad0c-46b7-88af-5c92021cb679
create Single Accountable Owner for Workshop Outcomesfrom_talkThe good, the bad and the remote — collaborative domain modeling with EventStorming
context (empty) Answer given during Q&A about keeping faith after workshops end.
relation (empty) from_talk
source_node_id (empty) 333b4fb6-fba3-4ba0-96c6-90ce588dbd3d
target_node_id (empty) 66d74771-ad0c-46b7-88af-5c92021cb679
create Asynchronous EventStorming Experienceasked_atThe good, the bad and the remote — collaborative domain modeling with EventStorming
context (empty) Q&A question from the wroclove.rb 2022 session.
relation (empty) asked_at
source_node_id (empty) 1363ea0a-31a2-4463-9041-244b7233b5a5
target_node_id (empty) 66d74771-ad0c-46b7-88af-5c92021cb679
create Convincing Developers to Participate in EventStormingasked_atThe good, the bad and the remote — collaborative domain modeling with EventStorming
context (empty) Q&A question from the wroclove.rb 2022 session.
relation (empty) asked_at
source_node_id (empty) a0f127e9-16df-4099-be16-014cf9cbddf1
target_node_id (empty) 66d74771-ad0c-46b7-88af-5c92021cb679
create Moderating the Merge Phase in Remote Workshopsasked_atThe good, the bad and the remote — collaborative domain modeling with EventStorming
context (empty) Q&A question from the wroclove.rb 2022 session.
relation (empty) asked_at
source_node_id (empty) 677948b5-90fc-432c-b199-78cf62cadc5f
target_node_id (empty) 66d74771-ad0c-46b7-88af-5c92021cb679
create Including Unavailable Domain Expertsasked_atThe good, the bad and the remote — collaborative domain modeling with EventStorming
context (empty) Q&A question from the wroclove.rb 2022 session.
relation (empty) asked_at
source_node_id (empty) 6326fa21-af0f-4b9c-9e6e-2caa15d36ec3
target_node_id (empty) 66d74771-ad0c-46b7-88af-5c92021cb679
create Turning Workshop Enthusiasm Into Real Resultsasked_atThe good, the bad and the remote — collaborative domain modeling with EventStorming
context (empty) Q&A question from the wroclove.rb 2022 session.
relation (empty) asked_at
source_node_id (empty) d100a736-c9c0-4df9-9a74-f47773253043
target_node_id (empty) 66d74771-ad0c-46b7-88af-5c92021cb679
create Moderating the Merge Phase in Remote WorkshopsaboutRemote EventStorming Split-Merge Structure
context (empty) Directly concerns how to run the merge phase of split-merge cycles.
relation (empty) about
source_node_id (empty) 677948b5-90fc-432c-b199-78cf62cadc5f
target_node_id (empty) c22c8dea-c45e-433e-96da-9c3d9e4e21b4
create Asynchronous EventStorming ExperienceaboutEventStorming
context (empty) Asks whether EventStorming can be run asynchronously.
relation (empty) about
source_node_id (empty) 1363ea0a-31a2-4463-9041-244b7233b5a5
target_node_id (empty) f531d860-d7e6-449c-8289-ffa29995f7d1
create Convincing Developers to Participate in EventStormingaboutEventStorming
context (empty) Asks about developer buy-in for EventStorming workshops.
relation (empty) about
source_node_id (empty) a0f127e9-16df-4099-be16-014cf9cbddf1
target_node_id (empty) f531d860-d7e6-449c-8289-ffa29995f7d1

Read set

97 nodes

concept EventStorming search_nodes resource Introducing EventStorming search_nodes concept Event Store search_nodes concept Event Sourcing search_nodes concept Event Stream search_nodes tool Ruby Event Store search_nodes talk Events events events search_nodes talk The good, the bad and the remote — collaborative domain modeling with EventStorming search_nodes+get_node_edges tool rails_event_store search_nodes tool RealtimeBoard search_nodes concept Domain-Driven Design search_nodes resource Implementing Domain-Driven Design search_nodes resource Domain-Driven Design: Patterns, Principles and Practices search_nodes resource Domain-Driven Design: Tackling Complexity in the Heart of Software search_nodes talk Might & Magic of Domain-Driven Design search_nodes talk The pillars of Domain Driven Design search_nodes question Does DDD require object-oriented programming? search_nodes resource Domain-Driven Rails search_nodes concept DDD Whirlpool search_nodes question How to apply DDD when the client refuses to learn ubiquitous language? search_nodes concept Domain Model (vs Active Record Model) search_nodes question How to do DDD remotely? search_nodes concept Domain Storytelling search_nodes tool Sync Space VR search_nodes concept Context Map search_nodes resource awesome-ddd search_nodes event wroclove.rb 2022 search_nodes event wroclove.rb 2024 search_nodes event wroclove.rb 2023 search_nodes event wroclove.rb 2019 search_nodes event wroclove.rb 2025 search_nodes event wroclove.rb 2026 search_nodes event wroclove.rb 2018 search_nodes talk Mutation testing workshop wroclove.rb 2019 search_nodes talk Building LLM powered applications in Ruby search_nodes talk Data Management With Ruby search_nodes person Alberto Brandolini search_nodes takeaway Name Things To Find Their Properties search_nodes tool interactor search_nodes project Ruby Romania search_nodes concept GitHub Self-Hosted Runner search_nodes person Adam Okoń search_nodes tool Brotli search_nodes company SpaceX search_nodes talk Offline Sandwich Focus Workflow search_nodes concept Handwritten Incentive List and Action Plan search_nodes concept Direct Upload to Cloud search_nodes concept Logux Proxy search_nodes tool webpagetest.org search_nodes company Transloadit search_nodes talk Towards the post framework future search_nodes takeaway Be kind and build useful things search_nodes talk Fix Production Bugs 20x Faster search_nodes talk Lightning Talk on Email Leaks and Senior Developer Titles search_nodes talk Developer, Programmer, and AI search_nodes talk International cooperation in IT teams search_nodes person Mariusz Gil search_nodes+get_node_edges concept Architecture Drivers search_nodes talk Ever shorter feedback loop search_nodes talk Understanding coupling search_nodes takeaway Courage to Try New Patterns search_nodes question Risk of misidentifying domains during legacy re-architecture search_nodes resource Object-Oriented Software Construction search_nodes person Andrzej Krzywda search_nodes person Andrzej Śliwa search_nodes person Eric Evans search_nodes person Julik Tarkhanov search_nodes person DHH search_nodes tool Zencoder search_nodes tool FFmpeg search_nodes company YouTube search_nodes tool streamio-ffmpeg search_nodes resource Rocket Real-Time Benchmark search_nodes project AnyCable search_nodes talk Doctrine of Useful Objects Separate Fact from Fiction in OOD search_nodes concept Hexagonal Architecture search_nodes talk How wroclove.rb impacts developers and companies search_nodes question Does experienced architect's intuition override precise design vocabulary? search_nodes talk Building uls for microservices search_nodes concept Domain as Function from Commands to Events search_nodes question When is a command considered processed? search_nodes concept Events and Commands search_nodes concept Command Handler search_nodes concept Business Process (Event-to-Command) search_nodes question How to persist commands in an event-sourced system? search_nodes concept Command Bus search_nodes takeaway Reuse Command Model Aggregate For Response search_nodes takeaway Handlers Must Control Their Dependencies search_nodes concept Message Store search_nodes concept Cynefin Framework search_nodes takeaway Quantify Wasted Time to Convince the Business search_nodes takeaway Design Must Be Described Precisely Before It Can Be Improved search_nodes takeaway Avoid complexity before fighting it search_nodes resource Drive search_nodes talk Development with axioms search_nodes takeaway Standard Meetings Kill Collaboration search_nodes tool GraphQL search_nodes

2 edges