Episode 9

The TLDR of AI Dev: Real Workflows with Justin Searls

with Justin Searls

The TLDR of AI Dev: Real Workflows with Justin Searls

About This Episode

In this episode of the Ruby AI Podcast, co-hosts Valentino Stoll and Joe Leo engage in a lively discussion with guest Justin Searls. They explore the evolving landscape of software development with agentic AI tools, comparing traditional agile methodologies with emerging AI-driven practices. Justin Searls his experiences with refactoring and the challenges of integrating AI tools into development workflows. The conversation touches on the suitability of AI in coding, philosophical perspectives on reinforcing proper software practices, and the future potential of these technologies. Justin also provides valuable insights on configuring AI tools for better productivity and discusses his personal coping strategies with the frustrations of modern AI capabilities.

00:00 Introduction and Hosts Banter

00:30 Guest Introduction: Justin Searls

03:13 Justin's Career and Conference Talks

07:52 The Evolution of Agile and Development Practices

Full Transcript

Valentino Stoll (00:01)
Hey everybody, we are live. This is the Ruby AI podcast. I'm your co-host today, Valentino Stoll, and we have our other co-host, Joe Leo here. Joe?

Joe Leo (00:13)
Hey everybody. I would like to point out for anybody that is watching that, I actually am winning the, the shirt, war to Valentino. As you can see now is has a collared shirt and we're actually moving toward a more dressed up, version of the podcast, which is good. Get the riff raff out of here. ⁓ we also have our, our t-shirt wearing friend, Justin Searles here today. Justin, thanks for coming on the show.

Justin Searls (00:41)
Yeah, I'm embracing my riffraff status. Thank you, sir. ⁓ I've been like cycling through tri blend t-shirts for 15 years now, so why mess with success?

Joe Leo (00:44)
Yeah, yeah. As well you should.

You know, this whole thing is really just me ⁓ trying to overcompensate for the fact that ⁓ I don't have cool ⁓ programming t-shirts or I have very few of them. And Valentino seems to have an endless supply. So, you know, so the only way I can get back at him is to, you know, try to throw caddy insults here and there, but here we are.

Justin Searls (01:17)
Well, as you

know, I, ⁓ when I started my career as a, consultant at like a big four style accounting firm and, ⁓ they had a pretty strict dress code when I was at client sites, you know, I don't know if things are still this way, but like I had to wear pleated like khakis and my wife hated the like, just hate like, like flat front khakis were okay, but the pleated khakis were absolutely unacceptable to her. And I had to like explain it. She just, I don't

Joe Leo (01:29)
Mm-hmm.

Mm-hmm.

You

Justin Searls (01:46)
I could go downstairs and ask her right now. She still doesn't believe that that was like a dress code thing. ⁓ She must somewhere rattling around her head, even though I like, you know, I wear jeans or shorts 350 days a year. She still thinks that secretly I like really like platted khaki pleated khaki. So here.

Joe Leo (01:59)
You

I like this. I think

having her as a guest on the show sometime to talk about this I think would be worthwhile, be time well spent.

Justin Searls (02:11)
Sure thing.

Valentino Stoll (02:15)
It makes me wonder what address code would look like for AI agents as well.

Joe Leo (02:23)
Well, something along the lines of Justin Bowen's ⁓ active agent, ⁓ like little ⁓ brand or logo is what I'm thinking of right now. You know, a guy with ⁓ an agent's hat and ⁓ an overcoat.

Justin Searls (02:39)
You know, given what we've learned about how agents are, know, you can prime them with context. If you were to start with, you're clean shaven. You're, you know, you've, you're, you're all gussied up. You're wearing a really nice suit. Like that would probably put spin on the ball. And I wouldn't be surprised to have some researcher come out and say, Hey, when you prompted this way upfront, like you get 20 % better performance on such and such a benchmark. Yes. W E is, you know, 3 % higher.

Joe Leo (03:01)
Yeah. Yeah, absolutely.

Valentino Stoll (03:02)
Right?

Joe Leo (03:08)
Yeah.

Valentino Stoll (03:11)
I hope that doesn't translate into the real world and we all have to start wearing pleated khakis.

Joe Leo (03:17)
Well, when they start getting some more sentience and they can see what we're wearing, that'll be where the rubber hits the road. Because I don't want to show up, know, raggedy to my agent. To my agent meeting.

Valentino Stoll (03:23)
That's true.

Yeah, performance will improve if you're dressed nice, right? Yeah, for sure.

Joe Leo (03:35)
That's how I always think about it.

But we digress quite a lot already. But Justin, it's great to have you on the show. And ⁓ we were talking just a little bit earlier about some of the stuff that you've been writing about. actually, before I even get to that, so you've done a lot of writing in your career. You've done a lot of speaking in your career. But I saw something recently that said that ⁓ you were kind of at an anniversary of your last conference talk. So.

Are you not giving conference talks anymore? Did you say that that was going to be your final talk?

Justin Searls (04:13)
Yeah, so if you go back and watch the tape, at Railsworld 24 in Toronto, I was giving a presentation, actually speaking about my wife, about the application I built her called Build with Becky, which is a strength training app. You subscribe and every month she designs a new program and then that's delivered to you. It has like a workout player. It punches like.

Joe Leo (04:19)
Mm-hmm.

Justin Searls (04:40)
for being a one woman operation, like way above its weight in terms of like UX and the care that went into it, because it was really about designing ⁓ something for her that would fit her, not just her business, but the lifestyle that she wanted to be able to maintain while also being able to run such a business. And that project, just because it was a ground up, know, ⁓ Rails 7 baseline modern Rails application, it provided for me,

Joe Leo (04:43)
Mm-hmm.

Justin Searls (05:09)
tremendous opportunity to kind of take notes along the way about like all the things that you know you if you're a new Rails developer an experienced Rails developer like here's just like I don't know a dozen different areas of advice for like how to do this well and because it was for just us I wasn't like I had been in my consulting career constrained by what other people wanted to do constrained by

Joe Leo (05:33)
Mm-hmm.

Justin Searls (05:35)
institutional stuff or like all these integrations or all the things that kind of weigh you down. And because I had just sort of this open canvas, I decided to use that to build a talk. And that talk would just be like, hey, here's a lot of great ways to do things. is maybe where you'd look next in terms of how to actually build a product on top of just vanilla Omakase rails. you know, all of that was a lot of work.

It was like a 10 month project to like build the system and kind of concurrently started to put together the bones of that presentation. And it just felt like a good capstone on what had been a career of speaking as a consultant who mostly went to speak to try to drum up sales for the consultancy and maybe attract candidates. But because I'd stepped back from that role actively at test double,

Joe Leo (06:20)
Mm-hmm.

Justin Searls (06:28)
Now it was sort of just like a thing that I was still doing, even though it takes me like a month of my life to prep a talk. And then of course, I'm a real high anxiety individual and between the travel and like a month and a half, two months of my existence just gets erased off the board whenever I do one of these things. And family gets frustrated with me and I just decided, you know what, like I gotta stop at some point. And to be honest, it was an emotional...

Valentino Stoll (06:35)
Ahem.

Joe Leo (06:52)
Mm.

Justin Searls (06:57)
decision because it's like it's been a big part of my identity and it was a huge part of my career. But I think for me when I look back at all of the conferences that I've been to the people that I've looked up to the speakers who inspired me something that always disappointed me was that at some point or other they just kind of stopped showing up like none of them proactively announced. Hey, I'm done now. And I decided because I was in the first day of the conference, you know, I'm just going to say it affirmatively both to hold myself accountable, but also to give people a chance to

Joe Leo (07:18)
⁓

Justin Searls (07:27)
you know, say goodbye. And I had a lot of really, really, I think, impactful conversations ⁓ following that. And I have since. And it feels much more tidy now because like you could have the whole, you know, ⁓ the volume set of all the talks that I've ever given. And you can watch them beginning to end and hopefully appreciate some kind of arc in there as you watch my hairline slowly recede.

Joe Leo (07:47)
Mm-hmm.

Justin Searls (07:54)
⁓ But honestly, it felt like a good bookend on where I'd originally started.

Joe Leo (07:54)
You

You know, I have to say that, ⁓ well, I appreciate the, all of the thought that you put into it. Cause it probably falls by the wayside. mean, for those who have not given a talk, or, or, or even if you have my experience mirrors yours almost exactly. get very nervous before a talk, even, you know, and I, I spent a lot of time preparing and, and I've actually gotten.

back into it after a long hiatus, ⁓ where I think I just kind of forgot, forgot how anxiety producing and, how much time that absorbs. I, know, on the other side of it, you know, I do love it. I love being up there and I love, talking to folks, but, yeah, the commitment is real and the anxiety is real. And so is the travel and the time out of your schedule and time away from family. And, ⁓ and yeah, you, you want to have something, you want to get return on that investment and.

if you're not, then it's the right thing to do to say, okay, that's it for me. You know?

Justin Searls (09:05)
There's a certain amount too, where it's just like the world changed after COVID, you know, like we're, ⁓ you know, I believe you guys are involved in like artificial Ruby and the New York area. Like there are new meetups coming around. There are conferences still, but there's far fewer than there used to be. ⁓ And, you know, it's easy for me to like, as a cis white guy who's relatively privileged and already kind of made it in so far as I need to in this community.

Joe Leo (09:09)
Mm-hmm.

Yes.

Justin Searls (09:34)
⁓ I used to think about the fact that like when I was trying to break in ⁓ my first Ruby conference talk was in 2011 Rocky Mountain Ruby Marty Hott took a chance on me and I remember trying and trying and trying to get into any of these conferences and I remember being frustrated because it was almost like this roving like circus as you'd see like the same 10 speakers at every single regional Ruby conference all give the same talks I won't

⁓ name names, but like people around at the time would just, you know, they were just sort of like a traveling roadshow, which is all well and good, but they just didn't create a lot of opportunities for new speakers to kind of come up and make a name for themselves. And I think that in the post COVID era, where there's just way fewer cumulative slots to be able to do that for oneself, ⁓ me kind of just continuing to do the song and dance as I increasingly

You know either find myself repeating myself or I'm just elevated into like, you know, the the the the clouds of thought leader land where I just become a talking head, you know like we've also seen some of you know ⁓ Pre people who I previously had a great deal of respect for ⁓ Out there who gave talks a long time ago and had some good insights and now they just didn't never stopped talking and and and You know may regret that decision

Joe Leo (10:48)
Mm-hmm.

Justin Searls (10:57)
⁓ So that was for me, think a big part of it too is like make space for other people. You know, I said my piece I'm finding that I don't want to just keep going on stage and play the hits forever

Joe Leo (11:08)
Yeah,

yeah, yeah, I get that too. So yeah, go ahead, V.

Valentino Stoll (11:12)
I will say, one of

my favorite talks of yours was Make Ruby Great Again at the Keep Ruby Weird conference in 2016. ⁓

Joe Leo (11:21)
haha

Justin Searls (11:24)
That is the only time I

ever wore a suit on stage. That was in Austin. And I had a whole like Trump shtick and the election was like eight days later. boy, that aged like milk. remember everyone had a great time with it. And then we're like, Oh God, like I it's like, didn't even I failed to think about how I would feel about that. 11 days later.

Joe Leo (11:27)
Hmm.

Mm-hmm.

Yeah. ⁓

Valentino Stoll (11:39)
Hahaha!

Joe Leo (11:50)
Yeah, most of

us did. Most of us did.

Justin Searls (11:53)
Yeah, it took a decent amount of courage. Yeah, goodness gracious.

Valentino Stoll (11:55)
I still share that around. Honestly, that was fantastic. You shouldn't

be ashamed of that at all. It was comedic gold.

Justin Searls (12:03)
It was excellent satire until it was just really,

really painful. So thank you for that.

Joe Leo (12:09)
Yeah. So you mentioned your, your kind of shifting roles, ⁓ you know, sort of as maybe how you relate to engineering, certainly how you relate to test double. ⁓ I am, you know, I'm always curious ⁓ when, I come across any other, you know, leader of, of a consultancy. ⁓

because of course I lead a consultancy. ⁓ It is, you for better or worse, most consultancies like test double, like def method get labeled boutique consultancies, which usually means some kind of, in some kind of hazy way that we care a lot about ⁓ agile software development and test-driven development and XP and pooter and you know, all of those kinds of buzzwords. We take them really seriously and we iterate in our approach and all of that stuff. And

What I'm curious about is, I'm seeing this as maybe even a sort of a dividing point in the community is how that translates or if it translates into today's development with generative tools. And I'm curious what you think about that. I know you've written a lot and we'd like to get into your sort of, your assessment of

of who the winners and losers of this kind of divide are going to be. But I'm curious just upfront, you know, what happens with all of the good design test first development that we, you know, we schooled ourselves with, you know, when now we've got a bunch of agents.

Justin Searls (13:55)
There are, I mean, we can talk about consultancies and services based organizations just like as such if we want, but to your actual question, which is really like, what do we do with this basket of thing, know, practices, practices that we, practices and maybe, know, norms or workflows that became memeified or named and that we,

Joe Leo (13:59)
Hmm.

Yeah, practices, yeah.

Mm-hmm.

Justin Searls (14:24)
as maybe as consultants promulgate to our clients or attract clients through, you know, the us putting out a signal, hey, we, you know, we're, we're like this, we believe these things and then attract clients who resonate, who believe those same things, which I think both of our, our companies have done a lot of in this moment, if you're really, really fixed to that practice or to that workflow, you know, some developers love it.

Some, they love putting in headphones, sitting down, you know, focused code this very particular way that they've been honing as a craft for years, just like woodworking or something. And if you're in love with the way that you do things, then there's a certain inflexibility, right? You've ossified to a certain extent because you've optimized, just like if you write code that is hyper optimized, what you're doing there is you're...

Joe Leo (15:05)
Mm-hmm.

Justin Searls (15:21)
reducing the flexibility, you're adding additional ⁓ inflexibility or rigidity to that code in order to increase its performance, typically, is how most optimizations show up. You look at them years later and be like, boy, that looks really arcane. And it's like, well, if you just rub wax paper on the slide, you can go down 10 % faster. And if that's you, if you love coding your particular way, then right now,

Joe Leo (15:31)
Mm-hmm.

Mm-hmm.

Justin Searls (15:50)
You know with with an upheaval in terms of what is the most productive way to produce software that is being you know requested by an employer or by a client With with that being upended, you know, your favorite way of writing code is under threat Now the flip side is I think so some people get to those practices that particular way and and to a certain extent I did but

Joe Leo (16:07)
Mm-hmm.

Justin Searls (16:16)
The flip side is like, if you arrive at those practices, not because you're in love with perfectly organized code, for example, or test-driven development, or any particular style, if instead you wind up there because as patterns, find that they're just, you were shopping for the most effective way to write software, that was it, and if something better comes along, then you'll embrace that. And if this is the something better, then you're happy to discard the practices.

Joe Leo (16:38)
Hmm.

Justin Searls (16:44)
that don't have to do anymore. It's like, okay, cool. I travel light, right? That was like a common expression of a value in that era, in Agile era. Like travel light, you know, like start every project. You know, former colleague of mine called his process null process. You'd start every project with no process whatsoever and then only add things as they proved value. Forcing himself to kind of purge himself of all of these

Joe Leo (16:48)
Mm-hmm.

Hmm.

Justin Searls (17:12)
presumptions going into a new project.

Joe Leo (17:13)
Right.

I used to hear it sometimes as a strong conviction is loosely held. right.

Justin Searls (17:18)
Yep, that was another popular meme. so, so,

so, but, the, community would, you know, attract both types of people. Like, you know, I hired somebody once at test double and I'm amazed this didn't happen more often. That was just extremely fixed on like, we're going to do exactly this thing. This like, finally I get to work for, I get to work for Justin because he's completely anal retentive like I am and likes it. It like clearly likes it exactly this way. And then I had to like, you know, break the news to him. I'm sorry. Like,

Joe Leo (17:24)
Yes.

Hahaha

Justin Searls (17:46)
When you work for clients, like, delighting them is the job, not writing code your favorite way. And so if you're in the, get like, I expect to get paid a high salary to write code my favorite way. ⁓ That's a spirit of entitlement and that's not going to fly anymore. But if instead you're like, Hey, you know, like I practiced a bunch of TDD. I did all these mocking libraries. It helped me express this particular way to organize code. Now you've got to reevaluate.

Joe Leo (17:50)
Mm. Mm-hmm.

Yes.

Justin Searls (18:15)
hey, in the era of agentic AI, is that level is at the right level of distraction to even care about? And maybe the answer is no, and you got to be comfortable with that. So which just all that to say which disposition you find yourself in will will will almost certainly determine how you feel about these agentic coding tools. And that's why I think we're seeing a lot of people in the quote unquote, gives a shit about how they program community, where half are like all in and half are

Joe Leo (18:28)
Mm-hmm.

Mm-hmm.

Justin Searls (18:44)
extremely intransigent and if anything opposed to using these AI tools.

Valentino Stoll (18:51)
You know, you mentioned Agile ⁓ and that was something that like, think Rails early on adopted and maybe what made it successful earlier on, ⁓ there are a number of reasons, but you know, I feel like that work ethic definitely helped the startup world ⁓ accelerate more ⁓ efficiently, but also like, you know, manage itself once it launched.

Joe Leo (19:19)
Mm.

Valentino Stoll (19:20)
⁓ adopting those patterns and having some kind of rigor ⁓ attached to that in a systematic way. And so I'm curious, like, we're kind of seeing like a devolving of business practices as we know it, as far as software is involved, right? And so what kind of like, do you see anything replacing it in terms of patterns or systems that are worthwhile, or is it still very much like...

higher test level and we'll figure it out with you.

Justin Searls (19:52)
Well, Agile had its moment where it was for the people who are dialed in. And I think this has more to do with how people who are attracted to new movements or new ways of working or new communities or, know, sometimes that's like a process thing like Agile. And sometimes it's a language thing. ⁓ there's no s***

I'm not surprised to see that like a lot of people who joined the Node.js community in the early days and wrote a lot of the first, you know, libraries and packages for NPM got bored after a few years once it started maturing and then went off to Golang or went off to Rust to kind of, because that was the moment that they, that they most enjoy, you know, in, that, in that adoption curve. And so anyone who joined something early, like, like did an agile between 2000 and 2008.

Joe Leo (20:39)
Right, the early days, yeah.

Justin Searls (20:49)
they are a different kind of bird than the ones who joined Lite. so Agile after 2010 was a lot of like, now it's big institutions and enterprises. Like it was such a catchy word. It was actually the marketing was too good. And now it's like, you know, we often joke to like lowercase a to uppercase a Agile. Like when it got corporate, when like, you know, the scrum guys start selling certifications and stuff.

Joe Leo (21:09)
Mm. Yeah.

Justin Searls (21:16)
Like, it's not about the process, it's about the beliefs that that informed the process, right? And so like, it became about the process, it became about adherence to these very strict and ossified rule set. ⁓ And so in that sense, you know, we stopped saying we were agile, because like that became associated with with the bad way. ⁓ If anything, you know, and Valentino, to your point,

Joe Leo (21:29)
Mm-hmm.

Mm-hmm.

Justin Searls (21:43)
I kind of feel like in our community and the like open source adjacent give a shit about how they program community. We stopped talking about agile and everyone kind of. It devolved in the early 2010s. It devolved with GitHub. Really? It was like now we all just kind of do the GitHub issues thing and we don't really think very hard about how we do our work and you either have been doing this long enough that you picked up those skills or you're just kind of following the issue pull request and you have no real additional.

rigor or process above and beyond that, other than what is kind of implied by just a sort of a Git workflow and a GitHub specific kind of layered on abstraction on top of that. And so we've sort of been in this relatively low process state for a super long time now. And I suspect that when we talk about how agents affect that or what are we doing now, it's an opportunity for us to

Joe Leo (22:15)
Mm-hmm.

Justin Searls (22:39)
re-inspect. That's why I keep finding myself having conversations about Agile because if anything, think it's like because we're at the beginning of a brand new curve, it's an opportunity to kind of like dig up a lot of that timeless wisdom that has been discarded from previous iterations of the same sort of, you know, technological upheaval.

Joe Leo (22:59)
You know, I think that's so interesting what you said about agile and about how, ⁓ moving on to GitHub, all of a sudden we started without really talking about it. started adopting a much lower process, or, or much less process. remember having this conversation with one of my principal engineers and probably 2021, but I could be wrong about the exact year. I said, okay, well, so are you guys doing like your agile development life cycle or something like that? And he was just like,

You know, I don't know. We just call it iterations. You know, it's we're with the client. At some point we got to have a meeting and show them what we're working on. At some point we have a meeting and we talk about what we're going to do the next week. And you know, the rest of the time we just, you know, we just code and we, you know, we pair on our stuff or we review PRs. And I was like, Oh, right. That's, that's a good thing. That's that is, uh, that has evolved because they're doing enough to, you know, please the client and work consultancy and, um, and make effective use of their time. And.

there's really nobody arguing that things need to be demonstrably better. ⁓ know, things are efficient and they're just moving. So I think that makes a lot of sense to think, okay, well we actually already are changing. We actually started a long time ago. I am curious. So I saw this kind of couple of posts between you and Jared Norman and I regret I wasn't able to go and check out the podcast ⁓ with the two of you. But you know, a couple of months ago,

And I think this is, you know, dovetails with what we were just talking about. There was a discussion about, ⁓ entry points, right? Where we start, you know, where does a programmer start? And I liked what both of you had to say and sort of, seemed like Jared was, you know, accepted what you were saying as a refinement of what he was saying. But what I wanted to see more of was the, the part where Jared says, Hey, actually, if you.

if you ⁓ prompt your agent in such a way that it starts to build iteratively, then you get better results than if it just went off and started doing its own thing, right? And building, you know, multiple files, multiple test files. And I was curious if you have had a similar experience, if there is any merit to iterative development with an agent.

⁓ or if that too really needs to go by the wayside.

Justin Searls (25:30)
I definitions are probably important. Like in terms of what even is an iteration, that just that's a loaded term because it means lots of different things based on based on what like level of organization we're talking about. Like if we're talking about, you know, a an enterprise, what's an iteration? Well, that's that might be like a release, right? Like and so maybe that's a quarterly thing because then we're communicating with other departments. If you're talking about like a team wide thing, maybe that's

Joe Leo (25:34)
Okay.

Okay, that's fair.

Justin Searls (25:59)
weekly and maybe we do a weekly like, you know, internal release, like, like that, that's like, okay, so what are we doing this week? What did we do last week? You know, like what do we got to demo and deploy the traditional agile iteration kind of mindset. And at like a personal level, like as an individual or as a pair of programmers, maybe an iteration in that sense, like what are we iterating out? Like what's the loop is the real question. Well, maybe the loop is I pick up a feature card. I do the work. I get it tested, whatever that looks like a QA and then I merge it in. Right.

Joe Leo (26:06)
Hmm.

Yes.

Hmm.

Justin Searls (26:29)
And as a, ⁓ even within that, right? It's like, think of all of these, know, whatever term you choose to use and just iteration is a good one because it's what we're doing here. I think of it as concentric circles all the way down. And so traditionally, prior to having coding agents where the atomic unit of a programmer was the human typing code, the smallest in that concentric circle is like, okay, code isn't doing this.

code's gotta do this. Maybe it means I write a failing test and then I run and then I write some more code and I change the message. And then do that again and then ⁓ the wider loop is I get the test to pass and the wider loop is I get to bundle up that handful of requirements, express this test into some sort of functionality. Now what we're dealing with here, and this is why I challenge the definition of iteration, is we're figuring out, it turns out you can zoom in the microscope a layer lower.

Joe Leo (27:07)
Mm-hmm.

Justin Searls (27:29)
and I have one programmer running one to many agents. And how do, what's an iteration in that context? And so for me, the general guiding principle that I've had is like, what makes a good feedback loop for me as a human? How can I apply that same wisdom at that lower level? And so I'm, and the current tools, I do not assume that Anthropic and OpenAI are chock-a-block with.

Joe Leo (27:32)
Mm-hmm.

Justin Searls (27:58)
Midwestern software developers who came up out of the agile software community. There's no indication that that's where they're from whatsoever. It's much more move fast and break things startup sort of stuff and you see it in their releases and the quality of the software but also like one assumes the the design of these CLI tools the system prompts how like testing is an afterthought and I'm not I'm not here to harp on testing but it's just like the way that these tools want to work out of the box where they kind of like big bang plan a big old fucking

Joe Leo (28:02)
Mm-hmm.

Right.

Definitely.

Justin Searls (28:27)
task list and then just kind of work through it all at once and whether it's automatically just kind of going to force itself all the way to the end state. It's not collaborative. It's not like pairing. It's not working in small chunks like I might design it. And so I find myself trying to coerce these tools into adopting things like working, identifying really small chunks.

Right? ⁓ breaking the problem down into something so small that you can't help but succeed. ⁓ Stopping early, like hitting the brakes. So the Toyota production system was like a big part of its introduction ⁓ in Japan, of course, but like also its impact on lean and systems thinking. It's like there should be a big fucking button somewhere in the room. When anything goes wrong in the production line, we hit stop and then we swarm together and we solve it.

Joe Leo (28:53)
Mm-hmm.

Mm-hmm.

Hmm.

Justin Searls (29:18)
⁓

And and that is also lacking like so here I am just like holding down like you know like I had to monitor its Chain of thought in my terminal and like mash on that escape key to get it to stop as soon as I see it go off the rails Because none of these things are very good at being like hmm my confidence just dropped from point seven to point six Maybe I should stop and ask my human For some feedback or and there's just there that's lacking right and you can try to construct stuff on top of that in terms of patterns like

Joe Leo (29:30)
Yeah.

Justin Searls (29:48)
get one agent to write tests and the other one to do stuff. But frankly, like I find myself in this frustrated state where all I can really do is like beat the monolithic procedural process out of these things on a day to day basis. And it's not fun. It's frustrating. I can't, no amount of prompt engineering has gotten me to a state where it'll actually default to working the way that I would, which is in small incremental steps that are each validated with real use.

Joe Leo (29:58)
Yeah.

Mm-hmm.

Justin Searls (30:16)
You can get close and there's moments of brilliance. But then there's gonna be days where like right before I joined this call, was telling you before we started recording, I was kinda mad because I had just gone like 15 rounds with Codex after it had done everything else right just to change the margin on one little tailwind thing. And I was like, just blow this out a little bit, just make it a little bit wider. And it messed up four times and then it made it.

Joe Leo (30:19)
Mm-hmm.

Mm-hmm.

Justin Searls (30:44)
going edge to edge with its container, was like, no, just bring that in a little bit. And then suddenly it's slimmer than ever. And now there's more margin than ever. And so I gave it six more chances. And each time it would just get slimmer and slimmer and slimmer because it forgot how negative margin works in CSS. And then there's no way to roll back, right? And so like this lack of safety, this lack of like consistency and process.

All of the things that made me, my parasympathetic nervous system feel good about programming where I was like, yes, I get the safety of being able to move incrementally and always safely rollback. All that stuff's like out of the goddamn window now. it's all of the tools that we build to constrain these agents to try to get to the outcome that we want. I find them all to be lacking. if I get them to work, then they break the next time that there's a model update.

Joe Leo (31:14)
Right.

Mm-hmm.

V, you said it looks like you were smiling and laughing with ⁓ identification.

Valentino Stoll (31:35)
Yeah, know, yeah, mean, ⁓

so many things here. Yeah, I mean, if the Arc challenge has proved anything, it's that LLMs have zero spatial awareness. ⁓ And I see that every time when I'm trying to generate an image for a podcast and it like just cuts off texts on the border and I'm like, hey, just add some space next to the border. And it just like gives me back the same image. It's just, yeah, there's no idea about space.

Joe Leo (31:58)
Right, right.

Valentino Stoll (32:05)
What that means? ⁓ So yeah, I mean, you know, it's funny Because I feel like we're trying to ⁓

We're in this recalibration state, right? Where like, we've kind of like adopted, know, all, rail shops, you know, have adopted the pivotal labs way, right? Where we've like taken, okay, we have like some kind of feature or, you know, ⁓ refactoring or bug, and we break it down in the like minimal steps. And then we, you know, assign those tasks and then funnel it through, you know, whatever process that we want to set up for that. And, know, GitHub.

like adopted the same process. ⁓ And it seems every other startup out there in the Rails community has adopted similar processes in different ways with continuous integration and all of this ⁓ stuff. And people follow, know, they try and follow test-driven development in some ways. Some people don't like test-driven development and they'll just have some tests that verify, you know, certain stages, you know. We have all this contention about where to test. But really it's just like, you're trying to make sure that

the thing you're building is reliable, right? And I think that's what the whole system is. ⁓ So it's interesting to see kind of how different people are adopting this kind of pipelining and reassessing where the agency of these tools fit in. So I'm curious, like, where do you see the parallels starting to evolve from that kind of, you know, business design system?

Right? Like where we had these, you know, predefined processes for splitting up work and assigning it. Like I, I'm with you. don't see an AI agent taking on the responsibility of like picking up a feature that's been well broken down even ⁓ into very defined specifications and like running with it. But I do find that if I have an idea and I just want to see if it's worthwhile to build, I'll just throw that in the background.

and have something work on it and see what it produces and then, and then be like, ⁓ you know, that wasn't worth it, you know, but sometimes it is worth it. ⁓ and so like, I'm trying to also figure out kind of where, these things fit in best. I'm curious, like, where have you seen the strengths of it really going to, and where should we be like aligning, you know, as these full breath developers, as you're talking, you know, where, where does that, where do the two merge, right? And converge on.

on some kind of like systematic approach.

Justin Searls (34:50)
there's where we are now, and we can only talk about where are we now. Like all these tools at any given moment are knock on wood, the worst that they will ever be at this job. And so if you listen to this a year from now, hopefully it's no luck. My following statement is no longer true. And that is right now in my experience for the individual functions, the needs that have to be met in order to, you know what?

We've been talking about test-driven development. You mentioned Pivotal, like we're in the Rails community. We all have a certain shared context, but you could be talking to like any developer who's never heard about any of this shit. And like at the end of the day, it's still like, what needs to get written? Why? Like, ⁓ how is it supposed to behave in detail? How do I make sure that it's working in an automated way? Like all these needs are universal, right? And so how do we get these needs met? And like, what order do we like that to happen in? That's, you know,

Those particularities are interesting But fundamentally because I have a particular way that I've seen work a lot if I had a junior developer Or if I have a coding agent, I'm gonna probably direct them to kind of check these boxes in the order that I would you know, okay So like you've been asked to do a new thing, know, the the the flowchart probably starts with do you have any clue on earth how to do that thing and if the answer is no Then it's like alright. Well, we're gonna go do a research spike. We're gonna do something over here in a safe space

and just write up shell script or do some research and then just do a little toy app to test out whether or not this is even feasible. And through the learning of that then, we'll be able to go to an implementation and not just make a gigantic mess in the process, right? And for giving a spike as an example, before you step into a full blown planning phase or whatever it is,

I have found that whether I'm working with a very inexperienced developer who just doesn't have that muscle memory yet, does not have that hyper visory ability to see the forest for the trees and to kind of go through each of those individual functions and deploy them in the right moment in the right context. That's when I would have to step in and say, okay, let's do this next and this next and this next or how about trying this? And I find myself frustrated because I can run 10 agents at a time, but none of them

exhibit that hyper visory like competency or maturity. So sure, I could run 10 agents at a time, but that means I'm in the role of 10 times and, you know, being a minder to say like, do this now do this now do this now and I think that the maturity level right now is and you see it too in like AI first engineers who are either novice engineers who came to like, you know, an agent at coding and this is a kind of like their first

you know, lot of like nascent like bloggers and tick tockers and YouTubers who clearly aren't from the same school of thought or level of experience of us as developers, where it's like, Whoa, I got this brand new idea, guys, it's called spectrum and development. And you just like write what you want. And you have it right down the plan first. And then you separately tell it to do it. And I'm like, Holy God, okay, sure. Yes. But like, like, none of the tools are exhibiting any level of like capability at actually orchestrating a

Joe Leo (37:47)
Mm-hmm.

Right.

Justin Searls (38:10)
bigger process above and beyond that you see tools I think you guys talked to OB probably he probably talked about his like a rail swarm or what was it called what's this thing called again

Joe Leo (38:16)
Mm-hmm.

Valentino Stoll (38:18)
Clawdswarm?

He does clawd on rails, ⁓ which I think, yeah.

Joe Leo (38:20)
Claude, yeah Claude's warm.

Justin Searls (38:22)
Clawed on rails, yeah.

Which has the swarming thing where it's like, you know, personally it doesn't make a lot of sense to me, but it is a way to do it, to say like, you're the agent in charge of models, and you're the agent in charge of controllers. Like that seems like a lot of throwing stuff over a fence and hoping that it all gets plugged in together right. But short of having some sort of equivalent, you know, ⁓ substrate or superstructure.

These tools are not on their own, like handling that hypervisory level very well. And so I find myself continually frustrated that I'd be like, for the 30th goddamn time, it's like, yes, and now you've made it work. So let us write a test that makes sure that it like keeps working. It's like, yeah, good idea. I'm like, geez. or, or, or.

Joe Leo (39:06)
Yeah, stop telling me

my ideas are good. I know it's a good idea. I came up with it.

Justin Searls (39:12)
⁓ Open the browser and check it, you know, just like

the last 30 times we did anything or like your agents dot MD or Claude MD file says it's like How to open the browser how to log into the app like like did you check it and the answer is? no, I was like next steps you run the test I'm like you run the test like that's what you're here for and that's it's been very frustrating that we're not able to provide That that it that it can't provide for itself. But also there's just not a really great and

Feel free to write right in justinatserles.co if you've got a real, you know, lock, stock and barrel wonderful way to force it to do these things. But like Claude hooks ain't it. ⁓ There's just not a clear way to enforce or to even encourage a really, really successful, you know, we've got reinforcement learning, we got all these things on the table and none of that's being deployed successfully. It's really disappointing.

Joe Leo (39:49)
Mm-hmm.

Yeah, so that kind of brings me to maybe a philosophical ⁓ point, or maybe it's just ⁓ sympathizing with those that are maybe not on board, right? Because, hey, I do it my way and I love my way, right? These people that we talked about ⁓ earlier on in the show. ⁓ It seems like we really have to fight the agents to get it to do the things that we really...

needed to do and it makes me wonder, okay, ⁓ are we, when we do this fighting, when I do this like, when I become a cudgel and I you know, just bludgeon my agent into doing things the way I believe are the right way, am I enabling the AI to do things properly or am I actually standing in the way?

⁓ And I guess what I mean by that is, ⁓ there some other practice lurking out there? Now I don't really know what that is, because I think to me the alternative sounds like chaos, right? We just release stuff that we have no idea if it works or not.

But I do kind of wonder, again, from a philosophical perspective of, ⁓ so how much are we supposed to fight this thing and how much are we supposed to figure out how it works and go along with that?

Valentino Stoll (41:39)
You you make a really great point. And ⁓ what I was thinking about while you were talking about that is how, you know, it's generative AI. It's all additive, right? And that's why we have this problem of hyper, hypervisory, like, you know, mechanisms is cause it's meant to just generate more. So if you just have hypervisory layer that is using the same generative thing, you're just going to get even more. Right. And there's no, there's no like, you know, the bear style subtract, right?

Joe Leo (41:49)
Hmm, yeah.

Right.

Right.

That's a fair point.

Valentino Stoll (42:08)
Like we almost need like a, I don't know what you would call the opposite of generative, but like, you know, subtractive AI, right? Like that, that literally does like sit there in that hypervisory layer and takes away and like widdles away ⁓ and you know, reduces tokens. And I don't really know. I don't think there is anything like that that I know of. ⁓ But it does make me want to build something now.

Justin Searls (42:14)
Subtractive AI. ⁓

Joe Leo (42:15)
Subtractive.

⁓

Mm-hmm.

That's interesting.

Justin Searls (42:39)
will say to any of the ⁓ doubters who nevertheless listen to a podcast with AI in the title. The Yeah, sure. I look, it's, it's, it's got to be frustrating, because this is not only, you know, maybe not your perfect favorite way to write software. It's not only trained on data that was stolen.

Joe Leo (42:47)
There's bound to be some.

Justin Searls (43:07)
right unethically or illegally potentially it's not only going to disrupt job market after job market after job market including our own ultimately resulting in a place where maybe there are fewer total programmers who make good money right all of these things can simultaneously be true ⁓ but

You're not necessarily just being a stick in the mud. If you also are looking at like somebody like me who uses these tools all the time, be like, boy, Justin seems like miserable. This does not sound like he's having fun. And that's the answer is I'm not having any fun. And the reason I'm not having fun, the reason this is such a torturous moment in time is that I can hold these different things, these ⁓ seemingly contradictory points in my head at the same time. Like on one hand, these tools are already...

Net more powerful than I am as a programmer I have seen myself get that a baseline the worst even the most frustrating day with these tools I'll call it a 1.3 X output versus if I just coded by myself and on the best days, maybe it's 2 3 X right and Because I know that I'm getting more output out like

Joe Leo (44:12)
Yeah, easily.

Justin Searls (44:23)
And it's at my level of quality and I define quality more extrinsically now than thinking about like that everything's named just right. Although Valentine to your point, I have had to learn to just like let go a little bit. ⁓ Because I know that I can get more out of it and I know that this is unlikely to get worse, right? Like these tools are only going to get better. This is a skill and a ⁓ an approach that I need to learn and I need to master just for my own purposes. I'm when I blog and stuff, I'm just kind of sharing what I learned in real time.

Joe Leo (44:53)
Mm-hmm.

Justin Searls (44:53)
Well,

like, if I were gainfully employed right now, I would be very worried if I was not getting on this bus and not gaining those skills because it's going to be the new baseline if it's not already in terms of how we're expected to be able to, you know, ⁓ both be productive and also how to like, you know, interface on teams and how to work, how to show up at work. All of that is like extremely frustrating when viewed in the context of

coding can be enjoyable. You can focus, you can work, you can solve problems, you can think through things, but juggling four terminals that are kind of, you know, all taking turns, working in the background and your context switching constantly between the one that is trying to like, you know, overhaul your readme to the one that's trying to change how you authorize against the Instagram API to the one that's trying to like fix your CSS and another thing. And they're all changing at different times and you've got to go switch.

Joe Leo (45:41)
You

Justin Searls (45:46)
and you're just kind of playing hot potato to keep all of the different agents fed with requirements and with feedback. And then you're constantly frustrated and you're mad at the computer for writing the code wrong. It is much, much more frustrating and less satisfying and just you feel hollowed out ⁓ at the end of the day. And I don't feel great about that at all. I don't know what to do with that information, but I simultaneously I look back and I'm like, wow, this

this system took me half as much time to build or a third as much time to build as it otherwise would. Like, what am I supposed to do with that information if, you know, especially if I'm an employee or a consultant and I bill as a unit of time, right? If I'm expected to like make home a salary, it's like, if I'm take two times as long just so I can have my perfect day at work every day, eventually someone's gonna sniff that out and say, hey, like do that on your own time. that was at Rails, I think it was RailsConf. I remember talking to Aaron before he was doing his keynote.

Joe Leo (46:27)
Yeah, yeah.

Right.

Justin Searls (46:44)
You know, his whole point was maybe all this agentic coding will help us get back to what made Ruby great in the first place, which was it's just a hobbyist thing. Like I can write Ruby as my hobby and let all the drudgery, all the work related stuff be the automated stuff. Now that's wonderful if you don't need a job. But like at the end of the day, this is just where things are going. I don't know what to tell you, right? Like, yes, I am miserable. And also this is probably the right answer.

Joe Leo (46:52)
Mm-hmm.

Yeah.

It's interesting because as you said, if you're not doing this for an employer, you could write this any way you want. So there's got to be something ⁓ in it for you, right? If it is just the future or it's efficiency or something, right? Or else why do it? And I'm curious, mean, it amidst all of this, I'm not having any fun right now, is there some optimism about the future?

Justin Searls (47:37)
No, I think humanity is pretty boned and we're all here. Why do I do it? Because like I While I I can like coding I can like lots of things especially things that that make me money ⁓ And and while that era of my job is past me like what I why do I? Look, I don't code for the experience. I code to have built things and so like what I really want are like

Valentino Stoll (47:38)
You

Justin Searls (48:06)
two or three large important pieces of software so I can live a better life. And if I can get them three months faster, two years faster, if I can unlock the ability to turn my little random ideas and my backlog of app ideas and project ideas, if I can turn those around inside of a day or inside of a weekend where before that might have been a week or month long project, that's reclaiming time for me just to live and not be behind my computer. That's why.

it's worth getting frustrated about. I'm willing to trade two weeks of misery in exchange for, you know, six weeks of freedom, right? That's the trade off. So it's not just about money. It's about like, you are you focused on coding as an experience, problem solving, like maybe other people do crosswords and I write code every day, like the advent of code kind of thing, or do you code so that, you know, you can build useful stuff?

I've always been in the latter camp. I'm about the outcome. don't... I can get really into the process and Valentino, to your point about like all the stuff I've written and everything, like I've written a ton about that stuff and I care a great deal about it but I would throw it all away in a heartbeat if I could just snap my fingers and get all the software that I want.

Joe Leo (49:20)
Yeah, yeah, that's refreshing.

Valentino Stoll (49:20)
You

Yeah, that's what I want. I just want something doing all my work in the background while I'm playing ping pong, right?

Joe Leo (49:31)
Well, at end of the day, know, the outcome is why we start. ⁓ I've always been in love with the process. ⁓ But there's always, at end of the day, it's always because I believe it's productive and productive has some very vague meaning that's different to everybody. But to me, ⁓ being focused on the outcome is a worthy goal that's necessary at the end of the day.

Valentino Stoll (50:01)
Yeah, I think.

I mean, ultimately that's what we're doing anyway is just watching the output. ⁓ So it makes sense that we care about the quality of it. ⁓ I can't say that that's the same of people new. Do they care what the output is? ⁓ If I was starting out, would just generate it and keep generating. ⁓

and keep producing. So ⁓ I'm a little worried in that respect. ⁓ But at that point, ⁓ hopefully things just get improved and ⁓ somebody can build something better that generates more quality.

Justin Searls (50:53)
Gary Bernhardt did a talk that I think was at SCNA, the Sauter Craftsmanship North America Conference in 2011, probably. And I don't know if the name of it was this, but it was Capability Suitability. And what he did was he charted over time in the history of computer science that we've had these momentary spikes in capability. Like suddenly,

where we've jumped up the stack and computers can be used to write way more, like express brand new functionality in ways that we never really could in a practical way before, right? You go from assembler to C and suddenly like the category of applications that can be written by a human expand dramatically. But with that rise in capability comes sharp edges.

Joe Leo (51:37)
Mmm.

Justin Searls (51:46)
You know, you pointer math, you got all these ways to fuck things up along the way. And in general, the next thing to follow, the next big trend is a suitability, like kind of putting the the, you know, the the bumper bowling lanes in the side of the alley to like, you know, prevent you from going off the rails. And so that's why you have a whole bunch of suitability adjustments like objective C and classes to try to rein in some of some some of the

Joe Leo (51:49)
Mm-hmm.

Justin Searls (52:15)
the unstructured bits of C, C++ itself in a lot of ways. You'd have Java, kind of the ultimate form of this, of like safety scissors for programming, but like still very much a C-like language at the end of the day. And what we're experiencing right now is a ⁓ capability spike unlike anything that we've ever seen, except it's not about code per se, although I'm sure at some point somebody's gonna release a programming language designed for agents.

Joe Leo (52:29)
Hmm

Justin Searls (52:45)
or at least claim it's better. And it's about how much throughput can a single human get, you know, in terms of code production. And we're seeing all the exceses of that. We're seeing the vibe coding, we're seeing, you know, junior developers and senior developers alike, just pushing up massive pull requests that are written in a day and not really reviewed very well. We're seeing all kinds of like, you know, downsides of having this tremendous capability spike.

And where I'm at, because I'm more of a suitability guy, that's how I ended up starting a company with test in the name. Like, I'm trying to figure out like, where are even the seams to rein these tools in to fit a process that is going to result in more predictable outcomes. And we're just not quite there yet. We've got some of the primitives we would need to build that. But, you know, I find myself frustrated that the suitability stage isn't coming soon enough.

Joe Leo (53:32)
You

Mmm. Yeah, I like that quite a bit.

⁓ We're at 1136. We probably should go to our closing segments. What do think, V?

Valentino Stoll (53:55)
Yeah, that sounds good. ⁓ Well, yeah. Cheers to all the future ⁓ Vibe engineers out there. ⁓ Mad respect. ⁓

Yeah, so I wanted to start a new segment at the end of our show here where ⁓ we share, ⁓ you know, our prompt engineering or vibe engineering or whatever you want to call it, ⁓ you know, ⁓ quick, our most valuable, you know, suggestions for the listeners. What's working well for you? Like, what is your go-to? ⁓

you know, use of an agent or maybe just a prompt itself that you've been finding.

Justin Searls (54:45)
Are you asking me directly or do you each have something to bring to the table?

Joe Leo (54:48)
Yeah

Valentino Stoll (54:49)
Yeah, I

mean, I've got something if you want me to start. ⁓ Yeah. So I've been using, I've been doing a lot of refactoring. And so I have a ⁓ kind of script that I run through where I ask it to refactor as if it were experts, like a panel of judges. ⁓ And I pick ones that I know it has a lot of training data about.

Justin Searls (54:52)
Go for it.

Valentino Stoll (55:14)
⁓ So, Sandy Metz, Martin Fowler, and Kent Beck are kind of my trifecta that I source because they all have a lot of literature about refactoring. ⁓ And it happens to align well with Ruby in a lot of ways. And so I do find the results are ⁓ pretty remarkable. ⁓ So that's kind of my promtack I've been using lately.

Joe Leo (55:38)
I like that.

Justin Searls (55:40)
Joe, you got anything?

Joe Leo (55:41)
Well, I found out about this segment about 10 seconds before we aired so I don't have anything on the top of my head Although there are so two things one I would say if you are if you happen to be listening to this and you use AI for anything that is not writing code I would say that The act of of creating GPT's this is kind of been a total dud from a

from a business perspective, from OpenAI, I nonetheless find them really useful. So I create my own GPTs and they do things like generate ⁓ proposals for me or write contracts or, no, they don't usually write contracts, but they'll do a whole variety of things. That's really helped me in the business side of Def Method. ⁓ I also just wanted to take the opportunity to call out a thing that I've...

I read just when I was doing some research ⁓ for this episode. Justin, you said that you had had your you've eliminated. ⁓

retained context from your, ⁓ from your GPTs or from your interaction with LLMs. And I thought that was really interesting because I have been frustrated lately with, ⁓ cause you can't choose what these things remember. And so I'll ask a question and I'll be brought in some context from something that I mentioned like two weeks ago, be brought in. ⁓ and it's really frustrating. So I haven't tried it, but I think that's something I'm going to try next.

Justin Searls (57:07)
I strongly recommend ⁓ turning off any chat history or personalization stuff that's like referencing other stuff because all you're going to do is waste tokens on stuff that's not relevant. you know, I would prefer not to ⁓ contract psychosis from my relationship with chat GPT. And one way to do it is, one way to do it is if command and basically gives you a clean slate, just like a

Joe Leo (57:19)
Mm-hmm.

That's my preference as well.

Justin Searls (57:35)
you know, a logged out Google search or something, right? Like I want to see what you would tell just anybody off the street. I don't want you to like put spit on the ball based on things you already know about me. Because I started seeing it say, hey, know, based on the fact that you're buying a condo in Japan, like, whoa, wait a second, we're talking about the notes right now. My pro tip, and this is something that took me a few months to land at.

Joe Leo (57:37)
Mm-hmm.

Yeah.

Yeah, yeah, exactly.

Valentino Stoll (57:53)
Hahaha

Justin Searls (58:02)
So if you use a terminal-based coding agent, you might know that, like so if it's Claude, you have Claude.md. And if it's Codex, it's agents.md. It looks for these files in multiple places. And the two most important ones are it's going to expect one in the repository root from which you are running the application.

So if I'm like, you I'm working on an app called posse party right now at the root of that repository, I have an agents dot MD, because I'm using codec CLI. ⁓ Additionally, though, it's going to look for a global one. So so in my home directory, I have like dot codec slash agents dot MD. It'll load both of these things up. It'll load both the global rule set as well as the local rule set. So maybe you already knew that. And if you did, you like me might be wondering like,

what is the best stuff to put in there, both at the global level and the local level? And ⁓ for a while, because I'm working in multiple languages at once, I was like, well, the global one shouldn't have any Ruby specific stuff in it, because this is a Ruby project, but not all my projects are Ruby. ⁓ And the local one should probably not have all of my timeless wisdom that's just been piled up over time, because then my other projects won't take advantage of that.

where I've landed and I think this is working well or at least it's making me feel better about it because at the end of the day, this is all just a goddamn Ouija board of us kind of hoping that the system is gonna listen to what we tell it to do. ⁓ My global one is ⁓ structured as a whole bunch of bullet points. And I'm happy to share this with you even though it's long after we get off here. ⁓ It's basically to say like on this team, we've all agreed.

Joe Leo (59:29)
Yeah.

Justin Searls (59:46)
to always do these things. And if you can't do this thing, stop and ask your pair, like the user. And I list out always do this, this, this, this, this, this, this. And then additionally, on this team, we've agreed to never do these things. And if you ever find yourself really wanting to do these things, stop and talk to somebody. We never do this and this, this, this. And I've got about like, I'm looking at it, probably 20 of each of these things. And so that way, whenever the agent does something I really, really don't like, I have a place to put that in the always or the never column.

Joe Leo (1:00:15)
Mmm.

Justin Searls (1:00:15)
⁓ And like I said, is it working? I don't know, but I feel better after I write it. ⁓ Then the local one can be just examples. It's like, example, how to log into the system as an agent. Example, like here's how I like my unit test to look with all the tools. And it's like, I'm using mocktail on posse party for isolated unit tests, but for integration tests, I'm doing this. And for system tests, I'm doing this. And give it one good example that it can kind of use as a golden record for like when I'm doing this for the first time. And I found example-based

as opposed to just edicts is generally more effective because it'll, you you'll basically just be anchoring that ⁓ versus the norm. So, you know, it still does its own thing all the time, but I found that one-two punch to be pretty helpful.

Joe Leo (1:00:47)
Mm-hmm.

Thanks

Valentino Stoll (1:01:04)
Yeah, if you're out there building libraries like Ruby gems or something like it, ⁓ please put examples in the documentation strings. I find any library that does have that, ⁓ I use context seven MCP server. ⁓ It does much more reliable output for libraries that use and document that. ⁓ And so I've been adding that more myself.

Joe Leo (1:01:23)
Hmm.

Justin Searls (1:01:30)
stuff.

Valentino Stoll (1:01:33)
Cool, well, you I appreciate you coming on, Justin. This has been awesome. ⁓ You know, ⁓ I think we've cut into ⁓ some deep ⁓ sections of, ⁓ you know, where people should be focusing their attention on, ⁓ you know, what value is getting delivered by all these things. ⁓ I really love your content ⁓ about those particular topics. So please keep sharing ⁓ as you go, because... ⁓

I didn't mention it before, but I used to have this ⁓ Twitter bot that would just run on my local machine. And anytime you mentioned neat in a post, it knew that you were really annoyed by something that had happened. And we had it. ⁓ Yeah, I had it just like posting up on my screen every once in a while. I like, look at this funny thing that he found.

Justin Searls (1:02:14)
Damn

Joe Leo (1:02:22)
Yeah.

Justin Searls (1:02:23)
You probably cross reference

that to my blood pressure or something. ⁓

Joe Leo (1:02:26)
Yeah.

Valentino Stoll (1:02:27)
Right.

Justin Searls (1:02:31)
I would just ⁓ I appreciate that Valentina. I just want to like mention a couple quick things before we part ways. I'm bad at plugging stuff. ⁓ I'll say if you're listening to this and you don't already follow my stuff, justin.serles.co is the place where I put basically everything and then I'm working on an application called Posse Party, which I hope to release soon. That is syndicating it to all the places. So if you see me on any of the social media,

Valentino Stoll (1:02:31)
But yeah.

Joe Leo (1:02:37)
Mm-hmm.

Justin Searls (1:02:59)
I'm not really there. It's a robot who's just putting links back to my website on there. ⁓ You can follow me there if you like the sound of my voice and you don't mind listening to me talk about, you know, stuff outside of programming. I have a ⁓ solo podcast called Breaking Change. Two to three hours an episode. Talk about life. Talk about technology, games, all whatever is interesting to me. It's just drive time radio, to do while you wash the dishes. But I also started doing

shows within a show, I have an interview show of my own called Hotfix. this converse, the reason I raise it is that this conversation I think is, nicely with the one I just had with Jose Valim about how we each use agents and how he expressed that he'd be really sad if he didn't get to program any more in the future. So ⁓ maybe you'll find something interesting to listen to over

Joe Leo (1:03:40)
Mm-hmm.

Right.

Yeah, excellent. Definitely check those out.

Valentino Stoll (1:03:55)
Yeah,

I've been loving the episodes. ⁓ So I'm a listener. Yeah. Thank you. It is pretty great. It's casual listening, but also like, you know, I feel like you bring up a lot of great points and get people to ⁓ talk about things maybe they don't feel comfortable talking about, which is always fun for me.

Justin Searls (1:04:00)
Great to hear.

Joe Leo (1:04:15)
Mm.

Justin Searls (1:04:16)
Yeah,

every show needs a goal. And my goal is I want to get the guests to say something that could get them fired. ⁓

Valentino Stoll (1:04:20)
Alright.

Joe Leo (1:04:24)
Hahaha

Valentino Stoll (1:04:24)
Ha ha ha!

Justin Searls (1:04:27)
Keep the heat up.

Valentino Stoll (1:04:27)
great.

We'll keep it up. I appreciate it.

Joe Leo (1:04:30)
Yeah.

Valentino Stoll (1:04:34)
Alright, well thanks again Justin. ⁓ Yeah, I've had a great time here and hopefully we can have you back again another time.

Joe Leo (1:04:34)
⁓

Yeah, it's great having you on Justin. Thanks so much.

Justin Searls (1:04:44)
Right on. Well, you know where to find me now. Take it easy, guys.

Joe Leo (1:04:46)
Yep.

All right.

Want to modernize your Rails system?

Def Method helps teams modernize high-stakes Rails applications without disrupting their business.