507: To Do Tree, TypeScript and JavaScript, RSS Favs, PWA-holes, and Sound Notifications

Do you even metaverse? Dave's got GitHub issues, building in 3D for the web, and should you always write in plain text files?


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.

Time Jump Links

  • 00:55 To Do Tree
  • 07:18 Sponsorship: Notion
  • 08:23 TypeScript in JavaScript
  • 17:01 What does Dave like in the RSS reader?
  • 21:20 Do you metaverse?
  • 26:20 PWA-holes
  • 28:26 Dave's GitHub issues
  • 34:25 Sponsor: WordPress
  • 36:16 NFT Hype cycle
  • 39:31 Ezra Klein Interviews Ted Chiang
  • 40:48 Building 3D models for the web
  • 46:51 Write plain text files

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, a podcast all about Web design and development. I'm Dave Rupert and with me is Chris Coyier. Hey, Chris.

Chris Coyier: That's right. I am here. What's up, Dave? How ya doin'?

Dave: Oh, you know. Just hanging out, doing the things, shillin' the code. [Finger gun shots] Just doing that day and day out.

Chris: Yeah.

Dave: Having a--

Chris: Have you written code today?

Dave: Uh... technically, I guess I've edited some comments. [Laughter] Added some to-dos to a file.

Chris: Okay.


Dave: Scott Tolinski over at Syntax.fm, he has a YouTube, right? We have a YouTube. Everyone has a YouTube. Scott has a good YouTube that's been going on for a long time. He was talking about this utility, a VS Code plugin extension called To-Do Tree. I use To-Do Tree a lot. It's basically a thing, and it'll go through your code, your project, and it'll find everywhere you wrote to-do something.

Chris: To-do, yeah.

Dave: Or fix me, or I think there's another one, like hot fix or something. There are sort of some keywords it'll highlight.

Chris: Yeah. That's neat. I'm seeing it. Then it becomes a thing in your VS Code that has them all in there. You can just click and just see what's up.

Dave: Yeah, and I think there's even a little -- oh, I thought it used to give me a little thing in the bottom bar, like, "You have 9,000 to-dos, buddy." [Laughter] It's not a big deal, but I was just looking at it today. We have this form file. I just was like, "Hey, look. There's a to-do. How many do I have?" I have eight to-dos in this file, so it just was sort of like a really big hint for me, like technical debt, like I've kind of let this one pile up, this one big form on the site.

I was just like, "Oh, shoot. There's kind of a lot going on here I need to kind of get through." There's a bunch in my test directory, like, "This test was failing because of some weird import issue with Jest," which I think we talked about a couple of episodes ago.

I'm just kind of like, "Oh, maybe I could go through here and clean up some of this, or finally start." I guess it's a signal to me that I need to sort of tackle this file. This file has a lot of problems, so I need to start going through it.

Anyway, it's just a cool plugin. Scott was talking about it. I thought I would just mention it because I used it today. I was adding to-dos, and I was like, To-Do Tree is really fricken' good.


Chris: It is good. Man. Literally, as you're telling me about this, I just clicked the button to put it on VS Code, and it's just great. It's just exactly what you think it's going to be. It finds all your to-dos and makes a file tree of where they exist in your repo.

Dave: Mm-hmm.

Chris: Then you can just go look. We've been trying to be cautious about this, actually. It's been a while now, at CodePen, where we kind of don't let to-dos through PRs.

Dave: Ew... Oh, yeah.

Chris: If it's a to-do, then do it.

Dave: Mm-hmm.

Chris: Because sometimes to-dos aren't really to-dos. They're like discussion or maybe somedays.

Dave: Mm-hmm.

Chris: Or refactoring that probably isn't appropriate for this PR. Maybe that is a to-do then. But then it shouldn't just sit there forever because the worse thing is a to-do from like 2015. You're like, it really wasn't a to-do then, was it? You know?

Dave: Mm-hmm. Yeah. Yeah. Totally because one of the ones I did today was like, "Use Vue X?" instead of this weird data passing we are doing. We were setting a variable.

Chris: Sure.

Dave: But it's like a semi-global-ish variable, so I'm sure I'm--

Chris: But a to-do there is, "Talk to," "Have discussion about using other state management possibilities," or something.

Dave: Right.

Chris: You know.

Dave: I mean the discussion is entirely with myself, but yes it is the discussion. [Laughter]


Chris: I do think they're appropriate sometimes. I had a component that I had to use in two places, and I had to bring over custom styles.

Dave: Mm-hmm.

Chris: I put the exact same chunk of CSS in two places, so the to-do was, "Deduplicate this."

Dave: Right.

Chris: I committed it but knowing that before I even mark that PR as ready for review that I need to fix that.

Dave: Yeah. Cool.

Chris: I think that's a good use of a to-do.

Dave: Yeah.

Chris: I really literally need to do this. [Laughter]

Dave: Well, and I think that's a great place for it, too. Because then you're saying you can get that PR up. You can get people looking at it. You just know you're going to deduplicate it. It's like a nice little, "Hey, people can look at this but I'm going to fix this piece of it. I'm going to deduplicate this part of it if you wanted to check it out," or if you're trying to get a preview branch up or something like that.

To-Do Tree is cool, too, because it'll highlight the word "to-do" and you can choose a custom highlight color. You can make it hot orange, you know, ShopTalk orange just to be like, "Boom! Fricken' fix this!" you know? Right now, it's kind of doing a grayed out, but you know that's like where your normal to-dos get lost in a comment. It'll highlight the word "to-do," like a custom highlight on it. Pretty efficient for just how everything--

Chris: Right. I have one of those plugins, too. In my theme at the moment, it's super bright orange.

Dave: Okay. Yeah.

Chris: [Laughter] The to-dos.

Dave: Yeah.

Chris: But it's funny because it's really good at catching them. I think there is some other keywords that it catches.

Dave: Mm-hmm.

Chris: It's not just that particular to-do. But then it doesn't catch it in JSX. I'm like, "Oh, come on." You know? You had one job. You know?

Dave: Yeah.

Chris: Anyway.

Dave: JSX is not standard. It needs to move over to Web components. What? Who says?

Chris: [Laughter] What?!

Dave: Somebody came in singing a song. Oh, man.

Chris: [Laughter] Some clown just went by.

Dave: People crashing in singing songs. Yeah, I just like that you can add different grammars into To-Do Tree, too, like fix me, or you're like, "Fix it. Fix." Stuff like that.

I find those useful too. You're like, "Hey, this was a hot fix for this issue. [Laughter] It's probably not super thought through, but this was the thing that got us out of this jam." I find that pretty useful.

Chris: Yeah.

Dave: When I'm commenting stuff.


[Banjo music starts]

Dave: Today's episode is brought to you by Notion. That's notion.so.

As you probably already know, if you listen to this show, I use the heck out of Notion. I call it my second brain. I put everything in Notion. I track projects, the side projects I'm working on. I track actual projects like work projects. I track goals for my year, my weekly habits. I track all kinds of things.

I blog in Notion. I collect links for my blog in Notion or anything I read and want to jot down some thoughts. I log books and keep track of little tidbits and snippets. I collect quotes in Notion.

I use the heck out of Notion. It's an excellent place to just dump all your thoughts that you don't want just spinning around in your brain and get it onto the digital paper. Notion is great for that. It has a lot of flexibility and customizability with the database structure.

It is just wonderful, and I think you'll love it. If you love organizing your thoughts and getting all those problems out onto a tool, this is good for you. That's Notion, notion.so. Go try it today.

[Banjo music stops]


Chris: While I have a tab open for visualstudio.com, Microsoft's product, it reminds me that we had a discussion in the old Discord.

Dave: Mm-hmm.

Chris: Yesterday, about a proposal for a type syntax in JavaScript from someone named Daniel at Microsoft. Pretty interesting. I'm not super-duper qualified to talk about all that is TypeScript, but this comment -- this is like, "We don't want to change the syntax of JavaScript." Although, that was what the discussion is. It's like, "Yeah, but do you?"

Dave: [Laughter] Yeah. Somebody - who was it? Darn it. I'm failing on finding it.

Somebody was like, "It's kind of just a trojan horse for TypeScript in JavaScript." Right?

Chris: Right. Why would that be so bad? I don't even understand, really. But the point of this is it's literally literal comments.

Dave: Mm-hmm.

Chris: Sometimes in the form of JS Doc. I think there are probably more details in the full proposal, but it's kind of like use comments because then that's just regular JavaScript syntax. You don't need a compiler if you don't want to use one.

Dave: Mm-hmm.

Chris: Which I think is kind of cool. The second you're writing actual TypeScript, that's not valid in the browser.

Dave: Mm-hmm.

Chris: You have to have a compiler, like Sass.

Dave: Yeah.

Chris: It's not CSS. It doesn't work in the browser.

Dave: Right. Right.

Chris: But this would be like bringing some of the advantages to something that you would normally need to compile, but you don't need to compile it.

Dave: I'm into it. Give me anything. I don't know. [Laughter] I don't actually use types, leverage them that often, but there are times where you want it, like this function takes a number. Otherwise, I have to do parselnt on every single thing that could get passed into it.

So, like, "This takes a number." That would be very nice, but it sounds like this is optional, right? So, it would only be in my code editor that it would pick up on the type assertion. JavaScript, the browser, in the browser, would never be like, "Dude, it didn't get a number. Sorry. We're out." Right?

Chris: Yeah.

Dave: It would just be sort of--

Chris: Maybe there's a CI thing or something, though.

Dave: Maybe even dev tools could just flag that, "Hey, you said this is a number and it got it."


Chris: Right. Wouldn't you say the most value of even TypeScript comes from the code editor itself?

Dave: Yeah. I think so. It's autocomplete, but then it knows the shape of the interface - or whatever - or what's coming in. Yeah.

Chris: Let me just read the FAQ here. Does JavaScript need static type checking? Given how much effort organizations and teams have put into building type checkers and adopting them, the answer is yes. Perhaps not every developer will reach for static type checking and that's okay. That's why this proposal makes type annotations entirely optional.

However, the ecosystem demand for using types is undeniable. TypeScript has done a great job of demonstrating this. It's gained widespread use with broad signals that people want to keep using it. It's opt-in, but it has a major presence in the ecosystem and these days, TypeScript support is seen as a huge advantage for libraries.

The question is not whether JS should have types, but rather, how should JavaScript work with types? One valid answer is that the current ecosystem provides sufficient support where types are stripped out entirely ahead of time, but this proposal may provide advantages over that approach.

Dave: Yeah. If they can keep some kind of -- it sounded like it was optional, right? That's great.

Chris: Optional. Yes.

Dave: I think optional is good. I think what's weird is, am I going to have to cut untyped bundles for older browsers? [Laughter] That feels weird.

Chris: Hmm.

Dave: How does that work? I don't know. I think I'm into it. I think it would be nice to have this.

Part of the reason I don't use TypeScript currently right now is I just don't want to set up the whole tooling stack. It's pretty efficient, actually, but I just don't want to add more tooling to my setup.

Chris: Yeah.

Dave: Then TypeScript is kind of like an all-in, all or nothing thing, right? Once you rename the file TS, you're just in.

Chris: I actually don't know. Can you just not type variables if you just want to?

Dave: Yeah.

Chris: I'm so ignorant, I don't even know the answer to that.


Dave: I think there's the generics idea in TypeScript where it's just like this is type any, so it'll take whatever you throw at it. Yeah, I don't know. I think it would be cool. I think there's some value in, "Hey, this is what this accepts. This is an optional parameter, and it's a string. This is something, and this is something."

Then at the end of your sort of thing, saying this returns a bullion. That's pretty helpful, too, even just from an annotation sort of sense. I'm into that.

You can do this all in JS Doc, and I've been trying to do that. I find JS Docs, docs about JS Doc to be miserable, so if somebody could write a better--

Chris: [Laughter] the docs for the Docs are no good?

Dave: Dude. I want to define an express route, and there are 2,000 opinions. It's just frustrating. That's where I get into it, too. Sometimes you're not just dealing with -- and maybe this is the whole reason. Sometimes, you're not just dealing with a string or an integer. You're dealing with an object that has a bunch of stuff in it. And so, I don't know that this types in JavaScript would actually help me today because most of my issues are prop types and stuff like that. This accepts props, and props is a big object, or maybe it's HTML things that shoot in. But then the props can be kind of whatever, but some of them have to be true and false. Some of them have to be numbers. Some of them have to be strings. Yeah, I would love to know how this maps to object-based development, like passing big objects. But maybe that's....

Chris: Yeah, that's the thing is that, is that possible or not? I actually don't know.

Dave: Yeah.

Chris: Isn't part of the beauty of it when you really get advanced and TypeScript is the custom types that are representative of your code base's fancy types? Objects, essentially.

Dave: Yeah.

Chris: Then how do you represent that as a comment? Certainly, you can, but is that part of the goal of this, too, or is it starting out more chill than that? I don't know.

Dave: I don't know. Yeah. I mean I don't know. I support it. I just think it's useful enough and I like the idea that it's optional, so just give it to me. I don't know. Please. Something. [Laughter]

Chris: [Laughter]

Dave: I kind of drag my feet on TypeScript because I was like, I don't want to buy in, 100% buy in on that and do all the tooling and then JavaScript comes out with its own half-baked weird thing. I'll let JavaScript come up with its thing and then do the tooling. I wait for the proposal and then start using the thing.

Chris: Yeah.

Dave: I don't skate too far ahead, I guess, is maybe my problem.

Chris: Yeah. The new Dave.

Dave: New Dave. New Dave is--

Chris: Very chill.

Dave: Not into WebKit properties. [Laughter]

Chris: [Laughter]

Dave: Old Dave loved them and broke his neck trying to make it work in other browsers. New Dave doesn't do that.

Chris: [Laughter] Well, what do you think, Dave? How's your clicking on your star button going in your RSS reader? Is it time for another edition of--?


Dave: Another edition of What Does Dave Like?


Chris: Do you star any of those Verge articles about--?

Dave: I've got some Verge articles. Notably, backlon, Dieter -- Not Dieter Rahm -- Dieter from the Verge. He just signed off. He's going over to Google or something, working on Android or something like that.

Chris: Hmm.

Dave: He was kind of a long-time editor there, and so--

Chris: Yeah.

Dave: Yeah.

Chris: The new Verge will be... [Laughter] Maybe. I don't know.

Dave: Yeah. No, it's a big shift change. Well, then I'm sure you're up on the whole Vox shift - famously.

Chris: Strike? Or is that not what you mean?

Dave: Well, there was a strike and a union thing, but then I'm blanking on all these names.

Chris: I know Trei left. He was a big Vox guy.

Dave: Trei left. He was a Vox founder. Then there was -- what's his name? -- Brian, the YouTube guy who was on Polygon for a while. Oh, my gosh. BDG.

Chris: Is he gone, too?

Dave: Brian David Gilbert, BDG. Yeah, Brian. I think that's it.

Chris: There's always turnover, right? We'll be all right.

Dave: Yeah.

Chris: Yeah, I instinctually typed in The Verge, though, after the Apple announcement stuff. I do trust big tech media when it comes to, like, "Oh, I forgot to watch the keynote thing, and I want to read one article for each thing that Apple released."

Dave: Mm-hmm.

Chris: That's still what I do, just type in The Verge, and they'll have my back. They did a good job with it, I thought. I'm not on their RSS feed, though. A little too fast moving for me.

Dave: It's 40 articles a day, so there's too much.

Chris: A day?!

Dave: I think, yeah.

Chris: Oh, gosh.

Dave: Twenty, at least. You blink for a week and there are 400.


Chris: Yeah, you've got to do what you've got to do, but maybe they should make some kind of "Best of" feed, or something, or a feeds per -- like I only care about certain things.

Yeah. Good job. I starred one the other day from they found Ernst Shackleton's ship, which is amazing if you're a little bit of an Antarctica freak like me. I've never been there. I just really like reading about it in books. It's just such a - I don't know - special place on Earth.

Dave: Mm-hmm.

Chris: Then I devour anything that comes up. When there's breaking news about Antarctica, that's a pretty special thing.

Ernst Shackleton, a long time ago, 100 years ago, was leading expeditions to the South Pole and succeeding in them. Then one time his ship was -- I think it was -- I'm embarrassed I don't know if it was on the way or leaving an expedition. It's dangerous down there with ships because the icebergs. You can only get in there for a small period of time. The icebergs need to have broken up enough for you to do it.

Two icebergs kind of smashed his ship and sunk it. Some of the people lived and made this crazy 800-mile walk.

Dave: Wow.

Chris: Some of them died and all that. But then where is the ship, right? You'd think shipwrecks are fun to explore, find, and all that. They didn't because it's a little hard to find ships under Antarctic waters, but they found it. That was the big news.

Dave: Wowzers.

Chris: 106 years later, they found Ernst Shackleton's ship. How cool is that?

Dave: That's incredible.

Chris: Pictures and everything.

Dave: Yeah. It looks like it just got smashed between two icebergs, huh.

Chris: Yeah.

Dave: There's photos from it, like early camera photos.

Chris: Yeah.

Dave: Wow. That's cool. Different world back then.

Chris: No doubt. Endurance. How cool.


Dave: Wow. That's impressive. Do you metaverse, Chris? Do you follow the metaverse?

Chris: Do you just mean the abstract idea of a social environment in VR?

Dave: Yeah. Are you interested? [Laughter]

Chris: I mean I'm not -- I was convinced, as were you, I think, to buy an Oculus because there's a Web browser in there and I feel like we cover Web stuff. I feel like it's prudent for us to understand what the Web is going to do in that space. But am I wildly compelled? No. Do I put that thing on my face every day? No, I do not. Once a week, maybe.

Dave: Once a week? All right. Well, I don't know. I like this article. Facebook is obviously a big player here, right?

Chris: Yeah.

Dave: I don't actually... [Laughter] I'm not into Meta's vision, but it was just an interesting tech demo just where they verbally described -- this was over on The Verge. They verbally described things. They were just like, "Hey, show me an island. Then put a picnic table on there. Put a stereo. Play some music. A couple palm trees over here."

The Ai started just piecing together this island for him.

Chris: From the voice?

Dave: From the voice, yeah. It just kind of intuited what they were meaning. I'm sure there was a bit of a script. [Laughter] It could have just been keywords that triggered the next frame in the application, you know, the next if statements or whatever. You know?

Chris: Right.

Dave: But it was all--

Chris: A compelling demo anyway?

Dave: Sort of. I mean it was slow as heck.

Chris: [Laughter]

Dave: But it was very - I don't know. It was interesting just from a content creation perspective. People just say what they want and then the thing shows up. That's a thing I've wondered about websites for a long time. If you had the grammar, if you had the design system built, could you just be like, "Give me a header with three links, a row of three features below that," and it would just build out the page. I think that'd be kind of fun territory to explore.

Chris: Oh, yeah. Be like, "Make them round, actually."

Dave: Yeah. Make the images round.

Chris: How about an orange. No, darker orange. You know? Then, okay, let's do two equal columns here. Stop. A row of cards here. Make it horizontally scrollable. [Laughter]

Dave: Plain English Web design.

Chris: Why not?

Dave: I don't know.

Chris: It seems easier than palm trees.

Dave: Right. Then you have a dictionary. With a design system, you call things certain things. Maybe you could build a website that way and you wouldn't even have to use Web flow. You just talk to the browser and it builds you the page. Then you say, "Ship it." Then it goes up to Netlify. There you go.

Chris: [Laughter] Yeah.

Dave: Netlify can pay me for that idea.

Chris: Deploy to... Yeah.

Dave: Yeah.


Chris: Yeah. It wasn't too long ago we were talking about that. Probably not voice style, but that infrastructure as not just code because when I think of infrastructure as code, I think of one file at the root that's like, "Provision all of this."

Dave: Right.

Chris: But more sprinkled into your code, be like, "Oh, this is a little function, and this one is going to need a 15-minute Lambda because it's doing something beefy." You just tell it that, almost like JS Doc. You know? At the top of the thing.

Dave: Yeah. Yeah. Yeah.

Chris: Then maybe that's the future that your whole app is kind of sprinkled in that, so when you go to deploy it, it just knows what kind of infrastructure it needs. It's not being specific about cloud provider, but it's being specific about what it needs.

Dave: Yeah. No, that would be kind of an interesting future. You're like, "This could be a function," or "This is a long function." What is it, SLAs? You're like, "This needs 99% uptime."

Chris: Yeah. Put that in there. Sure. Why not?

Dave: Some sort of YAML file or something that communicates sort of the SLA. Then it's like the server, the host, just figures out what they're going to do with that. That might be kind of cool. Or how to handle it.

Chris: Yeah. Here's my routes file. This is going to get hammered, so I need to load balance this over three. I don't know. I guess that's being specific about needs, but maybe that's the point. It can be a little specific if you need to.

Dave: Yeah. You describe the traffic or something like that. I don't know. It might be interesting.


Chris: There was a little news recently about -- I think Furch was the first guy to break it, but then I don't know if Apple confirmed it or not. Of course, Jeremy Keith weighed in, yadda-yadda.

The point is, there's a version of iOS that has some scaffolded APIs for Web notifications that don't work. [Laughter]

Dave: Okay. Okay.

Chris: I don't think they wrote docs for them or anything, but that's interesting, isn't it? You know? It's not that we're all clambering to start getting more notifications on our thing, but it's a gap. It's a reason that you would not build your app natively on the Web is because, on iOS, you just can't send notifications. Some apps just need to do that, so if that actually comes true, that's filling one of the big PWA holes (we might call them).

Dave: [Laughter] PWA holes. Hey, PWA-holes.


Dave: You bunch of PWA-holes.

Chris: [Laughter]

Dave: Yeah. That would be a huge one. What's funny -- I'm on the fence, right? Because what was it? Firefox or somebody -- this may be Firefox's user base, but they learned 99% of people say no to notification prompts.

Chris: Yeah.

Dave: 99% of people don't want notification prompts. Now, is that Firefox users who are probably more concerned about security and privacy? Probably. There's a bias there.

Is it, "I don't want The Gap to be able to send me notifications"? Yeah, it's a lot of that.

Chris: It's a lot of that because I'm sure some percentage of those--

Dave: Or some crappy news site I went to.

Chris: Those 90% are like, "Yeah, except for my Delta app. That one needs to because I need to know when my gate changes at the airport."

Dave: Right. That would be a huge one, right? I'm sort of like maybe we don't need notifications, or we need a trust-o-meter, if you actually are delivering value or something. I don't know how you heuristic that, but then I think about GitHub. Right? Can I tell you my problem with GitHub right now?

Chris: Yeah. Go on.


Dave: I love GitHub, but can I tell you my problem right now?

Chris: Beef it up.

Dave: I commit code. It goes up. GitHub actions runs. Peter-peter-peter. Builds a docker, or whatever it takes forever.

Chris: Yeah.

Dave: Like seven minutes sometimes for an action. I am on YouTube. I am so far gone by the time that finishes, and I never get a notification that it finishes. I only get a little green checkmark that shows up. You know?

Chris: Hmm. You would maybe opt in to notifications.

Dave: Oh, if I could get my computer to just yell at me, like, "Hey, a deploy happened," or "The GitHub actions all passed." Because sometimes it's my coworkers shipping stuff, and then I'm like, "Oh, okay. Well, they just shipped a line of code, so the deploy has to wait until that's all done." I can't just tweet out the link or whatever.

Anyway, I would love to know when that's done, and I've been thinking about this. Can I tell you what I've been thinking about?

Chris: Please.

Dave: Sounds. Do you remember sounds on websites? A long time ago, we used to put sounds on websites.

Chris: Sure. We did. The Web audio API now, arguably it's gotten even better.

Dave: It's gotten better to get sounds on a website, but it was abjectly horrible back in the day, right? It was just full awful all the time, right? Every website you went to was like [quivering voice] - God sounds, and then it was like bloop-bloop, bloop-bloop, bloop-bloop.

Chris: Yep.

Dave: Every time you hovered a link. It was awful.

Chris: Yeah.

Dave: It was bad for accessibility too.

Chris: Yeah. "You've got mail." You know?

Dave: "You've got mail." Yeah. But on this GitHub action, I would love just a ding. If I could get a ding, like the Southwest ding, give it to me. I would love that.

And so, I've been wondering. Maybe it's not something we encourage every website to do. You know what I mean? Because it was full on horrible. But maybe it's something you--

Could you have an extension and websites offer an open API - sort of? Like a sound effect event pops up, and so you're like sound-effect:action-completed, or something like that. Could we build out this lexicon in this plugin sphere where these open actions happen and then this plugin could hook into these actions and, bong, action completed? That's what I want. I want a sound when the action completes. Even if it's in a fifth level tab or something, whenever this page fires that event, send me the action or I don't know. There's probably 100 new Feedbin articles show up. Bong! Give me sound effects actions or (what would you say) sound effect events. You know?

Chris: Yeah. Events.

Dave: That don't do anything but that I could hook into through some plugin or something, I think that would be really cool. I don't think it exists. I think it would be a lot of effort to get people onboard, but wouldn't that be just so cool? [Laughter] I don't know.

Chris: Yeah.

Dave: You just get sounds. You can play sounds, and then maybe you can assign different sounds to different websites and things. We could bring sounds back to the Web, but it would be totally optional is sort of what I'm getting at. You don't just hook into -- I don't know. I don't want every GitHub thing to make a sound. I just want actions. How do I get that?

Chris: That seems totally doable to me. It seems doable.

Dave: Well, I'm also just trying to think of what else would I want. Twitter, a website, you might want a [whistle].


Chris: The unique situation here is that you have the GitHub tab open in your browser.

Dave: Yeah.

Chris: And you probably just always do. I think there's some nuance into the types of notifications. I think there's one that can pop up, like a desktop style notification, already.

Dave: From GitHub?

Chris: That's not -- yeah, that I don't think is new. I think that's the old style of notification. It's just a regular notification, not a push notification.

Dave: Yeah.

Chris: Whereas the push notifications work even if the tab is closed. In your case, maybe that would already kind of work because you have the tab open anyway, so just send one of those and trigger a ding. You could probably write a browser extension to do this. Wait for the green checkmark, shoot the notification, shoot the ding.

Dave: Yeah.

Chris: Not that I'm trying to make work for you, but I bet it's possible without waiting for APIs.

Dave: See, that would be cool if I could just find the event. You know I've tried to look into configuring notifications and stuff. But GitHub notifications aren't like something built. It's like a pull request happened or an issue was filed. There's not really a build completed.

Chris: No. Yeah, you'd have to be on the exact right URL that has that kind of live updating pipeline of stuff.

Dave: Some people may hate this too. This one, it's like if 200 people work at your company, it'd just be going bonkers. But you know, you're just kind of always like, "Did a deploy happen? Did a commit?" You know? Can somebody just tell me when that happened and I don't have to just watch a command line or whatever? That'd be cool.

Chris: Mm-hmm.

Dave: That's my thing.


[Banjo music starts]

Chris: This episode of ShopTalk Show is brought to you in part by WordPress.com. You know somebody told me not long ago (and it stuck with me) that there's this perception of WordPress.com where it's like, "Well, it's like WordPress on training wheels." [Laughter]

I think that sticks to some degree because there's a little bit of nugget of truth for it. It's really, really easy. It helps you get started a WordPress site. That's kind of fine.

In fact, I have some sites on it that are using it very much on purpose because of that, because I want none of the work behind setting up a host and a deployment strategy and a Git repo for it and all the stuff that I do want very much so on some bigger projects. But sometimes I'm just like, "I just want to blog about something," or I need a really simple store front, or I need a really simple brochure site - or whatever. WordPress.com excels at that those things.

But it does not have to stop there. It's not like there's some point where you have to be like, "Welp, gotta leave," because this is what I want you to know is that they have plans, starting at the Business Plan, which is $25 a month, which puts it in the kind of mid-tier hosting category anyway. As soon as you're on that plan or higher--and there's only one higher plan anyway--you get SFTP access and direct MySQL database access to that site. Meaning that you could have a site that is a lot like a WordPress host anywhere else that you can work locally. You can spin up your WordPress locally and work on it and have a Git workflow and set up a deployment strategy that sends the site up.

Then WordPress.com is your host. You're still installing plugins and manipulating and doing anything that really (pretty much anything) WordPress can do. It's just WordPress.com is your host for that site then. A lot of people don't know that, I feel like, that it can just be your regular WordPress host as well.

Thanks for the support, WordPress.com.

[Banjo music ends]


Chris: What else did you--? Was that your star or my star? We went off the rails.

Dave: Where did we go? We started at the boat. That was yours, the boat. [Laughter]

Chris: Oh, it's your star, though.

Dave: The 107-year-old boat.

Chris: Yeah.

Dave: Oh, boy. Yeah. It's my turn? I get to choose one?

Chris: Yep.

Dave: Oh, man.

Chris: It has to be something you favorited in an RSS, Dave.

Dave: Oh, I was talking about metaverse. Okay. I'm kind of going way back here.

Chris: I know I starred -- I had to skip over a lot of them because some of them are like, that's just for me. Even the Antarctic one was a little wildcard.

Dave: Yeah. Mine's anti-NFT, anti-NFT, anti-NFT....

Chris: [Laughter] Did you see the tweet from Mr. Doob? That was another one from the Discord that had the Twitter volume of searches for NFTs just fallen off the map there.

Dave: Fallen off the map. The hype cycle might be done, but you know people keep releasing NFTs.

Chris: Yeah.

Dave: That's cool. I think Papa John's has an NFT now, a sponsored tweet.


Dave: No. Yeah, there's... Yeah. Did you see the Kottke article? Kottke is really good. Where Voldemort is laughing in different languages.

Chris: No. Oh, yeah, I saw it, but I didn't watch it.

Dave: Oh, it's worth it.

Chris: That doesn't count.

Dave: It's just funny how there's all these -- people have these - I don't know. Different countries have a weird creep-o laugh, basically. It's all like [creepy laughs]. [Laughter] It sounds like -- uh, yeah.

You know... Let's see. I'm kind of out, man. Let's see. All these are pretty niche, like Kickstarter. I learned this thing called Zeen Month, which is all these tabletop RPGs kind of create all these games. But because of crypto, it's kind of a weird situation because people didn't like that.

Chris: Hmm.

Dave: Yeah. I've not been doing a good job favoriting. I apologize.


Chris: That's right. You've got to because there's no impulse to do it other than shows like this and possibly scrolling back through them to remember something. It used to matter when you liked something on RSS because other people would see it. There was kind of a social layer to RSS. I know I'm talking about Google Reader, but it could come back. You know?

Dave: Yeah.

Chris: I think Feedly has some abilities to see friend's stuff, but I would like to have more of it because it's of high interest to me.

Dave: Well, it's all just like what are you finding and what are you finding interesting. I feel like that's a bit of a lost thing on the Web. You know?

Chris: Yeah, unless you take the time to blog it. But that's the stuff you found really, really, really interesting. There's a layer just below that that's like, even if it's a passing interest to a friend, I kind of want to know. You know?

Dave: I started trying to collect these things and do posts, kind of like Kottke does posts.

Chris: Yeah. I saw you've been doing that lately.

Dave: Yeah. I did a couple of them and then I fell off. I'm basically chucking it all in Notion and then I can tune Notion to be like, "Show me any links I added in the last month." You know?

Chris: Yeah.

Dave: Then there's been kind of a few. I listen to this -- that's kind of too deep for this show, but [laughter] The Ezra Klein Show, as a podcast. But Ted Chiang was on The Ezra Klein Show talking about why sci-fi legend Ted Chiang fears capitalism not AI. It was just kind of about this whole sort of universal basic income stuff.

AI is, you know, if we let the future be defined -- and this isn't some anti-capitalist greed, but if we let it be defined by what makes money, we're in a weird situation. [Laughter] You know? We need to kind of watch out for that. I thought that was really good.

Chris: Hmm.


Dave: Then there was this cool -- I shared this in the ShopTalk Discord. There's been a couple of cool tools for 3D model stuff. What was the first one? I have it here somewhere. There's this one called Bloom 3D where it's a Web app, but it's basically just a thing where you have a flat space. Then you just start drawing on it. Then it creates a 3D model. Then you can build that. Then you could export that. Then you could drop that into an A-frame thing. It's kind of cool. You could really model out a house or something.

Chris: Wow!

Dave: A tree house or something you want to do.

Chris: Easily, just like the palm tree over here thing.

Dave: Yeah. It's just kind of cool. I don't know. I think it's cool, these tools are coming to the Web. I didn't have to download an app to do it.

Then there was another cool Web app. It was almost like Figma for 3D.

Chris: Hmm.

Dave: It was called -- it was a model pun and I'm forgetting it. Spline, that's what it was.

Chris: Is it like a Three.js alternative?

Dave: Spline.design. I think it uses Three.js, or whatever, but these are more in the creation space.

Chris: Okay.

Dave: This was Spline.design, and then Bloom 3D. They're kind of like tools for creating 3D scenes and stuff like that. Because it's on the Web, you know it works on the Web.

Chris: Yeah.

Dave: One problem you can get into if you did all this stuff in Blender or something and then you finally exported it all, it might not work super well. You know what I mean? You might have a few problems getting that 3D stuff online. It might be too big.

Chris: I just don't know it well enough. Yeah, there are lots of Three.js stuff on CodePen and how it gets there is not always people just using raw Three.js APIs, right? Is that the case that Three.js is kind of like you can just use it directly, but there's an awful lot of tooling on top of it?

Dave: Yeah, exactly. You can write Three.js, for sure, 100%.

Chris: Mm-hmm.

Dave: But I think you're going to regret it.

Chris: [Laughter]

Dave: It's a lot of -- you know. It's just code. It's so much. Then you get onto past that one level. It's like shader code and stuff like that. You know there's a high level of code is not visual whatsoever. A lot of tools are built around that and letting you, some sort of declarative way, more declarative way to get things into the Web.

Chris: The results are usually so impressive. When you see 3D demos on the Web, I'm always like, "Wow!" You know?

Dave: Yeah.

Chris: You've been playing with it for a while.

Dave: Talk about metaverse.

Chris: Maybe I'm just too detached from it -- yeah. But is there a thriving gaming community that produces three dimensional games that are ultimately Three.js powered? It just doesn't seem like there are that many games in it for some reason. It's always like, "Here's how you zoom through a tunnel," or a forest.

Dave: Yeah.

Chris: But it's not a game.

Dave: Yeah, I think there's been a few New York Times sort of 3D explanations, which are kind of cool to visualize and stuff like that. I think it's another tool in the toolbelt. You don't use it just because you want to be 3D. You use it because you're using it to enhance your content.

Chris: Mm-hmm.

Dave: I guess you can make it a showpiece but use it as an illustration.

Chris: [Laughter]

Dave: Sort of a vibe.

Chris: You can sprinkle it.

Dave: I think sprinkles go a long way. I don't think you need to be all 3D all the time. I think you can just be like this little part of the website is 3D.

The cool thing about A-frame, which I like, which I think they're in the Firefox limbo, still. I don't know what's going on with that project, but it still gets recommended quite a bit.

What's neat about it is you can program this thing, and people see a 3D scene in their browser. Then there's a little, "Click this if you're in VR." If you're in VR, it'll put you in the whole scene, like go all around your head sort of thing.

Chris: Yeah, that's super cool. Yeah. You see the little 3D glasses in the corner kind of thing. Flip it on, and it starts doing whatever it does.

Dave: It's kind of--

Chris: Is it still as simple as show one scene or left eye and a different one to your right eye, and your brain makes it happen?

Dave: Yeah, basically it's bicameral. In a 3D scene, you have a camera. In a video game, you have a camera attached to the player, model, or whatever. Then for VR stuff, you basically have two screens running the same scene twice, and it's really close to your eyeballs. But then you have two cameras that kind of have the right distance between them. That creates the effect of the stereoscopic effect.


Chris: Yeah. I've got one starred here from Derek Sivers. You know that dude?

Dave: Mm-hmm.

Chris: I think of him as the CD Baby guy, but that's [laughter] a long time ago now.

Dave: Oh, yeah.

Chris: There are probably some listeners to this show that are like, "I never owned a CD. What are you talking about?" [Laughter] But I don't even think they were a big player in CDs, overall, but they were in the CDs, like you could sign up for CD Baby and get your own band's thing published, which I did at one time, which I thought was so cool. Then they had partnerships with Apple and stuff, so if you got a CD pressed at CD Baby, that put you on iTunes, which was pretty cool.

Dave: Whoa! It's the hack.

Chris: He's always been -- you know, he's a musician himself, but kind of a philosopher and whatever. He's the guy that's been talking about the Internet for a long time, I think.

Dave: Mm-hmm.

Chris: He blogs, you know. It's sive.rs. A recent post was called "Write plain text files." The whole point of it was, "Y'all, kids on your Notion and your Evernote, those will die. My text files will live on, and they're offline, and there are no dependencies, and I can do all kinds of processing on them. Indy text files are the way to go for your personal knowledge base kind of thing, or whatever."

Dave: Mm-hmm.

Chris: It's compelling because I'm always of two minds. I'm like, "Hell, yeah, man. Simplicity rules." You know?

Dave: Yeah.

Chris: No build process for your notes. My gosh. You're right. Those things are going to live forever. It makes me want to get my pom-poms out.

But also, I use the crap out of Notion, and I have for a lot of years, and it's made business stuff great for me. [Laughter] I'm like, I don't actually live by your advice in any way. I still use the fancy tools.

Dave: Yeah.

Chris: I don't know. I feel like I agree and then don't use the advice at all. [Laughter]

Dave: [Laughter] I think it works if it's your system. But expecting other people to abide in your system does not work.

Chris: Hmm.

Dave: If you showed up to CodePen one day, or if I'm hired by CodePen -- new hire, Dave Rupert walks in, and you're showing me around the virtual office. You're like, "Okay. This Dropbox with a bunch of plain text files is everything you need to know about the company."

Chris: [Laughter] Yeah.

Dave: I would quit day one.

Chris: [Laughter] I'm not going to explore your text files. Get out of here.

Dave: None of it is tagged. None of it is search indexed.

Chris: Yeah.

Dave: None of it is findable. It works as your personal system, but it's not very efficient for people who need to find information. Right? I'm the same way.

Chris: Yeah. There are no links. There are not even links. You need links.

Dave: Yeah, not even links to other files, other ideas. No. Even Markdown would be a little bit superior to plain text files.

I had that problem with my own blog in Markdown. I had plain text files. But guess what. There were too many of them and, all of a sudden, it was really hard to deal with. Not saying Derek doesn't have a lot of blog posts on his blog, but it's probably like he cracks an idea, works on that, and puts it into the published queue. There's not a big -- he doesn't have 80 drafts going all at once - or whatever.

Chris: Yeah. Maybe.

Dave: Which is maybe a personal problem on my end.

Chris: [Laughter]


Dave: But I'm figuring that out. Yeah. I had to do another system. But that said, I do have a situation. Notion sponsors this podcast. They're great. But I had a situation where I was trying to move stuff around and I accidentally deleted a whole database. Thankfully, it wasn't my blogging database. But then it was like, "You need to use the enterprise feature to restore all these files." It was enough stuff. I just had messed it up pretty good.

Chris: Oh, yeah. The history to go back far enough?

Dave: The history to go ... the enterprise. I found a way, from my phone, clicking five buttons, I could restore the document I trashed.

Chris: Ooh.

Dave: The child documents or whatever. But I guess my only criticism, I wish Notion made it easier to move whole databases or nest whole databases. I understand why there's probably a technical limitation against that. But I wish there were more ways to do that.

But having that data loss feeling is a bad feeling. You know what I mean?

Chris: Yeah.

Dave: The "I lost it!" This was my learning, like where I keep track of all the online courses I do, so I have notes littered everywhere.

Chris: Yeah.

Dave: I was just like, "Ah, nuts!" That's maybe a lot of stuff I learned that I don't check on, but stuff I learned at some point. Thankfully, it's not gone. Thankfully, I'm okay. But I was kind of in the uh-oh zone for a bit. Yeah, I don't know. It would be -- so he's right, I guess, is what I want to say in the terms of those will not exist - or something - even just a data loss and a big uh-oh or whatever.


Chris: Yeah. What's that mind mapping one that's Markdown based that a lot of people like that we talked about before?

Dave: Mermaid.js?

Chris: No, that's for diagrams. It's just a Markdown editor, but you can make tags. Then you click the tag and it zooms out to other spots on your tag.

Dave: Oh, Obsidian.

Chris: Yeah, there you go.

Dave: Obsidian, yeah, yeah.

Chris: That seems like a middle ground where it's mostly just text files, but the UI of the editor itself adds these kind of mind mapping features to it.

Dave: Yeah. No, I mean that might be a really good way to kind of have it.

Chris: I always wonder if that's how really organized, like Jason Snell or somebody from Six Colors, that always seem to have their entire -- they're like, "Oh, Apple released this little Mac Studio thing. Well, that reminds me of, in 1996, they had this thing that also happened to be released on March 10th." They have all this metadata about releases and stuff.

Dave: Stored in their brain.

Chris: Is it in your brain--?

Dave: Yeah.

Chris: Or do you have the personal database of information about these things that you just click some links and it's mind mapped out to have all this data?

Dave: I mean it's totally possible.

Chris: Sports guys, they know every college player.

Dave: Oh, yeah. That's Jim Collins. He's a freshman year student from Punxsutawney, Idaho. He has--

Chris: "Yeah, but when they played Idaho State last week, he dropped three passes." You're like--

Dave: [Laughter] Yeah. You're like, how -- or do you only report on this team? How do you know that? Yeah. Texas, too. Texas high school football has followings and stuff like that. People are like, "Oh, did you see that kid from Lufkin the other day? Yeah, he threw a 900 yard pass." Whatever. It's just--

Chris: I stopped watching it after Friday Night Lights, you know?

Dave: Oh, yeah.

Chris: That was the last season I watched.

Dave: [Laughter] I mean it's like Friday Night Lights every Friday here.

Chris: Big deal. All right, Dave. That was good stuff - To-Do Tree.

Dave: Let's wrap it up.

Chris: [Laughter] I can't wait to....

Dave: To-Do Tree. We talked about one develop thing. We talked about metaverse. We talked about Dave's anti-NFT feeds.

Chris: [Laughter]

Dave: Then I think that's all. We hit all the bases. If you have a question, send it in to ShopTalk Show. We could probably take some time to answer. Yeah.

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 Twitter, @ShopTalkShow, for 16 tweets a month.

We have a new Youtube, new-ish. It's been there for a month or so now. We'll have a link in the description. You can go to that YouTube. The link name is actually going to update, so I think we finally hit the vanity URL point.

Chris: Oh!

Dave: Very exciting.

Chris: Whoa!

Dave: We'll get that.

Chris: Amazing.

Dave: We're graduating. We're graduating. So, thank you. Over in the D-d-d-d-discord, patreon.com/shoptalkshow. Chris, do you got anything else you'd like to say?

Chris: Hmm... ShopTalkShow.com.