627: Getting Comfortable with the Struggle and Vibe Driven Development
Chris brings some blog posts to talk about including being comfortable with the struggle of developer life, Cloudflare Workers + monorepos, vibe driven development, and questions about database migrations, and whether we think AI free blogs are going to be a rarity in the future?
Guests
Chris Coyier and Dave Rupert
Time Jump Links
- 00:19 Dog days of summer
- 00:56 Being comfortable with the struggle
- 14:01 Cloudflare Worker + monorepos
- 24:57 Vibe driven development
- 32:06 Buying things to help make life better
- 39:20 Trying to get or give away free stuff
- 41:49 Could you explain database migrations?
- 46:49 Do you think in the future “AI free” blogs are going to become a rarity?
- 53:51 Say "yes" to selling the business
Episode Sponsors 🧡
Transcript
[Banjo music]
MANTRA: Just Build Websites!
Dave Rupert: Hey there, Shop-o-maniacs. You're listening to another episode of the ShopTalk Show. I'm Dave--a little stuffy--Rupert. I apologize about that. And with me is Chris--sounding handsome--Coyier. Hey, Chris. How are you doing today?
Chris Coyier: Oh, fantastic. Thanks, Dave! We're going to do... We're just going to do some talking. Hanging out here. It's still the dog days of summer.
Dave: Summer vibes. We're traveling the country. Coming back. Getting sick. Having to spit out a design system in a week. We're doing a lot of different stuff [laughter] between the two of us.
Chris: Yeah, you are.
Dave: We're just doing it. Yeah.
Chris: Fantastic. I love it. I prefer to be busy.
So, there are a couple of blog posts I noted that just have been sitting on my list for, like, "Let's talk about that stuff." One of them is from one of my beloved coworkers at CodePen, Rachel Smith - a great blogger--
Dave: Oh, great blogger.
Chris: --great person.
Dave: Probably the best.
Chris: Yeah.
Dave: I gave you props last show.
Chris: A real thinker.
Dave: But Rachel knows how to talk. Yeah.
Chris: I know! And it's so personal, the stuff that she writes. But she ties it into the zeitgeist and stuff. I really appreciate it.
This one was just from earlier in July, and it said, "Comfortable with the struggle," and I think it's going to be one of those blog posts that lasts in my head for a decade. You know?
The real quick summary of it is that it's being comfortable with being uncomfortable (as a developer) because, on a day-by-day basis, the struggles that you come up against in, like, "Ugh! How do I even flippin' do this?" are so common. You know? So common.
I can't even tell you. Every single day in my life, I open up something and be like, "Okay, this thing is broken," or "I need to accomplish this particular thing." And I'm just like, "Ugh! What do I do now?" [Laughter] You know?
I just have no idea, and I've just got to poke at it and look around and write some log statements, probably. And read some documentation and stuff. And none of that stuff being particularly comfortable or rote or simple.
A lot of times, I end up having to get on a call with somebody so they can kind of help me, which always makes me feel a little uncomfortable there, too, like, "Oh, my god. Aren't I supposed to know what I'm doing around here?" Obviously not.
It makes me... Sometimes it makes me feel a little smaller, but then you figure it out and you feel good about it. And you're like, "I did it! Jeepers creepers!"
Then maybe you commit it or make a PI. At some point, it gets done. Then guess what. You're onto the next thing. Ugh! [Laughter] You know?
What's interesting about it is she writes "comfortable with the struggle." The idea being that, "Yeah, you have that feeling, but you've had the feeling a thousand times before." You get that feeling that, "Yeah, well, I don't know," but this is the job. The job is being uncomfortable. The job is struggling through some stuff.
The extension of that is that there are jobs out there that aren't really a struggle. It's just very known what you need to do and you do that task. Not that there are never challenges or anything, but you could imagine having a job - I don't know - chopping onions, peppers, and stuff for a restaurant. It's not that there'll never be challenges, but it's not unknown territory. You go and do that job.
Dave: I think it's different challenges, yeah.
Chris: Yeah, it's different. It's not to demean that. It's not like, "Ugh! Where do I even start!" It's like you know exactly where to start. Go get some peppers out of the fridge. You know?
Dave: Right. I don't... In my brain, I don't imagine a chef shows up to the kitchen and goes, "What do I do?"
[Laughter]
Chris: Yeah.
Dave: "I don't know, man. What's going on?" But you know. I think, for us, maybe the analogy is more like equipment failed or food spoiled or something, and you're like, "Oh, what am I going to do?"
Chris: Oh, exactly. There'll be problems. Their coworker is a jerk or the refrigerator is turned off or somebody smells gas - or whatever.
Dave: Right.
Chris: I'm sure there's plenty of struggle.
Dave: Right.
Chris: It's not to demean it, but there is this particular kind of programming struggle that's just like, "I just don't know, man."
[Laughter]Dave: I had two today. Can I tell you the two I had today?
Chris: Yeah.
Dave: One is an IRL one.
Chris: Mm-hmm.
Dave: And then one is a code one. The code one was a coworker was like, "Hey, I forked a branch. Let's work off of my branch," (right) from the main repo. The main repo, I have an upstream.
Chris: Okay.
Dave: I have my remote, and I'm trying to work off of his remote. Right?
Chris: Yeah.
Dave: I do get remote add Jeff's repo, right?
Chris: Okay.
Dave: I did that. It's in my get remote-v. Then I'm like, "Okay, get checkout B Jeff feature branch." You know? And it just doesn't do it or it creates branches that are based on my current branch.
Chris: Oh, right, right.
Dave: I was just losing my mind. I just was like, "What's going on?" I probably created and deleted branches 100 times.
Christopher, I've used get. I use it every day. [Laughter] I'm not--
Chris: Yeah. I know. Remote branches, though. That's pretty... That's off the beaten path a little.
Dave: Remote branches are not my favorite, but what I had to do was I added his thing, and I had to do get fetch Jeff, and then I had to do get switch, which is a new thing. You can do the checkout B, but I did get switch - whatever.
Chris: Okay.
Dave: A feature branch, and then it just kind of auto-found its way to Jeff's feature branch. We're fine. We're good now. We're back online.
Chris: Yeah?
Dave: I'll just PR against his feature branch instead of the upstream, right? But it was just this... I was just like... It was that classic debugging, being comfortable with the struggle.
I just was like, "Dude, what is...? Why? Why is it... Why is it not working for me today? I'm smart. I know how to read docs. What's going on? What am I missing?"
You just kind of get in this state where you just have to plod through and, hopefully, type the right commands and now the "blow up your computer" commands. You know?
Chris: Yeah. Yeah. These days, I'm sure you're equal parts Googling and using AI because AI tends to know stuff. [Laughter]
Dave: Yeah.
Chris: In these situations.
Dave: Yeah.
Chris: At least I find it to.
Dave: Or you can describe your situation, like, "I need to check out a remote branch," or whatever. You could paste the URL for the branch and it might come up with a better answer than--
Chris: Right.
Dave: "How to get Jeff branch." [Laughter] You know?
Chris: Yeah, yeah. I noticed in VS Code even these days, when you open up the terminal (your little control backtick - or whatever), Copilot has injected some crap in there, too, which is kind of an interesting moment.
As a product designer, I like when help is integrated into different parts. This might be a little too "hit you over the head," like, "We released a feature to help you with command line stuff with GitHub Copilot, so we're putting it right here! Ahh!!"
Dave: Yeah. Yeah.
Chris: But I think they're honing in on this moment. There are a lot of developers that, when they see that fricken' blinking cursor in the terminal, you're like, "Ugh!" [Laughter] You know?
Dave: Mm-hmm. Yeah. Yeah.
Chris: Yeah, so don't hate it, I guess.
Dave: No.
Chris: Yeah, that was rough. And you found it. You got the answer to that one?
Dave: Found it, get switch, but the trick was get fetch and then Jeff - whatever - the origin or the remote name, short name. So, that was the trick I was missing, and I found it on the 20th blog post I read.
Chris: You had to switch and then fetch.
Dave: No, I had to fetch then switch - but anyway.
Chris: Oh, fetch then switch. Yeah.
Dave: Anyway, I figured it out, so that was case number one today.
Chris: Okay.
Dave: Number two, my wife comes in to me and says, "The garage door is dead." And I'm like, "Oh..." So, she's like, "So, I'm taking the truck." And so, I was like, "Okay. Cool."
Then she goes, "And my computer is dead, so I think our electricity is out and we're going to die."
Chris: Yeah.
Dave: Or "We need to pay for new wiring across the whole house." And I was like, "Well, maybe. But that plug you plug your computer into has a GCFI," and she's like, "I did that." I'm like, "Okay, cool. We'll check it out."
I go check, and I just enter debugging phase. I go to the computer. I see the GCFI. I push the button, and I plug the computer back in. It works. Okay, solved that problem.
Go to the garage. It's not working. So, I just flip all the breakers. I just--
Chris: Yeah.
Dave: --flip all the breakers to see if that's it. You know? No, didn't fix that. Then I go to look at the thing. I have to pull the car out to pop the garage open to open it. Roll out. Get a ladder. Hop up there. I'm looking. Nothing is--
There's no fuse or anything smoking or anything like that, so I'm just like, "Well, I don't know what's going on with the unit itself, but maybe I could check the plugs." You know? Like go up there and see if it has electricity to it.
So, I took the same laptop and plugged in into the roof, and it worked. It's charged, so it wasn't the plug. So, it's got to be the unit.
Chris: Got to be the unit. Yeah.
Dave: Or some relay remote thing, but I just was like, "Okay, maybe it's the garage door button thing, the pad right when you walk into the garage.
Chris: The pad, could be the pad.
Dave: Could be the pad.
Chris: Yeah.
Dave: So, I go to the car, and I try one of the remotes in the car. That doesn't work either, so that tells me it's the unit. So, we've got it diagnosed down to the problem. I don't know how to fix a garage door. [Laughter]
Chris: Yeah.
Dave: A Craftmaster 9000.
Chris: I was wondering if this resolved or didn't. Now you stopped. You've isolated it to the unit. Was that the end of the road for you or not?
Dave: Yeah, yeah. There's a problem with my LiftMaster, and so--
Chris: Right.
Dave: I think I can... We know a garage guy who can help us out, so we'll probably just go do that. But it was just kind of--
Chris: Yeah, you go into manual mode for a few days. Pull the red cord. Then you can just lift it. Yeah.
Dave: Pull the red cord, yeah. Yeah, so... But then you know, it's just kind of like... It's unfortunate, but it is what it is. I hope we don't have to get a whole new garage door. I hope that we can just get a new unit or maybe there's a fuse I can't access that just blew and he can walk in and go peep-pew-peep-pew, you know.
Chris: I love this analogy, though, because it does... So, you had to stop at the unit, right? There are other people on Earth that that's not their stopping point. They can keep going. They can... Not that you couldn't either, but you just lack the experience, right?
Dave: Yeah.
Chris: Maybe you pull off the plastic around the unit and there are fuses in there. Maybe that's the next stop. If that's not it, maybe you look at the wiring on there and see if it's all connected properly. Or maybe you can provide it an alternate power source of some kind and see. Even though you proved that the plug had power, maybe something is weird.
But there's... I'm not trying to... I just mean there are additional steps--
Dave: Yeah.
Chris: --that other people can take that you can't, and that happens in programming, too. And everybody has their own kind of stopping point where you're just like, "I really tried."
Chris: This is one of my favorite things. It's starting to... I feel like I hear it more and more, but there's apparently some old military thing. Maybe I've mentioned it on the show before. But it's kind of like slow is smooth and smooth is fast.
Dave: Yeah, yeah.
Chris: Which means that slow is fast, which is weird.
Dave: Yeah.
Chris: The idea is when you're debugging, sometimes people get into this frantic thing, right? They're changing lines of code here and there, and they're changing it in ten places. They're like, "Why isn't it working?!" Run, run, run, run, run. You know?
You can watch somebody have a frantic moment like that, and then as a kind of senior developer, you can come in and kind of rub their shoulders and be like, "Slow is smooth and smooth is fast. Let's slow down."
Alex on our team is notorious for this. We're going to look at the exact problem. We're going to read the exact error message, or we're going to look at the documentation. We're going to do these things very slowly, methodically, and all this. And as we do that, the chances of us actually solving the problem and then begin able to confidently move on are higher, which ends up being a faster thing, right?
But there are moments where, no matter how slow you go, you're done. There's no more you can do because, essentially, you just lack the experience to know what the next level down is.
Dave: Yeah. Yeah. Yeah, you kind of hit your limit on what you're capable of.
Chris: Yeah.
Dave: Tying it back to Rachel's thing, you have to be comfortable with that. It's kind of like, "I'm going to just call somebody," because my effort versus just buy myself out of the problem ratio is pretty low - or high, I guess. So, I'm just going to buy myself out at this point. I've done all the cheap stuff that I can do.
Chris: Yeah. Right.
Dave: So, I don't feel like an idiot when the garage repairman comes to my house, and he's just like--
Chris: Right.
Dave: Flicks on a light switch.
Chris: Did you unplug it and plug it back in?
Dave: Yeah. Yeah.
Chris: Yeah.
Dave: Yeah, yeah.
Chris: Yeah, right, which that can be frustrating when you're dealing with customer support. They want you to unplug it and plug it back in. They want you to do this basic stuff, and you're like, "I know! I did!"
Dave: Escalate! Escalate!
Chris: But they're like, "No, but I have to--" Yeah.
[Laughter]
Chris: Just before this call, I was working on... We have a number of Cloudflare workers. You know?
Dave: Mm-hmm. Mm-hmm.
Chris: And you know we like to... We've got a mono repo, too, at work. And one of the ideas is... I put up a new one for something I was doing, a new worker. And we... to adhere to the mono repo standards, we keep the code for workers in our own mono repo. You know?
Dave: Yep. Yep.
Chris: Then you deploy it. Cloudflare provides ways to do this, right? They have a tool called Wrangler. Wrangler is their little tool, and you can just type, like, wrangler deploy, and it will look for environment variables that have your auth information and stuff in it and will attempt to deploy it.
That's nice, but in kind of, I guess, a true mono repo, you probably shouldn't be deploying from an NPM command at your computer. It should deploy when it goes to the repo. That way it's not any one person's job. It's just baked into part of the process. We use GitHub actions for this. I'm sure lots of companies have different things. Isn't there some equivalent on basically every Git host of sorts?
Dave: Yeah. I don't know what the--
Chris: Probably not to mention third-party services do it.
Dave: Yeah.
Chris: I was going to... I ask because I'm like, "Oh, Dave is Microsoft now, so I wonder what they use," because I feel like they were the early players in this world.
Dave: Yeah. I think it's called get lab actions, but over on GitLab. But Microsoft has ADO (Azure DevOps).
Chris: Yeah, there you go. It was called Azure DevOps. That was kind of the precursor to GitHub Actions.
Dave: Actions, that's kind of their--
Chris: Yeah, that's wonderful. So, in this case, ours is we have a GitHub Action setup that it's all the same crap, right? It's just different config - and whatever. Ours, it can tell what files have changed -- that's a pretty neat, clutch part of this -- so that it can run different crap depending on what's in a PR, for example. It doesn't need to run every action. It can run some--
In this case, it looks for some files in this new Cloudflare worker kind of subfolder part of the mono repo. Then it runs this specific set of commands. Great. Fine.
In those commands, you tell it to do stuff. At the beginning of every GitHub Action -- I don't even know why they make you do this because it seems so obvious -- it's like, "You should check out the code," so you have to say, "Check out the code, GitHub."
Dave: Yeah.
Chris: Now you got the code. Good. Then there are a couple of other steps. In our case, we're using Yarn 4.
Dave: Mm-hmm.
Chris: Remember, we talked about we upgraded to that.
Dave: Yeah.
Chris: Which uses this technology called Corepack, so then there's some stuff in there that's, like, enable Corepack. Then maybe set up Node right?
You set up Node because you're going to run your tests. So, you tell it... eventually, "Yarn, run test," and that's got to pass for the thing to go on. All this stuff, right?
It's set up correctly. It's set up. To me, it looks correct, right? But I run my action and then there's some error - or something. And it's just inscrutable to me, and I look at it. Then I'm like, "All right. I'm ready to go as slow as necessary to fix this," but I'm already at, "It's the unit!" [Laughter] You know?
Dave: Yeah.
Chris: I'm like, "It's the unit!"
Dave: Yeah.
Chris: I'm already like, "I don't know where to go for this," and it's like... GitHub us like, "Oh, to debug an action, the only thing you can do is basically put a value that says, 'Debug more, true,' essentially." And it'll just be a little bit more verbose in the logs. But there's nothing to run these things locally.
Dave: Yeah. That always got me. There's no--
Chris: There's not.
Dave: There's no local simulation.
Chris: There's no docker image or anything? Why? [Laughter]
Dave: I can't... Well, it's probably.... [Laughter]
Chris: Yeah, maybe it is.
Dave: But I would think everything past, like... You know how it's like, okay, you get to steps (I think is what they call them) in GitHub Action?
Chris: Yeah, that's how they break them down. That's the terminology. Yeah.
Dave: Skip everything until steps. Assume I got everything on my local computer that's not steps. Now run from steps. You'd think it could do that.
Chris: right.
Dave: Because a lot of the times it's--
Chris: Because it does not match reality. It eventually gets down to, like - I don't know - "Yarn run test," or something. If I run "Yarn run test," it works fine.
Dave: Yeah.
Chris: But it doesn't over there, so obviously, there's a difference. What is that difference? You can look at the log.
I do think they do a pretty darn good job overall. This is very useful stuff. It's a nice UI. It's clearly presented. But when you have a problem, it can be quite confusing.
Now, my stopping point is not the stopping point of many others.
Dave: Mm-hmm.
Chris: I'm sure there are many people listening to this show that would be like, "Oh, I've seen that before. You do this," or something.
Dave: Yeah. Yeah.
Chris: And I'd be like, "Oh... Well, okay. I didn't know that." You know? And it doesn't matter how slow I can go here, but it kind of does. It's kind of getting later in the day here. I have a feeling, when I come back and look at this in the morning, that I'm going to have a little bit of fresh ideas on what it is.
Dave: Yeah.
Chris: I definitely have ideas of who I could talk to about it. It's like, "I'll get past it. It's okay."
Dave: Yeah.
Chris: But it is part of that uncomfortability, which is what Rachel was talking about, how we started this, is like, "That's just going to happen every day. Every day until I retire out of this field, I am going to have uncomfortable moments with what I'm looking at." It's happened ten times today, I shit you not. [Laughter]
Dave: Yeah. It's wake up, drink a cup of coffee, find out what exploded, and then just start going from there.
Chris: There you go.
Dave: What did I break?
Chris: Can you imagine somebody being like, "I don't want to."
Dave: Yeah.
Chris: "I don't want to feel that way. I don't like that."
Dave: Yeah.
Chris: And I'd be like, "I get it." [Laughter]
Dave: [Laughter] You know what gets me is when you're towards the end of, like, a PR or something and you find a problem. That just crushes me, man.
Chris: [Laughter]
Dave: That one is hard, and I would love Rachel's experience on it because I was making some tabs, finish the tabs, and then I realize the previous implementation, it would go, "Arrow, arrow, arrow," the keyboard stuff.
Chris: Yeah.
Dave: And it would hit the end of the tab and stop. Well, I think the expectation is it loops back around to number one.
Chris: Hmm...
Dave: Or zero if you're doing a raise, so I just was like, "Darn it all!" [Laughter] "What is the expectation here?"
Chris: Hmm...
Dave: I just kind of... I don't know. I worked on it and tried to... I figured out I just needed a different function to limit. There's a clamp on it, and I needed it to just go back to zero.
But it's that thing. It's just like, "Ugh! I was so close to being done this morning and now I have one more thing, and I just want this to be done."
Chris: Yeah.
Dave: There's a mental satisfaction of having code--
Chris: In your world, recently, does that mean you have to write a test, too?
Dave: Probably got to write some tests, make sure it does it.
Chris: Mm-hmm.
Dave: Which, now that you've said that, I don't think I ran Vitest to make sure it all doesn't break. [Laughter]
Chris: But it would be... In this case, wouldn't it be... It would be kind of pseudo integration or--?
Dave: Yeah. All our tests are in Playwright, so--
Chris: Are they?! That's awesome!
Dave: Yeah.
Chris: Okay.
Dave: Which I don't... I'm not going to be a big advocator, per se, but it just does shortcut so much stuff to use a real browser over Jest or even Vitest, maybe. You know?
Chris: Have you seen the Vitest news? They say that they have these kind of... I don't know if they're Playwright-powered, but I think they are. It makes a really lightweight Playwright page and then puts an iframe on it, mounts your component inside the iframe, and runs the tests there.
Dave: Ooh...
Chris: It looks actually kind of innovative, I think.
Dave: All right.
Chris: But I know what you mean. Yeah, like a fake browser is just not... It's not doing it for me, baby.
Dave: It just--
Chris: Real or bust.
Dave: The next time Jest says, "I don't know what an import is," I'm just going to throw my fricken' computer out the window, man.
Chris: [Chuckles]
Dave: Just boils my blood.
Chris: Yeah.
Dave: But Playwright has just been... I think it takes longer, on average, because it's not just going zip-zip-zip, you know. It's loading a page somewhere, and so that's different. But I think I would probably prefer Playwright over previous testing experiences.
Vitest is pretty great, though. It's super-fast.
Chris: Yeah.
Dave: It just misses some...
Chris: I miss Cypress. I just don't miss how... I'm imaging a test like that, or I'd write a test like this, like, "Load these tabs. Now press the--" And you guys is not the tab key. Tabs are supposed to have arrow key, right?
Dave: Yeah.
Chris: Hit the arrow key right five times and then look at the focused element and tell me. That would be a pretty easy test to write in Cypress, which would pass nine out of ten times.
Dave: [Laughter]
Chris: Then the tenth time you'd be like, "Why, God, why did you fail?!"
Dave: Yeah.
Chris: Why?!
Dave: I did. I had a test not working. What was weird is if I ran all the tests, it failed. But if I ran just the test, it passed. And so, I was just like, "What?!"
Chris: Oh...
Dave: So, I think it was--
Chris: It's out of memory or something?
Dave: Some kind of... Yeah, race condition or something. I don't know, but I just put, like, "page.slow" as a function you can use in Playwright, [laughter] and it totally worked. And so, I was just like, "Jackpot. Problem solved. Next. Moving on."
Chris: No! No!
Dave: Yeah. Just be slow, page.
Chris: I like it.
Dave: It's fine. We're good.
Chris: I guess. I mean it's nice that it fixed the problem. But I really hate solutions like that.
Dave: I think it was trying to click tabs before they were on the page just because of how Web components mount - or whatever.
Chris: Mm-hmm.
Dave: I think it was one of those things.
Chris: Alrighty. Well, being comfortable with the struggle there. I guess that's part of it. And if you find yourself hating that struggle so much... I don't know. I'm not going to say, "Then don't be a developer," but part of me thinks that way a little bit that it's not going to go away. It's not going to become chopping onions ever.
Dave: Yeah. I thought this was one of the most honest blog posts I've read in a long time. It's just you wake up, something is broke or you broke something, and now you have to figure it out - over and over and over.
Chris: Well, the other one I put on this list is one that's just been sitting there forever. You know Robin Rendle just becomes a better and better writer all the time. I worked with him back at the CSS-Tricks time.
Dave: Yep.
Chris: But I start to enjoy his writing even more these days. This one was from over a year ago, but he called it "Vibe Driven Development."
Dave: Yeah.
Chris: It just struck with me in kind of a cool way in how he kind of pushes back against the overly data-driven things that we do. The reason it's stuck with me is because I want to agree so wholeheartedly and push back. It's one of those blog posts where you're like, "You're so right... and you're so wrong! And you're so right! And you're so wrong!" You know?
Of course, I want to just be like, "I am using this product. I can tell what will make it better. I see all its flaws. I know what to do." That's how I kind of want to work, and I feel like great products can truly be made that way, except for that you're just this one person. Except for that sometimes you have to make decisions based on data sometimes because you just have to.
Dave: Yeah.
Chris: I don't know.
Dave: You have coworkers, yeah.
Chris: Yeah, exactly.
Dave: I like it. Yeah, Vibe Driven Development. Whatever seems cool, do that.
I think that's okay. I mean I think you want to be informed, right? Doing it for the user. Something that benefits the end user is important.
I can spend eight weeks making a hidden Konami Code experience on my website, but that's not a good use of my time.
Chris: Mm-hmm.
Dave: Maybe it's great and people find it and it's great, but probably not. I've been through enough doors, when I hear somebody on the data science team go, "It raised conversions 5%. We're going to make... That's $127 million in revenue," and I'm like, "Hmm... Prove it." [Laughter]
If we moved a button and it was millions of dollars in revenue, why aren't we all rich? [Laughter] Why is money tight? Because clearly we're just creating money out of thin air. Obviously.
Chris: Hmm...
Dave: It's got to be great, right? I just don't... Sometimes I just don't... As much as I like data and I really enjoy data and I actually love A/B testing and stuff like that, I do have this inner skeptic that's like, "If it's really better, why wouldn't every company do this?" If it was really that, like, "pull free money out of the sky" kind of thing.
Being data-driven is good. But without a vision, I think it sucks.
Chris: Exactly! And the stuff, like, what's the classic one? There are 24 shades of blue, and we're going to have a big meeting on it, and everybody is going to pull their hair out. Or should we use a female character on the hero or a male character?
That kind of stuff is a little hair-pulling, right? Clearly, nobody has a big vision. The A/B tests are just blah. You know? That stuff sucks, right?
But of course, you can attach data to it if you want. You could A/B test it. You could just extract data out of it with your bare fists if you wanted to. That stuff sucks, but there's other data that's sometimes just incredibly insightful.
Let's say we found out at CodePen that 92% of all of our paying customers have a deployed site.
Dave: Mm-hmm.
Chris: And I just didn't know that because - I don't know - maybe I do it sometimes but not that often - or something like that. And I didn't know that. If I never looked at that data, well, what am I, an idiot?
Dave: Yeah. Yeah.
Chris: I should know that! You should definitely know that. You should use data, and you should have a pretty good picture of what your paying users are doing and what they want from you (by talking to them and, yes, looking at data). And if you don't know those things, I think that's very ignorant and stupid. [Laughter] You know?
Dave: Yeah. Yeah.
Chris: But at the same time, here's a paragraph from Robin. "It comes down to this annoying, unsettling, stupid fact. The only way to build a great product is to use it every day, to stare at it, to hold it in your hands and feel its lumps. The data and customers will lie to you but the product never will."
It's like this great feeling, you know, like I know Robin feels that way. He works on products, and he just stares at it, and he just thinks really hard about it and uses it and feels it and then can make decisions based on that really intimate usage of it. I think that's kind of great.
Dave: Yeah. Yeah.
Chris: And the data can't tell you those things. But at the same time, I'm like, "Yeah, but data." I'm just so torn on it. It's great.
Dave: Yeah. I always used to say at Paravel, "I worked on these pages so much. I've refreshed them 2,000 times. Literally, I've stared at this thing for hours and hours and hours. If by the end of the project I don't hate it, that's a good sign." You know what I mean?
It was just kind of this idea of, "I am always in this and using this throughout the development process. If I still think it's good by the end of it and I'm not just sick of it, then I think it's good."
Chris: Mm-hmm. Mm-hmm.
Dave: There's some weight to that. Don't sweat. Sweat the About page but maybe not the third level of the About section.
[Laughter]
Dave: Maybe you don't have to sweat that as much. You know? You don't have to worry about that.
I think Robin is right. I know there are companies that don't use their stuff. They just... A large pizza company and no one uses that website to order pizza. Otherwise, they would know there are huge problems -- [laughter] -- big, obvious, dumb problems, and we need to fix it at a big level. But I think there's just... That's the thing, too. I think people just don't care or they only have eight - whatever. They only have eight brain cells to care, and sometimes those eight brain cells are allocated somewhere else. And so, that's kind of the human part of the job. Not everyone cares as much as you all the time, unfortunately.
Chris: Yeah. Yeah, yeah. All right. Well, that's the kind of not-news blog posts I thought were cool. Of course, I have 500 of them I could pick from. But do you have anything else on your mind here?
Dave: You know what I've been into or thinking about? This, I feel like, happens every summer. I go on vacation, and then I'm like, "I'm going to fix my problems." [Laughter]
The idea is I want to buy things that will work for me. I want to identify areas of my life where things are not working and I've just patched it together and buy the good version of that. Does that make sense?
I have an Elgato Doc in a little key, switcher, to switch my USB. There are wires all over my desk. I'm like, "I don't want that anymore. I'm going to get out of that." You know?
I have a nice monitor, but it's 27 inches. That was huge for the time. I'm like, "Maybe I get a 32" monitor. Maybe I'm a big-boy monitor now."
Chris: Hmm...
Dave: The Sony ZV1 is cool. I think that'll make the cut. But there are newer Sony. Maybe that would be even better.
But then even down to my house. We have these towels, and they're great towels. They're very fancy towels, I think, from Uncrate. It's good-ass towels.
Chris: Yeah.
Dave: They don't dry because Texas is so humid, or Austin is, so they don't dry. We shower and then they just sit in our wet bathroom, and they stay wet.
Chris: Oh, my gosh.
Dave: We were on vacation, and our friends had these Turkish bath towels. You know those? They're just basically like--
Chris: No, I don't know.
Dave: It's like a very thin rug that you can use as a towel.
Chris: Okay.
Dave: It's very nice.
Chris: And the thinness makes them dry faster?
Dave: The thinness makes them dry faster. Of course, in California, you can just chuck them on the floor and they'll dry instantly - or whatever.
Chris: [Laughter]
Dave: Perfect climate down there with plenty of sun. But I think we're going to hot-swap all of our towels. Then you get into cups and all the cooking ware. We have 20 spoons, but they're all brown and black.
[Laughter]
Dave: Wooden spoons. How about we just get one that's fricken' good and new, and we'd just do this every year? I don't mean to be wasteful.
Chris: Yeah.
Dave: Or consumer-consumer, but I've just been into this idea of getting stuff that works for me, getting the thing that works.
Cobbling together solutions is great, but I want to move one step further and have solutions that work.
Chris: I like it. I like that. I wonder what's happening in your life because some people think of that as spring cleaning. It's the time of year and - I don't know - it's getting nicer out, so you feel like you could work in the garage, so you're going to clean the garage - or whatever. But that's probably not true for you. It's hot as balls in Austin, I'm sure.
Dave: Nah, you'll die in the garage. Don't do that.
Chris: Yeah.
[Laughter]
Dave: That's a heat stroke waiting to happen.
Chris: Yeah. But something is going on. You know some people, you could almost fall the other way just being like, "I'm sick of thinking about stuff. Who cares. I'm just going to use what I've got." You know? [Laughter]
Dave: Yeah.
Chris: Or whatever, but you could be the same person and have those different thoughts at different times of the year.
Dave: I think there's part of it, if I were to self-diagnose -- full therapy.
Chris: Mm-hmm.
Dave: Why go to therapy when you can have podcast?
Chris: A podcast, yeah. It's cheap. It's great.
Dave: This is free. But if I were to self-diagnose, it would be that the startup time, money was fine, but a little lean, right?
Chris: Mm-hmm.
Dave: Little lean times. And then, in my unpaid leave, that was also lean times. And I think now I have... I'm cash fluid again, and so now it's kind of like, "Okay," and the situation is a little more stable than previously, so it's kind of like, "Okay, cool. What's next? How do I--?"
I feel stable, so let me make other things stable. Let me make my space or my house.
Chris: Yeah.
Dave: You know it's like we have 20 pairs of bed sheets. It's like, "We're a family of four. Why do we have 20 of these?" [Laughter] We have a bunch of beer glasses. I don't even drink beer anymore. Only just when I'm out (in a can).
Chris: Mm-hmm.
Dave: Why do we have a bunch of beer glasses? Why do we have 20 beer glasses? Let's just get rid of them. We can buy them again if we really, really want them.
I don't know. We've just been kind of like re-evaluating.
Chris: I like that last part a little bit, too, because it kind of helps any tender hoarding, you know?
Dave: Mm-hmm.
Chris: Not that you... I think that people can be a minor hoarder. You don't have to be TV-worthy to be a hoarder.
Dave: Yeah, you don't have to be a monk. You know?
Chris: No, but you could have this... You know you could have some perfectly decent pair of roller skates - or something - that you're constantly holding onto because you're like, "These are perfectly good roller skates. They still fit my feet and everything," but you're like, "I am never going to roller skate ever." If some time--
I'm not saying throw them away but - I don't know - donate them or something. Or maybe throw them away because if you get into roller skating again, and you're like, "I'm going to do this," like you would get this exciting phase in your life where you become a big roller skater again, you're going to want new ones. You're not going to be like, "I'm just going to use these old roller skates. Those are going to be perfect for my new infatuation with roller skating."
Dave: Yeah.
Chris: It's not going to happen. When you get freshly into a hobby, you're not like, "Let me dig up my old crap."
Dave: No. You want a new set. That vibes you, too. It gets you back into it.
Chris: Yeah.
Dave: It's gives you a little thrill.
Chris: I have a couple of drawers I'm looking at right now that are just absolutely full of Magic cards.
Dave: Oh, yeah. [Laughter]
Chris: But not nice, valuable ones. I still have those. I'll keep those around. I famously had a Black Lotus I sold.
Dave: Yeah. Wow.
Chris: Remember that (a couple of years ago)? But I still have some of that kind of stuff. I'm going to keep onto that. But I've had phases where I was really into it in high school. Then throughout my life, there'd be little moments where I return to it.
Because that's happened, I think I had this tendency to keep them around. But these aren't worth anything. This is an era of Magic that we're in now, I think, where they intentionally are kind of worthless.
Dave: Right. Right.
Chris: They're not even... They're designed to, like, "Buy the current set, have a draft, have fun with them, whatever, get rid of them," kind of thing.
Dave: Yeah, yeah.
Chris: I have just, you know, physical space of crap. They deserve the junk, I'm afraid. And they're paper, so you don't have to be too bad about... feeling bad about waste.
Dave: Yeah.
Chris: But stuff like that has got to go.
Dave: You could take it to a comic shop.
Chris: If I get freshly into Magic again, I will get new cards.
Dave: Yeah. You could take it to a comic shop or a board game shop and just be like, "Do you guys need these, like just for your demos or whatever?"
Chris: Yeah.
Chris: "I don't need it." I like the idea of free-cycling - or whatever - that stuff whenever possible. But it's hard. I don't know.
My wife is always like... [Laughter] We have these rugs, you know. But they're nice rugs, so she wants them to go to a good place. It's like, okay, cool. Who wants our rug? [Laughter] Who is sitting around, like, "Maybe the Ruperts have a rug."
Chris: That's a tough one. That's like the mattress. Nobody wants your mattress. That's a goner, I'm afraid.
Dave: No. It's gone.
Chris: Couches, too. They're just gross. Even a nice-looking couch on the side of the road, I'm like, "Absolutely not."
Dave: No.
Chris: Sorry.
Dave: I picked up... Well, we offloaded a couch to one of our cleaners, and she was very thankful, so that was cool, like to get rid of that.
Chris: Well, she knows.
Dave: Yeah. Yeah.
Chris: She's got intimate knowledge of that couch.
Dave: But I reclaimed an orange chair from the side of the road once.
Chris: Mm-hmm.
Dave: And I was like, "Look at--" It was gothic but orange velour. You know? It was so BA. It was so great.
Chris: [Laughter]
Dave: And I get it home, and I'm like, [sniffing], "Oh. Oh, this is--"
Chris: Yeah. Yep.
Dave: "This is covered in cat piss." [Laughter]
[Laughter]
Dave: It was 100% cat piss.
Chris: Oh, my god. That's the best-case scenario. I thought it'd be full of bed bugs.
Dave: Yeah, so I just spent months trying to clean it. Man, it was so...
Chris: Gross.
Dave: But I think it still smelled like cat whiz.
Chris: Yeah. I have some good ones. Yeah, free is my favorite because it's like a superpower on Craigslist. I feel like Craigslist so full of scams. Even I've moved on. I hung on a little too long. But I've got to admit Facebook Marketplace is where it's at these days.
Dave: You know I'm hearing about scams there, too. I sound like an old man.
Chris: Well, the thing is it doesn't matter if what you're doing is trying to give away something for free.
Dave: You got me.
Chris: It's like, all I want is this out of my driveway.
Dave: Yeah.
Chris: Get it out of here. and free is just unbelievable. There is almost nothing you can't get gone in a matter of hours, even in my small town. I imagine in Austin you're talking eight minutes, that thing is gone out of your driveway.
Dave: I bet. Yeah. Yeah, we could just roll it out and it'd be gone. We have set times where scavengers come by.
Chris: That's cool.
Dave: Yeah.
Chris: Oh, really?! [Laughter]
Dave: Yeah.
Chris: 7:15 a.m. is scavenger hour.
Dave: Well, no. It's like every -- it's like bulk pickup, you know, and then--
Chris: Oh, I see.
Dave: That's on a Thursday, and--
Chris: Yeah, I see.
Dave: You're supposed to set it up on Sunday, and I'm actually not opposed to that whole system. I mean I don't envy the folks scavenging for metal, but they know what to do with it. I don't know what to do with it. I don't know where it goes.
Chris: Yeah.
Dave: If I could make a buck, I probably would. But then I'm like, "Eh, it sounds like I'd have to drive."
[Laughter]
Dave: I'd have to figure that out. They know what to do with it. That's great. So, give it a home. I hope they get rich.
Chris: Here's one from Brian Zelip who writes in, "Howdy. Could y'all explain database migrations, please? Especially why migrations have to be run so often. Why can't the tables, metadata, and data change just once after some schema change? Why do changes have to be repeated over and over?"
Um... I don't know what's happening to your codebase, Brian, but I think that they do only need to be run once. So, I guess I missed the question a little bit. There might be something wrong with your setup. But yeah, a migration is a way to describe, "I need to change the name of this column," or something. Or "I need to loop over the table and add a default value that wasn't there before," or something. Or "Add a new table."
I don't know. Maybe you're under the misconception that they run all the time because sometimes you commit a file that describes what the migration is but usually a system is smart enough to see, basically, what migrations have run and which haven't. It'll see your new one and be like, "Ooh, I haven't run this one," and run it. Then it's kind of done doing that. It will never run again. I mean I guess that's how it worked in Rails anyway. That's my--
Dave: Yeah, I was going to say if you've used Rails, you're going to be very familiar. And it might even be worth doing the five-minute blog to figure out Rails.
Chris: Yeah.
Dave: Because it really teaches you how migrations work. But yeah, any time you add, remove, or change a column or a table, you run a migration. The whole idea is I can hop into the production database and add a column. Cool. But everyone else developing locally will not have added that column to the database. So then, when they try to run the project the next day, [buzzer] everything falls over because they don't have the right database. Or it's looking for a field and it doesn't have a field, like - whatever - user bio - or something like that.
And so, there are certain actions which are easy, like you just say, "Add this column."
Chris: Yeah.
Dave: I think it's adding columns is generally no problem, like a database is like, "That's fine." Changing the name of something becomes a little bit tricky because now all your old code that's pointing at the old user.biography is wrong because you changed it to user.bio.
Chris: Right. Right. Yeah, that's just stuff you've got to learn, right? A lot of times, your first migration then will be to duplicate the column with a new name. Then your next commit changes which database column it looks for. Then your third thing is a migration that deletes the old column. You've got to kind of run them in that order. That just sucks, but that's just part of the game in a dev ops' life.
Dave: Yeah, and then there is this old way to do it where you ship the change. You ship the new column with the old column. Then you start writing to both. Right?
Chris: Mm-hmm.
Dave: You say "user.bio" and "user.biography" set to the same thing. Then you backfill that new column with the old column.
Chris: Yeah.
Dave: And then you delete the new column. It's in five stages. It's a very predictable set of order of operations. But it will cause you to pull your hair out. It's quite a bit of work. You might get lucky. That's where these migration tools actually super help.
Chris: Yeah. Name your columns correctly.
Dave: [Laughter]
Chris: Right.
Dave: Never make mistakes. No mistakes, that's number one. But if you go to Ruby on Rails active record migrations guides .rubyonrails.org active record migrations, it really gives you a cool breakdown of what it's going to do because Ruby is kind of a language that is very human readable. You sort of really see what it's about to do.
But if you also want a JavaScript flavor using Prisma's cool, Prisma has the idea of migrations, so you basically say, "Prisma migrate," and then it will build the migration and run it. It'll, yeah, figure out the delta or the changes it's about to make based on your database schema, run it, and then save it. And so, then whoever uses that next will also run that and save it. It's kind of a cool tool.
Chris: Yeah, that is cool. That's cool. Yeah, every time you see a new database kind of thing come around, it's definitely a question worth asking, like, "How do you do migrations, though?" because you're just going to need to eventually.
Dave: Yeah.
Chris: Well, you just do.
Chris: There's a last one from our friend Emanuel Morale who wrote in. Where did I drop that question?
"Here's a question for you, since you both have blogs and the Web is going through this weird AI phase where automatically generated content is infiltrating everywhere. Do you think, in the future, "AI-free" blogs are going to become a rarity?" I don't know. A rarity.
Dave: I think that's possible. But I also think the opposite is going to happen. Can I say that?
I think we're going to have little neighborhoods or coalitions of organic authors, like me and Chris. We commit to only authoring organically. We're not just AI slopping our way through life, and we build a little network, a Web ring, if you will. It could be on the blockchain. Please know, don't do that. But we have this organic creator community that rejects that - or whatever.
I just think there's an opportunity for more human connection or the need for more human connection grows as AI infiltrates.
Chris: Yeah. Yeah. I mean he specifically used the word blog. It's like why on earth would I read an AI blog? Why would I do that? What's the point there?
I think the idea is that a blog that's doing that is just hungry for content for some reason and has possibly learned a kind of crappy lesson that the more content they have, the more traffic they tend to get, and are monetizing that traffic in some way and that the line has gone up for them a little bit when they do this.
It feels like dangerous territory to me. Making money is a game of trust and people liking you and people making that very tough decision to open their pocketbook to you based on a trust and a like. When you break that, I think you'll see that line go down eventually (if you're too gnarly with it). It can be advertising, too. I don't think there are any companies out there that are particularly incentivized to help you monetize your slop. That seems like also a dangerous game to play.
I tend to agree with you, but instead of reasons of rejecting it and making our own little hidden fortresses of human writing. I think, in the end, it's just not desirable.
Dave: Mm-hmm.
Chris: To fill the Web with garbage, I think it's just not going to work. Nobody wants it.
Dave: Yeah. It's like you go to, I'm going to say, about.com or one of those, like, "Why is my finger red?" websites.
Chris: [Laughter]
Dave: It's just--
[Laughter]
Dave: You know.
Chris: Yeah. What?!
Dave: What?!
Chris: What?!
Dave: Why is my finger red?
[Laughter]
Dave: You go to that website, and it's like 20 screens worth of red finger symptoms and charts and graphs about red fingers and ads, of course.
Chris: Oh, my gosh. Yeah.
Dave: It's just like, "Is that really bringing value to the world?" I don't know. I think our Spidey senses are going to get better at being like, "Oh, man. They just pooped this out. This is just slop."
I don't know, man. Maybe it'd be cool to start a thing that's sort of a filter that's like an extension that marks things as slop. What about that? Maybe you make a Chrome extension - or something like that - that has a database somewhere in GitHub or whatever that marks sites as AI slop and puts a little banner on the top.
Chris: Hmm...
Dave: Like the old IE 8 days or IE 6 days that says, "Warning!"
Chris: Yeah, I kind of love that.
Dave: "This site puts slop on their page."
Chris: Yeah. You know I miss that. It was one of the few things I liked about Google+ (when that existed) is that there was this time; I'm sure most of you all remember. In fact, didn't we hear this? It was either in Discord or somebody had this theory that we don't get that.
You know we were complaining. We actually don't get that many emails. I'm sure podcasts you listen to, they say, "Oh, they're going to email us," and you're like, "Do they really, though?"
Dave: Yeah.
Chris: I'm sure the big podcasts, they probably do. But to be fair, we don't get that many emails at ShopTalk Show. Not really.
Dave: Who has Joe Rogan's email? Whatever. Yeah.
Chris: Yeah, true. True.
Dave: Yeah.
Chris: Whereas we're more than happy to publish our email addresses all over the place. But we get some. And a lot of them are extremely nice. Some people have written in with some very nice comments lately.
But somebody had a theory that the reason that we don't get many questions anymore is that when we started, we were earlier in our career. Although, when we started, we were already decent developers (I'd like to think). But now it's been a long time. Now there's, like, "Come get me."
Dave: [Laughter]
Chris: I think I might actually be a developer at this point.
Dave: We're finally here. Yeah.
Chris: Yeah. [Laughter] We're finally here. But so are all of you.
Dave: Yeah.
Chris: So are all you listeners. You've leveled up with us. And certainly, some new people have joined the fray. But looking at our listenership, we're probably not even at our peak anymore.
Dave: No.
Chris: It's not like we've only grown. I think we've probably shrank a bit, and I think a lot of those of you listening now have been listening for a long time. So, thanks for that.
Dave: Thank you.
Chris: But you don't write in anymore saying, like, "How sync data? Why finger red?"
Dave: Why finger red? Why Sass not work? You know?
Chris: Yeah.
Dave: Yeah. Yeah, yeah.
Chris: Yeah, we don't get that ever anymore.
Dave: Yeah because everyone is smarter than us now. Great job, everybody.
Chris: Yeah.
Dave: No, I mean I think that's part of it. I also think--
Chris: Oh, it was Steve Polito. Thanks, Steve. That's why.
Dave: Yes. Oh, Steve Polito. Yeah, I mean I think that's a perfectly valid kind of hypothesis. I think the pandemic took a lot out of podcasts. I think people quit doing commutes and stuff, and that was huge. So, that's probably part of it, too.
I think if you're learning, if you're hopping into the career now, are you going to listen to two 40-year-old white dudes or are you going to choose somebody else? [Laughter] I think there's a good chance you might choose somebody else. But not that we aren't good and don't have great content, but I think there are some people who are just kind of like... You learn... Your field of view for the industry is probably some dudes you know on YouTube and they do a podcast. I don't even know who they are.
Chris: Yeah.
Dave: So--
Chris: Yeah, yeah, yeah. Very interesting. Yeah, I guess we better wrap it up this time.
I think we have enough questions at the moment to do a more full question show one of these days. Feel free to write in with them.
Again, I've always said I don't even care if they're questions but topics are cool, too. Like, "I'm thinking about X," is almost better. I feel like the chances of us covering that are just as high as any question.
Dave: What about, "I'm thinking about getting married"? Ooh! Let us help.
Chris: [Laughter]
Dave: We'll help you. We'll help you--
Chris: Oh, yeah.
Dave: --land this plane. We know how to do that. We've got this.
Chris: Mm-hmm.
Dave: We're going to help you.
Chris: Yeah, we should. And Dave's, "Should I sell my company?" where Dave only just says "Yes"--
Dave: Yes!
Chris: --and then we move to the next one.
[Laughter]
Dave: Yes. "Somebody offered me $100." Yep!
Chris: Yep.
Dave: Yep! That sounds great!
Chris: Money is hard to find at the moment, you know.
Dave: Oh, man. Just say yes. Always say yes.
Chris: [Laughter]
Dave: I went to bed thinking about that, Chris.
Chris: Did you?
Dave: I was just like, "Say yep! Just say yep!" [Laughter] When would--? I don't know. Who was I thinking about? Somebody sold their company. Oh, pizza. I can't remember. But anyway, somebody had sold their company, and I just was thinking about it. I just was like, "Yeah! You say yes. You always say yes." So, anyway.
Chris: Mm-hmm. Yeah, I was out to... It was a little night out with my wife last night. One of her friends was at the little wine club we were at. She came in, and she was thinking about selling her business. I was like, "Oh, yeah. You should definitely do that." I was channeling some Dave, too.
Dave: [Laughter]
Chris: And it had this incredible serendipity where she does... She has something with beauty in some way, right?
Dave: Mm-hmm.
Chris: And has a big online following and then gets customers through there. And then she's able to kind of farm out some of the work to other people, which is kind of an amazing concept to me. I was like, "That's a thing? That's amazing."
You're like, "I like your makeup on Instagram. Will you do it for me?" "Yes. Oh, here's a local person I'm hooking you up with to administer said makeup."
Dave: Wow!
Chris: Wow!
Dave: Cool.
Chris: Yeah.
Dave: Yeah.
Chris: Yeah, right. It sounds like it's been working good for her. But she had to step back for various reasons. And this person who already works for her wants to buy it who has the exact same name.
Dave: What?!
Chris: I don't even remember what her name was, so I'm not telling you.
Dave: Christy Brinkley.
Chris: Yeah, or something. And then she's like, "And then somebody named Christy Brinkley wants to buy the business, so she'd have to change nothing about it."
Dave: Wow!
Chris: I'm like, "She almost has you over a barrel - or kind of."
Dave: Dude!
Chris: If you come in too hot and she doesn't want to buy it, who else are you going to sell it to? Who else has your name, which is the name of the business?
Dave: Yeah.
Chris: I was like, "That kind of puts you at a disadvantage in a way."
Dave: That's a situation where you have... Oh, gosh. I wish I could remember what it was, but it's like running a business isn't super fun. It's fine. You can do it. But it's not super-fun, so if somebody says, "Gosh, I'd sure like to take that big dumb burden off your shoulders," you say, "Yeah! That's great!"
Chris: [Laughter] That is a very good point. There is nothing about it that's particularly fun.
Dave: What's fun?
Chris: It's just not.
Dave: Yeah.
Chris: There's the taxes, the stress, the hiring, the firing, the absolutely every piece of buck stops with you.
Dave: Yeah.
Chris: Blah!
Dave: Yeah.
Chris: [Laughter]
Dave: It's somebody's... [Laughter]
Chris: Done it a couple of times.
Dave: I'm really spinning gears here. If somebody was like, "I want to take that from you," what would I--? I would have to... It would have to be something really intense, like reason, like I horcruxed myself and I will die if the business gets sold to somebody else. [Laughter] I don't know, man. I don't understand.
Chris: Yeah. I mean obviously, it has to be the right value, too. You're not actually going to sell a $10 million business for $100 - or whatever.
Dave: Yeah.
Chris: But as soon as it's in the land of reasonable, I think yeah.
Dave: Which is why Astro should buy this podcast.
Chris: I've heard some--
Dave: Astro--
Chris: Yeah. [Laughter] Yeah.
Dave: Just buy the podcast.
[Laughter]
Dave: Fred?
Chris: Yeah.
Dave: Fred, if you're listening, just buy the podcast.
Chris: Yeah, we'll take our yearly revenue of zero dollars and we'll 10x it.
Dave: Yeah, we'll 10x it easy.
[Laughter]
Chris: No, it was somebody I know was trying to buy a business that was, like, okay. I was like, "Oh, yeah. That's a cool, little business," and the person, they were insane how much they wanted. It was like a 25x multiple and some extra stuff. I was like, "Your thing is okay," but they were clearly a little delusional.
I was hearing the backstory of all this, of just how they were like, "And if you think you're going to do this yourself, you're not. There's some serious technology here." That kind of developer syndrome - or something.
Dave: Yeah, yeah.
Chris: I don't know. We could probably come up with a name of it where you think what you've built is so incredible that no one else could possibly do what you do. You're like, "Um..."
Dave: Yeah. Yeah.
Chris: "How old are you, 20?" [Laughter]
Dave: Genius developer syndrome. Yeah.
Chris: Genius developer syndrome, maybe that's it, yeah.
Dave: Yeah.
Chris: It's like, "Yeah, okay. Well, you hold onto it then and, in five years, when you come crawling back, I'm going to tell you to piss off." [Laughter]
Dave: My wife's friend runs a business that makes cotton candy in churros for, like, fairs or school events.
Chris: Yeah? I see.
Dave: Weddings.
Chris: White label?
Dave: Well, she wants to sell it. I'm just like, "Uh... That sounds awesome." I probably can't afford it, but that sounds... What a cool business? Then you just pay a high schooler to go stand out and make people happy. You know?
Chris: Yeah.
Dave: You're making cotton candy. No one is like, "Man, that cotton candy was bad! Oh, man. That churro didn't have enough cinnamon, man! Oh, that's the worst. I'm mad at you."
Chris: [Laughter]
Dave: It's an awesome job, and very limited in scope.
Chris: I like the idea of selling happiness.
Dave: Your only issue is bees.
[Laughter]
Dave: That's your only hazard is bees attacking you while you're making it.
Chris: Bees and taxes.
Dave: Bees and taxes. So, anyway.
Chris: [Laughter]
Dave: All right. Well--
Chris: All right.
Dave: We'll stop this. If you bought or sold a business, we would love to hear about it. Give us some more ideas on businesses we should buy or sell, and we'll look into it. We'll evaluate every single idea here on the ShopTalk Show.
Join us in the D-d-d-d-discord. That's where all the fun happens, patreon.com/shoptalkshow. Chris, do you got anything else you'd like to say?
Chris: [lip trill] [speaking in a whisper] ShopTalkShow.com.
Dave: ♪ dot com ♪