Sign in

JP Camara

@jpcamara.com
1.4K followers 766 following 682 posts

Principal software engineer @Wealthbox. Husband/Father. Health, travel, tech and Ruby enthusiast. Tech blog at jpcamara.com Jokes at logicalconclusionscomic.com

PostsRepliesMedia
JP Camara @jpcamara.com · 21/09/2026
Giving Jev a try by integrating it into yrby collaborative agents Each agent is connected to the document and receiving updates. It then decides using Jev which topic it wants to be involved in
020
JP Camara @jpcamara.com · 14/09/2026
I'm speaking at @sfruby.com! Buy a ticket and come say hi!
272
JP Camara @jpcamara.com · 12/09/2026
yrby + rubyllm = user + agent collaboration 🫢
011
JP Camara @jpcamara.com · 05/09/2026
010
JP Camara @jpcamara.com · 05/09/2026
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
130
JP Camara @jpcamara.com · 05/09/2026
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
2102
JP Camara @jpcamara.com · 26/08/2026
Working on MissionControl batches support - any suggestions? One thing I noticed so far is I didn't add the ability to delete a finished/failed batch
Batches index page. List of All batches, with id link, description, status, progress percentage, job count and enqueued atBatch show page, listing jobs run and different job stateJob show page, which now includes a link to a batch
031
JP Camara @jpcamara.com · 31/07/2026
IYKYK 🐘
Isildur elrond meme applied to postgres vacuums

Postgres logo and a heap tuple in first pane
Second pane is VACUUM telling someone to cast it into the fire and destroy it!
Third pane is a long-running transaction saying "no"
Fourth pane is the tuple being thrown onto a pile of other tuples that can't be reclaimed due to the long running transaction pinning the xmin horizon
050
JP Camara @jpcamara.com · 31/12/2025
“It’s 10pm, do you know where your children are?” I added this to my “when good threads go bad” post Does anyone else remember these ads?! May have only been a USA thing
Ad for “it’s 10pm do you know where you children are?”Ad for “it’s 10pm do you know where you children are?”, but with “children” overwritten by “threads”
170
JP Camara @jpcamara.com · 19/12/2025
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!
130
JP Camara @jpcamara.com · 19/12/2025
In Sidekiq, you can add a special method to your job class called `sidekiq_retry_in`. This method allows you to dynamically adjust retry behavior. For instance, based on the exception raised you can return a different duration in seconds. /1
2120
JP Camara @jpcamara.com · 22/11/2025
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
0192
JP Camara @jpcamara.com · 12/11/2025
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 🤯
0171
JP Camara @jpcamara.com · 02/11/2025
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 🧵
021
JP Camara @jpcamara.com · 02/11/2025
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 🧵
110
JP Camara @jpcamara.com · 02/11/2025
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 🧵
100
JP Camara @jpcamara.com · 02/11/2025
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 🧵
220
JP Camara @jpcamara.com · 24/10/2025
This is all I can think of now whenever my hands absorb the flavors or heat of a vegetable
000
JP Camara @jpcamara.com · 23/10/2025
Time to tighten up my talk, the conference is coming quick! Also just noticed the AI whoopsies on the text 🤭
Join JP Camara at the San Francisco Ruby Confrence on November 19-21 sfruby.com
080
JP Camara @jpcamara.com · 10/10/2025
Incredible validation for Falcon as a Ruby web server, and for Async in Ruby. I spoke about concurrency at last years RubyConf and had to call out Falcon - it's the server i've been most excited about in the past few years.
Falcon is now serving most of Shopify storefront traffic: web and API. It's solid, delivered big wins already, and unlocks a huge swath of new storefront optimizations we'll be trickling out over time. 

Performance is an evergreen quest at Shopify. 🏃‍♀️🏃‍♂️ 💨
1160
JP Camara @jpcamara.com · 08/10/2025
010
JP Camara @jpcamara.com · 08/10/2025
We never needed while loops. The power was always within us.
5258
JP Camara @jpcamara.com · 03/10/2025
Github, you will never convince me that this emoji represents laughter
screenshot of the github smile reaction, which github tries to convince everyone is laughter
020
JP Camara @jpcamara.com · 24/09/2025
0.5% of the Ruby community rn: 😩 The other 99.5%:
070
JP Camara @jpcamara.com · 22/09/2025
Working on my real-time talk for #SFRuby conf, I think it'll be a good one! Real-time collaboration in Lexxy anyone?
2194
JP Camara @jpcamara.com · 05/09/2025
Did an early draft run of my real-time collaboration talk at the #bostonrb meetup. Getting amped for #SFRuby conf! See you there? sfruby.com
060
JP Camara @jpcamara.com · 22/08/2025
Still one of my favorites, definitely need to give it a rewatch I saw this license plate yesterday so it made me think there could be a new series about the:
110
JP Camara @jpcamara.com · 07/08/2025
Looks like you even got mentioned in the bytes.dev newsletter 😂
110
JP Camara @jpcamara.com · 07/08/2025
I've been reading Ruby Weekly since - let me check my inbox - *SPITS OUT WATER* - 2013?!? And that was already the 126th edition 😱 @cooperx86.bsky.social you are a machine!! It's always been one of my top Ruby resources, so it's extra fun to be included in it! rubyweekly.com/issues/762
Ruby Weekly August 7th edition highlighting "Whats wrong with the json gem api" by jean boussier and "The /o in regex stands for oh the humanity!" by JP Camara
1182
JP Camara @jpcamara.com · 02/08/2025
It turns out the tiny /o modifier has an outside influence on how your program runs. It creates a permanent, immutable version of your regex after the _first_ time it runs. My personal policy from now on is to never use this modifier. Ever. I dig alot deeper in the article, give it a read!
040
JP Camara @jpcamara.com · 02/08/2025
If you run these lines - is it what you expected? It definitely was _not_ what I expected!
130
JP Camara @jpcamara.com · 02/08/2025
When you look at this class - does anything stick out to you? Any red flags?
120
JP Camara @jpcamara.com · 11/07/2025
My brain is full of open source, blogging and growth ideas, thanks to #rubyfriends! Thanks @rubycentral.org @rosa.codes @codynorman.com @jeremysmith.co @manu-j.com @andyatkinson.com @adrianthedev.com @inazarova.bsky.social @jesper.dev @kaspth.com and so many others! Hope to see everyone again soon!
5254
JP Camara @jpcamara.com · 20/04/2025
If you read @byroot.bsky.social 's "What's the deal with Ractors?", and were bummed at how poorly they handled JSON parsing, then @jhawthorn.com has brightened your day! Frozen interned strings are now stored in a lock-free hash, making the Ractor example 2x faster than the single-threaded example!
# == single-threaded
# RUBY_YJIT_ENABLE=1 ruby parse.rb 1.12s user 0.11s system 77% cpu 1.599 total
# == master, pre-optimization
# RUBY_YJIT_ENABLE=1 ruby ractor_parse.rb  3.70s user 6.52s system 256% cpu 3.990 total
# == master, after https://github.com/ruby/ruby/pull/12921
# RUBY_YJIT_ENABLE=1 ruby ractor_parse.rb  1.31s user 0.28s system 210% cpu 0.754 total
13010
JP Camara @jpcamara.com · 03/04/2025
I’m a little bummed, but I think my RailsConf talk getting declined is for the best! I can focus on getting back to blogging and also just enjoy the conference without revising my talk endlessly. Should I still submit it as a talk elsewhere down the line? Would you go to it?
“Sorry, your session submission has been declined” in a flash above the RailsConf talk submission called “Pools, Proxies and Bouncers, oh my! Scaling Rails and Postgres to the (connection) limit”
2110
JP Camara @jpcamara.com · 04/02/2025
The only true instance of grilled cheese?
120
JP Camara @jpcamara.com · 18/01/2025
How have I never heard of __send__? docs.ruby-lang.org/en/3.4/Basic... I saw it when I was looking at the Literal source code @joel.drapper.me
090
JP Camara @jpcamara.com · 14/01/2025
But the inline caches only improve the performance of explicit method calls. Direct method calls are related to "calldata". This "calldata" maps directly to a struct in CRuby called "rb_call_data", which contains information about the call, and a "call cache". /5
120
JP Camara @jpcamara.com · 14/01/2025
TIL: In Ruby, there is a significant performance difference between calling `obj.my_method` vs calling `obj.send(:my_method)`. To be clear, "Significant" in this instance is more the realm of microbenchmarks, or very hot code path optimizations (hundreds of thousands/millions of calls). /🧵
2202
JP Camara @jpcamara.com · 12/01/2025
The hacker news Ruby appearances continue! Nice one @rossta.net !
130
JP Camara @jpcamara.com · 07/01/2025
@chastell.net you got a shoutout in this one for your love of the flip-flop operator 😂
031
JP Camara @jpcamara.com · 05/01/2025
Saw this comment in your HN reply and it’s too real @byroot.bsky.social 😅 I’ve written around 100k words over the past year and a half - writing about code is so so much slower than working on code. It is not your writing skill 🙂‍↔️ news.ycombinator.com/item?id=4258...
260
JP Camara @jpcamara.com · 04/01/2025
2024 ended up a pretty solid writing year for me. Here are the top 10 posts by views. Of them, 8 were written in 2024 (tanstack and pgbouncer have had alot of staying power, they're from 2023). I'll link to each after this, in case you'd like to check them out!
2194
JP Camara @jpcamara.com · 01/01/2025
Yesssssssssssss, progress!
040
JP Camara @jpcamara.com · 26/12/2024
@drbragg.dev I found it! I found the code that compiles the AST for the flip flop operator! We can destroy it! Quick, while everyone is on vacation!
140
JP Camara @jpcamara.com · 23/12/2024
What this makes me realize, is that `DATA` is literally just a file reference to the entire current file! The only special work it does for you is `seek`ing to right after the `__END__. So be careful doing a `rewind` on it, or you'll just process all of your ruby code 🤪
020
JP Camara @jpcamara.com · 23/12/2024
I've been using this a bunch since @drbragg.dev mentioned it a few weeks ago, super handy. In investigating a new Ruby bytecode instruction for `respond_to?`, I found the code that powers it! Kind of fun to bump into.
110
JP Camara @jpcamara.com · 18/12/2024
Nice to get that hacker news love as well. @rossta.net Ruby Hacker News .dev!
160
JP Camara @jpcamara.com · 18/12/2024
A friendly PSA on git etiquette: Descriptive commits and clear PR descriptions are a gift. When I am investigating an issue or trying to understand some code - it makes me so happy when I see a relevant message and I can understand the _reason_ behind the code. It's a favor to future maintainers!
7100
JP Camara @jpcamara.com · 17/12/2024
Jack is so mean 😆 In terms of Youtube, this is a pretty teensy amount of views. But I would have been happy getting a total of one or two hundred views, so it feels like alot to me 😄 Thanks, sleepy sunday Hacker news
The title of a youtube video - "RubyConf 2024 In-Depth Ruby Concurrency: Navigating the Ruby concurrency landscape by JP Camara. 1k views - 3 days ago"A meme image from the movie Titanic where Jack and Rose are on the front of the boat, Jack holding onto rose with her arms spread out.
The top of the meme says "I'M THE KING OF YOUTUBE" and the bottom says "YOU ARE A GRAIN OF SAND ON THE BEACH THAT IS YOUTUBE VIEWS"
050