Working with LLMs is such a weird mix. Simultaneously a feeling of loss of ownership, and abundance of ambition.
Video of my July LRUG talk on command-driven Ruby apps (and all the goodies that fall out of the pattern) ismaelcelis.com/posts/2026-0...
Dead Code podcast (take 2), LRUG Command-Driven talk
I was on the Dead Code podcast again, as well as a live talk at LRUG, talking about event sourcing and command-driven apps in Ruby
ismaelcelis.com
From the Thinking in Systems book: “boundaries are problem-dependent, evanescent, and messy”. In the context of programming, unpacking that one sentence risks unraveling the entire concept of Object Orientation.
More progress in my Ruby library for data structures, typing and coercions. This time making it easier to compose your own code into these pipelines.
There’s better and worse CRUD frameworks, but CRUD itself is a very limited view of the world and chock full of foot guns, so not even the most finely crafted CRUD framework will keep your feet safe.
Did you know? The term “suicidal empathy” is just post-hoc rationalisation for being an asshole.
Elixir would have made the event sourcing part easier. Ismael Celis picked Ruby anyway, specifically so it would be harder. The constraint was the point.
If you haven't submitted a talk proposal for Helvetic Ruby yet, now's the time! The Call for Proposals closes on July 31. Join us in Zurich for Helvetic Ruby, November 19–20, 2026 🇨🇭🍫🧀🗻 Not planning to speak? Early Bird tickets are still available, too! helvetic-ruby.ch
Helvetic Ruby | November 19-20, 2026, Zürich
A single-track conference for Ruby enthusiasts and professionals from Switzerland and abroad.
helvetic-ruby.ch
I’ll be speaking at Tiny Ruby Conf in Helsinki this October helsinkiruby.fi/tinyruby/202...
Your request is my command: Reactive, command-driven Ruby apps
How architecting Ruby apps around asynchronous commands unlocks real-time, reactive and multiplayer apps.
helsinkiruby.fi
If you say anything I don’t like, you’re a traitor to western civilisation. Clearly.
Not a lot of time for side projects these days, but I started rethinking Steppe, my REST API-building Ruby gem, on top of the new APIs for typed codecs in Plumb, but typing and validations library. bsky.app/profile/isma...
Then there's "encoders", which are two-way transformations. Here, turning HTML form booleans into Ruby booleans
Event sourcing gets a reputation for being heavy. Ismael Celis says the core of it fits in a Ruby file and an array. Everything else (the eventual consistency, the runtime, the workflows) is an optional rabbit hole.
I’m not really into Nolan films but his style really does work in the Odyssey IMO. I enjoyed it.
Try to explain the this service to a Victorian-era person, in terms they’d understand genome.computer
The Genome Computer Company
The fastest, safest way to download and read your genome. Ordering in the US, Canada, UK, Australia, New Zealand, and Singapore with CLIA- and CAP-accredited sequencing. Delivered as a .genome bundle ...
genome.computer
My daily exercise routine: go to the gym, just sit on a bench asking physics questions to ChatGPT.
Ruby app streaming server-rendered HTML table cells to 3 browser windows over SSE and Datastar. For no good reason.
Preparing a talk at the London Ruby User Group tomorrow. This is a reactive, server-rendered dataflow workflow in Ruby. The DAG component shows how steps run as soon as their dependencies are satisfied by other steps, so concurrent execution is self-organising.
I'm improving the integration hooks in my Ruby toolkit for reactive apps, and it's looking good! I've also made my Sourced library work as a regular job queue as well as an event sourced backend. So now you can have mix both styles with a single backend.
Claude just one-shotted a Mermaid visitor for Plumb Ruby types 😆. Here, a composition of labeled Any values to represent a checkout flow.
Often in programming, simplicity is found in identifying the superset of the problem. Ex: 1. web interactions are workflows. A single-page form is just a one-step workflow. Optimise for workflows. 2. HTTP responses are streams. A one-off response is just a very short stream. Optimise for streams.
So, in Ruby news: inspired by @joel.drapper.me work on Literal, I've been adding subtyping support to my Plumb library. There's a bunch of things I wanted to add but I didn't have the proper vocabulary to even think about them.
following up on the release of Hanami 3 about a week ago, here's my conversation (that was recorded last month) about the developments in the Hanami/Hanakai ecosystem https://shows.acast.com/dead-code/episodes/bloom-of-the-undying-with-tim-riley
“An event is not a database row. That is the single most important sentence in this whole post” patchlevel.dev/blog/cutting...
Cutting Your Events the Right Way
One of the first things that trips up newcomers to event sourcing is figuring out how to cut their events. Should it be one big event or many small ones? There is no universal answer, it depends on yo...
patchlevel.dev
Another lovely article by Rico Fritzsche on why thinking in events is beneficial whether you use event sourcing or not ricofritzsche.me/thinking-in-...
Thinking in Events
Separating the Modeling of What Happened from the Decision of How to Store It
ricofritzsche.me