<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><link>https://bsky.app/profile/ismaelcelis.com</link><title>@ismaelcelis.com - Ismael Celis</title><item><link>https://bsky.app/profile/ismaelcelis.com/post/3ml7b63cazk24</link><description>Vibe-coding a chess app with my Ruby Event Sourcing and reactive web app libraries. All interaction is server-rendered, which makes things like highlighting legal moves simple. And time-traveling, of course, because always show off if it&#39;s easy!</description><pubDate>06 May 2026 17:49 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3ml7b63cazk24</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3ml6z5mm5ns26</link><description>I may have gotten a bit carried away with this work https://github.com/ismasan/sidereal/pull/3&#xA;&#xA;[contains quote post or other embedded content]</description><pubDate>06 May 2026 15:25 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3ml6z5mm5ns26</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3ml6gisbzus25</link><description>Great in-depth article on how PHP&#39;s Ecotone framework scales event-sourced projections. This is very similar to the design I arrived at. IMO partitioned event reactors are non-negotiable. https://blog.ecotone.tech/when-one-worker-cant-keep-up-scaling-projections/</description><pubDate>06 May 2026 09:52 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3ml6gisbzus25</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mkzmwninjk24</link><description>Sidereal&#39;s scheduled triggers (WiP) are 🔥. You define when commands are dispatched, on a fixed or recurring schedule. The example is a bounded schedule that starts 20 seconds after boot, recurs every 3 seconds, and ends 10 seconds later.</description><pubDate>04 May 2026 12:03 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mkzmwninjk24</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mks5vpp2ss2p</link><description>I&#39;ve been working on three different Ruby libraries that solve (in my mind) different problems, but together make for my dream toolkit.&#xA;&#xA;Sourced - event sourcing and workflows&#xA;Steppe - self-documenting HTTP APIs (and MCPs)&#xA;Sidereal - command driven, reactive apps&#xA;&#xA;I have a clear integration plan now</description><pubDate>01 May 2026 12:46 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mks5vpp2ss2p</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mkrz5sqgp22e</link><description>Sidereal&#39;s built-in filesystem store now supports scheduled commands, and retries with exponential back-off built on top of them. All done via Ruby fibers and atomic file renames.</description><pubDate>01 May 2026 11:21 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mkrz5sqgp22e</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mkqctawfck2o</link><description>This simplifies most of the things I&#39;ve been patching together for the last year honker.dev&#xA;https://honker.dev</description><pubDate>30 Apr 2026 19:09 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mkqctawfck2o</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mkpqee7pq22l</link><description>Sidereal&#39;s built-in filesystem store now supports scheduling commands to run later. Here, starting a donation sets a command to run X seconds later.</description><pubDate>30 Apr 2026 13:38 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mkpqee7pq22l</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mknnvghodc2g</link><description>Working on filesystem-backed Store and Pubsub implementations, so that out of the box Sidereal works across multiple processes. Goes well with SQLite for your own data.&#xA;Later I might add optional networked implementations (Redis, NATS, etc)&#xA;&#xA;[contains quote post or other embedded content]</description><pubDate>29 Apr 2026 17:49 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mknnvghodc2g</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mkl5tw3l6s2r</link><description>A command-based web framework means you can send commands to the running app from anywhere, and the UI will just update accordingly. Down with the tyranny of the request/response cycle!</description><pubDate>28 Apr 2026 17:56 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mkl5tw3l6s2r</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mkcv7shtb22r</link><description>Listen to this man!&#xA;&#xA;[contains quote post or other embedded content]</description><pubDate>25 Apr 2026 11:00 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mkcv7shtb22r</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mkcuhsv6es2r</link><description>I had a great time at Haggis Ruby in Glasgow. My (first) Event Sourcing and Ruby workshop packed a little more material than the time permitted, but I hope it was useful to people! Big thanks to James and the organising team.</description><pubDate>25 Apr 2026 10:47 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mkcuhsv6es2r</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mk6n57vue22u</link><description>Two weeks of (intense) family holidays followed by two conference talks in a row. This will be an April to remember.</description><pubDate>23 Apr 2026 18:25 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mk6n57vue22u</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mk3nbkpgdk2z</link><description>Last week’s talk at @wrocloverb.com is already up (that was fast!). Building reactive systems with Ruby and Event Sourcing. Big thanks to the team! youtu.be/Q6owchf4WEo&#xA;https://youtu.be/Q6owchf4WEo</description><pubDate>22 Apr 2026 13:50 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mk3nbkpgdk2z</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mk3l7uyxr22z</link><description>The landscape on the way to Scotland is just so ridiculously postcard-pretty. I want to get off the train at every random little village and just walk around for a day.</description><pubDate>22 Apr 2026 13:13 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mk3l7uyxr22z</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mk355jkimc2z</link><description>Off to Haggis Ruby in Glasgow!</description><pubDate>22 Apr 2026 09:01 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mk355jkimc2z</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mjyuw6oqzk2a</link><description>This is a great summary of the zeitgeist I&#39;ve been exploring in Ruby for the last few years. It feels like it&#39;s just the beginning! https://dev.to/siy/the-quiet-consensus-5hhk</description><pubDate>21 Apr 2026 11:28 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mjyuw6oqzk2a</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mjysh6tnfk2f</link><description>This is the model for a demo app I used for my Event Sourcing talk at @wrocloverb.com . Simple, explicit step-by-step flow threading together all parties to a workflow, from backend to UI screens.</description><pubDate>21 Apr 2026 10:44 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mjysh6tnfk2f</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mjwhlsdfgk2l</link><description>Just use a queue justuseaqueue.com&#xA;https://justuseaqueue.com</description><pubDate>20 Apr 2026 12:25 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mjwhlsdfgk2l</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mjw7mg57b22a</link><description>Compilable event models. What an ambitious project! www.weltenwanderer.dev&#xA;https://www.weltenwanderer.dev</description><pubDate>20 Apr 2026 10:02 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mjw7mg57b22a</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mjuimrhids2g</link><description>This will always be present day science fiction to me</description><pubDate>19 Apr 2026 17:38 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mjuimrhids2g</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mjugi7qozc27</link><description>I’m never late to airports anymore. Is this what being an adult feels like?</description><pubDate>19 Apr 2026 16:59 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mjugi7qozc27</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mjrbmvbuac2g</link><description>My event sourcing talk at @wrocloverb.com went well, I think! At least I didn’t trip on a cable on stage, or anything.</description><pubDate>18 Apr 2026 10:55 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mjrbmvbuac2g</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mjr3it6gos2g</link><description>Running last minute checks before my talk, such as “is my zip open?”</description><pubDate>18 Apr 2026 09:05 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mjr3it6gos2g</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mjmpt67z6k2g</link><description>Never in the history of coding have a library&#39;s bugs been fixed as quickly as two days before the conference talk about said library.</description><pubDate>16 Apr 2026 15:25 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mjmpt67z6k2g</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mjmmuhxymk2m</link><description>I’m in Poland at a self-service restaurant. I don’t speak polish. No idea what I’m eating, but it’s delicious</description><pubDate>16 Apr 2026 14:32 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mjmmuhxymk2m</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mjlql5subs2b</link><description>That moment when you have to travel super early in the morning and your jet-lagged child refused to go to sleep until 2:30am the previous night.😴</description><pubDate>16 Apr 2026 06:06 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mjlql5subs2b</guid></item><item><link>https://bsky.app/profile/ismaelcelis.com/post/3mjkcrinxz22m</link><description>I&#39;ve said the world doesn&#39;t need yet another web framework and yet here we are, writing one. Said that, it&#39;s feeling pretty nice to be able roll-out reactive, realtime apps so easily in Ruby.</description><pubDate>15 Apr 2026 16:26 +0000</pubDate><guid isPermaLink="false">at://did:plc:af5ndzzxe7p5vbpmotcxmt6n/app.bsky.feed.post/3mjkcrinxz22m</guid></item></channel></rss>