← Extractions

Event-Driven Rails Panel — Eventide vs rails_event_store at wroclove.rb 2023

Panel discussion at wroclove.rb 2023 pitting the Eventide team (Scott Bellware, Nathan Ladd) against the Arkency / rails_event_store camp (Paweł Pacana, moderator Andrzej Krzywda). They debate DDD vocabulary, the aggregate-root-as-code-pattern mistake, autonomous components vs microservices, event sourcing as a side-effect of pub/sub, coupling/cohesion as the real measure of productivity, and Rails Way vs design way.

Model
claude-opus-4-7
Ingestion
476ca596
Input tokens
210,964
fresh
132,508
cached
58,842
cache write
19,614
Output tokens
14,036
Duration
207.9s
Roundtrips
4
Tool calls
23
Cost
$0.00
Nodes/edges extracted
21 / 57
Read set (nodes/edges)
168 / 0

Nodes (21)

create Event-Driven Rails Discussion Panel talk
kind (empty) → talk
name (empty) → Event-Driven Rails Discussion Panel
slug (empty) → event-driven-rails-discussion-panel
attrs (empty) → {"date" => "2023-03-31", "type" => "panel"}
description (empty) → Panel at wroclove.rb 2023 framed as 'something between a discussion and a confrontation'. Moderator Andrzej Krzywda w...
short_description (empty) → wroclove.rb 2023 panel confronting Eventide and rails_event_store approaches to event-driven Rails.
create Event Sourcing Is A Side Effect Of Pub/Sub takeaway
kind (empty) → takeaway
name (empty) → Event Sourcing Is A Side Effect Of Pub/Sub
slug (empty) → event-sourcing-is-a-side-effect-of-pub-sub
attrs (empty) → {"type" => "insight"}
description (empty) → Scott Bellware's claim on the panel: pub/sub matters, event sourcing is merely 'a smart way to do pub/sub' over a dif...
short_description (empty) → Pub/sub is the real architectural win; event sourcing just follows naturally.
create Autonomous Component concept
kind (empty) → concept
name (empty) → Autonomous Component
slug (empty) → autonomous-component
attrs (empty) → {"category" => "architecture"}
description (empty) → Scott Bellware's preferred replacement for 'microservice'. An autonomous component is a piece of software that broadc...
short_description (empty) → Self-contained piece of software that broadcasts signals and reacts to broadcasts, not a microservice.
create Celebrity Geek Subjugation concept
kind (empty) → concept
name (empty) → Celebrity Geek Subjugation
slug (empty) → celebrity-geek-subjugation
attrs (empty) → {"category" => "practice"}
description (empty) → Scott Bellware's thesis: wherever you find a celebrity geek you also find subjugation. In order to keep a captive aud...
short_description (empty) → Pattern where popular tools are kept mentally taxing to hold their audience captive.
create Structural Physics of Software concept
kind (empty) → concept
name (empty) → Structural Physics of Software
slug (empty) → structural-physics-of-software
attrs (empty) → {"category" => "methodology"}
description (empty) → Scott Bellware's framing: software is the only discipline where you can ignore the laws of physics and the machine st...
short_description (empty) → Framing software design as obedience to universal structural laws (coupling, cohesion, transparency).
create Brightworks company
kind (empty) → company
name (empty) → Brightworks
slug (empty) → brightworks
attrs (empty) → {"industry" => "software consultancy"}
description (empty) → North American consultancy behind the Eventide project. Builds new systems only — doesn't take on legacy applications...
short_description (empty) → North American software consultancy co-run by Scott Bellware and Nathan Ladd.
create Neuron project
kind (empty) → project
name (empty) → Neuron
slug (empty) → neuron
attrs (empty) → {"status" => "active", "license" => "closed-source"}
description (empty) → Product for a Silicon Valley venture-capital law firm, built by Scott Bellware, Nathan Ladd and team at Brightworks. ...
short_description (empty) → Venture-capital law-firm product built by Brightworks using Eventide.
update Scott Bellware person
attrs {"role" => "co-maintainer, Eventide"} → {"role" => "co-founder, Eventide project"}
description Conference speaker and long-time TDD/BDD practitioner. Began working with Nathan Ladd in 2015; the pair's dissatisfac... → Conference speaker and long-time TDD/BDD practitioner. Self-describes as co-founder of the Eventide project and Messa...
short_description TDD/BDD thought leader, co-maintainer of Eventide, collaborator on Test Bench. → TDD/BDD thought leader, co-founder of Eventide and MessageDB.
update Nathan Ladd person
description Conference speaker, co-principal / co-founder of the Eventide project (a toolkit for event sourcing and autonomous se... → Conference speaker, co-principal of the Eventide project (toolkit for event sourcing and autonomous services), co-mai...
update Paweł Pacana person
attrs {"role" => "developer"} → {"role" => "developer", "focus" => "legacy software"}
description Arkency developer (referred to in the talk as 'Pavel') who created the internal 'aggregates' repository, structuring ... → Arkency developer (referred to in talks as 'Pavel'/'Pavo'). Maintainer and regular releaser of rails_event_store for ...
short_description Arkency developer; creator of the aggregates reference repository. → Arkency developer; maintainer of rails_event_store and creator of the aggregates reference repo.
update Arkency company
description Ruby consultancy founded by Andrzej Krzywda that maintains rails_event_store, the aggregate_root gem, and the aggrega... → Ruby consultancy founded by Andrzej Krzywda that maintains rails_event_store, the aggregate_root gem, and the aggrega...
update Eventide project
description Collection of over 30 Ruby libraries co-maintained by Nathan Ladd and collaborators (incl. 'Scott') for implementing ... → Collection of 30+ Ruby libraries co-founded by Scott Bellware and Nathan Ladd for implementing event-sourced, event-d...
create Immediate benefit of event-driven architecture? question
kind (empty) → question
name (empty) → Immediate benefit of event-driven architecture?
slug (empty) → immediate-benefit-of-event-driven-architecture
attrs (empty) → {"answer_summary" => "Productivity. Event-driven architecture delivers loose coupling and high cohesion, the structur...
description (empty) → Audience asks how to convince someone with only a basic grasp — that components communicate via events — why event-dr...
short_description (empty) → Audience question asking for a short pitch for event-driven architecture.
create Aggregates Should Not Emit Events takeaway
kind (empty) → takeaway
name (empty) → Aggregates Should Not Emit Events
slug (empty) → aggregates-should-not-emit-events
attrs (empty) → {"type" => "warning"}
description (empty) → Scott and Nathan's recurring position: aggregate was never intended to be a software/code pattern. Turning aggregate-...
short_description (empty) → Making aggregate-root a code pattern that emits events is a mistake — it's not what aggregate meant.
create Setup Code Reveals System Quality takeaway
kind (empty) → takeaway
name (empty) → Setup Code Reveals System Quality
slug (empty) → setup-code-reveals-system-quality
attrs (empty) → {"type" => "insight"}
description (empty) → Scott's rule of thumb: the whole point of TDD isn't `expect` or `should_equal` — those are just checks — it's the set...
short_description (empty) → The amount of setup code in a test — not its assertions — tells you how good your system is.
create Microservices Were Never About HTTP takeaway
kind (empty) → takeaway
name (empty) → Microservices Were Never About HTTP
slug (empty) → microservices-were-never-about-http
attrs (empty) → {"type" => "insight"}
description (empty) → Scott's historical reframing: microservices descended from service-oriented architecture once IBM, Microsoft and Orac...
short_description (empty) → The 'micro' in microservices just meant 'no IBM/Microsoft/Oracle' — not HTTP between every component.
create Don't Cram Eventide Into Legacy Apps takeaway
kind (empty) → takeaway
name (empty) → Don't Cram Eventide Into Legacy Apps
slug (empty) → don-t-cram-eventide-into-legacy-apps
attrs (empty) → {"type" => "warning"}
description (empty) → Nathan Ladd's warning during the closing exchange: Brightworks only takes on new systems, and Eventide is designed wi...
short_description (empty) → Adopting Eventide in an existing messy codebase is playing with fire.
create Rails Way vs Design Way takeaway
kind (empty) → takeaway
name (empty) → Rails Way vs Design Way
slug (empty) → rails-way-vs-design-way
attrs (empty) → {"type" => "lesson-learned"}
description (empty) → Scott's closing framing: the real battle isn't Eventide vs. rails_event_store — it's the Rails Way vs. the Design Way...
short_description (empty) → The Rails Way trades two weeks of speed for months of hell by ignoring structural design laws.
create ORMs Entangle Business Logic takeaway
kind (empty) → takeaway
name (empty) → ORMs Entangle Business Logic
slug (empty) → orms-entangle-business-logic
attrs (empty) → {"type" => "warning"}
description (empty) → Joint position from the panel (both teams agree): ORMs used to host business logic fuse concepts together with no bou...
short_description (empty) → ORMs are structurally prone to being a worm with no boundaries between organs.
update Active Record concept
description Rails' default persistence pattern. Panel's critique: it keeps data only in its latest state (no history, can't rebui... → Rails' default persistence pattern. Panel's critique: callbacks like `after_create` hide whole business processes beh...
update Domain-Driven Design concept
description Approach originating in Eric Evans' 2003/2004 book 'Tackling Complexity in the Heart of Software'. Aligns business an... → Approach originating in Eric Evans' 2003/2004 book 'Tackling Complexity in the Heart of Software'. Aligns business an...

Edges (57)

create Event-Driven Rails Discussion Panel → presented_at → wroclove.rb 2023
context (empty) → Panel held at wroclove.rb 2023 on 2023-03-31.
relation (empty) → presented_at
source_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
target_node_id (empty) → f1adcf6d-780c-4418-8a81-c88da8b4e631
create Scott Bellware → authored → Event-Driven Rails Discussion Panel
attrs (empty) → {"role" => "panelist"}
context (empty) → Panelist representing Eventide.
relation (empty) → authored
source_node_id (empty) → a230a950-7b3c-4b0a-a4d3-da2800c903bc
target_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
create Nathan Ladd → authored → Event-Driven Rails Discussion Panel
attrs (empty) → {"role" => "panelist"}
context (empty) → Panelist representing Eventide; also gave the Test Bench talk earlier the same day.
relation (empty) → authored
source_node_id (empty) → c2047c7c-2316-4c38-af4f-1e8a78f80206
target_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
create Paweł Pacana → authored → Event-Driven Rails Discussion Panel
attrs (empty) → {"role" => "panelist"}
context (empty) → Panelist representing rails_event_store and Arkency.
relation (empty) → authored
source_node_id (empty) → 5e812f9d-e89d-4969-83f1-9d9fdfd36436
target_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
create Andrzej Krzywda → authored → Event-Driven Rails Discussion Panel
attrs (empty) → {"role" => "moderator"}
context (empty) → Arkency moderator who introduced the panel and steered the questions.
relation (empty) → authored
source_node_id (empty) → 337ffd2c-5847-4b23-9ef7-e8f70aa4c66a
target_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
update Scott Bellware → works_on → Eventide
attrs {"role" => "co-maintainer"} → {"role" => "co-founder"}
context Co-maintainer of Eventide; collaborated on Test Bench used throughout the project. → Self-described co-founder of the Eventide project.
create Scott Bellware → works_on → MessageDB
attrs (empty) → {"role" => "co-founder"}
context (empty) → Co-founder of MessageDB alongside Nathan Ladd.
relation (empty) → works_on
source_node_id (empty) → a230a950-7b3c-4b0a-a4d3-da2800c903bc
target_node_id (empty) → 78f59d89-9ba4-40bd-b4b4-1f898046e3fd
update Nathan Ladd → works_on → Eventide
context Co-principal of the Eventide project; Test Bench and its fixtures are used throughout Eventide. → Co-principal of Eventide with Scott Bellware.
create Paweł Pacana → works_on → rails_event_store
attrs (empty) → {"role" => "maintainer"}
context (empty) → Maintainer and release manager of rails_event_store for 5+ years.
relation (empty) → works_on
source_node_id (empty) → 5e812f9d-e89d-4969-83f1-9d9fdfd36436
target_node_id (empty) → 9e5cb718-6f86-4937-9b4c-eb77da3aede8
update Paweł Pacana → works_at → Arkency
context Arkency developer who created the internal aggregates repository. → Arkency developer who introduces rails_event_store into legacy projects.
update Andrzej Krzywda → works_at → Arkency
context Krzywda is Arkency's founder and identifies the arkency rewriting practice in the talk. → Arkency founder; moderated the panel.
create Scott Bellware → works_at → Brightworks
context (empty) → Runs the North American consultancy that builds the Neuron product.
relation (empty) → works_at
source_node_id (empty) → a230a950-7b3c-4b0a-a4d3-da2800c903bc
target_node_id (empty) → 71c8acc9-269b-4b37-84b9-17a0a2bc42e6
create Nathan Ladd → works_at → Brightworks
context (empty) → Works with Scott at Brightworks on Neuron and Eventide.
relation (empty) → works_at
source_node_id (empty) → c2047c7c-2316-4c38-af4f-1e8a78f80206
target_node_id (empty) → 71c8acc9-269b-4b37-84b9-17a0a2bc42e6
create Brightworks → uses → Eventide
context (empty) → Builds Neuron on top of Eventide with close to 400 repos for 15 developers.
relation (empty) → uses
source_node_id (empty) → 71c8acc9-269b-4b37-84b9-17a0a2bc42e6
target_node_id (empty) → 702f4d95-01a7-4836-9562-8c14b01a4b73
create Brightworks → works_on → Neuron
context (empty) → Brightworks team builds the Neuron product for a Silicon Valley venture-capital law firm.
relation (empty) → works_on
source_node_id (empty) → 71c8acc9-269b-4b37-84b9-17a0a2bc42e6
target_node_id (empty) → 260a9dfc-8e5f-42d9-824e-21ed56b75e8a
create Neuron → uses → Eventide
context (empty) → Neuron is implemented as autonomous components on Eventide + MessageDB + Rails.
relation (empty) → uses
source_node_id (empty) → 260a9dfc-8e5f-42d9-824e-21ed56b75e8a
target_node_id (empty) → 702f4d95-01a7-4836-9562-8c14b01a4b73
update Eventide → uses → MessageDB
context MessageDB is the Postgres-backed message store shipped as part of Eventide. → Eventide uses MessageDB as its underlying Postgres message store.
create Event-Driven Rails Discussion Panel → about → Domain-Driven Design
context (empty) → Extensive opening debate on whether DDD is worth using or is a celebrity-geek cult.
relation (empty) → about
source_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
target_node_id (empty) → 6e2f88bd-e521-41a3-91d4-aeb5f8fd2486
create Event-Driven Rails Discussion Panel → about → Event Sourcing
context (empty) → Both camps self-identify as event-sourcing practitioners and debate its framing.
relation (empty) → about
source_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
target_node_id (empty) → 687c9da2-de87-4fb2-a758-c7498f394fd5
create Event-Driven Rails Discussion Panel → about → Event-Driven Architecture
context (empty) → Central topic: event-driven architecture as the productivity win, of which event sourcing is a side effect.
relation (empty) → about
source_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
target_node_id (empty) → efb4cdd4-e26e-438e-8251-79aac4161d04
create Event-Driven Rails Discussion Panel → about → Pub/Sub Messaging
context (empty) → Scott argues pub/sub is the primary pattern and event sourcing is a derivative.
relation (empty) → about
source_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
target_node_id (empty) → b483686a-1e8d-4ccf-bcd3-318d16fb27b3
create Event-Driven Rails Discussion Panel → about → Aggregate Root
context (empty) → Discussion of why aggregates should not be a code pattern that emits events.
relation (empty) → about
source_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
target_node_id (empty) → 09c37511-f144-42de-a3e8-abae18862f96
create Event-Driven Rails Discussion Panel → about → Coupling
context (empty) → Scott's central design claim is about coupling/cohesion at the subatomic level.
relation (empty) → about
source_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
target_node_id (empty) → f74165f3-dae3-4470-a25f-cb314ece3e03
create Event-Driven Rails Discussion Panel → about → Active Record
context (empty) → Critique of callbacks and ORM-hidden coupling revealed by test setup code.
relation (empty) → about
source_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
target_node_id (empty) → 633eeea8-2026-4906-b512-1e239f3db152
create Event-Driven Rails Discussion Panel → about → Autonomous Component
context (empty) → Eventide documentation will be updated to prefer 'autonomous components' over 'microservices'.
relation (empty) → about
source_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
target_node_id (empty) → a8794eea-16e5-436c-9d2e-c574df90a7b5
create Event-Driven Rails Discussion Panel → about → Celebrity Geek Subjugation
context (empty) → Scott's core critique of DDD, React, Tailwind, DevOps, Rails etc.
relation (empty) → about
source_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
target_node_id (empty) → 8efbb467-c5b6-447d-8285-c1751671131e
create Event-Driven Rails Discussion Panel → about → Structural Physics of Software
context (empty) → Scott frames software design as obedience to universal structural laws.
relation (empty) → about
source_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
target_node_id (empty) → 39c6956f-e362-49ac-bd28-07c8c71e477c
create Event-Driven Rails Discussion Panel → about → ROM
context (empty) → Panel agrees ROM suffers the same 'entangled worm' problem as Active Record when used for business logic.
relation (empty) → about
source_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
target_node_id (empty) → ed5b54a4-5527-4498-aa67-bc4d90d98d87
create Event-Driven Rails Discussion Panel → about → Test Driven Development
context (empty) → Scott ties event-driven architecture to TDD via testability/transparency and setup-code quality signal.
relation (empty) → about
source_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
target_node_id (empty) → 1c2ff90e-39e6-496e-b94d-6234d545033e
create Event-Driven Rails Discussion Panel → about → rails_event_store
context (empty) → Arkency's rails_event_store is one of the two tools represented on the panel.
relation (empty) → about
source_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
target_node_id (empty) → 9e5cb718-6f86-4937-9b4c-eb77da3aede8
create Event-Driven Rails Discussion Panel → about → Eventide
context (empty) → Eventide is one of the two tools represented on the panel.
relation (empty) → about
source_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
target_node_id (empty) → 702f4d95-01a7-4836-9562-8c14b01a4b73
create Event-Driven Rails Discussion Panel → about → rails_event_store/ecommerce
context (empty) → Paweł references the e-commerce reference application Arkency uses to teach DDD/CQRS/event sourcing in Rails.
relation (empty) → about
source_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
target_node_id (empty) → aefe7a37-ebc5-4840-b03a-8bcca89a6ddd
create Immediate benefit of event-driven architecture? → asked_at → Event-Driven Rails Discussion Panel
context (empty) → Audience Q&A question during the panel.
relation (empty) → asked_at
source_node_id (empty) → 7fbf1887-352f-4144-b2fd-faa220b5f458
target_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
create Immediate benefit of event-driven architecture? → about → Event-Driven Architecture
context (empty) → Question is explicitly about the benefit of event-driven architecture.
relation (empty) → about
source_node_id (empty) → 7fbf1887-352f-4144-b2fd-faa220b5f458
target_node_id (empty) → efb4cdd4-e26e-438e-8251-79aac4161d04
create Aggregates Should Not Emit Events → from_talk → Event-Driven Rails Discussion Panel
context (empty) → Scott and Nathan's position repeated from their 2018 Explore DDD talk and expanded on the panel.
relation (empty) → from_talk
source_node_id (empty) → f46db0d6-d8de-4fc8-8d80-ecb96afe71ee
target_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
create Aggregates Should Not Emit Events → about → Aggregate Root
context (empty) → Critique of aggregate root used as an event-emitting code pattern.
relation (empty) → about
source_node_id (empty) → f46db0d6-d8de-4fc8-8d80-ecb96afe71ee
target_node_id (empty) → 09c37511-f144-42de-a3e8-abae18862f96
create Event Sourcing Is A Side Effect Of Pub/Sub → from_talk → Event-Driven Rails Discussion Panel
context (empty) → Core claim from Scott during the event-driven architecture answer.
relation (empty) → from_talk
source_node_id (empty) → d766d1dd-2e6f-4a36-b728-a68a685dd95b
target_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
create Event Sourcing Is A Side Effect Of Pub/Sub → about → Pub/Sub Messaging
context (empty) → Takeaway elevates pub/sub as the primary pattern.
relation (empty) → about
source_node_id (empty) → d766d1dd-2e6f-4a36-b728-a68a685dd95b
target_node_id (empty) → b483686a-1e8d-4ccf-bcd3-318d16fb27b3
create Event Sourcing Is A Side Effect Of Pub/Sub → about → Event Sourcing
context (empty) → Characterizes event sourcing as derivative of pub/sub.
relation (empty) → about
source_node_id (empty) → d766d1dd-2e6f-4a36-b728-a68a685dd95b
target_node_id (empty) → 687c9da2-de87-4fb2-a758-c7498f394fd5
create Setup Code Reveals System Quality → from_talk → Event-Driven Rails Discussion Panel
context (empty) → Scott's heuristic explained during the callbacks/testing discussion.
relation (empty) → from_talk
source_node_id (empty) → 4a980b20-aa79-4f31-b241-61bf3d0f64df
target_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
create Setup Code Reveals System Quality → about → Test Driven Development
context (empty) → Reframes TDD as being about setup minimization, not assertion syntax.
relation (empty) → about
source_node_id (empty) → 4a980b20-aa79-4f31-b241-61bf3d0f64df
target_node_id (empty) → 1c2ff90e-39e6-496e-b94d-6234d545033e
create Microservices Were Never About HTTP → from_talk → Event-Driven Rails Discussion Panel
context (empty) → Scott's historical reframing during the microservice clarification.
relation (empty) → from_talk
source_node_id (empty) → d4ef3075-ec3d-43a2-892e-ed07b07a27f9
target_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
create Microservices Were Never About HTTP → about → Autonomous Component
context (empty) → Replacement vocabulary Scott prefers over 'microservices'.
relation (empty) → about
source_node_id (empty) → d4ef3075-ec3d-43a2-892e-ed07b07a27f9
target_node_id (empty) → a8794eea-16e5-436c-9d2e-c574df90a7b5
create Don't Cram Eventide Into Legacy Apps → from_talk → Event-Driven Rails Discussion Panel
context (empty) → Nathan's explicit warning during the closing exchange.
relation (empty) → from_talk
source_node_id (empty) → b0898f8a-3de6-495c-bae4-ad2d49256d53
target_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
create Don't Cram Eventide Into Legacy Apps → about → Eventide
context (empty) → Guidance on where Eventide does and does not fit.
relation (empty) → about
source_node_id (empty) → b0898f8a-3de6-495c-bae4-ad2d49256d53
target_node_id (empty) → 702f4d95-01a7-4836-9562-8c14b01a4b73
create Rails Way vs Design Way → from_talk → Event-Driven Rails Discussion Panel
context (empty) → Scott's closing framing of the panel's deeper disagreement.
relation (empty) → from_talk
source_node_id (empty) → 6f8177b4-1d70-421b-8ef1-e239a9d8bc46
target_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
create ORMs Entangle Business Logic → from_talk → Event-Driven Rails Discussion Panel
context (empty) → Joint position both camps reached at the end of the panel.
relation (empty) → from_talk
source_node_id (empty) → f3bff12a-7e6a-4346-8168-e181cef05772
target_node_id (empty) → e67bcd5c-6f37-421e-8277-25e382caad55
create ORMs Entangle Business Logic → about → Active Record
context (empty) → Canonical example of an entangling ORM.
relation (empty) → about
source_node_id (empty) → f3bff12a-7e6a-4346-8168-e181cef05772
target_node_id (empty) → 633eeea8-2026-4906-b512-1e239f3db152
create ORMs Entangle Business Logic → about → ROM
context (empty) → Panel notes ROM inherits the same problems despite marketing.
relation (empty) → about
source_node_id (empty) → f3bff12a-7e6a-4346-8168-e181cef05772
target_node_id (empty) → ed5b54a4-5527-4498-aa67-bc4d90d98d87
create Scott Bellware → recommends → Domain-Driven Design
context (empty) → Endorses the essence/fundamentals of DDD but not its subculture and elaborate tactical patterns.
relation (empty) → recommends
source_node_id (empty) → a230a950-7b3c-4b0a-a4d3-da2800c903bc
target_node_id (empty) → 6e2f88bd-e521-41a3-91d4-aeb5f8fd2486
create Scott Bellware → related_to → Celebrity Geek Subjugation
context (empty) → Scott articulated this critique on the panel.
relation (empty) → related_to
source_node_id (empty) → a230a950-7b3c-4b0a-a4d3-da2800c903bc
target_node_id (empty) → 8efbb467-c5b6-447d-8285-c1751671131e
create Paweł Pacana → recommends → Domain-Driven Design
context (empty) → Arkency embraces DDD vocabulary and techniques in rails_event_store projects.
relation (empty) → recommends
source_node_id (empty) → 5e812f9d-e89d-4969-83f1-9d9fdfd36436
target_node_id (empty) → 6e2f88bd-e521-41a3-91d4-aeb5f8fd2486
create Paweł Pacana → has_skill → Event Sourcing
attrs (empty) → {"level" => "expert"}
context (empty) → Five+ years maintaining rails_event_store and introducing event sourcing into legacy Rails codebases.
relation (empty) → has_skill
source_node_id (empty) → 5e812f9d-e89d-4969-83f1-9d9fdfd36436
target_node_id (empty) → 687c9da2-de87-4fb2-a758-c7498f394fd5
create Scott Bellware → has_skill → Event Sourcing
attrs (empty) → {"level" => "expert"}
context (empty) → Co-founder of Eventide and MessageDB, long-time event-sourcing practitioner.
relation (empty) → has_skill
source_node_id (empty) → a230a950-7b3c-4b0a-a4d3-da2800c903bc
target_node_id (empty) → 687c9da2-de87-4fb2-a758-c7498f394fd5
create Nathan Ladd → has_skill → Event Sourcing
attrs (empty) → {"level" => "expert"}
context (empty) → Co-principal of Eventide.
relation (empty) → has_skill
source_node_id (empty) → c2047c7c-2316-4c38-af4f-1e8a78f80206
target_node_id (empty) → 687c9da2-de87-4fb2-a758-c7498f394fd5
create Arkency → uses → rails_event_store
context (empty) → Arkency maintains and uses rails_event_store with clients.
relation (empty) → uses
source_node_id (empty) → f8b4b616-ffd6-4eaa-a7b9-fdc07bb2cb27
target_node_id (empty) → 9e5cb718-6f86-4937-9b4c-eb77da3aede8
create Arkency → uses → rails_event_store/ecommerce
context (empty) → Arkency's reference e-commerce project used to teach DDD/CQRS/ES in Rails.
relation (empty) → uses
source_node_id (empty) → f8b4b616-ffd6-4eaa-a7b9-fdc07bb2cb27
target_node_id (empty) → aefe7a37-ebc5-4840-b03a-8bcca89a6ddd

Read set

168 nodes

talk Enterprise Rails Panel search_nodes tool rails_event_store search_nodes event Rails World search_nodes resource Domain-Driven Rails search_nodes talk Applying CQRS & Event Sourcing on Rails applications search_nodes talk No-build Utopia: Modern User Experiences with Rails & Web Standards search_nodes resource Rails Architect Master Class search_nodes talk When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails search_nodes takeaway rails_event_store is the most productive DDD tool in Ruby search_nodes talk Counterintuitive Rails pt. 1 search_nodes project Eventide search_nodes tool Ruby Event Store search_nodes talk Introduction To Event Sourcing How To Use It With Ruby search_nodes tool TTY toolkit search_nodes tool EventMachine search_nodes takeaway Recommend Reading The Eventide Project search_nodes tool Entity Store search_nodes question Can parts of Eventide, Rails Event Store and Trailblazer be combined in one project? search_nodes question Do Rails adopters write handlers instead of controller actions? search_nodes tool Rails Event Store Event Browser search_nodes concept Event Store search_nodes project rails_event_store/ecommerce search_nodes project Event Store (project) search_nodes person Scott Bellware search_nodes tool ChatGPT search_nodes person Scott Bell search_nodes takeaway Name Things To Find Their Properties search_nodes tool RealtimeBoard search_nodes company SpaceX search_nodes concept GitHub Self-Hosted Runner search_nodes tool jq search_nodes takeaway Be kind and build useful things search_nodes takeaway Spoken Test Feedback with say + iTerm Triggers search_nodes talk An Introduction to Test Bench search_nodes person Nathan Ladd search_nodes tool TestBench search_nodes concept Test Bench Fixture search_nodes resource Rocket Real-Time Benchmark search_nodes tool test-prof search_nodes person Paweł Pacana search_nodes company Arkency search_nodes person Adam Okoń search_nodes tool actions/upload-artifact search_nodes tool knapsack_pro search_nodes tool Argon2 search_nodes talk Events events events search_nodes tool Pundit 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 concept DDD Whirlpool search_nodes question How to apply DDD when the client refuses to learn ubiquitous language? search_nodes concept Event Sourcing search_nodes takeaway Event Sourcing Is Not A Silver Bullet search_nodes takeaway Event Sourcing Mind Shift Trade-off search_nodes takeaway Use CQRS And Event Sourcing Independently search_nodes takeaway Hiring For Event Sourcing Trade-off search_nodes takeaway Event Sourcing Enables Distribution search_nodes concept Snapshotting search_nodes takeaway Event Sourcing Is About State Not Distribution search_nodes question Can you do DDD without event sourcing? search_nodes event wroclove.rb 2023 search_nodes event wroclove.rb 2024 search_nodes event wroclove.rb 2022 search_nodes event wroclove.rb 2025 search_nodes event wroclove.rb 2019 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 International cooperation in IT teams search_nodes concept Message Store search_nodes tool MessageDB search_nodes question NoSQL vs Postgres for an event store search_nodes tool PgBouncer search_nodes tool PgHero search_nodes tool CockroachDB search_nodes tool Citus search_nodes concept Logux Proxy search_nodes concept MVCC Trade-offs in Postgres vs MySQL search_nodes person Andrzej Krzywda search_nodes person Andrzej Śliwa search_nodes concept Aggregate Root Anti-Pattern search_nodes tool aggregate_root search_nodes concept Polymorphic Aggregate search_nodes concept Aggregate Root search_nodes takeaway Contribute to Arkency aggregates repository search_nodes concept Aggregator search_nodes project aggregates repository search_nodes takeaway DDD Is More Than Aggregates search_nodes concept Entity Coupled To Messaging search_nodes takeaway Don't Conflate Entity, Handler and Projection search_nodes concept Service Autonomy search_nodes concept Pub/Sub Messaging search_nodes question Centralised vs per-service event store? search_nodes concept CQRS search_nodes concept Distributed Monolith search_nodes takeaway Use at-least-once plus idempotence to build self-healing systems search_nodes takeaway Bounded Contexts Are Natural Microservice Seams search_nodes concept Event-Driven Architecture search_nodes talk Adventures in durable execution search_nodes talk Building uls for microservices search_nodes takeaway Don't kill dependencies — use backoff search_nodes takeaway Bounded Contexts Are Not Microservices search_nodes concept Saga Pattern search_nodes takeaway Silver Bullet Anti-Pattern search_nodes takeaway Tune retry duration to the actor search_nodes tool Sync Space VR search_nodes question Turning Workshop Enthusiasm Into Real Results search_nodes takeaway Buy Faster Hardware search_nodes talk Offline Sandwich Focus Workflow search_nodes talk Forms Are Dead: Building Agentic Workflows in Ruby search_nodes takeaway Add Fun to Keep Remote Workshops Human search_nodes takeaway Avoid Active Record callbacks for media processing search_nodes concept Active Record search_nodes concept respond_to Anti-Pattern search_nodes question Should touch on belongs_to be avoided in complex apps? search_nodes takeaway Prefer a simple top-to-bottom worker search_nodes concept destroy_all vs delete_all search_nodes concept MVC Modularity Violations search_nodes concept N+1 Queries search_nodes concept ActiveRecord Encryption search_nodes takeaway Split Active Record into write and read objects search_nodes tool ROM search_nodes tool Sequel search_nodes tool DBM / SDBM / GDBM search_nodes talk Fantastic Databases and Where to Find Them search_nodes tool JSON API Resources search_nodes tool Representable search_nodes tool activerecord-multi-tenant search_nodes concept Test Driven Development search_nodes concept Params-Driven Development search_nodes takeaway TDD Is Process And Philosophy, Not Mechanics search_nodes concept Axiom-Driven Development search_nodes talk Development with axioms search_nodes takeaway Avoid params-driven development search_nodes takeaway Cut Test Suites Under 15 Minutes search_nodes talk Ever shorter feedback loop search_nodes concept Rails Testing Pyramid (Ivan's version) search_nodes takeaway Test Code Can Be Generalized Like Production Code search_nodes resource Better Software Design podcast search_nodes question How to detect coupling in a large existing project? search_nodes talk Understanding coupling search_nodes concept Coupling search_nodes takeaway Metrics Alone Don't Fix a Coupled Legacy Codebase search_nodes concept Dependency Injection search_nodes concept Architecture Drivers search_nodes concept Aspect-Oriented Programming search_nodes resource Object-Oriented Software Construction search_nodes resource awesome-ddd search_nodes person Eric Evans search_nodes takeaway Risks of DDD: Hierarchy, Perfectionism, Constraints search_nodes talk How wroclove.rb impacts developers and companies search_nodes takeaway Introduce bounded-context controller namespaces search_nodes takeaway Don't create controllers at Rails boot time search_nodes concept Flat Model Structure search_nodes tool acts_as_api search_nodes takeaway Don't Bring MVC-CRUD Thinking To Services search_nodes concept Command Form search_nodes concept Strong Parameters search_nodes company Shopify search_nodes tool Jumpstart Pro search_nodes takeaway Don't reuse service objects across applications search_nodes project monolith framework search_nodes