back to indexBrendan Eich: JavaScript, Firefox, Mozilla, and Brave | Lex Fridman Podcast #160
Chapters
0:0 Introduction
1:53 History of early programming languages
6:46 Physics needs more experiments and less theory
11:23 JavaScript origin story
36:16 JavaScript was created in 10 days
45:56 Marc Andreessen
49:13 Internet Explorer
52:57 Evolution of JavaScript
58:43 Javascript standardization
64:33 TypeScript
67:4 JavaScript ecosystem
70:14 HTML5
73:46 Making JavaScript fast
82:56 JavaScript is the most popular language in the world
93:22 Advice for programmers
99:19 Browser wars
105:49 Firefox
127:32 Brave
140:32 Basic Attention Token
165:35 California
174:47 Mortality
175:53 Legacy
00:00:00.000 |
The following is a conversation with Brendan Eich, 00:00:02.560 |
creator of the JavaScript programming language, 00:00:05.680 |
co-founder of Mozilla, which created the Firefox browser, 00:00:09.200 |
and now co-founder and CEO of Brave Software, 00:00:15.440 |
Each of these are revolutionary technologies. 00:00:21.120 |
and impactful programming languages in the world. 00:00:24.880 |
Firefox pioneered many browser ideas that we love today, 00:00:33.520 |
not only the browser, but content creation online 00:00:36.640 |
and the nature of the internet to make it fundamentally 00:00:39.640 |
about respecting people's control over their data. 00:00:58.080 |
As a side note, let me say that there's a tension 00:01:06.960 |
"Good execution is more important than a good idea, 00:01:16.880 |
But in my experience, good ideas are in abundance. 00:01:29.840 |
and Brendan somehow, multiple times in his career, 00:01:34.240 |
I'm starting to believe it's more art than science, 00:01:39.200 |
If you enjoy this thing, subscribe on YouTube, 00:01:44.640 |
support on Patreon, or connect with me on Twitter, 00:01:48.800 |
And now, here's my conversation with Brendan Eich. 00:01:52.400 |
When did you first fall in love with programming? 00:01:56.000 |
- I didn't program a lot when I was in high school, 00:02:11.520 |
so I just helped him out on the math and stuff like that. 00:02:15.880 |
I was really into the HP calculators of the early mid '70s. 00:02:23.200 |
and are at Goldfinger, instead of gold divinely heavy. 00:02:27.360 |
There's probably some gold in them, too, gold metalization. 00:02:43.560 |
so I was like, yeah, it's on the hyperdrives and warp drives. 00:02:52.280 |
while I was studying physics as an undergraduate 00:03:09.160 |
and I got one of the first portable C compilers, 00:03:13.640 |
ports to the deck minicomputers we were using. 00:03:19.320 |
just based on procedural abstraction, Pascal, 00:03:24.320 |
just what now would be considered old school, 00:03:40.120 |
build your own compiler, build your own operating system. 00:03:44.200 |
And I know some people who are grad students under him 00:04:19.080 |
language design and compiler project in the '60s. 00:04:33.880 |
which return a value, and procedures, which don't, 00:04:37.840 |
And you could say that whole Algol family went into Ada. 00:04:44.560 |
with Turbo Pascal, which was hugely successful. 00:04:48.020 |
I think in large part due to Anders Helsberg, 00:04:51.000 |
who then went to Microsoft and did C# and .NET 00:04:53.840 |
with his team there and has done really well. 00:05:10.200 |
their own wire-wrapped computers, 6820 maybe. 00:05:14.480 |
And I was wire-wrapping for my engineering course, 00:05:19.160 |
1609 or something simpler, building a computer on a board. 00:05:24.740 |
and port Unix to it, but I picked the wrong processor. 00:05:37.200 |
And not the reduced instruction set computers 00:05:39.360 |
that were just being contemplated into the mid '80s. 00:05:50.800 |
where Intel has kept probably too much backward compatibility 00:06:14.840 |
It was full of bugs and I never could have brought it up. 00:06:17.800 |
But I went on out of physics after three years 00:06:25.740 |
I was being sort of childlike and naive about physics. 00:06:28.420 |
And I thought, meanwhile, the valley is go-go for computers. 00:06:41.960 |
Gave Microsoft the future for a somewhat fishy deal. 00:06:46.800 |
- So it was wide open in the computing space, 00:06:48.640 |
but in physics, you were as optimistic about physics as-- 00:07:04.460 |
He actually studied under Kip Thorne at Caltech. 00:07:12.340 |
- Does it make you sad that theoretical physics, 00:07:18.640 |
any foundational breakthroughs in the latter part 00:07:23.320 |
- Yeah, in fact, I'd say the problem is theory 00:07:27.120 |
I would say we need more Aristotle and less Plato. 00:07:33.800 |
There are lots of mathematics that cannot be realized 00:07:38.340 |
So to understand the world, you need to do experiments. 00:07:41.000 |
You need to not just dream up inductive theories 00:07:47.860 |
competing with them, with no way to decide between them, 00:07:50.100 |
except aesthetics, which is not a good guide, in my opinion. 00:07:56.860 |
Where's the, in terms of what you would love to see 00:08:09.120 |
- Well, those gentlemen are no longer with us, 00:08:11.960 |
So like I said, the real glory days of physics, 00:08:14.440 |
the famous pictures from Germany before the Second War 00:08:26.280 |
that maybe all of, I would say, Western science took 00:08:35.280 |
Now, we can build models that are very predictive 00:08:37.980 |
and generative and then we build actual devices 00:08:51.880 |
which you see certainly in economics, the dismal science, 00:08:55.600 |
and you see, surprisingly, in other so-called hard sciences, 00:08:59.040 |
is models that don't really have to be tested 00:09:16.960 |
- That's such an interesting tension in society. 00:09:20.960 |
which I have a deep love for, like psychology. 00:09:24.400 |
You see this in epidemiology, not with the virus. 00:09:28.040 |
- There's this tension of how much of the world 00:09:31.280 |
can we understand through just a beautifully fit model? 00:09:44.400 |
It's just kind of, it's all about just getting 00:09:46.880 |
the right data set and getting tricks and so on. 00:09:49.640 |
And there's this tension, even in my own soul, 00:09:51.760 |
of like I grew up in theoretical computer science. 00:09:58.680 |
like all of that, like different complexity classes, 00:10:11.280 |
where you engineered some of the most impactful things 00:10:21.280 |
- Yeah, it's not that useful in practice, right? 00:10:24.640 |
People are using it with sort of crypto analysis 00:10:31.760 |
a quantum-resistant crypto algorithm, things like that, 00:10:40.160 |
there are big questions about how quantum computing 00:10:51.080 |
Like you said, I'm not using this kind of computer science 00:10:53.560 |
in practice because almost everything now is engineering 00:11:07.440 |
Like Knuth said, anything you can't automate is an art. 00:11:09.960 |
Well, we can have machine learning compose music 00:11:18.680 |
But user interface still, I think, requires human art. 00:11:31.320 |
One, it had an impact on the world at a huge scale, 00:11:38.320 |
probably the most popular programming language in the world. 00:11:44.140 |
Can you tell the story of how JavaScript was created? 00:11:47.840 |
- Yeah, I was at Silicon Graphics after graduate school 00:11:51.080 |
for seven years, and it got to be big and successful 00:12:08.720 |
I suppose General Magic was a little after that 00:12:11.920 |
But MicroUnity was that company that I went to, 00:12:14.360 |
and it was because my friend, Jeff Weinstein, 00:12:18.040 |
He recruited me, and MicroUnity was doing everything. 00:12:21.960 |
So this was like the ultimate sort of pretend grad school. 00:12:26.080 |
It was doing a new fab, new semiconductor process. 00:12:32.600 |
on the same very large but not wafer-scale chip. 00:12:36.080 |
Originally, it was five centimeters on a side. 00:12:40.360 |
It was really hot, too, so it needed a water cooler. 00:12:43.880 |
It was a Craykiller, and then they shrunk it, 00:12:46.280 |
and they tried to do a home sort of media processor 00:12:51.920 |
but you could think of trying to do all the things 00:13:00.240 |
and sort of wide instructions for multiple issue, 00:13:07.520 |
because the second iteration, the set-top box, 00:13:10.120 |
was really for avoiding the cost to the cable company 00:13:14.520 |
to replace your garbage General Atlantic set-top box 00:13:21.040 |
So if you could have software-gradeable set-top boxes, 00:13:23.900 |
the cable companies thought they could save a lot of money 00:13:27.200 |
- Is this assembly, or which level of the software? 00:13:30.280 |
- It was like, we were writing in, we were using GCC. 00:13:36.280 |
Somebody I worked with there, really very smart guy, 00:13:45.240 |
did his own hardware design as well as software. 00:13:53.080 |
so you could do things like crypto algorithms efficiently, 00:14:01.400 |
complex quadrature amplitude modulated signal. 00:14:05.240 |
So you're basically taking A to D converters, 00:14:14.520 |
So that was really great learning experience, 00:14:19.440 |
As Jim Clark said to me when I hopped to Netscape 00:14:25.240 |
"each one in 10 odds, it's gonna be one in 10 billion." 00:14:41.160 |
Netscape, when was the launch of this rocket? 00:14:52.160 |
- Well, I missed the first floor employment opportunity, 00:14:55.560 |
but the IPO was August 1995, so I was there for that. 00:14:59.000 |
- How obvious was it that Netscape was world changing? 00:15:06.160 |
- Yes, so when I was at MicroUnity still in '93, 00:15:28.120 |
We had to discover how to find the ethernet addresses 00:15:31.760 |
on your network, and then find IP addresses for them, 00:15:35.960 |
And it was great, because nobody knew in the '80s 00:15:39.520 |
All the proprietary stacks like IBM, SNA, and DECnet, 00:15:45.720 |
we're gonna do it, or it's gonna be heterogeneous future. 00:15:48.680 |
Instead, it was Berkeley Unix and the TCP/IP stack 00:15:56.480 |
We all knew it at SGI, but the salespeople didn't. 00:15:59.320 |
And so they kept trying to get multiple network stacks 00:16:06.520 |
And it was email and texty, and it was used then, 00:16:21.720 |
because one of the things that Mark Andreessen 00:16:31.360 |
They, in particular, Mark sent this email saying, 00:16:39.080 |
And I talked to Tim Berners-Lee more recently, 00:16:44.280 |
And it didn't work out, 'cause Mark shipped his in mosaic. 00:16:58.160 |
And so Richard Gabriel of Scheme and Poetry fame 00:17:07.160 |
He's like talking about some kind of subject. 00:17:10.160 |
which is where Jamie Zawinski worked before Netscape. 00:17:12.840 |
And Lucid was doing compilers, and Lucid Emacs, 00:17:16.280 |
which was a fork of Emacs, famously Jamie fighting 00:17:22.640 |
And so Richard Gabriel, very brainy computer guy, 00:17:30.440 |
in front of his version of it on his site, JWZ.org, 00:17:34.360 |
And this is about survival advantage of software 00:17:50.320 |
this Fabergé egg, or Common Lisp, this giant cathedral. 00:17:53.760 |
Of course we're gonna win, this is civilization. 00:17:55.680 |
And those farmers in New Jersey, to borrow from Sopranos, 00:18:02.440 |
there's nothing sound there, it's all hacking. 00:18:06.800 |
- Wow, so you're saying this is a fundamental principle 00:18:14.760 |
- You could say in almost any network system, 00:18:16.920 |
like in biological evolution, you see successful alleles 00:18:19.760 |
sweep populations, and they don't always have, 00:18:26.320 |
You can get, both parents give you the gene variant 00:18:31.760 |
But if one of them does, you're more resistant to malaria. 00:18:38.120 |
except at large scale, and then you realize that 00:18:40.440 |
because it moves fast and can adapt, it can win. 00:18:46.560 |
I used to struggle with this, because JavaScript was done 00:18:48.800 |
in such a hurry, and the force of web compatibility 00:18:55.200 |
And even the standards process injected new mistakes, 00:18:57.640 |
as it will, but often standards bodies go back 00:19:07.080 |
You don't wanna break ATP metabolism or whatever. 00:19:10.320 |
So you have to kind of resign yourself to the reality 00:19:23.080 |
And that happened with JavaScript, and I'm way over it, 00:19:33.400 |
People will say, "Oh, it's not because of merit." 00:19:34.840 |
Well, you're right, but we also improved it over time 00:19:41.760 |
It's like, I'm not saying that that was the best language. 00:19:45.360 |
I'm just saying that was the right time to do it. 00:19:47.400 |
And I like to say the alternative was not to do it. 00:19:50.280 |
I could have told Netscape, "I can't do this. 00:19:58.040 |
- So that's a good way to present the alternative. 00:19:59.800 |
But so it was a Netscape, and you have written it 00:20:03.040 |
in how many days, and why was it only that many days, 00:20:05.880 |
and what was the goal and the underlying principles 00:20:09.720 |
- So the whole, I'm sort of describing worse is better 00:20:11.760 |
in a frenetic way because it fit the model of Netscape. 00:20:15.000 |
When it was known that Jim Clark and Mark Inveas 00:20:19.000 |
were founding Netscape, and they did the first release 00:20:28.240 |
It's like the giant monster that kills Mosaic. 00:20:34.160 |
it's not like you're doing advanced scientific research 00:20:37.360 |
You're more like taking down the last iteration 00:20:43.160 |
and other importances before he stopped working on it, 00:20:45.880 |
and you're making Netscape the new thing that has images, 00:20:49.040 |
plugins, which was the way to do video back in the day. 00:20:53.200 |
for tiled windows called frames and framesets. 00:21:01.640 |
So when I got there, they were heading toward IPO. 00:21:18.080 |
And after that, Greenspan really goosed things 00:21:20.440 |
at the Federal Reserve, and technology had been 00:21:23.160 |
sort of fermenting in a way that came together 00:21:25.800 |
with the internet, and Netscape made it possible 00:21:28.720 |
to do pets.com, to do eBay, to get people to recognize 00:21:33.160 |
a URL on a billboard and then type it in when they get home. 00:21:47.920 |
not just a document viewer, not just a video. 00:21:57.800 |
- Yeah, the most dynamism you get was from a plugin, 00:22:09.440 |
In fact, I was recruited to go do Scheme in the browser. 00:22:32.720 |
where I have Bruce Willis crawling through the duct 00:22:35.480 |
He's like, come out to the coast, have a lot of fun. 00:22:40.560 |
But when I got there, there was no Scheme in the browser 00:22:42.160 |
because they'd started a deal with Sun Microsystems. 00:22:47.040 |
who I admired as a Berkeley Unix founder and Sun founder. 00:22:50.560 |
And Bill got the idea of making the browser programmable too. 00:22:57.200 |
which at that point was not really easy to embed, 00:23:00.360 |
into Netscape, including the Netscape version on Windows 00:23:05.600 |
which was the 16-bit Windows 3.1, which was going away. 00:23:13.560 |
Internet Explorer, I guess, two at that point, 00:23:17.040 |
They already bought or invested in somehow Spyglass, 00:23:26.360 |
And in fact, Microsoft had tried to buy Netscape 00:23:39.760 |
But then they realized, oh, this is going to hurt us 00:23:46.320 |
I'm not sure when Gates' Internet Tidal Wave memo 00:23:50.240 |
That's the famous memo he wrote when Bill Gates realized 00:23:53.160 |
that Microsoft was going down this old copy AOL path 00:23:56.840 |
or copy CompuServe path, a project called Blackbird, 00:24:05.360 |
with a custom content language stack and custom rendering. 00:24:16.880 |
And Gates realized this, and he turned the company 00:24:24.540 |
And once we realized that, everybody inside Netscape 00:24:27.400 |
felt even more urgency and more of a frenetic mood. 00:24:35.840 |
But there was still a chance to do a companion language 00:24:42.620 |
It's evolved and improved quite a lot since then too. 00:24:57.900 |
you really benefit from having a scripting language 00:25:00.020 |
like Visual Basic, which became Visual Basic Script 00:25:03.000 |
in IE3, but didn't take over and kill JavaScript, 00:25:19.480 |
graphic designers with some programming inclination. 00:25:29.880 |
Some people say duct tape language, which I don't really like. 00:25:32.800 |
But we saw, Bill Joy and Mark Andreessen and I, 00:25:38.040 |
And the gleam in our eye was to call it JavaScript. 00:25:45.080 |
And Netscape Marketing, I think, didn't like that. 00:25:52.120 |
And they tried LiveScript in August and that didn't last. 00:25:54.960 |
And then finally, we got the trademark license 00:25:58.720 |
But the work I did to prove that it could be done 00:26:08.320 |
that they couldn't find an open hiring requisition 00:26:22.640 |
former Bell Labs intern, grad student intern, 00:26:27.040 |
And Greg was very interested in taking protocols 00:26:32.840 |
'cause he thought that CPUs wouldn't scale up. 00:26:45.680 |
as well as Unix kernel hacking and NFS and things like that. 00:26:49.000 |
So I came into Netscape to work on the server side 00:26:53.060 |
for a month, but I was thinking the whole time, 00:26:58.480 |
Might it syntax even be more like natural language 00:27:00.680 |
like HyperTalk, which is Bill Atkinson's language 00:27:04.840 |
in HyperCard, if you have ever used HyperCard 00:27:12.080 |
but my management is saying make it look like Java, 00:27:25.520 |
but management did, like the rickshaw of engineering knew. 00:27:40.240 |
So you're going to want some of the data types in Java 00:27:43.880 |
You're going to want the primitive types that Java, 00:27:47.520 |
So at least some of them, double, let's call it 00:27:50.880 |
in Java's terms, from the C term for double precision, 00:27:53.720 |
floating point, or strings, or Booleans, and objects. 00:28:03.960 |
that looking like Java meant kind of the C curly brace 00:28:07.520 |
syntax, but also some of the data types and objects. 00:28:09.840 |
- Like objects and so on, all that kind of stuff. 00:28:15.480 |
Even the bitwise operators and the shift operators, 00:28:19.580 |
which Java had because it didn't have unsigned integer types. 00:28:22.720 |
It said if you want to do unsigned operations, 00:28:25.440 |
And that turned out to be important much later. 00:28:36.340 |
the statement grammar up to a point from Java. 00:28:51.620 |
Because I saw the need for callbacks in the browser, 00:28:58.640 |
Most users weren't ready for mutual exclusion 00:29:13.340 |
I thought I'll just make it easy to have fun arcs, 00:29:23.660 |
It took forever to get proper first class functions, 00:29:27.300 |
lambdas now into Java, Java seven or eight, I think. 00:29:33.780 |
But you were thinking that the JavaScript in the browser 00:29:36.200 |
would not have the luxury of being concurrent. 00:29:48.280 |
in the single Unix process on Unix or Windows. 00:29:51.920 |
And it was where you had to service the event loop 00:30:16.060 |
because HyperCard had this on event name syntax. 00:30:19.420 |
And so that's why you have in JavaScript on click 00:30:21.640 |
run together as the name of the event handler. 00:30:24.080 |
And there's some funny ones on mouse over and on mouse out. 00:30:34.900 |
because it had to run in the main thread of the browser 00:30:42.620 |
or quickly or in a nested way with the document, 00:30:46.680 |
with the objects reflected from the HTML document, 00:30:51.180 |
And that is one of the reasons I think JavaScript survived 00:31:04.820 |
who was an intern grad student at CMU at the time, 00:31:12.580 |
to deliver on that vision where you do have commerce 00:31:22.180 |
and Java was just these components, these helper. 00:31:24.380 |
- You might as well do everything in JavaScript. 00:31:29.580 |
And in fact, Sun mismanaged Java as a plugin. 00:31:37.700 |
about the browser, it's just about getting Java out there. 00:31:41.220 |
They then tried, because Microsoft's killing Netscape 00:31:43.820 |
after a few years, they tried getting into Microsoft. 00:31:46.140 |
And you may remember there was a Sun-Microsoft deal 00:31:54.820 |
And that's when they really pulled the trigger. 00:31:56.420 |
I think they already evaluated it and liked it 00:32:07.540 |
We don't want, I'm not sure what the fights were about. 00:32:12.300 |
And up till then, Microsoft had been using Java components 00:32:16.940 |
like in Outlook Web Access, which had a lot of JavaScript 00:32:23.100 |
They had to call the mail server through HTTP 00:32:33.820 |
they suddenly other, the left-hand gave the boot 00:32:37.260 |
and the right-hand said, "We better do something else 00:32:40.900 |
And they said, "Let's just add an ActiveX component," 00:32:46.900 |
And we'll make it, it'll be what became XML HTTP request, 00:32:51.980 |
which is now a web standard for calling asynchronously. 00:33:01.100 |
to Java being successfully the loser and getting kicked out. 00:33:05.100 |
And after Microsoft kicked it out, it was a plugin 00:33:07.680 |
and you would find it required for like smart card banking 00:33:11.020 |
in the Nordic countries where that was mandated by law 00:33:16.380 |
Or there were pilots who used it for flight information. 00:33:29.540 |
- I think after the IPO, so it was probably late '95. 00:33:39.540 |
He came knocking and the marketing guy at Netscape 00:33:47.780 |
and just everybody wanted to get in on the Netscape 00:33:57.360 |
And the good thing about Macromedia was it was a tool company 00:34:05.800 |
which are still somewhat lost to us of Flash. 00:34:08.120 |
The timeline, animation is sort of an immutable function 00:34:17.240 |
- Flash Director, there were a bunch of them. 00:34:27.440 |
All the restaurant websites around 2005 were done in Flash 00:34:30.880 |
which was, we were trying to do HTML5 at the same time 00:34:35.080 |
We were trying to make the web capable enough 00:34:47.800 |
- Not really, I actually admire Flash's technology 00:34:54.880 |
if you're dealt a bad hand like JavaScript was a rush job 00:35:00.280 |
and you can invest in the tools and make it pretty good. 00:35:11.080 |
for which they were convicted and even after that 00:35:17.480 |
was people kept saying, oh, the web can't do X, 00:35:29.000 |
and the reason they failed is because there's too much value 00:35:40.880 |
and get wide distribution, get sort of evolutionary advantage 00:35:44.560 |
and priority of place but you can also improve it over time. 00:35:51.120 |
and for some reason Flash is now out of favor, 00:35:53.040 |
Steve Jobs said you can't have Flash on the iPhone. 00:35:56.760 |
Put your energy into JavaScript and that happened, right? 00:35:58.880 |
So we did things at Mozilla with Adobe to improve 00:36:04.880 |
and to improve the version of JavaScript that was in Flash. 00:36:27.280 |
So it's like those days, it would be interesting 00:36:31.280 |
if you could just describe actually zooming in 00:36:34.800 |
on how the cake was baked from the several days 00:36:39.800 |
that you were working on it, what was on your mind, 00:36:48.360 |
I mean, you're right, there were these pregnant moments 00:36:50.240 |
you see in hindsight, maybe they're overrated 00:36:52.240 |
but like Hegel sees Napoleon on horseback at Jena 00:36:55.800 |
and says, "There's the world spirit on horse." 00:36:59.240 |
And I knew that there was a chance to do it, Mark knew, 00:37:10.840 |
how the JavaScript should be right there in the page. 00:37:14.800 |
'cause I thought so too but a lot of people were like, 00:37:20.120 |
And indeed there are problems, if you did it naively, 00:37:22.000 |
you'd see the code laid out as like random gibberish. 00:37:29.840 |
I mean, so you and Mark thinking about this idea 00:37:32.600 |
that you just inject code in the middle of the markup. 00:37:36.160 |
- Of the webpage, yeah, it was considered kind of heretical. 00:37:40.160 |
but he corresponded with me and at first he was angry. 00:37:42.120 |
He's like, "You should have used a marked section, 00:37:52.560 |
and over time you could do the proper SGML thing. 00:37:55.320 |
But eventually he came around and it was again 00:38:00.880 |
like the idea which Lin Margulies I think helped get across 00:38:10.640 |
that maybe mitochondria were ancient prokaryotes 00:38:14.080 |
that got into the cell and became beneficial. 00:38:32.760 |
so you were focusing on the Netscape at that time, 00:38:37.080 |
interpret correctly this mix of HTML and whatever code? 00:38:41.440 |
- I had to hide it from old browsers including Netscape 1.1 00:38:48.000 |
but inside the container that comment lived in, 00:38:51.980 |
I could make different semantics in Netscape 2 00:39:02.560 |
the programming language was written as a comment. 00:39:10.120 |
And it was this two-way comment hiding hack, as I called it, 00:39:13.480 |
that was absolutely necessary for us to get off the ground. 00:39:15.720 |
We couldn't have bootstrapped JavaScript without it. 00:39:20.320 |
The only scripts in Netscape 2 were inline in the document. 00:39:27.420 |
what were the choices you were thinking about? 00:39:30.200 |
- Garbage collection. - Was garbage collection. 00:39:31.640 |
- I didn't have time to write a garbage collector, 00:39:45.360 |
So after I was in the server team doing HTTP 1.1 00:39:49.640 |
I finally got transferred to the client team in early May. 00:39:52.320 |
And that's when I, you know, I got the go sign from Mark 00:39:59.360 |
even people inside Sun are definitely doubting. 00:40:01.880 |
Bill Joy was the champion, but he was like alone in that 00:40:13.080 |
Frank Miller put it in the Dark Knight Returns 00:40:20.960 |
And you were better off having that complementarity, 00:40:35.480 |
I think I, for a history of programming languages paper 00:40:42.720 |
I think it was the 10 days from like Thursday evening 00:40:50.800 |
the whole of that week and then into the Monday. 00:41:10.040 |
people were formalizing more efficient bottom-up grammars, 00:41:19.520 |
And I studied all this and learned how to parse them. 00:41:32.200 |
And I did that for JavaScript in a blazing hurry. 00:41:37.360 |
Didn't have precedence inversion problems or other bugs, 00:41:45.240 |
Like the equality operator in those 10 days sprint 00:41:49.400 |
between two objects of different dynamic type said, 00:41:54.320 |
And then after that, I had internal early adopters 00:41:57.660 |
and they were using JavaScript to match a number 00:42:01.260 |
against a database field that had been stringized. 00:42:03.920 |
And they said, "Oh, can't we just have implicit conversion?" 00:42:08.620 |
I was trying to please them and get adoption. 00:42:10.640 |
And that broke what equivalence relation nature 00:42:26.960 |
is something that people still roast me over. 00:42:34.280 |
the equality operator is the thing that you regret. 00:42:41.440 |
So what is the biggest thing you regret in those 10 days? 00:42:45.200 |
And what is the biggest thing you're proud of? 00:42:47.480 |
- So that making it sloppy came after the 10 days. 00:42:53.080 |
"Can you please make it sloppy or add this cute feature?" 00:42:57.640 |
And I should have known that 'cause I think Niklaus Wirth, 00:43:01.120 |
"The essence of design is leaving things out." 00:43:06.180 |
I was in such a hurry, I left out garbage collection. 00:43:11.240 |
that people weren't running out of memory right away 00:43:21.000 |
And you know, at first, you write a short script 00:43:24.120 |
and the page doesn't last long or it doesn't do a lot, 00:43:35.560 |
I was, "Oh yeah, I better go back and do reference counting." 00:43:38.600 |
And then the problem with reference counting is 00:43:40.200 |
you're writing the language in the runtime in C, 00:43:43.160 |
an unsafe language, and if you're reference counting 00:43:45.760 |
and you overflow the counter, you mismanage it 00:43:51.560 |
If you underflow it, you pre-memory that's still in use. 00:43:56.200 |
And even then, we knew what all the security hackers 00:44:02.600 |
potentially a remote code execution vulnerability. 00:44:17.780 |
write some HTML and JavaScript that just happens 00:44:21.820 |
like it causes JavaScript to underflow a reference counter, 00:44:24.960 |
and the script still has its hands on that object 00:44:29.040 |
and there's some kind of lookup function table 00:44:30.680 |
in the object, but you've managed to stuff the heap 00:44:34.620 |
with strings that forwards their own lookalike 00:44:37.160 |
for the function table, you can call some other code. 00:44:46.280 |
Java had this problem too, but in its own VM. 00:44:48.840 |
And it just was a separate headache for Sun to worry about. 00:44:58.340 |
and after these follow-on work to embed JavaScript 00:45:02.640 |
better in the browser and to add garbage collection 00:45:06.320 |
I call it reference counting, and get it shipped. 00:45:09.660 |
We had a bunch of dot releases where we fixed 00:45:20.000 |
what are you most proud of from those 10 days? 00:45:23.560 |
I think, especially since Java didn't have it 00:45:27.600 |
- Scheme made it in somehow at the end of the day. 00:45:39.680 |
It has sort of a beautiful, complete set of forms 00:45:44.680 |
to make the Lambda calculus pleasant to use in practice. 00:45:51.640 |
kind of a multi-paradigm or Schembolic. (laughs) 00:45:56.120 |
- Just on a small tangent, you mentioned Mark Andreessen. 00:45:59.400 |
It sounds like, and Bill Joy, but staying on Mark, 00:46:06.520 |
in that he sort of believed in what you were doing there. 00:46:09.120 |
Can you talk about like what role Mark had in your life? 00:46:17.720 |
And Mark was just fresh out of, you know, grad school 00:46:20.880 |
And he was a big dude and he got fitter later. 00:46:28.800 |
And we would meet there and brainstorm about what to do. 00:46:31.040 |
And it was very direct because we didn't have much time. 00:46:36.280 |
but the implication was Microsoft was coming after us. 00:46:41.760 |
like Netscape plus Java kills Windows, right? 00:46:56.000 |
and Java was the big name, hence the trademark license, 00:47:03.720 |
I told this in other interviews, I can say it, 00:47:05.040 |
he thought, what if we had my friend Kip Hickman, 00:47:09.520 |
and who was a kernel hacker at SGI when I joined, 00:47:20.480 |
which Arthur Van Hoff had written, very nice code, 00:47:26.480 |
And so we could use that as soon as Kip's Java VM 00:47:34.320 |
running the self-hosted compiler to emit the bytecode. 00:47:40.300 |
And Mark was like, well, maybe we can just ditch Sun, 00:47:44.380 |
we'll have Kip's Java VM, we'll have your JavaScript VM. 00:47:49.600 |
because he knew you could do things with HTML and images, 00:47:57.340 |
- Like even SGI had already started its downfall 00:48:02.940 |
had gone off to do 3DFX and all these other companies 00:48:05.380 |
that made the graphics card on your PC, right? 00:48:12.860 |
But why not put that graphics capability on the web? 00:48:24.380 |
But OpenGL ES is the mobile version of OpenGL, 00:48:32.760 |
or really graphics languages for what became the GPU. 00:48:38.540 |
And I thought, "Okay, I can try to get somebody 00:48:40.300 |
I knew at SGI, but he's a grad student at MIT. 00:49:03.980 |
And Mark was very generative because he was pushing hard. 00:49:06.620 |
He was ambitious and he wanted to have Netscape 00:49:20.500 |
You've thrown some loving words towards Microsoft 00:49:31.260 |
From a big sort of philosophical principle perspective, 00:49:34.500 |
can you comment on the approach that Microsoft has taken 00:49:37.780 |
with Internet Explorer from IE1 to Edge today? 00:49:49.580 |
Or is the world worse off because Internet Explorer exists? 00:49:54.580 |
- So I'm gonna segment this into historical eras 00:49:57.620 |
because I think Microsofters today with Satya 00:50:00.620 |
and what they're doing with Edge is different. 00:50:06.160 |
not really original in my view, not an originator. 00:50:09.660 |
Steve Jobs famously said once, "He doesn't have any taste." 00:50:19.340 |
and ligatures and kerning and the fonts looked great. 00:50:22.580 |
And Windows had this sort of ugly system font 00:50:32.380 |
throughout the history of these competitions? 00:50:41.660 |
because it's being foisted on people of Windows. 00:50:45.220 |
We have some Windows 7 boxes or laptops we keep running too 00:50:48.220 |
because we don't connect them to the internet generally. 00:50:50.860 |
But once you have that operating system to hold, 00:51:07.060 |
That's why everybody at Netscape felt we're doomed. 00:51:09.580 |
This was something Michael Toy and Jamie Woodson were doomed. 00:51:17.540 |
Java and JavaScript and plugins, more plugins, 00:51:28.700 |
out of what were pretty static web languages. 00:51:34.460 |
to build what you would call single page applications 00:51:37.740 |
And they were using JavaScript locally to compute things 00:51:40.380 |
and to call the server on a hidden frame in the background. 00:51:43.660 |
So it was prefiguring a lot of what came later as AJAX 00:51:50.900 |
- That's kind of, I don't know, from my perspective, 00:52:01.380 |
which I learned later about from Eric von Hippel of MIT, 00:52:04.020 |
which is user innovation networks, lead user effects. 00:52:14.340 |
Getting early developer feedback, absolutely critical. 00:52:23.740 |
where you're dealing with developers all the time 00:52:27.200 |
But the lead users helped improve JavaScript, 00:52:34.540 |
- So we're talking about just a small collection 00:53:11.140 |
How has this evolution, that now it's taken over the world? 00:53:16.340 |
because the standards body got shut down after Microsoft, 00:53:21.540 |
and then felt punished by the US v. Microsoft 00:53:28.260 |
because Netscape had taken the lead with the web 00:53:32.300 |
and HTML innovations like frames and framesets tables. 00:53:46.000 |
- SGML was the precursor markup language to HTML, 00:53:55.820 |
- Pointy brackets, but it had all sorts of elaborate syntax 00:54:10.420 |
had this strange idea that they could replace the web 00:54:12.340 |
with XML, or that they would upgrade the web to be XML. 00:54:31.860 |
is like it's more like biology than programming. 00:54:42.580 |
the kind of users who were committing these errors. 00:54:56.340 |
to make it popular and usable and accessible. 00:54:58.620 |
And so XML as a pure thing was never gonna take over. 00:55:07.220 |
because Netscape wasn't cooperating with them. 00:55:11.180 |
and we realized, our standards guru, Carl Cargill, 00:55:18.820 |
by standardizing parts of the Windows 3.1 API, 00:55:24.020 |
They said, "Microsoft, we can't use your operating system 00:55:29.660 |
And the government said, "No, we need a European standard." 00:55:33.420 |
the European Computer Manufacturers Association, ECMA, 00:55:38.580 |
and became a proper noun instead of an acronym. 00:55:53.420 |
- But it gave, I mean, maybe you'll speak to that, 00:55:56.140 |
but it gave the name to JavaScript of ECMAScript. 00:56:14.580 |
"You're using J-A-V-A at the start of your domain name. 00:56:18.900 |
- I love marketing more than anything else in this world. 00:56:22.020 |
So ECMAScript and now is popularly named as ES plus version. 00:56:27.020 |
- I would say people use JS more than anything. 00:56:34.860 |
and when you wanna refer to a version of JavaScript, 00:56:49.220 |
- Yeah, it doesn't match the years perfectly. 00:57:18.140 |
He did a lot of the work on the first draft of the spec, 00:57:25.260 |
He told his bosses, stop bugging me to do other things. 00:57:48.020 |
And in areas where we didn't like what it did 00:58:02.780 |
the dominant one usually sets the de facto standard. 00:58:11.060 |
Over time as Netscape went down and Microsoft went up, 00:58:14.140 |
we did the first edition of the standard codified in 1997. 00:58:22.140 |
- For any interesting reason or just because it's Nice? 00:58:24.540 |
- And ECMA's European and IBM and others were there. 00:58:43.500 |
- Was the standardization process beautiful or painful 00:58:46.140 |
that those early days, you as a designer of the language? 00:58:53.620 |
you had this giant brain, Guy Steele helping, 00:58:59.500 |
Richard wrote the fourth clause of the ECMA standard, 00:59:02.900 |
which was kind of an intro to what JavaScript's all about. 00:59:09.100 |
There was some tension where I was fixing bugs 00:59:12.700 |
And Sean Katzenberger of Microsoft was actually mad. 00:59:18.620 |
I saw that only he saw this sort of off by one bug 00:59:23.980 |
And I said, "There's a fence post bug there." 00:59:30.260 |
- What were the features that are being struggled over 00:59:36.500 |
and what we thought should work in the edge cases 00:59:38.420 |
that didn't interoperate or that seemed wrong. 00:59:43.100 |
for the future editions that I was already implementing. 00:59:52.500 |
So the de facto standard would lead the de jure standard. 00:59:54.740 |
And I was putting in the missing function forms 01:00:03.500 |
So you didn't want to create the perfect language, 01:00:09.940 |
So there was a staged process where I had to hold back 01:00:22.820 |
And they came into the third edition of the standard, 01:00:27.680 |
But at that point, Netscape had been sold to AOL 01:00:30.460 |
and was, which was a decent exit considering. 01:00:37.400 |
Netscape was selling the browser along with server software 01:00:57.140 |
There's a famous investor, he did very well on Google. 01:01:01.800 |
He was sales guy or head of sales at Netscape. 01:01:17.440 |
- It was totally immaterial in the antitrust case. 01:01:19.720 |
But JavaScript escaped into the standard setting 01:01:43.400 |
And by 2003, even though they'd been sort of noodling around 01:01:59.600 |
- He designed the successor language, JavaScript 2, 01:02:24.080 |
where everyone, okay, there's this history of JavaScript 01:02:29.200 |
when you're having beers to talk crap about JavaScript. 01:02:32.520 |
Everyone loves to hate, like people who are married say, 01:02:35.280 |
ah, marriage sucks, is they just wanna let off some steam, 01:02:50.400 |
and added something that was already ES5 strict mode, 01:02:53.600 |
but made it implicit in class bodies and module bodies. 01:02:59.480 |
some of the ES4 designs that we'd done with Adobe 01:03:03.640 |
for what we hoped would be the fourth edition of ECMAScript 01:03:07.680 |
that were supposed to fold in some of these old JavaScript, 01:03:13.080 |
So you look at the family tree and you see these forks, 01:03:15.240 |
and the main ones are the ones that go into Adobe Flash, 01:03:27.060 |
And then trying to bring them back into the standard, 01:03:28.840 |
and not quite succeeding, ES4 was mothballed. 01:03:57.480 |
we're gonna work on incremental improvements, 01:04:02.580 |
Not quite true, but they added a bunch of interesting APIs, 01:04:06.300 |
Alan Weir-Sprock, my co-author of the Hubble paper. 01:04:15.260 |
the sort of editor job of the JavaScript standard, 01:04:21.300 |
And when we got ES6 done, it was a little late, 01:04:41.100 |
that almost feels ready to take over the world completely. 01:04:52.240 |
Anders and company, Luke Hoban, who's left Microsoft, 01:05:05.720 |
If you, don't worry about soundness in the type system, 01:05:12.280 |
as sort of a warning system, a tool time type system, 01:05:15.040 |
you can still have a lot of value for developers, 01:05:19.280 |
So TypeScript's been a roaring success for Microsoft. 01:05:24.120 |
Is it adding confusion or is it ultimately beneficial? 01:05:28.200 |
Now, it's technically a superset of JavaScript, 01:05:36.640 |
Any JavaScript program is a TypeScript program, 01:05:44.440 |
Microsoft's had to kind of look around corners 01:05:47.160 |
at the standards body and guess how their version 01:05:52.480 |
And the standards body then may change things a bit. 01:05:59.320 |
or to bring it back with incompatible changes 01:06:03.120 |
And I think they've played generally fair there. 01:06:09.920 |
They have a proprietary investment, it's valuable, 01:06:15.840 |
to any of the other big companies in the standards body, 01:06:22.280 |
like a kind of a dance partner to JavaScript, 01:06:27.640 |
if they keep reconverging it and the standard 01:06:29.800 |
doesn't break them and goes in a good direction, 01:06:37.040 |
Because when you're talking about type annotations, 01:06:39.020 |
they're generally on parameters and return values 01:06:42.360 |
and variable declarations, they're cast operators. 01:06:47.280 |
and you want it to work the same in all engines. 01:06:54.240 |
though then you could create the same problem 01:06:58.560 |
and they don't agree and you have conflicts between them. 01:07:01.720 |
But pluggable type systems could be one way to standardize. 01:07:04.960 |
- What do you think about the giant ecosystem 01:07:12.840 |
this is a side effect of how many people use JavaScript, 01:07:22.320 |
And they're actually awesome in all different ways. 01:07:44.840 |
John Resig made this library that was sort of query and do 01:07:50.000 |
with JavaScript sort of object graph or DOM querying 01:07:53.000 |
and made it very easy for people to do things 01:07:54.920 |
almost like they were learning jQuery as its own language, 01:08:02.080 |
the difficulty of using the document object model, 01:08:04.960 |
these APIs that were originally designed in the '90s 01:08:08.440 |
They were very object-oriented or even procedural. 01:08:15.440 |
and three different hokey-pokey dances to do something, 01:08:29.680 |
that we were working on in the HTML5 sort of effort, 01:08:40.120 |
A lot of things can be done now in raw JavaScript 01:08:42.560 |
that you would make more concise and terse in jQuery, 01:08:53.800 |
because JavaScript lacked some of the features of jQuery. 01:08:59.000 |
And so now that JavaScript is swallowing what jQuery was, 01:09:05.240 |
only the ones that truly add value will stick around 01:09:30.280 |
division of responsibility and division of style 01:09:37.240 |
So the document object model really stagnated 01:09:39.600 |
after Microsoft kind of de-invested in the web. 01:09:46.880 |
doing things quickly and getting on first called DHTML. 01:09:51.320 |
that were like an alternative document object model 01:10:00.040 |
Ian Hickson, who went to Google, Apple and Mozilla said, 01:10:08.720 |
Let's standardize HTML5 based on all this good stuff, 01:10:57.840 |
and he started thinking about them more axiomatically. 01:11:00.920 |
Now this can be good because you can sort of systematize 01:11:06.000 |
or you can get caught in the pragmatism of saying, 01:11:08.080 |
well, we have to handle all of these edge cases, 01:11:09.840 |
so we're just gonna have sort of a test matrix. 01:11:14.000 |
it will not be beautiful by many people's lights. 01:11:15.880 |
Everyone likes to minimize along their preferred dimensions, 01:11:19.320 |
the seven special forms and scheme or whatever. 01:11:26.680 |
It's kind of shambolic, it's a creative multi-paradigm. 01:11:30.400 |
And Hicksey did a good job, I would say, with a bunch of it. 01:11:34.380 |
Other people came in in the spirit of Ian Hickson 01:11:36.640 |
to do HTML5 work and they've carried on that effort. 01:11:42.640 |
de facto standards from the past being sort of combined 01:11:47.580 |
and then rethought in a way that has a simpler syntax, 01:11:50.300 |
like the fetch API instead of XMLHTTP request. 01:11:55.440 |
it ultimately, it feels like, maybe you can correct me, 01:11:58.080 |
it feels like it was the nail in the coffin of Flash. 01:12:03.040 |
in my opinion, was the actual stake to the heart. 01:12:05.460 |
But, well, I'm not sure what trope you wanna use. 01:12:09.160 |
Flash was a zombie until just this year, right, 01:12:12.080 |
or last year, I think last year was the end of Flash 01:12:18.280 |
And yet, you're right, we had to make HTML5 competitive. 01:12:28.600 |
I mean, me from, I used to animate all kinds of stuff 01:12:31.880 |
inside Flash, plus there's a programming element. 01:12:34.920 |
It was a little bit, I don't know if you can comment 01:12:44.900 |
Like it didn't, that OCD part of me as a programmer 01:12:50.180 |
It feels like there was bugs that were introduced 01:12:52.760 |
through the animation process that I couldn't debug easily. 01:12:56.620 |
I didn't use it, so I'm doing the grass is greener thing 01:13:02.100 |
was that it was this immutable function of time, 01:13:06.220 |
if you dodged these bugs or worked carefully, 01:13:08.320 |
you could really make it sing in ways that I think 01:13:10.660 |
still a little challenging with web animation standards, 01:13:18.140 |
But there's so many tools now that maybe it doesn't matter. 01:13:20.740 |
And yet we had to do video, we had to do WebGL 01:13:30.060 |
But once we did all these things that helped Flash die, 01:13:41.180 |
this graphics capable to the metal, portable runtime. 01:13:46.180 |
And we at Mozilla realized this and we saw JavaScript 01:13:53.340 |
Adobe had somebody in the Adobe labs doing this too. 01:13:59.020 |
Alon Zakai, who did his own LLVM based compiler 01:14:03.220 |
that would take C or C++ and it would emit JavaScript. 01:14:07.620 |
You're going from this sort of machine types, 01:14:09.820 |
low level, controlled memory allocation language 01:14:18.020 |
But Alon sort of just phenomenologically carved nature 01:14:28.220 |
from Northeastern University, who was a type theorist, 01:14:36.820 |
they figured out how to codify what Alon had done 01:14:40.180 |
into a typed subset of JavaScript called Asm.js. 01:14:47.260 |
The types are casts that occur in dominator positions 01:14:54.140 |
So it's like a hack on JavaScript and it's a subset. 01:15:04.480 |
which are double precision point into integers. 01:15:13.040 |
if a compiler emits them in the right places, 01:15:18.500 |
typed memory locations, and you can type check your program. 01:15:22.380 |
You can not only type check it, you can compile it. 01:15:32.580 |
It calls a bunch of functions that come from the C functions 01:15:46.860 |
Tim Sweeney, I bet, didn't think it could be done quickly. 01:15:54.060 |
and in four days they had Unreal Engine ported 01:15:59.940 |
But they had to have WebGL, which came from OpenGL, 01:16:03.180 |
ES came to OpenGL, which came from Silicon Graphics GL. 01:16:05.980 |
They had to have Web Audio, so they could map OpenAL, 01:16:11.000 |
to Web Audio, which was kind of a Chrome idiosyncratic thing. 01:16:16.260 |
And they had to have Asm.js for fast C++ to JavaScript. 01:16:21.060 |
And if you didn't have that fast compiler step, 01:16:27.340 |
trying to do an Unreal game would be too big and too slow. 01:16:37.000 |
this must have been fall 2012 now that I think about it, 01:16:40.420 |
'cause we demoed it at GDC, Game Developer Conference 2013, 01:16:45.420 |
That's like Unreal Engine, Unreal Tournament, 01:16:54.460 |
because JavaScript now is able to run basically on par 01:17:02.820 |
you had the fast JavaScript VMs in 2008 when Chrome came out. 01:17:14.460 |
The SquirrelFishExtreme team at Apple did their JIT. 01:17:21.900 |
It was a little bit too much tuning of the benchmark. 01:17:26.700 |
But it was still kind of its own high-level language 01:17:37.100 |
people were still saying, "Well, JavaScript's okay. 01:17:41.020 |
Everybody gave Google credit, especially Google. 01:17:49.300 |
which is a separate lineage for taking basically C code, 01:17:52.940 |
compiling it into a software fault isolated container 01:17:56.260 |
of some sort, using some kind of virtualization technique. 01:18:03.380 |
But they ended up using process isolation, too, 01:18:06.300 |
And in the end, it was like portable native client, 01:18:08.540 |
okay, meet the new boss, same as the old boss. 01:18:19.820 |
And in fact, everybody agreed in spring of 2015, 01:18:25.500 |
and make a new syntax, a binary syntax that's efficient, 01:18:34.100 |
one VM, very important, one garbage collector, 01:18:36.220 |
one memory manager, one set of compiler stages. 01:18:44.260 |
And it's important that it have binary syntax 01:18:46.340 |
because at the end of the day, especially on mobile, 01:18:50.100 |
even if you're using LZ compression on the wire, 01:18:52.040 |
that's cool, but you've got to blow it out into memory 01:18:53.900 |
and then parse the silly eight character function keyword 01:18:56.860 |
that I picked when I should have used something shorter. 01:19:14.660 |
I mean, 'cause you've been through the whole journey. 01:19:16.820 |
I know every step of the way, but is it like, 01:19:22.140 |
- It does, but I knew, so the funny thing is, 01:19:24.220 |
computer science is this big karmic wheel, right? 01:19:32.420 |
I was loaned by Netscape to do due diligence for Sun 01:19:47.660 |
These Stanford language buffs who had taken Smalltalk 01:19:56.220 |
and made really fast, just-in-time compiling VMs for them. 01:20:00.580 |
And they, well ahead of Java Hotspot or JavaScript V8 01:20:10.740 |
because Smalltalk is dynamic language, right? 01:20:15.060 |
more lockdown declarative syntax than JavaScript, 01:20:17.380 |
but it's fundamentally dynamic, you don't declare the types. 01:20:20.980 |
But you could infer the types as the program runs 01:20:38.300 |
does a quick check to make sure the type is right, 01:20:40.140 |
and if it's not right, it bails to the interpreter. 01:20:48.620 |
All that amazing stuff I knew about in the '90s 01:20:53.780 |
and Anamorphic got bought by Sun and they did Hotspot. 01:20:57.220 |
And you needed that even in Java because at scale, 01:21:00.060 |
Java has some dynamic aspects due to invoke interface. 01:21:04.340 |
You can have basically collections of Java code 01:21:10.900 |
or package is compiled exactly what's being called, 01:21:21.740 |
And they did that and Hotspot is an amazing beast. 01:21:24.620 |
I've met like 13 people who all claim they created it. 01:21:27.740 |
I think one of them may deserve credit more than others. 01:21:38.060 |
to do their own browser, which we knew at Mozilla around 2006 01:21:46.620 |
who was one of the young engineers from Anamorphic 01:21:50.660 |
And so Lars is like one of the world's expert 01:22:03.620 |
And then I had another friend who was DevRel at Chrome 01:22:07.020 |
and he said, yeah, we don't know what they're doing. 01:22:08.300 |
This is getting 2007 to fall, getting toward 2008. 01:22:12.980 |
and we don't know what's going on with the V8 team. 01:22:16.860 |
rewriting their engine four times, which is good. 01:22:19.260 |
That's the right way to do this kind of development. 01:22:22.260 |
They were learning JavaScript, including all its quirks 01:22:24.260 |
which they came to hate, the fire of a thousand suns 01:22:26.980 |
which is one of the reasons that Lars and company 01:22:46.420 |
had this prehistory going back to Smalltalk itself 01:22:55.940 |
- Yeah, and today we have an incredibly fast language 01:23:00.140 |
that like you said, still, without hate, you can't have love. 01:23:04.740 |
So I think there's both love and hate for this dance, 01:23:15.300 |
- Today, JavaScript is the most popular language 01:23:20.120 |
Why, by many measures, why do you think that is? 01:23:32.820 |
- So I think I did, by doing first class functions 01:23:36.220 |
and taking the good parts of the C operator hierarchy 01:23:57.700 |
And then over time, working on it with the standards body, 01:24:02.760 |
but in the context of HTML5 and making the browser better, 01:24:08.940 |
this is something that Nick Thompson wrote nicely about 01:24:15.900 |
"and it was compiled and you had to declare all your types. 01:24:20.860 |
"the average programmer who wanted to build real web apps, 01:24:25.020 |
And I was in there meanwhile doing a bunch of people's jobs, 01:24:33.580 |
JavaScript was considered a Mickey Mouse language. 01:24:36.100 |
It was for annoyances like the scrolling text 01:24:38.620 |
at the bottom of the browser in the status bar. 01:24:45.420 |
in that single threaded event loop in a useful way. 01:24:51.160 |
Now you don't always love the best thing, right? 01:24:56.060 |
sunnet about, "I'm Mr. Sizer, nothing like the sun." 01:25:03.780 |
Serenity at the end where the actual piece in the score 01:25:17.100 |
And he's basically talking about how you have to love 01:25:19.460 |
the ship because if you don't, it's gonna kill you. 01:25:36.700 |
There's most successful products in this world 01:25:43.060 |
Perhaps the flaws themselves are actual features, 01:25:45.320 |
but that's a whole nother, that's a discussion about love. 01:26:06.040 |
There are lots of Lisp variants that had classy systems. 01:26:12.700 |
So people who don't reject it based on some sort 01:26:23.340 |
The standards body is competing browser vendors mainly, 01:26:25.800 |
but also now big companies that use JavaScript heavily 01:26:28.440 |
the PayPal's and other such companies, Salesforce. 01:26:36.260 |
They have to hire developers who know JavaScript. 01:26:38.980 |
They have to keep their engines up to the latest standard. 01:26:43.060 |
And this creates all this sort of social structure 01:26:47.780 |
I mean, you get C++ buffs that follow the inner workings 01:27:22.620 |
It's like, there's a chaotic community of all. 01:27:24.940 |
And there's some power from that distributed crowd 01:27:32.640 |
It lets people in without requiring these credentials. 01:27:35.840 |
I remember in the late 90s into the noughties, 01:27:51.740 |
- Do you have some, because it's such a monumental moment 01:27:58.080 |
do you have thoughts about this huge distributed, 01:28:02.200 |
crowdsourced financial happenings with Wall Street bets? 01:28:12.080 |
of emergent behavior from independent parties 01:28:15.840 |
- Like I said, my own experience with the dismal science 01:28:19.900 |
as with physics led me to reject a lot of bad models. 01:28:22.520 |
And economics was always compromised by politics, 01:28:31.020 |
So it was concerned with the good and it became divorced 01:28:33.960 |
and became sort of in this quasi Newtonian way, 01:28:36.600 |
just about everything's just running by itself. 01:28:40.280 |
This monopoly is crushing your Netscape company, 01:28:52.320 |
So the amazing thing is you have Robinhood app, 01:28:56.480 |
which was again, supposedly for the demos, for the people, 01:29:00.760 |
and eliminated the fee through various kinds of straddles 01:29:09.240 |
that helped them eliminate the fee or eat the fee. 01:29:36.040 |
in the recent podcast, which I'm conscious of 01:29:45.120 |
And a lot of this was due to the money interests 01:29:50.880 |
And in Plato's five regimes, that's oligarchy. 01:29:56.160 |
And now we're seeing a fight against the oligarchs. 01:30:06.460 |
Hey, I can buy a fraction of a share in this thing, 01:30:12.240 |
So I mentioned Hegel seeing Napoleon on the horse. 01:30:16.920 |
Hegel also talked about the cunning of reason, 01:30:19.160 |
that you have this sort of God sees history in full, 01:30:23.040 |
and if you believe in God, or we don't know the future, 01:30:25.880 |
but there's always this sort of fly in the ointment, 01:30:37.000 |
I'm glad it's not street warfare or mechanized warfare, 01:30:51.760 |
so JavaScript used to be for the front end of the web. 01:30:56.760 |
It's now increasingly so being used for backend, 01:31:01.600 |
like running stuff that's like behind the scenes. 01:31:06.080 |
And it's also starting to be used quite a bit 01:31:12.240 |
So starting to actually use these heavy duty applications 01:31:16.040 |
that are using neural networks, machine learning, 01:31:24.120 |
that basically most of the world runs on JavaScript? 01:31:28.640 |
- This is a dystopia and a nightmare to some people. 01:31:34.920 |
I would joke and meme people with scenes like 01:31:41.920 |
And you realize in the future that you're living 01:31:46.720 |
in some simulation that it's all running on JavaScript, 01:31:56.880 |
Life and Death of JavaScript, I think it's called, 01:32:02.000 |
that actually have a thread of credibility to them. 01:32:09.200 |
In the old days when we were using computers, 01:32:10.600 |
we said we're gonna use the Unix monolithic monitor, 01:32:15.980 |
This is before you even had hardware rings of protection. 01:32:18.400 |
Those, some of the early '60s operating systems 01:32:30.440 |
It's the guest in the host, and you get to suspend it. 01:32:35.240 |
If it crashes, it doesn't take down the whole OS. 01:32:56.360 |
where you can do software fault isolation very cheaply 01:32:58.800 |
without entering the operating system kernel. 01:33:09.160 |
because the system call boundary's too expensive, 01:33:12.920 |
with these lighter-weight isolation enforcement mechanisms. 01:33:45.360 |
and JavaScript is a general-purpose language, 01:33:59.600 |
without using some extensions or some libraries 01:34:06.720 |
there are amazing languages in sort of the APL family 01:34:11.040 |
that are very useful for, I would say, linear algebra, 01:34:14.000 |
which gets to a lot of the kernels in machine learning. 01:34:24.600 |
and they're proprietary, but he's still innovating there. 01:34:33.400 |
'cause Python was heavily used for machine learning, 01:34:38.680 |
they didn't have this fast just-in-time compiler tradition. 01:34:53.040 |
So I think people should look at multiple languages 01:34:57.480 |
because there are different tools in the belt. 01:34:59.480 |
If you're trying to do supervision or rapid prototyping, 01:35:03.920 |
You wanna throw things together and see what works. 01:35:06.520 |
If you are trying to go down to the metal very fast, 01:35:10.720 |
but I was also the executive sponsor of Rust at Mozilla, 01:35:14.280 |
and Rust has now escaped from that sort of nest 01:35:17.880 |
where it was born to be adopted by a bunch of companies 01:35:27.660 |
So it looks like Rust has reached escape velocity. 01:35:40.160 |
And we thought, can we have a sort of safety property 01:35:43.800 |
through a type and effect system or an ownership system? 01:35:49.960 |
because it doesn't just give you memory safety. 01:35:53.460 |
a dual that falls out for protection against data races. 01:35:59.720 |
You delimit your unsafe code where you do have to be unsafe, 01:36:02.880 |
and you can prove certain facts about memory safety 01:36:08.800 |
And so I think people should learn these new languages. 01:36:23.400 |
Go is a huge success, really, on the server side, 01:36:27.080 |
mainly where you have a lot of networking to do. 01:36:30.120 |
And it's garbage collected, but it's also very pragmatic. 01:36:35.400 |
As an old C hacker, I can't get used to the fact 01:36:41.160 |
- I haven't used Rust, but this is one of the most respected 01:36:44.200 |
and loved languages currently, so it's interesting. 01:36:52.520 |
that you can fall in love with it all over again. 01:37:06.280 |
The longer you're around, the more likely you're Lindy 01:37:11.600 |
I'm often torn between recommending either Python 01:37:15.800 |
or JavaScript as the first language to play with, 01:37:20.880 |
because it's so easy to do JavaScript incorrectly. 01:37:24.840 |
It's much easier to do it correctly these days, 01:37:41.440 |
and it'll visually look like something and it'll do stuff. 01:37:51.560 |
to write a program that actually does something. 01:37:56.800 |
is JavaScript the right first step or is it Python? 01:37:59.640 |
And I've been going back and forth on those two. 01:38:05.280 |
which was a pedagogical language in the Netherlands. 01:38:31.700 |
I think the sloppiness that some people object to, 01:38:38.640 |
They said, "I can take a number and I can index into it 01:38:49.840 |
can be automatically boxed or wrapped by an object. 01:38:55.440 |
In Java, it's typed and you have to declare things 01:39:00.480 |
But there are cases in Java where you get auto-boxing 01:39:03.080 |
or auto-wrapping 'cause you've declared that you want it. 01:39:07.540 |
And so once I explained it, I'm like, "Oh, wow, I get it." 01:39:10.300 |
But it also means that you can commit a blunder that just-- 01:39:13.640 |
- You don't get punished for it, you don't detect. 01:39:18.680 |
I've been reading a lot about military history recently. 01:39:23.360 |
And one way to paint the picture of browsers, 01:39:26.760 |
internet browsers, is through the various wars 01:39:30.620 |
I don't know if that's a useful way to look at it, 01:39:32.300 |
but we've already talked a little bit about Netscape 01:39:38.400 |
Can you tell the story of the different wars, 01:39:41.260 |
if that's at all an interesting way to look at it, 01:39:49.120 |
which was convicted for it, did abuse its monopoly, 01:39:51.520 |
but they had a pretty good team by the time they did IE4. 01:39:55.120 |
And Netscape, unfortunately, I was like second floor 01:39:57.920 |
and I was friends with all the first floor people, 01:39:59.520 |
the front end guys who did the JavaScript event hookup 01:40:02.720 |
and things like that, that team was fairly burnt out. 01:40:10.880 |
the upper management wanted to buy a bunch of companies 01:40:33.480 |
But for a while they were keeping it separate. 01:40:36.920 |
It really does work 'cause you bought it for its value, 01:40:39.000 |
it's complimentary and you're not messing with it. 01:40:41.080 |
With Netscape, when they bought a bunch of companies, 01:40:46.920 |
They had newcomers who wanted their turn to do the browser 01:40:51.400 |
and they hadn't really done browsers or understood them. 01:40:54.400 |
And so Netscape 4 was originally supposed to be 3 01:41:03.640 |
was supported in the mail, built-in mail program. 01:41:07.960 |
And Netscape 4 was late and it was only on Windows at first 01:41:11.840 |
and Microsoft had really started doing better. 01:41:14.880 |
Like they do, they copy and the first version is trash 01:41:17.280 |
and the second one, you're starting to feel threatened. 01:41:19.040 |
The third one, you can tell what's gonna happen 01:41:22.440 |
- And plus there's the benefit, like you said, 01:41:28.760 |
and Microsoft really putting some quality people on it. 01:41:42.360 |
and became what Microsoft calls a program manager, 01:41:47.000 |
It's, you can be a programmer or an engineer track 01:41:50.520 |
but you switch to it and you sort of lead a lot of design 01:41:54.680 |
And so Scott Isaac put in a lot of those funky DHTML APIs 01:42:04.200 |
sort of verbose Java like DOM W3C standardized. 01:42:12.480 |
got invited by Scott Isaacs to Gordon Beers in San Jose. 01:42:16.680 |
They were doing a preview of IE 4, this must have been 1997. 01:42:25.560 |
We've got something like your Netscape layers. 01:42:36.840 |
Microsoft was starting to fire on all cylinders. 01:42:44.320 |
for having the resource to hire talented people 01:42:48.880 |
What really was bad was that phase of the browser wars 01:42:51.920 |
ended with monopoly and perhaps due to the antitrust case, 01:43:05.440 |
They just abandoned it, IE 5, 5.5, IE 6 later, 01:43:16.680 |
even though it was getting updated, it's just weird. 01:43:19.040 |
- Browsers like Mozilla and then Firefox were adding tabs. 01:43:22.120 |
Opera had a version of tabs and they didn't add tabs 01:43:31.520 |
and it goes in JavaScript to open a little window 01:43:40.800 |
and it opens a new window, that's a spam technique 01:43:48.360 |
but I remember I fully switched to Firefox the moment. 01:43:52.040 |
I remember the moments of first using tabs in Firefox 01:44:08.520 |
Because also as a aspiring web designer, I use table. 01:44:21.040 |
So there's a change in the way websites looked 01:44:25.240 |
- CSS finally, which Microsoft embraced with IE4 01:44:33.440 |
for doing table layout that relieved you of the need 01:44:36.600 |
to use what are called spacer GIFs, spacer GIFs, right? 01:44:40.280 |
Images you would throw into space out tables. 01:44:42.880 |
The typographic power of the web has gotten better, 01:44:54.920 |
If you were using Firefox, that would have been 2004 01:44:57.280 |
'cause it was called Firebird until earlier that year. 01:45:07.080 |
So it started out as Mozilla/browser in 2002, 01:45:12.080 |
There's a BIOS that has an embedded version of IE 01:45:14.680 |
and they said, "We're called Phoenix Technologies. 01:45:17.600 |
And so we said, "Okay, we'll call it Firebird." 01:45:24.080 |
like in the true Mad Max style, just screaming at us, 01:46:05.460 |
for a lot of people because Netscape otherwise 01:46:08.440 |
because Microsoft was just killing its market. 01:46:14.760 |
IE 4 was pretty good and Netscape 4 wasn't that good. 01:46:27.120 |
the gunner won't shoot it 'cause there's no life forms 01:46:31.400 |
And so we did Mozilla in 1998 and it looked like 01:46:35.400 |
it was going to initially just give the world 01:46:41.960 |
on this sort of hairball that had been hacked up 01:47:00.400 |
And yet people, one of whom I happened to meet previously 01:47:05.000 |
at SGI when I went on a sales support engineering trip, 01:47:28.880 |
And that was perhaps the best hack that was done 01:47:31.000 |
in the first few months after we open sourced the browser. 01:47:38.280 |
So the one acquisition that kind of messed up Netscape 4 01:47:44.280 |
and groupware program, not Jamie Zawinski's mail program 01:47:51.800 |
So we didn't have a mail program, it was just a browser. 01:47:56.720 |
Turns out they didn't interfere with us for a long time. 01:47:59.280 |
But Netscape wasn't the best steward of Mozilla. 01:48:10.920 |
And initially the first engineering manager, Tom Paquin 01:48:15.920 |
of Netscape was the Mozilla founding manager. 01:48:28.800 |
But then someone who'd written the licenses, Mitchell Baker, 01:48:34.120 |
She was involved in the open source license decision-making 01:48:38.200 |
and the actual writing and construction of those licenses. 01:48:47.400 |
because of some encumbered code, needed some special rights, 01:48:54.200 |
And she said, "I'll be the manager if you want." 01:49:04.360 |
because Mozilla didn't restart the browser market. 01:49:09.280 |
Netscape was still shipping variants of Netscape 4, 01:49:20.920 |
It wasn't a technical goal so much as, again, a social goal. 01:49:24.160 |
People wanted a more standard spaced browser. 01:49:26.400 |
They wanted less of a hairball that had been hacked on 01:49:29.400 |
by ex-grad students starting four years prior. 01:49:32.040 |
So we said, "We're gonna make a modular code base. 01:49:35.120 |
We're gonna use a variant or an open source version 01:49:40.000 |
has reference counting and standardized V tables, 01:49:54.800 |
with a markup language for the user interface. 01:50:02.880 |
And that was called Zool, XML user interface language. 01:50:07.720 |
delivered that, Dave Hyatt, who was instrumental in Zool, 01:50:17.800 |
He was like a high school aged intern at Netscape. 01:50:23.920 |
in the Mozilla world and Netscape was still caught up 01:50:26.960 |
in this management mess from these acquisitions. 01:50:30.440 |
And every year they were wondering if AOL was gonna come 01:50:40.720 |
which was the dial-up client that all the increasingly aging 01:50:53.280 |
And so in 2001, Mitchell called me up and said, 01:51:02.320 |
And there was a layoff, which maybe accidentally 01:51:06.800 |
But the funny thing was we had an open source project. 01:51:08.640 |
We had a lot of the engineers on staff on our side 01:51:11.200 |
and we had people we'd hired through the Mozilla community 01:51:18.640 |
they knew the code, and they actually were better 01:51:26.920 |
who thought they'd gotten rid of Mitchell on the layoff, 01:51:29.920 |
on the next week's community call around Mozilla 01:51:40.400 |
if you get a project that has enough loyalty, 01:51:45.520 |
We had people at Red Hat and a few other places, 01:51:47.920 |
but the majority of the hackers were employed by Netscape. 01:51:50.560 |
But a lot of them at that point had come from the community 01:51:53.440 |
and others got the community and wanted to work with it. 01:51:55.920 |
And it was really the weakest engineers at Netscape 01:51:57.840 |
who didn't like Mozilla and didn't like the crucible 01:52:04.160 |
- So if the project is good enough, it will rise, 01:52:13.480 |
when we declared Mozilla 1.0, I engineered a roadmap 01:52:17.320 |
that successively through similar sort of six week, 01:52:23.400 |
Chrome does and Firefox braved us three weeks. 01:52:26.520 |
We got to a point where we said, you know what? 01:52:30.480 |
This is like the 1.0 that you want to release 01:52:33.160 |
because if you hold it back any longer to polish it, 01:52:36.920 |
It's like Pro Engineer, the mechanical CAD tool, 01:52:39.320 |
embedded the code, they embedded the layout engine. 01:52:43.600 |
And Mozilla 1.0 was like a Netscape communication suite. 01:52:58.760 |
And the people who were taking that Mozilla open source 01:53:06.480 |
And they were also under ALS thumb a little bit 01:53:08.400 |
in that they said, well, we should probably put 01:53:10.440 |
the ALS instant messenger chicklet on the toolbar. 01:53:14.920 |
the other messaging system that ALS had acquired. 01:53:19.520 |
And pretty soon Netscape looked like a bit of a NASCAR 01:53:27.080 |
And yet they had contrived to fire or lay off the leader. 01:53:32.080 |
And we'd carried on with an open source structure 01:53:38.440 |
where Mozilla was still, you know, Mitchell was calling 01:53:52.640 |
Because it'll be simpler, it'll do one job well. 01:53:55.480 |
And even then we can strip it down by having extensions. 01:53:58.720 |
So Dave Hyatt and Blake Ross, the high school aged intern, 01:54:03.640 |
did the first version, which was called Mozilla/browser. 01:54:07.200 |
It was a small group of us, Ian Hicks and Asa Dotsler, 01:54:16.480 |
He'd done all these things like amazing cross-platform menus 01:54:24.680 |
He'd implemented it natively on Mac OS at the time 01:54:36.280 |
It's like the V8 team did for those missing years 01:54:38.400 |
when the rest of the Chrome team's like, where's V8? 01:54:41.000 |
In fact, Dave's wife, Rebecca, told me a story 01:54:45.800 |
they were also University of Illinois grad students. 01:54:49.400 |
There was an assignment, it was a programming assignment, 01:54:51.240 |
it was supposed to be due at the end of the semester. 01:54:53.240 |
And Dave's friend was this, I'm gonna go think 01:54:56.800 |
and I'm gonna design and I'm gonna make this platonic, 01:55:01.240 |
And then I'm gonna write it at the end when it's due. 01:55:03.560 |
And Hyatt just went in there and started hacking. 01:55:05.080 |
And he wrote one version, he wrote a second version, 01:55:06.640 |
a third version, end of the semester comes around, 01:55:14.800 |
but Dave's version was a fifth iteration, it was great. 01:55:18.080 |
And so he'd done that with everything you need 01:55:24.320 |
what we called Phoenix and had to rename two more times. 01:55:27.120 |
And Blake went to Stanford, he became a Stanford student 01:55:36.560 |
He was one of the founding Safari team members. 01:55:40.440 |
- But he was still blogging about tabbed browsing. 01:55:49.760 |
Don Melton, who had been the engineering manager 01:55:53.360 |
for Safari from the beginning, had been in that scape also. 01:55:58.920 |
And yet Hyatt was still kind of writing blog posts 01:56:03.200 |
And at some point Apple said, "Don't blog about that. 01:56:26.880 |
was kind of an albatross, that they bought it 01:56:31.040 |
And even then the AOL politics were also heinous, 01:56:37.760 |
And so us principal engineers got trotted out 01:56:39.520 |
to do dog and pony shows in Dulles, Virginia. 01:56:42.720 |
And the AOL opera management was very East Coast in flavor. 01:56:46.360 |
And they were at that time merging with Time Warner, 01:57:04.400 |
or they were like what's Stillman's Metropolitan film, 01:57:13.240 |
They were haute bourgeoisie, they were funny, 01:57:17.400 |
and they were kind of useless and kind of preppy. 01:57:20.080 |
And then the next year we went back and I said, 01:57:37.280 |
And there wasn't synergy with AOL buying Netscape, 01:57:39.280 |
and there wasn't synergy with Time Warner and AOL. 01:57:51.080 |
- AOL was the right time to do a dial-up service 01:57:56.640 |
leaflet-bombing compact disks on the country. 01:58:00.680 |
And they beat out CompuServe and the other ones, Prodigy, 01:58:06.920 |
And so you had almost like this isolated continent, 01:58:10.920 |
like some of the evolutionary biologists I follow 01:58:14.160 |
make fun of the funny large marsupial mammals of Australia, 01:58:23.920 |
- And you saw it over time because they kept aging 01:58:33.440 |
'cause they still have relatively high socioeconomic status 01:58:36.320 |
and they have grandchildren, but it's going away. 01:58:39.520 |
- Towards the end of the aughts, that decade, 01:58:55.120 |
that represented a lot of the cutting edge technologies 01:59:00.180 |
Tim O'Reilly and John Battelle did the first Web 2 01:59:08.580 |
Craigslist was huge, it was killing classified revenue 01:59:11.700 |
for newspapers, but there was just this ferment. 01:59:16.700 |
- Gmail was already done and it was an impressive web mail. 01:59:22.940 |
And Google Maps, people started seeing what could be done. 01:59:26.040 |
They thought, how can you drag the map around 01:59:34.520 |
- Yeah, I think it actually started quite early. 01:59:36.240 |
It might have been 2002 or three, but by the time 01:59:40.120 |
to get the search deal, which was the main revenue source 01:59:46.600 |
Sergey Brin's, one of his trusted engineer guys, 01:59:49.760 |
Fritz Schneider, made contact with me at Mozilla 01:59:51.960 |
and we started talking and we realized search 02:00:05.620 |
is the default search engine, which is kind of incredible 02:00:08.620 |
to think about, that that is a revenue source. 02:00:12.620 |
- Yeah, it leads to this capture or kill effect 02:00:14.620 |
where you have the search engine own its own browser 02:00:17.060 |
and other browsers may struggle to get distribution, 02:00:26.820 |
that Google's working on its own browser at some point. 02:00:39.560 |
to reconvene, they did do IE7, and I remember 02:00:43.760 |
being on a plane back from the standards meeting, 02:00:46.240 |
JavaScript standards meeting from Seattle, from Redmond, 02:00:49.000 |
and there was some Microsoft guy in front of me, 02:00:52.120 |
turns out my wife knew him from her past life 02:00:54.920 |
before we married, and he was just this bearded big guy 02:00:58.200 |
and he was like, we should have just killed Firefox 02:01:00.920 |
in the cradle, all we needed to do was add popup blocking 02:01:03.520 |
and tabs and we could have made Internet Explorer 02:01:05.560 |
kill Firefox, and it's like, shoulda, coulda, woulda, pal, 02:01:10.320 |
But they didn't, they were slow and IE7 wasn't that great, 02:01:13.520 |
and what really got them started, I think, was Chrome. 02:01:18.440 |
And I talked to Larry Page in 2005, I think I said, 02:01:22.800 |
we're talking about the Firefox relationship, 02:01:26.120 |
This was Apple's version of the old KHTML engine 02:01:30.480 |
from Linux, the KDE side of Linux, that was used 02:01:36.880 |
that Apple had forked, and in 2005 was when Apple's 02:01:41.240 |
principals, including Dave Hyatt, Maciej Stachowiak, 02:01:43.400 |
some of my friends who are still there, said, 02:01:45.200 |
we must stop patch bombing this poor KHTML project, 02:01:48.560 |
we should make a proper Mozilla-like organization, 02:01:50.920 |
WebKit.org, now it wasn't a separate non-profit 02:01:53.340 |
or anything, it was still Apple, it was Apple-controlled, 02:01:55.240 |
but they made their fork first class and they made it 02:01:58.960 |
be something that they all worked in and lived in, 02:02:05.680 |
I said, yeah, it's nice, I have friends who work on it, 02:02:08.000 |
you might use that if you do your own browser, 02:02:10.480 |
Don't worry about Firefox, you should do your own browser, 02:02:12.920 |
you can have your own opinion of how it should work, 02:02:15.280 |
and sure enough, they did, so by 2006, we knew 02:02:18.400 |
they'd been working on it, some of my friends 02:02:20.160 |
who'd been at Netscape did the original demo, 02:02:30.520 |
- It had tabs, 'cause all browsers had tabs at this point, 02:02:32.800 |
and it had this software fault isolation I mentioned, 02:02:37.480 |
it was through process isolation, so in theory, 02:02:41.120 |
each tab has its own operating system process, 02:02:48.440 |
but Flash was still big then, all the restaurant sites, 02:02:50.840 |
remember, and Flash crashed a lot, so the demo 02:02:56.520 |
as a lot of people did, inside Google was the sad tab, 02:03:06.720 |
and then suddenly, Flash crashes, and everyone expected 02:03:13.120 |
and you could reload it, and there it is again, 02:03:14.800 |
so this was an improvement, it was a real move for security, 02:03:18.760 |
it was based on a company they acquired called Green Border, 02:03:22.720 |
they had some really big brains, like Olfar Erlingson, 02:03:25.080 |
I think was involved, and they had done some exotic 02:03:28.160 |
security stuff, but they ended up simplifying it 02:03:36.760 |
so we were still struggling with security bugs. 02:03:39.700 |
So we knew Chrome was coming, but it took two more years 02:03:43.920 |
to come out, and we were still getting the Google search 02:03:47.960 |
revenue, and we were still making Google the default engine, 02:03:56.860 |
and as it started falling, it was because of Chrome. 02:03:59.840 |
Chrome came out in 2008, and it was a comic book 02:04:02.880 |
that leaked accidentally, that showed some of the people 02:04:04.800 |
who worked on it, Lars Bach was in there, and so on. 02:04:07.240 |
It was kind of soft launch, because they didn't market 02:04:12.560 |
but Google had reason to worry about distribution, 02:04:18.760 |
Bing, since 2007, in fact, when they came out with Bing, 02:04:22.000 |
Google was worried that Microsoft would just brute force 02:04:25.200 |
switch the default browser in everyone's Internet Explorer, 02:04:28.840 |
or even Firefox on Windows, to Bing from Google, 02:04:40.360 |
Bing was ready, either, but just in case it happened, 02:04:44.000 |
Sundar Pichai, who rose very well based on this work, 02:04:47.760 |
was sort of in charge of getting distribution deals, 02:04:50.600 |
and he got Google Toolbar, and Google Desktop Search 02:04:54.920 |
distribution, and if you remember those pieces of software, 02:04:56.800 |
those were like desktop extensions, toolbars, 02:05:00.680 |
or operating system extensions for doing desktop search 02:05:07.800 |
and there were some features that we still missed 02:05:18.400 |
if Microsoft does the worst and tries to force Bing, 02:05:21.800 |
we can reach in and reset it with that point of presence. 02:05:27.240 |
and it was good for Google, but it never came to pass 02:05:30.720 |
Microsoft was still slow, and by the time they saw 02:05:34.240 |
Chrome come out, then they did what would have been IE9, 02:05:51.320 |
fundamental coupling of search engine and browser 02:05:55.760 |
and obviously Firefox doesn't have a search engine 02:05:59.960 |
that's like, I mean, you're partnering with somebody 02:06:03.680 |
with a search engine, with Yahoo or with Google or so on. 02:06:25.920 |
And those researchers went to Google and Microsoft, 02:06:29.760 |
and there was no way to put Yahoo search back together. 02:06:32.480 |
So when Firefox tried switching all their users 02:06:36.000 |
who'd stuck with a default from Google to Yahoo, 02:06:38.840 |
like mid-December 2014, a bunch of users said, 02:06:45.280 |
but over time they did, and so over the next year, 02:06:54.160 |
I don't have inside knowledge, but this is leaked out, 02:07:01.480 |
So Mozilla was getting a bunch of money for traffic 02:07:03.480 |
that wasn't staying because users were resetting 02:07:05.880 |
their default, and this shows how defaults are important, 02:07:12.560 |
And a lot of the commercial value in popular apps 02:07:20.120 |
- But oftentimes there's something, just like you said, 02:07:29.040 |
And that's where, I mean, we'll talk about Brave browser. 02:07:36.200 |
where there's Chrome, Firefox, Edge, I guess it's called, 02:07:41.200 |
and Brave, and these all seem like really exciting, 02:07:50.560 |
They're all kind of copying off of each other, 02:07:56.240 |
So privacy is this sort of global wave that's rising. 02:08:03.360 |
because it's a large, somewhat chaotic structure. 02:08:16.000 |
but often people use VPNs for region unlocking video 02:08:36.600 |
more of a privacy-branded browser from the very beginning. 02:08:54.000 |
Turns out Safari does keep them around between shutdown, 02:09:01.800 |
No leftover traces that you went to some site 02:09:06.160 |
or bought a gift for somebody you wanted to keep secret. 02:09:16.920 |
because you're using the same internet and ISP 02:09:33.400 |
And it's really only the main name of the site, 02:09:40.040 |
Every site can store some information in a cookie. 02:09:50.880 |
And in the response from the server, the cookie's updated. 02:09:54.080 |
So it's this little bit of storage in the browser 02:10:08.840 |
which is how it would be if you didn't have cookies. 02:10:18.760 |
you go from your login confirmed page to your account view. 02:10:22.480 |
If you didn't have a cookie, you'd be logging in again. 02:10:30.880 |
and he did it for really holding that kind of credential. 02:10:38.560 |
and the image gets fetched possibly from a different server, 02:10:54.240 |
and they still use the word pixel in ad tech, 02:10:56.520 |
and that pixel can be served from the same server 02:10:59.360 |
embedded differently with different URL spellings 02:11:07.000 |
I haven't got a cookie for you, it's empty initially. 02:11:22.240 |
and the number, user 1234 indexes in the database 02:11:29.360 |
and it was too late to undo by the time I got to Netscape. 02:11:32.680 |
I think Lou wanted to do Twinkies, he called them, 02:11:38.320 |
'cause initially cookies had a short size limit. 02:11:40.520 |
I think he wanted to solve the third-party problem, 02:11:42.280 |
but Tom Paquin, the engineering manager said, 02:11:51.480 |
That's how JavaScript got frozen like a flying amber 02:11:55.400 |
in some ways with that sloppy equality operator 02:11:58.960 |
And the cookie got stuck with this tracking hazard, 02:12:01.840 |
and then, because JavaScripts can be like images, 02:12:08.640 |
You can get a request with the last cookie value, 02:12:12.920 |
and that's why you don't even need images to track. 02:12:20.000 |
and it depended on these accidents of the '90s, 02:12:25.320 |
- Well, it created some of the richest companies 02:12:33.160 |
Yeah, I mean, so that's the fundamental problem 02:12:39.520 |
They're looking at what social media has created, 02:12:44.200 |
and like a world is looking at itself in the mirror, 02:12:47.040 |
and seeing that privacy is actually something, 02:12:51.000 |
it's supposed to be like a nice thing to have. 02:12:53.520 |
It's something that is, actually should be fundamental 02:13:03.520 |
And I suppose others as well are playing with this idea, 02:13:13.400 |
and what's broken, and what is it Brave trying to fix? 02:13:21.840 |
or the JavaScripts that can do it invisibly now, 02:13:37.440 |
These were not intended, and they're now unsafe. 02:13:39.760 |
They're tracking you, there could be data breaches, 02:13:51.800 |
I'm Dr. Frankenstein, I've got to deal with a monster here. 02:14:02.160 |
So how do you tell the first from the third party? 02:14:07.920 |
because a lot of publishers use benign scripts 02:14:11.560 |
from unrelated domains, or apparently unrelated domains. 02:14:16.320 |
human and machine learning practice around blocking. 02:14:22.320 |
and built a research team to help drive it and automate it. 02:14:25.720 |
We realized that protecting people needed machine learning, 02:14:30.400 |
I talked to my friends at Apple about this too, 02:14:36.640 |
which uses local machine learning in the browser. 02:14:42.920 |
they were taking their third-party cookie blocker 02:14:59.160 |
So I'm gonna pick an ad company that got sold to AT&T, 02:15:17.560 |
In Safari, as long as the user never went to AppNexus, 02:15:22.360 |
And that was a real move for privacy early on, 02:15:27.660 |
But it had this loophole that if you do go to AppNexus, 02:15:30.620 |
then why, it's okay to be a third-party cookie. 02:15:47.160 |
And by doing that, they set a first-party cookie, 02:16:00.680 |
And so when I say machine and human learning, 02:16:08.400 |
Anytime you have a little bit of storage in the browser 02:16:15.520 |
each one has a bit of storage that's 32 bits. 02:16:38.440 |
from the get-go, not add it as an afterthought 02:17:01.140 |
But with Apple and with Brave leading the way, 02:17:03.620 |
we block third-party cookies almost without exception. 02:17:07.900 |
and that gives us a very strong privacy benefit, 02:17:11.500 |
but it also means some sites just don't work right. 02:17:13.700 |
Embedded YouTube videos might not work right. 02:17:15.460 |
So we're adapting in a similar way to Apple's done with ITP 02:17:32.320 |
and its third parties into its own sort of cookie jar. 02:17:46.400 |
- But maybe Google aside, or including Google, 02:17:50.560 |
there's millions of dollars, if not billions of dollars, 02:17:57.860 |
- That's right, and it's been an interesting change 02:18:08.660 |
had gotten to a certain level of use around the world, 02:18:14.340 |
had some amount of ad-blocking built in and on by default. 02:18:30.140 |
"to Conda NAS properties, are using ad-blockers. 02:18:39.460 |
And 3/7ths, well, that's easier said than done, 02:18:44.300 |
and PageFare and others, SourcePoint, many others, 02:18:55.420 |
Intelligent Tracking Prevention, Safari in 2017, 02:18:59.340 |
Brave from 2016 on with very strong cookie-blocking 02:19:03.140 |
and other protections, and this is not going away. 02:19:31.140 |
And by 2017 or '18, it's like something's happening. 02:19:37.020 |
on the Google's plantation through AMP, A-M-P, 02:19:41.580 |
or we're getting killed by the Google ad system we use 02:19:46.580 |
or it's permitting, or some other vendors we use 02:19:52.620 |
by the marketer running an ad that a bot clicks on, 02:19:58.220 |
that's supposed to get the ad doesn't get it. 02:20:02.380 |
- And that fraud is mediated through Google's ad exchange, 02:20:19.340 |
and they smuggle them in ads onto real publisher pages. 02:20:27.140 |
but why is the ad exchange facilitating fraud 02:20:33.980 |
this is the really interesting thing about Brave, 02:20:55.300 |
- Okay, I'll tell the story first by saying how I came to it. 02:21:00.820 |
we were dependent on this Google search deal, 02:21:10.740 |
Firefox, like old yeller, you saved me from the rabid beast. 02:21:24.140 |
This is something that I couldn't solve there, 02:21:29.460 |
the sort of passive servant of these big tech companies? 02:21:32.300 |
Why is it a blind runtime for ad tech JavaScripts, 02:21:39.220 |
And if it blocks some, why can't it reconnect users, 02:21:43.940 |
readers, fans, with publishers, creators, websites? 02:21:47.480 |
Why can't it help people make direct payments 02:21:53.980 |
for private ads that are placed in the browser? 02:21:58.820 |
that the server's painting the ad into some flash, 02:22:08.600 |
All the ads you see on the web are placed in your browser 02:22:11.340 |
by it calling out to various ad tech partners, 02:22:22.420 |
from the brands and their agencies to the publishers. 02:22:26.300 |
And if you want to reconnect it directly with the user, 02:22:39.980 |
because they want you to cross subsidize all the content 02:22:42.060 |
and buy more than you read and all that stuff. 02:22:43.660 |
And how many, you know, people are doing great 02:22:46.500 |
who are big names like New York Times and The Washington Post 02:22:48.740 |
but how many subscriptions are you as a user gonna pay for? 02:22:54.420 |
are trying to do a portable subscription system. 02:23:05.480 |
And I had friends a few years ago, I think they fixed this, 02:23:06.740 |
who would pay for the paper and then they'd go online 02:23:11.900 |
and there was no break, there was no connection between them. 02:23:21.340 |
So for a long time people talked about micropayments, 02:23:23.500 |
there was Blendle and the other ones which came to the US 02:23:32.940 |
it can provide you an option that uses cryptocurrency 02:23:42.780 |
And that meant the user had to be of means to contribute 02:23:47.520 |
But it could be done on the Bitcoin blockchain 02:23:52.260 |
when we had this prototype running in 2016 into 2017 02:23:55.780 |
where Bitcoin was very congested and very slow to confirm 02:24:00.180 |
And a lot of users who were not Bitcoin maximalists 02:24:07.660 |
and they had the income to buy but it was hard. 02:24:16.460 |
And they're like, I don't wanna own that much Bitcoin. 02:24:23.840 |
that pay the user a rev share couldn't be realized 02:24:33.100 |
especially with the blockchain we switched to Ethereum, 02:24:39.020 |
so what you can do with the script is more limited. 02:24:46.180 |
What we wanted to do was sort of a three-sided ecosystem. 02:24:49.320 |
We wanted users, creators or publishers and advertisers. 02:24:53.780 |
And we wanted the advertisers to put money in 02:24:55.780 |
just like they do today but without going through 02:25:04.460 |
The Guardian in the UK once did an experiment for a month. 02:25:08.820 |
They put in a pound and they were paid 30 pence. 02:25:11.180 |
70% was coming out to the intermediary vendors 02:25:17.020 |
- And that's like the opposite of what the app store does. 02:25:19.260 |
The app store takes 30% and gives the publisher 70%. 02:25:29.900 |
So these splits have become really unbalanced. 02:25:37.500 |
And they're doing something worse which has been noticed. 02:25:44.140 |
but also the ad fraud side which fakes the publishers 02:25:56.300 |
Jason Kalkanis told me this about his experience 02:26:07.400 |
he saw his competitors stealing all his traffic. 02:26:11.540 |
that just have much cheaper rates steal all that traffic. 02:26:15.500 |
And that facilitates fraud, it facilitates fake news, 02:26:26.240 |
And because we invented the basic attention token 02:26:31.000 |
And we can give users a share of the revenue. 02:26:35.500 |
Now unfortunately for us and for all of blockchain, 02:26:41.300 |
There's the Treasury Department's FinCEN agency, 02:26:46.300 |
there's the Office of Foreign Asset Control's OFAC, 02:26:50.780 |
there's the other regulators in the federal government 02:26:55.240 |
that take a very dark look at things like money laundering 02:26:58.260 |
and sending money to someone named Osama Bin Laden. 02:27:03.520 |
And even now they're threatening for pure Bitcoin 02:27:07.800 |
If you're a Coinbase, you're gonna have to know 02:27:11.120 |
- Like the actual identities of people involved. 02:27:13.960 |
- Now with Coinbase members, you sign up and they know you 02:27:19.460 |
But if somebody's using their own self-custodial wallet 02:27:29.340 |
and they're not named and they want to send to that address, 02:27:32.480 |
our friends in the federal government are talking about 02:27:35.080 |
requiring at some threshold knowing who that is. 02:27:44.820 |
I think the beauty of being able to send peer to peer 02:27:48.500 |
without any huge wire charge and two day delay 02:27:56.420 |
and we realize that anything like a revenue split, 02:27:59.600 |
we can't facilitate without being licensed in a certain way 02:28:03.900 |
So our default mode doesn't know who the user is. 02:28:16.700 |
But as things improve, and who knows how it'll play out, 02:28:20.460 |
there should be a day when this full vision can be done 02:28:28.000 |
of today's blockchains, which are not that fast 02:28:36.260 |
So one of the ideas of the basic attention token 02:28:45.940 |
And the browser is this trusted endpoint software. 02:28:51.100 |
The bigger the screen, the more you're in the browser 02:28:56.120 |
I use Slack on Mac OS and it's like a browser. 02:29:00.160 |
It's based on an electron framework we used to use. 02:29:04.720 |
Some of the people at Brave use Slack in Brave as a-- 02:29:07.800 |
- In the browser, yeah. - In the browser, yeah. 02:29:10.340 |
- And I noticed on the iPad, I use apps less. 02:29:13.160 |
The smaller the screen, the browser got handicapped 02:29:17.960 |
And it also can be slower or not have the right affordances 02:29:26.780 |
But in principle, with the right permissioning, 02:29:28.740 |
you can make the web browser just as good as any app. 02:29:35.120 |
So we want to have the economics that got captured 02:29:45.520 |
where you keep your data defended in your browser 02:29:55.020 |
All browsers are sort of the mother of all data feeds. 02:29:57.780 |
Your history, all your searches at all engines. 02:30:05.260 |
Machine learning in the browser that you can opt into 02:30:19.100 |
they have Search, which is still their big revenue lane. 02:30:26.700 |
this is not TensorFlow, this is like SVMs now, 02:30:47.060 |
And then pick the best ad from a fixed catalog per day. 02:30:50.820 |
And the catalog is fixed across a large population per day. 02:30:55.100 |
'cause new offers come in and old ones expire, 02:30:59.620 |
And that catalog, and there can be many such catalogs, 02:31:12.020 |
Instead, each browser is a little machine learning system 02:31:23.800 |
We're not trying to protect them from seeing your IP address. 02:31:41.820 |
in order to choose from the catalog of different ads. 02:31:44.180 |
Couldn't this possibly be like a multi-billion dollar, 02:31:54.620 |
there seems to be some really profound ideas here 02:32:05.340 |
the ideas, the fundamental philosophical ideas 02:32:07.580 |
underlying Brave went out and runs 95% of the internet, 02:32:16.740 |
what are the major things that changes about the internet? 02:32:21.620 |
like YouTube creators and all that kind of stuff. 02:32:26.260 |
I'm gonna demand a recount 'cause I won't believe it. 02:32:30.060 |
I think we're trying to put things into web standards 02:32:38.940 |
and our ability to give the best deal to users. 02:32:41.300 |
So 70% of the gross ad revenue we give to the user, 02:32:45.140 |
and if they go through that KYC process I mentioned, 02:32:51.220 |
They can add basic attention tokens to give back. 02:32:54.660 |
Some of them turn off the ads 'cause they just don't like ads 02:33:05.300 |
sort of keeping score on how much time he spent 02:33:21.140 |
And if it does, I hope it's across multiple browsers. 02:33:27.540 |
the quality of the ad blocking and tracking protection. 02:33:38.180 |
fewer fee takers in the middle, really just the browser. 02:33:44.540 |
And if we get bigger, maybe we can take even less. 02:33:50.660 |
a lot of them are the indies that are getting some size, 02:34:14.500 |
And we did it in a way that was through your browser 02:34:20.260 |
Do you think it could be standardized across browsers? 02:34:31.100 |
And the loyal users might be tricked into leaving you 02:34:34.020 |
or they might, because of that distribution power, 02:34:39.980 |
I think antitrust is back on the case finally in the US 02:34:42.340 |
and certainly in Europe, DG Comp is doing its thing. 02:34:45.460 |
So I'm hopeful that we'll have a period of innovation. 02:34:48.860 |
People were talking, like Elizabeth Warren was talking 02:34:50.700 |
about breaking up the tech companies very clearly. 02:34:53.740 |
Now she didn't win and I suspect that won't happen. 02:34:56.500 |
But I also suspect that Google might be smart enough 02:35:03.420 |
They should maybe get rid of DoubleClick or something, 02:35:07.820 |
- So Brave might inspire Google to completely change 02:35:11.300 |
- They're already doing something you may have read about 02:35:29.260 |
which has weakness over time, if you know how that works, 02:35:31.420 |
it's kind of injecting noise to hide you in a crowd. 02:35:34.260 |
But over time, an adversary can pull you out of the crowd. 02:35:37.660 |
This doesn't look like it's gonna become a standard. 02:35:39.380 |
Like Apple, Brave, Mozilla, we're not gonna just say, 02:35:48.580 |
It's gonna be more like pieces of what we do in Brave, 02:36:02.220 |
Even Google's in favor of so-called trust tokens, 02:36:07.460 |
But they're not using them for ad confirmations 02:36:09.300 |
'cause they don't wanna blow up their own business. 02:36:11.460 |
And they need to let some of the publishers they serve 02:36:18.620 |
And this is something I realized doing Brave. 02:36:19.860 |
I thought, what's Google's innovators dilemma, 02:36:22.900 |
apart from just being mature and having trouble innovating? 02:36:26.300 |
It's that they have come to depend on this ad tech system 02:36:30.620 |
that has all these vendors that publishers rely on, 02:36:39.900 |
And if you give the users a better browser that's faster, 02:36:51.100 |
There's so much bad JavaScript involved in ad tech 02:36:54.580 |
you sort of chop off what's called the programmatic waterfall 02:36:59.100 |
- Yeah, that's one of the incredible things about Brave. 02:37:01.180 |
I guess you're saying you should attribute it 02:37:03.180 |
to the fact that the messy JavaScript, no offense. 02:37:16.420 |
One of the things that it was like impressive 02:37:18.420 |
is it showed that browsers can be really fast. 02:37:21.620 |
And Brave is even faster than that, which is incredible. 02:37:24.380 |
And it saves the network, which means data plan, 02:37:26.940 |
it saves battery because the radio consumes your battery 02:37:34.700 |
oh, that's just that bad site, they'll fix it. 02:37:40.300 |
I know Google engineers could make everything 02:37:45.740 |
They cannot take over all the publishers and do that. 02:37:48.420 |
They're trying with accelerated mobile profile, AMP. 02:37:58.140 |
we'll give you extra placement in the search carousel. 02:38:05.980 |
Now they look like a gig writer wrote a piece 02:38:07.980 |
that's got Google's framing and AMP URL on top of it. 02:38:17.060 |
and they don't wanna be plugged into the BorgCube. 02:38:18.980 |
They wanna build up their own brand and have loyal readers. 02:38:31.940 |
Well, they're inherently like search, a global algorithm. 02:38:37.060 |
You're doing the transitive closure of a graph 02:38:52.000 |
you should be able to find those friends on other networks. 02:38:54.180 |
And so I've tweeted about this, I haven't built it yet. 02:38:56.660 |
What if the browser could keep track of those for you? 02:38:59.700 |
What if the browser could maybe combine Facebook and Twitter 02:39:06.500 |
- So that relationship is not owned by Facebook or Twitter. 02:39:12.020 |
- They'll have terms of use and they'll say they own it. 02:39:14.020 |
But if they zap you on one and you're still on the other, 02:39:17.900 |
and the browser could preserve a combined view. 02:39:23.780 |
- It's something I wanna maybe quickly ask you about. 02:39:26.580 |
On that front, there's been quite a lot of centralized, 02:39:31.340 |
we talked about Wall Street Bets and then Robinhood. 02:39:35.240 |
There's been centralized banning of different accounts 02:39:39.340 |
and removing like Parler, for example, from AWS 02:39:42.660 |
and this kind of overreach of centralized control. 02:39:49.380 |
like what are your thoughts about that in general? 02:39:56.740 |
to fight back against overreach of such control? 02:40:00.100 |
- So we're talking about oligarchy, I do think. 02:40:02.700 |
And that, if it controls a nation state, that's formidable. 02:40:05.320 |
It's the tax and the police power, the military power. 02:40:08.280 |
It means that you may have the Great Firewall of China. 02:40:21.680 |
about the cunning of reason, people find ways around things. 02:40:25.880 |
And this is not to endorse any particular bad faction. 02:40:29.920 |
when you try to wave the free speech flag too much, 02:40:34.640 |
and you get colonized by terrible, terrible people. 02:40:44.000 |
'cause it'll ruin your reputation and destroy your business. 02:40:57.080 |
where I don't lose track of people across networks. 02:40:59.480 |
And if they leave one or they get banned from one, 02:41:10.880 |
Mostly 'cause of search, and search is a central algorithm. 02:41:15.640 |
He said, with search, you're giving up a little privacy 02:41:42.380 |
And over time, SEO, which is an adversarial game, 02:41:59.680 |
as a set of data. - Yeah, monopoly capitalism 02:42:05.320 |
You get sort of the money interests take over 02:42:08.000 |
and kind of abuse their power and wear out their welcome. 02:42:32.120 |
It requires domain name registrar who will not strike you. 02:42:43.040 |
and I tried it out 'cause I tried all these things, 02:42:46.780 |
And I also felt they were being unfairly scored 02:42:49.420 |
for not moderating, because you can find tweets 02:42:54.640 |
Whereas Twitter, why isn't Twitter being taken down? 02:43:01.640 |
And it looked bad, sort of like the hedge funds 02:43:08.040 |
You're seeing a piece in Time Magazine this week 02:43:16.600 |
If you tried to say that as a Trump supporter in November 02:43:20.760 |
after the election, you'd get banned from Twitter. 02:43:44.760 |
I think some of the DOJ, and certainly the state cases, 02:43:59.560 |
The judge, Thomas Penfield Jackson, he overreached. 02:44:06.760 |
And Microsoft appealed, and the higher-level court said, 02:44:24.740 |
And that would've been a huge blow to Microsoft. 02:44:27.540 |
- But ultimately, I don't know if you're optimistic 02:44:31.100 |
or cynical about the possibility of breaking up big tech. 02:44:42.500 |
Users more and more owning the stuff is the only real way. 02:44:46.420 |
Unfortunately, it's like the Wall Street Bets subreddit 02:44:48.540 |
is the only real way to fight the centralized power. 02:44:58.480 |
It was only Mozilla that returned Firefox to the market 02:45:04.140 |
was finally settled and the penalties were put in place. 02:45:16.860 |
"We got punished in court, and we had to standardize things 02:45:24.740 |
It was late, it was bloated, longhorn, remember? 02:45:27.800 |
Now, what I was gonna say, but Google's smart enough, 02:45:31.720 |
They'll split something out to get off the hook, I think. 02:45:34.920 |
- This is a complicated subject, but I, myself, was so, 02:46:03.700 |
You've started, you ran amazing teams of engineers. 02:46:17.220 |
Is there something that could be fixed about California? 02:46:27.380 |
Or is Silicon Valley still, is it just a little lull, 02:46:32.380 |
during this particular year of the coronavirus, and so on? 02:46:35.900 |
- I think, you know, even Austin's getting overheated, 02:46:38.260 |
I hear, and I've had relatives and friends move to Texas 02:46:53.260 |
The mayor has been very business-friendly about it, 02:46:58.620 |
America is fundamentally a commercial republic, 02:47:00.660 |
so you would think this would be what's happening. 02:47:02.540 |
For a long time, California was the golden state. 02:47:04.420 |
I came here in late '76 when I was a teenager. 02:47:11.380 |
It's got the highest taxes, that's gotta matter, 02:47:16.460 |
It's got, likely fires every year because of the deadfall. 02:47:24.220 |
like they had been in the first part of the 20th century. 02:47:32.260 |
who, you know, famously was eating at the French Laundry, 02:47:36.740 |
and they were out in masks off, and it was great. 02:47:47.580 |
people either run, or they get rid of the leadership, 02:47:53.500 |
or in the old days, they get their guns, right? 02:47:57.580 |
- But ultimately, the thing that made Silicon Valley 02:48:00.700 |
a special place, it gave freedom to young kids, 02:48:12.900 |
so outside of financial stuff, outside of all of that-- 02:48:19.620 |
- Pencils narrow, and they didn't plan the roads, right? 02:48:23.640 |
- They got rid of public transportation in LA, 02:48:25.980 |
like the Who Framed Roger Rabbit cartoon show. 02:48:28.220 |
They used to have trolley cars in Portland, too. 02:48:30.820 |
The oil companies and the DOD conspired to build highways 02:48:34.260 |
and make cars dominant, and the rights of way are long gone. 02:48:42.740 |
- But is it still a place, do you think it's possible 02:48:45.700 |
that Silicon Valley is still a place where magic happens, 02:48:48.140 |
where the next Google's built, where the next, 02:48:58.780 |
through the angel investor networks and the wealth effect, 02:49:08.100 |
This wasn't wild free market, libertarian capitalism. 02:49:12.740 |
You had, out of the academia, you had Shockley, 02:49:17.020 |
and then the Trader SA, and Fairchild, and Intel. 02:49:20.100 |
But now, when's the last fab that was built in the Valley? 02:49:49.460 |
And that's polluted the hell out of parts of China, 02:49:51.980 |
but it's made things, you can make cheaper junk. 02:50:00.700 |
It's for the network effect, the brain trust, 02:50:16.060 |
they still filter mainly based on socioeconomic status, 02:50:22.140 |
I had a friend hired out of Harvard 20 years ago 02:50:31.620 |
"they're any doing that at Stanford anymore." 02:50:35.040 |
"Some of the students got Cs and Ds, and they were crying." 02:50:38.540 |
the precious deers can't take that at Stanford, 02:50:46.260 |
They, true of Russia too, a lot of math science training, 02:50:51.300 |
who are doing their coursework to get the As and Bs. 02:50:55.220 |
So I'm an American, I'm born on the 4th of July. 02:51:06.380 |
You can say it's the new Atlantis and mystify it. 02:51:09.060 |
You could talk about it in a more, I think, correct way, 02:51:23.960 |
and like I say, a lot of the offshoring has hurt. 02:51:29.980 |
At first it was funny, 'cause I have friends at Google 02:51:32.100 |
who used to grumble that not only did they have 02:51:34.420 |
to come into the office, if they joined a different team 02:51:36.780 |
that was centered at a different office, they had to move. 02:51:39.100 |
Or if the VA team was reconstituted in Munich, 02:51:43.080 |
which it was after Lars Bach just got tired of JavaScript, 02:51:46.700 |
that they hired in Munich, or they hired PhDs 02:51:50.780 |
With coronavirus, everyone's working from home, 02:51:57.820 |
hey, can I move to my hometown in the Midwest? 02:52:02.380 |
And they said, oh, can I keep getting my Silicon Valley pay? 02:52:06.620 |
We're gonna figure out what your cost of living there is, 02:52:10.260 |
- And these colonies and these little mini experiments 02:52:12.980 |
that all combine to the big giant experiment, 02:52:15.100 |
I have a, I don't know, I have this vision of America, 02:52:21.340 |
like I said, here, and this is truly a wonderful country. 02:52:24.980 |
I wasn't born on the Fourth of July, but I might as well be. 02:52:28.340 |
- I still, and I'm red-blooded American at this point, 02:52:31.740 |
and I have a sense that we've figured it out somehow. 02:52:38.820 |
that even more innovation, and people will move. 02:52:42.020 |
And the remote work might change fundamentally 02:52:47.220 |
It might just give you the freedom to then create 02:52:49.540 |
many other small Silicon Valleys throughout the place, 02:52:52.220 |
like Austin included, but other places as well. 02:52:57.660 |
- I think that's true, that there will be more mobility 02:53:03.420 |
I don't know if Silicon Valley has passed some sell-by date 02:53:12.580 |
in the sense that part of what keeps things going is social. 02:53:17.140 |
even before coronavirus, moved to San Francisco. 02:53:20.900 |
'cause in the '80s, we all lived in the valley, 02:53:22.860 |
and it was less populated, and San Francisco was grungier. 02:53:28.620 |
But by the '90s, and Jamie runs a nightclub there, 02:53:32.500 |
you had sort of wealthy tech people moving in, 02:53:35.180 |
South of Market, fancy townhouses being built. 02:53:41.580 |
by the South African director, Nels Jodie Foster, 02:53:46.020 |
Matt Damon is the guy on the Earth who has to go up. 02:53:51.660 |
The people in the space station have amazing medical 02:53:57.900 |
People on Earth are all suffering, ground down in poverty. 02:54:14.500 |
and the condos in the city got super expensive. 02:54:22.780 |
We should have, yes, in my backyard, not in my backyard. 02:54:25.860 |
But that's not happening, as far as I can tell. 02:54:28.420 |
And from the government to the incumbent landowners 02:54:39.660 |
and you should wait for the prices to monitor. 02:54:50.340 |
but just looking back, you have created things, 02:55:14.620 |
I mean, I'm Roman Catholic, so I am not afraid of death. 02:55:19.220 |
I think a lot of people who have problems with death 02:55:37.260 |
and they feel like they've missed opportunities 02:55:40.900 |
And I sympathize with a lot, because I'm old. 02:55:43.500 |
I got married fairly old, so I understand all that. 02:55:46.420 |
Nothing human is alien to me, as Terrence said. 02:55:57.700 |
I think, no, I think my legacy has more to do 02:56:03.500 |
I think it also has to do with web standards. 02:56:18.100 |
But even Firefox, whatever its future fortune, 02:56:26.180 |
and routing around, you don't need everybody to do that. 02:56:28.580 |
It's more like Taleb's stubborn minorities that do that. 02:56:31.200 |
It's the lead users, Eric Van Hippel's lead users. 02:56:33.620 |
You can be a few percent, you can tilt the market. 02:56:36.260 |
And that can be done in spite of the incumbents, 02:56:41.860 |
So I think what we did with Firefox won't be forgotten, 02:56:45.300 |
and it needs to be done more, and we're doing it with Brave. 02:56:47.180 |
And you could argue that other projects are doing it. 02:57:01.300 |
and I think it, in some ways, it's American, right? 02:57:06.500 |
It's not trying to burn the past and destroy everything. 02:57:08.780 |
It's more like we have these certain, let's say, rights. 02:57:16.900 |
about which comes first in American jurisprudence 02:57:25.880 |
like de Tocqueville described in his writings. 02:57:33.380 |
too oligarchic and abusive, we're gonna assert our rights. 02:57:40.440 |
it was the minority who fought and put their lives, 02:57:45.620 |
It was a bunch of people went to Upper Canada, 02:57:55.100 |
is that a few people can have the power to transform society 02:58:01.580 |
with just a little bit of code, change the world. 02:58:13.000 |
but I think some special things have already happened 02:58:22.500 |
They can adopt those folk ways and that spirit. 02:58:27.540 |
I was freaking out how much of an honor it is 02:58:31.380 |
This is one of my favorite conversations ever. 02:58:33.540 |
Thank you so much for wasting all this time with me. 02:58:38.860 |
- Thank you for listening to this conversation 02:58:41.340 |
with Brandon Eich, and thank you to our sponsors, 02:58:57.000 |
And now, let me leave you with some words from Jeff Atwood. 02:59:06.940 |
Thank you for listening, and hope to see you next time.