DAVID HILL Happy Wednesday and welcome to the show. I'm your host, David Hill, and joining me today is JP Camara. I should have asked beforehand, is that the correct pronunciation for your last name? JP CAMARA My family says Camara. In Portugal, they would say Camara, but we say Camara. Is it of Portuguese origin? Portuguese, yeah, it's a Portuguese name. My great -grandparents are from the Azores. DAVID HILL Oh, cool. Planning on going to Rails World to go to Lisbon next year? JP CAMARA I would love to. I'm not totally sure. My wife and I are considering going to Switzerland with our kids next summer. It seems like a pretty awesome country, but there's also some really interesting things for kids to do there as well. But I would love to get to Portugal at some point. I went to the Azores two years ago, and that was awesome. Yeah, I would love to get there. We'll see. We'll see. Are you going? DAVID HILL I hope to. The price tag on that is higher than I'd like. JP CAMARA I would have definitely gone to Austin, but I completely assumed it sold out. And then like three weeks beforehand, someone was like, no, it's not sold out. I'm like, well, it's a little too short notice for me, but it would have been fun. DAVID HILL Yeah. From what I heard, there were people buying tickets basically the day of. JP CAMARA Oh, wow. That's crazy. It was a much larger capacity, DAVID HILL wow. That's JP CAMARA was a much larger capacity, right? Much larger capacity. DAVID HILL larger capacity. When I was talking with Amanda about it, she said basically the venue was big enough that they didn't really have a maximum ticket count. JP CAMARA Oh, that's crazy. Yeah. She was just like, DAVID HILL Yeah. She was just like, we can just keep the ticket sales open until we feel like it. And they never felt like taking it down. JP CAMARA like taking it down. Yeah. That's kind of nice. I definitely would have gone if I had realized, but I don't know. Lisbon would be pretty awesome. But maybe. DAVID HILL Fingers crossed. Hope to find a way to... Maybe we'll see each other there. JP CAMARA find a way to... Maybe we'll see each other there. DAVID HILL I speak some Portuguese. I lived in Brazil for two years, many years ago. Oh, cool. JP CAMARA Oh, cool. DAVID HILL To go to the other primary Portuguese -speaking country would also only be my second ever trip to Europe. So I was like, I would love to go to Lisbon. So I'm hoping to find a way to make that happen. JP CAMARA to find a way to make that happen. I've heard it's amazing. I've never been, but I've been to a few places in Europe, but just never hit there. Where'd you go in Europe? DAVID HILL For Rails World last year in Amsterdam. That was my first ever trip to Europe. JP CAMARA trip to Europe. The only reason you go to Europe is for Rails World. DAVID HILL Well, I mean, that's the way it works out sometimes. JP CAMARA works out sometimes. Yeah, it's a good excuse. DAVID HILL I can make it a business expense because it's for work -related education. Exactly. JP CAMARA Exactly. DAVID HILL All right. So the reason I invited you on the show was because I saw that a little while ago, there was some movement about Solid Q batching that you had been working on to add to Solid Q. Could you tell us a bit about that and how that came about? JP CAMARA So yeah, Solid Q batches landed, you know, it's October now. I think it landed a couple months ago now, maybe a month or two ago. And it's something I actually started working on a long time ago, but finally kind of got enough community enthusiasm that. There's enough of a groundswell and interest from everybody that we all decided like, yeah, it's time for batches to get in. So I started working out about two and a half years ago. Wasn't a ton of interest. Solid Q had just come out. Like I love concurrency. I love job systems. I think being able to coordinate jobs is a really powerful feature and something that's super useful. And so I wanted to see that come around in Solid Q as well. Good job has a good approach to it. Sidekick is obviously the OG for batches. They're kind of the one that originated the idea sort of in the Ruby community. And I've used both of those many times. And it's such a great way to coordinate jobs. And I wanted to see Solid Q get something like that as well. So kind of just worked on it on the side for a while and then worked together with Rosa over the past year to get it in. DAVID HILL For the sake of just kind of level setting, I guess, what is it that we're talking about in terms of batching within a background processor? JP CAMARA So a batch, again, like the original word kind of came from Mike Parham in terms of like how we describe it in the Ruby community, in the Rails community. But a batch of jobs is really a way to, it's kind of a wrapper around of a set of jobs to be able to say like, hey, for this set of jobs, I care that they operate kind of as a unit. Let's say I have 50 jobs that are part of like an email campaign or something. And what I want to know is at the end of when all the 50 jobs finish, if they're all successful, do a particular thing. If any of them fail, do a particular thing. But I want to do it at the end. I want to say like when all of my processing is done. allow me to have some kind of callback. And so there's kind of a couple of different reasons you might use a batch. So one of them might just be to be able to like go into your job dashboard and see the success rate of all of your jobs. But the most useful one really is to have some kind of callback at the end. So you may say like, if all of them succeed, run the success callback, trigger this next phase of my work, notify Slack, do those kinds of things. Or if they fail, maybe we have some kind of recovery process or thing like that. But the difficulty, if you have a lot of jobs and you're trying to coordinate a lot of jobs, is doing that individually is kind of complex. And so if I have 50, 500, 500 ,000 jobs, whatever, having to just be like, OK, well, I just got 6 ,000 errors and I'm just going to have to individually address all these things versus I have this nice, tidy bow that I put on top of all these jobs at the end for however they process. Within my work and the work I've done over the years, there's been a lot of times where either I want to track an entire thing and know when all of it's done and then respond to that. And in many cases, when that group finishes, I may kick off another set of things. And so it kind of becomes a chain of sets of jobs. And so that's always been super useful for me. The moment I was able to use it in Sidekick, I did. And I wanted to be able to use that in batches as well. Does that kind of resonate? DAVID HILL I just kind of wanted to make sure that I was understanding what you meant by batching. Yes. There are some other batch terminologies in Ruby and Rails. I want to make sure I'm talking about the right things as I ask future questions. JP CAMARA Yes. There are some other batch terminologies DAVID HILL about the right things as I ask future questions. JP CAMARA It's kind of an overloaded term. It definitely confuses people sometimes. I'm so used to it from the sidekick terminology, but when someone's like, oh, like finding batches or something like that in Rails, like, oh, right. That is an existing term for other things. But no, it's... a set of jobs that are you can track progress on right yeah okay cool so you've been using batches for a while now in sidekick or wherever else what led you to wanting to be like well let's put this in solid queue this new background processor that just came out i think the biggest thing for me and one of the things that i like the most about a database backed DAVID HILL okay cool so you've been using batches for a while now in sidekick or wherever else what led you to wanting to be like well let's put this in solid queue this new background processor that just came out i JP CAMARA think the biggest thing for me and one of the things that i like the most about a database backed Job system. There's a little bit of controversy, I think, in a sense of whether you should put your job system in a database or not. Some people are like, it overloads your database. You should have it somewhere else and distribute your processing. But one of the things I love the most is to be able to do like transactional work alongside of the database work that I'm doing. And so I do actually, again, some of the solid queue recommendations, I do often run my solid queue. in transactions with my actual database work. And that allows me to atomically say like, yes or no, this job got enqueued based on yes or no, my database work actually got enqueued. And so I had a lot of use cases where that was beneficial to me. And I'd kind of created my own homegrown system for doing that, which is never necessarily a good idea. Essentially, once I saw solid queue, this kind of like rails. blessed version of a database -backed job system come out. I was like, okay, let me drop what I've been doing and let me contribute to this mainstream thing that other people will also continue contributing to. And if I get hit by a bus or whatever, or hit by a lottery ticket, as I sometimes say, it's not like I'm gone and this system is just being thrown on everybody. We all have solid queue together. And so that's why I was like, okay, let me put this into solid queue. Now, the first response I got from Rosa was a very kind, thank you for doing this, but... we don't really have an interest in taking this in right now. And so she was very kind about it. She's a very nice person, very easy to work with. DAVID HILL easy to work with. Rose is extremely nice. JP CAMARA Extremely talented, intelligent, very nice person. So I didn't feel any offense at it, but I was like, okay, well, I'll just keep working out on the side. And it did turn out it's doing it in a database can be a challenging thing because you're... Now you're trying to take all of these jobs that you're already in queuing, but then also efficiently manage tracking them without adding a bunch of overhead onto the system. It ended up working out because it took me several iterations before I finally landed on something that felt good. So I wanted to benefit from the community of people working on solid queue and kind of have something that we all have together. DAVID HILL Nice. You said kind of more recently, you kind of had like a groundswell of support behind the feature. Was there anything in particular of note with that? Or was it just like, oh, more people seem to want this? JP CAMARA The first year it was out there, honestly, since day one, people have been posting on that PR saying like, please get batches in. I want them now. When are batches coming in? It was pretty much from day one, people were asking about it. But I think that partly it was like Solid Q was so new that... There were just lots of other things still being fixed and improved and small features being added. I think maybe even concurrency controls weren't fully fleshed out at that point. Recurring schedules got added in. So there were just a lot of sooner things they wanted. And the thing that really pushed it for me was Rosa and I actually met each other at RailsConf 2025. And so we got to actually sync up, say hi to each other. We went to a bunch of talks together. And then one of the talks we went to... was actually one of Jeremy Smith's talks. It was a lightning talk. And coincidentally, one of his slides had me listed on it. DAVID HILL And coincidentally, JP CAMARA me listed on it. He wasn't even intentional. It was the slide about this note system he had. It was really good talk. You can look it up. I blogged about it a little bit. He just had this page and one of the notes he had that he had taken a screenshot of for the page said like, JP Kamara working on batches. It was something like, doesn't seem like he's going to finish it or something like that. I was sitting next to Rosa and I looked at her and I laughed out loud. I was like, he literally posted about batches up there and that I'm not going to finish it. And we were both just like, oh my God. And we ended up talking with Jeremy afterwards and we had a great conversation with him. There was a bunch of just job nerding out that we all talked about. I think Rosa had already started to feel like, OK, there's enough people asking for this. We should probably do this eventually. And her talking to me, talking with Jeremy, me getting kind of called out in a funny way, in a very friendly way, kind of got us all thinking like, OK, this is the time to get it done. Now, that was still obviously like over a year ago. And so I started talking with her a bit, refining it, like bringing it back. And so, yeah, that kind of kicked it off. There had been continual people asking for it. Honestly, I mean, it's just kind of an example of the power of going to a conference, right? Is that like, once I actually met up with Rosa and talked with some other people that were interested in it, it was like, okay, let's get this thing done. And that sort of spurred it forward, I think. DAVID HILL That's exactly what I was thinking. It was like, just the opportunity to go and actually meet the person in person. Right. To not have the screen between you and them and to actually have human to human interactions. It's like, oh, look, all of a sudden things start happening. JP CAMARA That's happened a bunch of times for me. I haven't been to a ton of conferences, but almost everyone I go to ends up having some kind of either new friendship or beneficial movement on a project or just new idea for myself. But yeah, this one in particular, awesome to meet with her and push this whole thing forward. Yeah, I'll actually see her again at SF RubyConf next month where she'll be talking about SolidQ, SolidQ 2 .0, batches, a bunch of other things. Nice. DAVID HILL Are you going to be at SF Ruby? No, I did three conferences this year and that was already kind of straining my budget. So I would love to go. I would love to go to SF Ruby. There are several conferences that I want to go to that I just haven't been able to afford yet. And so. Sure. JP CAMARA Sure. I get it. Yeah, it is. Depending on where you are, it can be quite far away. I mean, it's on the other side of the country for me. You know, it was the second one this year. I had a great time last year at it. So I'm looking forward to getting back there. DAVID HILL I'm in Orlando. So yeah, it's also other side of the country for me. JP CAMARA side of JP CAMARA Yeah, it's a flight. DAVID HILL Yeah, a little bit. So you made the solid queue batching. Because mission control is kind of the, essentially just like the UI for managing the solid queue background processing or? JP CAMARA Yeah, that's exactly it. So I think it's a 37 signals project maybe or a base camp project or something. Yeah, it's the UI layer that they use for rescue and for solid queue. And so, yeah, I opened up a PR recently for that. It turned out it actually merged a month ago. I didn't even realize it. I was still using a fork, my own fork on production. And so I was like, oh, great. So I'm moving that over today. But yeah, it just lets you manage the batches. It's the second piece that's really beneficial about batches, I think. So obviously the programmatic piece is the most important one, the one that you can kind of hook into a callback and have it. ping Slack or start off another set of jobs or whatever. But the other piece that's really valuable is to be able to just check in on it, you know, and not have to go into like a Rails console or something. And so it's a UI, same as all the rest of the SolidCube, but there's a dedicated batches page, tells you what's in progress, what's failed, the percentage of jobs that have gone through. You can click into individual jobs that are part of the batch. So just kind of gives you a nice visual view of what's going on with the batch itself. And, you know, it's complimentary, or it's similar to how Sidekick and Good Job both do a similar thing. It's not something you look at every day, but it's very beneficial to be like, something's going on here. Let me check. Like, oh, okay, a bunch of these failed. They're still in progress. They're retrying. I'm going to take a look. And you don't have to just dig for all those jobs. Because in my case, we run potentially tens of millions of jobs a day. If you have a handful of batches running, it's a lot easier to go to that batch and get an overview of that versus just be like, I'm just going to filter down all of my chat. Yeah. So yeah, that piece finally went out as well. And yeah, SPEAKER_00 it was helpful. SPEAKER_00 It's not a place that I tend to go every day, DAVID HILL tend to go every day, but oh boy, howdy. Like the moment a roll bar comes in, I was like, is this a background job that failed? Let's go look for that. And yeah, having that kind of a UI for it is so helpful. JP CAMARA Oh yeah, absolutely. Yeah. And you can give descriptions to your jobs. You can attach, sorry, to your batches. You can attach metadata so you can more easily identify them, all that sort of stuff. So in addition to needing a batch system, There are features of Rails that are actually not even very compatible. They're not compatible with sidekick batches at all and are not completely compatible with good job batches. And I felt like Solid Q needed to have like full support for whatever Rails could do. The one I'm thinking of in particular is being able to defer jobs. So I don't know if you're familiar with that concept or not, where you kind of have like an automatic after commit for your jobs. I actually forget the name of the flag off the top of my head. I believe in Rails 8 .2, they're even going to enable it by default again. It's kind of gone through a bit of churn with each release, but there's always been something in each release about like, when I enqueue my job, if I'm inside of a transaction right now, the job won't actually enqueue until the transaction commits. So it's essentially like a way for Rails to automatically do an after commit for you for your jobs. And so a lot of people think that's very valuable and it is valuable in a lot of places because there's a lot of instances you've probably experienced where You don't want that job to go and do its work if the transaction itself fails after that point in the code. DAVID HILL don't want that job to go and do its work if the transaction itself fails after that point in the code. Yeah. JP CAMARA Exactly. Yeah. And so that's the whole idea behind it. But all batch implementations up until this point that I've used, they don't support it because it's kind of complicated to do. You kind of have to juggle some in -memory objects. You have to kind of hook into active job a bit and do some things to make sure that works. And so one thing that was important to me as an out -of -the -box solution for Rails was that deferred jobs would work just perfectly fine with batches. Like if you want to defer them, great, the batch will happen after the transaction. If not, it'll happen inside of it. And so, yeah, I forget a little bit how I got onto that, but it was something we said triggered in my mind that it was just important to me to be as Rails -esque as possible. DAVID HILL You were reading my mind, actually, because you're talking about how there are some things that Sidekick and Good Job batches are not compatible with in Rails. I was like, well, what do you mean? What types of things are they not compatible with? Right. And I'm not saying that to cast aspersions. JP CAMARA well, JP CAMARA Right. And I'm not saying that to cast aspersions. They've made decisions. DAVID HILL No aspersions. Literally just from the technical perspective of... I don't know off the top of my head what scenarios they wouldn't be compatible with. Sure. What was it that led you down that road? JP CAMARA Yeah. And honestly, at first I didn't even notice it. Like I definitely learned a lot from the interfaces of both. I looked at a bit of the implementation a good job because it is open source to see if there's anything I could learn there. And so I followed some of that approach at first. And then I just was like, okay, well, what other features do I need to test? And I tested those and it was just like everything broke. I was like, oh no. Basically, it was just like, oh, my batch is just running and it's not respecting any of this stuff. And yeah, it would lose jobs. It would. Yeah, there was all sorts of shenanigans that happened in there. So that definitely added on to some of the timeline of me getting it done. But I'm happy with the result. And it also another important thing to me was performance. I put a ton of time into making sure it performed as well as possible. It does add a tiny bit of overhead. It's right now it's around like. 10 % overhead on top of your jobs if you run them in a batch. It accounts for milliseconds, but it's still something I'm trying to work on to see if I can get that as low as possible. DAVID HILL Still, that's pretty slick overall. That doesn't feel like it's a tremendous overhead for what sounds to me like a very helpful feature. JP CAMARA Yeah. And much like anything, you know, if you see how the sausage is made or whatever they say earlier on, it was like 200 % overhead. SPEAKER_00 And that was like one of the earliest iterations. And I'm like, JP CAMARA that was like one of the earliest iterations. And I'm like, oh, that's not acceptable. And so, yeah, you hit those kind of scenarios and then you're like, okay, well, let's start. And that's one of the most fun problems anyway, though, right? Like you hit 200 % overhead and then you get it down to 10 % and you just feel like the king of the world basically. But yeah, performance is fun. But yeah, it just felt unacceptable to be that much slower. DAVID HILL be that much JP CAMARA be that much slower. Yeah, DAVID HILL that would have been not great. But you know, 10%, I think 10 % is probably livable. JP CAMARA know, JP CAMARA I think so too. Yeah. That's kind of where we landed on it. It was an acceptable trade -off for kind of the insight and oversight that you get on your jobs. DAVID HILL Well, that's cool. Yeah. And then you mentioned in our pre -recording chat that you've been working with, I might be pronouncing this wrong because I was spelling it out, Yerby? JP CAMARA Yeah. Well, actually, you did get it right. What is Yerby? Yeah. DAVID HILL What is JP CAMARA SF Ruby last year, I did a talk on what I think I called it like real -time collaboration in Rails or something like that. Basically, there's this concept of something called a CRDT. It's this conflict -free replicated data type. All that is to say is like, it's a data type that allows you to do kind of like Google Docs type stuff, like multiple people working on the same resource. So let's take a Google Doc document. Multiple people in a document being able to type, you don't have to wait for one to save and have like a pessimistic lock or something like that. All this data is kind of coming in. It's conflict -free, it's a tough one to say, in the sense that It figures out how to merge all the text and data and things that are coming in. And so there's a system, YJS, it's built in JavaScript. And I had a need to be able to let people within Rails work collaboratively in a document as well. And there just wasn't really a good solution for it. And so I kind of cobbled together something myself over time and like deployed that at work and it worked pretty well. And I did a talk last year at SF Ruby about it. But what I really wanted was to offer a solution to the whole Rails community and for myself that would allow people to just kind of out of the box, bring this gem in, bring this JavaScript package in and just have it work. Just be like, okay, as easily as I use action text or something like that, I can just do collaborative document editing on a piece of my Rails app. And so that was kind of the genesis of what I'm calling Yerby. The genesis of the name, it's not the best name. It's YRBY. You can go to YRBY .dev to see a website of, it has live demos and all those kinds of things of how to use it. The name kind of came from, there was an existing library called YRB. That was like a compliment to YJS and it was for Ruby, but it wasn't thread safe. It wasn't maintained anymore. And so I just added an extra Y on the head. And then I called it Yerby. And originally I called it like YRB Lite. And I was like, this is just kind of silly. So, hey, if anybody's listening, they have a better name. Let me know. But anyways, the name is Yerby. Collaborative document editing for Rails. Works out of the box. And yeah, so that's what I've been working on. It works over action cable or any cable if you use any cable, which I do. Yeah, basically what it does is it gives you the entire ecosystem of how to do that collaborative editing without needing any Node .js or anything like that, which most people who use YJS today need Node .js because there's specific Node .js servers for... serving up the YJS. There's like kind of a binary protocol thing it does. It's not super complex, but it's complex enough. And because YJS was a JavaScript library, you kind of had to bring a Node .js library in. There's some Rails open source projects that use YJS, but they make you run a sidecar Node .js server at the same time. And so I didn't want to do that. I felt like there was probably a way to achieve it. In the same ecosystem supported by the same author, there's a Rust library called YCRDT. And so I made some Ruby bindings for it. the rest is history i guess you could say i'm using european production i know some of the irena from evil martians has been playing around with it and some other people have been playing around with it it has a first class lexi plugin for it it's called lexi real time you just drop that in it's like three lines of code and you can have it working with lexi there's a macro called like i think it's has collaborative text you can have encrypted real -time text as well so like it encrypts it using the same kind of action text encryption and yeah i would love for people to try it out in the wild like i said i'm running in production but i'm very excited for other people to be able to try it and take advantage of that sort of thing that sounds really cool i think i need to go look at that yeah i would love it the next phase of it for me i kind of got the core i feel like it's strong right now the next phase for me is i'm working on something called yurby agents which DAVID HILL sounds really cool i think i need to go look at that yeah JP CAMARA i would love it the next phase of it for me i kind of got the core i feel like it's strong right now the next phase for me is i'm working on something called yurby agents which Basically, what I'm doing is I'm creating a peer layer for the document that's run by an agent using Ruby LLM. And so basically, the idea is that you could invite an agent to collaborate on a document with you. And so you could be in a document working on something and then say, sort of like OpenAI just released Spaces, I believe, where you can ask the agent to work on this document while you're working in it too. That's the same thing I want to be able to do in this as well. And I have it working right now. It's just not part of the official release yet. So I plan to have that out at SF Ruby. Nice. Yeah. DAVID HILL Well, that actually segues nicely into the next question I wanted to ask you is talking about AI and LLMs. A part of me doesn't want to keep asking everybody about how AI is impacting them, but it's changing so much day to day and week to week. And, you know, just coming out of Rails world where I don't want to over dramatize things, but DHH, his keynote effectively felt like. As a member of the audience, it felt like he was saying Ruby and Rails are more or less done. He didn't actually say that. It's just how it felt. I just don't feel like I can get away from asking that question of this kind of like, how has AI impacted this work that you've done and continue to do in these spaces? JP CAMARA has AI JP CAMARA So I wasn't at Rails World, but I did watch the keynote and it definitely, there's certainly some existential vibes that you could be feeling. After watching that keynote, I had a lot of feelings about it, a lot of follow -up discussions and things. And I agree with many of the things he said about AI in general. I think it was an oddly placed thing, but you know. DAVID HILL That was the weird part. I agreed with a lot of what he was talking about right up until he was like, what's next for Ruby on Rails? Eh, you can keep using it if you want to. Yeah, we're the best. This is Rails world. Shouldn't we be talking a bit more about what's coming up for Rails? JP CAMARA we're the best. JP CAMARA Exactly. Honestly, it's part of the reason I started working on URB agents was not because of his keynote. I was doing it before that keynote, but it's like, okay, well, how do we start enabling Rails and the Ruby ecosystem for the better taking advantage of LLMs and things like that? Like, yeah, I don't know what three, six, certainly not 10 years from now is going to be like for anyone developing. It's going to be some sort of like... Nobody knows what that's going to be like at this point. DAVID HILL knows what that's going to be like at this point. Nobody knows, yeah. JP CAMARA going to be like at this point. Nobody knows, yeah. But there's still so much value in Ruby and Rails. I still use it professionally. Obviously, that has not changed because of one keynote. And there's so much runway that we have and value we can add. I mean, Ruby LLM is an incredible tool, which I use daily. So anyway, so going back to how AI has changed things. Yeah, I mean, in terms of open source, I honestly don't think I'd be able to keep up the pace I've been doing lately with open source without AI. Everybody has families and kids and stuff, but I've got two kids. I've got a full -time job. I've got other responsibilities. And I can also be like, well, I want to keep pushing forward some open source stuff I'm doing because I think it's really valuable. And I can have an agent on my phone kind of like working on those things all the time. I still care about reviewing code. I still care about code quality. I don't even merge things into my open source projects without having some visibility into them. But yeah, I mean, it's changed the way I do everything. Everything I do now is AI driven. And it's kind of a constant collaborator I have. So I don't know what else to say there exactly, but... Well, DAVID HILL I'll ask a slightly more specific question. You mentioned that you use Ruby LLM frequently. Yes. That's a tool set that I have not really looked at yet. So could you talk a little bit about how you use that and what you're using it for? JP CAMARA So the company I work for, Wealthbox, has a... suite of AI tools that work in our products and we're a rail shop. And so the natural choice for us is Ruby LLM. It makes working with LLM so simple within Ruby. I think it's a much simpler approach than things like i don't know i don't know how you're familiar you are with a lot of different libraries out there but kind of the biggest one early on was like laying chain i don't have you ever heard of that one i've heard of it yeah yeah and so laying chain kind of came out of the python community very early on in the ai stuff or very early on being like three years ago in the grand scheme of things pretty recently yesterday i mean i literally say that to people sometimes we're like well that was a while ago and then i'm like okay it was six months ago but DAVID HILL heard of it yeah yeah JP CAMARA and so laying chain kind of came out of the python community very early on in the ai stuff or very early on being like three years ago in the grand scheme of things pretty recently yesterday i mean i literally say that to people sometimes we're like well that was a while ago and then i'm like okay it was six months ago but AI has accelerated a lot. Langchain kind of came out of Python. Then they created a JavaScript library, but it always felt very, it was useful, but it was very unapproachable. Just the terminology they used, it just didn't seem like they were trying to make it understandable for people. I honestly, like it just never, I used it for things. I used it in JavaScript. I even wrote like some serverless Python using it at certain points. And It just always felt very foreign to me. I never felt like I was getting the hang of it because the interface for it just felt very odd. And the moment Ruby LLM came along, it was like a breath of fresh air. It had such a simplistic interface that just wrapped all of the different AI providers for you in a standardized, very expressive, very Ruby -esque interface. You know, Ruby has always been about like making things expressive and approachable and productive. And Ruby LLM I think expresses that so well. And so it just... kind of pushes all of the minutiae about interacting with an LLM out of the way. Because there's just so many differences. Every LLM provider has their own interface. They have their own API format. They have their own capabilities for deferred tools and how you compact things and like all this different stuff. And Ruby LLM just kind of wraps that up in a really nice package. So yeah, it feels like a Ruby superpower, honestly, which I'm sure Carmine would love to hear. But I think he believes it as well. And I agree with him. DAVID HILL with him. Well, yet another thing on my list of things I need to go look at. JP CAMARA You should. With all the decision API stuff coming out with like Jev and those things, I don't know if you're familiar with that or not, but he already added a new interface in Ruby LM for it. And so I have a gem now as well. Utilizing that. I won't go into it, but it's just super easy to extend and modify. And so, yeah, I would highly recommend giving it a look. DAVID HILL Cool. I will have to give that another pass and look at that again. Yeah. Well, as we're wrapping up. The last question I try to remember to ask people, who would you recommend I bring on the show to talk about what they're working on in Ruby, Rails, open source community? Is there anyone that you would recommend? JP CAMARA I would imagine you've already had him on, but Carmine, you must have had Carmine on before, right? DAVID HILL I don't think I have, no. Oh, okay. I know I haven't. JP CAMARA know I haven't. I'll have to look and say he's been on the show before. DAVID HILL have to look and say he's been JP CAMARA say he's been on DAVID HILL the show before. And honestly, JP CAMARA honestly, now that I'm saying his name out loud, I'm like, oh shoot, is that how you say his name? He's the author of Ruby LLM. If I got his name wrong, I'm very apologetic, but I would say you should absolutely have him on. I think he posts a lot of awesome stuff. The library he's been working on is great. He's also been doing a lot of like interesting, creating like his own Spotify app and stuff like that. I think for Omarchi or whatever it is. I don't use that Linux distro, but I forget the name of it. But yeah, I would definitely have him on. I'd love to hear him talk about some of the Ruby LLM stuff and how he approaches that. Ooh, DAVID HILL yeah, that sounds like a really good idea. I'll have to see if I can find a way to reach out to him. JP CAMARA You definitely should. And again, I apologize because I'm pretty sure I got his name. I messed up his name, but great product. Thank you. DAVID HILL Thank you for coming on the show today, JP. JP CAMARA Yeah, it was great to be here. Great conversation. Thank you. DAVID HILL This has been the Ruby on Rails podcast. It was a pleasure talking with JP today. Thank you to AppSignal for sponsoring this episode. And thank you for listening.