610: TypeScript in 2024, Signals, Productivity Sniped, and Follow Up

Download MP3

Dave's about to be eclipsed, the state of TypeScript in 2024, signals stage zero proposal, corrections on accessibility in frameworks (thanks!), web apps for better collaborative writing, getting productivity sniped, the problem with email may be you, indieweb follow up, and ultimate guitar tab apps.



Chris Coyier and Dave Rupert in silly sunglasses and a sign that says Shawp Tawlkk Shough DOT COM

Chris Coyier and Dave Rupert

This episode is with just Chris & Dave, ShopTalk Show's hosts. Chris is the co-founder of CodePen and creator of CSS-Tricks, and Dave is lead developer at Paravel.

Episode Sponsors 🧡


[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--in the path--Rupert. With me is Chris--in the office--Coyier.

Chris Coyier: You are!

Dave: Hey, Chris. How are you?

Chris: What a chance thing that the fricken' path of the eclipse, which even as a concept is hard for me to wrap my mind around, but it goes right through Dave's house, pretty much.

Dave: Yeah. Yeah.

Chris: That's wild.

Dave: I think I'm in the total eclipse of the heart is about four minutes or something when it's full eclipse if you're in the center line.

Chris: Is it worth driving or is it going to be cool from your house?

Dave: It should be cool from my house. But actually, my wife's family is all coming into town. They're apparently eclipse chasers. I didn't know that, but there they go, so they're in town.

Chris: There they go.

Dave: Rented a house that's way closer, a little west of here. Really, it's only like two to ten miles west of here is now you're in four minutes of eclipse territory versus two minutes and 30 seconds of eclipse. And if I cross the highway the other way, it would be like zero minutes. You know what I mean?

Chris: Hmm...

Dave: It's just such a weird... I don't know. It's weird how thin the line is. But then it also goes across the whole entire United States.

Chris: How do you even know? Is there a really nice little Google Maps thing that shows you?

Dave: Yeah.

Chris: Yeah.

Dave: and all that. NBC, CNN, they all give you one.

Chris: That's cool.

Dave: Yeah, it's cool. Fortunate, I think we were kind of saying before the show. I would not typically leave my house just to see a shadow. But you know, I'm excited.

Chris: The people that have done it, I never have either. I think I've seen little partial ones or a moon one. I don't even know.

Dave: Yeah. I went to the partial one. Last time, it happened on a weekend, so it was pretty easy to--

Chris: Wasn't it the shadows look different?

Dave: Yeah. Yeah.

Chris: I forget the details.

Dave: It's weird.

Chris: Yeah.

Dave: They kind of... If you think of a sun moving in front of an orb, a circle, and you get a little sliver, like a crescent, all of a sudden, all of the shadows look like crescents. So, you see the shadow of a tree, but it's just a bunch of crescents.

Chris: That's truly weird.

Dave: It's kind of weird. It changes. And the sky all turns... I don't know. You know how when you turn phone brightness all the way down on your phone?


Dave: It's like the whole Earth suddenly is at zero brightness.

Chris: Yeah.

Dave: You're just like, "Wow. This is... I haven't seen..." and I don't know. My brain always goes to, "What the--?" Two things:

How do people spend their time tracking this? Who is just like, "I am always aware of the shadow, the moon's shadow, and that's what I care about. I plotted it for the next 20 centuries." That's weird to me that people do that as a hobby or a job.

But then the other one is if you were living in the--

Chris: Oh, you have to think about primitive people. Yeah, exactly.

Dave: 1200s or thousands of years B.C., and the sun just disappeared and you walked ten miles, and you tell your friends, "Did you see the sun just disappear?" They'd be like, "No, I didn't. What do you mean? You are crazy, dude."

That would be so weird to me. I don't know. I'm sure this is the cause.

Chris: I would immediately look at my neighbor. I would be like, "What did you do, Frank?"


Dave: Frank.

Chris: I'd be pissed.

Dave: Frank.

Chris: Yeah.

Dave: You sinned. You did a big sin and now the sun god is done with you and all of us because you did the big sin.

Chris: Yeah.

Dave: Dammit, Frank.

Chris: I would definitely just... I would use the opportunity. I'd be like an early Trump. I'd just be like, whatever just happened, vote for me. You know?

Dave: [Laughter] Vote for me. I will keep the sun going.


Dave: Here's my party platform, "Keep the sun going." Right? You know?


Dave: And I get a cut of all the money. That seems like a good deal, right?

Chris: It seems fair. Yeah.

Dave: Yeah.


Chris: All right. Well, that'll be cool. I think, as people are listening to this show, if you're a day one kind of listener, it's probably happening right now.

Dave: Yeah. Yeah.

Chris: Just saying.

Dave: If you're a Monday listener, I am in the path of the eclipse, so there you go.

Chris: Fantastic.

Dave: There are clouds in the forecast, so it could be a total dud. It was kind of like that last time the eclipse went through.

Chris: Oh, that would suck!

Dave: Yeah.

Chris: My God! You have one chance at this and it could be cloudy? Yeah, I didn't even consider that. That would suck.

Dave: It could be cloudy. But hear me out. It's still going to get weird dark. It's going to be like phone brightness zero, and that's weird enough. You know?

Chris: Isn't it nice in Austin, usually?

Dave: I mean it's oppressively hot in Austin most of the time. [Laughter] But it's nice in Austin.

Chris: Yeah, but do the people talk about number of days of sunshine and stuff? We have 300 here in Bend, so the people talk about it all the time.

Dave: Oh, yeah. I don't even know what we have. I would be curious. But it just so happens, it's like Saturday, Sunday, Monday, when everyone is in town. People are coming. Austin is expected to be a surge here of a destination town Saturday, Sunday, Monday. And then rain on Tuesday, Wednesday.

Chris: Yeah.

Dave: It's just cloudy all weekend.

Chris: We got an eclipse and Torchy's, so there are a lot of reasons. Yeah.

Dave: And you can wear cowboy boots and a cowboy hat.

Chris: Right.

Dave: And that is--

Chris: Have you ever seen a lot of bats come out of a bridge? You get to check out a lot of stuff.

Dave: Yeah, I have a friend of a friend who runs the bat tours here in Austin, runs a bat tour. You rent a kayak or a paddleboard that glows in the dark, and they'll take you to cool places that he knows.

Chris: Yeah, that's a cool job.

Dave: That's a cool job.

Chris: I'd say.

Dave: I wish I was like that, industrious to be like, "I'm going to go. I'm going to leave my house after 9:00."

Chris: I'm going to turn nature into money.


Dave: I'm going to leave my house. Yeah, I'm going to have... My only goods are, like, a 4-wheeler to tow a truck full of kayaks. That's going to be my only overhead. That would be cool.

Chris: Uh-huh.

Dave: Oh, well.


Chris: Fantastic. The Internet is still around.

Dave: It's going.

Chris: We have some questions we can get to today. I saw... You said something the other day that stuck in my brain a little bit because it was about... It's been about two years, a little more than two years, since an article dropped on Microsoft about types in JavaScript. It was all noisy for a minute because it was like, "Holy cow! Maybe--"

Don't you always think about the Web standards bodies are at their best when they see movement, they see a lot of people doing something, with tools. Then they're like, "Maybe we can standardize this and help you do it."

It's not because the tool is bad. It's because standards are good.

Dave: Mm-hmm. Pave the cow paths, right? Classic.

Chris: TypeScript is a pretty big cow path, let's say. And maybe it should be a tool forever. I don't know. But some smart people got together and said, "Hey, maybe we can do this. Within the syntax of JavaScript, we won't need that tool anymore." There was a lot of skepticism but also loud clapping. That's just what happens in our industry.

As far as I can tell, it hasn't been touched since that day. There's a GitHub repo. I don't know. I can't say that for sure. But we're certainly not talking about it anymore. Those stage zero proposals can do that.

Dave: Yeah. I chased it down the other day. Did you look at it or try to chase it down?

Chris: All I did was look at commits to the repo that was talking about it.

Dave: Yeah.

Chris: Those were thin.

Dave: There's one commit a year, so it was announced two years ago and there's one commit every March. [Laughter]

Chris: Hmm...

Dave: Hopefully, we're getting it soon -- right before TPAC -- which I think is literally maybe today - or something - that we're recording.

Chris: Oh, well, that could be cool.

Dave: Or TC39 - whatever. But it wasn't on the TC39 schedule for April of 2024, so that makes me think it is not mature enough.

Chris: Perhaps, or the people got excited about something else because these things take excited human beings to push through.

Dave: It's diverged a lot. I think the idea of, like, let's just gold stamp TypeScript and put it in the browser, I don't think that's happening. There were a lot of people pushing back for a more comment-like syntax, sort of like JS Doc, but maybe more succinct.

There were a lot of people pushing for maybe like the colon syntax, the colon number or something like that, just that part of TypeScript and for returns and operators and stuff like that.

Chris: I could see it.

Dave: I don't know if any of that really is being talked about.

Chris: Start small and grow. That would be my advice.


Dave: Yeah. It all comes fresh to mind because I was in a conversation with somebody, and they were like, "Why didn't you use TypeScript on this?" I was like, "Uh... you know, um... I kind of was hoping we would be not talking about TypeScript at this point."

I think I kind of hoped the conversation would be further along.

Chris: Yeah. You were going to wait it out. You know?

Dave: Yeah.

Chris: Yeah. You like that tool, but I can hang until we're not doing it anymore. I mean that's worked for some people. Maybe a million years ago, somebody saw some weird flash way to do Web fonts, and they're like, "Eh, I'm going to wait it out." You know? Then they were rewarded for their waiting by Web standards font face and stuff like that.

Dave: Yeah.

Chris: It tends to happen if you wait long enough.

Dave: I think that's true. I think there is a genuine real threat -- I'm going to say threat on my SWOT board. Okay?

Chris: Okay.

Dave: Threat that we are hitting another required JS require syntax problem with TypeScript. I think it's good. Let me--

Chris: Yeah.

Dave: --say it's valuable. It's helpful. It generally provides value. It cuts literally 15% of your bugs (based on some research from Microsoft) that types add to a codebase.

Chris: Okay. Yeah.

Dave: So, that's good, right? But I think we're hitting a place where you know how we can't do ESM all the time. We're not in ESM fun times because we have all this legacy code that is written in legacy Node, the require syntax. So, I think we're potentially going to foot gun or bottleneck ourselves in five years. I think that's a threat to the ecosystem as it is. But there's value in it, obviously. Okay.

Chris: Yeah. Okay, so there's that one. And I kind of brought it up, and I didn't know that TPAC was here. I don't follow stuff that closely, I guess. I saw a proposal for signals. That's also a stage zero. Signals being this - I don't know - architectural concept of making a variable then that you can change it and UI and whatever else is kind of like watching it. And it can respond to changes in it. Almost like a mutation observer for a variable or something.

Very popular. Lots of people see it, look at it, and click with it as a way for that stuff to work. It was in Solid. I don't know who invented it, but I know PReact kind of was into it. It's in Solid.js. Angular decided to pick it up. Angular is merging with something that has it. There's a lot of stuff for it. Again, there's a cow path for you.

Dave: Mm-hmm.

Chris: Then all of a sudden, we see a proposal come along for Signals to then go into JavaScript. It's stage zero, so as soon as I see that, like, "Wow, this is big and weird and a change for JavaScript."

All I thought of was, like, "Yeah, how is that types thing coming?" You know? [Laughter]

Dave: Well, and all of that would be easier or more sensible with types, right? It would just be this whole... Wouldn't it be better if it had types?

Yeah, so that was proposed or put together. Rob Eisenberg, Eisenberg Effect on Twitter and elsewhere. But he has done good work, especially with Web components. Formerly, worked at Microsoft on their Fast components, and I'm not sure where he's at now or if he's just consulting. It looks like he's just consulting.

Yeah, so pretty exciting to think that Signals is... That's another thing where I was kind of like, "I'm going to wait," or just use what Vue gives me, which is Vue X.

Chris: Yeah.

Dave: And then it's just opinion.

Chris: Right.

Dave: I'm just going to use what is given to me. I'm not going to invent my own. That's sort of like React has notably gone through a few different state management systems.


Dave: And so, anyway, it took everyone a while to come around to, like, "Hey, Signals is pretty good." Are we going to hate Signals once it lands in the browser? Maybe. I don't know. But the API looks pretty cool. It's just a variable you can subscribe to and then do changes based off of it. Right?

Chris: Yeah. I have never... I don't have anything production using anything with Signals. To me, it's just a little bit in this gray area of, like, I haven't felt it work for me, so I don't know if I love it or not. But I look at it, and I'm like, "It's a little like pub subby, I guess." I've definitely done that kind of thing before.

Dave: Hmm... Mm-hmm.


Chris: Then I use Apollo, Apollo GraphQL at work, and we generally like it for its caching, its efficient querying, and stuff. But just kind of built into it. I don't know if this is good or bad, but you just get some bonus stuff.

Sometimes when libraries get so big and it's just such a big part of dealing with the data of your app, they're like, "And... you get this too!" And one of "this too" is what they call reactive variables. It's just part of the package, and it's tree shaken out, I think, if you don't use it, so not a big deal.

In the React context that we're using it, we can just pull in two functions. One of them is declaring a reactive variable and one of them is the setter for it or something. I forget exactly the syntax off hand, but I've used it twice in the last two weeks. I've been like, "Ooh... This is nice." I think it's Signal-like, so I feel like I have some stuff in it.

But it's like any two components. You don't have to think about the whole tree of architecture of your app. You can just be like, this component way the hell over here declared this reactive variable and is exporting it. And this other component way the hell over here that has no connection to it can kind of import from it. Now those two components have this variable that they're sharing and reacting to without having to do something in React like - I don't know - drill the state down through a million things or use some kind of global state store that's shared. You can just do these little one-offs and it kind of feels nice sometimes.

Dave: Yeah, and there's no provider situation.

Chris: Nope.

Dave: There's no... I think it's still kind of this... you just... And there's not even that kind of event up, data down situation. It's kind of just set it here (right) and then it'll tell everyone else it changed.

Chris: Yeah, the telling everybody else is the kind of hard part, I would think.

Dave: Yeah. Yeah because when I first heard Signals is getting popular, I maybe said it on the show. I was like, "Oh, it's kind of like" You just type and it's a fancy global variable. And it kind of is, but it kind of is that plus it has this whole pub sub sort of thing to it.

Chris: Right because you need the sub. You need the callback. You need the mutation observer part, like, "This changed. Please run some code now." Whereas if you change, yes, that data is available to everybody looking at it. But they don't... They aren't told that it changed.


Dave: Right. Right. Yeah, and then there's another feature. They had... It's signal.Computed, and computed is capitalized, and I don't know why but I'm very--


Dave: It's like this weird... [Laughter] I'm a petty bitch.

Chris: [Laughter]

Dave: I'm like Rupal's Drag Race over here. That would kick it out for me just this unnecessary capitalization. No, it's fine.

Anyway, it's signal.Computed, new signal.Computed. Then you can do... It accepts a function. Is even.get, so you're saying is it even, I guess, and then you... It'll say true or false. Then you say, "Okay, now spit out text," the text version.

Anyway, it's just sort of like the text word "even" or the text word "odd" depending on that value. It's sort of like Vue's computed attributes. I think Svelte has also that, too. I think, I guess... This is my not knowing enough about React. It's sort of like... Does React have useRef? I feel like they do, right?

Chris: It does.

Dave: That's a thing you can do. Okay, yeah, so useRef.

Chris: Yeah, but I don't know. I think of it as you have to use that little hook just to get a DOM node.

Dave: Oh... Yeah.

Chris: Then you can do things to the DOM node.

Dave: Yeah, okay. Refs.

Chris: But it's not that only. I hate to... I'm sure people have seen this show is like, "I can explain it!" I'm sure you could. But I think it also means keep a reference to this when it re-renders. There's some efficiency aspect to it, too.

Dave: Okay, so it's not just a variable value. Okay. So, I don't know. Maybe there's a use computed thing.

Chris: Oh, it could be, though. Sorry.

Dave: Anyway. Let's not worry about it. [Laughter] Let's not explain poorly.

Chris: Okay. All right.

Dave: Yeah.

Chris: Showing my ignorance here again. I probably should be able to explain it really well.


Dave: Anyway, computed in Vue is fucking cool.

Chris: Is it?

Dave: So, if it came to the platform, that would be cool because you can basically just say, like... What would be a good example? Okay, I have a list of posts, right?

Chris: Yep.

Dave: Go get the posts, and I'm just going to keep asking for posts.

Chris: Yep.

Dave: Then my computed can be filtered posts. And I do post.filter - whatever - type=comment.

Chris: Yep.

Dave: And so, like--

Chris: Does it prevent a re-render? Like if for some reason that thing needs to re-render, it doesn't need to refilter them. They've already been filtered.

Dave: Yeah, well, and it will only re-render if posts change. If the parent, the thing it's subscribing to, changed - or whatever.

Chris: I see.

Dave: It's good. It's genuinely pretty cool stuff. Anyway, Vue computed is awesome, and so it would be cool if we had that kind of computed power.

Chris: Yeah. I think kind of the equivalent in React land is like, "Oh, I know this component is going to re-render if a prop changes on it," for example, or a parent's prop changed and I'm a child, so I just get blasted away in the thing, which is a little bit hard to know.

If that component is doing anything that requires significant work, it's on you to figure out how can I add efficiency to this in React.

Dave: Mm-hmm.

Chris: It's like, "Well, use memo or something and then it's good."

Dave: Maybe that's what I was thinking of, use memo. Just like--

Chris: Maybe.

Dave: You have a memorized variable.

Chris: Yep.

Dave: Then if something... Then you pass the things like if these watchers (right) change, then update this. Right? That's kind of--


Chris: Yeah. Yeah. Done the work once. Now, there is murmurs that React is going to become a compiled framework in the future and that decisions like that will not need to be made by the author anymore. They can be sussed out by a compiler. That seems cool to me. But it also seems like, "Holy cow has this framework gone under some very extreme changes recently." Now it runs on the server and it's compiled. It's like, "What even is this thing anymore?"

Dave: Yeah. Good question. I wonder. Yeah, I don't know.

Chris: I don't know. As long as Next just magically makes use of it and delivers me the good DX it does now, I'm not mad about it.

Dave: I'm curious what we're going to feel like in three years when half codebases are half implemented in server components and half not. It just becomes this sort of like... I'm sure best practices will emerge eventually.

Chris: Maybe. Maybe there'll be some crazy conspiracy theory where Vercel was like, "We sell node servers so, hey, React, could you design a product that requires node servers? I'll give you a million dollars." You know?

Dave: Yeah and everyone on the React core team is like--

Chris: "Sure, we can do that."

Dave: --on a big boat in Monaco right now.

Chris: [Laughter] Yeah. Just kidding. We love everybody. Everything is fine.

Dave: Everything is fine. No, well, I wonder if the remix dudes are going to be like, "I told you so."


Dave: I wonder if that's going to happen. I don't know. I don't know. I'm curious. Not to stir up drama. Not to stir up drama.

Chris: No. I mean we're not even capable of it anymore. All eight of you out there.

Dave: Yeah. Dave said it right. Chris and Dave did not say anything wrong.

Chris: [Laughter]


Dave: Speaking of saying stuff wrong, we do have some corrections. I said, in a previous episode, no framework helps you with accessibility.

Chris: Oh, right. And everybody is like, "Except for all the good ones." [Laughter]

Dave: Except the good ones. Triple threat Josh Collinsworth said, "Actually, Svelte does this." I have not confirmed this or seen a proof of concept, but apparently Svelte does this.

Melanie, of course, said Ember does this. And so, you know, of course.

Chris: Yeah.

Dave: Anyway--

Chris: One question, though. Does it do it? It seems like, okay, I could see doing it if somebody wrote a Svelte VS Code plugin or Ember VS Code plugin that did some static analysis on those types of components and then put red squiggles. Okay? So that's kind of like the framework doing it, but it's kind of just a linter. Maybe the framework provides the linter and thus it feels that way.

Or while it's being compiled, the compiler is throwing those errors or - whatever - reporting them to standard out or whatever a library does. Which one is it? It's unclear to me, the approach.

Dave: Yeah. It would be interesting, too. Maybe this is a blog post that I should write for the old Boost blog.

Chris: I recommend it.

Dave: Just figure out which one does what. There's been... Just because, yeah, is it throwing? Do I need to have the right tooling environment set up? Man, when I have the perfect tooling environment, everything is perfect. There are no problems, Chris, when the perfect tooling environment is set up.

Chris: Right.

Dave: But when I'm opening notepad, do I have a different experience?

Chris: This all comes back to the types thing in JavaScript. If you open a file in this future world in which types are in JavaScript in Notepad++ on Windows - or whatever - are you going to get squiggles and stuff? No, you're not.

Dave: No. No.

Chris: Right? Or are we talking about having JavaScript itself throw or do console.errors and stuff when those types are broken in browsers? Is that happening too, or is this exclusively shifted left to the developer experience only? Unclear to me.

Dave: Yeah. Yeah, I mean strong type languages: Rust, Go.

Chris: Oh, they'll bitch at the compile stuff.

Dave: They're mad. You don't get any. You get nothing when it fails, right?

Chris: Truly nothing. Yeah.

Dave: I can technically upload my TypeScript with the .js extension and the browser will try to run it and then just die, right?

Chris: It will. It'll find an angle bracket or something and be like, "No, that's not going to work."

Dave: That doesn't work. It's just interesting. I think the original example was putting a click handler on a div, right?

Chris: Yep.

Dave: Would a browser or would a framework yell at you if you did that? I don't think HTMX will. It might, but maybe I need to get back into it. And I really haven't seen cool linters or cool tests suites.

Chris: Yeah.

Dave: Like Web test runner, which is a popular Web component test runner. It uses a blend of mocha chi, all this, but there's one example where you can pull in A11y test suites or AXE right into there, and then you say, "Expect an element to be accessible," or whatever.

Chris: What?!

Dave: That's cool.

Chris: They have an expectation thing?

Dave: Yeah. Yeah.

Chris: Oh, that's cool.

Dave: And so, it'll render the output and then verify that it's accessible or run AXE right on it. That's cool. We need more of that but A) that requires two steps. That requires that you ran the test actually before you put them into production. [Laughter]

Chris: Right.

Dave: Then two, it requires you wrote the test and you imported the packages and did all that stuff right. It would be cool. Maybe I'll do a little whistlestop tour post on who actually solves this problem for you. But then--

Chris: Yep.

Dave: Sometimes you need to put a click handler on an LI. Sorry. It just is going to come up. You know? It's going to come up.


Chris: I found one even as a mistake just in our app where I'm the worst PR reviewer. By the worst, I mean the best.

Dave: [Laughter]

Chris: I never let that go through.

Dave: Good. Yeah.

Chris: I was like, "No. We have a component for that."

Dave: Good. Good.

Chris: It's called a button. We have all kinds of props on it. We also have button simple in case what you're trying to do is have no styling around the thing but it's an interactive element that has no relative HREF. Use that.

Dave: Use that one. Yeah, so it's kind of like if we can make these tools do it, awesome. Then should we? Or do you need a way to be like, "No, actually, in this weird circumstance I really do need to make an LI clickable as a progressive enhancement," or something?

Chris: Yeah. the Web is a big place, I always think.

Dave: Yeah.


[Banjo music starts]

Chris: This episode of ShopTalk Show was sponsored by Jack's Radical Design Course. That's If you could lick a three-pound toad and magically become an incredible designer, would you do it? I would. [Laughter]

What if instead of an organic wart machine, it was a rebellious video course? And instead of licking it, all you had to do was watch it and follow along? Would you do it then, fair listener?

Well, this ad script that I was handed might suggest this toadless, wartless Web design course by Jack McDade, the creator of Statamic, is anything but boring. It will not teach you how to copy overused trends nor surrender to the safety of so-called best practices and cookie-cutter templates. Instead, it teaches you how to develop your own personal style, how to write content that will be remembered, how to use design to stand out in a crowd, and how to design quickly and efficiently so you can get on with the 71 other things on your to-do list.

Don't I know it, and I love Jack's style, too. This is good copy. He's an excellent designer, too. I'm going off-script. Sorry.

And yes, even though Jack wrote the script I'm reading to you right now, you don't have to take his or my word for it. Real customers of this course have called it exceptional, hilarious, and more life-changing than toilet paper. So, if you have the itch to build new skills and create something original, check out Jack's Radical Design Course at, again, and use the code SHOPTALK (all caps) to save 10%. Prior design experience not required. Burnt-out designers welcome.

[Banjo music stops]


Chris: Okay, so you mentioned writing for Boost. Everybody listening out there, there's a guest writing program if you want to do that. Just because - whatever - I write over there, too, me and Dave.

Dave: Boost blogging. Boost blogging.

Chris: It's interesting to think now I'm in a position of occasionally writing an article in another app. You do it in Notion. That's your draft land.

Dave: Mm-hmm. Mm-hmm.

Chris: I think that's kind of cool. Then if you want to share it with somebody else to get comments on it, like you were going to send it into an editor anywhere, Notion is not bad for that. You can kind of mark it as public. It has kind of a permissions model to do that. You can keep it private. I think it's basically private by default. Then they have a permissions model that allows you to open the little share menu and say, "I want anybody to see this," or "I want this exact person to see this." Can they just see it or can they edit it, too?

Dave: Yeah, I don't know. I think they can just see it through the public link. But then you can invite people to it. But it's sort of like security by obscurity when you publish it.

Chris: They even maybe have a "can comment" but not edit - or something.

Dave: Yeah.

Chris: Anyway, they have to thread the line there. How complicated do you want to make this? Because I'm sure they could have a whole security matrix on there if they wanted to, but that's no fun. Mostly, people just want to flip a switch and be like, "Yeah, everybody can see this. I don't care."

Dave: Yeah.

Chris: It comes up to me, though, because back in my editing days on CSS-Tricks, too, I was always like, "Hey, if somebody is going to write for us, you can send it in however you want to. But if you don't have a preference or are interested in what we would like," I always pushed people to Dropbox Paper. It's just a little add-on product.

I don't know for sure. It feels maybe a little forgotten over at Dropbox. Probably it's a good app but doesn't need a super active team on it or anything. It looks about how the last time I looked at it years ago. But I like it because you write in there and it has that permissions model, too, that you can easily add people to it.

It doesn't look like Markdown very much but you can export it in Markdown. I didn't mind that. I don't really care to think in the Markdown syntax very much. So, I always liked that.

I always liked a little more than Google Docs because Google Docs wouldn't... People did formatting and stuff. I'm like, "Don't do that." If anything, I prefer Markdown because it's so portable and it forces you to not do formatting. But I don't actually care if it's actually Markdown.

Anyway, where I'm going with this is you use Notion. That's a pretty good choice for it. But Notion is not super lightweight and stuff. It's not just something you would just pick up and use to write one article. You're either in Notion land or you're not.

What else is there? I saw one the other day, someone using a product called

Dave: Ooh...

Chris: --that I was like, "Ooh... this is new and cool. It looks a little fancy." It has that kind of real-time editing and permissions model and, crucially for me, it has this one feature that sets it apart because there are a zillion write Markdown online apps. There just is. There's so many.

Dave: Mm-hmm.

Chris: Some of them are like, "We have AI. We have blah-blah-blah." This has... You can select a line of text and comment on that. That's the feature I'm talking about.

Dave: Oh, okay. Yeah. Yep.


Chris: Notion has got it. Stashpad has got it. And I'm interested in asking the ShopTalk audience, what other stuff has it? Google Docs has it. To me, that's very important. I want to highlight a sentence and be like, "Ooh, could you do a fact check on this sentence, please?" or something. It's really rare to see in an app, I think, and I want to have a mental model of the ones that are doing that because it's a pretty niche feature that is important to me.

Dave: Wasn't there a new Butter Docs that's a new thing?

Chris: Just saw that, too. I think that was shared in the Discord, perhaps. It looks like kind of a more open-source Google Docs thing.

Dave: Yeah. A little Trello-y vibes in there, too, which is literally my setup for my blogging machine. So, maybe I could do this.

Chris: Oh, yeah. This looks kind of good. The Trello aspect is a wildcard there, but I guess I kind of get it. Is each Trello card a doc?

Dave: Yeah, I think so. And I think it's just the idea that, like, "Hey, you have--"

Chris: Yeah, you've got to organize it somehow.

Dave: Yeah. If you have multiple documents, they're in different statuses. Why not reflect those statuses? It looks like, actually... Oh, interesting. Maybe they're actually doing this at the document level.

Oh, my god. Every column is a heading, like introduction. This is in their example video. An introduction, art of churning around the world, which seems like a mistake. Heath perspectives.

But then they have each one documented. Anyway, that's interesting. I mean, very cool.

Chris: It has the feature, just to check. Sorry. I wanted to make sure.

Dave: It does have the feature. Yeah. Yeah, before I jump to something else.

Chris: It has the comment on a particular thing, which involves... I think it's rare because it's a little hard. It involves that document.setrange and all that.

Dave: Range. Yeah.

Chris: Yeah.

Dave: Yeah.

Chris: Then those can change, and then what do you do with the data you have? What if that whole word goes away? You have to make really hard product choices. I'm like, "Do I delete the comment or do I orphan it somehow?" I could see why people are like, "Eck. Too hard. Abort."

Dave: Yeah. Don't do it. Yeah. "Never write code. Never improve products," I think is the advice I would say.

This Butter Docs looks really cool but it's very much how I'm currently writing, so that seems like very much what - I don't know.

Chris: What would you get out of it?

Dave: Yeah, what would I get out of it? What's going to make me change? What's going to make me change? If it's fast, if that's one of the things, then I'm maybe in.

Chris: Yeah. Really good offline or something. Yeah, I don't know. I don't know. I don't know.

Dave: Yeah.

Chris: Usually, my personal blog, I'll just use WordPress itself to store the drafts. Then I'm a Things user locally for all my to-dos.

Dave: For all your to-dos?

Chris: But also just ideas and stuff. It's pretty good for me because of all the synching and the nativeness and whatever. I did see another one, though, recently called Godspeed.

Dave: Yeah.


Chris: Pretty cool name for an app that also had native apps and also had the synching and all that. Then it had a couple of different aspects to it. For one, it was really focused on speed and stuff. Some of that stuff is like, "Yeah. It better be fast."


Chris: You know? It's a to-do app. How could it not be?

Dave: It's a blazing fast to-do list. It's blazing fast.

Chris: That doesn't really do anything for me. But nested checkboxes was the big concession. When you look at it, that's what you're getting. You're getting nested checkboxes.

Dave: Nested checkboxes.

Chris: I was like, "Do I like that?" I don't know that I do.

Dave: You get some labels.

Chris: Yeah.

Dave: You get some priority zero, in progress, stuff like that. You get attachments on the thing, on the to-do, which is kind of helpful.

Chris: I like that. If they could be like a board cards or something because what I don't need is just a clickable link to the thing. I want to see what the attachment is.

Dave: Right. Right.

Chris: Notion does that pretty good. If you drag an image into a Notion document, you see the image. Not so much with the PDF, but it gives you this big, nice, clickable thing and you can open the PDF and it opens it like in a modal. You can see the PDF.

Dave: Mm-hmm. Mm-hmm.

Chris: I need more than just "I can attach something." Although, I do like that. Things does not have that. You cannot put a file in a to-do in Things. It's kind of a missing feature, I think.

Dave: But then that is maybe also what makes it good is it's so shallow. You're like, "Okay, cool. Well, this references this other document in Notion," or something.

Chris: Could be. Sometimes you've got to make hard choices like that. Yeah. I could also see it ballooning the size of the database. Somebody drags in one 4-megabyte JPEG, you've doubled the size of the database of the thing.

Dave: Yeah. If it's not structured well, that's going to come down in a fetch all posts - or whatever.

Chris: Right.

Dave: Unless you've got good filtering or whatever.

Chris: Yep.


Dave: Yeah. I flirted with Obsidian. I like Obsidian. It's interesting to me. But it's very much a project in itself, sort of. You set up all of the rules and all of the views, which is cool. But it was maybe not for me at this moment just in time. I don't need another management project.

Chris: Yeah.

Dave: I'm kind of comfortably numb, comfortably in Notion. Committing to something, I think there's something to be said about committing to a set of tools. These are just what I use. If something amazing comes along, I'll try it. But these are my tools and I'm going to get good at using these to manage my brain or manage my--

Chris: Yeah. You can really get productivity sniped where you're like, "Ooh, this productivity tool looks 2% better," or something. Yeah, but you lost three days to it. You might have been wrong about the assessment to begin with.

I really hear what you're saying. Just don't change. Just stop it! [Laughter]

Dave: No, there's something to be said about - I don't know. I do think... I should say productivity is for you. Don't... If your boss is like, "Hey, man. You need to use this to-do list," or whatever, I'd be kind of like, "Uh-oh." But I think productivity is for you figuring out what works for you and makes you feel good about getting things done that you need to get done.

Chris: That's good sentiment. Yeah.


Dave: I use Analog from Ugmonk, the analog cards that you write out.

Chris: Mm-hmm.

Dave: It's great, you know, in that ritual of taking five minutes in the morning and pull up my calendar, my digital calendar (everything I've agreed to) and I write that down into a physical space. That's a very good ritual for me. It's basically just saying... It's giving my brain five minutes a day to say, "Okay, what are we doing today? What's the most important thing to the scheduled things to the least important thing?" Or what do I have scheduled, and then what's important that I need to get done and what's least important? The answer might surprise you.

Chris: I like it. The different tools have different categories, too. If you're really into a to-do app or a calendar or an email client or something, the cost of changing is high. And sometimes there are little tools like there's one I really like, like CleanShot on Mac OS that I just think is the nicest of the, like, take a screenshot quick. I might want to annotate it. I might want to upload it. I might want to add text to it. I might want to add a border to it. There are all these mights with the screenshot for me that handles them all pretty well. It might even be a movie - whatever.

Dave: Mm-hmm.

Chris: Might, might, might, might, might. To switch from something else to that, I feel like, is just a one-day. You're like, "Oh, I just use this one now." [Laughter] Who cares? Productivity change, light.

Dave: Right.

Chris: But change your email client, for me, is a much bigger deal. But also, that it's not necessarily the tool that provides the speed, too. I just see that a lot in email, like, there's a new email client and it solves problems. You're like, "Does it, though?" because I think you managing your email better is the problem.

Dave: Right.

Chris: It has nothing to do with the client. You are just lazy about unsubscribing to things and managing what comes in. I don't know. I have lots of thoughts about email, but a client isn't the solution.


Dave: Yeah. It's funny. It's like I think I use Apple Mail on basic. Again, I'm a basic B. It works. It works fine for me. The thing I do wish it did was stopped all these dumb, like, "Have my boss on your podcast," or "Hey, do you want me to get you a million tweets in TikToks?" It's just like, "Dude, I wish I could stop that." When you have co-founder on your LinkedIn, you're... rip.


Dave: It's the worst. It's the worst.

Chris: The worst. I feel you there, man.

Dave: Don't do it unless--

Chris: Do a dramatic reading of my... I have a different email for CodePen specifically.

Dave: Mm-hmm.

Chris: I've leaned into that and being like, if it's CodePen related, I use that and make that pretty public. It's no secret. It's just [email protected]. Man, is it full of... It's not spam. It's farmed. I mean I guess it's spam, but it's different.

Sometimes, I think of spam as penis enlargement stuff or whatever that just goes to every email address in the world. This is like, "Hello. This is Jimmy Bobby Bob at Silver Smith Venture Capital, Inc. Fund. We would like to talk to you this coming Monday. Here's a Calendly link. It's very important that your success company success is success." You know?

Dave: Yeah. I had somebody message me. This is just my last email that was like, "Oh, yeah." They were like, "We've identified this invest firm," who invested in Luro. "We identified this investment company as somebody we'd like to talk. Are you open to a 15-minute chat with our CEO to talk about an investment firm?" I'm just like--

Chris: Yep.

Dave: No.

Chris: No.

Dave: You should just talk to them. [Laughter] If you've identified them, send them an email, cold call. You know? But I guess they're hoping for an intro or something or a following.

Then they emailed me like three months later, literally three months on the dot, like almost to the minute. They're like, "Are you interested in this opportunity? Please follow up."

I'm like, "I'm not going to hop on a 15-minute call. Just say what you need in an email, people."

Chris: That's crazy. Yeah.

Dave: Say, "Can you intro me? Thank you."

Chris: It's a power dynamic thing. They're trying to get you on because they know that they can play the human angle, and they probably have a much higher success rate that way - or whatever. Sales kind of operates that way, and if you're already a customer.

I work with some companies that just are always like, "We've got to talk. We've got to be... It's got to be a Zoom."

Dave: Yeah.

Chris: Like, "No, it doesn't." You know? Yeah, but it's a power play. Whoever has got the most power can decide how the communication is going to go.

Dave: Well, and I bet I could cruise through this. I can match the date of this email to the day they closed a $50 million round. I just could guarantee. I'm just... Anyway. They're good investors.

Chris: Must deploy capital.

Dave: I'm not going to say their name because we'll get more spam. But they're... Our investors in Luro are wonderful people.


Chris: I'm going to do a couple of quick errata ones. We talked about IndieWeb pretty specifically (ten episodes ago or so). We said there's not a tutorial you can follow to be IndieWeb," which was just kind of a sentiment that was like, "It's not like that. There are so many little aspects to it. There are so many different parts to it. It's not just a checklist or something. It's not like, "Do this one thing and then you're IndieWeb."

It kind of is. It's kind of like, "Have your own website." That's the one big checkbox, you could say, to be IndieWeb. But there are so many little aspects to it. What people actually mean is are you publishing to the metaverse? Are you using the posse? That kind of thing.

Dave: Mm-hmm.

Chris: Or, like, "There's no tutorial for that." But someone wrote in and said, "There kind of is, though. It's," and it's set up as a kind of level one, level two, level three things you can do. It's a pretty small, little website, but I thought it was worth calling out because it kind of is, like, if that resonates with you, like, "Just tell me what to do," this kind of tells you what to do with increasing levels.

Dave: I'm going to quiz you. How IndieWeb are you? Get your own domain name.

Chris: That's pretty low-level. You've got to do that.

Dave: Okay. Set up Web sign-in. I'm already out. What? [Laughter]

I think something about link rel me microformat. Sure. I'm out. Okay.

Chris: It means you can sign into your own website. I don't know. Is that really what it means? You have to do special auth things even for your own website?

Dave: Let me see if I have it on my site. I'm going to test. Uh... It works perfectly. I'm using it to sign in or verify myself on Mastodon, which is a thing you can do if you had a rel=me on your website on Mastodon, you get a little green checkbox on your URL in Mastodon. Okay.

Chris: But you're not really signing into anything. That's just a verification step. I don't know.

Dave: Publishing to the IndieWeb. Mark up your content, profile notes, articles with microformats, too. I'm going to validate H card. No H cards found. But the box is green, so I'm going to count that. [Laughter]

Then on my post, do I use it on my post? Let me see. Dave Rupert, and then we just go to any random post. Here's one about the mouthguard my dentist prescribed me. Let's see here.

Chris: There's no way you're going to pass this.

Dave: We found an H entry! I did it, my boy!

Chris: What?!

Dave: Yeah.

Chris: Aw... You're good.

Dave: But I did not do e-content.

Chris: It's just like using a specific class name.

Dave: Or DT published.

Chris: Yeah.

Dave: And I have not syndicated.

Chris: I'm a little skeptical on using a prescribed set of classes like the value that that brings. I mean I guess the value is IndieWeb cred, but I don't know. Is that real?

Dave: Yeah. Yeah. Well, for me it's like those are the first to go in a refactor because I forget what they were doing in the first place. [Laughter]

Chris: Right.

Dave: It's like, "Why did I?"

Chris: I could see it being a little bit like--

Dave: Which H guy?

Chris: If you're going to style a button that has opened up a div somewhere, it's your requirement to put aria-expanded true on it, right? As you well know.

Dave: Yeah.

Chris: It's kind of cool to use that attribute then. Don't have another attribute that says, "Expand it or open."

Dave: Right.

Chris: Just use the ARIA attribute. You had to use it anyway. I could see that, like, "Just use H entry." You had to use it anyway for your IndieWeb cred.

Dave: Right, so I should just be using H entry. I am not. Oops. I'm not using it to the best of my ability. Then step two of two, level two, is add Web mentions, which this is where I'm stuck. I haven't done that. Then reply context is level three.

Chris: It's pretty hard. But to me, that does feel like a really beefy part of it. There are two sides. There's incoming stuff to your website, like, "Oh, my god. Jeremy talked about me. I'm going to have it automatically put something on my post with that data." That's hard but cool, I think.

Dave: Mm-hmm. Mm-hmm. Mm-hmm.


Chris: Adam Argyle is doing it pretty well on his site with lots of different incoming possibilities and stuff. You always lose me when you've got to use Bridgy, or whatever. I'm like, I don't want to, though. It seems good but too small of a... I don't know. It feels fragile, I'll say.

Dave: Well, for example, Bridgy got nuked in the whole Twitter thing, right? It didn't pass the--

Chris: They don't have Twitter anymore and, for a while, past me would have felt like, "Oh, that's lame then. That's where so much conversation happens. What value is this if it doesn't have that one?" I don't feel that way anymore.

Then there's the outgoing, too, which is even more interesting to me. When you hit publish, does it go to all of your social networks? Because then it's incentivizing you. That's the number one IndieWeb thing to me is that now I'm incentivized to do all of my content creation on my site but I'm still taking part in the rest of the Web. It's just that I didn't give my content to the silos. I kept the content. They can have the copy.

Dave: Mm-hmm.

Chris: Oh, well. A little bit of a tutorial. Not bad.

Dave: Yeah. Anyway, so it exists, It's cool. Anyway, I'm probably overdue to play with Web mentions.

Chris: If anybody can do it, you can do it.

Dave: Yeah, it's nice when you see some social validation on a post if you're trying to use that metric to establish your credit, your street creds, and maybe that helps.

Chris: To me it's lost data.

Dave: Yeah.

Chris: What happens? If you only do it the one way, the one way I just talked about, like I published a post and it was about this X idea, chances are these days if that hits Mastodon (because Mastodon is very techie) there's going to be some good replies to it on Mastodon, like, "Did you think about this? What about this?" Just good stuff.

Sometimes I'm like, "Ooh, I should screenshot that or copy it as a blockquote or something and put it as a comment on the post," if I have comments at all, because then that information isn't lost. To me, the beauty of Web mention is that it pulls that, puts it on the post automatically so that it's never lost. That that becomes part of the canonical post.

Dave: Well, mine is all going to be like, "Hey, typo. Hey, typo. Hey, typo." [Laughter]

Chris: Well, it's your database, so you can delete them then.

Dave: Bye. No typos in my version.

Chris: Typos were on purpose, actually.

Dave: It was an engagement hack. [Laughter] Due, that's a t-shirt. "Typos are my engagement hack." And it spells engagement wrong or something.


Chris: That's an excellent idea.

Dave: It's good. Maybe we'll do a shop here.

Chris: Yeah.

Dave: Because I could also do a "Sundays are for RSS" t-shirt. I think that would be good.

Chris: Oh, that's a nice one. Yeah. Yeah. Even "Just build websites" is a classic.

Dave: Yeah.


Chris: This is a great piece of follow-up. Who knows how many episodes it was ago, so, sorry. But this Matt writing in with a little story about Ultimate Guitar. If anybody is... It's not even just a guitar site.

It's just tabs and chords and lyrics, too. So, if you have some song you're looking up, like, "How does that Pearl Jam song go?" or whatever, there's a real high chance that Ultimate Guitar, if you put that song chords at the top of your search, is going to be the one that comes up. They must just get an ungodly amount of traffic.

Dave: What's a Pearl Jam tabs? I'm sure it has the chords. But then is it just like [mumbled singing]?


Chris: [mumbled singing]

Dave: Don't call me....


Dave: Yeah.

Chris: Pretty....

Dave: Is it just one word? Yeah. [mumbled singing]

Chris: [Laughter] Maybe that's tabbed out, too, and herbs and gerbs.

Dave: Yeah. Just lots of Unicode. Lots.

Chris: Mixed feelings on the site. Sometimes I'm like, "This site is great. I'm glad it exists. There's so much good, important musical content on here. I'm glad somebody is doing it."

If you bite the bullet and sign up for pro, it does get a lot cleaner. It has actually kind of useful features. I'm like, "Okay, fine."

Also, there's a bunch of dark patterns on it. It's not that good. It's very easy to look at the site and be like, "I can think of five things to clean up this page in two seconds."

Dave: Yeah. Yeah.

Chris: I'm like, "Please, God."

Dave: For sure.

Chris: Mixed feeling, right? Matt writes in. He's like, "Okay. A bunch of years ago," he has all these same feelings about Ultimate Guitar. Is learning how to build websites and is like, "I'm going to come up with a better one with a better guitar tab experience. Superior to Ultimate Guitar."

But then experiences the real world of building Web products, so he makes this. Even his first prototype, he says, "It's janky, not responsive. It's this two-tab website." He enters it into this competition -- he lives in Australia -- and comes out as one of the top ten emerging music technologies at an Australian music convention. Pretty cool, right?

Dave: Awesome. Yeah.

Chris: Yeah! I think so. Damn right. This area does feel like it needs some disruption. And it's weird that you don't... It seems like you don't see newcomers in it all that often. Whereas if you look up, as I was earlier, Markdown collaboration apps - or something - there are 600 of them - or something.

Dave: Yeah.

Chris: Whatever. But you don't see tab sites all that much. But he says, "But someone from a record label pulled me aside at one point and explained that hosting tabs is a logistical nightmare. It isn't the same as playing music live or playing music at a public venue where there's some kind of blanket law. Instead, you need to have an individual license agreement with each artist whose tabs you are hosting.

"My understanding is that Ultimate Guitar was the only company to organize a bunch of lawyers to sort this out back in the day, and now they have a huge mote as a result and no one else can enter the space. You may recall 10 to 15 years ago that there were a heap of guitar tab sites. They all disappeared around the same time. This is why Ultimate Guitar openly has dark patterns and general shittyness on the site."

So, there you go.

Dave: Hmm...

Chris: Matt is just one guy, but it seems like a pretty plausible story to me and jives with the experience I had with tabs on the Web.

Dave: Oh, let me just pen a letter to the FTC about this monopoly.

Chris: Yeah, that's you, Dave, saying there should be more fricken' lawsuits in tech with stuff like that.

Dave: More lawsuits in tech.

Chris: Yeah. If Apple is getting sued, let's sue Ultimate Guitar, too.

Dave: Yeah. Well, run everybody through the ringer once or twice. [Laughter] It's a little ridiculous.

I mean artists do get money. You know what I mean? As an artist, you have the right to publish your own tabs, right? If somebody comes along and is like, "Here's the tabs. I made them up tonight," that's in theory lost revenue to you. But it's just the way music has changed.

That's just not how it works anymore. Somebody is going to steal your stuff. Your stuff is stolen the minute you put it out.

Chris: I'm not sure how I feel about it. If you made a website, like you went to a museum and you cataloged all the colors used in the paintings, and then you published, like,, do you have to have an agreement with the painters to be like, "You used orange in that painting. Can I tell people that?"

Dave: Yeah.

Chris: It seems similar to that. You used the G chord in this song. Can I tell people that?

Dave: Right.

Chris: It seems like, "Yeah, of course you can tell people that." But... I don't know. It does feel different, like you said.

Dave: Could I have ChatGPT write some tabs for a very famous British pop band called--

Chris: The Schmeedles?

Dave: --the Boogles, the Schmeedles, and the site is just called Guitar Schmabs, and every band is just Schmud, and then every song has some degree, 15% Schmud, so you can work out the difference in your head? But it is purposefully royalty-free or fair use.

Chris: Jeepers Creepers. Yeah. Schmirl Schmam.

Dave: Schmirl Jam is one of my favorite, and they kind of Schmir their own vocals, lyrics anyway. But yeah. Nah, I don't know. I'd be curious.

Yeah, it's funny, man. It's funny what makes things good, like guitar tabs. Right? The reason we like music is because we share music. We pirated music on tapes and stole them off the radio and gave them to friends. That made music good and popular. Then we stole a bunch of MP3s, and then we gave them to people. Then Metallica was like, "Don't do that!" [Laughter] Surprisingly, Metallica.

The thing that makes it good is the openness and the sharing of music, right? The free-flowing nature of it. But then it gets kind of weird and locked down and a bunch of ads and spam. Suddenly, it becomes not so good.

I'm all for artists getting paid. But it's just such a... It's interesting.

Chris: It's one of those huge unsolvable problems, kind of. I wouldn't say unsolvable. It probably does have solutions. But they are tricky. It's just so easy to feel both ways at the same time.

Dave: Mm-hmm.

Chris: Be like, "Oh, it's just music, man. Let it be free." How are you going to lock down something like that? It's just sound waves, yo."

Then people being like, "Yeah, but I work really hard on that. My whole life is dedicated to it. If you say that all that stuff should be free, that means I don't get to exist in the world? That sucks."

Dave: Yeah. Yeah or your sound waves sound like my sound waves, so you owe me money. That's also interesting to me as somebody who has played four chords before. [Laughter] It's really... Yeah, it's tough. Yeah.

I was in a conversation about the right to repair, about farmers are hacking their tractors because John Deere makes you pay money to get a software update to change your transmission - or something like that. It sort of stinks for a farmer because you're like, "I need to plow a field, but instead I have to take it down to the John Deere shop. Then they have to hook it up to the machine. They charge me a $200 diagnostic test. Then I can get the transmission. But I knew it was the transmission the whole time." Otherwise, it won't start because it has the wrong part in it.

There's this whole thing of, like, they're pirating the software from Ukraine because people in Ukraine are like, "I'm not going to the John Deere thing. I'm just going to write software to fix my own tractor." It's just kind of cool. I like that, just that idea that you can have the right to repair. Maybe you also have the right to guitar tab, and you have the right to the Schmeedle anthology. Yeah. We'll see.

Chris: Well, thanks for all the follow-up, everybody. We have a little bit more of that. We'll try to sneak it in future episodes when we can. Get some guests going again here pretty soon. But we get feedback both ways. Some of you all like the Dave and Chris special.

Dave: Yep. Even if we just say wrong stuff for half an hour, you'll tune in, and we really appreciate that.


Dave: All right. Thank you, dear listener, for downloading this in your podcatcher of choice. Be sure to star, heart, favorite it up. That's how people find out about the show.

Follow us on Mastodon. That's the good one. And join us over in the D-d-d-d-discord, Thanks to everyone who joined recently. It's been very fun and nice, so thank you.

And Chris, do you got anything else you'd like to say?

Chris: Oh... [mumbled singing]