Live updates from background jobs in Rails 8 with Turbo Streams
Wiring Turbo Streams so scan jobs update the page as they run, and the cable.yml async adapter gotcha that swallowed every broadcast from the worker.
Notes on the software, games, and music coming out of Imperfect Systems.
RSS feedWiring Turbo Streams so scan jobs update the page as they run, and the cable.yml async adapter gotcha that swallowed every broadcast from the worker.
Moving the GitHub scan to a background job after it outgrew the proxy timeout, and the rescue_from LIFO ordering gotcha that broke my discard path.
Making every merge deploy staging automatically: a self-hosted runner, four walls in a row, and the Kamal secrets gotcha that took the longest to crack.
Writing down the rules for what to do when CI goes red on a solo Rails project, including the GitHub limit that turned the merge gate into a comment.
The GraphQL request I planned to intercept never fires: Medium server-renders its Apollo state. Three wrong turns and the wrappedJSObject fix that shipped.
Medium's API has no concept of a scheduled post. Phase 1: model the state manually with an append-only enum, and see if the friction justifies automation.
Building the cross-blog post list in blog-manager. SQLite enums, filter forms, and one trick to keep query params honest.
Building the post-sync engine for blog-manager. Net::HTTP, fine-grained PATs, and digging into __NEXT_DATA__ to verify the answer.
Starting blog-manager: a Rails Blog model with Active Record Encryption for per-blog credentials, and a CRUD UI I'd actually enjoy using.
Page 16 of 16