Building AI-Powered Applications in Ruby - RUBY 662

This week, our host Charles Max Wood sits down with co-host Valentino Stoll to dive deep into the cutting-edge tools and strategies in AI development and integration. Valentino shares his go-to resources, including Langchain and Rails plug-ins like RAIX and Ray, to enhance applications with AI. They discuss the nuances of agent-based systems, Justin Bowen’s frameworks, and AI engines from industry leaders like Alex Rudolph and Toby Lukett.

Show Notes

This week, our host Charles Max Wood sits down with co-host Valentino Stoll to dive deep into the cutting-edge tools and strategies in AI development and integration. Valentino shares his go-to resources, including Langchain and Rails plug-ins like RAIX and Ray, to enhance applications with AI. They discuss the nuances of agent-based systems, Justin Bowen’s frameworks, and AI engines from industry leaders like Alex Rudolph and Toby Lukett.

Charles and Valentino also explore the significant impact of AI tools such as Copilot, ChatGPT, and more focused GPT models in streamlining coding tasks, automating tests, and refactoring code. They offer insights on leveraging AI for business operations, the importance of modularity, and the ongoing need for human expertise to guide AI's outputs.

Listeners will hear about the latest in AI-driven projects, including Valentino’s own endeavors in fine-tuning machine learning models for Ruby, and Charles’s plans for an AI development boot camp. Tune in for an enlightening discussion on how AI is reshaping software development, enhancing productivity, and creating new opportunities in the tech world.


Sponsors


Socials

Transcript

Charles Max Wood [00:00:04]:
Hey, folks. Welcome back to another Ruby Rogues episode. This week on our panel, we have Valentino Stoll.

Valentino Stoll [00:00:11]:
Hey now.

Charles Max Wood [00:00:12]:
I'm Charles Max Wood from Top End Devs. And, yeah, we were talking before the show. We had our guests cancel on us last minute. So if you're trying to watch this on YouTube and you're like, you're not talking about solid cash? No. We are not. We we were chatting, and, just to give a little bit of context, and I explained this to Valentino before the show. You know, I've been using some of these AI tools that are out there for a while, but just kind of at a low level. And what I had essentially figured out a while back was that, like, Copilot will suggest snippets and stuff in in Visual Studio Code, which is handy.

Charles Max Wood [00:00:50]:
Right? Because a lot of times it suggests stuff that it's like, yeah. That's what I want. And if I if I'm doing the same structure in a couple of places, it was really good at figuring that out. Right? It's like, oh, okay. Same structure, different variables. With but I'd also use, like, chat GPT and some other tools for some of the stuff. And so, one thing that I wound up doing was, last night, I was working on adding a new audio player to the member area of top end devs because I'm I'm basically revamping it because it's it's not what I wanted. And I found I figured out how to get at least much more close to what I want.

Charles Max Wood [00:01:31]:
So I was putting that in there, right, so that it, you know, it kind of floats at the bottom of the screen and does a bunch of stuff. And I'd already done all the styling for that. And so I was telling you know, I was using it basically as a lookup. So it's like, hey. What are the audio APIs in the browser that I can use, right, to to put a nice looking player in controls? And I was just kind of, you know, putting it together. And just on a whim, I I'd been listening to a podcast, and I can't remember which one it was. It was one of the AI podcasts, that I've recently picked up. But they were talking about how they were using it to actually either generate code or get checks on their code.

Charles Max Wood [00:02:11]:
And I was like, I wonder if I can just tell it to write me an audio player. Right? Like, just boom. I want an audio player that I can put in my browser. And so I I tell it that, and it it writes 1. Right? And I'm like, okay. Well, let's see how good this is. So I turn around. Right? Because in chat gpt, you can tell it to refine the answer.

Charles Max Wood [00:02:33]:
Right? So I tell it, okay. Well, I'm using stimulus. I I want the play and pause button to toggle to play or pause when I hit play or pause. You know? I want I want the progress bar to, you know, to change as it plays. I can't remember what else I told it. But I also told it I wanted it to be controlled through stimulus and that I was using Tailwind and that I wanted the play and pause buttons to not have words in them. I wanted it to use Font Awesome for the icons, and it spit the whole thing out. So then what I did is I was like, I know there are more features than I want on this.

Charles Max Wood [00:03:13]:
I just can't think of what they are. And so I asked it. I said, what other features should I be putting in this thing? And it turns around, and it gives me a list of, like, 16 things. Right? And, like, 10 of them were features that I might want if I wasn't just playing one episode. But there were, like, 4 or 5 of them that I was like, oh, yeah. I want that too. I forgot. And so I put all those in and, you know, and so it's giving me a player.

Charles Max Wood [00:03:39]:
So I put it into the page, and it was like it was a big square that took up, like, half the screen. And so I said, hey. I'm putting this into a bottom banner that has to fit into an h dash 32 sized space in the, you know, in the page. And so it condensed it. And so I I picked it up and I put it, into my Rails app. And, you know, and I'm thinking, okay. You know, I I, you know, I had my developer tools open with the console, and I'm all ready to to, you know, to debug it. Right? And, you know, because it probably got something wrong.

Charles Max Wood [00:04:20]:
And would you believe it? The thing just worked. Like,

Valentino Stoll [00:04:23]:
it literally like,

Charles Max Wood [00:04:23]:
I tested every feature, and it did exactly what it was supposed to do. That's cool. So then I had to tweak the layout on it a little bit because it did look a little bit weird. But, I mean, literally, it was just, k. Move this up here. Make that wider. You know? Okay. Now it looks now it looks decent.

Charles Max Wood [00:04:40]:
Right? I'm I'm not sure I'm completely satisfied with the layout on it, but it works and it looks it looks fine. So now I'm thinking, okay. What else is out there? Right? And and I've picked up some other tips and tricks. But, we were talking before the show, and I kinda told this to Valentino. And he's going, oh, yeah. I've got all kinds of tricks that I use. And so, this is probably gonna be more me picking your brain, Valentino, than than offering any, you know, awesome ideas or solutions. But it seems like there's a whole breadth of things that I'm just kind of opening up my mind to at this point.

Charles Max Wood [00:05:18]:
So so yeah. So, I mean, I guess my first question is is did you already know that chat g p t would do this kind of a thing? And what what else am I not even seeing in the wide world of, hey. Make my code process better?

Valentino Stoll [00:05:37]:
Yeah. There's so many things here. Yeah. I guess, like, if we take a step back and just, like, focus on, like, what we're trying to accomplish as, like, software developers. Right? Like, it kind of, like, breaks down into 2 things. Like, 1, like, abstractly thinking about concepts Mhmm. And how to, like, design things, and the second would be, like, implementation detail. And so, like, there's 2, like, avenues that I always, like, break things down to based off of that.

Valentino Stoll [00:06:10]:
And so, like, if we just focus on, like, the design aspects, like, that's just great as, like, a GPT. Like and for those that don't know, it's like a plug in for chat GPT. Uh-huh. I mean, like, I I have one based on the stack that I use, which is Rails specific with Ruby and, like, x y z design books that I've just, like, uploaded to the GPT. Right? So, like, I have, like, 99 bottles from Sandy Metz and, like, some AI specific ones.

Charles Max Wood [00:06:44]:
Hang on. So what what when you're saying, like, design books and you're you're talking about, like, kinda it it sounds like you're kinda setting up the context for where where you're asking your question.

Valentino Stoll [00:06:55]:
Yeah. Yeah. So, like, yeah, maybe we should reshape that. Like, what is a GPT? Yeah. And, honestly, like, I'm surprised. This is totally, like, OpenAI's, like, miss here in marketing. Right? It's because GPDs are incredible. Right? Like, it's like a way of, like, encapsulating, a purpose to all of the of to chat GPT.

Valentino Stoll [00:07:18]:
Right? So you get your, like, blanket features of chat GPT of being able to be a general purpose utility to do anything. And so it's great at code related stuff. But if, like let's say, like, you're wanna, like, make super object oriented Ruby and Rails work, like, that's prime candidate for making a very specific plug in to chat GPT. And you can basically give it context, like documents that it can use as reference, And you can also give it, like, custom instructions to follow so you don't have to, like, resay those things over and over again. So, like, let's say you have a prompt that you always go to that's like, hey. Like, pretend you're an expert in, object oriented design in Ruby. Right, and, I want you to follow these principles. You know, if you're generating, Ruby code, follow this, like, you know, like, Linter related thing, and and you can, like, reuse these prompts over and over again to get get it to output the things how you want it to, rather than just, like, chatting through it.

Valentino Stoll [00:08:33]:
And so with the GPT, you can, like, front load all that work and just have something reusable that you can go back to. And so I have this open GPT called the software architect mentor, and I use it all the time. And it's like my abstract go to for just like, okay. I'm designing something in Ruby, sometimes Rails, doing AI stuff. Like, use all of that context to just help me design something or refactor something or do these things, in an abstract way. So that way I don't have to worry about the implementation. I can focus on design.

Charles Max Wood [00:09:11]:
So how do you get that into chat GPT? And maybe I'm just you know, I haven't played with it enough.

Valentino Stoll [00:09:21]:
So they know this? They there's, like, a explore GPTs

Charles Max Wood [00:09:26]:
in the desktop.

Valentino Stoll [00:09:27]:
Sidebar, and you could just, like, start a chat with any one of those.

Charles Max Wood [00:09:32]:
Oh, okay. So I could actually instead because I'm just using the generic chat GPT. I mean, that's what built my player for me. You're telling me I could've because I clicked on it, and I'm seeing, like, a website generator or a code Copilot. So I could've used the code Copilot, and what would have been faster or better? Or

Valentino Stoll [00:09:53]:
Yeah. It would be more focused. So I I guess, like, faster and better are, you know, kind of, dependent on the use case.

Charles Max Wood [00:10:02]:
So But it might narrow the scope of the answer.

Valentino Stoll [00:10:04]:
Narrow the scope. Like, as an example, if, like okay. Well, let's say you're working on, you know, I don't know, Go code or something like that. Like, you know, there may be some conventions that could be useful, like using a very Go specific gbt. Uh-huh. In the same way that using a Go specific prompt, can help guide the generation of that. Right? Like, if you just say, hey. Like, chat GPD generate a, you know, program that, like, shows me a calendar, it it'll just, like, use whatever its preference is based on your chat history with it.

Valentino Stoll [00:10:41]:
So, like, that could be any number of languages, could be any number of implementations. But if you, like, open up a Go GPT, it's gonna use Go. Right? Right.

Charles Max Wood [00:10:56]:
So do they have a Ruby GPT in here, or

Valentino Stoll [00:11:00]:
did you have that build

Charles Max Wood [00:11:02]:
your own?

Valentino Stoll [00:11:03]:
There's a lot of people that that have GPTs published there. Kinda just have to search through stuff.

Charles Max Wood [00:11:09]:
Oh, yeah.

Valentino Stoll [00:11:10]:
I just have my own, because I found it very useful.

Charles Max Wood [00:11:14]:
Yeah. There are a bunch in here, Ruby. I don't

Valentino Stoll [00:11:16]:
know. There are a whole

Charles Max Wood [00:11:16]:
bunch of Rails and Ruby.

Valentino Stoll [00:11:18]:
Yeah. I mean, you can you basically can give it knowledge, and that knowledge will be used to to generate stuff with. And so, like, I personally have very specific, like, resources Right. That I like to, like, have it referenced. And I imagine other people do too. Right? Like Mhmm. You have your books that you favor the design principles from or, how you like, code implemented in specific ways, based on you know? It doesn't have to be books. It could be websites.

Valentino Stoll [00:11:50]:
You know, whatever resources that you use to code with, you can use it it it can use.

Charles Max Wood [00:11:58]:
So when you when you're pulling them in because my mind's already blown. Right? It's like, okay. I'm gonna go down the rabbit hole on this stuff real hard here after we're done. But because because I could see, you know, you you create GPTs for other things. It sounds like that's in in a way, that's kinda what when we talked to Obi, what he was talking about with Ray, right, where you're essentially you're giving it all that context. And then, yeah, you're doing some prompt engineering too. I want a response that looks like this or something like that. But, the I mean, the rest of it is you know? Yeah.

Charles Max Wood [00:12:33]:
Then you ask it a question, and it from everything that you've told it, it it gives you the focused or more correct answer. So when you're telling it, hey. I favor ideas from, I don't know, you know, 99 bottles or, you know, maybe it's, the Pooter book, the what principles of object oriented design in Ruby or something like that. How do you reference that in? Do you just give it a URL? Or

Valentino Stoll [00:13:01]:
I just upload the document. You you okay. Right. You just yeah. You know?

Charles Max Wood [00:13:07]:
Here's a PDF.

Valentino Stoll [00:13:08]:
You go. I I buy the book, and then I get the PDF from it, and I upload it. Right? And then I can have it generated based off of that. Right? Like Okay. I see.

Charles Max Wood [00:13:21]:
So how big is its brain? How much stuff can I cram in there?

Valentino Stoll [00:13:23]:
I I honestly haven't tested that, although I have gone through and just uploaded all the books that I've read, like, from, like, my programming experience, and that I found does not help. Like, giving it more context doesn't help it. And I to be honest, like, that makes a lot of sense to me because, like, the whole point of of, like, this honed agent is, like, you know, that it's narrow in scope. Right? Right. And, so, like, the more that you can narrow that scope to, like, the very specific task that you plan to use it for, like, the better. And I feel like, you know, going back to Obi when we had him on, like, that narrowing of the path is, like, the best way to think about, like, programming or, like, designing things with AI. It's, like, creating the very specific thing that you wanted to do and, like, all of your instructions and knowledge and things that you're giving it are, like, honed in on that.

Charles Max Wood [00:14:21]:
Yeah. It seems like yeah. When we were talking to Obi, the thing that kinda stood out to me was because because the chat GPT, you know, the GPT model that you're using, it has everything in it. Right? So it does baking. It does auto repair, and it does it has Ruby stuff in it. Right? And so if I tell it, hey. I need you to help me write better code. Then if I use a term that is also used in baking, me narrowing the path is just telling it, I only want the stuff that's relevant to programming in Ruby.

Charles Max Wood [00:14:57]:
And so right. And and then there's other training in there too that might be and I'm looking for things formatted this way, and I'm looking for, you know, ideas in this vein or things like that. I've I've also heard from people the idea that, essentially, you can and and I've seen some other people do this where they have they've, like, uploaded all the content that they've made about a topic, and then they essentially have a like, I could create a Chuck GPT. Right? And it would be, you know, hey. This is all the knowledge that Chuck has ever put out about whatever. And I thought about doing that for, like, a Ruby Rogues. Right? And so I could upload the audio and you know, or upload transcripts transcriptions or something. But my worry is is we've been doing this show for, like, 13 years, and so some of the stuff we talked about 13 years is very relevant.

Charles Max Wood [00:15:50]:
And some of the stuff we talked about 13 years ago is not very relevant. And so I worry that then it's gonna go, oh, well, I consider, you know, the 13 year old content as relevant as the right. And so maybe I can tell it, hey. Favor the newer stuff over the older stuff and and put that into the context. But, yeah, I've I've kinda hesitated on on doing that just for that reason.

Valentino Stoll [00:16:16]:
Yeah. You know, we're, like, we're we're edging very, very close to, like, the retrieval aspect of, like, AI design, which may be off topic a little bit because it's there's so much there. But, yeah, I mean, I think we're if if we circle back to, like, the tools that we're using here, like, there's so much, like, that you can use out off the shelf that, like, if you just use them in in the specific ways, like, you can skirt around those issues. Right? So, like, as an example, there there's, somebody just, released this Rails app called, NOSIA, nosia.ai.

Charles Max Wood [00:17:01]:
I think you picked that last time.

Valentino Stoll [00:17:03]:
Yep. And it's, like, super awesome. Runs on a llama locally, and you can, like, upload whatever documents you want it to use and run your own Chat QPT in a Rails context, with all of that stuff built in. Really French,

Charles Max Wood [00:17:19]:
or am I looking at the wrong thing?

Valentino Stoll [00:17:22]:
Yeah. I mean, the site, I think, is in French, but the repo is in English.

Charles Max Wood [00:17:26]:
Okay. Well, in Google Translate it, it's it's good at that.

Valentino Stoll [00:17:33]:
That's right. But, yeah, I mean, this idea is, like, not new. Right? Like, there's lots of other tools out there, as well that you can use, to kind of just get a local version of chat GPT running Mhmm. So that you can do this with. Like, if you have for example, you want to narrow the retrieval aspects to only relevant stuff based on time stamp or something like that, like, that's gonna require some, like, alteration. Right. Yeah. There's not anything built in the chat gbt to allow that kind of granularity without, like, building something on top of its APIs.

Valentino Stoll [00:18:10]:
Right. But there's a lot more stuff coming out that I I like, that's revolves revolves around, like, the command line aspect, where it'll, like, basically use your current working directory as, like, a a test bed to, like, scan for relevant documents and also, like, you know, build up its, like, task at hand. So, like, one that immediate immediately comes to mind is a tool called Aider, a I d e r. Uh-huh. Also runs fully level

Charles Max Wood [00:18:54]:
for you. Word too. It means to help.

Valentino Stoll [00:18:57]:
Yep. But, yeah, lots of French in the AI space. You know, hugging face as an example. Definitely French. Yeah. Mixed role. Right? So so many great AI things come out of France. But, you know, with with a tool like Aider, like, it basically uses TreeSitter and, like, scans through your repo.

Speaker C [00:19:22]:
Right? So, like, if you're like, oh, I want to, you know, like, change the, you know, contact page to, you know, add another field for this specific thing in my Rails app, It'll go through, and it'll scan the Rails app locally and then find what files that it needs to, include as context and then walk through, like, a step by step process of, okay, what files do we need to touch? What changes do we need to make to make that request happen? And you it could even, like, you know, alter these files, which is really, really exciting. Because, ultimately, that's what that's what I I would you know, I'd rather part of the problem with, like, just using chat GPT for, like, you know, code generation in in general, like, it it doesn't have context, and it also, like, you know, makes mistakes, like, all the time. And then you're, like, stuck trying to figure out, well, okay. Well, you know, what mistake is this? Like, why is there a bug here? Right? And you can do that in chat GPT too. But it's just like it slows things down quite a lot. And so when you get something that's more, like, wrapped around the thing that you're building, it makes it much, like, smoother of an experience.

Charles Max Wood [00:20:47]:
That's awesome. So that that was, or in French,

Valentino Stoll [00:20:53]:
Yeah. Yeah. And, you know, there's, like, a a more polished version of it, if you if you will, called CodeBuff. But, you know, it's it's expensive. But, you know, it uses the more flagship models, like, from OpenAI or, you know, anthropic, depending on the context. So, like, you get better quality outputs from it, because of that. And you could also use, you know, OpenAI for 8 or 2, but, it's definitely not as polished as as CodeBuff.

Charles Max Wood [00:21:34]:
Right. Yeah. I'm trying to make sure we have all the links in the like like, go so, folks, if you're looking for the links, they're it's look it looks like it's posting it to Facebook, YouTube, and Twitch, and not Twitter or LinkedIn. So, it'll it'll all be in the comments there. So, yeah, I mean, that that's helpful just because, yeah, it can work from the context of the stuff in your actual code base.

Valentino Stoll [00:22:09]:
Yeah. I a lot of the the back and forth stuff, with implementation related tasks, right, it's like it can eat up time. Right? Like, it it just reminds me of, like, you know, some some of the original, like, code generation stuff, like even, like, rails generators as an example. Right? Like, it just, like it'll just dump a ton of code at you, and you're just like, well, what what do I do with that? Right? Or if, like, it doesn't do what you want, like, you have to figure out what that is, and, like, it doesn't know. Mhmm. Right? Like, there's no there's no contact it's not aware of anything, right, other than what it's been trained on. So, like, it's definitely a it's a hard experience to, like, just go in. And I can't imagine, like just imagine if you were, like, learning reels for the first time.

Valentino Stoll [00:23:07]:
Right? Or Ruby or, like, even just, like, restful APIs. Right? Like, I just remember those concepts being, like, you know, challenging to understand. If you have something, like, that's just generating stuff and you don't really understand how it works, like, you could lose a whole day just, like, figuring out a mistake you made. Where if, like, you know, you instead followed some tutorial that somebody wrote, like, maybe you would have a different experience. You know? That's still doing that, though. You have the same a similar experience sometimes if you, like, are missing a package or something like that. But, like, definitely more frequent with chat gpt.

Charles Max Wood [00:23:49]:
Yep. So CodeBuff and Ader, those are on the command line. Right?

Valentino Stoll [00:24:01]:
Yep. Yeah. Those are all command line. I mean, you know, there's so much Ruby stuff out there now. Right? We we had, Scott on from Sublayer. Sublayer is awesome. Like, fully Ruby, like, developer happiness, like, AI helpers. Right? Like, you can get it to, like, watch your file system and perform actions with AI.

Valentino Stoll [00:24:27]:
You could do all kinds of crazy stuff with it. I I have one where, I'll feed it a Ruby file, and it generates a spec for me. So if I'm, like, you know, prototyping a new module or class or something like that, or some Ruby code, I could just set if I, like, wanted to turn it into something that I wanted to share with people, I've you know, I hadn't made a spec yet, but I was abstracting and just working on design concepts. And now alright. I flesh this out. I wanna, like, test it, and I'll go and I'll say, hey. Here's a Ruby file. Like, can you create a on our spec test for this? And I just have a single command line command, and I just feed it the Ruby file, and it generates the RSpec test for me.

Charles Max Wood [00:25:10]:
Oh, wow.

Valentino Stoll [00:25:11]:
That is awesome.

Charles Max Wood [00:25:13]:
I've been going through that with one of my clients' deals where, like, yeah, they they've got this heinous, you know, class that has a bunch of stuff going on in it. And, yeah, I was like you know, they're like, hey. You gotta speed this up. And

Valentino Stoll [00:25:32]:
I'm like,

Charles Max Wood [00:25:33]:
I am not messing with this thing until I have a test on it. Right? I mean, just just so that it I know that I didn't change the behavior, not necessarily because the behavior is correct. Though I'm sure it's mostly correct because they've been using it that way for a while. So, yeah, that sounds really handy.

Valentino Stoll [00:25:51]:
Yeah. And, you know, even too on their, I think on their docs, they have, like or maybe it's on YouTube. Scott has this demo where, he basically creates a, you know, a tool that, like, let's tell you can tell it, tell the tool, okay. I here's this file. I the tests are failing. Get them to pass. Right? And it'll go through and run through the code and, like, get the test to pass.

Charles Max Wood [00:26:20]:
Oh, wow.

Valentino Stoll [00:26:22]:
And so, like, that's a more, like, advanced, con like, thing you can use it for. But, like, yeah, I mean, I feel like we're just kind of starting to scratch the surface here. Yeah. I mean, it it's hard because, like, all of these large language models, they're they're not trained necessarily on Ruby. Right. Right? And so, like, there there there's obviously a small sample in there or it wouldn't be able to do what it Mhmm. Can. But it definitely will like, if you're using Chat GPT heavily, you'll see it, like, use Python related standard libraries for Ruby.

Valentino Stoll [00:27:03]:
Right? And you're like, wait. That doesn't exist. Like, how do where where are you requiring this, like, you know, data frames or something like that? Which there are data frames in Ruby, just not, like, natively. Right?

Charles Max Wood [00:27:18]:
Yeah. I asked it to so I basically said, hey. I want to run Whisper locally to get, diarized, which means or a diarized transcript, I should say. So it transcribes it, but then it assigns, you know, speaker 1 said this, speaker 2 said that. And Whisper doesn't do because I knew that Whisper doesn't do diarization out of the box. And so, yeah, its answer was install these Python libraries and then call Python from Ruby, It's fine. You know? Okay. But, you know, because because I don't know that there is a Ruby library that'll do it.

Charles Max Wood [00:28:01]:
But, yeah, it was it was interesting. And in fact, I think it started out saying, yeah, generating diarized transcripts for a podcast episode with multiple guests using a local installation of OpenAI's Whisper model in Ruby requires the following steps. Install Whisper locally. Whisper is a Python library, so you need Python installed. And ensure that you have the required dependencies, so I have to install FFmpeg, and then it says it doesn't Whisper does not natively perform speaker diarization, so you have to use a diarization library. And it get tells you to use pyin note dot audio, which is also a Python library. And then it says integrate with Ruby. And so, yeah, then it's telling you to, you know, write this quick little Python script and then call the Python script from Ruby.

Valentino Stoll [00:28:53]:
When it comes to, like, doing, like, larger scale builds Uh-huh. Right? If you if if you're trying to get chat gpt to, like, build a full fledged command line application as an example, right, like, it's gonna it's gonna struggle. Right. There's gonna be a lot of back and forth. You may have multiple chats open. You know, it's gonna be difficult. Right. The one thing I have used that's worked well for that kind of thing, is, honestly, Claude.

Valentino Stoll [00:29:23]:
Anthropics Claude, setting up a project for that specific thing that you're building, creating an overall context, with the purpose that you're using it for to build, and outlining what all the requirements are in that. And then you could just start iterating through the chats to implement the specific features. I use that all the time. And the code it outputs, it can, like, start in, like, building on top of itself. So it has these things called artifacts, which are just the files that it generates. Right. And you could add them to the project as it creates things that you like, and you can edit in context. And start including it in the project, and it'll literally build the whole application just, like, in front of you.

Valentino Stoll [00:30:11]:
And it it's a little funny because there's a there's this project called E to b, developer, where they somebody has built basically, like, an open source version of this, of Claude's artifacts. Or, again, you can, like, kind of spin up your own, like, alas, you know, like, a AWS instance and run have, like, the AI literally, like, run files and and create files and run the the scripts and stuff. And so what people do with it ultimately is, like, you can you can get it to literally make, like, a front end game or, like, the if you're building, like, a web app, it'll, like, build the actual app and run it in the browser for you.

Charles Max Wood [00:31:00]:
So, I mean, this this kind of because, I mean, we we talk we started talking about, okay. How do we enhance our development experience with AI? I talk to people, and they're afraid of AI taking their jobs. And so it sounds like you're getting real close to saying, you know, somebody with a minimum level of prompt engineering experience might be able to do it.

Valentino Stoll [00:31:26]:
Well, there there's a saying in the AI space, garbage in, garbage out.

Charles Max Wood [00:31:32]:
Fair.

Valentino Stoll [00:31:35]:
And so, there's a yes or no to that. Right? Like, is it gonna take all of our jobs now? Right? Like, honestly, it's like giving people superpowers. Right? Like, whatever powers you do have now, like, that's all your knowledge and all your skills that you've accumulated, or even if you're just starting to accumulate them. Right? Like, it it basically just, like, gives it it, like, amplifies all of that. Mhmm. So, like, if if you're, you know, if you wanna be, like, a senior dev, like, you could honestly just start today using AI tools.

Charles Max Wood [00:32:13]:
Right.

Valentino Stoll [00:32:14]:
And you'll get pretty close. Right? Like, maybe maybe, you know, your job won't consider you that, but, like, you'll definitely start to see a considerable improvement in, like, how quickly you can accomplish things.

Charles Max Wood [00:32:29]:
Right. I I think I think the way that I think about it is more along the lines of, like just because you're talking about it the same way I'm thinking about it is in the, hey. This is a really, really powerful tool. Right? And so it can shortcut a whole bunch of things that we used to just go and have to kind of reinvent by hand on a regular basis. Right?

Valentino Stoll [00:32:52]:
A perfect example is, like, the, you know, post generator, aspect. Right? Like, let's say you do rails new, and you're really just trying to, like, get a page up that's, like lets you see users, right, or whatever the resource you may have. You know, there's a very specific series of steps you follow just to get to that point where you can start to crud through. Oh, I wanna add this user with this Mhmm. Or I wanna add I want a contact list. I wanna add people. You know, like, the AI can help, like, through all those steps so that you don't have to focus on all those upfront. Right.

Valentino Stoll [00:33:28]:
Right? Like, you could just get to that page and be like, okay. Great. Now, like, all of that initialization configuration aspect, which the generators start, but you have to, like, finish out. Like, that finishing out portion is done too. Right? Like, you can sidestep a lot of the, you know, the tidying up that comes from generators, which is kind of exciting. Right? Because, like, that aspect of programming is, like, widespread. Right? Like, the idea of, like, okay. I have a template that I'm working off of, and I wanna customize it to get to, you know, ground 0 of my application.

Valentino Stoll [00:34:05]:
Mhmm. And, like, you have to get through that, you know, series of steps that you're just stepping through. And, like, AI is great at that. It's great at stepping through stuff, especially when all of those requirements are predefined. Right? Like, Rails new with what? Right? Like, you can Rails new any number of things. You could base it off an existing template you have. You know, if you have a gem you're building for Ruby. Right? Like, bundle gem new.

Valentino Stoll [00:34:35]:
Mhmm. You know, you have, like, all of your existing authorships and, like, where you're gonna publish it to. Like, there's just, like, a lot of details that you end up having to add every time that gets old. Right. And it's, like, repetitive. And, like, the more things that you could just, like, get out of the way and just start building like, I I bet right now, if you looked at rubygems.com, like, there would be a huge spike in published gems.

Charles Max Wood [00:35:05]:
Mhmm.

Valentino Stoll [00:35:05]:
I I don't doubt that right now. And I feel like that's maybe gonna be where the jobs aspect comes in play here is that there's gonna be a lot more maintenance burden. Right? Like, you know, we can we can create, exponentially, and, main maintenance is gonna drag behind there.

Charles Max Wood [00:35:29]:
Right. Yeah. I think well, I the rest of the thought that I was trying to make, and then I wanna kind of address the other piece that you're talking about here, is that, yeah, effectively, you have these tools that, you know, if you're still gonna have to gain experience the same way the rest of us do. Right? So you're you're gonna use AI. It's gonna generate some stuff, and then, yeah, you're you're gonna walk into the same walls that we did. You just got there a little faster because you didn't have to go and slog through all the stuff that you already knew how to do, right, to get there. And so I think that's where if you were already a senior developer and you use these superpowers, then you can use the tools essentially and say, I need this refined this way. Right? This isn't quite what I'm looking for because I know that if it if it's put together like this, I'm opening myself up to this problem later.

Charles Max Wood [00:36:23]:
And so, hey. Can you handle this too? Right, and and then it can modify the code.

Valentino Stoll [00:36:30]:
I mean, you bring up you bring up a great point. Like, if you're using AI as a tool and you're getting hung up on something, then you're using it wrong. Right? Like, if, if you're using the tool and, like, you're kind of banging your head on, like, getting it to do what you ask Mhmm. Like, it's it's more than likely that it it's just like you're you're not using it the right way. Right. It's, like, kind of funny because, like, that's like a mem. Right? Like, that's like the holding you're you're holding it wrong from Steve Jobs. Right? Right.

Valentino Stoll [00:37:12]:
But it's so true. Like, you know, like, these the the AI tools are built, like, in a very specific way. And if, like, you're not seeing the results you expect, like, it's you're you know, it's not being used in the way that it it should be.

Charles Max Wood [00:37:26]:
Yeah. You need to give it more context or ask ask it in a more specific way or a more appropriate way.

Valentino Stoll [00:37:32]:
Or approach it completely differently. Yeah. Right? Like, there there are so many ways, to get it to do the same thing. Mhmm. And so, like yeah. If if you're like, that's kind of, like, the beauty of AI is, like, you can literally scrap everything and start over, like, pretty quickly.

Charles Max Wood [00:37:49]:
Yeah.

Valentino Stoll [00:37:50]:
Right? And, I I would say if you're, like, try trying to explore the realms of all of this stuff, like, use the the the interfaces that make the most sense to you. Right? Because there are so many, and, like, you're if if you're fighting it early on, you're gonna continue to fight it.

Charles Max Wood [00:38:09]:
Yeah. Yep. And but I I think overall I I guess to a certain degree then if it gives developers superpowers going back to the idea, is it going to take jobs? If it if it gives us superpowers and it makes us that much more efficient, then and and this may be more of a, like, a business philosophical question than an actual, like, practical, you know, are they gonna fire developers? Does that take away jobs, or does this just mean that, hey. Look. We've got x budget for developers, and so now we if we train all of our people to use these tools to enhance what they can do, we can get this much more done. Right? And so do we actually lose jobs, or maybe do we lose junior developer jobs, which seems kinda shortsighted because we we are going to eventually need more senior developers. Like, how how do you see that shaking out in in the grand scheme of things, or do we just not know?

Valentino Stoll [00:39:15]:
I mean, I see it as more transitional. Right? Like, the common analogy that I've heard is, like, the transition from horse and buggy to Uh-huh. Automobiles. Right? Like

Charles Max Wood [00:39:28]:
Right.

Valentino Stoll [00:39:28]:
Very similar modes of, like, transport and that you have wheels. Right? Right. And you have, like, somebody steering it. Mhmm. It's just a matter of what's powering it, right, that

Charles Max Wood [00:39:41]:
it changes.

Valentino Stoll [00:39:42]:
But the infrastructure and things related to it and all, like, as an example, whips, like Uh-huh. You know, the accessories around all of this stuff, are just changing shape. Right?

Charles Max Wood [00:39:53]:
Right.

Valentino Stoll [00:39:53]:
But the underlying infrastructure around it is still very much the same. Right? Like,

Charles Max Wood [00:40:00]:
you know less people that shovel poop and more people that, are machinists and auto mechanics.

Valentino Stoll [00:40:06]:
Yeah. Exactly. I think that's ultimately where we're gonna get into is, like, more specialized aspects. Right? And, like, that's honestly what we've been seeing taking shape before AI started, as, like, frameworks become more popular, and, like, Kubernetes as an example. Right? Like, all of these abstractions. I mean, DHH makes a great point, like, about abstractions in general. If you could abstract away, like, the concepts, in a way that, you know, makes it so that you have a a more straightforward point of use. Right? Like, all the details, like, somebody else is working on those.

Valentino Stoll [00:40:48]:
Right. Right? And you can, you know, rest assured that, you know, those people that are specialized in it are gonna produce you know, that make it easier and, more modular and extendable for your general purpose use. Right? Right.

Charles Max Wood [00:41:07]:
So I'm gonna shift gears on you just a little bit because we we've talked about using AI mostly to generate code, and then you were talking about how you can use Claude to effectively, incrementally generate basically an entire application. Actually, I'm gonna change my question because it it came into my head as I was talking about this. So if if you've got something like Claude that can generate pretty much an entire application, I mean, are there limitations to that? Like, are there are there areas where you may tell it you want it to generate a thing and it's just not you know, it's not gonna be good at that or it's good at to it up good at it up to a certain point, and then after that?

Valentino Stoll [00:41:50]:
Yeah. I mean, I definitely see limitations. Right? Like, it's good up to a point. It it's good at, like, cobbling together, like, you know, MVP or, like, a first version of something. But as soon as you want to add something new or make changes to it, it starts to break down pretty quickly.

Charles Max Wood [00:42:09]:
Right.

Valentino Stoll [00:42:10]:
And and what you end up having to do is break it apart. And, I mean, honestly, very similar to just general software engineering. Right? It's like you break it apart into smaller pieces and then focus on those smaller pieces. Yeah. And I know Kent Kent Beck has, like, a great, like, saying around this, on, like, you know, make the change easy and then make the easy change. Right? Like Right. And that's ultimately what ends up happening as you start to develop, like, things with AI, on a larger scale.

Charles Max Wood [00:42:42]:
So you kind of answered the other question I was gonna ask, which was, so let's say I have, like, a bunch of code. I don't wanna say legacy code because people take that to mean different things. Right? If you read Michael Feathers, it's just code without tests. But, you know so you've got this older code that, you know, was written, I don't know, 5 years ago or something that still works, but you find, hey. Maybe I wanna refactor it so that it's easier to maintain or I want to I want to add a feature to it. Right? And so I was gonna say, mostly, we were talking about generating code, but, yeah, what about modifying code or refactoring code or rethinking code? And it sounds like the answer to that is, yeah, you you take the relevant parts out. You tell your large language model about it. Right? Here here's here's my view.

Charles Max Wood [00:43:37]:
Here's my controller. Here's my model. You know? Here's the feature that it's supposed to implement. You know, I need to add this other feature and then see what it does with it.

Valentino Stoll [00:43:47]:
Yeah. I mean, pretty much. And, you know, circling back to, like, the the more, you know, the more point of use tools like Ader or, like, Code Buffer or something like that. You know, like, it it can gather that context for you. Like, the the most difficult part, like, of the whole refactoring aspect and making modification is, like, the coat the, you know, file spread. Right? Like

Charles Max Wood [00:44:19]:
Yeah.

Valentino Stoll [00:44:19]:
If you have this giant, you know, service class that you've just put everything in to make the abstraction easier, and it's just becoming too unwieldy to make changes to it, and you wanna break it apart into smaller, pieces, so that the responsibilities are broken out appropriately. Right? Getting it to extract those and make new files and things like that and getting it to orchestrate all of them, like, that kind of change becomes more difficult. And so, like, that's where, like again, back to the specialists, like, you know, that's why I don't think our jobs are going anywhere necessarily, is, like, you know, it doesn't know how to make code friendly and easy to read. Right. Right? And It just knows how

Charles Max Wood [00:45:06]:
to make code like what it's already been trained on.

Valentino Stoll [00:45:09]:
Exactly. And so, like, let's say even that you get it to train on a whole bunch of code that you have that is in a pleasant way, Like, it'll get to a point where, you know, you're trying to do something novel. You're trying to, introduce a new concept, and, like, it doesn't know how to break apart the existing, design concepts, and apply it to the new novel approach, of implementing something that you're trying to do. So, like, it might be able to get, like, okay. We want a service class. We want to, you know, encapsulate this form logic in a object oriented way. It can do these abstract concepts, but, like, the actual implementation of the whole flow, starts to break apart, and, like, it'll just become messy. And, like, and messy as a human, right, to read.

Valentino Stoll [00:45:59]:
Where, like, maybe the code works and it runs, but, you know, the naming conventions may will start to break down, and it won't make sense. It'll just make sense to, like, very specific things that it's making. Right? And it does yeah. I mean, it it doesn't have knowledge of the world at every moment.

Charles Max Wood [00:46:17]:
Right. Yeah. That makes sense. Right. So so we go from sort of the the, you know, like I said, shoveling shoveling poop, right, where it's, you know, kind of the the generic easy to pick out cleanups that, you know, it may pick up just because it's got a bunch of code samples that it was trained on that are reasonably well written, and so it, you know, it can adapt a lot of that stuff out. But, yeah, the the more involved refractors and things like that, it just does it hasn't been trained on. I get from here to here.

Valentino Stoll [00:46:55]:
Right. Yeah. I mean, it it is great for refactoring if you have this the narrow enough scope where Right. Okay. You have, like even if you have, like, 3 files and you're like, this is just too many files to handle, like, can we, like, reduce the complexity here? Like, you can guide it in a way that it can help you eventually reach the goal that you're trying to get to. But if you have to don't under right. Like, if you don't understand, like, how to help it get there, how how to help it help you get there Right. Right, then it it's gonna be more difficult to work with it than it is just you figuring it out.

Charles Max Wood [00:47:34]:
Right. So so you may be able to hand it a class with 500 lines in it and say, this class is too large. What responsibilities do you see here? And it may or may not be able to pick them out. And then if it does, then maybe you can start asking it, okay, which methods belong to which responsibility? And then from there, you can start to figure out how to have it help you divvy it up and, you know, extract the class.

Valentino Stoll [00:47:58]:
Yeah. And I'm hopeful that, like, all this reasoning stuff, like, with these models, a a lot of this comes out of there. Right? Because, like, that's ultimately where software, like, comes in play is, like, you have these, like, design, you know, buffer ahead of time that you work through to figure out ultimately what needs to change or get creative. And, like, that's very stepwise. Like and, you know, that process is like, okay. I'm thinking about doing this thing. Help me break out the steps. What approaches are there? And once you've scattered and then figured out which one pieces of it, that you actually care about.

Valentino Stoll [00:48:43]:
Right? Right. Getting it to identify those things is is nice. And then you're still left with, okay. Well, I I should make the best choice in this moment. Right. Which hope you know, I I'm hopeful that the future might, like, focus more around, like, the selection aspect of those design choices. But, yeah, there's still a lot of, like, the reasoning aspect of these things that is missing. Right.

Charles Max Wood [00:49:17]:
So are there other tools or approaches that you're using?

Valentino Stoll [00:49:22]:
Let's see. What else is in my toolbox? I mean, yeah, I mean, for design stuff, I definitely use that, software architect mentor 1, just to to hash through ideas. Uh-huh. I use Langchain a lot. Langchain RB has some great abstractions around, working with AI development, and integration. We talked about RAIX, just great, like, Rails plug in to just, like, get your Rails app hooked up to, various AI related design things.

Charles Max Wood [00:50:06]:
Yeah. And it there's Ray, and then there's Ray Rails. Yep. So the the one is the Ruby extension. The other one's the Rails.

Valentino Stoll [00:50:14]:
And and to be honest, LaneChain RB, they have LaneChain rails, which also has some similar integrations.

Charles Max Wood [00:50:20]:
Right.

Valentino Stoll [00:50:21]:
And then there's the whole agent side of things too, which

Charles Max Wood [00:50:29]:
Isn't that what Ray is kind of focused around is building those agents, or are you talking about agents that people have already built for Ruby stuff?

Valentino Stoll [00:50:38]:
So there's, like, there's 2 ways of thinking about it. Like, if you're just, like if you wanna augment your applications with AI, like, use it as a tool, like, that's more like Ray or, things like that where you just wanna introduce, hey. I have this model, and I wanted to auto generate stuff based on these column names, or I have this prompt, and I want to guide through a process. And you can create kind of, like, these abstractions around those ideas.

Charles Max Wood [00:51:06]:
Yeah. That that's the level that I'm looking at working in. So, for example, with

Valentino Stoll [00:51:11]:
what

Charles Max Wood [00:51:11]:
I've built for top end devs, I'm basically to the point now where I'm starting to show other people how I run things, and they're telling me that they want my platform as much as they want my method. Right? And so I'm imagining, yeah, you have something that you built in Ray, and it's essentially, you know so, like, when, our guest today I almost said his name, but I don't wanna call him out. He's a great guy and, you know, the he had a good reason for canceling today. But, right, so if that happened, right, I would like it to go and have my agent, which has access to the back end, right, say, okay. We're gonna we're gonna reschedule him for whenever or, you know, we're gonna pick another topic and bring it in, right, and have it intelligently do that, but then also have my users be able to, as much as they go in and just modify stuff in the form, right, that I built in Rails, but also just say, I don't like the title of episode 522. I think it needs to more be more focused on this topic. Or, you know, we we use this as an example. So, like, JavaScript Jabber, one of the episodes I kept bringing up examples from Rails to illustrate points.

Charles Max Wood [00:52:30]:
Right? And so the AI generated title that wound up getting put in there without me catching it had Rails in the title, and that wasn't what the episode was about at all. And so it would have been nice to be able to just tell it instead of going in and try and do whatever, say, I need a title that's less focused on you know, that doesn't include rails and talks about this topic instead. And then have it smart enough to go and generate a new title and ask me if that's okay kinda thing. Right? Where the UI is now, I can either speak to it or type into a chat and have it do the right thing. Reschedule this episode. Okay. I'm I'm gonna go modify it in the calendar. I'm gonna go send new invites to the guest and the host and right? Do all the other process things because it has access to the back end of my system.

Charles Max Wood [00:53:18]:
Does that make sense?

Valentino Stoll [00:53:19]:
Yeah. That makes sense.

Charles Max Wood [00:53:20]:
I get excited about that, and I think that that is a more intuitive, interface for a lot of business owners that literally just want a content strategy that gets a business.

Valentino Stoll [00:53:32]:
Yeah. I mean, if you're just trying to supplement your existing business, right, like, using something like Ray or or Langchain or or one of these other supplemental libraries, right, like, it it makes a lot of sense. It just hooks right into it. You don't very minimal, modification and, like, long term, support just, like, is super easy to modify and update the prompts pretty easily. Right? Mhmm. But if you're trying to get, like, something more complex out of, like, the AI systems, That's kind of where, like, agentic system design comes in play. And that's, like, where you want, like, you know, AI to to do a specific job and, like, a chain through a bunch of steps. And so, like, there's tools like active agents as an example.

Valentino Stoll [00:54:20]:
Justin Bowen, he just released these, this framework, which is pretty awesome, for managing, agentic system flows like that. And then there's, like, you know, Alex Rudolph, we had him on. He's the Ruby Open AI team author. Right?

Charles Max Wood [00:54:41]:
That's a good dude.

Valentino Stoll [00:54:42]:
He he has AI engine, The AI engine, Jim, it's with railsai.com. And that he has, you know, assistance, you know, framework built in, where you could just hook into to get various code, like, you know, to do stepwise things with. Yeah. There's just like a it's like a if you're looking to cobble the like, one of the greatest things I saw was actually from Toby Lukett from Shopify. Mhmm. He gave this, like, internal, like, presentation where it was all developed by AI. And he had basically, like, made these little agents. He made a off like, a virtual office, and this was the program.

Valentino Stoll [00:55:39]:
And the virtual office had individual agents, which were basically just people with a very specific role, like a software engineer, a marketing person, you know, research assistant, you know. Uh-huh. And each person each agent had a loop. And it went through, and it thought about what it had to do. It, like, had some tools available to it to perform that task. Right. And then every periodically, all of the agents would get together, and they would, like, have a meeting. Right? Mhmm.

Valentino Stoll [00:56:12]:
And, like, they could if they needed information from another agent, like, they could reach out to the other agent and work together on producing those details. Right? And then, you know, what you can do is is you could scale this. Right? As you could say, okay.

Charles Max Wood [00:56:26]:
Sign it.

Valentino Stoll [00:56:27]:
I I have want, like, 5 developers' agents. Right? Like, I want 5 marketing people, on this effort, and they would all work together and, work on scaling and then, conferring, their judgments together, for better results. And if you think about it again, like, he he basically said, well, then you can also scale your offices. Right? Like Right. So, like, let's say I have one office working on this. Like, I have many offices working on this, and maybe we're they're all working on their own different things, but ultimately coming together for the business side, like, right purpose. And so it's really interesting idea of, like, these virtualization, like, containers of all of these very specific things doing very specific tasks. And so if you're want to, like, build a business around that idea, like, you're gonna go through some kind of agent or assistant

Charles Max Wood [00:57:21]:
programming. Yeah. Yeah. And and that's that's what I'm excited about. Right? I just see all kinds of opportunities with that. Was there anything else that we should dive into here? We've been talking about an hour.

Valentino Stoll [00:57:33]:
I mean, I could keep going. There's so many there's so many

Charles Max Wood [00:57:36]:
people here.

Valentino Stoll [00:57:38]:
Yeah. I mean, so the there the the latent space podcast is just incredible. Yeah.

Charles Max Wood [00:57:47]:
I just started listening to that.

Valentino Stoll [00:57:48]:
Oh my gosh. They they are just, like, in it deep. Right? Like, if you're if you want your mind blown about, like, what is happening in the AI space, like, they're exposing it pretty great. And one one thing that is, like, frequently talked about is, like, the importance of, like, evaluating, the outputs, right, and getting benchmarks. And so, like, 2 of these concepts are, like, you know, the hugging face has a great, like, library on, their eval framework. Let me see if I can remember what it is. The eval. Yeah.

Valentino Stoll [00:58:30]:
Eval guidebook. And so the they have, like, basically, this, like, you know, how do you get, run tests against these outputs so that you can guarantee that, they're doing it what you what you want of them. Right? Because that's one of the biggest things. It's like there's so much variability in their output. Right? Like, it's token by token. So, like, if it gets off track at any point, like, it could all of a sudden, like, break down pretty easily. And if you have that hooked up into a a series of processes that depend on each other, right, like, that falls apart pretty quickly. And so, like, setting up these kind of, like, benchmarks and evaluations is just like, there's a whole industry, like, focus on this.

Valentino Stoll [00:59:16]:
Right? And that's where you get these, like, leaderboards that benchmark, all of these models based on different criteria. Like, how well do they, you know, one I just saw recently, there's a, an evaluation or a a leaderboard for, for doing debates. Right? Like, how well do the models, like, argue on a point? And so there's, like, a new leaderboard now where which models perform best at this. Right? Like, which which ones are most convincing?

Charles Max Wood [00:59:51]:
Right.

Valentino Stoll [00:59:52]:
And it's it's pretty great. And so, like, there there are a bunch of leaderboards that and that all of them are based on these evaluations, right, where you have output and you give it input and you expect a very specific reconstruction of that every time. Right? And so that's actually something I focus on quite a bit at work, building stuff for physicians. Right? It's pretty pretty important to get it to do exactly what you want.

Charles Max Wood [01:00:20]:
Right. That's amazing. Yeah. And latent space is what? At SWIX or Sean Wang? Yep. And Alessio, I can't remember his last name.

Valentino Stoll [01:00:33]:
Yeah. I mean, I would Hugging Face is definitely like they they are awesome. They're just killing you on all fronts here. Oh, yeah. He did the robotic stuff. I don't know if you play I have a little, they have this thing called the robot, and it's a robotic arm that you can train, with AI just like on your MacBook. And you

Charles Max Wood [01:00:56]:
Oh, that sounds fun.

Valentino Stoll [01:00:57]:
You point a camera at it, and you, I I've built it like the you build 2 of them. Right? Like, one to to train it with and one to to do things with. And, it has this thing called telepresence where it repeats, you know, what you're doing with with one robot arm to the other. And then it it, you know, trains and, model based on that. And so you could train it to do different things. So, like, pick up you know, sort m and m's or sort Legos or, you know, pick up I'm trying to get it to write, like, hello world. Right? And you could train it to do this just, like, by having it watch itself and repeat those, training examples, like, in a virtual environment. Right.

Valentino Stoll [01:01:37]:
So they have, like, this whole framework they built around that. It's it's so fascinating. Yeah. The robotics aspects of all of this stuff is pretty wild.

Charles Max Wood [01:01:47]:
Yeah. Sounds like a whole different can of worms. Yeah. So at the end of the day, if people are looking to enhance their, you know, their code stuff and we didn't even get into, you know, JavaScript in front end if you're doing stuff with that. But, you know, beyond kind of the the stepping stones that we've already talked through, right, are are there good places for people to just kinda keep an eye out and go, you know, see what else kinda crops up?

Valentino Stoll [01:02:22]:
I mean, really, just start small. Like, this space is is always gonna change fast, and there's gonna be new things. But there's, like, foundational concepts and tools, like, becoming popular. Right? Like, langchain is, like, a widely popular thing that's just super easy to get set up and running with.

Charles Max Wood [01:02:44]:
Right.

Valentino Stoll [01:02:44]:
Granted it's in Python, and that's fine. Like

Charles Max Wood [01:02:48]:
Yeah. But it looks like, you know, you've got Linkedin RB, so it's it's like calling a database or, you know, another API service or something.

Valentino Stoll [01:02:57]:
Right. I mean, really, it's just like finding those abstractions that just help, like, get to the point and learn the basics. Right? Like, the the best tool you can find to do that with, is gonna be the the best one. Right? Because, like, there's so many concepts to learn. Like, just break down, like, what how you chain it all together. Right?

Charles Max Wood [01:03:17]:
Right.

Valentino Stoll [01:03:17]:
And so, like, start with the very basic small stuff. Like, sublayer if you're in Ruby, like, sublayer is a great starting point. Like Yeah. You open up a Ruby file and you include sublayer, and you can perform some LLM magic. Right? Awesome. Awesome tool. Create different actions. Like, they have a library.

Valentino Stoll [01:03:36]:
You can go and just, like, you know, take all, you know, the various actions that they publish. Right? So if you want it, as an example, like, red green tests passing, like, there's, like, a you know, an agent for that you can download and get running, just from a URL. So, like, yeah, I would say just, like, pick one tool and learn it. Like, that will get that'll that's gonna be the fastest way.

Charles Max Wood [01:04:05]:
Yeah. I guess, at this point, we'll go ahead and do picks. Yeah. I mean, I'm just sitting here kinda thinking through all the implications of all the stuff we talked about. Like, because because, you know, I I knew I knew that there was a whole level of stuff that I hadn't seen. And and one thing that I'm I'm really wanting to do or thinking about doing here is just, putting together, essentially, tutorial videos on how to do a lot of this stuff. Right? It's like, hey. Here's how you, you know, work through some of these things or use some of these tools just to give people an idea and an example.

Charles Max Wood [01:04:45]:
Anyway yeah. Let's go ahead and jump in with picks, and then we'll wrap up. But, yeah, we've we've got all kinds of links in the on the YouTube broadcast that says it's about solid cash. But, yeah, why don't why don't you go ahead and go first? What what picks do you have?

Valentino Stoll [01:05:05]:
Yeah. I mean, I have to, you know, call out the Ruby AI Builder's Discord. Like, awesome.

Charles Max Wood [01:05:11]:
Oh, they're so great.

Valentino Stoll [01:05:13]:
Honestly, if you're looking for one thing to, like, learn all this stuff, like, just join that Discord. You'll learn plenty. And people are just, like, so willing to help out and point you to to where you need to go, and what you're looking for. Super helpful. Sublayer also has a Discord, if you're looking to dive into that as well. Yeah. I mean, next to that, yeah, I'm just chugging away on this, like, Ruby lang AI project I started. It's, like, very slow progress.

Valentino Stoll [01:05:54]:
But, ultimately, I'm, like, trying to fine tune a model, a very small model. They call them, you know, s m l instead of l l m. But I'm trying to, like, fine tune smaller models that are very, purpose driven for Ruby generate cogeneration, with the ultimate goal of being able to, like, you know, further fine tune it on existing code bases so that you can get it to generate things based on the context of your organization's code. And I'm I'm making some pretty good progress. I'm trying to use as much Ruby as I can. And so I have, you know, this pie call library that I'm using to ultimately just shell out to Python for the things that Ruby can't do yet. But that gap is slowly closing in thanks to Andrew Game, who's just like a monster with, all of this machine learning stuff in Ruby. He he is just putting out stuff left and right.

Valentino Stoll [01:06:57]:
And I guess on that topic, there is a, a gem called informers, that he has that lets you run inference for Ruby, and it's really great. You could basically just, like, point a Hugging Face model at it and run inference using Ruby. Super fun stuff to play with. If you're just trying to, like, summarize something as an example, like, there are great smaller models that do specifically that, and they work great. You don't need, like, to reach out to OpenAI every time when you just want something small. The output's much faster. Right? So check that out.

Charles Max Wood [01:07:43]:
Yep. Alright. I'm gonna do some picks. I'll just do the board game pick. Lately so last weekend, I was, teaching games at the game board game convention again, and, so we had 5 games that we were demoing. So I'm gonna pick some of those, over the next 4 or 5 weeks. One of the games I've already picked on the show because I played it at Salt Con in March, and so I'm not gonna pick that. That's challengers if you haven't checked it out.

Charles Max Wood [01:08:16]:
Very fun game. The the game that I'm gonna pick today is called gnome hollow, and I have to say, so there are different aspects of board games. I haven't really discussed this much on the show. There are different aspects of board games that make them fun. Right? So some of it is kind of the flow of the game. Some some of it's, you know, how much you have to think about what you're doing and how much you have to plan ahead, and whether or not you like that kind of a game, you know, and so that's down to, like, complexity or things like that. Not always. Some of it's, like like, for example, gnome hollow has a pretty simple cadence to each round.

Charles Max Wood [01:08:53]:
It's just it's just the thinking ahead. Right? Because you're you're gonna build something out and then you're gonna capitalize on it, and then, there's some movement aspect and you have to decide what you're gonna do every turn. So the way that it's played is you're trying to complete, mushroom rings in the forest. K? And, you know, your mushroom rings don't have to be round, but they have to be a complete loop. So, you know, you can build a 3, a 4, a 5, 6. Yeah. There it's hex tiles, and so it's the number of hex tiles that are on the on the loop that you made. And you get you get to move a marker down when you complete a a ring.

Charles Max Wood [01:09:33]:
Right? As long as there's a space for it. So you can do 1 3, you can do 2 fours, and then you can do, like, 4 fives, 4 sixes, and 4 sevens. You don't have that many markers. And on the sevens, if you move one down, 1 2 of the rewards on the sevens is you get to move a second marker down and get another reward. So, anyway, it's pretty cool. The different rewards, either modify the game board or they give you some other reward that gets you points. So, if you complete a loop for every 2 loops you complete or every 2 markers you move down more appropriately, you get to discover a wildflower, and then you get the wildflower, you get a wild as part of your reward for discovering a wildflower, and then the rest of them go up for other people to be able to collect. And so you get points for every wildflower you collect, you get points for every marker you've moved down into the reward space, and then you get points when you complete the loop or the ring, you get the mushrooms that are on the ring, and so then you can go to the market and sell the mushrooms, and those are the 3 ways to get points.

Charles Max Wood [01:10:40]:
You add them all up at the end. That's how you score. So then it's just a matter of getting the, you know, enough of the right kinds of mushrooms to make your trip to the market worth it. And then the other thing is is if you say you cash in 5 red mushrooms, you actually fill the spot for 5 red mushrooms, and nobody else can do 5. They can do 6, they can do 4, but they can't do 5. And then when somebody does 6, right, then that one that is also gone. Right? So maybe you go 7 or 8. And so, the different mushrooms are worth different amounts because they're, you know, different rarity on the hexes you place.

Charles Max Wood [01:11:19]:
So you place 2 hexes, you collect the rewards for completing your loops, and then you move your gnome and you move you move your gnome to reserve a path that will eventually become a loop, or you move your gnome to a sign, which is one of the rewards you get for completing a loop, or you can move it up to the market and, you know, sell mushrooms, or you can go and collect the flower. And, you know, and so then at the end of the game, what are you you've accrued in the different kinds of flowers and stuff, that's that's how you win. So, you know, I played it, like, 3 or 4 times at game convention because that was one of the games that people wanted to learn. And, anyway, it's it's a lot of fun. Board game geek weights it at 2.17, And so, you know, kinda your average gamer with enough complexity to make the game interesting is about a 2. So this is just slightly more complicated than that, and the complication really is, you know, what do I get for completing the loop? How do I make the loop large enough to get the reward I want? Right? Instead of a 4, make it a 6 or a 7, you know, and you have to plan ahead to make your path go the right way. And then, you know yeah. When you move the gnome, do I move it to assign to get more mushrooms? Do I move it to the market? Do I move it to the thing? And which ones do I sell back? And is somebody gonna sell back the 8, and I have 8, so now I can only sell back 7? So that's where the complexity is is it's in that play so that you're making the right moves to accrue the most points.

Charles Max Wood [01:12:52]:
And, anyway, super fun game. It takes about 45 minutes to play it, which is also great. Plays up to 4 people. I played it with 2, with 3, and with 4. I think with 3 and 4 people, it's more fun because you have a lot more going on in the board and you have a lot more options that open up more quickly. But yeah. So gnome hollow and and the artwork on this one is awesome. It it's it's fun artwork.

Charles Max Wood [01:13:18]:
There are a million little pieces. They they give you a whole bunch of bags and it's not really clear how you're supposed to get it all back into the box. I mean, it all fits fine. It's not that's not the problem. But it's, like, okay, do I separate all out the different kinds of mushrooms and do I separate all the different, markers in the different bags? If I wind up buying the game, I'm just gonna bring in my own bags and I'll keep them all separate. In that way, I can just parcel them out. But, yeah, we wound up combining a bunch of stuff and you wind up having to sort it back out when you pull the game out, but it's fun. Very, very fun.

Charles Max Wood [01:13:51]:
The game ends when somebody moves their last marker down. You you finish out, tell that every everybody's had the same number of turns or if you run out of hexes to put on the board. And so what you do is you put aside, 2 hexes for every player that's playing. In that way, if you run out of the hexes to play, you just play off of that stack until everybody's had equal number of turns. I think every time that I've played, somebody moves their last marker down before we were out of hexes. So, anyway, super fun game. Really enjoying that. I am working on putting together an AI dev boot camp, and that's more in the vein of building out the agents like we talked about as opposed to, you know, and using some of the other tools like whisper for transit transcriptions and, text to speech or speech to text and all that stuff, right, that that's offered out there.

Charles Max Wood [01:14:51]:
I'm looking at OpenAI as kind of a baseline, but I am looking at some of the other tools like Claude and, Langchain and, Ollama or, you know, Llama 3 and some of those other tools that are out there just to give people an idea of what their options are. But, yeah, it it's gonna get into how do I bring this stuff in and what options and services are out there that will let me do it. And so it's gonna be, I guess, more focused on APIs and prompt engineering than it is gonna be on, like, how the models actually get built and stuff like that. I've had a few people ask me, oh, so we're gonna do all the the data management and training our own models, and we might get into some of that if if I'm showing you how to, like, enhance what Llama or LaneChain give you, but not a lot. It's really focused on how do you create an awesome AI experience for your customers through an agent. So, anyway, I'm gonna be doing that sometime in January, and so, that's gonna be at aidevbootcamp.com. And then, I picked up a book on Amazon that and it's, again, you know, like I said, you know, I'm kinda using open OpenAI and its offerings as a baseline recognizing that there are other systems and models that give you a lot of options, for doing a lot of the same things and maybe better at one thing than another. And, so I bought a book, and it's called building AI applications with chat GPT APIs.

Charles Max Wood [01:16:30]:
And it shows you how to use and the the, author is Alexander Petrovich, and it goes into basically all of the different API options. Hang on. It's being funny on Amazon, but it it shows you how to use, Whisper. It shows you how to use boy, it does not wanna pull it up on Amazon. But I bought it for the Kindle, and, yeah, it it goes into whisper. It goes into chat GPT. Yeah. It goes into a couple of the other options that you have on, the OpenAI platform.

Charles Max Wood [01:17:17]:
So, anyway and it and it basically walks you through using their APIs and then have build your prompts to get what you want. And so, I'm excited to dive into that. So I'm gonna pick that. And then the last pick I have is I've been, I've been do I've been training for triathlons again, and, specifically, my goal is to either do, Iron Ironman Maryland in September or Ironman Chattanooga in September. And so I've been picking my races leading up to that. I'm pretty excited about it. The workout regimen that I've been following is twofold. One of them, I picked up a training system on training peaks.com.

Charles Max Wood [01:18:02]:
So I'm gonna pick training peaks.com, and you can buy workout plans. So mine's a 48 week workout plan. Right? So I started it last month. And, you know, I'm on track to finish it for, Maryland. And then if I wind up signing up for Chattanooga instead, then I'll just tell it to adjust my workout schedule by 2 weeks. So that I'm ending on the right day in in September. And then the other one is I've been using the first form app. That's, one s t p h o r m, first form.

Charles Max Wood [01:18:36]:
And I signed up for transformation challenge is what they call it, and transformation is also spelled with a p h, right, because of their branding. And, as part of the app, you get a coach. And so she's been helping me figure out my, you know, all my stuff. And so I have a referral code if you wanna use my coach and sign up. I don't get any kickbacks for this. It's literally just, hey. I'm having a great experience with this, and so, you know, you ought to check it out. And so let me just airdrop it to my computer, and I can put it in the chat.

Charles Max Wood [01:19:26]:
But, yeah, it's it's been awesome. So my trainer's name is Andrea. And like I said so I get an announcement every day where she's essentially saying, you know, hey. Make sure you're getting enough sleep or, hey. Make sure that you're, paying attention to this, that, or the other or, you know, all all kinds of different things like that, and it's really, really been terrific. And then, yeah, she checks in, like, every week I send an evaluation where I'm saying, you know, I'm a little hungry. I've been a little hungry this week, or I've been a little tired this week, or, you know, whatever. And then she'll chat back and say, you know, yeah, you needed you need to schedule more sleep.

Charles Max Wood [01:20:08]:
Right? Or, she'll look at my eating because I track all my calories in there too, and she'll say, hey. You need to eat more vegetables. Something she told me the other day. She's like, you need to eat more real food and, you know, less supplements, which is like the protein powders and stuff. And, yeah, they have a whole bunch of different supplements like the protein powders. They have, they have, like, a nootropic caffeine mix pre workout. They have, what else am I using? They have, like, an opti greens is what they call it, and it's it's greens that, you know, help with your digestion and stuff. I've got a couple here.

Charles Max Wood [01:20:45]:
I've got basically omega, which is like fish oil, and then I've got another one that's glucose disposal agent is what they call it, and it just it just helps regulate my blood sugar, which is good because I'm diabetic. And I just take it with all, you know, with the medications that my doctor's given me, and it's it's been awesome. So, anyway, I'm just gonna pick those. If you want to do an Ironman next year and you want you know, it'd be fun. I don't know. You know? I I don't know that I'd go the whole way with you because I might swim faster than you or you might bike faster than me, but it it'd be fun. So if you're interested and you think you might be there, let me know. But, yeah, those are my picks.

Charles Max Wood [01:21:34]:
Sorry. I rambled for a long time. But, anyway, I think that's all I've got. So, Valentino, thank thanks for being our expert this week.

Valentino Stoll [01:21:49]:
Yeah. Happy to. I love talking about this stuff.

Charles Max Wood [01:21:51]:
Yeah. It's it's it's cool stuff. We we need to get into some of the stuff that, you know, you and I are building with AI, but maybe that'll be another episode another time. And, yeah, till next time, folks. Max out.
Album Art
Building AI-Powered Applications in Ruby - RUBY 662
0:00
01:22:08
Playback Speed: