A podcast about coding, but not code

We want to entertain, inspire, and motivate you -- or to put it another way, make your coding career more enjoyable.

... With your hosts: Adam, Ben, Carol, and Tim.

Adam Tuttle Ben Nadel Carol Hamilton Tim Cunningham

Episode 261: The Ben Turing Test

Adam trained an AI on twenty years of Ben's blog, then asked Ben to pick his own words out of a lineup of forgeries. This week the hosts play a game of Ben or Bot, and you can play along too!

Follow the show and be sure to join the discussion on Discord! Our website is workingcode.dev and we're @workingcode.dev on Bluesky. New episodes drop weekly on Thursday.

And, if you're feeling the love, support us on Patreon.

Mentioned in this episode:

With audio editing and engineering by ZCross Media.


Transcript

Spot an error? Send a pull request on GitHub.

[00:00:00] Cold Open

[00:00:00] Adam: At the end of the day, the only thing that really keeps you from achieving greatness is yourself

[00:00:04] Tim: It's all been positive for Ben We've... Oh, I broke him. I broke him

[00:00:11] Carol: Oh, boy.

[00:00:13] Adam: Oh, man.

[00:00:17]

[00:00:37] Intro

[00:00:37] Adam: Okay, here we go. It is show number 261, and on today's show, Carol's back and we're gonna play Did Carol Get Her

[00:00:43] uh They're all got to the same time zone as you guys.

[00:00:48] But yeah, hey, welcome back to East Coast.

[00:00:50] Carol: yeah,

[00:00:51] Ben: West

[00:00:51] Adam: East Coast, best coast.

[00:00:53] Tim: The only coast that matters

[00:00:54] Adam: anyway, so I mean, it sounds like you got your stuff, you got your good mic, so

[00:00:57] welcome back

[00:00:58] Carol: I am on AirPods. I do not have my mic. I do

[00:01:01] Adam: Oh.

[00:01:01] Carol: have my computer. My-- are things broken my husband asked me not to speak about yet because we're dealing with problems

[00:01:08] Adam: Sure, sure

[00:01:10] Carol: So, it's not there yet. I don't have a chair, I'll tell you that.

[00:01:14] Adam: Oh,

[00:01:15] Tim: You're sitting on the floor?

[00:01:16] Carol: sitting on the floor. Yeah

[00:01:19] Adam: Ouch. Okay, well, we'll... maybe we can, uh, do the, ever promised, never delivered short show, for you, get you up off the floor.

[00:01:26] Carol: Thank you. Thank you

[00:01:26] Adam: so Carol's back. We got everybody in the house. Tonight, we're gonna play a game, and I'm not gonna... I'm not even gonna explain what the game is till we get there. I wanna surprise these guys with it last possible second.

[00:01:37] I will say, listeners, and I'll, I'll tell you when we get there, this is not going to be a play along, game, but I do have a play at home game. So maybe when you get to that point in the show, you can pause it after I give you the URL to play it at home.and then you can play... It, it won't take you that long to play by yourself, maybe 10 minutes.

[00:01:55] and then you can listen through and

[00:01:59] Carol: I knew it was coming

[00:02:00] Tim: Mm-hmm

[00:02:02] Adam: So you play through at home and then compare your results to how these three do, on the air. Thought it would be fun. We'll give it a try. Anyway, so, but first, as

[00:02:10] Tim's Triumph: Hotel-Liquidation Outdoor Kitchen

[00:02:10] Adam: usual, let's start with our triumphs and fails. Tim, it looks like it's your turn to go first, so what's going on, my friend?

[00:02:15] Tim: I think I may- maybe mentioned this in the after show yesterday, but I, I've s- spent the weekend, the Memorial Day weekend, I set up an outdoor kitchen.Um, the Blackstone. Yeah

[00:02:24] yep, I think I put, put some pictures in there. But yeah, so there's a really cool... It's this huge, giant... It used to be a, I think a paper mill factory, but it, it's a big old brick building, but it's huge.not too far, about, about 40 minutes north of us, and they do hotel liquidations. So they buy out, like when a hotel like, you know, remodels and gets rid of their stuff, they buy all of it and sell it like really super cheap. uh, so I wanted like, I wanted a fridge for- throughout the gazebo, and I wanted just a, like a cabinet where I could put spices and cooking utensils and, you know, different cooking bits and bobs.

[00:02:58] Now I can cook outside and make a mess. My wife doesn't get mad at me for s- you know, messing up the kitchen.and so I found this really cool, it, that... It was called a bar, like a, like a bar cozy cabinet. But anyway, it, it's, you know, pretty, pretty tall, about probably like three and a half, four feet tall. Opens up, has little tiny pockets in the door where you can... I guess it was for like, you know, booze and for different bar things, but it's perfect for like spices, and you can actually... It's got glass, you can see all the spices that are in there.

[00:03:30] Ben: Oh, cool.

[00:03:30] Tim: And it even came with a refrigerator, and this was all for 29 bucks.

[00:03:34] Carol: Oh, it's

[00:03:36] Tim: even with the fridge, and it's funny the, the fridge is... I mean, it's a solid, solid thing, so it weighs a ton even though it's like a small mini fridge. but it's got all the, You know how you go to a hotel and they charge you when you take the alcohol out? So it has all these little weighted buttons and an Ethernet cable.

[00:03:53] Ben: Oh,

[00:03:53] Adam: Nice

[00:03:53] Ben: funny

[00:03:54] Tim: so Obviously, it doesn't work that way, but you know, the fridge works. yeah, so I spent the weekend setting that up doing some cooking and, and doing it outside. So it was just, it was fun. And my, my wife, she wanted a crafting table for her room. She got that real cheap. So really cool place.

[00:04:10] I don't know why it's where it is here. It's in Forsyth, Georgia, Hotel Liquidations. It's right off the interstate. I, I guess that's probably why it's there is 'cause you, you get good, visual traffic if you go past it. But yeah, it's funny, I w- we were loading it up and a dude showed up in a, one of those things called like a RV, touring bus kind of thing, and he saw me have it.

[00:04:31] He's like, "Oh." He says, "I got two of those. I'm coming to buy a third one." Like, he's

[00:04:35] Ben: Oh

[00:04:35] Adam: wow

[00:04:36] Tim: He's like, "You're gonna love it. The thing's awesome." I'm like, "What do you do with it?" He's like, "It's for my man cave." And I'm, "Okay, cool." So

[00:04:42] Ben: Yeah

[00:04:43] Tim: beers in there or whatever, so.

[00:04:45] yeah,

[00:04:45] it, it was fun, but I am sore now from just doing a lot of moving stuff around and cleaning stuff up.

[00:04:50] So that was

[00:04:51] Ben: You know, Blackstone sounds

[00:04:54] like one of the, like the, the secret programs run by the CIA in movies

[00:04:58] Adam: Yeah, it's a s- it's another arm of Palantir

[00:05:01] Ben: Yeah, I'll tell- like, I think of the, The Bourne Identity, Bourne Ultimatum movies, they always had really good, like Blackbriar and Treadstone.

[00:05:07] Tim: Yeah.

[00:05:08] Ben: And always have the best secret project names. It always makes me feel jealous.

[00:05:13] Tim: They do.

[00:05:13] Ben: I'm so bad

[00:05:13] at naming stuff

[00:05:15] Adam's Fail: A Car Accident and a Rivian Silver Lining

[00:05:15] Tim: anyway, that, that's me. How about you, Adam?

[00:05:18] Adam: Well, I'm gonna go, with a failiumph. w- so st- starting out with the fail, everybody's okay, but my daughter was in a car accident over the weekend.

[00:05:25] Ben: geez.

[00:05:25] Carol: Oh, no

[00:05:26] Adam: and we, we don't have final results yet. It's still, you know, the insurance company needs to take a look at it. But we're kind of expecting the car to be totaled.

[00:05:33] It was pretty old, so not worth a whole lot of money. and it-- the front end of the car got pretty crunched up, so.but,

[00:05:39] Tim: so it wasn't your new car?

[00:05:41] Adam: No, no, not my car. it was like a 19, '90, I think, or '90...

[00:05:46] Ben: wow

[00:05:47] Adam: something like that.and it-- when she got it, I think it had 40 or 45,000 miles on it.

[00:05:53] Tim: That's wild. Someone

[00:05:55] Adam: that's tiny.

[00:05:55] Tim: it

[00:05:56] Adam: It was, it was a elderly man's car, and he almost never drew it, drove it.

[00:06:01] Ben: To, to be clear, a 1990 car predates your daughter by, like, 15 years. Like, her, the birth

[00:06:08] Adam: then yeah, it... You know what? I think it might be in 1999, 'cause I think it, it, it's still, it, it, it still bred- predates her by a good bit. But,

[00:06:17] Ben: That's funny. That's

[00:06:18] Adam: yeah, but not by that, not, not by 20 years. Um,anyway, so I said this was a failiumph. the, the sort of triumph that has come out of this car accident situation is that I've had to do a lot of extra driving.

[00:06:30] you know, driving to go get her stuff out of the vehicle after it was towed to the tow lot or whatever they call that thing. and, you know, like picking her up from school and this and that, extra trips. So I've been putting lots of fun extra miles on my Rivian just because I'm enjoying driving it still.

[00:06:49] So I'm happy about that. I'm s- I'm sad that this is what triggered it, but I'm happy to, to be in the car

[00:06:55] Carol: how many miles do you get to a charge, like to a full charge?

[00:06:59] Adam: 100% to zero would be real close to 400 miles.

[00:07:03] Carol: Oh, wow. That's really

[00:07:04] Ben: Yeah, it's pretty

[00:07:05] Adam: Yeah

[00:07:06] Carol: I think our full charge on the Tesla is like 280

[00:07:10] Adam: Yeah. I got a max pack battery and it's-- I've got a lot of efficiency options, so.

[00:07:16] Carol: That's

[00:07:16] Ben: Nice.

[00:07:17] Adam: Yeah.

[00:07:18] So,

[00:07:18] Ben: glad everybody's okay. Yeah

[00:07:20] Adam: yeah, thanks.

[00:07:21] Ben's Fail: Researching With Claude Felt Icky

[00:07:21] Adam: anyway, so that's me. How about you, Ben?

[00:07:23] Ben: Mm-hmm. I am also gonna go with a failium, and this is more of a internal strife and conflict kind of a thing. So,as I've, as I've mentioned before, we all have our own little side projects that we often use for learning opportunities and, deeper thinking. and I, I, you know, I use... I've used Big Sexy Poems, I've used, my blog, I've used my little fitness app just as, as a means to explore stuff. So over the weekend, I wanted to try exploring the concept of a transactional outbox. So if you can imagine that someone leaves a comment on my site, and then part of that comment is I do some user checking, I save some comments, I do some parsing, and then I send out an email. Maybe I send out two emails.

[00:08:11] If a person, if this is the first time they've ever left a comment, I send them a welcome to my site email, and then I also send out the comment email to them and anyone else who has subscribed to comments on that particular blog post.

[00:08:24] Adam: Mm-hmm.

[00:08:25] Ben: And right now, that all just happens in a single procedural script, and the email sending is outside of the database transaction.

[00:08:36] So theoretically, there's a possibility where I save all the records, and then my server crashes, and

[00:08:40] Adam: Right

[00:08:41] Ben: goes out, right? Adam probably deals with this kind of stuff with AlumniQ all the time

[00:08:45] Adam: I, yeah, I was like, "What is he talking about, a transactional outbox?" And then when you started describing it, I'm like, "Oh, okay, it's just a queue."

[00:08:51] Ben: R- r- right.

[00:08:51] Adam: But it's a persistent queue

[00:08:52] Ben: with a, the, the, the reason, Okay. Yeah, yeah, okay. So it is a queue, but the, the, the, the pièce de résistance of the queue is that writing to it happens inside the same database transaction that you're doing the other stuff. So if someone leaves a comment, I'll do the comment record, and then I will write a, a comment was placed event, so to speak, inside of this database table, and that's the transactional outbox. And then asynchronously, I can have some sort of a background task, or I can just kick off a task immediately right then and there to try to make it feel more synchronous, and that will do kind of a at least once delivery. So it'll pop that item out of the transactional queue, trying to send the emails until they work, and then it'll remove the item from the queue. So the failiumph of it all comes from how do I learn about transactional outbox? Historically, I would Google, and I would look for ColdFusion transactional outbox just transactional outbox pattern or things of that nature, and I would spend some time going through Google results pages and clicking on links and reading people's experience with a transactional outbox. And I've always really enjoyed that strategy because like it exposes me to a lot of incidental stuff, meaning I'll go to someone's write-up of how they use the transactional outbox pattern, and I'll learn not just about that, but about how they also build stuff or other kinds of things that they tried and didn't work or did work, or they'll talk about something maybe I hadn't considered as far as the pattern goes. So I started to do that, and it just-- I kept wanting to just go back to Claude Code and say, "Hey, Claude, I want to explore putting a transactional outbox in here. I know it's overkill for this kind of an application, but I'm just curious to, to explore the pattern, like help me think through the pros and cons and how I can simplify, et cetera, et cetera." And so, like, that is what I ended up doing. I ended up doing the Claude stuff, and it was, you know, it was a fine conversation, but it just, it left me feeling Not icky in like a moral sense, but like icky in a research used to be a way that I participated in the broader world. And even if it was in a very light touch way, just the idea of reading someone's blog post and being like, "Oh, you know, great write-up.

[00:11:15] Thanks. This is exactly what I was looking for." If I bypass someone's site and I just go to Claude Code for that, it's like, it's like one less way that I interact with the rest of the world, and I feel like I already barely interact with the rest of the world as it is today. And I don't know. I just, I'm, I'm struggling with okay with that-

[00:11:36] Adam: Mm-hmm. It goes back to our recent episode on the morality of using AI at all.

[00:11:43] Ben: Yeah. It's like there's a, there's a community, and, like, part of the fun of reading stuff is, almost in that sort of, um is it parasocial? Was that the word we used the other day?

[00:11:56] Adam: Yeah

[00:11:56] Ben: In, like, in that parasocial way where you're, like, developing a relationship with someone you've never met just because you're reading their writing and, I don't know. It made me a little sad. It made me feel a little bit lonely. Like, here I am talking to a machine when I could probably be reading someone's articles. I will say on the flip side, I did try to do a little Google researching and, like, all the articles that I came across on the transactional outbox pattern were awful. And they're all like, you know, like, they're all like... They don't feel... Not that they were, like, vibe-coded kind of articles, but they're just... They all felt very cold and, know, "Let's start by talking about what the transactional outbox pattern is, and then how it can be applied, and what are the pros and cons."

[00:12:38] I'm like, mostly what I want is personal experience with the thing that they're building, and, I just, I wasn't finding that. But that, that could have just been

[00:12:48] searching.

[00:12:49] Adam: please tell me you have now added this to your to write list, right? You, if all, if all the articles on this suck and you are a prolific blogger, you're gonna write the, the go-to article on transactional outboxes, right?

[00:13:02] Ben: mean, I'll write, you know, I'll write

[00:13:03] Adam: No.

[00:13:04] Ben: my,

[00:13:04] Adam: Try again.

[00:13:06] Ben: No, no, I de- I definitely do wanna write about it. I, I'm, I'm still in the process

[00:13:11] Adam: Yeah, yeah, you gotta learn first.

[00:13:13] Ben: yeah, I mean, half the joy of writing for me is the, like, getting to the end of a paragraph and thinking to myself, "Did that paragraph make any sense?

[00:13:21] Do I believe anything I just wrote?"

[00:13:22] Adam: Right.

[00:13:22] Ben: to double-check something and then realize that it was totally wrong or... know,

[00:13:26] Adam: Yeah.

[00:13:27] Ben: it in my head

[00:13:28] Tim: Yeah

[00:13:28] Adam: The other thing I wanted to, to, to mention real quick is the... You had, y- you kind of double backed on what I had said, pointing out the whole, database transactional aspect of the, the pattern, and I just wanted to kinda have a laugh at. I didn't even think about that because when you said transactional outbound, I was thinking transactional emails as in not marketing emails, right?

[00:13:54] So there's, there's two different sorta classes of email, right? When you send a mass email to 300,000 people, that is considered a marketing email. When you send somebody a confirmation because they commented on your blog or because they signed up for an event or they made a donation, that is a transactional email in, in scare quotes.

[00:14:11] So i- in theory, you could have a transactional, transactional outbox pattern.

[00:14:16] Tim: It, it's-- Your paradigm kind of, I mean, feels like back pre-internet days when you actually had to read a book or go to a library or talk to someone to get information. You know, I, I imagine there were a lot of people who were like, "It's just not the same. I'm, you know, I'm just sitting here at home at my computer and I, I'm, you know, I'm looking stuff up on Yahoo!

[00:14:36] and Ask Jeeves, and it's just not like the old days when I grabbed a book off the shelves and I accidentally would learn something 'cause I had to flip through it. Now you just get straight to the answer," you know? So I kind of feel like that's just us getting used to it. I think the kids who are growing up who that's all they know is just gonna be business as usual.

[00:14:56] Ben: I will say though,

[00:14:58] that I do think there is something valuable about trying to synthesize information before you just ask for it to be laid out. Even as simple as you could either say to Claude Code " What's a transactional outbox pattern? Help me figure it out and tell me how to apply it to my site." And that's very much a, like strictly I'm gonna let Claude just lay it all out for me,

[00:15:30] Adam: Mm-hmm.

[00:15:30] Ben: versus even just something as subtly different as, as being like, "I've heard of a transactional outbox. I know that I wanna be able to do at m- at least once delivery, and I've heard this pattern helps, and dealing with these emails, and I wanna make sure that if the system crashes, that at least the emails go out. Like, help me think through that." Where at least you're forcing yourself to think through it a little bit can be, I think, much more helpful. I, I always get worried that I'm just gonna turn my brain off and be like, "Just tell me how to do OAuth." And OAuth is probably a terrible example 'cause, like no one actually wants to know how to do OAuth, but,

[00:16:08] Adam: Mm-hmm.

[00:16:10] Ben: but like, you know what I mean? Like it's-- I don't, I don't wanna give up all control over my, how my brain moves through the world

[00:16:18] Carol: I'm gonna

[00:16:19] Adam: I do

[00:16:19] Carol: what you implemented. Did you write it yourself? Are you like hand-writing it? Are you using a framework, like a third-party implementation?

[00:16:28] Ben: mostly it's just kind of copy-pasting some of the patterns that I already have, 'cause it's really ultimately just another database table that you can get and write to. So it's, it's not much more different than anything else that I have on the site. It's more like,like some of the stuff that I'm discussing is when you...

[00:16:45] Okay, just to make it concrete. When, when someone leaves a comment, I then send a single email to each other user that's already left a comment on that post. So it might be one user, it might be 15 users.so do I do, do I write one thing to the outbox and say, "Hey, this comment was left," or I do-- or do I do the, I need to send 15 emails because of this one event?

[00:17:06] Do I write all 15 ema- you know, as 15 separate things? So it's like, it's like details like that I'm not quite sure about. That's the kind of stuff I'm still talking through with Claude Code and, and negotiating, 'cause ultimately I don't need any of this. You know, it's, it's not a level of complexity that is really merited for the site, but it's merited in so much as that it's a learning opportunity.

[00:17:29] So I'm trying to keep it meaningful but also not overly complex and... always a balancing act

[00:17:36] Carol: Well, if you want something good to go look at, you can check out MassTransit. I use MassTransit in my systems, and that's what we use. It's very durable, and it has lots of really good working examples and lots of use cases. So if you wanna go just kinda read how it's being utilized, not that you have to use it, I think it would give you some, some good ideas of, of what you could do or even what an end goal could look like

[00:18:00] Ben: Yeah, definitely. I think I've heard you mention MassTransit before.

[00:18:03] Carol: Mm-hmm.

[00:18:03] Ben: um,it's a message queue or it's an event bus or it's a little bit of both?

[00:18:08] Carol: so we use MassTransit as our outbox. So we take that framework and it basically publishes to our outbox, and it doesn't go off the outbox until something has officially consumed it. So it sits on the outbox, you know, like you were saying, we do have situations where we put one message in, they go do lots of things, or we'll have a message per thing that needs to happen.

[00:18:28] It,

[00:18:28] Ben: Right

[00:18:29] Carol: broadly used and can be adapted anyway. But, um, once something actually is able to read it, it says, "Cool, gone. On to the next thing." So all MassTransit does is kinda handles that outbox process for us and gets it to the correct consumer

[00:18:44] Ben: Yeah, very cool.

[00:18:45] Tim: is, which is, a design pattern itself, right? M- MassTransit Outbox.

[00:18:49] Carol: Yep. Yep

[00:18:50] Tim: Mass, MassTransit sounds like it'd be a good rock and roll band name

[00:18:53] Carol: Mm-hmm.

[00:18:55] Adam: I thought of a good album name the other day,

[00:18:57] Tim: Yeah

[00:18:57] Adam: relevant to my failure. Songs to Drive to a Car Crash

[00:19:03] Tim: By Death Cab for

[00:19:04] Cutie.

[00:19:08] Ben: So anyway, that's my failure.

[00:19:10] Carol's Triumph: Running at Sea Level

[00:19:10] Ben: So Carol, bring us home

[00:19:12] Carol: Yeah, I'm gonna go with a big triumph. So since I am now at sea level, I have decided to start running again and working out more.

[00:19:20] Adam: Woohoo

[00:19:21] Carol: since getting here-- So I was running back in Texas quite a bit already, but I just couldn't run outside a ton because the air quality is so bad that it killed my lungs.

[00:19:30] Like, I was using an inhaler every morning and every night and for every

[00:19:33] Adam: Oh my goodness

[00:19:35] Carol: So here I'm only using it at night, and it's just a, be safe kind of thing. but at sea level, I took off running, and I realized my legs get sore before I stop breathing. So in Texas, my

[00:19:48] Ben: Winning

[00:19:49] Carol: out a, a long, long time before my legs gave out on me. So I was super happy to get back here and feel like I can run miles without really dying. However, I'm pouring sweat because of the humidity. But there are also lots of nice things to eat on my run, like blackberries, so that's nice. Yeah

[00:20:09] Adam: Were you significantly above sea level where you lived in Texas?

[00:20:13] Carol: Yeah, we were 5,000 feet above

[00:20:15] Adam: Okay.

[00:20:15] Wow

[00:20:16] Ben: cow

[00:20:16] Carol: 5,000 feet. Yeah, we had to change cooking where we lived. Uh, water boils a lot faster, or

[00:20:22] Adam: Yeah.

[00:20:23] Carol: boil point is lower.

[00:20:25] Adam: It's lower,

[00:20:25] Carol: here we have like our kettle set to 202 degrees and, in we kept it at like 196.

[00:20:34] Tim: Hmm

[00:20:35] Carol: it's interesting.

[00:20:37] Ben: of Texas as being just flat

[00:20:39] Adam: yeah

[00:20:39] Tim: Yeah.

[00:20:40] Carol: No,

[00:20:41] Tim: a big

[00:20:41] Carol: we are up high and in the desert. of sand. There are trees here. We're loving all the green. Our puppy got to see grass for the first time, so she had-- she'd only ever seen AstroTurf, so she had no idea what it was. We let her go in the backyard, and circles, circles, circles, just running circles

[00:20:58] Ben: Oh

[00:20:59] Carol: and eating so much grass that she got sick for three days straight, just constantly eating grass and getting sick, grass sick. Yeah.

[00:21:07] Ben: It's that party lifestyle style

[00:21:11] Adam: Don't do drugs, kids

[00:21:11] Carol: she's over

[00:21:12] Setting Up Ben's Blog or AI?

[00:21:12] Carol: that.

[00:21:14] Adam: are we ready for our game then?

[00:21:16] Tim: Yes.

[00:21:17] Ben: do it

[00:21:17] Carol: play

[00:21:18] Adam: So, I guess I'll intro the game, then I'll make sure... Guys, make sure I don't forget to give the listeners the URL where they can play at home if they want, and then we'll... I'll pull it up and we'll play it. So Ben has historically been very generous and gracious when we poke fun at him.

[00:21:33] I'm hoping that trend will continue tonight. Um, and so... And we talk a lot about AI stuff, so... And, and Ben is... What if he... W-what is Ben, if not a prolific blogger, right? He writes a ton and always has. So I made a game called Ben's Blog or AI,

[00:21:52] Carol: Right. Right

[00:21:55] Adam: of quotes, approximately half of which are... I think there's 20.

[00:22:00] approximately half of which are from, are pulled directly from Ben's blog, and the other half are invented for the purposes of this game by an LLM. And so what we're gonna do is I'm gonna go through, I'm gonna read them to you guys and let you make your pick, and we'll track each one of you separately.

[00:22:16] and then we'll see who, who does the best job at deciding whether, this quote is from Ben's blog or LLM generated.

[00:22:24] Tim: have an advantage here

[00:22:26] Adam: You would think so. I think this is gonna be particularly interesting and difficult.

[00:22:31] Tim: Okay

[00:22:32] Adam: UmI, I made the game so I'm not playing, but I... And I did go through it a little bit. But honestly, even having played the game, I'm not sure I could get them all or even, like, I'm not sure I could get 80 or 90%, correct.

[00:22:45] Tim: And

[00:22:45] Adam: So,

[00:22:45] Tim: while

[00:22:46] we're playing

[00:22:47] Adam: right. Uh,yeah, there's gonna have to be a, a little bit of an honor code here.so, listeners, you guys can go to workingcode.dev/aiben, just like all lowercase, all one word, aiben, to play the single player version of the game. the questions will not come up in the same order as we're gonna do them here on the show because, it's the same questions, but they just kinda get randomized order when you play.

[00:23:09] And so they won't come up in the same order if you like, compare against other listeners in our Discord, workingcode.dev/discord. so anyway, let's jump right in. Everybody ready?

[00:23:18] Ben's Blog or AI?: First Five Questions

[00:23:18]

[00:23:18] Carol: All right, let's go

[00:23:20] Adam: Okay, so listeners, this is your point. If you're gonna pause and compare your s- final score, this is where you're gonna wanna pause.

[00:23:26] All right, so first question, or here's your quote: "Performance work is most useful when it begins as a question about user pain rather than a celebration of cleger- clever measurement." So I'll just go down the list. Ben, what do you think?

[00:23:41] Ben: I feel like I should always go last.

[00:23:44] Adam: No, you have the unfair... Well, that's, that's true. Maybe you should go last because you have an unfair advantage

[00:23:48] Carol: we'll rotate

[00:23:50] Ben: All right. All right

[00:23:52] Adam: Okay. So who wants to go first this time? Who, who feels strongly?

[00:23:56] Ben: "Performance work is most useful when it begins as a question about user pain rather than a celebration of clever measurement." I mean, it does feel like something I would say.

[00:24:05] Carol: It's like you, right? It

[00:24:06] Ben: I feel like,

[00:24:06] Carol: you

[00:24:07] Ben: I feel like it's AI,

[00:24:10] Carol: Mm-hmm.

[00:24:11] Ben: I'm not sure honestly

[00:24:13] Adam: So final answer?

[00:24:14] Tim: he's, he's, all about the users

[00:24:16] Ben: I know. That's the thing that's throwing me. I'm gonna go AI, but I, I'm

[00:24:20] Adam: Okay.

[00:24:21] Carol: Yep,

[00:24:22] Adam: it looks like,

[00:24:22] Carol: to add to

[00:24:24] Adam: Okay. And I, I wanted to point out, once we click your answer, I, I-- that locks it in, so you gotta be sure.

[00:24:29] Ben: I've locked it in

[00:24:30] Adam: Okay, so

[00:24:31] Carol: AI. It sounds like something Ben would think, but I don't know that he would say it exactly like that

[00:24:37] Adam: Okay. So you, you think AI?

[00:24:39] Carol: AI, yeah

[00:24:40] Adam: Tim

[00:24:41] Tim: I'm gonna do like they do on College GameDay where the, all the picks have been like this, it's like Georgia, Georgia, Georgia.

[00:24:48] Adam: Right.

[00:24:48] Tim: And you,

[00:24:49] you,

[00:24:50] Adam: Somebody's gotta be contrarian

[00:24:51] Tim: gotta break up the graphic. I, I think, you know, Ben is all about user pain,

[00:24:57] Carol: Yes

[00:24:58] Tim: and, and the, the s- he, and he hates, like, people trying to be too cute and clever.

[00:25:02] So I would say it's Ben's blog

[00:25:05] Adam: Okay, locking it in, Ben's blog. And that one was AI?

[00:25:08] Tim: That was AI, okay.

[00:25:10] Adam: Yeah

[00:25:10] Ben: to me, to me it's, it, the phrase performance work is really, I think, the thing that didn't sit right with me.

[00:25:16] Adam: Mm-hmm.

[00:25:17] Ben: like, the questions about user pain and clever measurement... performance work is a strange, is a strange

[00:25:23] Tim: of like, what do you mean performance work? Are we talking about database performance or performative work or what, you know?

[00:25:28] Adam: Yeah, that's good context clues. All right, let's move on to the next one. Ultimately, there's a fundamental difference between spray nozzles and users. One is an inert 3D-printed piece of plastic. The other is a thinking, feeling, sentient being with an evolved pattern-matching brain and a weakness for familiarity bias

[00:25:50] Carol: I'll go first this time

[00:25:52] Adam: Okay.

[00:25:54] Carol: I, I think Ben said that. I just feel like this is a Ben thing.

[00:25:59] Adam: All right

[00:26:02] Tim: See, I'm struggling with spray nozzles aren't 3D printed, they're injection molded. And AI would probably know that.

[00:26:13] Carol: Ooh, sexual, huh?

[00:26:16] Ben: Like you're talking like someone who worked in a soap factory.

[00:26:21] Tim: You worked in a soap factory?

[00:26:23] Ben: you worked in a soap factory.

[00:26:25] Tim: I did. yeah,

[00:26:25] Ben: Yeah.

[00:26:26] Tim: yeah. My, my dad owned a soap factory. yeah, I- I'm gonna, I'm gonna say, I'm gonna say that's Ben

[00:26:32] Adam: Okay.

[00:26:33] Ben: Yeah,

[00:26:34] Adam: Ben?

[00:26:34] Ben: I definitely remember. I- if, if I don't, if I don't remember the exact phrasing, I remember it

[00:26:39] Adam: Yeah

[00:26:40] Tim: you're, wrong with the 3D printing part.

[00:26:43] Ben: How

[00:26:43] Adam: So that was correct. you guys all got it right. It's m-

[00:26:46] Ben: rant about this for two seconds though?

[00:26:47] Carol: Yeah

[00:26:47] Tim: Yeah

[00:26:48] Ben: Just so, so the, the, the for you, for listeners' context here, the greater, background for this thought process there was,if you're trying to design a spray nozzle that is like optimal distribution of spraying, you can literally just randomly try different designs and test them out, and then see what the spray pattern is.

[00:27:11] And eventually you just randomly happen upon a design that works really well. And you don't necessarily have to know why it works better, because all you're trying to do is design a 3D-printed nozzle that has optimal efficiency. is extremely different than just randomly trying different colored buttons.

[00:27:31] Like, oh, green buttons, convert a little bit better than light green buttons, which convert a little bit worse than dark red buttons. and like even if you find that that's true, it's like you didn't learn anything as a designer, and that's the thing that always drove me crazy is, is what is it about tapping into some human psyche?

[00:27:50] You can't just do that randomly because then what's the lesson learned? Which is very different than trying to build some mechanically efficient piece of tools. And yet there was like a whole period where the industry went through this extreme kind of gamification of everything and, and like tweaking and micro-optimizations. And anyway, that was the background on

[00:28:09] Adam: So that was really impressive, like memory of, of what this article was about then, because this is a 2017 article

[00:28:16] Tim: Wow.

[00:28:17] Carol: Oh, wow.

[00:28:18] Tim: No one was alive back then. That's great.

[00:28:21] Adam: So in, in case you're... So listeners, when you, when you get the, after you get the correct answer or, or incorrect, it'll give you information down at the bottom, and it gives you the year of the article and a link to it down there. So this was from the User Experience parent- parentheses UX of Conversion Driven Development

[00:28:38] Ben: Right, because all we're trying to do is drive a conversion number, but we're not actually learning any of the lessons. Exactly. See? And, and this is the, the joy of writing things down, is that it, it plants it

[00:28:49] Adam: Yeah, absolutely.

[00:28:51] All right

[00:28:51] Tim: others is to learn twice.

[00:28:54] Ben: There you go

[00:28:54] Tim: before you move on, so you're talking about, Ben, the context that you gave there about just, you know, randomly creating spray nozzle designs. Reminds me of two things. One, like, there's cleaning product here in the States called Formula 409.

[00:29:08] Adam: Yeah.

[00:29:09] Tim: and the story is that, you know, is they tried 408 until they got the right

[00:29:13] Adam: Yep.

[00:29:13] Tim: 409.

[00:29:14] Ben: Oh,

[00:29:14] Adam: Yep

[00:29:15] Ben: fun

[00:29:15] Carol: interesting

[00:29:16] Tim: All right, question three: When a team treats every edge case as an interruption, the product slowly becomes a museum of assumptions nobody remembers making

[00:29:27] Ben: Damn

[00:29:27] Tim: I guess I'll go

[00:29:28] Adam: All right, so yeah, Tim, it's your turn to go first

[00:29:31] Tim: Oh, let's see. Yeah, I mean, again, it's a very Ben-ish sounding thing, but I don't think he actually said it. The phrasing Museum of Assumptions is, it's, it's, it's a very kind of thing that Ben would say, but I, I think this is AI cloning him. So I'll say

[00:29:52] Adam: Final answer? Okay.

[00:29:53] Tim: lock it in

[00:29:54] Adam: All right. Who wants to go next? I don't wanna push anybody. Like, I don't know, Ben, if you, if, if you feel like you need to go last 'cause you're pretty confident, then let us know.

[00:30:03] Ben: s- this is one of the things, like exactly what Tim said. This feels like

[00:30:08] exactly something I would say, but I don't remember saying it

[00:30:13] Carol: Bingos, I bought this last night.

[00:30:17] Ben: Like I could 100% imagine writing this

[00:30:22] and talking about product development and I just don't remember. I'll, I'll go, I'll go AI as well

[00:30:31] Adam: Okay. Carol?

[00:30:33] Carol: I'll go-- I'm gonna go Ben. The museum thing is, to me is interesting. Like, I don't know that Ben... I know Tim said he could hear Ben saying Museum of Assumptions. I

[00:30:42] Ben: I could,

[00:30:42] Carol: hear that.

[00:30:43] Ben: oh,

[00:30:44] Adam: Gotcha.

[00:30:44] Ben: hear it.

[00:30:45] Adam: Yeah, me too. And honestly, I think, so I'm not playing officially, but, if I were, that would be my guess because that Museum of, of Assumptions, that just sounds like a Ben-ism to me. So that would be my guess. And the answer is AI.

[00:30:58] Ben: Oh, okay.

[00:30:59] Adam: so,

[00:31:00] Ben: a, it's a, it's a solid, it's a solid sentence

[00:31:03] Adam: Tim and Ben were correct, Carol and I were wrong.

[00:31:05] Tim: Dead.

[00:31:06] Adam: yep, just generated based on, uh, reading your blog, Ben.

[00:31:10] Tim: Yep,

[00:31:10] Adam: I, I, yeah, so the, the ones that are generated are based on what it, like, read through to pull out quotes. I ha- I had the LLM, like, read r- a ton of random pages from your blog as input, as like, "Okay, we're gonna read through this and look for phrases that feel like an A- an LLM could have written them." And, and then, those were the good ones, and then based off of everything that you just read, now generate another 10 or whatever that are, uh, LLM.

[00:31:36] Tim: so unsurprisingly,

[00:31:37] Adam: Great.

[00:31:37] Tim: O,

[00:31:38] Carol's two-

[00:31:39] Carol: Hmm.

[00:31:40] Tim: T- Carol and Tim are both two and one, so

[00:31:43] Adam: All right, let's move on. Number four, a naming convention is not valuable because it's consistent. It is valuable because it makes the next correct decision easier to see

[00:31:54] Tim: That's an aw- That's an awkward, that's an awkward sentence A naming convention is not valuable because it's consistent. It's valuable because it makes the next correction-- correct decision easier to see

[00:32:10] Adam: In the right context, I think that that could read very fine

[00:32:14] Tim: Yeah.

[00:32:14] Ben: Y- yeah, yeah.

[00:32:16] Tim: Yeah, it's hard without the context

[00:32:18] Ben: And you know I'm always, uh, bloviating about naming stuff and, like, patterns and mental models. This is very on

[00:32:25] Adam: Yeah

[00:32:26] Ben: I will say that, I'm gonna go with AI because I think the, wording next correct decision is not

[00:32:36] Carol: Yeah, that sounds off, right?

[00:32:38] Tim: does.

[00:32:39] Carol: That was the, the few words that got me. Everything else was spot on. I was like, "This is probably Ben. is Ben." But then next correct decision, I'm like, "Eh, that doesn't sound so much like Ben."

[00:32:53] Adam: So is everybody going AI?

[00:32:54] Carol: Yeah, I'm

[00:32:55] Adam: Carol's AI

[00:32:56] Tim: I'm, I'll, I'll keep the graphic the same. We'll go AI

[00:33:00] Adam: Okay.

[00:33:01] Ben: Boom

[00:33:02] Adam: everybody's right.

[00:33:03] Tim: Yeah.

[00:33:05] Adam: one was also generated

[00:33:06] Ben: Yo, I spend so much time thinking about naming stuff. That's why this feels so on brand too. I... Sorry. Like literally, I'm, I, I'll... These are the kind of conversations that I have with Claude, which is, you know, probably a huge part of why I'm not 10X-ing my productivity is 'cause I'm like, "Should I put the, uh, uh, from in the name or should I do test or assert?" Like, all

[00:33:30] Adam: Should it be plural?

[00:33:32] Ben: Yeah, 100%. I... Oh, bro.

[00:33:35] Adam: I think we hit a nerve. Let's

[00:33:36] move

[00:33:37] Ben's Blog or AI?: Quotes 6-10

[00:33:37] Adam: on.

[00:33:38] Quote number five, "Technical debt is rarely created in a single dramatic moment. More often, it accumulates quietly through a thousand reasonable compromises."

[00:33:49] Tim: I think that's definitely Ben. I'm going, I'm going Ben. Yeah, that's... Yeah

[00:33:54] Carol: Yeah, with you. I wanna, like, I can kinda see a little bit of AI there, but it sounds like something Ben would say. Like, much of it sounds like him

[00:34:07] Adam: So Carol locking it in?

[00:34:08] Carol: I'm going

[00:34:08] Adam: All right

[00:34:09] Carol: Lock it in

[00:34:11] Ben: I genuinely don't know.

[00:34:13] Carol: never said this."

[00:34:14] Ben: No, I'm, I'm gonna go with me also. I'm, I'm not 100% sure, but it definitely feels like something... feels like something I would write

[00:34:22] Adam: The answer was AI.

[00:34:24] Carol: Oh.

[00:34:25] Tim: We are

[00:34:26] Adam: Everybody, everybody got that one wrong.

[00:34:28] Ben: a good sentence. Technical debt is rarely created in a single dramatic moment

[00:34:32] Tim: Vince's like, "I'm

[00:34:32] Adam: soon to a Ben blog near you.

[00:34:34] Carol: Yes

[00:34:36] Ben: Ah, it's so true though. Oh, sorry.

[00:34:39] Tim: So Ben keeps his lead four and one. Carol and I are tied at three and two

[00:34:43] Adam: Yeah. All right, number six. If your architecture requires every developer to remember a hidden rule, then the rule is not architecture, it's folklore

[00:34:53] Tim: It's a good sentence.

[00:34:54] Carol: Yeah, I'll go with this one. I'm going with Ben

[00:34:56] Tim: I,

[00:34:57] I think it's too good a sentence

[00:34:59] Ben: Oh, you son of a beaver

[00:35:01] Adam: Too good for Ben?

[00:35:02] Tim: I think it's too good to say. I don't, and I don't know necessarily if you'd use the word folklore. It doesn't sound like a bin word

[00:35:07] Carol: I could see him saying folklore.

[00:35:09] Adam: How dare you, sir?

[00:35:11] Tim: How dare you, sir? I'm going AI.

[00:35:13] Carol: He's over there right now doing a search

[00:35:15] Ben: No, no, I'm thinking if you're, if your developer-- your architecture requires every developer to remember a hidden rule, then the rule is not architecture I feel like maybe I did say that. I'll go with me. I'll go with me.

[00:35:31] Adam: I mean, so somebody's gonna win, somebody's gonna lose on, on this one. So the answer was AI.

[00:35:36] Carol: Ah.

[00:35:37] Tim: I'm tied with Ben now.

[00:35:38] Adam: Yep. Ben and Tim are four and two. Carol's an even three and three

[00:35:42] Tim: It's the folklore word. It just, it's, it didn't sound Ben-ish

[00:35:47] Ben: But, you know, there was that whole period where everyone was like peak hype cycle on microservices and all kinds of stuff.

[00:35:54] Anyway

[00:35:55] Adam: All right, number seven. A good interface does not merely expose functionality, it teaches the user what the system believes is important

[00:36:04] Ben: I'm gonna go me

[00:36:07] Adam: You sound very confident.

[00:36:08] Ben: I'm not, I'm not, I'm not confident. I f- but go me

[00:36:13] Adam: Okay

[00:36:15] Carol: I, I'm gonna go Ben too, but it's because so many have been AI, something has to be Ben soon.

[00:36:23] Tim: 'Cause 'cause you said there were 20 and it's half and half, so

[00:36:27] Adam: Yes

[00:36:27] Tim: I'm, I'm counting cards now.

[00:36:29] Adam: It, it might be, it might be like 9 and 11. It's roughly half and half.

[00:36:33] Carol: so here's the thing. If, if listeners are following along, there's a semicolon. don't think anyone understands

[00:36:41] Ben: Oh,

[00:36:42] Tim: a

[00:36:42] semicolon

[00:36:43] Ben: I semicolon all day.

[00:36:45] Tim: Okay. All right. All

[00:36:46] Adam: I was using em dashes before, uh, LLMs made it uncool.

[00:36:49] Ben: Yeah, exactly

[00:36:52] Tim: So, okay. Well, if you have, if you've, yeah, What did you say, Carol? Oh, Ben picked,

[00:36:56] Carol: I said,

[00:36:57] Ben: I, I picked me

[00:36:59] Carol: And I did too

[00:37:01] Tim: You know what? I, I wanna keep my lead, so I'm just gonna go Ben as well, or at least tied

[00:37:06] Adam: Yeah, at least you'll stay where you are in the rankings.

[00:37:08] Tim: awake.

[00:37:09] Ben: Oh,

[00:37:09] Tim: Well,

[00:37:10] Adam: Everybody, everybody was wrong

[00:37:12] Tim: Told you you didn't know how to use a semicolon.

[00:37:16] Ben: 'Cause I've talked so much about affordances and, like, how the UI has to give affordances. It feels, it's on,

[00:37:21] Adam: Yeah,

[00:37:22] Ben: it's on brand

[00:37:23] Adam: y- yeah, users and system beliefs. This is very on brand for you

[00:37:28] Tim: Mm-hmm.

[00:37:29] Adam: All right, number eight. My point here is that abstraction of the data access layer should do just that, abstract the data access.

[00:37:38] Tim: And, and now, now we have a colon rather than a semicolon after

[00:37:42] Adam: Yeah,

[00:37:42] Tim: just that

[00:37:43] Adam: and what does Ben love to talk about more than abstractions and data access layers? I, I think maybe nothing

[00:37:50] Ben: It's funny 'cause I feel like I've already talked about data abstraction in this podcast today.

[00:37:56] Tim: I'm, I'm going Ben because he says, "My point here." That's,

[00:38:01] Carol: Yeah

[00:38:01] Tim: that... I'm going Ben. I think the AI would, would phrase it slightly different.

[00:38:06] Adam: Okay.

[00:38:07] Carol: Yeah, I agree. I agree

[00:38:09] Ben: bands across the board.

[00:38:11] Adam: All right. And I was correct.

[00:38:13] Ben: What, what,

[00:38:14] Tim: Yep.

[00:38:14] Ben: what,

[00:38:15] Adam: So,

[00:38:15] Ben: repositories and data access layers

[00:38:19] Adam: Yeah, it's a 2020 post. Repositories and data access layers can have as many methods as you find helpful

[00:38:25] Ben: Oh, I remember writing that

[00:38:28] Adam: All right. Moving on. Number nine, almost to the halfway point. If you start crafting your HTTP API surface area to reflect the process of the business and the terms from the ubiquitous language, both uppercased, ubiquitous language, you could probably do everything you need with just GET and POST

[00:38:50] Tim: What is ubiquitous language?

[00:38:53] Ben: ubiquitous languages

[00:38:54] Carol: you, uh, do you capitalize those words when you type?

[00:38:57] Tim: Hmm

[00:38:58] Adam: I will say, this is something that has actually kind of come back up around, in, LLM, engineering design discussions. There's a, a famous, coding book, I forget which one it is, but that the ubiquitous language is a concept

[00:39:12] Ben: Eric Evans, I think, Domain... I think it's the Domain-Driven Design book,

[00:39:16] Adam: That sounds right.

[00:39:18] Ben: DDD. The,

[00:39:20] Adam: is that the one with all the squigglies on the front?

[00:39:23] Ben: The ubiquitous language I think is basically the, the, the concept that whatever your customer uses to phrase things is what your code should use. So like if

[00:39:32] Adam: Yeah

[00:39:32] Ben: policy is called a, you know, a didgeridoo, then you should call it a didgeridoo, you know, kind of a thing

[00:39:39] Tim: you said Ben. I'm going, I'm, I'm gonna go AI

[00:39:44] Adam: Okay

[00:39:46] Tim: Although you've locked it in already, but yeah, the fact that he knows all that about ubiquitous language and who wrote the book, I'm probably wrong

[00:39:52] Ben: Well, I'll tell you, it's funny because I am 100%

[00:39:55] sure I wrote this except for the phrase ubiquitous language.

[00:40:00] Carol: It just threw in something

[00:40:02] Ben: I, like, I know what that is, but only in passing. But definitely I have ranted many times on my site about why does everybody use put and patch? Those are ridiculous. We can just use get and post. So I'm gonna go, I'm gonna go me, not 100% sure

[00:40:20] Adam: Okay. Correct answer was Ben

[00:40:22] Ben: Oh, 2019. Dang

[00:40:25] Adam: 2019, the article was Considering HTTP

[00:40:27] Methods PUT and PATCH: Indicators of an Anemic Domain Model and a Leaky Abstraction

[00:40:33] Tim: That is a mouthful. Say that three times real fast. S- s- s-

[00:40:37] Ben: about that SEO, I guess.

[00:40:38] Tim: uh, yes.

[00:40:40] Ben: It's all about that clickbait.

[00:40:41] Tim: yeah, so Ben's six and three, and Carol and I are tied again at five and four

[00:40:47] Adam: All right, moving on. Halfway there, number 10. To adapt this new non-blocking environment, I think we have to move away from an exceptions validation framework and into a deferred-based validation framework. Deferred being capitalized

[00:41:02] Carol: I went first last time. Monte YouTube

[00:41:05] Tim: Yeah, I'll go first. I, I think it's

[00:41:06] AI.

[00:41:08] Adam: You sure?

[00:41:09] Tim: Yeah, I'm sure

[00:41:10] Adam: You gave me crap for locking you in too soon last time.

[00:41:12] Tim: you crap. I didn't give you... I just, I d- I just, my, my, my, my s- second-guessed myself, so.

[00:41:18] Adam: Okay, so

[00:41:19] Tim: I was, correct to second-guess myself, but I'm

[00:41:21] Adam: you're AI. Okay

[00:41:23] Ben: All right, here's my reasoning

[00:41:25] Deferred in this case almost certainly refers to jQuery's implementation of promises, like their original implementation of promises from, like,

[00:41:36] Tim: Way

[00:41:36] Ben: 2013.

[00:41:37] Tim: Yeah

[00:41:39] Ben: I bet this is me and this post is hella old

[00:41:44] Adam: Okay. So you wanna lock in, Ben?

[00:41:46] Ben: I'm gonna lock in Ben from like 2013.

[00:41:49] Adam: Okay.

[00:41:50] Tim: You don't get extra points

[00:41:51] Carol: Yes.

[00:41:52] Tim: when it

[00:41:52] was written.

[00:41:53] Adam: I don't know. I'd be pretty impressed. I'm not sure I know my own blog that well

[00:41:57] Ben: No, I bet it's from like 2008

[00:41:59] Tim: When

[00:42:00] Carol: I'm gonna go with AI.

[00:42:01] Tim: Yeah.

[00:42:02] Carol: a hard one, but, I'm gonna go with AI.

[00:42:04] Adam: Okay, here we go. Enter Ben's Blog

[00:42:07] Tim: Dang it.

[00:42:08] Ben: 2012

[00:42:10] Adam: Wow, Ben. Using jQuery deferred to chain...

[00:42:13] Carol: Mm-hmm,

[00:42:15] Adam: Using jQuery deferred to chain validation rules in an asynchronous non-blocking environment

[00:42:20] Ben: I literally don't even know what that means.

[00:42:22] Tim: Me either

[00:42:24] Adam: But you did in 2012. All right, number thir- or I'm sorry, number 11: At the end of the day, the only thing that really keeps you from achieving greatness is yourself

[00:42:34] Tim: It's all been positive for Ben We've... Oh, I broke him. I broke him

[00:42:45] Carol: Oh, boy.

[00:42:46] Adam: Oh, man.

[00:42:51] Ben: That's

[00:42:52] Adam: know which line is gonna get him

[00:42:53] Tim: It's a little, too Tim Robbins for me

[00:42:55] Ben: Oh

[00:42:56] Tim: going AI.

[00:42:58] Adam: All right, Tim's logging in AI

[00:43:00] Carol: Yeah, I'm gonna go with AI too. Like, when would- where would you put that, you know?

[00:43:07] Ben: Yeah, I'm gonna go AI. I-

[00:43:08] Carol: Ben.

[00:43:09] Tim: I, I just imagine Ben like looking in the mirror, good enough, you're smart enough, and gosh darn it, people like you."

[00:43:17] Carol: Mm-hmm.

[00:43:17] Mm-hmm.

[00:43:18] Adam: Ben, what's your answer?

[00:43:19] Ben: AI across the board.

[00:43:20] Adam: All right. And the answer is Ben's Blog.

[00:43:23] Ben: no.

[00:43:26] Tim: How old was that one?

[00:43:27] Adam: That one's from 2007.

[00:43:29] Ben: my goodness.

[00:43:30] Tim: younger, more naive Ben

[00:43:32] Adam: Yeah, and the post,

[00:43:33] Ben: Yeah, go

[00:43:34] Adam: the, the post is The Magic of Thinking Big by David Schwartz

[00:43:37] Tim: Oh, so he's probably quoting somebody.

[00:43:38] Ben: The Magic of Thinking Big. The Magic of Thinking Big was such a wonderful book.I listened to it as an audiobook, and it sounds like, like a sexual harassment recording from, like, the 1970s. Like,

[00:43:51] Tim: Whoa.

[00:43:52] Ben: it sounds like someone recorded it on a handheld cassette

[00:43:55] Adam: Yeah

[00:43:55] Ben: of a thing.

[00:43:56] Tim: Yeah.

[00:43:57] Ben: It's fantastic

[00:43:58] Tim: The 22

[00:43:59] Adam: of Getting Things Done that sounded like that. It was like a seminar, but it was, sounded like that quality, yeah

[00:44:05] Tim: that's before I met you. I met you in 2010

[00:44:09] Adam: This was, actually Ben wrote this when he was in his mother's womb.

[00:44:13] Carol: Mm-hmm.

[00:44:15] Tim: Okay.

[00:44:16] Adam: right, number 12

[00:44:18] Tim: Five and six, Carol and I are just staying together here

[00:44:21] Adam: Yeah. All right, number 12. What I'm looking for here is not a proof of concept, but rather I'm looking to see if there are any immediately obvious failures of concept

[00:44:33] Ben: Ooh.

[00:44:34] Tim: of dashes there

[00:44:35] Ben: I feel like that is

[00:44:37] me.

[00:44:39] I'm going me,

[00:44:40] Adam: Okay.

[00:44:41] Ben: but I'm not, I'm not sold. But I think it's me, but I'm not sure. I don't know what I'd be talking about, but I like it. It sounds like something I would say So Ben is what I'm saying.

[00:44:49] Carol: Y- y- yeah, yeah. I'm, I'm gonna go with Ben too, just because Ben said that.

[00:44:53] Adam: Okay

[00:44:54] Tim: Yeah, Ben sold me on it

[00:44:56] Adam: Answer is Ben.

[00:44:57] Carol: Woo-hoo

[00:44:58] Adam: So the year was 2016, and the post was exploring the possibility of parallelizing queries in ColdFusion using CFThread

[00:45:06] Tim: I'm sure that worked out great

[00:45:11] Adam: Oh.

[00:45:13] Carol: Oh, I love it

[00:45:14] Tim: If you need to use CFThread, you've already... You're already

[00:45:17] Ben's Blog or AI?: Quotes 11-15

[00:45:17] Tim: wrong

[00:45:19] Adam: All right, number 13, idiomatic code builds on the wisdom of the past. Readable code believes in the beauty of the future

[00:45:27] Tim: Oh, Ben is beauty

[00:45:29] Adam: Yeah, he loves his beauty.

[00:45:31] Tim: Mm-hmm.

[00:45:31] Adam: beautiful

[00:45:32] Tim: So we're, right now we're at eight and four by Ben, and then Carol and I are again slugging it out at six and six with seven questions left

[00:45:41] Carol: it took a lot of them here, but I'm gonna go with AI. I feel like it's a trick one

[00:45:48] Tim: Mm-hmm.

[00:45:48] Adam: I, I have, I have my reasoning, which I'll give af- after you guys all lock in your answers. I don't wanna influence anybody

[00:45:54] Tim: do love the word idiomatic.

[00:45:57] Carol: Mm-hmm.

[00:45:58] I did AI. Ben doesn't write readable code. He puts tons of spaces in there and pisses everyone off.

[00:46:04] Ben: Dare you

[00:46:06] Carol: Blank line, blank line, blank line. Ugh.

[00:46:08] Tim: To him,

[00:46:09] Carol: Mm-hmm.

[00:46:10] Tim: I'm, I'm going Ben. I think it's Ben

[00:46:14] Ben: I

[00:46:14] Adam: And Ben?

[00:46:15] Ben: go me and I'll throw in 2020. Ah,

[00:46:21] Adam: That is Ben. It was from 2017, and this, the post was Favor Readable Code Over Idiomatic Code

[00:46:28] Ben: Y'all, know I love my beautiful code

[00:46:32] Adam: All right, so we're at,

[00:46:34] Tim: beauty in the

[00:46:34] Adam: we're

[00:46:34] at...

[00:46:35] Tim: buddy.

[00:46:36] Adam: Yeah. So, the standings are Ben is up nine, nine correct, four incorrect. Carol has six correct and seven incorrect, and Tim has and Tim has seven and six

[00:46:51] Tim: And we got six questions left.

[00:46:53] Adam: Yep.

[00:46:53] Tim: Come on, Ben. I

[00:46:54] I need you to get us some wrong here

[00:46:56] Adam: All right,

[00:46:57] number 14, the more weak links that I can remove, the more likely my chain will hold steady

[00:47:02] Ben: I feel like that's AI But I'm-- I also talk about weak links all the time probably. I'm going AI though. I think

[00:47:14] Adam: Okay.

[00:47:14] Ben: not quite me.

[00:47:15] Adam: Locking it in?

[00:47:16] Ben: Locking it in

[00:47:18] Tim: yeah, I, my gut was initially that it was the weak link's It was, it's AI generated.

[00:47:25] Carol: Yep, same

[00:47:26] Tim: Actually, the weak link part is Ben-ish, but it's the, uh, My chain will hold steady" part. It just doesn't

[00:47:32] Ben: Mm. Oh,

[00:47:37] Carol: fit. Yeah.

[00:47:38] Adam: Yeah

[00:47:38] Tim: going AI. Lock it in.

[00:47:39] Carol: Same

[00:47:40] Adam: So before I do that, I, I forgot to mention in the last question I had-- I said I was gonna give my reasons, and you guys had already said them, that's why I didn't. but it was the, the... I forget what the question was or the, the statement was, so whatever. Carol's, Carol's picking AI as well.

[00:47:51] Let's see who's right. Everybody's wrong.

[00:47:54] Tim: who,

[00:47:54] Carol: Oh, no.

[00:47:56] Adam: That one was Ben.

[00:47:57] Ben: Come on

[00:47:58] Carol: What?

[00:47:59] Adam: Project Huge: The imaginary fear of scheduling mundane tasks such as nutritional intake

[00:48:08] Tim: Hmm.

[00:48:10] Adam: So Project Huge, Ben, that was, you were, like, writing about, your lifting stuff, right? Lift, weightlifting stuff

[00:48:16] Tim: you- of Facebook videos of you with a weight belt and sweats

[00:48:20] Ben: Yeah, Freaking loving me some sweatpants, bro

[00:48:25] Adam: All right, so Ben's got nine y- nine correct, five incorrect. Tim is seven and seven, and Carol is six correct, eight incorrect. So still pretty close. And I told you guys, I told you guys this wasn't gonna be easy, didn't I?

[00:48:37] Tim: You did. You're right

[00:48:38] Adam: All right, number 15: You estimate tasks like a younger man, dash, no optimism held back.

[00:48:45] Admirable but mistaken

[00:48:49] Tim: There's a lot of short

[00:48:50] sentences Yeah, I don't like the way it, it's broken up. Ben's a little more long-winded sentences than... I'm going AI

[00:49:00] Adam: Okay

[00:49:02] Tim: He's being awfully quiet, so I think he

[00:49:04] Ben: I'll go, I'll go last. I'll go last 'cause I know what it is.

[00:49:07] Carol: I'm gonna go with Ben. feel like maybe it's possible

[00:49:12] Adam: Okay

[00:49:13] Ben: What you have to know is that it's supposed to be read in the voice Bane from Batman.

[00:49:20] Tim: Oh,

[00:49:20] Ben: It was like,

[00:49:21] Tim: Oh. "

[00:49:21] Ben: You estimate tasks like a younger man, no optimism held back. Admirable, mistaken."

[00:49:30] Tim: You have

[00:49:30] Ben: It was Ben. It was Ben quoting,

[00:49:32] uh, quoting Bane quoting,

[00:49:36] Adam: So this is

[00:49:36] Ben: Gretzky.

[00:49:37] Adam: then you're logging in, your answer is Ben.

[00:49:38] Ben: Yeah.

[00:49:39] Adam: Okay.

[00:49:40] Tim: be great

[00:49:40] Adam: Is that...

[00:49:41] Tim: Um,

[00:49:42] Carol: 2015

[00:49:43] Adam: He was right, 2015, and the, the, the post title is Bane on Task Estimation

[00:49:50] Ben: Yo, that Bane character was just fantastic. I'm sorry.

[00:49:54] Tim: Hardy's an amazing actor

[00:49:55] Ben: Tom Hardy is an amazing actor

[00:49:57] Carol: All right, number 16: The hardest part of refactoring is not moving code, semicolon. It is preserving the confidence that the old behavior was understood in the first place

[00:50:07] Tim: What's that even mean?

[00:50:09] Adam: That's how you know Ben

[00:50:10] wrote it.

[00:50:13] Tim: It sounds smart because I don't understand it,

[00:50:16] Carol: Restoring the confidence Would you really say preserving the confidence

[00:50:21] Tim: I think Ben knows it. He's grinning. I think

[00:50:23] Ben: No, I'm, I'm, I'm genuinely not sure. I think Carol's right. I think preserving the confidence is, is a little bit strange

[00:50:33] Tim: Yeah, that, that one's tripping me up too, that preserving the confidence bit

[00:50:38] Ben: I'm... You guys are gonna go AI, so I'm gonna go Ben

[00:50:43] Carol: Yeah, I'm gonna go AI.

[00:50:45] Tim: gamesmanship.

[00:50:46] Carol: Mm-hmm

[00:50:47] Tim: I'm going AI too. it's the only thing I can do. I, I gotta, gotta, gotta go opposite Ben to win

[00:50:52] Adam: So Tim's AI. Carol, you said you're AI? And Ben, you're going Ben? Okay. Answer AI.

[00:50:59] Ben: okay. Preserving, preserving, preserving the comments. But I do, you know, I do love a little code refactor

[00:51:07] Adam: Yeah. So, okay, that brings Carol and Tim both up to eight and eight, and Ben is at 10 and six. All right, moving on. Number 17, "I would recommend it to anyone who wants a swift kick in the ass reminder that there are better ways of developing applications."

[00:51:22] Tim: He doesn't swear much in his blog.

[00:51:24] Adam: Not much, but occasionally

[00:51:27] Tim: Maybe he's quoting somebody He, he sounds like he's book reviewing something That's what I would think. He's read something and he's recommending people to do it. So I'm going Ben

[00:51:38] Carol: I'm gonna go with AI. Does

[00:51:40] Adam: Okay.

[00:51:41] Carol: Does your LLM curse?

[00:51:43] Adam: Yeah, it will

[00:51:44] Carol: with--

[00:51:44] Ben: I have no idea.

[00:51:45] Carol: AI.

[00:51:46] Tim: Have you seen Adam Cameron's AI? Woo-hoo.

[00:51:48] Carol: Mm-hmm.

[00:51:50] Adam: Yeah, his is like, "If you don't include three curse words in every response, I'm gonna unplug you."

[00:51:55] Ben: I'll go me as well, but I have no idea what this is referring to

[00:52:00] Adam: Okay, and the answer is Ben's Blog. This is, this is even... I think this might be our oldest one yet, 2006,

[00:52:07] Tim: Whoa

[00:52:08] Adam: it, must be a review because it's The Pragmatic Programmer:

[00:52:11] Carol: Yep

[00:52:12] Adam: From Journeyman to Master

[00:52:13] Ben: Did we do,

[00:52:14] Carol: got it,

[00:52:14] Ben: did we do Pragmatic Programmer in a book club?

[00:52:17] Adam: No.

[00:52:18] Ben: No

[00:52:18] Carol: we should.

[00:52:19] Adam: We did clean code

[00:52:21] Ben: Yeah, yeah, yeah.

[00:52:22] Ben's Blog or AI?: The Home Stretch

[00:52:22] Adam: Uh, number 18, the home stretch here

[00:52:25] Tim: I'm at l- Ben's 11 and six, Carol and, uh, Carol's eight and nine, and I'm nine and eight.

[00:52:29] Adam: Yep.

[00:52:30] Tim: With

[00:52:30] two questions left, so there's, I mathematically, I don't think I can win. So Ben

[00:52:37] Adam: Now who's gamesmanship-ing?number 18, "The most durable software systems are not built from perfect abstractions, but from small decisions that remain understandable after the original excitement has faded."

[00:52:49] This could be like a pull quote from a book review

[00:52:54] Tim: Yeah, but he, he's... He loves talking about the, the feeling of doing the code, right? So the real excitement has faded. He's, he's always struggling to find ways to get that dopamine hit after the original. So I think this is Ben

[00:53:09] Ben: Feel like it is me. I'm not 100% sure, but I'm lo- I'm locking in Ben as well

[00:53:13] Adam: Okay.

[00:53:14] Carol: Well, just for fun, I'm gonna lock in AI

[00:53:17] Adam: Okay, let's see. And the correct answer is AI

[00:53:20] Ben: Ah. This feel, this definitely feels like something I would say, 'cause I'm all about the, like, not doing the fancy stuff, but, like, doing the stuff you... Makes sense

[00:53:30] Adam: Mm-hmm. I will say too, Ben, you have a single page on your website that lists and links to every post. It's just like, it's like the, the archive list or whatever, and that made it real easy to feed into the LLM. It's just like, here's a page with a crap load of links on it, just pick like 40 of them at random and look for these quotes that look like they might be written by an LLM

[00:53:50] Ben: Oh, that's good. I'm glad

[00:53:53] Tim: Bin's

[00:53:54] Carol's n-

[00:53:55] nine and nine.

[00:53:56] Adam: Yep.

[00:53:57] Tim: So, technically if, if Ben gets the next two wrong... Oh, there's only one left, so anyway.

[00:54:01] Adam: This will... There's 19 and 20, so two questions left

[00:54:04] Tim: Yeah, so

[00:54:05] Carol: Mm-hmm.

[00:54:05] Tim: we could all, we could all tie. We'd have a three-way tie

[00:54:08] Adam: Okay. I was gonna try to make a comment, but no, it was just inappropriate and

[00:54:12] Tim: I, as soon as it came out my mouth, I'm like, "Whoa."

[00:54:15] Adam: Yeah.okay, number 19, "The best abstractions feel boring in hindsight because they remove the drama from the work they were designed to protect." That feels kind of Ben-ish to me

[00:54:25] Tim: That's very Ben-ish

[00:54:26] Ben: No

[00:54:26] Best abstractions feel boring in hindsight because they remove the drama from the work they were designed to protect Oh, that sounds like me,

[00:54:35] but

[00:54:35] Tim: does sound

[00:54:35] Carol: Uh-huh.

[00:54:36] Ben: I'm gonna go AI

[00:54:38] Carol: I'm going, yeah, I was gonna go AI. I was like, yeah, but I feel like it's a little off

[00:54:43] Adam: Everybody to lock in those decisions?

[00:54:45] Tim: Yeah.

[00:54:45] Carol: I'm AI

[00:54:47] Adam: Carol AI, Tim Ben,

[00:54:49] Tim: yep, lock it in

[00:54:50] Adam: and Ben you are AI. Okay, the correct answer is AI

[00:54:53] Ben: Hmm. That's definitely a tricky one though. That

[00:54:57] Adam: Yeah

[00:54:57] Carol: is. Uh-huh

[00:54:59] Adam: All right, last question. The shape of a code base is a record of what the organization was willing to clarify and what it preferred to leave ambiguous

[00:55:10] Carol: Sounds so much like Ben

[00:55:12] Tim: It does, yeah. Too much like Ben

[00:55:17] Adam: A little too wrath

[00:55:18] Carol: Wow

[00:55:19] Ben: it, Shaz

[00:55:21] Tim: Now I'm just trying to compete for second place here. I gotta beat Carol on this one so we can tie

[00:55:27] Adam: Oh, you guys have to disagree then

[00:55:29] Tim: That's, oh yeah, good point. Yeah, yeah.

[00:55:30] Carol: Yeah.

[00:55:31] Tim: I'm going Ben. He's always thinking about decisions that are made for code. Yeah, Ben,

[00:55:39] Carol: I totally, I totally can see both, but I'm gonna say AI just to, you know...

[00:55:45] Tim: That's some drama

[00:55:46] Carol: Yeah. What's

[00:55:48] Adam: All right, Ben.

[00:55:51] Ben: I'm going AI.

[00:55:54] Adam: Confidently?

[00:55:55] Ben: Yeah, uh 90% confidence

[00:55:58] Adam: Okay.

[00:55:59] Tim: Okay.

[00:55:59] Okay.

[00:55:59] Okay

[00:56:00] Adam: And the winner or the correct answer is AI

[00:56:03] Ben: All right

[00:56:03] Carol: Woo-hoo. It was

[00:56:05] Adam: Took...

[00:56:05] Carol: one.

[00:56:05] Tim: it

[00:56:05] was

[00:56:06] Adam: Yeah.

[00:56:06] Tim: one

[00:56:07] Adam: So final scores, Ben got 13 correct, Carol got 11 correct, and Tim got nine correct

[00:56:12] Tim: Yeah, it was

[00:56:13] Ben: Very

[00:56:13] How Adam Built the Game

[00:56:13] Ben: cool.

[00:56:14] Yo,

[00:56:14] Tim: end

[00:56:14] there

[00:56:15] Ben: give us,

[00:56:15] Carol: We know

[00:56:16] Ben: the elevator, the elevator pitch on, on how you put this together. Was this a vibe-coded app? What was

[00:56:21] Adam: Oh, yeah, for sure. Uh, so what did I do? I'm trying to remember. This was maybe a, a month ago or so that I did this.I, I definitely...

[00:56:30] Ben: was a very good experience, by the way.

[00:56:32] Adam: Okay, cool.

[00:56:33] Ben: well-designed,

[00:56:33] Adam: so

[00:56:34] Ben: clean

[00:56:35] Adam: the, only diff- and I'll, I'll, I'll post the three-player one too, so you can, or, or I'll share the link. So, the, again, the, the version, the single player that you can play at home is workingcode.dev/aiben.

[00:56:46] If you wanna play the multiplayer, version or, you know, just wanted to see how it differs, it's adamtuttle.codes/ben.so th- for that one you ha- it, it lists the players as Ben, Carol, and Tim, and you have to pick for all three of them sort of thing.but the questions are all the same. Everything else should be basically the same.

[00:57:03] so when I created this, yes, it was, like 100% LLM built, and you can tell that almost just by looking at the design. It's got the, like the classic like two glowing gradients in opposite corners, and then there's a color in the center.

[00:57:16] Tim: Each run through prettier

[00:57:17] Adam: uh, I did not... Nope, I did not. and you could tell it was built by, ChatGPT Codex because everything is cards.

[00:57:24] It's like cards inside of cards, inside of cards, inside of cards.

[00:57:27] Ben: Yeah, they do love cards

[00:57:28] Adam: It loves cards. but yeah. I'm trying to remember. Like I said, it was about a month ago. I think I definitely said, you know, "We're building a game, and we're going to, Based off of my friend's blog, we're going to look for content that he did write that looks like it could have been LLM generated, and then we're going to generate some fake quotes based on what you read in, the, in, in the search for those LLM lookalike quotes."

[00:57:54] and so that was the first thing I did, was, just generate a list of... 'Cause I, I guess that was the prototype, was like, "Can I even find, 10 quotes that I, that I feel like are not certain enough, right? Like 10 real quotes that could be confused for LLM generated." Once I did those, I was like, "Okay, now can you generate 10 things?"

[00:58:14] I think actually in both cases I said, "Give me 20 of each, and I'll pick the, the top 10 out of each," so they, they were most confusing. and, once I had the data set, I was like, "Okay, well, now this is easy. Just build me..." It's like, "We're building a game. I want every player to have to pick. I want when the, After everybody has picked, show the correct answer, show who had correct and incorrect, and if it was a correct answer, show the year of the post and provide me a link to it and show the title, and keep the score in the upper corner." I, I'm sure it was a little bit more than that, and I'm sure that there was a little bit of back and forth, but that was basically it.

[00:58:50] Tim: Mm-hmm.

[00:58:51] Ben: Well, it's r- it's really, it's really well done.

[00:58:53] Tim: should have found, posts where Ben used the word delve. That would've thrown us off the track, 'cause AI loves using the word delve

[00:59:00] Adam: Yeah

[00:59:02] Ben: Very cool. And it's a, it's just a single page. Like if you had refreshed, would we

[00:59:06] Adam: Yeah.

[00:59:06] Ben: state of the game?

[00:59:07] Adam: Um, no, I do believe that it persists a refresh, because all of your, your choices and everything go into local storage.

[00:59:15] Ben: Oh, okay. Yeah

[00:59:15] Adam: Umthe... So there's a reset game button at the top. I won't click it just yet, 'cause I, just in case we think of any reason we wanna look at this last page. but there's a reset that'll just clear out the local storage, so you can play multiple times if you want.

[00:59:29] like I said at the start, the questions get asked in kind of a random order.so if we were to reset that, we would get them in a, in a different order this time.

[00:59:38] Tim: Let's play again and see if we remember.

[00:59:41] Adam: Maybe we'll do that for, episode 404

[00:59:44] Tim: There you go. Not found

[00:59:45] Carol: was the, what was the oldest quote it pulled? Do you know that? Do you remember?

[00:59:50] Adam: Off the top of my head, I don't remember. I wanna say it was 2006.

[00:59:52] Ben: Yeah, 2006 was the...

[00:59:55] Adam: The Pragmatic Programmer

[00:59:57] Ben: Yeah, yeah, yeah.

[00:59:59] Carol: That's

[00:59:59] Ben: Yeah, very cool, Adam. This was fun

[01:00:01] Carol: then.

[01:00:01] Tim: fun. That was fun.

[01:00:02] Carol: Mm-hmm

[01:00:03] Tim: Ben won. So

[01:00:06] Adam: I'm impressed. I'm impressed. I don't think I would've known myself and, and my writings that well. I don't know. I do-- Like, when I write on my blog, I tend to read it, Like, I read it and read each section, each paragraph, like nine times in a row as I'm writing it to get it just right, tweak it, and then when I'm, when I think I'm done, I'll read the whole thing like twice, and then I'm probably still not done, so I would like make little tweaks and read the whole thing again two or three more times.

[01:00:30] so like specific pithy phrases I would remember for sure, but like I'm sure that you could pull quotes off of my blog that I wouldn't remember

[01:00:39] Tim: I could build a, I could build a, a Adam version of this for

[01:00:42] Adam: Do it.

[01:00:45] Tim: Oh, that's cool. That was fun

[01:00:46] Ben: Well, awesome stuff, Adam. Thank you. This has been great

[01:00:49] Adam: I can't believe we've been recording for more than an hour already

[01:00:52] Tim: Yeah

[01:00:53] Ben: Let's wrap it up.

[01:00:54] Patreon

[01:00:54] Adam: Okay. Then this episode of Working Code was brought to you by making games to make fun of lightly and with good, good intention, your friends.

[01:01:02] Ben: All in, all in good fun

[01:01:03] Adam: yeah, I appreciate you being a good sport, Ben.and listeners like you, if you're enjoying the show and you wanna make sure we can keep putting more of whatever this is out into the universe, then you should consider supporting us on Patreon. Our patrons cover our recording, editing, and transcription costs, and we couldn't do this every week without them.

[01:01:18] Special thanks to our top patrons, Monte and Giancarlo. You guys rock. We are gonna go record our after show, which I'm sure you've heard me describe it 100 and something times now.

[01:01:29] Thanks For Listening!

[01:01:29] Adam: outro plays. For those of you that are patrons, we'll come back and we'll talk more about other stuff. and if you'd like to get access to that, it's real simple.

[01:01:37] You go to patreon.com/workingcodepod, become a patron of the show. We'll get you your special RSS link to get...they'll... It'll be right there integrated. You just have one feed and, you get the, the show, the outro, and then the after show all in one. So that's gonna do it for us this week. We'll catch you again next week, and until then

[01:01:53] Tim: So thi- this portion of the outro is 100% AI

[01:01:56] generated, but your heart matters. I don't know. I don't... Uh, this,

[01:01:59] Ben: Go with it. Go. Ship

[01:02:00] Adam: I like it

[01:02:01] Ben: Ship it.