JP Camara
banner
jpcamara.com
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
Yea I didn’t want to `raise` any suspicions with such a long gap between posts, but sometimes in life you’ve just got to `handle_interrupt`s 😜
December 31, 2025 at 3:32 PM
Finally got it released, just before the new year 🥲
December 30, 2025 at 9:14 PM
a man with a beard and long hair looks surprised
ALT: a man with a beard and long hair looks surprised
media.tenor.com
December 30, 2025 at 1:32 PM
Awesome! Can you say which one??
December 27, 2025 at 3:30 PM
TIL if you want to return the duration in seconds, returning it as an Integer is a _hard_ requirement

There is a _specific_ check that the class is Integer. If you accidentally return a float, Sidekiq ignores it and reverts to its built-in delay policy. Be careful!
December 19, 2025 at 3:47 AM
Also very curious! I was big into warp for a while, but a) they literally still don't support full terminal history and cap at 20k lines and b) feels like they're getting further and further from prioritizing the actual terminal part
i'm back on iterm2 again, but i'd love a better tool
November 10, 2025 at 1:25 PM
ok nice to know you are still human 😂😂😂!
November 2, 2025 at 7:41 PM
Amazing, thanks for putting a name to it @byroot.bsky.social ! I'm gonna dig into this more
November 2, 2025 at 7:08 PM
"Today I ran Brussels half marathon and it was 21.1km of pure joy!"

I have never heard a marathon described as "pure joy" 😂 It must have truly been something special!
November 2, 2025 at 7:04 PM
Thanks for the reference! I'm gonna check this out more. Zeitwerk is something I think would be super interesting to read through - I bet there's some unique stuff you've had to do in there
November 2, 2025 at 7:03 PM
4) "When good threads go bad" coming soon!

Dan shows how jobs are executed in the `process` method, which has this hefty section utilizing `handle_interrupt`. He does a great job describing how it works, and my next article will dig deeper into if you're interested!

11/11 🧵
November 2, 2025 at 2:27 AM
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 🧵
November 2, 2025 at 2:27 AM
3) The design of Ruby thread interrupts seem heavily influenced by linux signals

When referring to the linux signal docs, I noticed a startling resemblance - it included `raise` and `kill` functions, a list of pending signals, and a way to block signals using bitmasks with pthread_sigmask

9/11 🧵
November 2, 2025 at 2:27 AM
`compare_by_identity` sets the hash to compare keys by their reference instead of their value. Not day-to-day useful but a fascinating option, and utilized nicely in Sidekiq

8/11 🧵
November 2, 2025 at 2:27 AM