562: Podcast Apps, Zaraz, Future CSS Thoughts, and Arc

Download MP3

What if Taylor Swift lyrics hold the answers to web dev questions? Podcast app thoughts, using Cloudflare Zaraz, what we're excited about with CSS, Arc browser updates, and are we even developers or are we specialized systems whisperers?



half Arnold, half Tswift, half Terminator. credit gingerchew


Web · Social

Sent from the future to de-monetize the podcast by combining two very famous and litigious IPs.

Time Jump Links

  • 00:31 Future Swift problems
  • 02:16 Who doesn't listen to this podcast?
  • 07:31 Podcast app listening
  • 16:32 Do we change or have things changed?
  • 21:27 Sponsor: Front End Masters
  • 23:14 Have you used Cloudflare's Zaraz?
  • 35:50 What are you excited about in future CSS?
  • 40:49 Safari actually still lets you link to a custom stylesheet
  • 41:37 Still using Arc
  • 50:03 CodePen embeds and the future
  • 51:56 Are we so mired in tooling and tests and infrastructure that we're not even developers anymore, as much as we are specialized systems whisperers?


[Banjo music]

MANTRA: Just Build Websites!

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

Chris Coyier: Yeah.

Dave: Hey, Chris. How are you doing today? Hey! Wait. Hold on. No! You can't!

Sorry. there's a guy in a leather jacket out here, and I don't know what he's doing, but... No! You can't come--!

[grunts and groans]

Dave: [Speaking in a lower tone] ...mic. Hello.

Chris: Who am I talking to?

Dave: Christopher Coyier.

Chris: [Laughter] How do you know my name?

Dave: I have come from the future. I am looking for you. I have come--

Chris: Holy...

Dave: I am--

Chris: Holy cow. What?

Dave: I am the T-swiftinator. I have come here to put your podcast into legal jeopardy. [Laughter]

Chris: [Laughter]

Dave: By only quoting Taylor Swift lyrics in this very T-swiftinator voice.

Chris: [Laughter]

Dave: I know what you're thinking.

Chris: Yeah. What am I thinking?

Dave: Yes. I knew you were trouble when you walked in.

Chris: [Snickering]

Dave: It's me. Hi. I'm the problem. It's me. Look what you made me do. You need to calm down. You're being too loud.

Chris: I feel like AI tools are starting to pick up this already and be like, "Warning! Warning!"

Dave: Yah. You look like my next mistake.

Chris: [Laughing and snickering]

Dave: I can make bad guys good for a weekend. [Laughter]

Chris: [Laughter]

Dave: [Speaking in a normal tone] Get out of here! Get out of here!

[grunts and groans]

Dave: Go back to the future. Oh, my gosh.

Chris: Holy cow.

Dave: Can you believe that? It was a sentient AI that came back to ruin our podcast.

Chris: Right.

Dave: And put us in legal jeopardy.

Chris: Almost certainly our podcast won't exist now in 2033.

Dave: Well, that's what they're trying to do. They're trying to break up the band and just get us a lawsuit, DMCA, and take us offline. That's clever, clever trick - whoever did that.

Chris: What a bastard.

Dave: Oh, my God. Anyway, how's it going, Chris? Sorry.


Chris: You know who is not listening to this show right now?

Dave: Taylor Swift. [Laughter] No.

Chris: Well...

Dave: Who is that?

Chris: I actually would like to know what Taylor Swift listens to.

Dave: Yeah....

Chris: That does seem relatively interesting.

Dave: Hey, Tay! We know you listen to... what podcasts you listen to. [Laughter]

Chris: Well, that's not universally true for me. I was just thinking about how there used to be designers sharing playlists or whatever. I remember rebuffing against that, like I literally don't care what other designers listen to. [Laughter]

Dave: Yeah. Yeah. Yeah. Yeah.

Chris: Or anything, like what kind of bike you like or anything. You know what kind of bike? I want to follow somebody who knows about bikes professionally, not this person who knows how to move rectangles around.

Dave: That's fair. That's fair. Yeah, I mean there's... Yeah, there's a lot. Kind of like a Dunning-Kruger thing, sort of where it's like, "This person is good at design, so they must be good at coffee," but maybe they have terrible choice of coffee.

Chris: Right. Sometimes there's one-to-one. Obviously, people care what Obama reads - or whatever.

Dave: Yeah.

Chris: But because he's like the President, so maybe what he reads, in some way, got him there.

Dave: Mm-hmm.

Chris: Maybe.

Dave: Right.

Chris: Probably to some degree. And now, you're so famous that everything that you might recommend has been so put through the filters of, like, "You're not going to embarrass yourself, right?"

Dave: Oprah or Dr. Phil style, yeah.

Chris: But who doesn't listen to this show is people that don't like podcasts, which there are plenty of. I just think that's interesting. What's going on in someone's life who just listens to absolutely zero podcasts?

Dave: You know I think my wife is almost like that. I've got her to listen to Serial or something like that in the past, and that was successful, I think.

Chris: But doesn't roll in on other shows?

Dave: No. Not often. No. But different life, you know.

Chris: Yeah.

Dave: I mean she doesn't have a commute. School is... Where she works is half a mile away, so it's not like she's, "Man, I've got to hunker down for this 15-minute drive." It's like a one-minute drive.

Chris: Yeah. I love them, but I only get a few in because my commute is not very long either, and it's almost purely a car thing.

Dave: Yeah.

Chris: But I like them so much that I often do the, like, I park and then I just sit there for a minute. [Laughter]

Dave: Oh, the NPR driveway moment?

Chris: Yeah.

Dave: Yeah.

Chris: Right, but for me it's fricken' all over the place. I'm just sitting there because I kind of enjoy listening to them.

My wife is exactly the opposite, man. She puts those Airbuds in, in the morning, and just podcasts all day - as far as I know. I mean obviously not all day.

Dave: She's a bit of a newsy, so she's got a journalism background there.

Chris: Yeah, exactly. Even waking up in the morning, you know, she'll just flip on the phone and let the podcasts fly, the morning edition ones and stuff. It's a good routine.

Dave: Oh, nice.


Chris: I think, for a while, she was over-podcasted, though, and then did the, like, "I'm going to Audible because I'm not ready to give up listening to stuff," but you can get over-news'd.

Dave: Yeah.

Chris: I've heard of people taking news breaks and stuff, like, "No news Wednesday."

Dave: Yeah. That's awesome. I should do that more.


Dave: You kind of get warped into something, like I follow Ukraine pretty closely.

Chris: Mm-hmm.

Dave: Probably an hour or two a day just figuring out what's going on in Ukraine. But I don't know. I could probably stand to do less of that for mental health reasons, but it's kind of a hobby now.

But I was going to say I do the same as Miranda. I get... I used to do a lot of podcasts. I've got 20, 30 podcasts in my feed, my hopper.

Chris: Mm-hmm.

Dave: But after a while, I started getting tired of, like, this show's format. "Hey, we're just going to sit around and talk," or "We're just going to make it up for an hour."

I needed a linear line of thought. And I think books are that. A book is like nine blog posts. But if you read nine blog posts, they're all over the place. But it's nine blog posts about the same thing, and it's a very edited, architected discussion about a topic. And so, that's what I liked about... That got me into a whole bunch of audiobooks just because I was listening to so many podcasts, and they were talking about whatever, you know, ten different topics - or whatever - and I needed--

Chris: Yeah. You needed to focus the topic. Yeah.

Dave: I just needed a thread.


Chris: Was that a phase and now you're out of it and back on your old BS?

Dave: I go in and out, actually. I've actually slowed down my audiobooking quite a bit, and I've gone into a little bit more podcasts, picked up a couple, and stuff like that.

Chris: Hmm...

Dave: A couple of my favorite podcasters like Jon Ronson are coming out with new podcasts and stuff like that, so I'm kind of just--

Chris: Back in it. Back at it.

Dave: Back at it, but I go back and forth.

Chris: Yeah.

Dave: It goes from this, like, am I going to listen to ten people play ten different games of D&D or a book? [Laughter] Sometimes I have to just do a book.

Chris: Yeah. Noise reduction.

Dave: Noise reduction.


Chris: I'm looking at a toggle switch that says noise reduction in our... [Laughter] It's funny how that worked out. Yeah. Yeah. Yeah.

This is probably... I hope this isn't too boring, but I was a Pocket Casts user forever, and it was nice in that it stayed synched and I could log in on the Web and use it. I always thought it was a nice product, and I think it's cool that Automattic bought it because it's such a weird--

Dave: Oh, wow. Okay.

Chris: I like when Automattic buys weird things. [Laughter]

Dave: That's a cool endorsement, right? They're like, "We'll just buy Tumblr."

Chris: Yeah.

Dave: "How much?"

Chris: They're like, "Ooh, there's this really nice little journaling app." Day one, I think. I used to use it for a while until I decided I don't care what I think anymore. I do, but I like to make it public not private.

Dave: Yeah.

Chris: Anyway, nice. So, they buy it. Anyway, they bought it, and then they open-sourced it, which I think is cool. And I still like it. Aesthetically, it's my favorite one, but I listen to podcasts in my dang car, and it freezes in the car. I don't know what it is. I've never been able to figure it out. It was just like, you can't use software that freezes. You're going to push people away.

It didn't freeze for my wife. I'm not saying it's a scourge of a problem. It froze for me, and I waited a year, too long, of having to start over. Then it would forget where I was in the podcast.

Finally, something clicked, and I'm like, "I'm leaving! I'm going to use something else!"

Dave: Yeah.

Chris: I was like, "I'm just going to use the stock app," because the stats for this show are overwhelming. A lot of you out there, most of you use Apple Podcast.

Dave: Yeah.


Chris: So, it can't be that bad, right? And I don't know. [Laughter] So much muscle memory for some other app, I used it, I really forced myself to use it for about two weeks, and I just found so many things I didn't like about it that I bailed for Marco Orman's Overcast, and I'm just a huge fan now.

So, that's the end of my story is that I think the user experience care in Overcast is just excellent. It just jives with how I think about using an app, and I'm always pleasantly surprised at the features in there. So, Overcast fanboy all of a sudden.

Dave: I'm an Overcast user, long-timer.

Chris: You are?

Dave: Sorry. I did some keyboard surgery to put the sticky feet on them, like the little pads that keep your keyboard in place. I had to Gorilla Glue them back in place, and it's going wild. It's like....

Anyway, back on task. Yeah, I did the same thing where I'm like, "Oh, I'll listen to podcasts at my desktop, so I'm going to use Apple Podcast." I feel like Apple Podcast, as good as it is, it's like they said, "Hey. Oh, man. We're so close. We don't quite have all the features figured out and good, but we could spend the rest of the time polishing it." They're like, "Yeah, let's just do that." [Laughter]

There's just broken UI or there's... I just feel like Apple, for as good as they are, I feel the same way with Apple Music or the podcasts or even the Apple TV app, if you ever have to use that on an iPad or whatever. It's like they just said, "Aw, well, close enough." [Laughter]

It drives me nuts for this trillion-dollar company to just be like, "Well, you know. No one will notice."

Chris: Yeah. Who has done more for podcasting than anybody.

Dave: Yeah. Yeah, they basically invented it. I mean they marketed it, right?


Chris: Yeah. It's really too bad. I have homed in on what I demand in all podcast apps is this: Allow me to swipe away a show that I'm done with at any time and have it just be gone.

Dave: Like swipe left, right, like an email?

Chris: Yeah, either way. I don't even care which way because I feel like somehow the industry hasn't fully decided on which way we swipe things.

Dave: Which direction is correct. It's like pagination.

Chris: Yeah. [Laughter]

Dave: Like older, next, which side does it go on.

Chris: Right.

Dave: No one knows.

Chris: You can learn it and get the muscle memory as long as you do it a few times. Then you're like, yeah, yeah, yeah, got it. But I feel like Apple, that's the one thing they're really bad at. It depends on what context you're in and different things.

But Overcast is great. You can just wipe away a podcast. Because I'll be listening to one, and no shame, but I'm just bored of what they have to say. I don't hate the show. I'm just done with this one. I just want to go, "Done! Gone!"

Dave: Yeah. Yeah.

Chris: "Next!" You know?

Dave: Yeah.

Chris: Because I never get to all the stuff in my cue.

Dave: I do that with... What's the one, the political podcast everyone loves? Pod Save the World?

Chris: America?

Dave: Pod Save America? Yeah. I'm like, "Ah, yeah. I'm a total Pod Save America guys," and then I get eight minutes in and I'm like, "This is so boring!" Or like Law Warfare Blog is another one. I'm like, "Yeah, I'm smart like these lawyers," and then I'm like, "No! This is boring!"


Chris: Yeah. My whisk-away moment comes hot and fast. [Laughter]

Dave: You're probably better at it than me. You're like ultimate Irish goodbye.

Chris: [Laughter]

Dave: I'm more like, "I don't know. I might hurt their feelings if I fricken' leave their podcast - if I delete this episode."

Chris: Oh, I have... I do. I have that same little feeling. But then my rational brain takes over.

Dave: ...really hurt their feelings. Yeah. You've got good instincts.

Chris: Yeah, well, it's fun to be late for stuff like that because it's not like Overcast is a hotly talked about app at the moment in the world. [Laughter] It's just been around forever. People use it who use it. Whatever.

It's interesting that it's still kind of a one-man show with Marco.

Dave: Yeah. I think it's cool.

Chris: I wonder if that's the bulk of his income? Isn't it free though?

Dave: It might be free, but I think there's something.

Chris: Subscription deal?

Dave: Like a synching feature, cloud feature, something if you pay.

Chris: Yeah.

Dave: I paid 20 years ago. He got $10 out of me - or something.

Chris: Yeah. Apparently, I have premium, so I must pay for something. You'd think I'd know.

Dave: Yeah. I feel like where Marco gets the medium, he always has shows with Dan Benjamin or something at the time when he made it.

Chris: Yeah. Being an actual podcaster helps. Yeah.

Dave: I feel like getting the medium is so huge. There have been so many... Around the time of Serial and Gimlet Media (a startup podcast)--

Chris: Mm-hmm.

Dave: --a lot of people showed up and were just like, "We're going to crush podcasts. We're going to fix it."

Chris: Yeah.

Dave: They made apps and stuff like that. It was just like, "It's good now." [Laughter]

We probably get an email a week, like, "Hey, we've got a chatroom for your podcast," and it's like, "No. No thank you." [Laughter] I mean maybe it's helpful somewhere, but I get the idea. That would be great. But when ten people are like, "Hey, we set up a chatroom for you. Come claim it," I'm just like, "That's way too much action. I don't think you solved it."


Chris: It's almost like you should be a developer to have a developer podcast.

Dave: Yeah.

Chris: Well, I guess that's a little too on the nose since that's exactly what we're talking about. But yeah, you can kind of tell from back when Twitter was a thing. All the grifty crap that would come up, like, "Here's ten tips to make you a better developer." You could just smell the... "Do you do development?"

Dave: Do you do development? Yeah.

Chris: [Laughter] Not to be a prick, but it just doesn't feel like it. You know?

Dave: Yeah. You're hustle to being tired ratio is really off for me.


Dave: It's really hard to....

Chris: I don't sense a weariness about you.

Dave: Yeah. Yeah.


Dave: You're not mad about one thing, like, "Are you sure you're a developer?"

Chris: Yeah.

Dave: Can you even be a developer if you're not just irrationally mad about Svelte.

Chris: Absolutely angry about it. Yeah.


Dave: Or something. Insert your own technology. Can you even be a developer? I don't know.

Chris: [Laughter]

Dave: And when you get none of that from somebody, that's a smell. That's definitely.

Chris: Mm-hmm.

Dave: You're like, "You're all hustle, no hate. This is really off-putting. This is hard to parse."


Chris: You learn stuff about yourself over time, Dave.

Dave: Mm-hmm.

Chris: And it changes. That's part of what I like about life. For years now, I've just been like... This is weird, but when I was younger, I was kind of into video games and I had video game friends. And we'd hang out and play video games.

It wasn't my top hobby ever, but I feel like I liked them like a normal person. Then at some point, probably during my professional career, things get busy - whatever. It just fell off in a way that when I'd try to pick up gaming, I just couldn't. I just didn't like it.

And I had attributed to, like, "I have changed. I'm just not a video game guy anymore," or what I get out of video games is the same type of thing that I get out of my hobby of Web development. It's a puzzle, and I'm solving the puzzles. I'm trying to do business good, and that's a little bit like a video game. Or I convince myself that these kinds of things were where I was at.

But then all of a sudden, [laughter] I was just doing my YouTubes in the morning or something, and I stumbled this video that was like, "Good videos for five-year-olds," essentially, or good games. It was relatively well done. I was like, "Hey, I have a five-year-old, and this would be something we could share more and more as she's getting more capable."

Dave: Mm-hmm.

Chris: And I ended up - just that day - I was like, "Let's go to Best Buy," and I bought a Switch.

Dave: Yeah! Nice!

Chris: Six years after it came out. [Laughter] Yeah. Yeah. I'm learning all about... I didn't know anything, really. I mean I know what a Switch is, but I had no hands-on experience, so I'm learning for the first time. And I was like, "I'm going to buy all these games that the video said to buy," essentially. And then Breath of the Wild, too, because everybody talks about that game and how just wonderful it is and how fun it is to explore.

And now, all of a sudden, all those long-held beliefs about myself just not enjoying video games and it's just not me anymore and blah-blah-blah, now I'm just... my ass is plopped on the couch enjoying the hell out of playing video games. So, things change, you know.


Dave: That's great. A) good choice. Switch is fun. It's good for kids, too.

Chris: Yeah.

Dave: My son is into it, but my daughter is not, which feels like a gender stereotype. But it's mostly my daughter is kinetic. She's very physical.

Chris: Okay.

Dave: She would rather be upside down doing a handstand than playing a video game, so that's--

Chris: Right. Okay.

Dave: That's my daughter. And so, yeah, anyways, my son is definitely an indoor type.


Dave: Yeah. It's fun.

Chris: You've been extracting enjoyment out of them for ages, right?

Dave: Yeah. You know it comes and goes. I've kind of waned a bit. Again, business, like you're saying.

I think, for me, the thing I disassociated with in my identity was music. Does that make sense? I remember I was living in a house with seven people, and I got a friend who was in a band. He was touring, and I'm trying to start Paravel or something like that.

Chris: Right.

Dave: I was just like, "I've got to give up on music. I'm not going to be in a touring band."

Chris: Right.

Dave: I remember disassociating, having a moment where I disassociated and just was like, "I'm going to just give up on music, and I'm going to learn computers. I'm going to do computers."

Chris: Right.

Dave: That was a formative moment, and I'll still -- if you need me to play base in your band and fill in, I'll do that. I'm fine to do that, and I'm not the best musician, but I'm okay.

Chris: Sure.

Dave: I just kind of disassociated that. I have instruments and still buy more instruments. But over Easter, we had some friends over for dinner or whatever, just to have a meal, and we got the guitars out. We had the piano. We had a Beatles songbook we were all just working through.

It was just like that was fun, and that was the kind of music I want to do, just family band kind of like let's just get down. Let's find some tabs and try to play them together. You know?

Chris: Hell yeah.

Dave: That was cool. Anyway, I had that moment sort of about music again, like maybe I do ... music.

Chris: Things change.

Dave: You know?

Chris: Yeah. It can come back.

Dave: Maybe this is something I do, so I don't know.

Chris: Yeah. If you believe something about yourself, it could be true in the moment but it doesn't mean it's true forever.

Dave: Yeah. Right.


[Banjo music starts]

Chris: This episode of ShopTalk Show is brought to you in part by Frontend Masters. That's Their learning paths are super good. Ain't they, Dave?

Dave: Ah, man. They have everything, whether you're starting from a certain level like beginner to professional to expert, or you want to hit the computer science track or the full-stack track or design to code track, lots of different tracks from what skill you're trying to hit. But then, boom, they've got technology-specific tracks like JavaScript, CSS, like if you need a skill buff in one area.

Chris: That's what I would do. I'd be like, "Dude, I need to learn TypeScript now. I'm way behind on this." Take the TypeScript class.

"Oh, I need to get a job." Dude, take the React class.


Dave: Take the React class. No, I mean or I'm doing Vue. I have a good understanding of Vue. But piecing it together over a bunch of blog posts isn't the best. You know?

Chris: No.

Dave: Watching Sarah Drasner's Vue course is super rad.

Chris: Yeah.

Dave: Or the Node. Just seeing somebody build something, like an API or whatever, helps my brain internalize that way more than just - whatever - piecing it together myself.

Chris: Right. Right. I kept calling them courses and classes and stuff, but they're really learning paths, and you might hop between different videos and stuff. There are elective coursework and stuff.

These learning paths are really put together to bring you the best of whatever that topic is. That really appeals to me. I think it's really quite cool.

Dave: And I think it can work for you as an individual or for your whole company, like if you're trying to do a big skill buff in React.

Chris: Yes.

Dave: Your company noticed, like, "Hey, we're not super great," so, boom, get a whole skill buff for your whole entire team.

Chris: Yeah. Or in my case, we're switching over everything to TypeScript. Now guess who should level up in it. Everybody.

Dave: Yeah. Yeah.

Chris: Not just you. Yeah.

Dave: Well, and if you want to do it, are you doing it in the one-month or the one-year plan? You know what I mean?

Chris: Yeah.

Dave: It helps to level up first.

Chris: Bring your company to

[Banjo music stops]


Chris: Well, we have some questions that y'all are very good at sending in. Thank you. I know we don't get to them every episode like we should, but we will when we can.

Dave: Yeah.

Chris: This was absolute news to me, which was shocking. This is Russell Heimlich. I guess it was just last episode, we were talking about Segment. I think you're possibly using it at Luro.

Dave: Yeah.

Chris: I've always been a big fan of the product because it's that thing where, rather than putting - whatever - ten analytics tools on your page (not that you should ever do that, but let's say you had to for some reason).

Dave: People with access to Google Tag Manager will.

Chris: Yeah. Right.

Dave: [Laughter]

Chris: But you can imagine, "Oh, I'm using Mixed Panel," or whatever "and they give me a snippet of JavaScript to put on the page in which to track events," or whatever you want to track. "And then I use Google Analytics, too. And then I use Appcues, and they have their JavaScript too."

You can put all that JavaScript on your page, but it's like loading up a bunch of libraries and stuff that are all doing pretty similar things, like it probably has some cuing technology built into it so that it doesn't send every keystroke or whatever it sends.

Dave: Mm-hmm.

Chris: It'll group up five and then send them to take care of your network traffic. It's probably got some offline or retry logic built into it. Who knows what it's doing, but it's probably some kilobytes of JavaScript, so you're loading all that, and each one of them, the network traffic is happening client-side to go to those locations. It just doesn't feel very good.

I feel like I'm doing the sales pitch for Segment. Feel free to sponsor us.

Dave: Yeah.

Chris: We're selling ten show blocks for $10,000.

Dave: [Laughter]

Chris: You just send it to Segment, and then they (server-side) send the data to the other services. It's just nice. That's a great way to do it.

So, Russell writes in, and he says, "But it's expensive," and I do think it is a little expensive for what it is.

"I've been looking into Cloudflare's Zaraz." Russell doesn't work for Cloudflare.

Dave: Yet!

Chris: It's free.

Dave: Growth mindset, Russell.

Chris: Yeah. There you go.

Dave: You don't work there yet. All right.

Chris: You set up tracking events and then Zaraz sends the data to other services via Cloudflare workers, so end users don't need to download and execute JavaScript for every third-party service. Zaraz also sets up an endpoint on your domain, so it's a first-party request.

Hot diggity. I like that.

Dave: That's a big deal.

Chris: Yeah.

Dave: Because some ad blockers will block your Segment, I learned. [Laughter] Yeah.

Chris: Right. You just get better data this way, and it's like, I mean I don't know. I'm sure there are varying opinions about this because maybe it should be blockable. I don't know. But whatever. I like that it's first-party.

"I just thought you should mention it because you're a fan of Cloudflare and not many people seem to know about Zaraz."

Indeed, I am, actually. I'll take that stance. I'm a fan of Cloudflare. Their products are pretty good.

Just to temper that, I had no idea about Zaraz, so that's cool. Good job.

Dave: Yeah. The first time I'm hearing about it.


Chris: Yeah. We had this moment just because I really, actually do like 94% of all of their products, and I think they're generally well-priced, and they saved the Internet from DDoS, which is just such a sucky thing that people have to deal with. I know. I'm aware of all the complications of all that.

Dave: Mm-hmm.

Chris: And the controversy they've gone through and whatever. I'm talking about it technologically for a moment.

But if you're hearing this, sorry, I still love you, Cloudflare, but I'm going to criticize something.

They have this feature that's part of the workers suites, just like KV storage is part of workers.

Dave: Yeah.

Chris: They have another one called durable objects that's part of workers. So, if you want to use a durable object, you have to do it through a worker. The worker talks to the durable object, which is durable in that it sticks around. You know?

And that one of the things you can do with it is build real-time type stuff. Let's say you and your son's video game is going to have a real-time feature on it. You could use durable objects to power it.

Dave: Okay.

Chris: Even if it was chess or something, you could store the state of the chess game in the worker. Then two clients connect.

Dave: Then everyone shares the universal state. Yeah. Yeah.

Chris: Yeah. It's cool for that. It's just, I don't know if they made a pricing mistake or something, but it's priced like 100 times higher than anything else that they use.

Dave: Oh, oy. Yeah. Wow.

Chris: We went through this whole thing where we rewrote some features of CodePen to use it thinking that, oh, everything else we do on Cloudflare has been priced pretty well and we're happy with that. Then all of a sudden, we're like, "Holy crap!" at the end of it, like, "We can't afford that!"

Dave: Yeah.

Chris: We had to use something else. So, hopefully, Zaraz is priced well.

Dave: Yeah, well, that would be my only criticism of this page is you don't... I think it does exactly what Segment does, and I would actually use this. I think Segment is great, but Cloudflare is already in your network stack.

Chris: Yeah.

Dave: Segment is a third party.

Chris: Yeah, they are.

Dave: They're third-party, but not in the scammy sense, like they're stealing your data. They're just not your business. But Cloudflare is third-party, but it's part of your stack. All your requests are going through here anyway, so I feel like that could be an advantage.

Rather than sending a page view event, it literally knows when a page view happens already, Cloudflare does.

Chris: They do.

Dave: So, you could save A) overhead on that. But this seems cool to me. I don't know. I didn't know it existed, so that's actually very useful if something like Segment, who should really sponsor this show, gets a little too pricy.

Chris: Yeah.

Dave: But I feel like this would be a very cool thing, and I would absolutely look into it if you're having that sort of problem.


Chris: It looks like they bought it.

Dave: Oh, really? Okay.

Chris: It was... Zaraz... Because I was like, this doesn't sound like a Cloudflare-named thing.

Dave: Yeah.

Chris: They would have called it, like, L9 or something.

Dave: Yeah.

Chris: Right. It looks like they bought it in 2021.

Dave: They would have called it some kind of server-y word. Yeah.

Chris: And I guess it's free. Oh, better stay free, then. You can't do that old free to not free transition. [Laughter]

Dave: Little switcheroo.

Chris: It's probably to get people using workers and stuff. That was the smartest trick that Cloudflare ever did was even early days when they didn't have all the cool stuff they have now. It was like, "Put your DNS through Cloudflare and you'll get benefits," like speed benefits and the protection benefits and all that stuff.

Dave: Mm-hmm.

Chris: And everybody was like, "Okay," which was unbelievable.

Dave: Yeah.

Chris: Because DNS is not -- you don't want to go with a risky company for that. But somehow, some way, they convinced tons of people to do it. I've done it on pretty much every site I've ever done now, as I trust it, and it's worked great.

But once you've done that, like you said, now it's part of your stack. So, now when they have a new product, it gets everybody to turn their head and look at it because you're like, "Well, we already use Cloudflare, so maybe we should use this other thing too."

Dave: You know what I've been calling that? I've been calling it claws, like they got claws in you.

Chris: Yeah.

Dave: Because you're not going to change your stack. They've got the claws in you. So, if you try to move, you're going to injure yourself.

Chris: Indeed.

Dave: I feel like there's stickiness, like the CodePen feed, right is sticky, right? Like, "Ah, man. There's cool stuff here. I'm going to come back." Right? That's going to keep me sticky, like the popular feed.

But the claws for CodePen are you got my code; you got my assets. I feel like any good product has claws and stickiness, right?

Chris: Yeah. Right. But you have to think about it because it's easy to think about, really, negative ways to do that.

Dave: For sure. For sure. Definitely, it's manipulated.


Chris: Right. It is a bit. We always talk about the AWS version of that isn't necessarily the services. It's the permissions layer on top of the services. It's like once you've set up all of the--

Dave: I am Sam. Yeah.

Chris: That's what keeps you there because you'd be like, "Oh, that's just going to absolutely suck," because it's unique to them, right? It's not like you just pick up those things and move them to some other provider. You have to really detailed think about them and implement them in some new way.

Dave: Yeah. The sticky is I need a bucket for files. And they're like, "Yeah, we've got buckets, baby." Then you're like, "Cool. I need a permission on the bucket." Then they're like, [whip cracks] "Claws!"

Chris: Yeah.


Chris: Yeah. Hell, yeah because that's such a popular... S3 is so popular that every other flat file service thing -- DigitalOcean, Cloudflare - I can't think of them all -- they all say, "S3 compatible."

Dave: S3, the same API. Yeah.

Chris: They all just copy the S3 APIs. Yeah.

Dave: Yeah.

Chris: [Laughter] That's just wild to me how this stuff--

Dave: S3 compatible, asterisk, psych out.

Chris: Yeah. [Laughter] Asterisk, not really.

Dave: Yeah.

Chris: Just the basics.

Dave: Like half of it. Just half of it.

Chris: Yeah, just the put one.

Dave: Just put, yeah, where you put your files on here and now you're indebted to us forever. We do that. We do that part really well.


Chris: Yeah. I do want to... I would like to try to move to Cloudflare's thing. We still use S3 for all kinds of little stuff, and it's worked, so why bother? But oh, man, Cloudflare is way, way, way cheaper. [Laughter]

Dave: Well, I find myself, too, in the grand scheme of things. We are not on Cloudflare. Our host actually uses it at some point, but we haven't officially put Cloudflare in front of our stuff.

But occasionally you're like, I just need to vet an idea and a worker would be the best way to do it.

Chris: Right.

Dave: And Cloudflare has workers. And I was going to say this is a RAS thing. It looks like it's built on workers, which is a distinction between Segment. Segment is just a big server that you have to spin up that's listening or if you're going to proxy it.

Chris: Yeah.

Dave: Or just Segment itself is a big server listening to your site waiting for events. I think the optimization of an infinitely scalable Lambda function is actually pretty huge, like, "Hey, just hit us. Send a request, and we spin up a thing to handle it."

Chris: Yeah.

Dave: "We are just a giant event handler." That's pretty cool.

Chris: I always thought that was so genius how they did that, too. You get a URL to a worker just like a Lambda.

Dave: Yeah.

Chris: If you want to just call it, you can. But there's this other way that they work where they're just an intermediary on every page load that you don't have to call it. You don't even have to care what the URL to the worker is. It just automatically runs when the--

Dave: There's a request.

Chris: ...route matches.

Dave: Yeah.

Chris: It's like, "Wow! That's clever." [Laughter] I like it.

Dave: Yeah. No, there are cool... That's cool technology.

Chris: Yeah, it is. And the way that it's implemented is so cool, too. It's this little V8 isolate that spins up instantaneously. I love it.

Dave: Yeah. If Cloudflare wants to sponsor the show, they're more than welcome to.

Chris: I know. Come on.


Chris: Come on down.

Dave: Cloudflare bucks.

Chris: [Laughter]


Dave: Anon-Anon writes in.

Chris: Fair enough.

Dave: "CSS is brushed off as easy for a lot of developers, but I live and breathe this stuff every day. There are so many exciting features coming up." So, this is sort of a topic suggestion, not really a question. "Are there any particular technologies in this space that you're excited about, current or upcoming?"

Then they go on to mention "Container queries solve so many pain points," and say, "On my wish list, I'd like to have a native container-based font size, sort of like Dave's fit text but native to CSS without magic numbers."

I would go ahead and say it already exists in the CQI units, "ca-kee" units. Ca-kee! So, you say, you can use clamp, right? And you set a min font size 10 pixels, max font size 100 pixels, and then you say 1.5 CQI, and that is going to give you fit text, basically. Clamp plus container query units and a min-max is fit text 100%.

We just queried the parent width and set the font size. That's all we did. So, there you go. You got it. It exists today. I am free from my prison.

Chris: Underknown, I think. Yeah. I think container queries got a lot of the hoorah-rah. Rightfully so. And then container query units came just slightly later and somehow they're cool but their thunder is stolen by the actual query itself. But new units.

Dave: New units, so I think it's CQI, like CQ inline, container query inline size, and then I think there's CQW and CQH and CQB, probably, like block size or something. I would have to look that up but, yeah, a whole slew of new units kind of came in with container queries, so I would recommend you check it out.

Chris: Yeah. I love units. That's a cool thing. It's one of those things that they're not polyfillable.

Dave: Yeah, right? It's a weird--

Chris: So, it feels like a real new CSS feature. I like syntactic sugar too, but I prefer the real features.

Dave: We should do a live stream. This is a YouTube video where we stack units, like S tier, A tier. [Laughter] Like inches, that's a low, bottom-tier unit.

Chris: Yeah.

Dave: You know?

Chris: Ooh...

Dave: Get all the units and staggering them.

Chris: Yeah. Do like a March Madness.

Dave: March Madness -- heck, yeah -- for all the units. That's great.

Chris: Oh, man. It would be sad because people would vote for Pixel even though they're wrong.

Dave: Ah... Pixel! A long-term fav. Rem is probably up there. Em is also strong.

Chris: Probably. Yeah, Em would probably win because I feel like if you're using relative units, something about... I like Rem, but I think Em is more popular.


Dave: Oh, yeah. Pix, Em, Rem, and percent are going to be very--

Chris: Ooh, yeah.

Dave: But here. Hear me out. Unitless, like line height 1.2. Whoa!

Chris: Unitless is nice. Oh, we got the line height unit, too. LH is a newcomer.

Dave: LH. Okay. CH is pretty strong, too. Gosh.

Chris: Yeah. Character width is hot. Like that. I'm a big DVH guy these days.

Dave: Oh, viewport.

Chris: Yeah. Dynamic, though. You know the one--

Dave: Dynamic.

Chris: The one that is safe with keyboards.

Dave: Not the sad ones. [Laughter]

Chris: Yeah. Those were sad for a while.

Dave: There are a lot of sad ones here.

Chris: It's interesting. I remember all these lists from 2018 on, at least, that were just like, "Viewport units are the worst. What we need is CSS to fix viewport units. CSS is stupid." It took a minute.

Dave: Yeah.

Chris: But it was almost like an Obama birth certificate thing.


Chris: You know?

Dave: Yeah.

Chris: "Sorry. I was a little busy for a second. Here's an absolute total comprehensive fix of that problem."

Dave: Yeah. Well, and then we had -- there was some weirdo. Safari was just like, "Ah, just change your meta viewport, dude. That's the fix." You know? [Laughter]

These just sort of like Hail Mary, never intend to actually support it workarounds.

Chris: Yeah.


Dave: Anyway. Yeah. Oh, they're so good. Ah, man. I'm excited. We should do this tier-less thing. This would be great. I feel like that's too good. All right.


Chris: Yeah. Rory Hendrickson wrote in to just say that somehow we got it wrong about browsers that support user style sheets, and it's the least likely scenario, if you ask me, is that of Firefox, Safari, and Chrome, the only one that has a very native, strong, just link up this style sheet and we'll make it your user style sheet is Safari.

Dave: Yeah. Wild, huh?

Chris: Desktop.

Dave: That's shocking.

Chris: It is to me, too.

Dave: Yeah. Yeah.

Chris: Absolutely shocking.

Dave: That seems like the first thing Steve Jobs would have done. [Laughter]

Chris: Right. It's like a little used feature. It's a little dangerous.

Dave: Yeah. Yeah.

Chris: Yeah. That should go. [Laughter]

Dave: It seems like he would have said, "We don't need this." Yeah. Yeah.

Chris: But that's cool that they have it. I'm generally a fan of user style sheets. I'm still an Arc user, much to my surprise, really. I tended to find myself headed back to software that I know better when I veer away.

Dave: Mm-hmm.

Chris: But no, I don't think... I honestly don't think I could go back anymore. I use every feature of this thing. I love it.

Dave: I use Arc a lot, yeah. I like Arc. Big fan. Huge fan.

Chris: Yeah. I know Edge had some of the stuff, like if you really wanted left tabs or something, which I'm convinced that 50% of Arc's nicety, to me, is the left, putting all the stuff on the left, which gives you so much more room.

If you tried to put that much stuff at the top, it would just look horrible. It'd look like old-school Microsoft Word with all the toolbars open.

Dave: Like the ribbons, yeah. Yeah.

Chris: Yeah, that's not going to work. But the left is a much more natural fit, and I really like that.

Dave: Well, and I like that I have Elk for Mastodon. I have Feedbin and GitHub is like my pinned, my super-pins.

Chris: Oh, hilarious. Those are my pins, too. But I put my Gmail up there, too, and CodePen.

Dave: Oh... Yeah. Yeah. Okay. Okay.

Chris: I have seven at the moment, the little super pins.

Dave: Yeah. Then I have three pins for my home. I have a bunch of folders and stuff for my work, like all of our environments and all of our - whatever - login, services we're using for development and for marketing or for design and stuff, just so I can get to it pretty quick.

Chris: Mm-hmm.


Dave: Anyway, it's been good. I was going to say I have been getting into boosts. I wrote a boost recently. I should probably do a blog post on it.

Do you remember the old, the people who make IA?

Chris: Yeah.

Dave: They wrote a blog post about how Twitter should show bots, identify bots in feeds, and present them differently.

Chris: Really? That seems like an interesting thing for them to weigh in on.

Dave: Yeah. I think it was just kind of like, "Domo Arigato," was the name of the post. "Make bots identifiable," and it was just basically this idea of can you... It would be cool to know if I'm talking to a bot if I'm talking to a human. You know?

Chris: Yeah.

Dave: Because that's different if I'm talking to Brad Frost or I'm talking to Hacker News Y-combinator top post feed. Those are different, right? Those are different experiences, and so I built this, and I'm doing it on Elk but for Mastodon. One thing that Mastodon does that Twitter doesn't is it'll identify bots.

Chris: Identify bots. Yeah, it does.

Dave: I wrote a little boost that lets you find whether or not something is a bot, and then it'll switch it to teletype, like a monospace font.

Chris: Oh, cool!

Dave: Yeah.

Chris: Good idea.

Dave: Every once in a while, the Accessibility Project feed will come into my Mastodon, and guess what. It's a bot.

Chris: Yeah.

Dave: So, it gets teletyped.

Chris: Nice.

Dave: It's fun.

Chris: I like how it leans into (at the moment) that type of personal choice stuff, like, "I want to do this for me. That's why I'm doing it," which is the spirit of user CSS. The alternative being that they try to make it a bigger deal than it is and be like, "We're going to have a marketplace for them and user ratings and install the super GitHub theme that makes it purple," or whatever.

I feel like, ugh. You know? I've just seen that done enough that it's like, "Don't do that. It's not as interesting as you think it is," which they didn't do. It's just a tucked-in little nicety feature in there, and it's executed nicely, too, in how it does it as an extension, which is kind of the correct path towards that, I think.

Dave: Yeah. It's not the whole thing. it's just like, "Hey, you can do this." I don't know. I like it. I think there's a lot--

Chris: Crucially, JavaScript, too.

Dave: JavaScript, too. It's a Chrome Extension. It bundles a Chrome extension.

Chris: Right.

Dave: That's what spits out when you do the boost. But they just... like, "Dave Rupert Chrome extension developer," is actually less exciting than Boost Maker. [Laughter] I like making boosts. I hate making Chrome extensions.

Chris: Yeah. Oh, yeah. There's no effort involved at all. You just make a new boost. You type the code, and you're done. It's all packaged up and jacked onto that website. So, cool.

Dave: Every website or a certain website.

Chris: Right.

Dave: It kind of does, "Is this for every website?"

Chris: They said... Remember? Didn't we talk to their designer that said that everybody just does one website.

Dave: Yeah.

Chris: Yeah.

Dave: You're pretty brave if you're like, "I'm going to control every website." [Laughter]

Chris: Yeah. I can't even think of a good example of what you would do.

Dave: Cloud....

Chris: I don't know. Maybe block some stuff. Oh, yeah, that's--

Dave: Yeah.


Chris: That's classic, I suppose. But the JavaScript thing is nice, right? In your bot one, if you're like, "Oh, the perfect little element doesn't exist in order to use a pseudo-element." Let's say you wanted to put the word bot into Elk, which I don't think... It might identify it somehow. But let's say you wanted to identify it in a special way, and you needed actual HTML to do it. It's one thing to just get real clever with the CSS and figure out the perfect selectors to put stuff on there, but it's easier in JavaScript to just be like, "Enter HTML equals."

Dave: Yeah. Yeah, well, I'm using bad selectors, but what's interesting is Elk uses Tailwind, as you do. Or whatever Anthony Fu's version of Tailwind is.

Chris: Oh, he's on the team, isn't he?

Dave: Yeah.

Chris: What is that?

Dave: It's Anthony Fu's fake Tailwind. "Ant Fu fake Tailwind..."


Chris: I'll type into GPT4 and see.

Dave: Who knows CSS? Atomic CSS Engine.

Chris: Windy? Is it Windy? Is it that one?

Dave: Windy. It might be Windy. Something like that. Uno CSS or Windy, one of those. It's an atomic CSS library.

Chris: Ooh... GPT4 wanted nothing to do with that question.

Dave: Yeah. It is really...


Dave: GPT4 is just like, "Hmm... I don't know. I'm better at planning a trip."

What I'm realizing about CSS, like writing boosts and encountering Tailwind sites or Tailwind-like, is I appreciate CSS as an API for people to write their own custom styles. That's part of CSS. It's like, "Hey, actually, we have these class names and anyone can override them and update everything how you see fit."

I forget that CSS is a public styling API. And so, when your class names are robo barf that change every week or your class names are just generic or just random combinations of Tailwind selectors, you lose that API surface.

I'm not saying this to be a hater pants. Although, I probably could be. But I'm realizing one benefit - it would be easier to customize any site you want and add the tools or add the accessibility features or add anything in a boost if we had... if you just took the extra step and named your components and offered that as a public name.

You can do that in a data attribute -- I don't care -- because I can style or select off of that. But when it's just a random slurry of Tailwind classes, I can't do that effectively.

Chris: That's right. Yeah. I was doing this a little bit with... some things evolve at CodePen, thinking about embeds of the future. Well, we offer not only... You can link up a theme for a CodePen embed.

Dave: Yeah.

Chris: And apply custom CSS to it. Well, that's kind of a promise that that's going to continue to work. As we evolve it, we just have to honor the classes and IDs that were on the important structural aspects of the embed (as it changes).

Dave: Yeah. Right.

Chris: Which will do the best we can. I mean I think we can get all the classes and IDs right. But CSS being this public styling API, who knows what kind of weird selectors people wrote. Maybe you wrote div arrow div arrow div (and changed the font). Well, I can't necessarily promise that that's going to be the exact structure.

Dave: Yeah, but if you had editor or HTML tab, CSS tab, those could maybe stick. Then even if instead of letting people pick colors in an admin, if they could write CSS variables on their site or something and that's what CodePen uses, that's cool, but those variables then have to be there forever. And if you add a feature, you need to make sure those variables don't change or else everyone's embeds kind of choke.

That's very interesting to me. That would be a hard problem to solve because there are a lot of CodePen embeds out there.

Chris: Right. There are. Hopefully... I'm not too worried about it. I think it'll be okay.

Dave: It's a solvable problem.


Chris: Josh is wondering. The further he's gotten in his career, he does less and less coding [laughter] or anything he actually cares about or is good at. Kind of a classic thing, right?

"Oh, you're a good programmer? I'm going to promote you to manager." [Laughter] Then you never code again.

Dave: Wha-wha...

Chris: And it's sad for a lot of people.

Dave: Yeah.

Chris: "It feels like my actual job is resolving merge conflicts and debugging failed tests and wrestling with CI and fiddly tooling kind of stuff."

It's still coding adjacent, I'd say. Some people probably consider you lucky almost. But is that just how it is? Are we so mired in tooling and testing and infrastructure that we are not even developers anymore? We're just specialized systems whisperers. [Laughter]

Dave: Ooh...

Chris: Josh is not a fan.

Dave: Yeah. I feel you on this. I've actually had to start writing off days of my weeks. My Mondays and Tuesdays aren't for coding anymore. Monday is business, getting things lined up, making sure everything is unblocked in code reviews. And Tuesday is also code reviews or just making sure everything... It's kind of more planning day, kind of, or get everybody on the same page day.

Yeah. I'm feeling you on this. I don't know how your weeks shape up, Chris. But it's just like only on Wednesday, Thursday, Friday do I have big windows to sit and code. And it's kind of psyching me out because I like the coding part. I want to finish the coding part and feel like I did it. But so much of my Mondays and Tuesdays are just logistics, getting that hammered out.

So, I don't know. Do you feel like you're in the--?


Chris: Sometimes. It's just that every week is different, kind of. You know? There'll definitely be times where it's just like I didn't do anything but work on processes and stuff. I'm just not the perfect guy for that at CodePen, though. If there's some big problem with CI or whatever, the chances of that being squarely in my thing that I'm doing that week is low.

But I am kind of being a part of it going on. It can still be the topic of the week, even if I'm not the one necessarily solving the problem in the end.

Dave: Yeah. I wish you could put that on the calendar. I actually used to (when I was working for a large pizza company). I used to write down all the times there were a breakage or when I got pulled into a firefight or when I got pulled into... I just started mapping it on my calendar, like here's where I was.

I think it was something like 15 days a month, I was putting our fires and not coding. So, I could kind of be like, "So, when you ask me where is something and why is this not done, I'll tell you because, for the last 15 days or 15 days of this last 4 weeks, I have been just stuck fighting alligators in the river."

So, it might be worth documenting. I find documenting, too, has this other effect of, like, you think it's a lot or maybe it is a lot. But now you have actual quantified data on it. You can say, "Tuesday morning, I was fixing a merge conflict. Tuesday afternoon, I was fixing a merge conflict or a failing test." So, you can kind of--

Your bias is to think it's worse than it is, the negativity bias. You perceive negative things worse or you pay attention to negative things more.

Chris: Mm-hmm.

Dave: Does that make sense? Than good, positive things.

Chris: Right. One person says your blog post sucked and that's all you can think about instead of the 100 people that congratulated you.

Dave: Yeah. Literally with Luro, I posted a blog post and got three likes on Twitter, dude. I just was like, "Oh, no! That's bad." But we had 20 sign-ups or something for the application, come through because of that. They didn't click "like" but they signed up for the app. That's the actual outcome I wanted, but yeah. You can get psyched out. I was feeling negative because it was like my tweet didn't get likes. That's too bad.

Chris: Right.

Dave: But the positive outcome happened. Anyway, we have a negativity bias, so you may think all your time is going to this, and it might actually be, but make sure you write that down and put it on a little calendar. Print out. I love printing out those dumb calendars you find online and just fill it in. Draw blocks and fill it in because you are probably not wrong.

But you can also show this as evidence to your manager and be like, "Here. Look. I'm not making it up. This is stupid."

I feel like it's ammo. It's sanity. It's checking your biases. That might be worth doing it.


Chris: Yeah. I wonder. You always have choices. If you've made it up that level, maybe you can bounce around at the org or find a different job or whatever. But it's true that if you roll up to some new job and be like, "Oh, at my last job I had to do all this management and process stuff. And at this new job, all I want to do is code," the chances of them being like, "Oh, here's more money than to do less." Not less, but in the eyes of the industry maybe less. Usually, the IC or individual contributor roles are not paid as well. Just aren't.

Dave: Yeah.

Chris: Supply and demand.

Dave: Yeah, I don't get that, though. Anyway, I have so many issues with how the whole setup is setup.

There are also technical managers I think are super valuable. People who actually know how to code. People who know how easy it is to land a feature. But knowing about technology and management are almost difficult skills. But I don't know. It's just so weird.

It's so weird in an engineering department when you don't have a technical manager and you're just like, "Hey, are we...? Do you want me to sit down and explain everything to you?" But it's hard.

Chris: I used to be like, "I want to be a manager. I'm sick of coding," kind of thing, which I still kind of feel like.

Dave: Mm-hmm.

Chris: My job has never been 100% just like I am a leader and not an individual contributor anymore. At the moment, I'm still definitely an individual contributor.

Dave: Yeah. Yeah. Yeah, I watch Dev Lead videos, and they're all like, "Empowering your team." [Laughter] And I'm just like, "Bro, I'm still writing code. I'm probably far away from that." Different worlds. Different budgets, different seed funding rounds, that sort of stuff.

Chris: Right. I don't know. Things will change. Next week, they'll change, Dave. I don't know how, but they're going to.

Dave: Tomorrow. Next week is different. Should we end on an affirmation?

Chris: Absolutely.

[meditative music playing]

Dave: You are not your job. You are valuable. You have cool hair or maybe no hair. That's cool too.

You may like Ska. If you're listening to this podcast, there's a high overlap there.

Thank you for downloading this in your podcatcher of choice. Star, heart, favorite it up.



[meditative music fades]