Skip to content

Instantly share code, notes, and snippets.

@jakearchibald
Last active September 15, 2021 16:13
Show Gist options
  • Save jakearchibald/930425800a3721f58f9bde08e28b9116 to your computer and use it in GitHub Desktop.
Save jakearchibald/930425800a3721f58f9bde08e28b9116 to your computer and use it in GitHub Desktop.

00:00:00 How's it going?

00:00:02 Hang on, my angle changed.

00:00:05 [laughs] That was my big intro. You've ruined it, mate. Look, it took me ages to write that.

[music]

00:00:19 We're in this situation again, I think. We haven't done a podcast for months.

00:00:24 Months, literally.

00:00:24 Because the world is as it is, well, not a lot happened really.

00:00:30 Yes, that's the thing. I think usually we have stupid ideas and share a lot of stupid stories when we are in the office. We're not in the office, we haven't been. Well, actually we have been in the office once together, which was very exciting.

00:00:44 We did some in-person HTTP 203 for you.

00:00:47 Yes, the trailers out. See, I guess by the time this podcast goes out, the first episode might be out.

00:00:54 Yes, I think it might go out today. Today being the 3rd of August. I did go to Silverstone.

00:01:03 That's exciting.

00:01:04 For the old Grand Prix.

00:01:08 Grand Prix.

00:01:10 I think that's how it's pronounced. I saw someone. This is a tangent already, but someone on Twitter, they were trying to sound smart. I think they were trying to say, "faux pas," but they wrote F-A-U-X P-A-U-X. Now, how would you pronounce that?

00:01:41 A faux paux.

00:01:42 It's a faux paux. It's either a fox pox or a faux paux. Quite like a faux paux. I know it's not great to just make fun of someone's spelling, but I think of it like this. If someone stalls their car, it's not funny, but if someone drives alongside you and looks at you over their sunglasses and revs the engine, and then the lights go green and they stall their car. That's funny. [laughs] This was the latter. Anyway, I went to Silverstone.

00:02:16 Yes, you did.

00:02:18 I was camping. I don't like camping, but I di at Silverstone because it brings the whole thing into a comfortable price range.

00:02:27 I was going to say the alternative is probably quite expensive.

00:02:32 Loads of money. Yes, far too much money. There was a shop on the campsite and I went to the shop for a cold bottle of diet coke in the morning because I'm camping, but come on, I need my creature comforts. Unfortunately, the guy who ran the shop was a massive conspiracy theorist.

00:02:59 Oh, no.

00:02:59 Anti-vaxxer, COVID denier. It works, absolutely works, the lot of it. I felt like I had to keep him sweet so I could get my diet coke in the morning, but he blew my mind. I'll let you know. I'll see if this blows your mind as well. All right.

00:03:22 I'm ready.

00:03:23 Okay. He said, "All right, mate, mate, mate, you go home in the evening. Right? You turn on that thing in the corner of the room. What is it?" I was like--

00:03:36 A lamp.

00:03:37 "Is it a TV?" He's like, "Yes, but what's its longer name?" I say, "The telly." "No, mate. No, mate. The full name." "Television."

00:03:50 Television of house electronica.

00:03:55 Well, he was like, "Yes, now break it down." "I don't know." "Now break it down. Tell-lie-vision."

00:04:09 [laughs] I'm going to remember that one. That's a good one to throw in any party.

00:04:14 I don't call it anything else now, mate. That's it.

00:04:17 On the tell-lie-vision?

00:04:19 Every time I finish work, I go downstairs. My other half is in the living room and I'm just like, "Oh, watching a bit of the old tell-lie-vision, are we?" He did also go on to explain. He was like, "What do you watch on the tell-lie-vision? Programming. It's programming you. It's programming your mind."

00:04:38 I like the idea that these conspiracy theorists have that not only is there a conspiracy, but the conspirators are like putting little hints everywhere in the world.

00:04:47 Yes, because they can't help themselves. They just can't help themselves.

00:04:49 They just have to make fun of us. It's right in front our noses.

00:04:53 He was talking about that he brought up Bill Gates. It was just--

00:04:57 Wow, you really hit the jackpot on that one there, didn't you?

00:04:59 Yes, I was trying not to engage in it because I really wanted to go and get some breakfast, but I couldn't help myself. It's just like, what you were saying, talking about the global conspiracy, and I was like, "Well, hang on. Hang on." We're talking about-- because this was around about the time that Matt Hancock had to resign in the UK. He was a Health Minister. He was resigned for having an affair all over lockdown.

00:05:25 On CCTV?

00:05:27 On camera, yes. It's like, but that guy, he's keeping a global conspiracy secret from us, the guy who couldn't keep his affairs secret. The guy who had an affair in a building next to a CCTV camera. That guy is keeping that one, he's keeping the whole thing secret, is he? [laughs]

00:05:46 Yes, it's all a plan to lull you in a false sense of security.

00:05:51 Oh my God, should we talk about the web?

00:05:54 Yes, let's talk about the web. Now, I'm having a look at our notes, and there is nothing I am seeing here added by Surma. [laughs] in terms of content on time.

00:06:07 Should we explain the system? We have a couple of notes, which is, basically, we have a topic we want to talk about at an extended timeframe, a short little intermediate topic and a couple of off-topic stories that we want to bring up. The off-topic section is surprisingly large every time while the rest is small, then again, you put in one thing I really like, and I think it's more than enough to fill the entire podcast if we go at it.

00:06:36 Should we go at it?

00:06:37 Let's go at it.

00:06:38 Okay. [chuckles] The topic I've written down on here is, is Safari the new IE? I thought we could chat about that.

00:06:50 It's been thrown around for a longer time now and increasingly so in the last couple of months, I want to say.

00:06:58 It bubbles up, and then it goes away. We're definitely on a cycle of it now.

00:07:01 Yes. The thing is, I feel like it's currently at the strongest, in my perception. I see it being held the most strongly since ever, since the last couple years that this has been around. I used to agree with it, but I actually more recently feel like Safari has been stepping it up. I feel like it's actually increasingly uninformed to hold this opinion, I guess.

00:07:30 I waive around whether I agree with the statement. I think it's almost certainly not a helpful statement.

00:07:38 No.

00:07:39 It's not. I don't think anyone at Safari hears that and goes, "Well, we've got to change all this now." I thought, let's actually look at IE and let's look at Safari, and let's just take a look at where this is true and where it isn't true.

00:07:58 Yes. You will have to do this because I wasn't a web developer when IE was a problem, I came onto the web and IE 11 was already on its way out, almost.

00:08:11 Yes. I guess I could provide the IE details and then you can jump in and let me know if you think that the same accusation is true of safari. As a developer, I had to cater for IE for a little bit. By the time I was in proper industry, I was dealing with IE 5.5, but that was seen as unusual at the BBC. I was at the BBC at the time, and we did have a slightly longer support range than most companies. I was dealing with IE6 a lot. When people are saying Safaris and new IE, I feel like they're talking about the real bad years of Internet Explorer, which I think is IE6, IE7. [crosstalk]

00:09:02 I think that's what I've picked up on that, IE6 really was the lowest of the lows in terms of headaches and compatibility pains.

00:09:12 Here's the thing is when IE6 came out, it was actually pretty good. It had a lot of CSS support compared to other browsers at the time. The stuff it could do feature wise, it was pretty good. It could do a lot of stuff other browsers couldn't do, a lot of that was non-standard, though. We'll get onto that. I would say one of the things that I think about when I think about the bad years of IE is just halted development and a total lack of innovation that IE6 came out in 2001, IE9 came out in 2011. That's 10 years. IE7 and IE8 came out in between. The new features and bug fixes, you could write down on a single page that. There wasn't a lot happening. We were so glad about IE7 and IE8 because it gave us something but really, there wasn't a lot. Halted development, no innovation, would you say Safari is the new IE?

00:10:28 Well, they definitely haven't halted developments. They are still developing. They are adding features, not at the same pace, necessarily as other browsers. You can get into this whole debate whether that's a conscious choice, or whether they're understaffed. Then we would probably summon Alex Russell to join the podcast at some point.

I think, overall, they have added features, but they definitely add features that they think are important, not necessarily as much that web developers need and think are important, at least I've seen enough tension between what developers want and what Safari is adding very quickly. Sometimes they are actually ahead of standardization when it's a feature that for some reason they deem important.

00:11:19 Well, ahead of standardization is another way of saying they just throw stuff into the platform, which there's definitely, you can point that finger at Chrome as well. [crosstalk]

00:11:26 That also happened. Yes, that's also happened. It's an editor's draft. It's in the process of being the Spec that they already have it. Let's be fair, we have done that too.

00:11:38 Yes, absolutely. Though, I would say, yes, the innovation Safari has made in privacy features, which are very, user-facing features. It's not on the list of things that web developers asked for, but it is a rich feature for users. They're looking at the whole metal thing. The GPU side of things as well. I think we both agree that Safari is not the new IE, in this aspect, in terms of just a complete halting of innovation and development.

All right. Here's another angle. Internet Explorer 6, it had a really slow JavaScript engine, performance was bad in that browser. It might have been good when it came out, but 10 years of development and stuff happening elsewhere, that browser was really, really showing its age in terms of raw performance. Also, things circular references, that the JavaScript engine wasn't smart enough to see circular references. You would have memory leaks all over the shop, unless you were writing a lot of code to deal with it. There you go. Is Safari the new IE?

00:12:58 No, I think JavaScript core is actually keeping up really well, in terms of performance. Also, the web assembly engine is actually really decent. They're not necessarily always top. Again, I think actually, they have benchmark, they have a couple of cases where they're faster than V8, for example. In most cases, V8 will be faster because we just have probably multiple of engineers on it. No, I don't think that Safari is slow.

00:13:30 Yes, I agree here as well. Yes, we do see Safari doing really well, in particular benchmarks. There's always discussion around whether that benchmark is representative or not. Everyone claims their benchmark is the most representative.

00:13:41 Yes, exactly.

00:13:42 Oh, it always seems to coincidentally align with whether they're winning on that particular benchmark. I think, yes, Safari is no slouch in terms of performance.

00:13:52 Even if they're slower than V8, that doesn't make them slow. It's been a while since I have encountered a case where I felt a reasonable "normal JavaScript code" was unexpectedly slow in any browser engine.

00:14:12 I agree. Yes, well, I think you hit one outrageous case in Safari. I think that was a web assembly issue, was it? Something fell off the cliff in terms of performance in your work or research. Am I just making this up?

00:14:28 No. You see, I vaguely remember. Yes, I think you're right. That was when I did my dithering blog post.

00:14:36 That's the one, yes.

00:14:38 That was actually JavaScript, I think. It was multitudes slower, actually 30-50x or something. It just didn't make sense because sometimes a browser will be slower than another one. In this case, it was actually unreasonably because it was also very straightforward For Loops flow 32 ArrayBuffers. I was just like, "It shouldn't be happening," and so I send it to Simon Frazier ahead of time. He was like, "Can we use your code and our internal benchmark because it seems to be a good regression test?" They fixed it since.

00:15:17 Nice.

00:15:19 I think it was basically a weird constellation of recursive function codes that I made that for some reason caused JavaScript code to go to interpretation mode.

00:15:28 That happens. That's a bug. We see that in Chrome a lot. Someone on Twitter will say like, "Oh, you've got to use this kind of Obscure For Loop rather than the nice-looking For Loop because, look, in Chrome, it's five times slower." Although that adds up to barely any actual loss performance, the first thing we do is go to the V8 team and say, "Look, I think we're missing a code branch here on optimization routes and get that sorted." Yes, Safari is not the new IE in terms of performance. Not by any stretch of the imagination, it's extremely competitive.

00:16:12 Do you have another angle?

00:16:14 Yes, I got loads, mate.

00:16:15 Oh, nice.

[laughter]

00:16:18 All right. Internet Explorer had a fairly cavalier attitude towards web standards.

00:16:27 [chuckles] Way of putting it.

00:16:28 Yes, the box model was entirely different in a 5.5.

00:16:32 Oh, really?

00:16:33 Yes, now this is from memory. The padding was on the inside of the box. The border might have been as well, but I think the border was on the outside.

00:16:47 That sounds fun to deal with.

00:16:49 Well, some people would say it was the right thing.

00:16:53 Do you mean because everybody now does box-sizing bottle box?

00:16:55 Well, exactly. That was introduced really to toggle between those two different box models because a lot of people did found that the Internet Explorer one makes more sense. I think the reason that we ended up with the one we ended up with is because if padding's on the inside, you can end up with this weird situation where the width is 100 wide, but the padding is 200 and it's like, well, now you're padding is bigger than the element.

What happens? Whereas in the standard box model, that can't happen because they all add together. I'm glad we've got both now because I think there are different situations that call for one or the other, but yes, Internet Explorer, I just looked at the standard and went, "No," and did their own thing and it was horrible.

00:17:46 As you do it with an open platform.

00:17:49 Yes. There's also ARTFX, VBScript to different scripting language in the engine. What else did they have? Just lots of bits of CSS state that behave differently than the Spec. Is Safari the new IE?

00:18:15 If you say their attitude towards standards is better than IE, I think it's fair to say, I do sometimes get a bit frustrated and I'm speaking from my experience in the CSS working group, I haven't worked with any of the Apple engineers, any other of the standards working groups.

In the CSS working group, their participation would be minimal because as far as I understand they're not really at liberty to comment on what they are working on, and what is and is not going to be in the next release. Their participation mostly is limited to push back and concern, which can be frustrating. I don't think that they would go as far as IE did back in the day and just not be Spec compliant because they think they know better.

00:19:18 Well, let's take the privacy stuff they're doing. The privacy stuff around isolating third parties is like going against what is written in the Spec.

00:19:30 Oh, that's fair.

00:19:30 They did this without writing a new Spec and that's in some ways maybe okay. Well, Chrome has shipped interventions, we call them, which is like deliberate breakings of the Spec in cases where something really bad is happening. You could say that Safari stuff is the same. I got slightly frustrated. Well, I continued to get slightly frustrated with Safari on that because they're saying like, "We're doing this thing and other browsers which aren't doing it are crap. They should do what we're doing." It's like, "Well, what are you doing? Have you written a Spec?" "No." "Go figure it out." That's just slightly cavalier attitude towards web standards, I think. They are starting to now spec it, but as a result, we've now got like what Firefox is trying to do the similar stuff around privacy. I know it's something we're looking at as well, but you just end up with multiple different implementations are all behaving differently because it's not written down.

00:20:32 I guess in the defense of that and also the interventions, it seems to be that these are only done when the benefit for the end-user heavily outweighs the damages done. At least in each browsers' individual assessment, that's obviously in our discussion to be had whether that assessment is right, but it's not. Like, "Yes, we're going to ship VBScript," or something, right?

00:20:58 Yes.

00:20:59 We think this is critical for privacy or we think like what Chrome is doing, we think blocking document on 2G connection is critical for user experience.

00:21:11 Intentions there are definitely good. There was also things like touch event and there's the env thing in CSS for detecting parts of the browser which you can't draw in or shouldn't draw in because there are bits of phone in the way, like cameras and such.

00:21:35 That was the original notch before the notch came out.

00:21:40 What tends to happen there is the first anyone hears about it is it's in a beta and it's like, "Well, here's the thing." The attitude tends to be, it's like, "We are going to ship this or something like this. You have a month to come up with something different if you don't like it and we would need to agree with it." Initially, it was const in CSS, if you remember this. [crosstalk]

00:22:08 Yes.

00:22:10 Through standards discussion it became env. They did change that before it went stable, but it is very much on their terms. It's like, "We're going to ship this. [00:22:20] Do what you can, [chuckles] but we might say, no." I would say that is a kind of cavalier attitude towards web standards. As you say, I think this is a real gray area I don't think this is a clear-cut case of Safari is the new EI. Also, we can say like it was internet Explorer's cavalier attitude towards web standards that got us XMLHttpRequest.

00:22:47 The API were the worst, within itself inconsistent catalyzation.

00:22:53 Here's the thing though, it is consistent according to our particular Microsoft document.

00:23:02 [chuckles] That doesn't make it better. Look look at it. Just look at it.

00:23:07 The rule was, that Microsoft had at the time, is that you should use all caps for acronyms that are three characters or less, so XML all caps, HTTP to make it.

00:23:25 I'm sorry, that's a very stupid rule.

00:23:29 I did try and find this document recently and I found it, but it actually said it was like four characters was the switch point. Well, I guess five characters was therefore the switch point. I couldn't find the one that actually said three characters, but I've been told that was the deal at the time.

00:23:48 It's also worth pointing out that the name is pretty bad, to begin with as well.

00:23:54 Oh. Yes, yes.

00:23:55 Why put XML in there to begin with? It's not for XML exclusively as far as I can tell.

00:24:02 Well, and it's not for HTTP exclusively either. It's not for XML, it's not for HTTP because it works on HTTPS. It works on data URLs, it works on, well, the file protocol, if you really want to give it a go. The object you get back is a combination of requests and responses. It's not even just a request either. It's really all over the shop. [laughs]

00:24:26 It's a fractal of naming and design. It's brilliant.

00:24:31 XML is in there, HTTP is in there, request is in there, but it is so much more than that. [chuckles] Yes, it's a great name. All right, next angle. Lack of openness. Internet Explorer to developers was a complete black hole. There was no public bug tracker. We got no updates from the IE team or very infrequent updates. Like we weren't told like, "Is any of this stuff going to get fixed? Are we going to get any of these new features? They might have had DevRel people at the time. I think there's people who now work in the Chrome team who were technically sent out to be Internet Explorer apologists towards the end. Maybe apologists is the wrong word. To apologize for, I mean, they were just sent on stage to go, "We're sorry, we're sorry".

00:25:25 I distinctly remember when they announced Edge and were about to release the first version of Edge when they were still doing Edge HTML, their own engine. I was at JSONView and they would send someone on stage and sadly, I don't remember who it was, giving a talk about quite the impressive amount of work they put into replicate some bugs to have the consistent rendering experience, and so on and so forth. I think their first slide was like, "Okay we want to formally apologize for IE6" which I thought was a great opener.

00:25:53 Yes, exactly. Back in the day that we had almost no communication whatsoever. Is Safari the new IE?

00:26:07 Yes. The thing is, WebKit is open source, but they don't work on the WebKit source directly. They work on a internal version of that fork and then for every major release of Safari, they do a code dump onto the public WebKit repository. You don't really see anything happening ahead of time, you just get a code dump. They have some DevRels now.

I actually have been really appreciating, Jen Symonds is one of them, how she's been actively trying to get feedback and figuring out what do a person need to make Safari better for them. I think the whole, there is a lot of communication still stands. As I said, both in standards' lands and, in general, they don't comment on what they're working on. The most communication you get is for every now and then, "The bug you filed will get closed," and that gives you an idea and a bit of hope that progress is being made.

00:27:10 That is something I do find slightly frustrating in standards work. There are, obviously, all people are different. Working with some folks in Safari or communicating with some folks from Safari online, there are some of them which appear to and this could be my biases talking, they appear to actively enjoy saying that they can't talk about it. Like it's a secret society and you may not know.

00:27:35 Definitely.

00:27:36 You don't have the level of authorization to hear about the amazing stuff they know. Whereas some of them are much more apologetic about it because they realize how frustrating actually is not just for standards people, but for developers. When you find out there's a huge bug that's breaking your website, "When are we likely to see the fix for this?" "Can't tell you, sorry." Yes, sometimes that sorry doesn't really come across as genuine. There is a public bug tracker, but as you say, a lot of it disappears into their internal radar bug tracker. [crosstalk]

00:28:10 Yes, you just get these obscure radar links that you can click and can't inspect. It's nice to see some things getting acknowledged at least. Like, "Okay, we saw this bug." I filed a bug about Canvas recently and then Sam Sender showed up on it and they linked it to their internal radar and I was like, "Oh, that's nice." They reacted within a day, so I feel heard, but let's see if that bug gets actually fixed and closed.

00:28:34 I had the same experience with Sam, in fact, the same engineer. The bug did disappear into an internal radar, but they were able to give me some assurances that it was being worked on. Hopefully, I'm not going to get them fired by saying that. The communications a lot better. We now have Safari Technical Preview which we never had with IE. Look, it is open-sourced. There are other companies like Igalia who are doing big work in WebKIt space.

I think, "Is Safari the new IE in this respect?" There are shades of it in some really frustrating ways, but I don't think it's fair to say it's exactly the same. Although you have to factor in the relative openness of other browsers at this point which was different in the IE days. The communication we were getting from Netscape and Firefox was way more than IE, but it wasn't to the degree that we have from Firefox and Chrome today. Maybe relatively it is the same, but I think it was perfect.

00:29:46 I mean to an extent Edge is almost the same. Yes, they switched to Blink and so we know what their engine is capable of, but they still have their layer on top to make adjustments and make it Edge, and all those parts are not visible anywhere. Actually don't know how much is being communicated around that. I'm guessing it's fairly well communicated, but I don't know actually now that I think about it.

00:30:14 All right. Okay. The next one. Slow-release cycle. Internet Explorer 6 was 2001. Internet Explorer 7 was 2006. That's five years. Internet Explorer 8 was 2009. That's another three years. I would say around that time, Opera were delivering major versions roughly every year. Netscape was yearly-ish. Firefox was yearly, but Firefox did have quite frequent security updates in the middle as well. What do you think? Is Safari the new IE?

00:30:54 Actually, if you turn it to ratios, you could say yes. How often does a major Safari release come out? Twice a year, maybe.

00:31:08 Until relatively recently, it was only once a year. I used to call it Safari Christmas because it landed towards the end of the year. You would just write your letter to Safari center in the form of bug reports, then you would hope come Safari Christmas Day that you had a lovely present waiting for you, and you often didn't. It is twice a year for major versions now. You get a Safari Christmas and Safari Easter because the release tends to be around March, I guess.

00:31:39 Yes. If you want to be cynical you could say IE took six years for a major update while all the other ones did a yearly update. Currently, we have between four to six weeks for major updates on all the evergreen browser except Safari who take six months. The ratio almost stayed the same. Then you could say in this specific instance, Safari is the new IE.

00:32:01 I absolutely agree. I think this is one of the biggest ways that Safari is the new IE. I think this is one of the biggest issues that I have with Safari right now. It has a cascading impact on everything else because we say that it takes a long time for bugs to get fixed. It takes a long time for a new feature to appear, and all this is around this slow-release cycle. Yes, I would say twice a year. They do more frequent security patches and you'll occasionally get a bug fix, an urgent bug fix sneaking into those.

We had one recently. In a world where other browsers are releasing every four to six weeks and they're delivering features there-- It sometimes happens even more frequently if there's an urgent security issue or a bug fix, you'll get even more frequent release in a world where that is happening to have a browser which is releasing twice a year. That's not good. As you say, in terms of what was happening back in the IE days, Safari is the new IE in this angle. Yes, absolutely.

00:33:14 I think it is probably somewhat related because I'm really getting frustrated in this. We were all rejoicing when it's like, "Oh, Safari now has WebP support, finally." I was like, "Oh, that's great. That is really good for the amount of data transferred." Then they said, "It's actually not in Safari. It's on the operating system, and Safari just hooks into the operating system." That seems like such an unnecessary delegation.

00:33:46 This is exactly my next angle is that in the Internet Explorer days, your new version of Internet Explorer was delivered along with an operating system update, and there was no separation of the two. I think we have to just unequivocally say that Safari is the new IE in this respect because that is how Safari works. You have to wait for this operating system update in order to get your Safari update.

You do get Safari Technical Preview which runs separate to the operating system, but as you say, you end up with differences like this because it's calling out to the operating system for the image decoding. Then your Safari Technical Preview is not actually representing the next version of Safari because it is missing features that you will get in the next operating system.

00:34:37 Yes, that was really frustrating for me too. There will always be some parts that just depend on the operating system. I don't know. I'm sure that certain things in WebGL only work with a certain operating system underneath and some details, but with image decoding, specifically in this example, this seems unnecessary and it just adds to the frustration. The thing is, I think, literally, all other browsers have figured out how to ship their version independent of the operating system, even Edge. Well, I say even Edge. Edge runs on Mac and Linux. Chrome does, Firefox does, Opera does, they all do. They're all managed to have feature coherency across not only operating system versions but even operating systems. It's like, Safari should be able to do this. I think they have the cleverness.

00:35:34 I know people who don't update particularly to their phone because--

00:35:42 Are you talking about my partner?

00:35:45 I'm also talking about my partner, who we should point out are different people. It's not a really [laughter] complicated love triangle. Okay, what does she say? What's her reasoning?

00:35:58 No, she just can't be bothered. Every time in Chrome there's like this big red, "You need to update." I'm like, "You may need to update, this is important, security patches and all these things." Then at some point, she also doesn't update her laptop or a phone and is like, "Oh, I can't use this app. Why doesn't it work? Someone help me." I'm like, "Did you do your update?" She's like, "No." Then I update it and everything works again, and I'm like, "Come on."

00:36:27 Jen, my behalf, her reasoning, and I hear this from other people as well, is that she has felt in the past that updating the OS has led to her phone becoming slower or getting worse battery life.

00:36:43 I don't have data on this, but I agree with the sentiment.

00:36:46 Yes. She's got an iPhone, but I've heard the same from people with Android devices. I don't have numbers, so this is purely just anecdotal. Therefore, their decision to not update the operating system is now keeping them on a, well, keeping my behalf on an earlier version of Safari. Whereas the people who are doing that on Android, at some point, they'll reach a version, they'll stay on a version for long enough that we won't deliver chrome to it, but that's a lot of versions.

It does mean that more people are getting the later version of Chrome. All right. Next angle, missing features. Like I say, IE6, 7, 8, was 10 years, and they didn't add much. Back in the day, IE6 did not support alpha transparency in PNGs. It would render them with a gray background.

00:37:49 Lovely.

00:37:50 Unless it was a PNG with a palette and alpha transparency, in which case, any palette entry, which had an alpha less than 255 just became fully transparent, so became-

00:38:09 Basically, they just rerouted a PNG to the GIF rendering engine, I assume?

00:38:14 Yes. Actually because, as developers, I think it took us a long time to figure out that it did that because it actually provided us with a reasonable fallback. [laughs] Fall back to binary transparency is much better than rendering it on a gray background. There were hacks to make PNG work, but it absolutely killed performance. Both render time and load time, it was bad news. There was also things like there's lots of CSS missing. One of the things that I really wanted for a long time was table layout because we didn't have Grid and Flexbox back in the day.

00:38:52 We had tables.

00:38:53 We had tables, and you didn't want to use tables because of the poor semantics and the accessibility issues and everything you get with that, but CSS supported, you could take a load of divs or more semantic elements and tell it. Lay out like a table, which would give you essentially a grid layout system, but IE didn't support that until IE8, I think finally had it but then it was buggy. There was loads of stuff missing. Is Safari the new IE?

00:39:26 Yes, is my answer here, I think. I really appreciated Jen Simmons doing a tweet going, "Okay, developers, what is missing in Safari? Not just features, but anything really that would make Safari better for you." There were some people who felt this was the right opportunity to start [sound cut] on Safari, even though Jen is clearly trying to better the situation and gather data on what is needed. That I found a bit tone-deaf.

00:40:00 I think I was maybe one of those people because I was beating the drum about release cycle which I know wasn't the question she was asking.

00:40:07 That's a very valid point. There are other people whose comment was just, "Yes, Safari is the new IE," and it's like that's, A, not even an answer to the question, and B, incredibly unhelpful in this context. Well, it's unhelpful in any conduct, specifically, he or she's trying to get a date, I found it kind of bad. I think pointing out things that are crucial is pretty much okay. It was interesting to see because I have been skeptical about some of the Fugu APIs that Chrome has added which I found to be very, very niche.

I honestly think sometimes we have bigger fish to fry but maybe it was proven wrong because the amount of people who replied to her with a good list of these Google APIs surprised me but it also showed me just the vast amount of APIs that other browsers have that Safari doesn't. Also, Firefox doesn't have because some of them they consider harmful. That's their standpoint and that's okay. People want to build capable apps, it seems.

00:41:22 There are some of these features that I do feel are opposed to what Safari sees like the purpose of the web to be. I know a lot of people say that the reason Safari is the way it is, is because Apple makes a lot of money on an app store. They don't make a lot of money on the web. So there's no incentive to make the web any better on an iOS device. I don't know. What always struck me as being a bit of a conspiracy theory.

Every now and then I start finding myself coming round to the idea. It's fair enough to say that they're against maybe some of the Fugu features which is the name we give a lot of these capabilities like file system access kind of permission, they disagree with that. It was Tim Perry who wrote a really interesting article. He ignored all of those and then brought things like broadcast channel which has been in other browsers for years, particularly Firefox, create ImageBitmap which I know the lack of that in Safari causes lots of problems on Scrooge. I've got lots of code paths to deal with Safari's lack of stuff around that, a focus visible which is a super handy CSS feature for accessibility.

00:42:41 Usually, they're pretty on top when it comes to accessibility.

00:42:46 Yes. Safari has custom elements service workers and data input types now, but it took a long time to get there.

00:42:54 It did.

00:42:54 One parallel which I-- You brought this up earlier, it was WebP. It took a long time for Safari to get WebP. It took all of us a long time to get to WebP. I think there was definitely some standardization mistakes along the way and a lack of involvement from other browsers. I found myself in Safari, you're having to use PNG and you would end up with these huge PNGs because they had transparency information.

I wanted it to have a lossy color channel because it was like a photo with transparency in it. PNG is really bad at that. WebP is okay at it. It's an interesting parallel that I was like, "Oh, here I am dealing with a browser which doesn't handle transparency the way I want it to." But it's like, "That's what I had with IE6." I don't think it's a totally fair comparison because like I say, I think the standardization journey for WebP was a little bit faulty. It's a parallel. I would say, yes, Safaris is the new IE in terms of missing features even ignoring the capabilities that they fundamentally disagree with.

00:44:13 Are you keeping a tally?

00:44:15 Well, are these all equal? Is another question.

00:44:20 I thought for simplicity. Before it I thought, "Do you have another angle or is this your angle?"

00:44:26 Go. One more.

00:44:27 All right.

00:44:29 My early career was built on knowing the bugs in IE6 and how to solve them.

00:44:39 What a sad skill?

00:44:40 I know. I would get a call from someone in another PVC department because I was the IE6 guy. They were like, "Look, we've got a site-launching and it's just all over the shop in IE6 and seven, whatever. Can you just come and fix it." I go and just look at the site and I was just able to go, "Oh, that's the double margin bug, you do this. Oh, that's the repeating characters bug, you do this. Oh, that thing's got cut off, you do this." It was mostly adding Zoom one to stuff but knowing the right place to add it. Yes, and it's pretty much hard to build a career. I worked at the startup Lanyrd for a while and I think the founders of Lanyrd, Simon and Natalie, as a band camp.

Like a little conference, they staged a quiz which was fix the IE bug, and we were separated into teams, we played this game and obviously giving myself a bit of a pat on the back, but I just aced it because I knew them all because that was just what I was doing day-to-day. That got me on their radar which is probably how I eventually ended up with the job there. When I say I built my career on knowing IE bugs, I literally did.

00:45:56 Do you think there's any way you can dig up this quiz?

00:46:00 Oh, I could ask Natalie if she's still got it. [laughs] Oh, I would be massively surprised, we're talking like 15 years ago, but I will ask, that would be fun.

00:46:12 I'd love to see the bugs and issues but, obviously, this is way before I did any web development and I would just like to look at it and be amazed at the answers.

00:46:21 If I can't find that, I'll just take up some pages referencing these IE bugs and the weird fixes that they had because they're definitely fun. I can remember what some of them are called. Is Safari the new IE?

00:46:40 Not to the same extent, but there is definitely in my head, a couple of things that I know don't work in Safari as they should and workarounds for them. Like just yesterday, I used CSS keyframe animations either without a defined starting point or a defined endpoint, and it didn't work, and you have to explicitly define the start point, even though the spec says if you don't define, it's the default position. Like the position it would be at without the animation, and it works in all other browsers, just like Safari.

You just had this great workaround for the IndexDB bug where you are using set interval to kick IndexDB to come back to life. All these little things-- I think I also remember when we were writing Prox, Safari was the most painful browser to get it to work on in the same way. To work in other browsers because of little touch events, bugs, or full-screen bugs, or other small things, I remember when I was working on the actor model that for some reason, Safari kills workers on mobile after a timeout or that certain transactions would just hang in IDB.

00:47:53 We had a last-minute bug with Prox a couple of days before release where we suddenly found that it was flaky on iOS, not on desktop Safari, just on iOS. Where, yes, the worker would appear to just go away, and every time we tried to debug it, it wouldn't happen, and I think what we ended up doing in the end that we literally put the worker into a global variable because that's what we were doing and then debugging and it seemed to make the bug go away.

I'm still not 100% sure whether that really fully fixed it or just change the race condition, such that it rarely happened. I believe it's fixed because my other half plays a lot of Prox and that's on an iPhone and she would be shouting at me if it didn't work. Which she did recently because, yes, Safari, like you said, they broke IndexDB, not just IndexDB, they broke local storage as well.

I think this was back in April, and so it meant that local storage was not syncing across tabs properly, so you change it in one tab and the other tab was still seeing the old states, as both local storage and session storage, and people were using this. Like if you'd log in in one tab, they'd go and change the state in another tab, so that was broken in Safari for ages because there's another way of doing that. If you change one thing in one tab and then want it to be reflected in another tab, you want the other tabs to be notified of this thing happening, and that is the broadcast channel which is not supported on Safari.

00:49:31 Still the same reason.

00:49:32 Yes. In fact, there are broadcast channel polyfills, but they are built on top of local storage, this local storage event that works across tabs that just got broken. The IndexDB bug was more of a race condition like if you try to access IndexDB as Safari was starting up, there was a chance that it would just hang, as in the IndexDB connection would never error and then it would never connect either. That's what resulted in Prox just not fully loading because we had bits stored like has the person disabled, animations have the--

00:50:13 Last game settings and so on and so forth.

00:50:14 Yes, previous scores. We all started in IndexDB and we looked that up at start-up. Especially the animation setting because it's important to know that stuff before you start the animation turns out. They broke that in April. The fixed for local storage, involved IndexDB, which is a problem because IndexDB is broken. As you said, I came up with a silly workaround.

It's not silly because it did actually work a fix for the IndexDB issue as well, but you multiply this by the thing we were talking about earlier, the release cycle, these bugs landed in April and we're only just getting a fix landing now. They fixed the issue really quickly. It was filed with them and they were like, "Oh yes, we see the bug. Sorry about that. It's now fixed." That's back in April and June, I think, for the IndexDB one was slightly later on.

00:51:15 I'm surprised that none of this was caught by any test harnesses.

00:51:20 Here's the reason. The bug only existed in Safari, not in WebKit, and the automated testing systems run against WebKit.

00:51:34 I would expect them to also run the tests if they make changes from WebKit Safari, which they do, I would hope that they run the tests also against their augmented Safari engine, not just the WebKit.

00:51:45 Yes, you'd hope. Also that the IndexDB once raised condition only happened during the start for the engine. It's infeasible to run every test that you start up the browser again, it would just take too long. Put it this way, we've done similar stuff. Chrome has had bugs that only exist in Chrome, not in Chromium and they've been missed for a similar reason. The difference here is it was fixed in a couple of weeks, not in three months.

00:52:16 I think if it's critical like this, where many sites just stop working or rely on this feature, I think we have seen those things get turned around or provide new patches within a couple of days, day even.

00:52:31 Dave Rupert wrote an interesting article about this. He called them Safari One-offs, the little things he has to do to appease Safari. Whether it be, like to make it do scrolling properly, to make it do touch events properly, to make it do hover effects properly, to fix graphical glitches. These are all things that he feels like he's adding for Safari more than any other browser. That comes down to when people say Safaris new IE, I think what they mean and I do agree with this, is it's the annoying browser to deal with.

00:53:04 I was waiting for you to finish your answer. My question would have been what do you think is the sentiment, the developer angle behind them saying Safari is the new IE? I think it's that. It's just the amount of pain that it causes and the hoops that you have to jump through and the things you have to save in your head to make your stuff work.

00:53:27 When I develop, and I imagine it's the same for most developers, you tend to be focusing on one browser and it tends to be the one with the best dev tools because that's your fast iteration cycle. You're using one of the best--

00:53:42 Best dev tools might depend on what you're used to. We're not saying that one is objectively best necessarily, but that's for you.

00:53:49 Absolutely. In the IE6 days, I would develop predominantly in Firefox because it had the best dev tools.

00:54:00 IE6 only had these alert boxes, right?

00:54:04 Yes. There were JavaScript debuggers you could connect to and there were some other tools that had become available, but yes, you were mostly using alert boxes. At some point, there was a Firebug clone that you could get for IE, which really was a game-changer. Yes, I was using Firebug and Firefox. I was using that even when Chrome was out because Firefox's tools were still better. Then eventually, I started, like you say, for particular things, Chrome dev tools were better at certain things than Firefox so I was working on-- but I was still focusing on a single browser and it was very rarely IE. Then once I was happy with what I was seeing for a given couple of iterations, it was then I opened it in IE and braced for impact.

00:54:58 That sounds like a funny existence.

00:55:00 That is how I sometimes feel about Safari now and I think that's what a lot of developers feel.

00:55:07 Yes, whenever I build something, project or whatever, I don't think it has ever happened. At least recently that I wrote a thing and it would work from the get-go in Safari. It would work in all other browsers.

00:55:28 Yes, it does seem now I developed something and I look at it in Firefox and it usually just works. If it doesn't, it's either a quick fix or it turns out to be something that's it was actually Chrome was getting wrong.

00:55:46 That's the thing. Firefox is usually the king of being technically correct.

00:55:51 For it's worth, it was Opera back in the day. Back in the '80s, it was Opera that was technically correct. You would open it an Opera, there'd be a few things wrong and then you'd find out like it was Opera getting it right. Again, at the time, I was probably seeing fewer Firefox works because I was developing directly in Firefox. Probably catering for quite a few of the bugs. Those things I thought were features that were actually bugs or whatever.

I think when developers say Safari is the new IE, it's that feeling, it's that, "Oh God, I'm going to look at it in Safari now and I know I'm going to lose a few hours trying to figure out," because it's not just going to be like, this thing is missing. It's like this thing is just behaving weirdly and I'm going to have to find out why it's behaving weirdly. You get something like ImageBitmap is not defined. You're like, "Okay, it's missing a feature, I'll go and find a workaround for that."

00:56:50 What I just had was like if there's a clear cut error image like this function just doesn't exist in Safari and I was like, "Okay, I can work around that. I can just use my own canvas and write it a little polyfill function turned into an image stack." That's fine, that works. What I find really frustrating is when something is there but isn't working the same. I remembered in Prox we had sometimes it seemed like tasks got executed in a different order than they were in another browser or as I'd said like a certain CSS feature just doesn't behave. The same layout is different, or an animation runs differently and those things are a lot harder to nail down, let alone fix.

00:57:32 Yes, you open it in Safari and it's these graphical glitches all over the place and you'd know that it's just going to be a real slog trying to find out if I add translate Z to the correct elements, it's probably going to be fixed though. I have to find the right element first or if it turns out not to be that, then you're on another hunt to try and find out what it is. You end up with what we had in Prox, a worker is just disappearing on iOS, or you find out that IndexedDB is not opening on some of your apps on a live site because something's broken.

00:58:09 If we even have a problem that the emulator was behaving differently from the physical devices and so we had to get a physical device to actually be able to debug the problem at hand.

00:58:20 Yes, the emulator didn't have WASM support. I know that but I have encountered other cases where the emulator just behaves differently because it's a simulator, not an emulator. It's not emulated under the hardware and all of that, which is a frustration in itself as well, that it is quite expensive to test on Safari. You're buying an expensive phone, you're buying an expensive laptop unless it's the laptop you're using day-to-day. I guess this was a problem for Internet Explorer as well because it was tied to a particular operating system, even the IE team did release VMware things to test IE and they would work in operating systems.

00:59:07 Oh, yes, there was modern dot.ie where they had VMs with all their IE versions back to IE5, I think, you can just download and run. That was brilliant.

00:59:18 Yes, that did come much later, but it is something.

00:59:21 I know, because although that was Windows versions, which technically had licensing keys and whatnot, and they just gave you these VMs, so you could test your websites locally.

00:59:34 Now if you're paying for one of those online services to use a remote version of an iPhone or a Mac, and if your problem is a graphical glitch or a graphics performance issue, you're not going to see it over that connection. So, yes.

00:59:51 If you are one of these services and would like to sponsor us, reach out.

00:59:55 Except the one I really hate because I ditched one of them for sending me some really, really doggy emails. Slightly begging emails because I changed my email address in one of the accounts that I had with them. I guess it flagged on their system that I'd left, and they sent this really emotionally manipulative reply. I'll link to the tweets where I've got a screenshot of it because I can't remember off the top of my head, so I will only get it wrong and liable for some company. I think Safari does have an issue that IE didn't have, and I think that's the fact that iOS users are locked onto that one engine.

You can't say Safari is new either because this is a whole new problem. Internet Explorer, you could always choose another browser. This is a thing I get frustrated about because I've seen it happen a few times. A Safari engineer will talk about the benefits of engine diversity on Twitter or something. It comes across as really tone-deaf for me. While they're working for a company which actively prevents other browser engines on a hugely important platform.

iPhone is pretty popular and iPhone users are only allowed one browser engine and it just happens to be the Safari one. Look, I would say that your opinions on Twitter don't have to reflect those of your company. You and me will say websites should work in other browsers, but every now and then a Google site will be released that only works in Chrome. We will publicly say that that is wrong. That Google is wrong to do that. It's a bad strategy and we fight it internally and we've had changes. I've never seen a Safari engineer say that it's bad. That's engine diversity on iOS is limited to their own self-interests.

01:02:10 I wonder if they can even if they do think that. I'm not sure. One thing that I've noticed, recently I feel the Safari team has stepped up in size. They've hired a lot of people, a lot of people that I knew from the web standards and the web development community. Shut up, Watson. Can you hear that?

01:02:37 Yes, live it in. Don't worry.

01:02:39 All right, cool. Featuring Watson. They've hired a lot of people. I feel like power of the full slack we've always cut them is that there is small-ish team. An infinite team that it's hard with just a handful of engineers to keep up with the entire web platform. Now they've definitely set up they hired more advocates as well. Do you feel there's a change in trajectory for Safari?

01:03:09 I hope so, but I feel like I've maybe said it before. Maybe there has been. Like we say, they used to release once a year. They now release twice a year for the larger releases. So there is change there. We have seen a lot of stuff with web RTC land in the browser. Like service workers did they're a little bit limited, but they are there. I think there was a period of inactivity or slightly restructuring when the fork happened when Chromium left the project because we were providing a lot of the code for WebKit.

01:03:47 You mean back when Chrome was still based on WebKit until we started to?

01:03:49 Yes, and when we left. I think it took them a while to get back on their feet. They've had enough time now, absolutely. I do want to say is that as far as engineers who I've met, they care about the web deeply? Right?

01:04:14 I agree.

01:04:15 I think some of them don't see. I don't think we agree on what the web should be for. I think they see it should be limited in some way, but they deeply care about the web and they deeply care about users. I think a lot of the problems in Safari come from higher up. Come from what Apple dictates that Safari should be and should be limited to, and should be allowed to do and what they should be allowed to say. I do have sympathy for them because they're getting the brunt of that. Look, there's this whole podcast has been us giving Safari stake for the Safari is, but I think there's a lot of the Safari team that would change a lot of that if they had ultimate power.

01:05:02 If they had free rein, I would think the same.

01:05:07 Yes. Agreed. I think when we say Safari is new, I think the conclusion I've come to is I totally get it. I totally get why developers feel like that. Saying it to Safari engineers, I don't think helps. Chanting it doesn't help. I understand--

01:05:30 Especially if there is a Safari engineer looking to find out what is the highest priority thing for them to fix to make developers happier.

01:05:38 Yes.

01:05:39 Be constructive. Yes, they care, as you say.

01:05:42 I wish they were able to publicly have more empathy for the people that feel that Safari is the new IE because I do feel that a lot of them understand the issues and disagree. Well, I think that they should be changed, but probably can't. They probably can't even say that they disagree with it, which is a really difficult position to be. We should count ourselves as fortunate that we get to go. Like I did recently, I get to write a blog post about how the Google I/O website was pretty bad performance-wise and I get to keep my job. I get to onstage.

01:06:18 Just about?

01:06:18 Just about. I get to hold people accountable, like superiors on stage at Chrome Dev Summit back in 2019. Get to actually hold Q&A. That's pretty frank, and I get to point out if superiors haven't answered questions properly. A lot of companies you won't get to do that. It does strike me that Apple is. Well, from what I've seen Apple engineers say this. Yes, they're very limited in what they're allowed to say publicly outside, they would be immediately sent out the door. If that's not true, then my sympathy disappears quite a lot because then they're choosing not having empathy for these things, but I don't think that's the case.

01:06:59 See, I told you, we could fill more than a podcast with just this one topic.

01:07:04 Whoa, that felt cathartic. I didn't it?

01:07:07 Yes. I thought that was quite good.

01:07:09 Yes. As I say, I don't--- There was no solutions other than-- There's a problem that should be solved.

01:07:21 I think we could pull it apart. Maybe there's a Safari engineer listening. I guess they know all this already. We don't know.

01:07:28 I think any Safari engineer will have got quite annoyed at this episode for quite a long time ago. They've turned off by now. Tuned off. There you go. Tuned out, I guess I mean. I would find it frustrating and difficult to listen to in their shoes, either if they're the person who just fundamentally disagrees with the points or agrees with the points but can't do anything about it. It's going to be frustrating either way.

01:07:54 Yes. Well, on that note, should we call it here and make a promise that we are going to be back in less than six months [inaudible 01:08:12]?

01:08:12 I thought you were going to make a harder promise to keep. I think six months, we could definitely keep that promise.

01:08:21 It was close this time. If I look at the notes, the last notes we have are from April, May.

01:08:24 April, I know. It's so bad, isn't it? We'll talk about more than one topic next time, I think.

01:08:33 That's good. I think this was just very cathartic. It was just a safe venting space for the two of us.

01:08:41 Yes.

01:08:41 Others can listen for some reason.

01:08:45 Yes, well, I hope people enjoyed it. I hope people who share the frustration in a less biased way. Because you got to say, we're full of bias here when it comes to this stuff.

01:08:59 There's exactly one browser engine that gives us paychecks.

01:09:01 Absolutely. Maybe that's the solution. Maybe if the other browsers just paid us more, we wouldn't complain about them so much. If you want to sponsor us, reach out. Yes, what I'm saying is we can be bought. That's our moral level. Hey, just send us some t-shirts. Just send us some t-shirts.

01:09:29 You just need new t-shirts because you haven't been to conferences and you actually had to buy shirts now.

01:09:34 I know running out of clothes. I got some socks from HackerOne or HackerOne, however, it's pronounced.

01:09:43 One thing that really shows me that we haven't made as a podcast is that no one has ever reached out about sponsoring us.

01:09:51 That was not like my blog. People respond to my blog all the time. Yes, it's the same template that wants to add a gambling article but an article that looks like it's from me. It doesn't say it's an advert but it will be, I guess, gently encouraging people to gamble all of their money away.

01:10:16 If it's not ethically questionable at all.

01:10:19 I think there's legal issues for more than that, pretending it's a normal article when it's actually an advert. I don't know if that's actually a legal issue on a blog but anyway, I do reply to some because I'm well up for it. I reply and say, "Yes, I'm interested. What's the deal?" They gave me the deal and they say, they asked me what my rates are and I say, "£1,000,000," and they go silent. I'm hoping just to play the odds like at some point one of them-- Especially if it's bots. I imagine it's bots and there's a bug in one of the bots and before I know it, I've got £1,000,000 and I will put the gambling article on. I'll do that for £1,000,000, absolutely, absolutely.

01:11:06 Capitalism, it works.

01:11:07 Oh, yes. As I say, if you ever see a gambling advert on my blog or an article which looks like a gambling advert, just be happy for me because I am £1,000,000 richer about to buy a fancy new house with a bar built into it. I think that's my ambition. A VR room. I want a VR room.

01:11:27 Right next to Silverstone.

01:11:28 Right next to Silverstone. Why not? To be woken up in the morning by the cars and stuff. Just be happy for me and it's the same one listening to this, who's the boss and is easily confused. Then--

01:11:41 If you self-identify as a bot, do you reach out.

01:11:43 Yes, and I'll give you my quote. It's £1,000,000 and then once it's in my account then the article goes up. It's as simple as that.

[laughter]

01:11:54 Then I guess nothing left to say but happy next time.

01:12:00 Happy next time. Bye.

[music]

01:12:16 Pressing the old stop button now.

[01:12:20] [END OF AUDIO]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment