Pinned
JP Camara
JP Camara
@jpcamara.com
Principal software engineer @Wealthbox. Husband/Father. Health, travel, tech and Ruby enthusiast. Tech blog at https://jpcamara.com Jokes at https://logicalconclusionscomic.com
1.3K followers766 following684 posts
Ha! @rosa.codes kindly merged my batch support PR for Mission Control Jobs last month, and I didn't even realize it! So if you're using SolidQueue batches, MissionControl has you covered github.com/rails/missio...
Check out my demo/doc site for yrby! It has live demos actually syncing real editors and yjs documents. Also features first class Lexxy support Managed by @hatchbox.io 😎 yrby.dev
Totally resonates. I agree with a lot of DHH’s talk, but it just felt like entirely the wrong venue. If not there, you got only that keynote. Without the energy of the following talks and interactions, it’s a bizarre vibe you’re left with about the future of Rails
besides being full of holes, DHH's latest keynote also had near nothing to say to Rails users. cool cool cool. https://jardo.dev/what-about-rails
It makes me sad that AI will write ruby code using Thread.raise. Have they not read my blog posts?! jpcamara.com/2025/12/30/w...
Since i'm speaking now, i've got a ticket up for grabs to @sfruby.com! I'd love to help a fellow Rubyist out, who's maybe been on the fence due to cost. Hit my DMs if that's you! Please only reach out if you truly think you can attend 🙏
JP Camara reposted
Come join us at @sfruby.com this November! Last year’s edition was awesome, and I’m sure this year is going to be even better! ❤️ clouds.sfruby.com/e/2026-bits/...
Plus, aiming to have first-class Lexxy support. yrby has support for tiptap/prosemirror/rhino ootb as well, but lexxy-realtime makes it just a drop-in and a couple lines of code
yrby is getting to a really strong place. I’m running it in production, and I’ve expanded quite a bit beyond my meager early ambitions I want it to be the first-class answer for realtime collaboration in Ruby/rails, without having to reach for node or any other tool
JP Camara reposted
The @sfruby.com conf attendees are getting into trouble. We just had to rescue Chris from a building. Vica, Anton, and Alex are happy to see him, @jpcamara.com found the chopper more exciting, and @skryukov.dev doesn't really know what happened. Buy a ticket before Sep 30 and explore SF with them.
Here’s the SolidQueue batches 2.5 year architectural journey, filled with O(n^2) algorithms, hot row contention, excessive jobs, and much in between. There’s a strong chance you’ll learn a thing or two - I certainly did 😮💨 jpcamara.com/2026/08/31/s...
The docs on SolidQueue batches are… solid 😉 In addition, I wrote up this blog post to dig in a bit further on how to use batches in SolidQueue, including some code inspiration - like splitting a RubyLLM chat into parallel sub agents using batches jpcamara.com/2026/08/24/a...
Hey @konnorrogers.com - not sure if you’ve seen the ruby gem / js package I’ve been working on github.com/jpcamara/yrby I just added a rhino example to the demo app in it and it seems to be working well - would be great to have you try it out!
"Yrb-lite" was a meh name. My initial intent was just to get the most basic thing out, but it's decently robust as it is and i'm having fun expanding it further. Yrb and Y-Ruby aren't available, so I renamed it to "yrby" ("yer-bee"). github.com/jpcamara/yrby
Spent the last couple weeks working on a gem/package to support Yjs in Rails ActionCable/@anycable.io The result is yrb-lite: github.com/jpcamara/yrb... I'm pretty happy with where it is at so far! Still got work to do, but def give it a try if you're curious about realtime editing
Spent the last couple weeks working on a gem/package to support Yjs in Rails ActionCable/@anycable.io The result is yrb-lite: github.com/jpcamara/yrb... I'm pretty happy with where it is at so far! Still got work to do, but def give it a try if you're curious about realtime editing
Next up I need to refine onboarding so it's easier for others to get started quickly. You can find the gems and package here: rubygems.org/gems/yrb-lite rubygems.org/gems/yrb-lit... npmjs.com/package/yrb-...
Currently in ActiveJob, `wait` in `retry_on` accepts a proc, but it is only handed the execution count. I think access to the error can also be useful when calculating the next wait time. If you agree, give it a like! github.com/rails/rails/...
It’s late, and you get alerts that web requests are failing. Page loads hang endlessly. The server isn’t responding, requests are queueing up. What do you do?! "When good threads go bad" is a deep dive into stuck threads, how to deal with them, and what to avoid. jpcamara.com/2025/12/30/w...
My @sfruby.com talk on real-time collaboration with AnyCable, YJS and Rails is up! I felt really happy with how it came out - let me know what you think because I can't watch myself talk 😂 youtu.be/J68QOBLEItY
JP Camara reposted
JP Camara reposted
@sfruby.com Day 3 was the perfect community break! Started with a Lucasfilm museum walk (thank you, @inazarova.bsky.social), then joined the Golden Gate Bridge bike tour with @kanejamison.com, @jpcamara.com, @jeremysmith.co, @adarsh.ruby.social.ap.brid.gy and so many amazing Rubyists.
Had an incredible time at @sfruby.com Fantastic talks, amazing people, and great vibes across the board So much to dig into and unpack around tooling, AI, development patterns and our collective ownership in the future of Rails Community day was such a great finish
I'm not sure @ankane.bsky.social is human - maybe some kind of open source being from the future 😂 I said to a colleague - "we'll see, but it's ankane, so it's entirely possible it'll get done soon". Less than an hour later, it was updated 🤯
If you are anywhere near SF Ruby Conf and haven't bought a ticket yet, the time is now! This conf is gonna be 🔥🔥🔥
🪩⚠️ Alert: @sfruby.com is in 10 days ! ! ! What's inside: 💎 two dozen new and hot Ruby startups like @bolt.new 💎 authors of RubyLLM, Herb, Active Agent, Inertia Rails, ZJIT, and more 💎engineers scaling Ruby and Rails at Chime, Cisco, Intercom, Shopify 💎afterparty by GitButler 🪩 (see part 2)
I finally got around to reading "How does Sidekiq really work?" by Dan Svetlov dansvetlov.me/sidekiq-inte.... Dang, it did not disappoint. What an enjoyable and in-depth read! A few things that stuck out to me 1/11 🧵
If you read my article on ruby thread interrupts and bitmasks, this will be very familiar! jpcamara.com/2025/10/22/b... I asked koichi if signals were the inspiration, and he confirmed it. It was fun to see the connection and what can be an inspiration for central language apis! 10/11 🧵
I finally got around to reading "How does Sidekiq really work?" by Dan Svetlov dansvetlov.me/sidekiq-inte.... Dang, it did not disappoint. What an enjoyable and in-depth read! A few things that stuck out to me 1/11 🧵
I finally got around to reading "How does Sidekiq really work?" by Dan Svetlov dansvetlov.me/sidekiq-inte.... Dang, it did not disappoint. What an enjoyable and in-depth read! A few things that stuck out to me 1/11 🧵
You can change the default return value of a hash by using `default=` on the hash. docs.ruby-lang.org/en/3.4/Hash..... Now instead of nil, you'll return whatever `default` you provided! Very handy. 7/11 🧵
I finally got around to reading "How does Sidekiq really work?" by Dan Svetlov dansvetlov.me/sidekiq-inte.... Dang, it did not disappoint. What an enjoyable and in-depth read! A few things that stuck out to me 1/11 🧵
The full reasons for that are explained in docs.ruby-lang.org/en/3.4/signa..., and have to do with a concept called "reentrancy". But mike bypasses all of that by using using IO.pipe. The io writer is safe to write to in the trap, so that's all it does, it writes the signal. 4/11 🧵
I finally got around to reading "How does Sidekiq really work?" by Dan Svetlov dansvetlov.me/sidekiq-inte.... Dang, it did not disappoint. What an enjoyable and in-depth read! A few things that stuck out to me 1/11 🧵
1) @mike.contribsys.com is a exceedingly clever! 2) I've used Ruby for 12+ years now, and I learned new Hash methods from this article 3) The design of Ruby thread interrupts seem heavily influenced by linux signals 4) My next article "when good threads go bad" will pair nicely with this! 2/11 🧵
1) @mike.contribsys.com you clever devil, that Signal.trap approach is ingenious! In my post on thread interrupts, I mentioned that you cannot use rails.logger inside of a signal.trap: bit.ly/43c23Ym. Similarly, you cannot use the Sidekiq logger in trap, which is inconvenient. 3/11 🧵
JP Camara reposted
Replying to @lucianghinda.com
3️⃣ @jpcamara published a new article about Bitmasks, Threads and Interrupts: Concurrent, colorless Ruby jpcamara.com/2025/10/22/...
JP Camara reposted
Today is the last day to grab a GA ticket for SF Ruby! Read our new blog post for a preview: evilmartians.com/chronicles/w...