{"version":"1.0","type":"rich","provider_name":"Acast","provider_url":"https://acast.com","height":250,"width":700,"html":"<iframe src=\"https://embed.acast.com/$/65de32896569fa0017d17653/6a5aaee2f782764c4c80d112?\" frameBorder=\"0\" width=\"700\" height=\"250\"></iframe>","title":"Twilight of the Object God (with Ismael Celis)","description":"<p>On Dead Code, Jared talks with returning guest Ismael, a London-based developer who came to programming from fine arts, about event sourcing, CQRS, and the Ruby stack he's built around them. Ismael frames event sourcing as thinking in time rather than space: instead of persisting current state, you keep an append-only log of facts and reduce over it to derive any view you need, which makes gnarly e-commerce discount rules collapse from a sprawling schema into small functions over a flat event stream. His stack includes Sourced (event sourcing), Sidereal (a command-driven web toolkit where forms fire commands into a queue and workers push re-rendered templates back over SSE via Datastar, and notably it isn't tied to event sourcing at all, since the only interface is a plain command struct), and Step (a DSL that yields a running REST API plus OpenAPI docs, tests, clients, and MCP tools from one definition). He's now reworking Sourced around Dynamic Consistency Boundaries, abandoning DDD's aggregate-root God streams in favor of loading only the events needed to validate a specific decision, which cuts lock contention, because consistency is really about the state you used to make a decision. His advice: use Rails Event Store for real work, but to actually understand it, skip frameworks, put event structs in an array, and reduce.</p><p><br></p><p><strong>Links:</strong></p><p><br></p><p><a href=\"https://ismaelcelis.com/\" rel=\"noopener noreferrer\" target=\"_blank\">Ismael Celis</a></p><p><a href=\"https://bsky.app/profile/ismaelcelis.com\" rel=\"noopener noreferrer\" target=\"_blank\">Ismael on Bluesky</a></p><p><a href=\"https://ismaelcelis.com/posts/2026-05-wip/\" rel=\"noopener noreferrer\" target=\"_blank\">My WIP Ruby stack</a>, the post this episode is built on</p><p><a href=\"https://github.com/ismasan/sourced\" rel=\"noopener noreferrer\" target=\"_blank\">Sourced</a></p><p><a href=\"https://github.com/ismasan/sidereal\" rel=\"noopener noreferrer\" target=\"_blank\">Sidereal</a></p><p><a href=\"https://github.com/ismasan/steppe\" rel=\"noopener noreferrer\" target=\"_blank\">Steppe</a></p><p><a href=\"https://eventlanes.app\" rel=\"noopener noreferrer\" target=\"_blank\">Eventlanes</a></p><p><a href=\"https://dcb.events\" rel=\"noopener noreferrer\" target=\"_blank\">Dynamic Consistency Boundaries</a></p><p><a href=\"https://data-star.dev\" rel=\"noopener noreferrer\" target=\"_blank\">Datastar</a></p><p><a href=\"https://railseventstore.org/\" rel=\"noopener noreferrer\" target=\"_blank\">Rails Event Store</a></p><p><a href=\"https://ismaelcelis.com/posts/event-sourcing-ruby-examples/\" rel=\"noopener noreferrer\" target=\"_blank\">Event Sourcing from the ground up, with Ruby examples</a>, the long-form version of his \"just open a Ruby file\" advice</p><p><a href=\"https://www.youtube.com/watch?v=EgUwnzUJHMA\" rel=\"noopener noreferrer\" target=\"_blank\">Baltic Ruby 2025 talk</a></p><p><a href=\"https://shows.acast.com/dead-code/episodes/event-horizon-with-ismael-celis\" rel=\"noopener noreferrer\" target=\"_blank\">Ismael's first Dead Code episode, \"Event Horizon\"</a></p><p><br></p><p><strong>Dead Code Podcast Links:</strong></p><p><br></p><p><a href=\"https://hachyderm.io/@deadcode\" rel=\"noopener noreferrer\" target=\"_blank\">Mastodon</a></p><p><a href=\"https://twitter.com/DeadCodePod\" rel=\"noopener noreferrer\" target=\"_blank\">X</a></p><p><br></p><p><strong>Jared’s Links:</strong></p><p><br></p><p><a href=\"https://supergood.social/@jared\" rel=\"noopener noreferrer\" target=\"_blank\">Mastodon</a></p><p><a href=\"https://twitter.com/jardonamron\" rel=\"noopener noreferrer\" target=\"_blank\">X</a></p><p><a href=\"https://www.twitch.tv/jardonamron\" rel=\"noopener noreferrer\" target=\"_blank\">twitch.tv/jardonamron</a></p><p><a href=\"https://jardo.dev\" rel=\"noopener noreferrer\" target=\"_blank\">Jared’s Newsletter &amp; Website</a></p><p><br></p><p><a href=\"https://docs.google.com/document/d/1ZXtA_qvye8IxildlzT0iQsVwyvgo_usHWPT5qZjDKR4/edit?tab=t.0\" rel=\"noopener noreferrer\" target=\"_blank\">Episode Transcript</a></p>","author_name":"Jared Norman"}