← 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 Panelpresented_atwroclove.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 BellwareauthoredEvent-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 LaddauthoredEvent-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ł PacanaauthoredEvent-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 KrzywdaauthoredEvent-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 Bellwareworks_onEventide
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 Bellwareworks_onMessageDB
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 Laddworks_onEventide
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ł Pacanaworks_onrails_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ł Pacanaworks_atArkency
context Arkency developer who created the internal aggregates repository. Arkency developer who introduces rails_event_store into legacy projects.
update Andrzej Krzywdaworks_atArkency
context Krzywda is Arkency's founder and identifies the arkency rewriting practice in the talk. Arkency founder; moderated the panel.
create Scott Bellwareworks_atBrightworks
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 Laddworks_atBrightworks
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 BrightworksusesEventide
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 Brightworksworks_onNeuron
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 NeuronusesEventide
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 EventideusesMessageDB
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 PanelaboutDomain-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 PanelaboutEvent 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 PanelaboutEvent-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 PanelaboutPub/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 PanelaboutAggregate 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 PanelaboutCoupling
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 PanelaboutActive 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 PanelaboutAutonomous 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 PanelaboutCelebrity 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 PanelaboutStructural 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 PanelaboutROM
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 PanelaboutTest 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 Panelaboutrails_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 PanelaboutEventide
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 Panelaboutrails_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_atEvent-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?aboutEvent-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 Eventsfrom_talkEvent-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 EventsaboutAggregate 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/Subfrom_talkEvent-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/SubaboutPub/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/SubaboutEvent 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 Qualityfrom_talkEvent-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 QualityaboutTest 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 HTTPfrom_talkEvent-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 HTTPaboutAutonomous 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 Appsfrom_talkEvent-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 AppsaboutEventide
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 Wayfrom_talkEvent-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 Logicfrom_talkEvent-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 LogicaboutActive 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 LogicaboutROM
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 BellwarerecommendsDomain-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 Bellwarerelated_toCelebrity 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ł PacanarecommendsDomain-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ł Pacanahas_skillEvent 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 Bellwarehas_skillEvent 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 Laddhas_skillEvent 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 Arkencyusesrails_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 Arkencyusesrails_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