626: We Were Wrong and Keep Getting in Trouble
Chris has some follow up on blog posts and past podcast episodes to respond to including browsers and browser engines, advertising on the web, magazines, Cara, peak AI slop, and view transitions.
Guests
Chris Coyier and Dave Rupert
Time Jump Links
Links
- FROSTAPALOOZA - A CONCERT/PARTY/HAPPENING ON AUGUST 17th, 2024
- kottke.org - home of fine hypertext products
- Daring Fireball
- Cory Doctorow's craphound.com | Cory Doctorow's Literary Works
- Moonbound
- Second Foundation
- Servo Web Rendering Engine
- Ladybird
- Flow Browser
- Learn. Build. Grow. Together.
- Artist Platform
- Tech News
- The Homepage of Dave Rupert
- View Transitions Break
- Misconceptions about view transitions | Blog | Chrome for Developers
Episode Sponsors 🧡
Transcript
Dave Rupert: [vocal percussion]
Chris Coyier: Is that what you're going to sound like at Frostapalooza?
Dave: Yeah.
Chris: I think so.
Dave: Maybe.
[Laughter]
Dave: I think Brad took all the cool bass lines. I'm not going to throw Brad under the bus, but it's his birthday. It's fine. He took all the cool bass lines.
Chris: Makes sense.
Dave: I get to play some cool ones, so--
[Banjo music]
MANTRA: Just Build Websites!
Chris: Oh, that's cool. That's coming up in a few weeks, so we'll see you there - if anybody happens to be going.
Yeah, no guest this week. Just a normal episode of the ShopTalk Show.
I keep getting in trouble about stuff that I publish.
Dave: Ruh roh!
Chris: I'm a little hot on the publish button. I always have been. I've got 20 years of pressing publish.
Dave: Publish first? Yeah, you're good at it. You're probably the best at it, to be honest.
Chris: [Laughter]
Dave: I'm not going to blow smoke, but you're kind of the best I've ever come across.
Chris: Well, it comes... It's a matter of, like, "Ah, crap! I've got to get something out today, so here we go."
Dave: You're like the Michael Jordan of blogging. The only person... Kottke and Gruber and fricken' -- who is the other guy?
Chris: Definitely not in their league.
Dave: Doctorow are the only people in your league, dude.
Chris: [Laughter] How does Doctorow write books, too? That's something else.
Dave: Dude. I don't... And he's obviously not using AI because he's completely anti-AI.
Chris: Yeah.
Dave: But he's just like, "Here are 7,000 words on," whatever--
Chris: Yeah, he's good.
Dave: "The international highway code system," or whatever. [Laughter]
Chris: Yeah. It's always some niche subject, too. I love it when people have the ability to wrap their mind around some far away subject.
Robin Sloan is not in the blogging category, but he is a hell of a good writer and has a new book out, Moon--
Dave: Moonbound?
Chris: Yeah. I'm halfway through it and I can't even remember the name of the book. The moon does come up in the book, but it's pretty tangential. I've been really enjoying it so far. It's weird as heck! [Laughter]
Dave: Really? Super weird?
Chris: Yeah, it's super weird.
Dave: It's on my shortlist to read, but--
Chris: I would recommend it so far. I find it very endearing and fun. But also, it's got some very big concepts thrown at you right away. Then you get a quarter of the way through the book, and they're like, "And now this world is super different again."
You can kind of see. You put the book on its side, and you can see these... It's kind of split into four chunks. I'm just waiting for the next one now. Now that one has happened and a lot is different, I'm like, "Oh, dude. They're going to do it again, aren't they?"
Dave: He's going to switch it up again, huh?
Chris: Yeah.
Dave: Yeah. Yeah, that's tough. Asimov's Second Foundation - or something - was a book I'm thinking of in that regard. It was time jumpy.
Chris: Mm-hmm. Mm-hmm.
Dave: You go to the next chapter, and it's either 30 years or 300 years in the future. I just was like, "Whoa, man! I'm not this good."
Chris: Yeah.
Dave: I feel like I'm time jumping. I'm like, "Who is this?"
Chris: I get that that can be fun narratively and stuff, but yeah, you've got to be really careful, especially for the dummies like me. Sometimes I'm reading and I'm not... It's weird to say, but I'm not... I don't have all of my attention for you even though all I'm doing is staring at the words on a page. My brain might be a little disconnected. I'm like, "Make it easier for me," which is why I don't begrudge some people that just read young adult fiction and stuff. It's just not that demanding of you as a reader.
Dave: My wife is all in on YA and just rips through books.
Chris: Yeah.
Dave: Probably like 70 a year. She just shreds.
Chris: Really? Yeah.
Dave: It's just because it's easy, and she's out of YA books. Like literally.
[Laughter]
Dave: So, she's starting to read books I read. I'm like, "Are you sure?"
Chris: Yeah.
Dave: But anyway.
Chris: I like it.
Chris: Here's one thing I got in trouble about was... Not in trouble. I publish something with a major omission.
I had noted. That's one way you can blog, dude, if you have a strong system for saving links because you come across 100 links a day. I probably save five of them. That list is really long, and I try to curate it and get rid of old stuff - or whatever. But then there's always something to write about or think about or something.
You just kind of look through the list, and you see if anything is interesting that you feel like, "Yeah! I've had enough thoughts about this that it's time."
One of them was that I saved that... I think it was Chris Wanstrath - or whatever - one of the GitHub, OG GitHub founders or something has put some money behind an independent browser project called Ladybird, which appears to be a fork of Servo OS or Serenity OS, I think it is.
Anyway, yeah, that goes to show how much I know about it, right? Like I have any right to be writing about it. But all I was trying to do is point at it and say, "Hey, look. Isn't this interesting?"
It's interesting in that I probably have said this on this show many times in the past is that we used to have four browser engines. Now we have three. And I'm talking about... I always like to just refer to them as Safari, Chrome, and Firefox because that's how we think of them. But of course, the browser engines underneath the hood have different names.
Dave: WebKit, Chromium--
Chris: Lint, Gecko, and whatever.
Dave: Yeah.
Chris: Is Gecko even dead now?
Dave: Gecko, is it? Yeah.
Chris: Is it something else now? That's why it's hard to remember because I don't live in that world.
Dave: Servo.
Chris: I use the browser.
Dave: The renderer, right? Okay.
Chris: Well, Servo is the Igalia one that I forgot. That's what I mean. I wasn't in trouble. It just was Mr. Brian likes to keep us in check about Igalia stuff.
Dave: [Laughter] It's his part time job.
Chris: So, Ladybird is out there, and it has the nicest designed homepage of them, let's say. When you see it, you're like, "Wow, they look serious!" I've mentioned that on this show before, too. A really nicely designed page is a cheat code for people taking your product way more seriously.
Dave: Yeah. Yeah.
Chris: The pixels are in a little bit different place, so then people open their eyes, they look, and they really are like, "Holy cow. This is for real," when all it is, is just some nicely put together HTML and CSS. But it's the nicest one, so I take it more seriously. It's working on me.
Dave: Marketing, baby!
Chris: Not to mention it has this GitHub guy behind it and whatever and some other OG kind of people.
Dave: Yeah.
Chris: A little controversy around it in people dug up some old PRs and stuff against Serenity OS where these people were a little curt. One of them had to do with somebody replaced the word "he" with "they" in a PR, and they were like, "This is not a place for politics," kind of thing. You're like, "Hmm... that's something."
Dave: Oh, you douche.
Chris: I'm sure that the story there is probably a little bit deeper. I looked at the PR and they replaced one instance of it in the entire docs, and I could see having a bad day and being like, "I don't want to--" If you're going to do this, maybe just do it. Don't just be like, "I'm going to pick one line of code and make a PR about it," instead of being -- I don't know -- a little more thoughtful about the whole approach to it. But anyway, who knows what the whole story is there. But of course, now that comment thread is just flooded with people being like, "Screw you, man!"
Dave: Yeah.
Chris: Or "Screw you."
Dave: Dude, I just... uh... Why do people want to die on that hill, man?
Chris: Yeah.
Dave: Because I read that PR. Their just works better because it's not--
Chris: Right.
Dave: You don't need a gender-specific Web developer or whatever browser developer in that situation.
Chris: No. Yeah, the right answer is just merge it or whatever. But I could kind of see. I don't like half-assed PRs myself either. Did you scrounge the whole docs and change it all then and present the case why you're--?
Dave: Yeah. Did you search GitHub for the word "he" and just start riffling PRs?
Chris: Yeah.
Dave: Yeah.
Chris: Yeah, and if somebody is having a bad day, I mean I kind of get it. Not an excuse. It's still... You should... Instead... And then they didn't double down, but they just didn't deal with it. They just closed the issue, like, "Oh, too hot. Closing." Whatever.
Dave: Yeah. Yeah.
Chris: Anyway, that's not even on the Ladybird project. That's on the original Serenity OS project.
Dave: Oh, wow! I thought it was Ladybird. Okay.
Chris: No, it's not. But Ladybird is forked from it - or whatever. Anyway, okay, we've said the word Ladybird enough. What is it?
It's, "We're going to write from absolutely scratch a new browser engine and all the parts of the browser engine," so you need a JavaScript machine and a CSS machine. You need parsers and things that deal with JPEGs. It's lots of parts, so there's not just one thing called a browser engine. There are lots of parts. They all come together, and they make a browser.
They're saying, "For the most part, we're going to write all this stuff from scratch. But we had the head start of Serenity. And now that we're broken off from Serenity," who was real heavy on we're only ever going to write every line of this from scratch, Ladybird says, "ah, we'll use third-party stuff if we need to." Why write a JPEG machine from scratch when there's a free JPEG machine sitting right here?
The whole why of the thing is that, in their words, Google has just got its hands too deep into everything. Most browsers are Chrome or Chrome forks of the browser engines that power it. Then there's Apple. But Apple gets a ton of money from Google for being the default browser engine thing there, so Google's fingers are there, too. And Mozilla exists solely off of Google teat, as far as we know. So, Google has their hands deeply in all three of these browser engines.
Now, could that be debated? Are there people listening to this who are bristling at that characterization? Absolutely. Those are their words, not necessarily mine. This is the why of Ladybird by that Chris guy.
Dave: Okay. I like the ethos. I like the ethos. I think, yeah, as I understand it, the WebKit budget is not determined by the search agreement deal. [Laughter] But if you treat it as one big bucket of money, then yes it is maybe funded by the search agreement deal. I don't know.
Chris: Apple does whatever Apple wants to do. I'm sure that's the lightest connection here.
Dave: Yeah.
Chris: I'm sure Apple is happy to take some of Google's money, but Apple has more money than God, so I don't know that they--
Dave: Well, I think it's, yeah, Apple's browser is also very foundational to their operating system, so I don't think they would ever -- both operating systems, so I don't think they'd ever let it go aside.
Chris: They don't get pushed around by Google is what I'm trying to say. But whatever.
Dave: For sure.
Chris: Do I like the idea of an independent browser engine that's not under anyone's thumb whatsoever who has pledged that they are not going to... That they're for the users that use this thing. They are not going to take a default search engine money. They won't take it.
Wow, right? Yeah, wow! But I always thought... circling back all the way to what I said. I've talked about this on this show before. What I was saying, what I've talked about, is that I don't think it's possible. I don't think we'll ever see in our lifetimes another independent browser engine.
The reason I thought that is because I'm like, "These things were being worked on when I was born, practically." There is a lifetime of code behind browser engines, tens of millions of lines of code that have evolved and evolved and evolved and evolved to get to where we've gotten and have incredible security implications all throughout them. They're designed to adhere to really long, really complicated specs, hundreds and thousands of them, of these specs.
That is not a trivial project. It's an unbelievably complicated project to even start on let alone end up with a product, especially when you're not going to use any code whatsoever from any of the other engines. I thought, conservatively, if you're going to start over -- in my opinion, conservatively.
Let's say you took 100 developers, you paid them all $100,000 a year, and you'd give them 5 years to do it. Let's say they could do it. That's $50 million, and that's low because, you know, I just think that's not enough developers, that's not enough time, and you're not paying them enough money. That's conservative on all three estimates.
Who has got--? Let's go with it. Who has got $50 million to throw at this project? Where is the $50 million going to recoup itself because that's how business works? It doesn't exist. It's not going to happen. That was my thinking, right?
But here is how I'm already wrong, so I'm willing to throw in the towel here. Ladybird now exists and apparently, it's rendering some websites. So, we'll see if it goes anywhere, but doing okay.
Then I say, well, there's Flow, too. Have you heard of Flow? That's another company that's trying to produce one. Apparently, it's a little more secretive, a little closed source. Nobody quite knows what's going on there, but they have screenshots of their browser rendering stuff. They try to keep people updated and stuff.
Then I forgot to mention Servo, but Servo is kind of ushered by Igalia and I'm told is the furthest along of all three of them and is passing some 1.3 million webpage tests, which is the big test suite against all browsers. So, they're doing pretty good, too.
Now there are three companies trying to do this, or three organizations doing this. So, I'm wrong. This seems healthy. It seems like people are trying.
Now, do I think in a perfect world all three of these would get together and use their resources to actually make one actually happen? Yeah, but that's never how anything works. I just thought it could happen because there's no money yet. You know?
I get it when there are two existing businesses that all have their different business models. They're too hard to smash together then because it just has gotten too complicated incentive-wise and money-wise. But these are just open-source things -- except Flow, I guess.
But Flow is the one I understood the most early on because one of their things (when you to the Flow website) is... Here's one of the things they have is a TV browser. They were going to make a browser that's very specifically great for TVs. I was like, "That I get," because then you look at that $50 million number and you're like, "Meh, it's still a lot of money but a company like Samsung or something that makes a whole crap load of TVs -- if they had some amazing browser product in it -- I could see them footing the bill of $50 million over 5 years because they wanted some... They thought that it would bring them some serious competitive advantage. You could kind of see it. Although, you go to the Flow page and they have a TV browser already, but that's WebKit.
Dave: Right, right.
Chris: They're making a new browser, but I don't think the TV angle is it.
Dave: This seems like it has a reason, more so than the others. They're competing in the big field, right? This seems like it's very, like, "We are going to work on low-power browsers. We're going to drive the cost of a kiosk or a TV OS - or whatever - down to zero."
Chris: Yes. Doesn't that seem like that has a business plan behind it where the other two just absolutely don't?
Dave: Yeah or it's just different. They were saying now you can get Flow browser for Raspberry Pi, which is kind of wild. I don't know. Surfing on Raspberry Pi has never been my favorite experience.
Chris: [Laughter] Right.
Dave: But it's probably, historically, you could only use this weird version of Firefox, Firefox ESB - or something.
Chris: Oh...
Dave: Something weird, but it was basically just--
Chris: Yeah, at least they have a plan, right? But you know, I get that big, ambitious, open-source projects are a thing.
Dave: Yeah.
Chris: Like Linux is massive and has tons of contributors and doesn't have any super particularly perfectly clear business plan that I know of. You don't write a check to Linux to spin up Linux on a server. It's just there. It's just open-source. You just use it. But clearly, it works.
It seems like Ladybird has a similar model. You go to their website and they're like, "The lowest sponsorship is $5,000," and it goes way up from there. You're like, "What are you--?" To get a logo on a website? Who are you talking to, to get these checks?
Dave: Hmm...
Chris: But that's what they're gunning for is large scale. That one is particularly for Ladybird.
Dave: Chris, are we going to do it? Are we going to do it? Let's go.
Chris: Are we going to what?
Dave: Let's go in. Let's sponsor it.
Chris: Go in on it?
Dave: Cool.
Chris: Yeah.
Dave: We can have a browser. We're going to have a browser, Chris.
Chris: Yeah. I mean I do like the idea. I'm attracted to how wrong I was about this, and I would like to see it done because it does seem like it's possible that corporate greed gets in the way of any of our existing browser engines to the point where it's just too ridiculous and there is a future where the browsers of the future are powered by these independent engines.
Dave: Well, we should acknowledge the situation. Google said, "We are not going to deprecate third-party cookies." The plan was to deprecate third-party cookies and Google, this week, said--
Chris: They bailed.
Dave: "Ah... Sorry. That hurts the old pocketbook too much." So, that's a deal, right? That's a concern. Maybe it broke a bunch of sites. I don't know. But--
Chris: Did it, though?
Dave: Did it?
Chris: The other two browsers did it.
Dave: Other browsers are doing it? I don't know. A lot of stuff is busted in Firefox.
[Laughter]
Dave: But in Firefox says, "We're turning this privacy thing off by default," or whatever. What was that news? I'm murdering that story. Okay, the goal is not to--
I'm reading from maketecheasier.com. "The goal is not to just deliver your personal data to advertisers but to allow advertisers to get what they're looking for while also allowing you to keep your privacy." So, they have... Yeah, it was in a Reddit post here that they're basically... They opened up this sort of avenue for advertisers to advertise to you, and I don't know what that is but it's just like, "Dude, what is Firefox doing?"
Chris: Even Mozilla is kind of loosening the belt a little bit on what they're allowing to be tracked and things like that.
Dave: Yeah, exactly. They are the privacy browser, man, and then they... You know?
Chris: Right. You know an interesting one about this is that all of it is in service of powering not just contextual ads but the kind that's like, "Oh, I see Dave clicked on Nike shoes. I'm going to show him Nike ads." Nike, Nike, Nike, Nike, Nike. Right?
That's that kind of, like, tracking-based ad that Meta made popular, kind of. They're like, "We know so much about our users that we're able to serve ads that are based on the things that they do." That's what we're all so annoyed about and don't like. Don't spy on me. Don't do that. I don't like it. It feels creepy.
At the Facebook level, you've seen it. If you decided to start a dog bakery tomorrow, Dave, it may appeal to you. It may be in books that you read. It may be very highly encouraged that you go onto Facebook, and you do an ad campaign targeting dog owners in Austin, Texas, that are within 18 miles of your geographic location. You can do that on Meta, right? That's a thing that you can do, and that's how they are so big and have made as much money as they've made.
But there's not a lot of proof, amazingly to me, that that performs terribly much better than just a contextual page, like you just deciding, "Hey, I'm just going to run an ad for my dog bakery on dog bakery websites or dog bakery Facebook pages - or whatever - where I don't need tracking information to do so." It's just contextual. It's just, I'm going to put my dog bakery stuff around other dog stuff. That seems to do just as well. All this privacy-breaking crap that browsers are doing and advertising companies are doing, there's no proof that it's any good.
Dave: Yeah.
Chris: That's what blows my mind about all this is so many concessions are made for it when there's no proof it even fricken' works.
Dave: Yeah. I saw this Google post. It was like, "Oh, if having identity means 50% more likely to get a conversion," or something like that, so it's very valuable to customers. But then that blog post cited another blog post that was on Google that cited that blog post. It was just this circular reason, like literal-
Chris: Uroboros.
Dave: Yeah.
[Laughter]
Dave: Literally just like two Spidermans pointing at each other and saying, "See, ads are good."
Chris: See.
Dave: I don't know. I think I want to read up more on this whole category-based tracking or whatever is better - or something like that. Yeah, if I have a dog food company, dude, guess what, I want to tell Google or YouTube, "Any video about dogs, put my ad on there, man," or I sell USB hubs. I'm Anchor. Guess what, the Verge, I want tech blogs. You know what I mean?
Chris: Well, that's contextual advertising that doesn't need any privacy-invasive stuff to do, which is good.
Dave: And it's just as good, right?
Chris: Right.
Dave: I've started to wonder. You know the stat more than other people, but I think Vitaly famously said 75% of people block ads on Smashing, or something like that.
Chris: Hmm...
Dave: Or he had some huge number, right? How many more ads would we serve if they weren't trying to follow you around the fricken' Internet? How many more ads could people serve and get in front of eyeballs if privacy was just guaranteed?
Chris: Right. But there are more reasons for that. It's like some people turn it off because they think it's an invasion of privacy, which is it.
Dave: Yeah.
Chris: But people also do it because performance, because it slows down websites because ad tech can be so heavy and so gross. You're seeing the grossest of them are the ones that do. And I've played with this stuff, so it's like I get it. Or the bidding ones where it's like right on the fly it decides, okay, who is going to win this page view. Those ones, oh, my god. They make like 80 requests. It's unbelievable how much.
Flipping that off from that perspective, that would be my personal number one reason to turn it off is because it's just chewing through my bandwidth and just making these insane amount of requests, all of which are trying to steal little bits of privacy stuff, too. So, it's all related. But still, the performance is a big deal.
But probably I would think the number one reason people use this is because they're visually awful. They push the page around. They lay on top of content. They do all this stuff to make the experience of visiting the website awful. Then all you do is install one little browser extension and the Web becomes this much more palatable place. Of course, people use them.
Dave: Yeah. It's fast. It's calm. It works. I'm not watching a video and getting--
Chris: Yeah. I'll be on the record and say I use the shit out of ad blockers.
Dave: Yeah but my thing is I respect your choice, but does that defund the Web? You know what I mean? How do blogs, good newspapers, or whatever get paid? Is it paywalls now? Now everything is a fricken' paywall. Crap. That's also bad. You know?
Chris: Well, it didn't... On CSS-Tricks land, the ways around that kind of thing were, for one thing, a really popular ad blocker was... What are the big ones? There's Ghostery.
Dave: UBlock.
Chris: UBlock, Origin, but there's another one. Just Adblock Plus, I think.
Dave: Yeah.
Chris: I think maybe even the biggest one in that they had a philosophy at Adblock Plus. The idea was that they didn't block all ads just because they are ads. They blocked the ones that were gross and somehow, some way, BuySellAds had an agreement with them and they proved up to Adblock Plus's standards that they did nothing uncouth with the advertising. They sold ads. They displayed ads. But they didn't run trackers. They didn't do weird cookie crap. It was a very clean advertising company. Even Adblock Plus, it would get passed.
I could run Adblock Plus and still see BuySellAds ads in there. I don't know if that has changed over time or not. But that was impressive.
And there's such a thing as sponsored content where that worked. That was probably our number one seller in the last, like, five years of me running it is that it was, like, do a blog post about the subject. It's kind of like how Daring Fireball does it.
Dave: Yeah.
Chris: We did even less of them than Daring Fireball did. But that's not ad-blockable either and it can be tasteful.
Dave: I see Jason Lengstorf do that on his for Web devs 1 App kind of video - or whatever.
Chris: Yeah. He gets a big sponsor for each one of those. Yeah.
Dave: Yeah, like Amplify or somebody will come in and be like, "Hey, do this."
Chris: Yeah. I think he charges beaucoup bucks for that, too, because a lot of times then they even go so far as using the piece of technology that is the sponsor's thing.
Dave: Yeah, yeah.
Chris: Like Twilio sponsors, make sure you do something with Twilio in the video. He's so entertaining and the people he gets are so good that you still watch it.
Dave: Yeah.
Chris: My wife gets Vogue magazine, which is 80% ads, and people can't wait to get it.
Dave: Yeah. Isn't that wild? Yeah.
Chris: Yeah.
Dave: Magazines are like $20 now. [Laughter] That's so weird!
Chris: Yeah.
Dave: I tried to buy some magazines at the airport recently for this podcast. It was a business expense.
Chris: I had a good Scientific American the other day.
Dave: Ooh! That's nice. Yeah, but then I was like, "Oh, man. These are just... I'm going to go poor learning about - I don't know - how to build the perfect prepping, underground bunker." I'm going to go poor.
Chris: Yeah. Nice. I think they've gone downhill a little bit, not to be old man shakes fist at magazines.
Dave: [Laughter]
Chris: But I was trying to be convinced to buy a magazine at the airport the other day. I'm like, "These all suck!" You know?
Dave: Yeah. It's my life goal to be so bored I'll read a magazine. That's my new--
[Laughter]
Dave: That's one of my life goals is to just be so fucking bored I have a stack of magazines.
Chris: Yep.
Dave: Old Atlantics next to me, and I just read it with--
Chris: Right, with your feet up.
Dave: With my feet up. I'm like a grandpa.
Chris: Mm-hmm.
Dave: I've got the readers on, the cheaters. I'm just doing it. But not there yet.
Chris: That would be great.
Dave: Not there yet.
Chris: Yep.
Dave: Oh, we got in trouble about Kara, that photo app, too.
Chris: Oh, did we? Did we say something wrong?
Dave: Yeah. People wrote in. I want to make sure I got the name right. [Laughter] Yes, Kara App. The big thing about that, I think you asked is it just an Instagram clone, and I think was like, "Yes," but the big thing about it is that it is very... It was when they got charged a million bucks for their Vercel usage, or whatever.
Chris: Yeah.
Dave: But the big thing about it was they're an anti-AI. I think Instagram came out and said we're going to run AI on all of your photos. Their whole principle is we don't do AI, and you can pay for this feature called -- I think it's called Gleam or something like that.
Chris: Okay.
Dave: The Web app is not loading, so that sort of gives me [laughter] a lack of confidence.
Chris: It's working okay for me.
Dave: It's working okay for you? I guess maybe--
Chris: It must be a bandwidth. It is insane how many images load on this app, though. How do they stop it? Is it hand-curated?
Dave: Well, I think there's this little process almost like watermarking or something like that, so you can kind of fudge the EXIF data or something like that.
Chris: Oh...
Dave: And so, when an AI comes around.
Chris: That's how it knows?
Dave: Yeah. Or an AI comes around, it just sees squigglies or something. I wish I could see the technology because I would like to.
Chris: Yeah. It seems like one that wouldn't be worth fighting, like, "Oh, we're going to fight really hard so that we can post AI."
Dave: Glaze. It's called Glaze.
Chris: Glaze?
Dave: The Glaze Project.
Chris: That's the technology that keep the AI crap off stuff?
Dave: Yeah, the Glaze. What is Glaze and how does it work? The Glaze Project is developed by the SAND Lab at University of Chicago to protect human artists by disrupting style mimicry in the training of generative AI models. It's like Glaze will try to, like, basically if you try to train on this image, it's not going to give you that result - or whatever. I'm not sure how it accomplishes that.
Chris: Oh, I see. It's protective against what you upload. But what if I make a Kara app account and then I go over to Midjourney and I type in, "Sexy warrior holding sword," or whatever. "Get it," and then just uploaded it to my Kara account?
Dave: You could. You could do that. But maybe you get flagged. I don't know.
Chris: I would think you'd get flagged. Yeah, I wonder if every user is so hypervigilant and their eye is so good they could spot AI -- what are we calling it -- slop?
Dave: Slop, AI slop.
Chris: The could spot slop a mile away.
Dave: Yeah. It's funny how you can tell a Midjourney and a DALL-E.
Chris: Oh, yeah. You can still tell. But don't you think those days are limited, or do you think that's going to be forever? I feel like I can tell immediately and be like, "Yeah, AI." Whatever it is, I can tell.
Dave: I wonder. I wonder if it's going to get a little... I bet it gets better. That's my... I bet it gets... I bet there's one more leap.
Chris: Indistinction.
Dave: Yeah, but I think it's still going to have this, like... I don't know. I think it's going to get better. But I think it's going to have this leap where the fidelity is maybe more expressive or the styles are more expressive or something like that. But It'll be weird. It'll be like there's a hotdog on that Buddhist temple.
Chris: Yeah. It's interesting. Yeah, right. There'll be tells.
Dave: Yeah.
Chris: It's interesting how much of the news around this is that, like, "Well, we're out of data. We used it all up." [Laughter] Like anything that human beings has ever produced is now smurfed into these models and they're as smart as they're going to get. So, if there's innovation, it's not going to be because we find more data. It's going to be because innovation in how that data is used. That kind of makes me feel good, in a way, in that it seems like if the models are doing as good as they can do, you can invent a new style. It can write in such a way or create in such a way that doesn't look like the styles it's producing. Then bada-bing, you're cool again.
Dave: Yeah. I mean... yeah. I go back and forth. I think the slop thing is real. It's just everywhere, man. And it feels really impersonal. Does that make sense? It feels very impersonal. But if I have an image in my head but I don't have decades to learn how to Photoshop it, can I do it? Can you let me have fun with these? I don't know.
Chris: I thought people would be more mad about it. I'll call them out by name. There's a thing. I see people linked to it all the time, and I've read decent stuff on it. It's called the New Stack, the newstack.io.
Dave: Yeah.
Chris: It's a publication, right? They publish lots of stuff. I can point you right at stuff that is definitely AI slop. Just all over it, and it doesn't seem like anybody gives a crap. I think that's just where we're at. I don't know why.
It really bothers me. I can't look at anybody that links to it and just be like, "Oh, that website that publishes AI slop, no thanks. I won't be reading that," because some of it isn't. It seems like the stuff people are linking to isn't AI slop. It just is if you poke around on there, you're like, "Yeah, that's garbage."
The fact that you're willing to go there at all is so offensive to my life career of handcrafting content with my brain and fingers and stuff that I just can't. But then are people not mad because I'm just old and wagging my finger, or would there be people out there that'd be like, "What are you talking about, idiot old man? How could you not publish this stuff?" It's easier and it makes your business viable.
Dave: Right. Right. But then people take it the whole full thing. It's like whole YouTube videos with a robot talking, like the TikTok robot talking over. I'm just like, "Are we done? Are we done coming up with ideas? We're done. We just do some bullet points and that's it."
Chris: [Laughter] Part of the problem is it's not just me, like, "Oh, this--" It's not me knowing that it was slop. It's that slop has some specific meaning. Slop is untouched, only lightly edited, if anything. It's just like, "Take output. Put on website." That's what slop is, right?
If you read some article that's like, "Reasons to use React in 2024," and it's full of... "It has state management built-in," or just stuff that you're like, "What are you talking about? This was written by somebody who typed that title into a machine, and copy and pasted the output and put it on a blog post.
The problem is it's bad. It's not helpful. It's not helping me do the thing that that article set out to do. That's the problem.
Dave: Yeah, I sort of feel like it's not going to accomplish the goal you were hoping for. Maybe SEO and ad bucks or something.
Chris: Right. That goal, unfortunately, might still be served.
Dave: Although, I've read Google has changed their thing and they're kind of selectively surfacing sites now or something like that, which is kind of wrong.
Chris: Oh, God. Did you read that news? It was so shocking to me, I couldn't even believe it. I'm like, "Are you sure?"
Apparently, somebody has so boldly said that they just don't even index the whole Web anymore. They're not even trying.
Dave: They're not even trying.
Chris: You have to be on a short list of websites that get serviced. If you go make a website now, you definitely won't be on that list. You just won't show up in Google results, period. I was like, that's a bold ass statement.
Dave: Mm-hmm.
Chris: Is that really what's happening? How do you know that for sure?
Dave: Right. Yeah, I don't know. I don't know.
Chris: If that's true, that's pretty bombshell, I think. That'd be a pretty big scoop. "Google has given up on indexing the Internet." What?!
Dave: I think it was kind of like latent indexing or something like that. That was the test they used - or something like that. Yeah, it's pretty interesting days here for content. I don't know.
For me, I feel like you're disrespecting your readers if you're just doing that and you're not putting the effort in to clean it up and make it yours. Not against... I guess I'm not against a tool for helping you think. But I am against--
Chris: No. Yeah.
Dave: I want to read your thoughts. That's what I want to do.
Chris: Use the tool. Don't publish the slop.
Dave: Yeah.
Chris: Yeah, I get it. I get it. I do. I use them more and more. I'm not against all AI, period. But yeah, it tends to be something where you just have more and more intuition these days when you can guess that a tool like that is just going to give you a cleaner answer than you wanted to before, like, "Oh, what was this technology used to be called before it changed names?" or something. That thing is just going to tell you. It's just going to give you the answer in a sentence. Whereas Googling it feels like a wildcard these days of where you're going to find that answer.
Chris: Okay. The other thing I got in trouble was about view transitions.
Dave: Woops!
Chris: You know those? You use them on Dave's--
Dave: DaveRupert.com.
Chris: DaveRupert.com uses them.
Dave: Yep.
Chris: I actually kind of want to see right now. How are they--? Are they working okay for you?
Dave: I had to fix them. I had to switch over to the CSS property, the view transition auto CSS property over the metatag. I had the metatag and it kind of wasn't working, and I switched over to the thing.
They are not working in Safari or Safari TP, which is supposed to have it - or a version of it. But maybe it's not the MPA stuff, and so I am kind of like--
Chris: Right. We're talking about--
Dave: I don't know why it's not working in Safari. I still don't know.
Chris: Yeah, I don't know either. But there are two kinds of view transitions, as we pointed out before. There is a JavaScript API. It's a function, and you call it. Within the callback of the function, you change the DOM in some way. Then it transitions to before that and after that in the DOM. It's kind of like for anything that you're trying to change on a page or even if you're trying to change the "page," like in a single-page app. You could use that API.
Dave: Mm-hmm.
Chris: More interesting, even though I think that one is still extremely cool and have used it in production sometimes. For example, we had... I guess it's in production as far as I'm concerned in our CodePen alpha. But there's a list of collections. If you add a Pen to a collection, it just uses the view transitions API to move that collection to the top of the list being like, "Yeah, you're probably using that one. I'm going to make it easier for you to reach for." When we ordered that collection, that's the view transition that was being used.
Dave: Right.
Chris: On DaveRupert.com, you're not using that kind. You're using what is called cross-document view transitions, what you called it, which I like. I think the feature flag calls it view transitions for navigations.
Dave: Yes.
Chris: That's another thing. But it's a view transition between a full page refresh. You clicked an anchor link. Nothing is happening to that anchor link other than the browser is just like, "Okay, I will now change pages to that URL. Here we go."
Now, those do need to be same domain. So, in the case of Dave, it's just like going from your homepage to the URL of a blog post or whatever. Then if two elements on the old page and the new page happen to have the same CSS property applied to them, a view transition name, it has to match exactly and there can't be two that have the same name on the same page. Otherwise, the whole thing will just bail out.
But if there happens to be view transition name blog post one on both the old page and the new page, it will transition between them. You can control that with CSS, but even if you write no other CSS other than the name, it will move, and that's how your site works. The title of the blog post moves up from your list of posts to the top of the page at the top. That's how yours works, and it seems to be working pretty nicely, actually.
Dave: Yeah.
Chris: Okay. But here's the trouble part was that I've been saying, and part of this is based on an Eric Portis blog post. I'm willing to bring Eric into it because he was public about it anyway. But I've been talking to some other people that I won't drag into it yet because I don't know if they care to be dragged into it.
Eric's post was saying that view transitions break incremental rendering. Have you heard that?
Dave: I've heard, yes, and I've heard Eric say that. I super kind of still don't understand it. But then I think there's a block rendered equals blocking - or something--
Chris: Yeah.
Dave: --metatag you could put in. But that's kind of all I know.
Chris: Block equals rendering. It's the other way around.
Dave: Block equals rendering.
Chris: But here's the idea, and I think this is provable. I'm surprised it's not showing up on your site in a way, but okay. This is how my brain worked, right?
Now, you have some CSS where you wrote @view-transtion auto, or something. It's a little tiny block of CSS, right? And you put it on your page.
Dave: Mm-hmm. Yep.
Chris: That tells the browser, "Okay. I'm doing this. I'm doing view transitions for navigations. It's happening, baby." So, when I click a link on page two, the one I'm going to, please look for things with a matching view transition name so that I can transition between the two things.
In my brain I was like, "Well, obviously the browser can't paint the second page then until it has completed its search for matching elements." There must be some kind of delay between navigating from page one to page two so that it can be sure that it found something with a thing. That's what I thought it meant breaks incremental rendering. I thought it would be like there'll be this big delay until it figures out if it needs to do any transitions or not, which it wouldn't have had to do otherwise.
But then some people from Google get involved. They even called a post I wrote on this out in a "Misconceptions about view transitions" post.
Dave: Misconception number four.
Chris: Yeah, you see that?
Dave: Yeah. Yeah.
Chris: But they're right. It doesn't. It does not break incremental rendering. Here's what happens is that there's this thing called first contentful paint - or whatever.
Dave: Yeah.
Chris: The browser is happy to do a quick first render of a page as fast as it possibly can based on lots of complicated stuff like what's going on with your style sheets and where they were being loaded and whether you have blocking JavaScript resources or not and fonts and stuff. There's all kinds of stuff that it decides.
But at some point, it's going to make a first contentful paint, and it probably, very likely is not your complete page. It's probably just a portion of it.
What's happening there is that the view transition will only work if it's in the first contentful paint. So, on your site, it must be very consistent. Your site is so fast and well-coded, Dave, that the matching view transition names are always present when you click between them. But let's say you decided to display a thousand blog posts on your homepage.
Dave: Right, right.
Chris: Right? Now you're clicking back from a thing. It's not going to be in the first contentful paint. Thus, the view transition will not run.
Dave: Okay, okay. So, if it's... Okay, yeah.
Chris: It'll just bail out. That's the problem. But here I found I made a really simple demo with just 20 images on the page. I had, between page one and page two, the matching view transition name was just one apart. It was the first image on one and the second image on the other. I found that about 50% of the time with the view transition run. I'll show you the demo after this.
Dave: Yeah, yeah.
Chris: About 50% of the time. Then I was talking with people that were involved in this. They're like, "Yeah, that sounds about right, 50%. That's about what you're going to get with view transitions." I was like, "Fifty percent of the time your view transitions will work? Look, it's a lot better on daverupert.com, but my demo, 50% of the time."
Dave: That's not enough. [Laughter]
Chris: That's bad. And there's nothing. There's no JavaScript loaded on the page. There's one tiny CSS style sheet. I was like, that's awful. You can't tell people that 50% of the time your thing is going to run. That's of course, on a high-powered device that I have. So, on any lower-powered device, your chances are real low.
Dave: Yeah.
Chris: Here's how you fix it. Let's say you want - I don't know - something like 100% of the time it to work. There are a couple of ways to do it. The way now that they're talking about it (and this is in that misconceptions article), you can put a link tag in the head of your document that has an ID of an element in it. You're going to have to give an element an ID. This ID will be one of the view transitions (whatever view transition you need it to do).
Dave: Mm-hmm. Mm-hmm.
Chris: Say, "Do not render the page until you have rendered this element with this--"
Dave: This element, the ID or... Yeah.
Chris: You could put a whole bunch of them in there if you had to. So, it will block the rendering of the page until it has rendered that, and thus your view transition will work.
Now, it sounds kind of horrible, right? Like, okay, now it's even more onus on the developer to figure out what crap I need to block for to get this thing to run. Nobody is going to do that.
It's one of these things like responsive images, which is a great API but nobody handwrites it. You're going to use a tool to do it or you're not going to do it is how that's going to shake out. It's going to be like this. There's no way anybody is going to hand-author this. It's like a tool is going to do it or you're not going to do it.
And it's like should you be doing it is another question. Should you be render-blocking like this? Probably not. That's not great on slow connections.
Dave: Yeah.
Chris: But the thing is some people render block anyway. Just using a JavaScript framework if you're client-side rendering, guess what, you're render blocking.
Dave: Yeah, yeah.
Chris: Or some people really hate FOUT, the flash of unstyled text, so they use a font loader in JavaScript and they don't render the page on purpose until the font is ready to render so that you don't see the FOUT. That's a thing that people do.
Now you're doing render-blocking, so this is just in that category of, "I'm render-blocking on purpose because I have designed something on my page that I want to work. I want these view transitions to run. Thus, I'm blocking rendering until they're ready to transition."
They're giving us that tool. I just bristle at the tools a little bit. I'm like, "Really?! That is not what I thought we were getting with these view transitions."
Dave: Yeah. I mean I think, if I'm doing anything, I'm cheating because I have my style sheet loaded in the head. I'm very conscientious about that first packet of 14 kilobytes that comes across the wire that is able to paint a whole page.
Chris: Mm-hmm.
Dave: I think about that a lot, and so maybe that's why mine is working more often than not.
Chris: I think it is, yeah.
Dave: But that's a hard bar for everybody.
Chris: It might get a little easier, too, I'll say. I think they're talking about putting the blocking attribute on arbitrary HTML elements, so you don't have to make this link tag at the top. You can put it in there. But still, it's going to be a choice between render blocking and getting reliable view transitions or not.
Dave: Yeah.
Chris: And having--
Dave: I mean you can also just do the whole JavaScript way if you super hate it. But I kind of want to be as lazy as possible about this. Then my feeling is if it doesn't work, oops, we just did something wrong. [Laughter]
Chris: Yeah, yeah.
Dave: Either their device just wasn't fast enough or my code, my page wasn't rendering fast enough.
Chris: Exactly.
Dave: Like, oops.
Chris: Exactly.
Dave: And so, I think--
Chris: Their default is smart. The fact that they didn't render block by default and hurt performance of the Web just for this feature was the right call.
Dave: Yeah. If you had my whole blog with my Disqus comments, which I don't have any more--
Chris: Yeah.
Dave: But wait for all of that to load before it did a transition, that would be a bummer.
Chris: I kind of thought that's what it was doing.
Dave: Yeah.
Chris: It would even run JavaScript, so it would know if you applied a view transition name via JavaScript or something, but it does not.
Dave: Oh, really?
Chris: But yeah, so part of me does think that way, that same way, like, "Hey, if it works, it works. If it doesn't, it doesn't," because it is kind of this perfect progressive enhancement API. If it doesn't work, it doesn't matter. Nobody is not understanding what happens, really. It's fine. But 50% just feels like this horrible number.
Dave: Yeah.
Chris: I'd rather not have it happen at all than happen just randomly half the time. That's not what I'm... Designers will especially hate that.
Dave: Yeah. I think, though, you win by doing less, too. If you have a Whizbang animation, a Flash animation or something that you're hoping to pull off, you're going to have to wait and load it. That's old Flash rules.
Chris: Right. In a way, this isn't any different, right?
Dave: No different. Yeah.
Chris: You want some Whizbang? You've got to pay for it.
Dave: Whizbang takes time, man. Whizbang takes CPU threads and everything.
Chris: Yeah.
Dave: I feel like you can win by doing a little bit less. I see some sluggish performance and I do have questions about that. But I don't know. It's usually around images and stuff like that, so I'd be curious what the future is for all that or if there is... I'd love a dev tools tool that just said, "Hey, buddy." [Laughter] "You put it on here. And if you did it... put it not on the image, it would actually go faster," or something like that.
Chris: Mm-hmm.
Dave: But I'm using it. I like the JavaScript view transition stuff, too. It's pretty killer and it's free - or it's free-ish.
Chris: Yeah.
Dave: The hoops you had to jump through to pull this off previously is just like you'd have to lay out the whole page, hide and layout the second to the next page, the second state, and then set a bunch of CSS properties and then tween between all of them and stuff like that. It was just not--
Chris: Yeah.
Dave: We have it really good right now.
Chris: Yeah. Yeah. This stuff is cool. This story is not over either. I'm subscribed to a few threads where they're talking about interesting stuff, the JavaScript API one in particular.
I feel like even in kind of trivial usage, there's just stuff that feels annoying about it. This idea that you need to handcraft a unique view transition name for every damn thing is a little onerous-ish. And it's easy to screw up, too. That, really?! Is that the best we can do?!
There are discussions about can it be like view transition name auto or something like that. These are all different. You know. You know what's going on here. Just do it. Do what I mean. [Laughter]
Dave: Yeah.
Chris: For example, if you want your list items to reorder all individually and, for example, let's say part of that reordering changed the intrinsic size of the list itself. That's a little tricky to figure out. Yeah, I don't know. They definitely are all going to need the same names, and they're going to be so dumb. They're going to--
Dave: LI1, LI2, yeah.
Chris: Yeah, right. You're just going to use an integer, for sure.
Dave: I'm just injecting a style tag on the page. I am not putting this in my CSS. [Laughter] I'm just going to programmatically--
Chris: Oh, that's another good point! Now you're definitely... Yeah, absolutely. You're not going to do LI Nth child one has this view transition name. In fact, that won't even work--
Dave: Yeah.
Chris: --because it's not the Nth child one anymore.
Dave: Right. It'll switch it up, right?
Chris: Yeah.
Dave: Yeah. No, I would love a generic. But I'm thankful for what we have, and I think that speculation API is kind of cool, too.
Chris: Yeah.
Dave: You can basically tell the browser, "Hey, here are some top URLs. If you've got extra bandwidth, you might want to go check these out, too. Just preload them. Thank you. Good-bye."
Chris: Yeah, that's how it kind of got... I mentioned that because I was speculating. Now I've seen some other people write about it, like Ryan Seddon, too. I thought that was going to be the savior for view transitions is that if the page has been pre-rendered anyway, well, hey, now there is no delay between the two things. I think that might actually pan out to be true still.
Dave: Yeah. If you think about a homepage, you've got the top five articles. Just go ahead and chuck those in the speculation.
Chris: Yeah.
Dave: Then you provided your cool experience for your top-level stuff. And if your bottom level, your deep down in the links dirt isn't that great, that's fine. Whatever.
Chris: Yeah, yeah.
Dave: Life happens.
Chris: It's actually more chill than that. You can do that, I think. You could give it exact URLs. But the problem with that is now at least four of them aren't going to be the one you click on.
Dave: Right. Right. Now you just--
Chris: You've done that, but the chill way to do it, it's basically on a mouse enter thing.
Dave: Mm-hmm.
Chris: If you enter a link, it can tell that you've mouse entered, that you might click it and then it renders it then.
Dave: See! Look at that.
Chris: Which is pretty cool because it's something like 500 milliseconds it's got of extra bonus time. When you're loading a website, that's actually a lot. It can do in a lot in that time.
Dave: Yeah. Ideally, interactions are about 400 milliseconds and stuff.
Chris: Uh-huh.
Dave: Well, anyway, interesting days.
Chris: That'll do it.
Dave: Yeah. Got a hard stop here, but interesting days for view transitions. Hopefully, it gets better.
Chris: I like how optimistic you are, too. Rein me in. I've been Captain Negative lately.
Dave: No. Hey, it's fine. I think it comes and goes. But I think it's also just kind of like it's better than it's ever been but there are just some weird edges now we've got to figure out and file down. It's so good right now.
Has selector, oh, my gosh. You ever do a really has is attribute foo [laughter] attribute bar? It's as ugly as sin but it's just great that you can do that now, so I like where it's going.
Chris: Yeah. Yeah.
Dave: All right. Thank you, dear listener, for downloading this in your podcatcher of choice. Be sure to star, heart, favorite it up. If you know why my website doesn't work on Safari, please reach out to me. Chris... [Laughter] Oh, join us in the D-d-d-d-discord, patreon.com/shoptalkshow. Chris, do you got anything else you'd like to say?
Chris: [lip trill] ShopTalkShow.com.