Search

581: DevRel, Musical Mics, Social Sharing, and 100 Years of WordPress

Download MP3

Dave calls a quick Luro branding meeting, some thoughts on DevRel, Chris tries to figure out musical instrument mics, follow up on WordPress from a previous episode, Chris' journey through the social graph options, 100 year hosting with WordPress, and the introduction of a new segment: Happy Project Share Time.

Tags:

Guests

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 🧡

Transcript

[Banjo music]

MANTRA: Just Build Websites!

Dave Rupert: Hey there, Shop-o-maniacs. You're listening to another episode of the ShopTalk Show. I'm Dave Rupert and with me is Chris Coyier.

Chris Coyier: Sounds about right.

[Laughter]

Chris: That's how I feel today.

Dave: Maybe a good voice to do the whole show in. Oh, boy.

Chris: Nobody would have any trouble, I'm sure.

Dave: No feedback whatsoever coming through the pipes. That's great.

Chris: Oh, gosh. Yeah, it's a rough morning today. One of those kid puking in the middle of the night, all hands on deck cleaning stuff up.

Dave: Hmm...

Chris: It's been a minute since we've had one of these, but it was good. You have two kids -- even harder -- but one was enough. A lot of, like, "You know what? I think we'll throw away this bedspread."

Dave: [Laughter] Yeah.

Chris: It's been puked on enough times.

Dave: We don't need to do this one. Yeah.

Chris: Yeah. [Laughter]

Dave: I don't know. It's weird because when I get sick, I want to be treated like a baby. "Hi, baby boy. Are you okay?" [Laughter]

Chris: Yeah.

Dave: "Is everything fine?" But when my kids get sick, I'm like, "Toughen up, you chump."

Chris: Yeah.

[Laughter]

Dave: It's not fair to them. It's not, but it's more... It's just like, "Hey, guys. What's the problem? I know you're not feeling well, but do you really need me to get you water? You couldn't do that or plan ahead?"

Chris: Yeah.

[Laughter]

Dave: Anyway, yeah.

Chris: What was the plan? Nah, I get it. I get it. Rough. Rough stuff. You know?

Dave: Yeah.

Chris: When I get sick too, my wife, God bless her, is just like, "Really?! Today?!" You know?

Dave: [Laughter]

Chris: The sympathy years are over.

Dave: Passed? Yeah.

Chris: For sickness, anyway.

Dave: The honeymoon is over, and it's more just like, "You are going to have to just figure it out yourself." Yeah.

Chris: I always pictured myself like I fell out of a third-story building with a spire going through my lung or something.

Dave: Yeah. And she's like--

Chris: The whole family would be like, "Come on. Right in front of me like that? That's not nice."

Dave: Yeah. She's like, "You have a runny nose. You need to blow your nose." That'll fix the problem. Yeah.

[Laughter]

Dave: I'm very much the same.

Chris: Wonderful. Then I slept. She needed to sleep with mom, which is cool. But she's like, "You know what? You should sleep downstairs. The bed is too small for us these days. Let's do it."

Dave: Mm-hmm.

Chris: Now I have the worst... What do they call it? Crick in your neck.

Dave: Crick in your neck, yeah.

Chris: What even is that word? It's reserved exclusively for sleep. You don't have a crick in anything else.

Dave: No, you don't. No, you get a cramp. But it's a crick when it's in your neck. [Laughter]

Chris: Yeah, it's a crick.

Dave: It's weird. Yeah.

Chris: Yeah. It's the southern for creek. So, the Web development is still kicking along okay.

00:03:03

Dave: There's still Web development going on. Hey, we're working on kind of a Luro relaunch. I thought I'd try some branding on you. Are you interested?

Chris: Yeah. I mean I've seen a little sneak peek stuff. It's getting a little more dark red and stuff. Yeah, go on.

Dave: Yeah, but I wanted to really hit a tagline.

Chris: A tagline.

Dave: Yeah, so like--

[Sunrise Expedition, by Joseph McDade plays]

Dave: Luro. Eat fresh.

[music stops]

Chris: Yeah? Yeah.

Dave: Yeah.

Chris: That was kind of the post-Jared era Subway, I think.

Dave: Oh, okay. Let me try again. Let me try again.

Chris: That's making me think of turkey sandwiches. Yeah.

Dave: Let me try again. Luro! Get in the game!

[heavy metal music played]

Chris: I think that might be Xbox, but I--

Dave: Oh, okay.

Chris: [Laughter] "Get in the game." Nike, maybe? Let's do it.

Dave: Luro! The best a man can get.

[upbeat music played]

Chris: [Laughter] It's either deodorant or hungry man.

[Laughter]

Dave: Okay. All right. Hey. I'm just workshopping. I'll take it back. Run 'em back. I won't put any of these out.

Chris: That's the shave, Gillette, yeah. That's good.

Dave: Yeah.

Chris: Go on. One more, like, "Ba-da-ba-ba Luro." You know? [Laughter]

Dave: Yeah. That's good.

Chris: [Laughter]

Dave: A little jingle might be good, too. Yeah. Kind of like--

Chris: I'm feeling it.

[Laughter]

Dave: Luro tough! That's like--

Chris: [Laughter] That's....

Dave: Yeah, that's a good one. Huh? Yeah? Oh, well. All right.

Chris: Well, anyway, I will say that it's doing a good job of tracking your components. Is that homepage out yet? Was that today?

Dave: No, it'll be... Yeah, maybe close to after when this show comes out.

Chris: One of these days.

Dave: We've got a new homepage, new, big feature happening, and a new... And I'll probably start doing some livestreams kind of just showing off all the stuff we have.

Chris: Yeah.

Dave: We built and all that.

00:05:03

Chris: I'm going to be in the same boat. We're going to be dev rels. We're going to switch jobs, both of us, for a little while.

Dave: Dev rel. I'm Dev Rel Dave. Which is actually a pretty cool name. [Laughter]

Chris: Yeah. It kind of works, though, doesn't it?

Dave: [Laughter] Dev Rel Dave is a good TikTok name.

Chris: I think of all the... Remember when CSS Dev Rel was like that's weird? That's a job now.

Dave: Mm-hmm. Mm-hmm.

Chris: You know I'm thinking of people like Adam or whatever. But before that, it was Jake and whatever. But then you look back, and almost everything I know about what happens in browsers are due to those people.

Dave: Mm-hmm.

Chris: That's so vital.

Dave: It's a weird thing. I see a lot of posts about, like, "What's the value of dev rel?" And a lot of dev rel teams are getting cut in all this downsizing stuff. I'm just like, "That's your marketing department. Why are you getting rid of them?" [Laughter] The only reason people use this is because they've talked to this person and you're getting rid of this? This seems a tragic misstep on the path to success.

I don't know. It's hard to... I'm not privy to anyone's books or whatever.

Chris: Yeah. Isn't that the thing? It's easy to armchair some stuff like that. And you're like, "But do you know for sure that it doesn't work?" People are like, "Um... I don't know."

I'm sure it's speculation. I mean the metaphor comes from sports, right? You're like, "I would have done things differently if I was the quarterback." I'm like, "You're not, though."

Dave: Yeah. "If I was the coach of the billion-dollar franchise, the Cowboys, I would have played that new freshman quarterback," or whatever.

Chris: Yeah. Especially when you have the benefit of hindsight, too. You're like, "Um... Yeah, you would have. You would have seen that coming, I betcha, buddy."

Dave: Yeah. Yup. Why didn't he think of that or she think of that?

Chris: Right.

Dave: It's just like, "Why didn't they think of that?"

00:07:01

Chris: I'm noticing I'm a little hot here. I'm going to pull... Oh, my gosh. It's so... I'm already real low, though. I wish I understood sound, Dave. My gosh. Not to segue this too hard, but I have all these different mics. I think they're just fun to own. They're fun to look at.

I'm what I hoped I never was. I'm not like this with music. I don't pine after lots of instruments or really fancy ones or have discussions about my 18 guitar pedals and stuff. I've always been like, "Whatever instrument you have, you know, I like to play it on the porch. Let's play together." You know?

Dave: Mm-hmm. Mm-hmm.

Chris: I just want to make the music. I felt like sometimes, some people, they hide behind the knowledge of the metagame rather than the game itself - or something like that.

Dave: Yeah. It's very Web development-y, not to pull this back. I want to hear more about microphones, but it's very, like, "Top five jQuery plugins." I'm sure there are top five guitar pedals you need to own.

Chris: Right.

Dave: To sound like Pantera.

Chris: And perhaps the very best people, they know both.

Dave: Mm-hmm.

Chris: They're really into their equipment, and they're excellent players. Right? But that's the very highest echelon of person. It's very hard to become an incredibly skilled musician, so some people, instead of that route, they're like, "Well, I have the ten pedals. I can talk about the ten pedals."

Dave: Mm-hmm.

Chris: It's almost easier to level up your gear sometimes. Yeah, I think you can hide behind that in tech, too. Be like, "I bought all the nicest stuff. I pay for the nicest services. But my startup didn't hit," or whatever. It's like, well, there's more to it than that.

Dave: Mm-hmm.

Chris: But I think I've become that a little bit with recording equipment. Not that I have millions of dollars worth of stuff, but I do own five microphones. I'm always trying new webcams because I kind of want... At some point, I'm like, "Shouldn't I be able to buy myself out of this problem?"

Shouldn't I be able to buy a microphone, plug it in, put an acoustic guitar in front of it, strum it nicely, put my headphones on, and have it just sound [tongue roll] brah... have it just sound amazing?

Dave: Yeah.

Chris: I can't do it!

Dave: Hmm...

Chris: Anything I record just sounds like garbage. I feel like, okay, it's time for me to stop hiding behind the equipment and the foam panels and whatever and learn what it takes.

Dave: That's hard. But...

Chris: Yeah.

Dave: Important in dev rel, here, when we're on the cameras and the mics all the time. But isn't it weird, after 12 years of podcasting, you're still like, "I don't know if I'm going to be too high or too low. I'm either blowing out or I'm way too quiet. There's no middle. I don't know how to get in the middle." You know? It's weird.

What are you doing to solve your equipment woes? Are you taking a class?

00:09:51

Chris: I've been YouTubing a little bit, but I'm not, really. What I kind of want to do is... Here's the problem, Dave. I want to buy myself out of it again is my implementation.

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

Chris: Can I pay somebody local to come over to my house, take a look at all my equipment, and be like, "Here's what you're doing wrong, bud"? Hire an adult service. I hire a handyman. Can I hire in-home education for my...? It's tempting to take a real class, but then you're using their crap. But I want to learn on my crap in case there's a big difference.

What if you take a class and it's all Windows? I'd be like, "Well, I'm sure I learned some fundamentals, but that doesn't help me immediately."

One thing I've learned a little bit, I wonder if I'm in the right direction here. I use Garage Band or something to record instead. Then it has so much EQ-ing stuff available that's not there when you just hit record in QuickTime player or something or even Audio Hijack or something. You're just getting really raw audio. I wonder if what takes it from this tinny, guitar ting to wong is the post stuff that you do.

Dave: Hmm...

Chris: It's counterintuitive because you'd think good input audio is already pretty close to what you want. At least I have that somewhere in my head. Then all the post stuff is just tweaking it and polishing it and stuff. But I wonder if that's not true.

I wonder if there's more to you're intentionally getting this really raw sound. Then to get it to sound like you want, you have to twist all the knobs how you want it. You know? I don't know. I just don't know enough. I feel very ignorant about it all.

00:11:30

Dave: Yeah. Early, like in my 20s, I worked at a camp all summer long, and I literally put every dollar I made into a Martin dreadnought acoustic guitar.

Chris: Still got it?

Dave: It's a D16RGT. Yeah, it's actually being fixed. I think I need to bail it out. It's being fixed by the guy who fixes Willie Nelson's guitar, which is kind of cool.

Chris: Yeah. He's got a lineup, I suppose. You're going to get it back in 2025 kind of thing?

Dave: Maybe. I turned it in last year, and then I think he just never called me. I don't know, so I'll have to figure out what's going on.

Chris: Yeah. I'd get that baby back.

Dave: But anyway, so I spent... And I'm probably going to spend as much, but I spent like $1,600 on it or something. And that's an expensive guitar, but that's the low end of expensive guitars.

Chris: Nice Martins, for sure. That's pretty low-end, yeah. I would have thought you were going to say $5,000, $6,000, or something.

Dave: Yeah. No, I mean it was... I think it was on sale or whatever, but it's the lower end of a nice, expensive guitar. It sounds beautiful to me. It's like rosewood, just beautiful.

Chris: Ooh...

Dave: It sounds great, but I put a pickup in, and that sounded horrible, like the piezo, just tinny, and I--

Chris: Did you put it in the sound hole? You didn't screw anything into it, did you?

Dave: I have the sound hole... No, drilled through the bridge and put a piezo in the bridge.

Chris: Well, that's still a little nerve-racking, but at least you didn't cut a hole in the bottom of the guitar.

Dave: Yeah, but it's not electric. It's like a passive pickup.

Chris: Yeah.

Dave: But it sounds really bad.

Chris: It just sucks.

Dave: Yeah, so when I play through an amplifier or whatever, if I go through a board or whatever, to some PA system, it just sounds awful. Or into a computer or whatever.

I didn't buy the guitar that is coming through this electric system, so I spent all of this time trying to get this... finding the right pedal. I eventually found one. It's like the D'Addario pedal. I doubt they even make it anymore. But it gives me the right amount of control, but then I slowly learned I had to mic the guitar and plug in through, and so I'm double-tracking the guitar just to kind of get a good mix of clean signal and room sound.

Chris: Okay.

Dave: Anyway... But it's hard. And banjo, I know you play banjo. That thing is just so loud right out of the gate. It can probably bust through a bunch of mics.

Chris: It is. Yeah, I've been trying to do multi-track stuff just for fun a little bit, and I can't just record a guitar and then just switch instruments in my hands but leave all the rest of the settings okay and hit record again because it'll be all wrong, just gain-wise.

Dave: Yeah. Yeah. Well, and that's... Yeah. Then what? You show up to your actual job and try to hop on a Zoom call and your Zoom call is wrecked because you have your playing through your guitar mic or your amp. Yeah. Anyway, it's hard to keep. You almost need a dedicated computer set up just for the guitar tracking and stuff like that.

00:15:02

Chris: Yeah. Now I feel like I'm saying things definitively when I just got done saying I don't know anything; I don't know what to do. Anyway, it's actually kind of fun because I'm starting to break through just a little bit and have some more understanding.

Dave: Good. Yeah.

Chris: I have the space and equipment for it, so I've handled... The dream can happen now.

Dave: Good.

Chris: Not that I even have... It's an idea. I am a little cart before the horse. Like we say with websites on this show, "Just built websites." You've got an idea. Just build the dang thing. That's how you're going to level up. Having the idea is the motivation you need to get through it. Whereas if somebody was like, "Well, just take this course," or whatever, sometimes you can peter out because it's not your idea. It's somebody else's idea.

Dave: Yeah, you have to follow somebody else's sort of vibe for a bit.

Chris: Right.

Dave: Yeah.

Chris: Fortunately, I have all these songs I can draw from. I'll be like, "I'll record that one. That sounds kind of fun." But it would be different if, like, "I've written a song. I love it. I really want to share it with the world, but I'm going to take my time because I want it to sound really good." That'd be cooler. [Laughter]

Dave: Yeah.

Chris: I don't have that at the moment.

Dave: I think some of it is sort of like "Just build websites." It's like get ten out. That's what I tell people for podcasts. Just record ten episodes and then refactor your setup or figure out what you're doing wrong or whatever.

Chris: Right. Right. I couldn't agree more.

"Oh, you've got a good idea for a kids' book?" This has come up for me. "Write ten more then."

Dave: Mm-hmm.

Chris: Your first one is a cool idea. Maybe that gave you the spark. But I feel like you're not going to... Now I feel like I'm talking about Ira Glass - or whatever - but that seems like the kind of thing he would say. It's only through this attrition of making art that you get anywhere because your taste should be higher than what you're able to produce. You know you're in trouble if you record your first song and you're like, "Oh, my God am I good." [Laughter] "This is incredible." Your taste is either a little low or your taste calibrations are off.

Dave: The great American prophet Bruce Springsteen said, "You can't start a fire without a spark." Okay?

Chris: Mm-hmm.

Dave: I'll just do an affirmation for everybody. You can't start a fire without a spark.

Chris: I got tingles.

Dave: Yeah. I mean that's it. You know? Can't start a fire... Can't start a fire without a spark.

Chris: He's so good, isn't he?

Dave: This gun's for hire. You can hire me, Dave Rupert, to consult. [Laughter]

Chris: Can you still go see Bruce Springsteen or is he done?

Dave: I don't know.

Chris: I would go see him.

Dave: Yeah.

Chris: What a treasure. [Laughter] White guy likes other white guy. Sorry. A little predictable, but I do like him.

Dave: [Laughter]

00:17:54

Chris: I just saw Barbie last night, so it's on the mind a little bit.

Dave: Ooh... All right. I didn't see Barbie yet. I didn't see Barbie yet, so.

Chris: It was good. There's a moment where... It's been a month, people, so I'm not ruining it too bad. There's a moment... Ken is not doing good in Barbieland.

Dave: Oh, no. Oh, no.

Chris: Ken only has a good day through the lens of Barbie. If she says hi to Ken, that's a good day for him. But otherwise, he's pretty sad and life is not great for Ken in Barbieland. But then he comes to the real world, and it's like the real world is great to Ken.

Dave: Oh, really. Okay.

Chris: He comes, and he's like, "Look! These men are just doing great." You know? He's seeing CEOs shoot finger guns at each other, and he's like, "I'll have a job, please." They're like, "Okay."

Dave: Okay. [Laughter]

Chris: Yeah.

[Laughter]

Dave: Oh, man.

Chris: I mean it turns a little darker from there, but that was my favorite part of the movie is when he finds out just how great the patriarchy is for him. It was just funny. You know?

Dave: I think I need to take a day off and just go see movies. I think that's kind of on my future, near future.

Chris: Yeah. If it feels--

Dave: Just like, "You know what? You know what's going to happen is go see movies."

Chris: Hey, Dave. You've only got to pay for one. You know? Just stay in there. [Laughter]

Dave: Hey, good trick.

Chris: Classic highschooler style. Yeah.

Dave: Yeah. [Laughter]

Chris: Life hack. You buy a popcorn, they're ahead anyway. The movie theater was so small (when we got there), they had stopped checking tickets. There's a little crappy sign that says, "Go to the bar. Show them your tickets there." We walk in there, and we were like, "Oh, we've got to show our tickets." He's like, "I don't care." [Laughter] That's some small-town stuff here in Bend. He's like, "Do you want a drink or not?" There are plenty of seats.

Dave: That's funny. Yeah. No. Buy popcorn. Wear a black hoodie. You're invisible.

[Laughter]

Chris: Right. Just keep to yourself.

Dave: Yeah.

00:19:43

Chris: This episode of ShopTalk Show was brought to you in part by Notion. That's notion.com/shoptalk.

Today I'm excited to share that they just launched Notion Projects, which includes new, powerful ways to manage projects and leverage the power of their built-in AI features, too. Notion Projects combines project management with your docs, knowledge base, and AI, so you can stop jumping between tools and stop paying too much for them, too. Right, so a lot of project stuff. Love using Notion for projects. Really a sweet spot for Notion, I think.

Imagine you set up your project in Notion, one big projects database, and you can even break it into subprojects. That's what we do. Love doing that. Then you're assigning cards to individual projects. I just think of it as a card. It's really just an entry in a database. Call it whatever you want. You can move it around, and you can write whatever you want in there.

But some of the power of it comes from the ability that you can add kind of arbitrary pieces of data to it like a database is. It's freeform at some point. You can use it like a document and write stuff. But here's some of ours.

Here's a task card when I'm planning in CodePen. Who is it assigned to? One of many people or nobody at the moment.

How long do you think it's going to take in days? How many days did it actually take? Empty for now, but when we close it, we'll fill it out.

The dates, like when did it start, so we can kind of get a timeline going, which is a great feature of Notion. What's the status of it? Is it upcoming, a to-do? Is it blocked by something? Does it need a meeting?

Is it intentionally don't work on this right now? Is it started but paused? Is it in progress? It is completed? Don't go crazy with them, but I think it's nice to have some statuses there.

Is it attached to a particular release? Does it have a certain priority? So, a couple of levels of priority might help you pick some cards over other cards.

We have about twice that many, actually, because we do other stuff like connecting it to GitHub and what it's blocked by and if it has child tasks - things like that. Very, very, very useful, I just have to say.

Then let's say you're trying to describe that task. Why not start with some AI? Ask it to describe what you might need to do for that task (just to get your brain going). Then adjust it for that task. Super cool to have AI right at this moment.

Do your most efficient work with Notion Projects. You can try it for free today at notion.com/shoptalk (all lowercase letters there), notion.com/shoptalk. When you use our link, you're supporting our show. Go right now to notion.com/shoptalk.

[Banjo music stops]

00:22:31

Chris: Here's a correction from the WordPress show. We were talking about components and stuff and how PHP land didn't handle that particularly well. I would argue it still doesn't, really. Not that it's a bad language or anything. The front-end decided that this world of props was kind of the way, and attributes has just won out as a compositionally nice way to make stuff.

I was like, "It's so annoying that PHP didn't do that." It's kind of not true. It's like the basic, very basic include statement in PHP doesn't do it. But I think people have known this for so long.

There's a classic in WordPress that's been there just forever called get template part. Did I credit Russell yet? Russell Heimlich wrote in about this.

That's how WordPress wants you to get little pieces of PHP. That you can pass at least parameters to. A little different than attributes, but parameters are pretty close. Not as nice as attributes, I'd say.

Dave: Okay, so it's sort of a wrapper around like an import.

Chris: Right.

Dave: That also would do some kind of prop passing.

Chris: And you can name arguments in PHP, too, which is pretty close to probably what you want. You know?

Dave: Yeah. You know we had another question come in from Simi de Klerk, a fan of the show.

Chris: Classic question asker. Probably number one of all time on ShopTalk Show.

Dave: Certainly in recent.

Chris: Yeah.

Dave: He is sitting on the throne of question asking.

Chris: Very talented question asker, I'd say. Yeah, go on.

Dave: Originally asked the Python... oh gosh. I'm blanking on which ones they were.

Chris: Jinja.

Dave: Jinja and--

Chris: Ooh... This is tough. What was the other one?

Dave: Okay, whatever Jinja--

Chris: Flask.

Dave: Flask. Yes, you're right. So, he said, "Thanks for the answer on component libraries. But what's the difference between a component library and a templating language?"

Chris: Templating language? Yeah, that's a little more clear.

Dave: Well, this exact sort of thing is exactly what came to my mind. I think a templating language is going to be Mustache or Handlebars or Liquid. PHP is a little different because it gets into it's a whole language. It's not just a templating language.

Chris: Right. Twig, you'd use in PHP if you wanted just templating. Yeah.

Dave: Yeah, and so you have these... It's basically just to echo out variables, like title and it probably has a for loop. It probably has if statements. JSX would probably fall into this to some degree. It's a template language. A way to echo variables and a way to print them on the screen and then a way to do for loops and if statements would probably be sort of like the end. There are a few more things like currency formatting or something like that, sorting, stuff like that.

Chris: Okay.

00:25:56

Dave: Where it sort of blurs the line is, does that template language have partials, which is what this get template part is. It's a partial.

Chris: Right.

Dave: That you can pass variables or props into. I think Handlebars has that feature. You can create a handlebar partial and pass variables into it. That's where it starts getting... You have a component in Handlebars, but it's sort of like - I don't know - an extension of the template language that allows you to include a partial into your thing.

I would maybe say partials and components are different. I don't know. It's so dependent on that language framework, but that's kind of me. I don't know.

Chris: The philosophical thing is the second you make a little partial, is that a component? Have you just instantly made a component library?

Dave: Sort of. Yeah.

Chris: Is that actually the same thing?

Dave: You kind of have.

Chris: Yeah, especially if it's to be visualized. If it's a little date component, I guess you have.

Dave: Mm-hmm.

Chris: Yeah. But just because it's a separate file doesn't mean it's a visual component necessarily. If you looked at our whole system of "componentry," there'd be an awful lot of hooks and reusable kind of things that do data fetching and functionality and aren't necessarily a drop-down menu or something.

Dave: Yeah, kind of its own isolated logic machine, like a little state machine (to borrow from David ... metaphor).

Chris: Sure. Little ... component or an error boundary component or whatever.

Dave: Yeah.

Chris: Okay. All right. But that's interesting to think about because words mean things. It's good to know what you're talking about.

00:27:51

Dave: Yeah. I recently got through some videos from Google people and then Surma's blog. He has this post. It's kind of an epic opus.

Chris: Surma is blogging again?

Dave: Not really, but--

Chris: Yeah.

[Laughter]

Dave: His "Cost of Convenience" from last summer, I finally got around to reading it.

Chris: Okay.

Dave: He offers a really good, I guess, distinction between library and framework that I really liked. It's based on Martin Fowler, a computer scientist guy, his sort of view of it. But it's all based on the inversion of control, which is a computer science principle, like who is in charge, basically.

Chris: Mm-hmm.

Dave: This is what Surma says. "When I use a library, I slot the library code into my code." Does that make sense?

Chris: Yes, it does. Like jQuery or whatever. You call out to it and it helps you out a little bit.

Dave: Yeah, and so a framework, on the other hand, makes itself the center of the universe and offers slots for me to slot my code into. In a sense, a framework is where you write code that goes into that machine and a library is when that little machine fits into your code.

Chris: At the extremes, it makes so much sense. You're like, Next, Nuxt is a framework. I have to adhere to its rules. It would only ever make sense to use one of those.

This is happening to us at CodePen right now. Of course, we're working on 2.0. It's going to be amazing. We want to support all the tools that you would ever want to use and set ourselves up for the future of wanting to use more. Right?

Using more than one framework doesn't make sense. It's putting itself at the center of the universe. You just get to pick one of those. We're trying not to do that, generally. We're trying not to give constraints to you on what you want to do. But framework is kind of like, we've got to call it at framework. You only get one of those.

Dave: Mm-hmm.

Chris: But you could have ten libraries, so Lodash - or whatever - the classic example of that. It doesn't care how you use it.

Dave: Mm-hmm.

Chris: You just reach out and grab it. But where this gets weird is what about all the stuff in the middle. Is there stuff? What about something like React router? You just use it to help you out. It's just a little library. You pull it and it routes to the component you want to use. You could think of it like a library, but it's like, man, it's so foundational to everything else that you're doing. It's tempting to be like, "I don't know. I have to kind of do things how it does things, so it's kind of a framework, too." That's tricky.

Dave: Yeah. Yeah. I think there are things like Lit is a library. Right?

Chris: Yeah.

Dave: They call it a library.

Chris: You just use it. It just helps out with little bonus stuff for Web components.

Dave: Sprinkle it. [Laughter] But it creates lifecycle events for Web components. It adds a whole new render function.

Chris: Yeah. If you really lean into its way of doing things, your whole codebase is how Lit does things, so it's kind of a framework.

Dave: So, it's kind of a framework. Either we need a middle word or we need--

Chris: Framelib.

Dave: Framelib.

Chris: I don't know. That's terrible. [Laughter]

Dave: Got it right there. We didn't--

[Laughter]

Dave: It was just sitting right there for decades. Framelibs.

Chris: That'd be the kind of blog post that would probably get too many hearts. I almost don't want to read the comments on that blog post.

It's true, but it's also just talking for the sake of talking. I don't know if it'd get anywhere.

Dave: How about this? Here's the Hacker News' first, top-rated article.

Chris: Okay. Yep.

Dave: What the author doesn't understand is ... longest--

Chris: Yeah. You have to say Martin Fowler in the first sentence to get--

Dave: Yeah. Yep. Say that and then you'll be at the top, baby.

00:31:56

Chris: Oh, I can drag us down another rabbit hole if you want here.

Dave: Yeah.

Chris: Do rabbits even dig holes? God, when I say stuff on a podcast, it makes me become, like, "Am I saying something dumb?" But okay, let's call it a rabbit hole.

Dave: Now you've got me second guessing. Surely, they live in holes. We didn't just... English, we didn't just... [Laughter] We didn't just make this up. This seems ridiculous.

Chris: Yeah, unless I just have the wrong animal. You know? Is it a mole hole?

Dave: I'm going to say in the Seminole Monte Python work, Monte Python holy grail, that rabbit was in a hole of some kind. So, I'm going to say it's true.

Chris: Yeah. Okay. Rabbit hole. Yeah. Yeah, that's right. It's not drawing upon reality. It's drawing upon the fable.

Dave: Potentially.

Chris: Okay. Potentially. I keep going through different mental journeys with the dang social media crap because Twitter, I can't even call it X, but you kind of have to. I kind of want to draw a line in the sand, and I'm just going to call it Twitter because it's just more clear to me. X is just a letter. I just hate it anyway. And I hate Elon Musk, so I just can't.

Oh, my God. I just opened the stupid app and there's a tweet from him, and I can't even look at it. It's so stupid.

If I woke up tomorrow and they're like, "Ah, we're calling it. We failed, and we're going to shut this whole website down," I'd be like, "That's good for the world." I hate it. Right?

But at the same time, I tweeted. We're a business too. Like you said the other day. It's probably not great for Luro that Twitter is dead. Not the best timing. It used to be absolute ground zero for Web designers and developers talking to each other. Not so much anymore.

Anyway, I do one tweet from CodePen the other day and just put a little video of this cool, little Pen people do. You know I try to do that a couple of times a week, just be like, "This is an awesome Pen. You should see it," and I'll attach a video to it.

It got like 6,000+ likes. That's awesome for us. That's great visibility for CodePen. So, I'm hesitant to just be like, "Never touch it ever!" because it's not just the ownership. There are good human beings still using it, too. You're talking to them, so it's kind of like, "Ugh!" Anyway--

Dave: Mm-hmm. Mm-hmm.

Chris: All that aside, I'd like to just put the bare minimum of wiring so that when I write on my blog, I'm syndicating it out and I wouldn't hate it if Twitter was still part of that stuff. But you know they dinked with all their APIs and now every API thing I used is busted for doing that.

Dave: Mm-hmm. Mm-hmm.

Chris: But not all of them, right? I still use Buffer for CodePen, and Buffer still works with Twitter somehow. They've cut a deal or they just pay the crazy fees or whatever it is to make it work. There's some way in, still.

There's a WordPress plugin called X-poster. They've already rebranded to X. You have to put in your app password, your app secret key or your API key, your app secret. There are four things you've got to copy and paste after doing all this work and stuff. I just tried doing it yesterday, and it still doesn't work. There's something wrong with it.

There's one called FS Poster that claims to be able to do it. It's even more complicated to sign up. I couldn't get it working.

It's like, "Gees. I've been a developer my whole life. I can't even fricken' get this stupid API thing to work."

They say, Twitter says, there is a free API that allows you to post 1,500 posts a month, which is more than I'll ever need. So, theoretically, this should work. It doesn't work. Absolutely obnoxious, but that's one thing on the list.

I also want it to go to Mastodon. I have my LinkedIn active, and I only recently realized that they even have a feed-like model on LinkedIn. I didn't even know that. But they do and, apparently, people get good engagement there. It's good for professional blah-blah-blah-blah-blah. LinkedIn is on the list.

Threads is brand new. Might as well post over at Threads too. I have a decent amount of followers on there because everybody that followed you on Instagram....

Dave: Instagram carries over, yeah.

Chris: Bluesky is new and upcoming. Those are all pretty simple Twitter-like things. They all have their own little communities that are building. And I'm not even trying to figure out how I uniquely integrate into all those. I just want to publish the title of the post, the featured image, and a damn URL to the blog post. I just wanted to be like, I syndicate everywhere. That is what syndication is.

Dave: Mm-hmm.

Chris: I send my crap out. You can follow it if you want or don't. Whatever. I'm just syndicating there.

I wanted to get it set up, but it's like, "My God!" There used to be a suite, like I use Jetpack Social. That's what it does. It posts to all these places. But then they never really supported a ton of stuff. Then they lost Twitter, too. It's kind of like, "Um... They don't really do it." They certainly don't do the new ones like Threads of Bluesky.

I find one that does support Threads, and it worked. I'm like, "Oh, that's cool." But of course, it's this big tool that wants to do them all for you. But it doesn't work for X, Y, and Z.

Then Micro.blog, a great tool, it can do Bluesky. It's the only one that can do Bluesky.

Dave: Oh, interesting.

Chris: So, that's cool. But it's designed to support a whole bunch of them. But I only really need it for that one because I already have this other tool set up. I have this one-off tool for Mastodon that's doing a great job. I would get rid of it and use another one of these tools, but it's proven. It's working. Why rock the boat?

If I got my list of six of these services to send out to, I've got to use six different tools to get them there. It just feels like a house of cards. I'm like, "Man, we are in a rough spot for just basic syndication of posts."

00:37:39

Dave: Isn't that weird? It's like we collectively decided social media is not working; let's go other places. But we didn't take the one piece that makes it, I guess, usable or the distribution of your own content. We didn't take that with us - or whatever. Yeah. It's weird.

You'd think any social network would try to make that easy so there's a new influx of content from--

Chris: Our own Mr. Enns mentioned that, though. He's like, "Well, Threads actually makes it pretty easy. All I had to do was give them my username and password, and it somehow automatically posts to Threads," or they have a really clean, API access.

But it's probably because they're new and making that easy is good for them. Then they'll realize that this is some spam vector or something or start charging for it. It's just the circle of life. You know?

Dave: A little bit of irony because Instagram doesn't let you post links and that's why Linktree exists, or whatever. [Laughter]

Chris: Right.

Dave: Funny.

Chris: Yeah, so was that ever true? Were they just like, "Nah, let's keep people here"?

Dave: I think it was an engagement. I think they said we're not going to let people link out.

Chris: Yeah.

Dave: It could have been also a pornography dodger. I'm sure people would be like, "Link to my cool account," and then it's just porno spam.

Chris: I think what I want is for Micro... I want them to be the winner because it's a great service. And here's the cool part is they just read your feed and then syndicate out from your feed.

Dave: Maybe.

Chris: Which means that it's not WordPress specific. You have a feed, Dave. If you wanted to use your Jekyll-powered feed to spit out to my whole list of ones, if you cared to pick those same ones, they would do it. I don't think they'll ever even try to do Twitter again. Why would they?

00:39:39

Dave: No. Well, he started there, so I know Manton. We could probably get him on the show if we wanted.

Chris: Yeah. We should.

Dave: Yeah, he started it because of Twitter stuff back when Dick Costolo was in charge. I think he just was like, "Man, I can't. This is too chaotic to build on," as like to build a business on. So, he just started Micro.blog.

Chris: Yeah, and it looks like a lot of people just use it to blog.

Dave: Mm-hmm.

Chris: I think that's fine. If you want a really simple place to blog, it's kind of great for that. I don't need that. But it doesn't matter because it just sucks in stuff from your other feeds and can syndicate from there. You can just use it as a tool. It's not just for syndicating, but it can do that.

Dave: I would honestly maybe like that. Sort of like back in the day you used to have your microblogs, which I guess that's what it's called. But my tweets, my tweet-ish things, my blog posting, my likes over on the Feedbin - or whatever.

Chris: Yeah.

Dave: And maybe I could add context to that there - or something like that. I just think that would be kind of - I don't know - useful to have all that in a feed as opposed to... I, of course, could write my own, like Jeremy Keith style, and do it that way. But I don't want to do that. I'd rather it just be--

Chris: Yeah. If it was my whole job, I could do it. The Bluesky thing came up because I was asking around on Bluesky. Does somebody have a WordPress to Bluesky integration already written?

There is one I found, but it was broken because Bluesky is new and they changed their API and it broke the plugin. Wah-wah... You know?

For example, Jason Kottke does it. Then he chimed in and was just like, "I'll share you the code. I just hand-wrote it in PHP." But I'm like, that's awesome, and good job, Jason. Mad props for maintaining your developer skills over all these years. And I can't. I don't have the time to sit around and hand-roll API integrations for my personal blog.

Dave: Yeah.

Chris: I'm hoping that it can be one of these... What did we call it in a couple of show's ago? A one-day, a one-hour build?

Dave: A one-day build. One-day build, yeah.

Chris: I was hoping it was a one-hour build. You know? [Laughter]

Dave: One-hour build? Yeah. Yeah. No, I think that's like I am doing a catastrophically bad job at posting and stuff like that. I would love it to be more automatic. I would like to find a way as well. Maybe that's a one-day build, man. One-day build.

00:42:18

Chris: Maybe. Here's the list on Micro.blog. They have Bluesky, which is cool. I feel like they should add Threads. Threads is probably going to stick around. But it could be just like, "We hate Meta" vibe thing, which I get it.

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

Chris: Medium, part of me is like, "Hey, Jeremy Keith does it." He'll put his whole post on there because, in his soul, he's like, "This is just syndication." It's not actually on Medium. It's just another syndication source.

But it feels different to me because your whole ass post is there and they have comments and they have line-level highlighting of comments.

Dave: They're monetizing it on your behalf. [Laughter]

Chris: It feels, all of a sudden, like it's the source post when it's not.

Dave: Yeah.

Chris: But anyway, they have it if you truly believe in syndication and you put your full post in the RSS, which, please do, by the way.

Dave: Mm-hmm.

Chris: But anyway, they've got Mastodon, LinkedIn. Tumblr, I don't. You'd think I would understand Tumblr, but after all these years, I still don't. Do people just put links on Tumblr or not or what?

Dave: I think you just steal people's memes and post them. That's my understanding of Tumblr.

Chris: Yeah. I don't think anybody is going to follow my personal blog, just like a link to my blog post in Tumblr. I somehow think that's not the culture of Tumblr somehow.

Dave: Mm-hmm. Yeah.

Chris: There's Flickr, but I get why Flickr is there because people use Micro.blog as a "post a photo" thing and to smoosh it over to Flickr is cool. A little old. I mean if you've never heard of Flickr, it's because you're probably 20-something.

Dave: [Laughter]

Chris: But I get it. They were one of the original apps that's like, "We have great APIs, and please use them." I don't know if that's still the case.

Dave: Yeah. Oh, I mean it was... I consumed Flickr through RSS, mostly.

Chris: Yeah. Yeah.

Dave: It was awesome.

Chris: Then two more on the list for Micro.blog that I've never even heard of: Nostr and Pixelfed. I'm sure I could just look, but I'm sure Noster is just some Twitter clone or something.

Dave: Yeah.

Chris: But it's good. It's not stodgy. I think they probably add these things as they feel appropriate.

00:44:28

Dave: The only thing you would need would be a Micro.blog to Twitter or X bridge.

Chris: Right.

Dave: However that happens.

Chris: None of these, though, it doesn't look to me, anyway. I guess I should click through all of them. Well, no, I shouldn't say that.

I just clicked, "Add Nostr," and it's like, "Well, put your API key in and we'll use that." If they added X, that's the way that they would do it is put your API keys in. Like I said, in the case of X, it requires four API keys because you need a project and secret key and then you need an app within a project.

Dave: Mm-hmm.

Chris: It's fairly complicated, and I think I set mine up correctly. The logs just say, basically, you've been throttled. You've been rate-limited (on my first post).

Dave: Hmm...

Chris: It's like, maybe it just takes a couple of days to get approved or something. I don't know what it is, but it's definitely not as easy as it used to be.

I think the way that apps got around it in the past is it was their app, like Micro.blog would sign up for an app, and they had such high API limits that they would post on behalf of their customers. That way they didn't need to have their customers saying, "Sign up for an app," and all that crap.

Dave: Yeah.

Chris: You could do that on Mastodon as well with this app-like approach. But for some reason, the cool plugin I'm using just doesn't need it. It has one of those off buttons. You click off. It takes you over to Mastodon. You hit approve. You've now--

Isn't that how it used to be on Twitter? You would grant permissions to an app. The app would keep those permissions. And then away you go.

Dave: Forever. [Laughter] Yeah.

Chris: Yeah, forever, and you should probably go clean them out sometimes, but that feels like nice, clean API integration for a user. That just doesn't exist anymore.

Okay. I've ranted about this enough. But it just seems like, "Oh, my God!" And who should win this is somebody who has got skin in the game. Like Buffer should support more things.

Dave: Yeah.

Chris: Or Micro.blog or Jetpack Social, which was kind of the point of them. I liked that because it was so integrated into WordPress. I could see previews of what it was going to look like on all the different services and stuff.

It's not that they won't do it. I have no idea.

Dave: Well, I think it's because Automattic owns Tumblr now. I think maybe it's in the competition space, so I don't know.

Chris: Isn't that usually how they roll?

Dave: Yeah.

00:46:59

Chris: But I shouldn't say that. Did you see that they've launched a 100-year plan on wordpress.com?

Dave: That is pretty cool.

Chris: Thirty-eight thousand dollars and you get hosting, support, domain registrations.

Dave: Ooh... [Laughter]

Chris: Yeah, but I mean I feel like we should do the math.

Dave: One hundred years.

Chris: Yeah. It still seems pricy.

Dave: Yeah.

Chris: I don't know. Let's do scratchpad math. Let's say you pay $50 for hosting, which is kind of a lot, right? Times 12 is $600 a year. Times 100 would be $60,000. That's assuming no inflation or anything, which of course there will be in 100 years. There'll probably be a devastating war that's going to cause some problems here. But still, what would it be?

If you paid $25 a month, you're more... I'll try to get it just right. So, 28, 29.

Dave: Yeah, but if I'm pre-paying like $25 hosting, that company is going to fold, too. Your server is going to fold in 100 years.

Chris: Right. This doesn't factor in the domain registration, which can be a little pricy. It'd be about spending $32 a month for that.

Dave: I think that's a cool gimmick. I don't know. Thirty-eight thousand dollars is a lot.

Chris: Yeah.

Dave: But if you were a blogger, if you're Kottke, that's way worth it. I don't know.

Chris: Yeah and it looks like it's pretty good hosting, too. You're getting the premium package. I have no doubt, for the early people, that they're really going to take care of them so that they get good press and whatnot.

Dave: Yeah.

Chris: But I like that you don't even have to worry about your domain name because that's probably the thing that's going to die first.

Dave: Mm-hmm. Yeah.

Chris: It does make me think about free services that offer immutable stuff, though, like Vercel and Netlify where, even on your free account, they're like, "Here's a URL of your 390th build of this website," that you paid nothing for. But they've always said, "Well, that'll just last forever. That URL is just an immutable permanent URL of that build." That's not true, right? That's not going to be there in 100 years.

Dave: Yeah. Nah.

Chris: But what event makes it not an event? Is it more likely to be because the entire company sells or goes out of business or something, or is it going to be because they changed policies?

Dave: I bet it's when they IPO. Deloitte comes through and cuts all the waste.

Chris: Yeah, they're like, "We're going to need some money."

Dave: Yeah. We've got to cook the books to make this IPO go.

Chris: Shouldn't you be able to see that coming, though? Shouldn't you even be like, "We're going to--"? Of course, why would you ever say "forever" or "unlimited"?

Dave: Yeah.

Chris: You're just lying.

Dave: Yeah. No.

Chris: Anyway.

Dave: Yep. Yep, yep.

00:49:34

Chris: Have we talked about websites at all?

Dave: No, but I wanted to start a new segment.

Chris: Yeah, please.

Dave: Called Happy Project Share Time.

[upbeat digital music plays]

Dave: Welcome to Happy Project Share Time. We've got a few people, like inbounds, like, "Hey, I'm working on this project," so I thought, "Hey, this would be a cool time to talk about that," and reached out in the D-d-d-d-discord. People have got some projects they wanted to share. So, I'm going to kind of rapid-fire, but kind of give you what I've been seeing here.

[music stops]

Dave: The first one is from Lars Eric Rold has a new version of RDB, which is an ORM in JavaScript. So, it's GitHub.com AlphaTeam/RDB (relational database). It's basically an ORM. There's no GraphQL. There are no migrations and stuff like that. But it's a really succinct syntax.

I use Prisma. It looked exactly like Prisma. You say, "Go to this table. Get this stuff," or "Insert this stuff. Here's what I want from it." Pretty cool.

Chris: For something brand newish, it's already got some 300+ stars on GitHub, which is pretty good. It's not totally obscure or anything, not that you were worried about that. It's kind of cool. I don't know that I've seen that.

For those that are listening, it's like if your back-end was in Node. It's still server-side code executing here. Rather than just having to handwrite an SQL query or something, you use function calls to get the data that you want, like orm.table, and then you pass it a string that's the name of the table. Then you're like, "Please .map over the columns." You're like, "Oh, thanks."

It just feels more JavaScript but you're getting data from your actual database. That's the same for queries and mutations or whatever is that you're writing a JavaScript-like language.

What happens is that turns into SQL that executes against that database. But you don't actually have to write an SQL. But it's not only a way to avoid SQL, or is it? Do I have that right? I mean it kind of is.

Dave: I think there's... Yeah, it kind of is. But find first. You say find one. I don't know what it is in RDB here. I could find it for you.

You basically can just say, "Get all," instead of select star.

Chris: Select star.

Dave: From blah-blah-blah.

Chris: Yeah.

Dave: It reads more like English or active record or something like that. It's pretty cool.

They do have this thing about using it on the client. That's frightening to me, but I don't know. Maybe it works for your situation. [Laughter]

Chris: Yeah. That always weirds me out. Where's the off-layer?

Dave: It has TypeScript and all that stuff that kids want, so there. You can check that out.

Chris: The point of this again is share us your cool thing so that, once in a while, Dave and I will share your cool thing on this show.

Dave: Yeah.

Chris: Yeah.

00:52:51

Dave: Yeah, and then I was going to say Russell Heimlich referenced his WordPress RH starter theme, King Cool 68, WordPress RH starter theme. Pretty cool if you're looking for a WordPress width template to little partials and components inside.

Then we have a few from the Discord. Are you ready?

Chris: Yeah.

Dave: Dan Ryan says Web.dev learn privacy. Learn/privacy is pretty good. That's a new Web.dev course.

David Luhr is working on a new YouTube channel @buildux, youtube.com/@buildux. I have watched a few of those shows. They're pretty good.

Melanie is working on A11y Automation, a11y-automation.dev, and Continuous Accessibility, which is a long word, continuousaccessibility.com.

Chris: I've had that on my share list for a while. Good job, Melanie, on that one. I think that's cool. That phrase, it should catch on. I really like it.

Dave: Yeah. I think this is just the start of something huge, just this idea of, like, we are always continuously monitoring our accessibility. Just like you would in a CICD, it's something you need to do, so Continuous Accessibility.

Adam Coster from Butterscotch... Oh, sorry. Butterscotch Shenanigans. Sorry. Edit that.

Butterscotch Shenanigans is the name of the studio. They have a new game called Crashlands 2. But you should go check that out.

In addition to that, he has GameMaker. That's a video game software, GameMaker IO. GameMaker Studio is what I have in my brain, but maybe they just call it GameMaker now. They have this extension called Stitch, which helps. It's open-source, but it helps you make game-maker stuff in VS Code. That's pretty cool. Go check out their game.

Anyway, I just thought that would be kind of a fun little roundup of links and stuff. Yeah.

Chris: I really like that. Rather than us sick picking, we'll let you sick pick.

Dave: Yeah. Tell us what you've been working on. If you've got something cool, let us know, and we'll share it. We'll round these up. We can't do it every show, but we'll do little roundups here and there.

Chris: I like it.

Dave: All right.

Chris: Well, thanks for hanging out, Dave. Hard stop it.

Dave: I've got to jump to a meeting. 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, X, or whatever or Mastodon.

Hey, I got locked out of fricken' Tweet Deck. But I got the password to Twitter again, so we're okay. Also posting on Mastodon now, so we're good. Everything is back online.

How are you? We're good. [Laughter]

Anyway, where you really can reach us is over in the D-d-d-d-discord, patreon.com/shoptalkshow.

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

Chris: Well, just ShopTalkShow.com.