back to index

Brendan Eich: JavaScript, Firefox, Mozilla, and Brave | Lex Fridman Podcast #160


small model | large model

link |
00:00:00.000
The following is a conversation with Brendan Eich,
link |
00:00:02.580
creator of the JavaScript programming language,
link |
00:00:05.700
cofounder of Mozilla, which created the Firefox browser,
link |
00:00:09.180
and now cofounder and CEO of Brave Software,
link |
00:00:12.860
which has created the Brave browser.
link |
00:00:15.420
Each of these are revolutionary technologies.
link |
00:00:18.340
JavaScript is one of the most widely used
link |
00:00:21.100
and impactful programming languages in the world.
link |
00:00:24.900
Firefox pioneered many browser ideas that we love today
link |
00:00:29.020
or even take for granted today.
link |
00:00:31.300
And Brave is looking to revolutionize not only the browser,
link |
00:00:34.980
but content creation online and the nature of the internet
link |
00:00:38.260
to make it fundamentally about respecting people's control
link |
00:00:41.940
over their data.
link |
00:00:43.460
Quick mention of our sponsors, the Jordan Harbinger Show,
link |
00:00:47.380
Sambaska Mule Delivery Service, BetterHelp Online Therapy,
link |
00:00:51.540
and Aidsleep Self Cooling Mattress.
link |
00:00:53.940
Click the sponsor links to get a discount
link |
00:00:56.220
and to support this podcast.
link |
00:00:58.100
As a side note, let me say that there's a tension
link |
00:01:00.860
between theory and engineering that I've
link |
00:01:03.460
been thinking a lot about.
link |
00:01:05.220
I tweeted something like, good execution
link |
00:01:07.900
is more important than a good idea, but one helps the other.
link |
00:01:11.820
I think the wording of that sucks,
link |
00:01:13.460
but what I mean is a good idea is a must.
link |
00:01:16.900
But in my experience, good ideas are in abundance.
link |
00:01:20.740
Good execution, on the other hand, is rare.
link |
00:01:23.740
I think some mix of good timing, good idea,
link |
00:01:26.060
and good execution is essential.
link |
00:01:28.180
Getting that mixed right is tough.
link |
00:01:29.900
And Brandon somehow, multiple times in his career,
link |
00:01:32.900
did just that.
link |
00:01:34.300
I'm starting to believe it's more art than science,
link |
00:01:36.700
like most interesting things in life.
link |
00:01:39.260
If you enjoy this thing, subscribe on YouTube,
link |
00:01:41.740
review it on Apple Podcast, follow on Spotify,
link |
00:01:44.700
support on Patreon, or connect with me on Twitter,
link |
00:01:47.500
Alex Freedman.
link |
00:01:48.860
And now, here's my conversation with Brandon Ike.
link |
00:01:52.460
When did you first fall in love with programming?
link |
00:01:55.460
I didn't program a lot when I was in high school,
link |
00:01:57.460
but I had a friend who had a Commodore pet.
link |
00:02:00.460
And after we saw Star Wars, he said,
link |
00:02:02.460
hey, let's make a basic program that
link |
00:02:05.460
does the Death Star trench run.
link |
00:02:07.460
And it was just simple 2D graphics.
link |
00:02:10.460
And I didn't know what I was doing,
link |
00:02:11.460
so I just talked them out on the math and stuff like that.
link |
00:02:13.460
I was a math and science kid.
link |
00:02:15.460
I was really into the HP calculators of the early mid 70s.
link |
00:02:19.460
These were the RPN.
link |
00:02:20.460
They were really strongly built.
link |
00:02:23.460
And all right, Gold Trigger, instead of gold, divinely heavy.
link |
00:02:27.460
There's probably some gold in them, too, gold metallization.
link |
00:02:29.460
But they were awesome calculators,
link |
00:02:31.460
and they had all the scientific functions.
link |
00:02:33.460
So I was really into that.
link |
00:02:35.460
So I aimed toward physics.
link |
00:02:38.460
I was a little late for the, I think,
link |
00:02:40.460
the 20th century golden age.
link |
00:02:42.460
And I read a lot of science fiction.
link |
00:02:43.460
So I was like, yeah, it's on the hyperdrives and warp drives.
link |
00:02:46.460
And physics was not going to get there quickly.
link |
00:02:49.460
And I started hacking on computers while I was studying physics
link |
00:02:53.460
as an undergraduate at Santa Clara University.
link |
00:02:56.460
And, you know, I dodged the Fortran bullet
link |
00:02:59.460
because I was in the science department
link |
00:03:01.460
instead of the engineering department,
link |
00:03:03.460
where they still did Fortran card decks.
link |
00:03:05.460
I think they had an auto collater.
link |
00:03:07.460
But we were using Pascal.
link |
00:03:09.460
And I got one of the first portable C compilers ports
link |
00:03:14.460
to the deck mini computers we were using.
link |
00:03:17.460
And I fell in love with programming
link |
00:03:19.460
just based on, you know, procedural abstraction, Pascal,
link |
00:03:25.460
just what now would be considered old school,
link |
00:03:28.460
like structured programming from the 70s.
link |
00:03:31.460
Niklaus Wirt, the creator of Pascal,
link |
00:03:33.460
was a good writer and a good pedagogue, right?
link |
00:03:36.460
He always at ETH would do these courses
link |
00:03:38.460
where it's like build your own computer,
link |
00:03:40.460
build your own compiler, build your own operating system.
link |
00:03:42.460
It was gratch.
link |
00:03:43.460
Yeah, kind of.
link |
00:03:44.460
And I know some people who are grad students
link |
00:03:46.460
under him and said he would torture the students
link |
00:03:50.460
with things like this custom email system
link |
00:03:52.460
that had 25 word limit and things like that.
link |
00:03:56.460
I unfortunately dodged both the Pascal and the Fortran bullets.
link |
00:04:00.460
Could you maybe linger on the Pascal?
link |
00:04:04.460
Like what kind of programming language was it?
link |
00:04:06.460
What is the reminiscent of today?
link |
00:04:08.460
Because it sounds like it may have had an impact
link |
00:04:11.460
on your own trajectory.
link |
00:04:12.460
Yeah, it was in the Algoel family.
link |
00:04:14.460
And Algoel was the big successful language design
link |
00:04:20.460
and compiler project in the 60s.
link |
00:04:22.460
They had a successor called Algoel 68,
link |
00:04:24.460
which was ambitious but not as successful.
link |
00:04:27.460
But Pascal was kind of a wordy procedures
link |
00:04:30.460
and functions language.
link |
00:04:32.460
It distinguished between functions,
link |
00:04:33.460
which are a turn of value and procedures,
link |
00:04:35.460
which don't, which just compute.
link |
00:04:37.460
And you could say that whole Algoel family went into ADA.
link |
00:04:42.460
Pascal had a second life thanks to Borland with Turbo Pascal,
link |
00:04:45.460
which was hugely successful.
link |
00:04:48.460
I think in large part due to Anders Helzberg,
link |
00:04:50.460
who then went to Microsoft and did C sharp and done that
link |
00:04:53.460
with his team there and has done really well,
link |
00:04:55.460
doing TypeScript, Type JavaScript.
link |
00:04:57.460
So yeah, there's a lineage here.
link |
00:05:00.460
But I was also interested in C and Unix
link |
00:05:03.460
by the time I was an undergrad,
link |
00:05:05.460
because people were bringing Unix up on all sorts of hardware.
link |
00:05:08.460
I had some friends who were doing their own wire wrap computers,
link |
00:05:11.460
6820 maybe.
link |
00:05:14.460
And I was wire wrapping for my engineering course,
link |
00:05:18.460
6809 or something simpler,
link |
00:05:20.460
building a computer on a board.
link |
00:05:22.460
And I wanted to build a more ambitious one
link |
00:05:24.460
and port Unix to it,
link |
00:05:25.460
but I picked the wrong processor.
link |
00:05:26.460
I picked the National Semiconductor NS 16032,
link |
00:05:30.460
which was this amazing, you know,
link |
00:05:33.460
SISC complex instructions that computer
link |
00:05:36.460
and not the reduced instructions that computers
link |
00:05:38.460
that were just being contemplated into the mid 80s.
link |
00:05:42.460
And risk ultimately went out.
link |
00:05:44.460
Risk one, in some ways, it dissolved into,
link |
00:05:47.460
you have both.
link |
00:05:48.460
Now you have these superscalar architectures
link |
00:05:50.460
where like Intel has kept
link |
00:05:52.460
probably too much backward compatibility
link |
00:05:54.460
at the instruction level,
link |
00:05:56.460
but that's just, there's a front end that parses that
link |
00:05:58.460
into these, you know, these wide internal instructions.
link |
00:06:00.460
So, you know, the very long instruction word research
link |
00:06:03.460
that was also interesting at the time
link |
00:06:06.460
kind of became the micro architecture inside
link |
00:06:08.460
the backward compatible Intel.
link |
00:06:10.460
But I picked the National Semi chip
link |
00:06:12.460
and it never got made successfully.
link |
00:06:14.460
It was full of bugs and I never could have brought it up.
link |
00:06:17.460
But I went on out of physics after three years
link |
00:06:20.460
into math computer science.
link |
00:06:22.460
And like I said, I did it because I saw,
link |
00:06:24.460
I was being sort of childlike and naive about physics.
link |
00:06:27.460
And I thought, meanwhile,
link |
00:06:29.460
the Valley is go, go for computers.
link |
00:06:31.460
The Apple to write the PC,
link |
00:06:34.460
the Intel 8086,
link |
00:06:38.460
8088 base PC, the IBM, you know,
link |
00:06:41.460
gave Microsoft the future for,
link |
00:06:44.460
you know, a somewhat fishy deal.
link |
00:06:46.460
So it was wide open in the computing space,
link |
00:06:48.460
but in physics, you were as optimistic about physics.
link |
00:06:51.460
No, I mean, I was one of three brothers
link |
00:06:54.460
who were all in the same grade.
link |
00:06:56.460
I have a twin and a younger brother
link |
00:06:58.460
who skipped second grade
link |
00:07:00.460
and was with us the whole time after that.
link |
00:07:02.460
And, you know, he went on,
link |
00:07:04.460
he actually studied under Kip Thorne at Caltech.
link |
00:07:06.460
Wow.
link |
00:07:07.460
But he also ended up in software.
link |
00:07:11.460
Does it make you sad that theoretical physics,
link |
00:07:15.460
even with strength theory,
link |
00:07:17.460
hasn't really had any foundation breakthroughs
link |
00:07:20.460
in the latter part of the 20th century?
link |
00:07:22.460
Yeah.
link |
00:07:23.460
In fact, I'd say the problem is theory over experiment.
link |
00:07:26.460
I would say, you know,
link |
00:07:28.460
we need more Aristotle and less Plato.
link |
00:07:30.460
You know, mathematics is not all physical.
link |
00:07:33.460
There are lots of mathematics that cannot be realized
link |
00:07:35.460
as far as I know in this world.
link |
00:07:37.460
So to understand the world,
link |
00:07:39.460
you need to do experiments.
link |
00:07:41.460
You need to not just dream up inductive theories
link |
00:07:44.460
that could have lots of alternative theories
link |
00:07:47.460
competing with them,
link |
00:07:48.460
with no way to decide between them except aesthetics,
link |
00:07:50.460
which is not a good guide in my opinion.
link |
00:07:52.460
I don't know if you are friends
link |
00:07:54.460
or have a relationship with Elon Musk.
link |
00:07:56.460
Where's the, in terms of what you would love to see
link |
00:08:00.460
our society investing in, building up,
link |
00:08:02.460
is it closer to Elon or is it closer to Feynman
link |
00:08:06.460
and Einstein and those?
link |
00:08:08.460
Well, those gentlemen are no longer with us.
link |
00:08:10.460
And I think that's noticed.
link |
00:08:11.460
So like I said, the real glory day is of physics.
link |
00:08:14.460
The famous pictures from Germany before the Second War
link |
00:08:17.460
were just a fantastic assembly of brains,
link |
00:08:20.460
Schrodinger and Einstein.
link |
00:08:22.460
And physics, I think, took a wrong turn
link |
00:08:26.460
that maybe all of, I would say, western science took
link |
00:08:30.460
in going for models over reality, right?
link |
00:08:33.460
You see this in all sorts of fields.
link |
00:08:35.460
Now, we can build models that are very predictive and generative
link |
00:08:38.460
and then we build actual devices or, you know,
link |
00:08:40.460
semiconductors, things like that.
link |
00:08:42.460
That's good. I'm not dismissing that.
link |
00:08:44.460
We need good models.
link |
00:08:45.460
We need to experiment and prove them and test them.
link |
00:08:49.460
But the problem I've seen in physics, which you see,
link |
00:08:52.460
certainly in economics, the dismal science,
link |
00:08:55.460
and you see surprisingly in other so called hard sciences,
link |
00:08:58.460
is models that don't really have to be tested against reality.
link |
00:09:05.460
They can instead become policy tools or they can become,
link |
00:09:08.460
like I said, one of a large family of alternate theories
link |
00:09:12.460
that could be as predictive,
link |
00:09:14.460
but nobody's doing the winnowing out.
link |
00:09:16.460
That's such an interesting tension in society.
link |
00:09:18.460
You see this in even the software sciences,
link |
00:09:20.460
which have a deep love for psychology.
link |
00:09:23.460
You see this in epidemiology, now the virus.
link |
00:09:26.460
Absolutely.
link |
00:09:27.460
It's this tension of, you know,
link |
00:09:29.460
how much of the world can we understand
link |
00:09:31.460
through just a beautifully fit model?
link |
00:09:34.460
And then at the same time, my main work is a machine learning
link |
00:09:38.460
where it's like there is no provable thing usually.
link |
00:09:43.460
It's just kind of you, it's all about just getting the right
link |
00:09:46.460
data set and getting tricks and so on.
link |
00:09:49.460
And there's this tension, even in my own soul,
link |
00:09:51.460
of like I grew up on theoretical computer science,
link |
00:09:54.460
like I loved approximation algorithms,
link |
00:09:58.460
like all of that, like different complexity classes,
link |
00:10:01.460
just those little puzzles.
link |
00:10:03.460
I mean, I don't know.
link |
00:10:04.460
Do you, to you as somebody who was in math and computer science
link |
00:10:08.460
and then end up going into places where you engineer
link |
00:10:12.460
some of the most impactful things in this world,
link |
00:10:14.460
do you see the P versus NP,
link |
00:10:18.460
all that whole space as interesting at all?
link |
00:10:21.460
Yeah, it's not that useful in practice, right?
link |
00:10:24.460
People are using it with sort of crypto analysis
link |
00:10:27.460
or asymptotic arguments about, you know,
link |
00:10:30.460
can we have a quantum resistant crypto algorithm,
link |
00:10:33.460
things like that, which may not be practical, right?
link |
00:10:36.460
If you follow Mikhail Diakonov or Gil Kolay,
link |
00:10:39.460
there are big questions about how quantum computing
link |
00:10:43.460
will scale up, how practical it will be.
link |
00:10:46.460
Is that something that you think about quantum computing?
link |
00:10:49.460
Except for spare time.
link |
00:10:50.460
Like you said, I'm not using this kind of computer science
link |
00:10:53.460
in practice because almost everything now is engineering
link |
00:10:57.460
and finding ways to get computers to be more useful for people,
link |
00:11:03.460
which goes from, you know, design problems,
link |
00:11:05.460
which are really kind of an art.
link |
00:11:07.460
Like Newt said, anything you can't automate is an art.
link |
00:11:09.460
Well, we can have, you know, machine learning,
link |
00:11:12.460
compose music, and it can imitate, you can train it,
link |
00:11:14.460
and it can sound kind of decent,
link |
00:11:16.460
but maybe lacking that je ne sais quoi.
link |
00:11:18.460
But, you know, user interface still I think requires human art.
link |
00:11:23.460
So speaking of things that didn't follow a perfect theory
link |
00:11:27.460
and model, JavaScript, so there's two things.
link |
00:11:31.460
One had an impact on the world at a huge scale, obviously,
link |
00:11:34.460
and it also still is one of probably the most popular
link |
00:11:39.460
programming language in the world.
link |
00:11:41.460
So can we go back to the origin story?
link |
00:11:44.460
Can you tell the story of how JavaScript was created?
link |
00:11:47.460
Yeah.
link |
00:11:48.460
I was at Silicon Graphics after graduate school for seven years,
link |
00:11:52.460
and it got to be big and successful and divisionalized
link |
00:11:55.460
and political, and I thought kind of boring.
link |
00:12:00.460
And a friend who'd been there went to one of the last
link |
00:12:03.460
of the super companies, the super startups in the early 90s.
link |
00:12:07.460
There were several, I suppose General Magic was a little after
link |
00:12:10.460
that around the same time, but Micro Unity was that company
link |
00:12:13.460
that I went to, and it was because my friend,
link |
00:12:15.460
Jeff Weinstein had gone there from Silicon Graphics.
link |
00:12:17.460
He recruited me, and Micro Unity was doing everything.
link |
00:12:21.460
So this was like the ultimate sort of pretend grad school.
link |
00:12:25.460
It was doing a new fab, new semiconductor process.
link |
00:12:28.460
It was doing new analog and digital circuits on the same,
link |
00:12:32.460
very large, but not way for scale chip.
link |
00:12:35.460
Originally it was five centimeters on the side.
link |
00:12:39.460
It was really hot too.
link |
00:12:41.460
So I needed a water cooler.
link |
00:12:43.460
It was a Craig Hiller, and then they shrunk it,
link |
00:12:45.460
and they tried to do a home sort of media processor
link |
00:12:48.460
that was essentially a barrel processor,
link |
00:12:51.460
but you could think of trying to do all the things that we now
link |
00:12:55.460
see in modern architectures with short vector instructions
link |
00:12:59.460
and sort of wide instructions or multiple issue.
link |
00:13:04.460
And doing a lot of the stuff in software,
link |
00:13:07.460
because the second iteration, the Set Top Box,
link |
00:13:10.460
was really for avoiding the cost to the cable company
link |
00:13:13.460
of rolling the trucks out to replace your garbage
link |
00:13:16.460
General Atlantic Set Top Box with a totally newer,
link |
00:13:19.460
less garbagey one.
link |
00:13:21.460
So if you could have software gradable Set Top Boxes,
link |
00:13:24.460
the cable companies thought they could save a lot of money
link |
00:13:26.460
and add features.
link |
00:13:27.460
Is this assembly?
link |
00:13:28.460
Or which level of the software?
link |
00:13:30.460
We were using GCC.
link |
00:13:33.460
We were writing C++ and C.
link |
00:13:36.460
Today, I worked with their really very smart guy,
link |
00:13:39.460
hired from a sort of Wall Street hotshot programming consultancy,
link |
00:13:44.460
did his own hardware design as well as software.
link |
00:13:47.460
We were working on how to make not only short vector units,
link |
00:13:50.460
but general bit shufflers and promoters,
link |
00:13:53.460
so you could do things like crypto algorithms efficiently,
link |
00:13:57.460
and you could do demodulation of the cable complex quadrature
link |
00:14:03.460
amplitude modulated signal.
link |
00:14:05.460
You're basically taking A to D converters,
link |
00:14:07.460
dumping things in buffers,
link |
00:14:08.460
and then doing the rest in software.
link |
00:14:10.460
All the framing and the Reed Solomon and Viterbi
link |
00:14:13.460
and all that error correction.
link |
00:14:14.460
So that was really great learning experience,
link |
00:14:15.460
but it was not going to work.
link |
00:14:16.460
It was doing too many risky things at once, right?
link |
00:14:18.460
If you, as Jim Clark said to me when I hopped in Netscape
link |
00:14:21.460
after three years at Micro Unity, he said,
link |
00:14:23.460
oh yeah, you do 10 things each,
link |
00:14:25.460
one in 10 odds, it's going to be one in 10 billion, right?
link |
00:14:29.460
The multiplication principle.
link |
00:14:31.460
So Netscape was already a rocket,
link |
00:14:33.460
and I had passed the chance to go there in 1994.
link |
00:14:36.460
I knew the founders because I worked at SGI Clark's company.
link |
00:14:40.460
Could you pause for a second in Netscape?
link |
00:14:42.460
When was the launch of this rocket?
link |
00:14:44.460
1994.
link |
00:14:45.460
1994 was the launch of Netscape?
link |
00:14:47.460
And I went there in early 95 in April.
link |
00:14:49.460
Okay.
link |
00:14:50.460
So you said you missed the launch?
link |
00:14:52.460
Well, I missed the first floor employment opportunity,
link |
00:14:55.460
but the IPO was August 1995, so I was there for that.
link |
00:14:59.460
How obvious was it that Netscape was like world changing?
link |
00:15:02.460
How was the layout?
link |
00:15:04.460
Was Netscape one of the first big browsers?
link |
00:15:06.460
Yes.
link |
00:15:07.460
So when I was at Micro Unity still in 93,
link |
00:15:09.460
we saw a browser called Mosaic.
link |
00:15:11.460
And up till then, we'd used email,
link |
00:15:13.460
and we'd used Usenet, the NNTP protocol.
link |
00:15:15.460
We'd used Newsreaders.
link |
00:15:17.460
We used FTP.
link |
00:15:18.460
We used all these old internet protocols,
link |
00:15:20.460
all relying on the DNS and TCPIP and UDP for that matter.
link |
00:15:25.460
When I was at Silicon Graphics,
link |
00:15:26.460
we brought up the whole stack, right?
link |
00:15:28.460
We had to discover how to find the ethernet,
link |
00:15:31.460
find the IP addresses on your network,
link |
00:15:33.460
and then find IP addresses for them,
link |
00:15:35.460
ARP protocol, all that stuff.
link |
00:15:37.460
And it was great because nobody knew in the 80s
link |
00:15:39.460
what was going to win.
link |
00:15:41.460
All the proprietary stacks like IBM,
link |
00:15:43.460
SNA, and DeckNet, and all these other protocols were saying,
link |
00:15:46.460
we're going to do it, or it's going to be heterogeneous future.
link |
00:15:49.460
Instead, it was Berkeley Unix and the TCPIP stack
link |
00:15:53.460
that dated back to the ARPANET that won.
link |
00:15:56.460
And I think we knew it.
link |
00:15:57.460
We all knew it at SGI, but the salespeople didn't.
link |
00:16:00.460
Multiple network stacks interoperating.
link |
00:16:02.460
But in the end, it won.
link |
00:16:04.460
And so that was the internet.
link |
00:16:06.460
And it was email and texty, and it was used as very texty.
link |
00:16:09.460
And then Tim Berners Lee did his thing,
link |
00:16:12.460
but I don't think I was paying attention.
link |
00:16:14.460
And I think the date when he first did it,
link |
00:16:16.460
or when he wrote the famous emails and pushed back to 89,
link |
00:16:19.460
but I noticed Mosaic in 93 because one of the things
link |
00:16:22.460
that Mark Andreessen and Eric Bina did at NCSA
link |
00:16:26.460
was they innovated on the early HTML standard.
link |
00:16:31.460
In particular, Mark sent this email saying, hey, everybody,
link |
00:16:33.460
we think you should be able to put an image in a page.
link |
00:16:36.460
And you know when he sent that, Eric Bina had already written
link |
00:16:38.460
the code.
link |
00:16:39.460
And I talked to Tim Berners Lee more recently just a few years ago,
link |
00:16:42.460
and he was like, oh, we had another way of doing it.
link |
00:16:44.460
And it didn't work out because Mark shipped his in Mosaic.
link |
00:16:48.460
And this convinced me of several things.
link |
00:16:50.460
One, the internet meant there was a huge first mover advantage
link |
00:16:54.460
and being fast, getting on first mattered a lot.
link |
00:16:58.460
And so Richard Gabriel of Scheme and Poetry fame
link |
00:17:01.460
has written about this.
link |
00:17:02.460
Poetry.
link |
00:17:03.460
Poetry.
link |
00:17:04.460
What's poetry?
link |
00:17:05.460
Well, he's a poet.
link |
00:17:06.460
Oh, actual poetry.
link |
00:17:07.460
He thought it was something.
link |
00:17:08.460
No, no.
link |
00:17:09.460
I mean, he's the founder of Lucid,
link |
00:17:10.460
which is where Jamie Zewinski worked before in Netscape.
link |
00:17:13.460
And Lucid was doing compilers and Lucid Emacs,
link |
00:17:16.460
which was a fork of Emacs, famously Jamie fighting
link |
00:17:19.460
against Richard Stallman, Stallmax.
link |
00:17:22.460
And so Richard Gabriel, you know, very, very brainy computer guy,
link |
00:17:25.460
but also a poet, but he wrote a nice essay
link |
00:17:27.460
that gets abused all the time.
link |
00:17:28.460
In fact, Jamie's put a kind of warning
link |
00:17:30.460
in front of his version of it on his site,
link |
00:17:32.460
JWC.
link |
00:17:33.460
They were called worse is better.
link |
00:17:34.460
And this is about survival advantage of software
link |
00:17:38.460
in the network world, in my opinion.
link |
00:17:39.460
It's about Unix.
link |
00:17:41.460
It started out being framed as Unix and Lisp,
link |
00:17:43.460
good news, bad news, because all the Lisp people,
link |
00:17:45.460
the MIT people were like, oh, you know,
link |
00:17:48.460
the crown jewel, right, Scheme, this Faberge egg
link |
00:17:51.460
or common Lisp, this giant cathedral.
link |
00:17:53.460
Of course we're going to win.
link |
00:17:54.460
This is civilization.
link |
00:17:55.460
And those, you know, those farmers in New Jersey
link |
00:17:57.460
to borrow from the Sopranos, those hicks down at Bell Labs,
link |
00:18:00.460
they're just, you know, there's nothing sound there.
link |
00:18:03.460
It's all hacking.
link |
00:18:04.460
Well, guess what one.
link |
00:18:06.460
Wow.
link |
00:18:07.460
So you're saying this is a fundamental,
link |
00:18:09.460
like principle of the internet is moving fast winds.
link |
00:18:14.460
You could say in almost any network system,
link |
00:18:16.460
like biological evolution, you see successful,
link |
00:18:19.460
real sweet populations and they don't always have,
link |
00:18:22.460
you know, they aren't free of flaws.
link |
00:18:24.460
The heterozygous advantage, right?
link |
00:18:26.460
You can get both parents, give you the gene variant
link |
00:18:29.460
and you get sickle cell anemia, right?
link |
00:18:31.460
But if one of them does, you're more resistant to malaria.
link |
00:18:34.460
And so this isn't a beautiful process,
link |
00:18:37.460
except at large scale.
link |
00:18:39.460
And then you realize that because it moves fast
link |
00:18:41.460
and can adapt, it can win.
link |
00:18:43.460
And people still struggle with this.
link |
00:18:46.460
I used to struggle with this because JavaScript
link |
00:18:48.460
was done in such a hurry and the force of web compatibility
link |
00:18:51.460
meant early mistakes couldn't be fixed.
link |
00:18:54.460
And even the standards process injected new mistakes,
link |
00:18:57.460
as it will.
link |
00:18:58.460
But often standards bodies go back
link |
00:19:00.460
and making compatible changes.
link |
00:19:01.460
You can't do that with the web.
link |
00:19:03.460
It's more like, again, like biology,
link |
00:19:05.460
you preserve what still works.
link |
00:19:07.460
You don't want to break ATP metabolism or whatever.
link |
00:19:10.460
So you have to kind of resign yourself to the reality
link |
00:19:14.460
of versus better being enshrined
link |
00:19:19.460
in actual design points you might not like.
link |
00:19:22.460
And that happened with JavaScript.
link |
00:19:24.460
And I'm way over it.
link |
00:19:25.460
But it also, I think, was a huge advantage
link |
00:19:28.460
why JavaScript has kind of swept a lot of programming domains.
link |
00:19:32.460
People will say, oh, it's not because of merit.
link |
00:19:34.460
Well, you're right.
link |
00:19:35.460
But we also improved it over time in the standards body.
link |
00:19:37.460
I spent 20 years doing that.
link |
00:19:38.460
And you don't get that choice.
link |
00:19:41.460
It's like, I'm not saying that that was the best language.
link |
00:19:44.460
I'm just saying that was the right time to do it.
link |
00:19:46.460
And I like to say the alternative was not to do it.
link |
00:19:49.460
I could have told Netscape, I can't do this.
link |
00:19:51.460
It's too rushed.
link |
00:19:52.460
And it would have been visual basic script.
link |
00:19:54.460
And it would have been bad.
link |
00:19:57.460
So that's a good way to present the alternative.
link |
00:19:59.460
But so it was a Netscape.
link |
00:20:01.460
And you have written it how many days
link |
00:20:03.460
and why was it only that many days?
link |
00:20:05.460
And what was the goal and the underlying principles
link |
00:20:08.460
in your mind?
link |
00:20:09.460
So the whole, I'm sort of describing worse is better
link |
00:20:11.460
in a frenetic way because it fit the model of Netscape.
link |
00:20:14.460
When it was known that Jim Clark and Mark Andrius
link |
00:20:18.460
were founding Netscape and they did the first release in 1994,
link |
00:20:22.460
that browser took over from Mosaic.
link |
00:20:24.460
In fact, that's why Mozilla is called that.
link |
00:20:26.460
It's the Mosaic killer.
link |
00:20:27.460
It's like the giant monster that kills Mosaic.
link |
00:20:29.460
It's awesome.
link |
00:20:30.460
And they knew that it wasn't that, again,
link |
00:20:33.460
it's not like you're doing advanced scientific research
link |
00:20:35.460
that is changing the world.
link |
00:20:37.460
It's more like taking down the last iteration
link |
00:20:40.460
in the browser Mark did, which had images
link |
00:20:42.460
and other affordances before you stopped working on it.
link |
00:20:45.460
And you're making Netscape the new thing that has images,
link |
00:20:48.460
plug ins, which was the way to do video back in the day.
link |
00:20:51.460
It had something that's kind of died now for tiled windows
link |
00:20:53.460
called frames and frame sets.
link |
00:20:55.460
Oh, yeah, yeah, yeah, yeah.
link |
00:20:57.460
HTML tables.
link |
00:20:58.460
That was new.
link |
00:20:59.460
Eric Bina did tables in Netscape 11.
link |
00:21:01.460
So when I got there, they were heading toward IPO.
link |
00:21:04.460
Clark wanted to IPO early.
link |
00:21:06.460
I think his instinct was right.
link |
00:21:08.460
And that kicked off the whole dot com era.
link |
00:21:10.460
There was a recession in the US in 91.
link |
00:21:13.460
You can see old law and order reruns
link |
00:21:15.460
where they talk about the recession, how hard it's hitting
link |
00:21:17.460
New Yorkers.
link |
00:21:18.460
And after that, Greenspan really goose things
link |
00:21:20.460
at the Federal Reserve.
link |
00:21:21.460
And technology had been sort of fermenting in a way that came
link |
00:21:25.460
together with the internet.
link |
00:21:26.460
And Netscape made it possible to do pets.com,
link |
00:21:30.460
to do eBay, to get people to recognize a URL on a billboard
link |
00:21:34.460
and then type it in when they get home.
link |
00:21:35.460
And that was huge.
link |
00:21:37.460
That was so fast moving a rocket that Mark and the
link |
00:21:43.460
engineering team there thought we need to make this a
link |
00:21:46.460
programmable browser, not just a document viewer,
link |
00:21:49.460
not just a video.
link |
00:21:50.460
It was all HTML with images and tables.
link |
00:21:53.460
And also, like you said, frames.
link |
00:21:54.460
Really plug ins.
link |
00:21:55.460
There's no dynamic element at all.
link |
00:21:57.460
Yeah.
link |
00:21:58.460
The most dynamism you get was from a plug in,
link |
00:21:59.460
which there are a few of them then flash didn't exist
link |
00:22:02.460
at that point.
link |
00:22:05.460
Java applets yet?
link |
00:22:06.460
No.
link |
00:22:07.460
Well, that's the thing.
link |
00:22:08.460
We did the deal with Sun.
link |
00:22:09.460
In fact, I was recruited to go do Scheme in the browser.
link |
00:22:12.460
Remember Guy Steele and Gerald Susman's beautiful
link |
00:22:14.460
list variant?
link |
00:22:16.460
I was going to do it in the browser because my friends
link |
00:22:18.460
from SGI thought, hey, we like Scheme.
link |
00:22:20.460
You like Scheme.
link |
00:22:21.460
And I'm like, I hardly ever use Scheme.
link |
00:22:22.460
It's not really used in industry except in sort of silos.
link |
00:22:25.460
But I like it.
link |
00:22:26.460
Okay.
link |
00:22:27.460
I'll come do Scheme in the browser.
link |
00:22:29.460
I have a slide from my 2017 talk where I have Bruce Willis
link |
00:22:33.460
crawling through the duct in diehard.
link |
00:22:35.460
He's like, come out to the coast.
link |
00:22:37.460
Have a lot of fun.
link |
00:22:38.460
Come on, do Scheme in the browser.
link |
00:22:40.460
But when I got there, there was no Scheme in the browser
link |
00:22:42.460
because they'd started a deal with Sun Microsystems.
link |
00:22:45.460
And my best contact there was Bill Joy,
link |
00:22:47.460
who I admired as a Berkeley UNIX founder and a Sun founder.
link |
00:22:50.460
And Bill got the idea of making the browser programmable too.
link |
00:22:54.460
And so the main idea was to put the Java VM,
link |
00:22:57.460
which at that point was not really easy to embed,
link |
00:23:00.460
into Netscape, including the Netscape version of Windows
link |
00:23:04.460
that was still most popular, which was the 16 bit Windows 3.1,
link |
00:23:08.460
which was going away.
link |
00:23:09.460
Microsoft was coming out with Windows 95.
link |
00:23:11.460
And everyone was afraid they were going to do Internet Explorer,
link |
00:23:14.460
I guess, two at that point, three the next year.
link |
00:23:17.460
They already bought or invested in somehow Spyglass,
link |
00:23:21.460
this other company that shot out from NCSA at University of Illinois.
link |
00:23:26.460
And in fact, Microsoft had tried to buy Netscape in late 94
link |
00:23:30.460
before I got there.
link |
00:23:31.460
And I heard about this later.
link |
00:23:32.460
I heard they offered way too little money.
link |
00:23:35.460
And so Jim Barksdale and Jim Clark said, get out of here,
link |
00:23:38.460
pound sand.
link |
00:23:39.460
But then they realized, oh, this is going to hurt us
link |
00:23:43.460
because now they're going to copy us.
link |
00:23:45.460
It didn't happen right away.
link |
00:23:46.460
I'm not sure when Gates Internet Title Wave memo was written.
link |
00:23:50.460
That's the famous memo he wrote when Bill Gates realized
link |
00:23:53.460
that Microsoft was going down this old copy AOL path
link |
00:23:56.460
or copy compuser path, a project called Blackbird,
link |
00:24:00.460
presumably after the SSR 71, I don't know.
link |
00:24:02.460
But they were going to make a dial up service with a custom
link |
00:24:05.460
content language stack and custom rendering.
link |
00:24:08.460
It wasn't the web.
link |
00:24:10.460
They could have content partners.
link |
00:24:12.460
They have a lot of money.
link |
00:24:13.460
But it still wasn't to scale the web.
link |
00:24:15.460
It wasn't going to be compelling.
link |
00:24:16.460
And Gates realized this and he turned the company on at a dime
link |
00:24:19.460
and they couldn't buy Netscape.
link |
00:24:21.460
Again, I'm not sure the timing, so they decided to copy it.
link |
00:24:24.460
And once we realized that everybody inside Netscape
link |
00:24:27.460
felt even more urgency and more of a frenetic mood.
link |
00:24:30.460
And so my chance to do scheme disappeared when the Java deal
link |
00:24:34.460
started brewing.
link |
00:24:35.460
But there was still a chance to do a companion language to Java
link |
00:24:39.460
because Java is a compiled language.
link |
00:24:42.460
It's evolved and improved quite a lot since then too.
link |
00:24:44.460
But it was for sort of serious advanced programmers
link |
00:24:48.460
that cost a certain salary or hourly rate.
link |
00:24:50.460
And people observed, Bill Joy observed, and Mark Andreessen
link |
00:24:54.460
and I observed that in a mature stack like Microsoft,
link |
00:24:57.460
you really benefit from having a scripting language
link |
00:24:59.460
like Visual Basic, which became Visual Basic Script in IE3
link |
00:25:03.460
but didn't take over and kill JavaScript,
link |
00:25:06.460
that you need two languages.
link |
00:25:08.460
One is for the component writers who are higher price
link |
00:25:11.460
and more expert.
link |
00:25:12.460
And the other is for scripters, certified public accountants,
link |
00:25:18.460
designers, graphic designers with some programming inclination.
link |
00:25:21.460
Anybody, amateurs, doesn't matter.
link |
00:25:23.460
There's a much more demotic approach there
link |
00:25:26.460
for programming the components together, gluing them together.
link |
00:25:29.460
Some people will say ducked tape language,
link |
00:25:31.460
which I don't really like.
link |
00:25:32.460
But we saw Bill Joy and Mark Andreessen
link |
00:25:35.460
and we saw the need for companion language.
link |
00:25:37.460
And Gleaminar, I was to call it JavaScript.
link |
00:25:40.460
I didn't like it.
link |
00:25:41.460
That was marketing's plan.
link |
00:25:42.460
Mark called it Mocha, which I liked.
link |
00:25:44.460
And Netscape marketing, I think, didn't like that.
link |
00:25:46.460
So they said, oh, there's some trademark and some software,
link |
00:25:49.460
somewhere that uses Mocha.
link |
00:25:50.460
So we can't use that.
link |
00:25:51.460
And they tried live script in August and that didn't last.
link |
00:25:54.460
And then finally, we got the trademark license in December,
link |
00:25:57.460
1995.
link |
00:25:58.460
But the work I did to prove that it could be done was important
link |
00:26:01.460
because I came in in April and even then Netscape was growing
link |
00:26:07.460
so fast that they couldn't find an open hiring requisition
link |
00:26:10.460
in the client team for me.
link |
00:26:11.460
So they hired me into the server team.
link |
00:26:13.460
And I worked for a month on server team on what became HP11.
link |
00:26:18.460
So I was actually, I had done protocol work at Silicon
link |
00:26:20.460
Graphics with Greg Cheson, former Bell Labs intern,
link |
00:26:24.460
grad student intern who knew all the UNIX founders.
link |
00:26:26.460
And Greg was very interested in taking protocols to the next level
link |
00:26:31.460
with VLSI because he thought that CPUs wouldn't scale up.
link |
00:26:35.460
He was mistaken in that, unfortunately.
link |
00:26:37.460
Moore's law more than kept up.
link |
00:26:38.460
And you have gigabit ethernet running with conventional processors.
link |
00:26:42.460
But I worked on protocols at SGI as well as UNIX kernel hacking
link |
00:26:47.460
and NFS and things like that.
link |
00:26:49.460
So I came into Netscape to work on the server side for a month.
link |
00:26:53.460
But I was thinking the whole time, what should this language be like?
link |
00:26:56.460
Should it be easy to use?
link |
00:26:58.460
Might it syntax even be more like natural language?
link |
00:27:00.460
Like hyper talk, which is Bill Atkinson's language in hypercard,
link |
00:27:05.460
if you have ever used hypercard on an early Mac.
link |
00:27:08.460
And I thought, well, I'd like to do that.
link |
00:27:12.460
But my management is saying, make it look like Java,
link |
00:27:14.460
which looks like C from a distance.
link |
00:27:17.460
What does that mean?
link |
00:27:18.460
Is it braces?
link |
00:27:19.460
We're talking about visually.
link |
00:27:20.460
Does it mean like management?
link |
00:27:22.460
Do they understand what you think about it?
link |
00:27:24.460
No, marketing didn't know.
link |
00:27:25.460
But management did.
link |
00:27:26.460
Like Rick Shell, the VP of Engineering knew.
link |
00:27:29.460
And we had a plan even that was, if you have this companion language,
link |
00:27:32.460
you're going to glue things together between Java and JavaScript.
link |
00:27:35.460
So you're going to have commerce in memory in the heap with data types.
link |
00:27:39.460
So you're going to want some of the data types in Java
link |
00:27:42.460
to reflect in the JavaScript.
link |
00:27:43.460
You're going to want the primitive types that Java unfortunately
link |
00:27:46.460
severed it from objects.
link |
00:27:47.460
So at least some of them number double, let's call it in Java's terms,
link |
00:27:51.460
from the C term for double precision floating point or strings
link |
00:27:56.460
or Booleans and objects.
link |
00:28:00.460
And so right away, there was this constraint that looking like Java meant
link |
00:28:05.460
kind of the C curly brace syntax,
link |
00:28:07.460
but also some of the data types and objects.
link |
00:28:09.460
Like objects and so on and so forth.
link |
00:28:10.460
Yeah, I thought it called.
link |
00:28:11.460
Comparison operator.
link |
00:28:12.460
Garbage collection.
link |
00:28:13.460
Garbage collection.
link |
00:28:14.460
Yeah.
link |
00:28:15.460
Even the bitwise operators and the shift operators,
link |
00:28:17.460
including the unsigned right shift,
link |
00:28:19.460
which Java had because it didn't have unsigned integer types.
link |
00:28:22.460
It said, if you want to do unsigned operations, use an operator.
link |
00:28:25.460
And that turned out to be important much later.
link |
00:28:27.460
I'll tell that story five times.
link |
00:28:28.460
But JavaScript inherited a set of operators,
link |
00:28:34.460
the expression grammar, the statement grammar up to a point from Java.
link |
00:28:39.460
But I wanted a functional language.
link |
00:28:40.460
I want to scheme a little bit of scheme,
link |
00:28:42.460
even though it wasn't as clean as scheme.
link |
00:28:44.460
You had a love search interrupt.
link |
00:28:45.460
You had a love for scheme and list,
link |
00:28:47.460
but that functional language last game.
link |
00:28:49.460
Yes.
link |
00:28:50.460
I wanted first class functions because I saw the need for callbacks
link |
00:28:53.460
in the browser where it's a single threaded program.
link |
00:28:55.460
Wow.
link |
00:28:56.460
All the early browsers were single threaded.
link |
00:28:57.460
And it's the right model for users.
link |
00:28:58.460
Most users weren't ready for mutual exclusion and threading.
link |
00:29:01.460
So in a single threaded world,
link |
00:29:03.460
you cannot block the user interface.
link |
00:29:05.460
So you have to use a callback and run later.
link |
00:29:07.460
And without getting too fancy and trying to capture the continuation
link |
00:29:11.460
like call CC does in scheme,
link |
00:29:13.460
I thought I'll just make it easy to have fun arcs.
link |
00:29:16.460
First class functions, you pass downward and they can call back.
link |
00:29:19.460
It'd be called back.
link |
00:29:21.460
And Java didn't have that at the time.
link |
00:29:23.460
It took forever to get proper first class functions.
link |
00:29:27.460
Lambda is now into Java.
link |
00:29:29.460
Java 7 or 8, I think.
link |
00:29:30.460
It did have concurrency, right?
link |
00:29:32.460
Yes.
link |
00:29:33.460
From the very beginning,
link |
00:29:34.460
but you were thinking that a JavaScript in the browser
link |
00:29:36.460
would not have the luxury of being concurrent.
link |
00:29:39.460
That's right.
link |
00:29:40.460
And the reason was Java was going to run in a plug in
link |
00:29:42.460
so it could fork threads and go to town.
link |
00:29:44.460
But the main action in the browser was in the single threaded program,
link |
00:29:48.460
single UNIX process on UNIX or Windows.
link |
00:29:51.460
And it was where you had to service the event loop
link |
00:29:54.460
and then go do things.
link |
00:29:56.460
Respond to the network, lay out some HTML, render it,
link |
00:29:59.460
turn widths into heights by filling containers,
link |
00:30:02.460
boxes, the early, what became the CSS box model.
link |
00:30:05.460
And run scripts to make the thing livelier,
link |
00:30:09.460
respond to user input.
link |
00:30:11.460
And all that event driven programming was in part like Hypercard
link |
00:30:15.460
because Hypercard had this on event name syntax.
link |
00:30:19.460
And so that's why you have in JavaScript on click
link |
00:30:21.460
running together as the name of the event handler.
link |
00:30:24.460
And there's some funny ones on mouse over and on mouse out.
link |
00:30:27.460
People still complain about those.
link |
00:30:28.460
But, you know, there are many more events now
link |
00:30:30.460
over the years standardized.
link |
00:30:31.460
But it was a mix of event driven single threaded programming
link |
00:30:35.460
because it had to run in the main thread of the browser
link |
00:30:38.460
where the action is.
link |
00:30:39.460
And Java never got there,
link |
00:30:40.460
which meant Java could not interact easily or quickly
link |
00:30:43.460
or in a nested way with the document,
link |
00:30:46.460
with the objects reflected from the HTML document,
link |
00:30:49.460
with the tables and forms and so on.
link |
00:30:51.460
And that is one of the reasons I think JavaScript survived
link |
00:30:54.460
and Java kind of died.
link |
00:30:55.460
Java was in this plugin prison.
link |
00:30:56.460
It essentially was confined to a rectangle,
link |
00:30:58.460
the Apple rectangle.
link |
00:30:59.460
And while we even built a next year,
link |
00:31:02.460
Nick Thompson, a friend from SGI,
link |
00:31:04.460
who was an intern grad student at CMU at the time,
link |
00:31:08.460
built the first version of LiveConnect to glue Java
link |
00:31:10.460
and JavaScript together to deliver on that vision
link |
00:31:13.460
where you do have commerce between the data types and the heap.
link |
00:31:17.460
Did it work?
link |
00:31:18.460
It worked.
link |
00:31:19.460
But Java was in charge.
link |
00:31:21.460
JavaScript was in charge.
link |
00:31:22.460
And Java was just these components, these helper objects.
link |
00:31:24.460
You might as well do everything in JavaScript.
link |
00:31:25.460
And what happened over time,
link |
00:31:26.460
it's like an evolutionary filter.
link |
00:31:27.460
It's just kind of who needs the plugin.
link |
00:31:29.460
And in fact, Sun mismanaged Java as a plugin.
link |
00:31:32.460
They thought, oh, Netscape is giving us the distribution vehicle
link |
00:31:36.460
and we don't care about the browser.
link |
00:31:38.460
It's just about getting Java out there.
link |
00:31:39.460
And that was a big miscalculation.
link |
00:31:40.460
They then tried, because Microsoft's killing Netscape
link |
00:31:43.460
after a few years, they tried getting into Microsoft.
link |
00:31:45.460
And you may remember there was a Sun Microsoft deal,
link |
00:31:48.460
which famously blew up.
link |
00:31:50.460
And Microsoft kicked Java out of Windows.
link |
00:31:54.460
And that's when they really pulled the trigger.
link |
00:31:56.460
I think they'd already evaluated it
link |
00:31:57.460
and liked it on AndersHelsberg's.net and C Sharp
link |
00:32:01.460
and decided we're going to just not have Java.
link |
00:32:03.460
We don't want any of that Sun stuff.
link |
00:32:06.460
We don't want the patent risk.
link |
00:32:07.460
We don't want, I'm not sure what all fights were about.
link |
00:32:10.460
There was some patent angle to it, I think.
link |
00:32:12.460
And up till then, Microsoft had been using Java components,
link |
00:32:16.460
like in Outlook Web Access, which had a lot of JavaScript
link |
00:32:20.460
to be a webmail, like hotmail, like user interface.
link |
00:32:22.460
They had to call the mail server through HTTP
link |
00:32:27.460
and they used a Java object to do this.
link |
00:32:30.460
And when they gave the boot to Sun,
link |
00:32:33.460
suddenly, the left hand gave the boot and the right hand said,
link |
00:32:37.460
we better do something else in Outlook Web Access.
link |
00:32:39.460
What are we going to do?
link |
00:32:40.460
And they said, let's just add an ActiveX component,
link |
00:32:43.460
which is their own native way of embedding things in languages.
link |
00:32:46.460
And it'll be what became XML HTTP request,
link |
00:32:51.460
which is now a web standard for calling asynchronously.
link |
00:32:54.460
And it's been replaced by the Fetch API
link |
00:32:56.460
and HTML5 or HTML living document.
link |
00:32:59.460
But this whole lineage goes back to Java
link |
00:33:01.460
being successfully the loser and getting kicked out.
link |
00:33:04.460
And after Microsoft kicked it out, it was a plug in
link |
00:33:07.460
and you would find it required for smart card banking
link |
00:33:10.460
in Nordic countries where that was mandated by law
link |
00:33:14.460
but really didn't get used much.
link |
00:33:16.460
Or there were pilots who used it for flight information.
link |
00:33:20.460
But Flash, which Netscape could have bought
link |
00:33:23.460
but fortunately didn't.
link |
00:33:25.460
Fortunately didn't.
link |
00:33:26.460
We would have screwed it up.
link |
00:33:27.460
What year were we talking about with Flash?
link |
00:33:29.460
I think after that PO, so it was probably late 95.
link |
00:33:32.460
Flash was around. Was it Adobe? No, it wasn't.
link |
00:33:34.460
No, it was called Future Splash.
link |
00:33:36.460
And it was these brothers, Jonathan Gay, I think his name was.
link |
00:33:39.460
He came knocking and the marketing guy at Netscape
link |
00:33:43.460
who was screening the technology partners
link |
00:33:45.460
or wannabe acquisitions was brutal
link |
00:33:47.460
and just everybody wanted to get in on the Netscape stock gravy train
link |
00:33:51.460
and he sent them packing and they ended up selling to Macromedia.
link |
00:33:54.460
And Macromedia was where Flash was created.
link |
00:33:57.460
And the good thing about Macromedia was it was a tool company.
link |
00:34:01.460
So it invested in the best ideas I think
link |
00:34:05.460
which are still somewhat lost to us of Flash.
link |
00:34:07.460
The timeline animation has sort of been immutable function over time.
link |
00:34:13.460
They had the tooling around that too.
link |
00:34:14.460
Like the Dreamweaver, there's a Flash.
link |
00:34:16.460
Flash director, there were a bunch of them.
link |
00:34:18.460
Yeah, I mean, yeah, that was a great...
link |
00:34:20.460
Flash builder was one of the last ones.
link |
00:34:22.460
These tools were used by real artists and special effects people
link |
00:34:26.460
and designers.
link |
00:34:27.460
All the restaurant websites around 2005 were done in Flash
link |
00:34:30.460
which was, you know, we were trying to do HTML5 at the same time
link |
00:34:33.460
that was the Firefox era.
link |
00:34:35.460
We were trying to make the web capable enough.
link |
00:34:37.460
You didn't need Flash, but if you recall, you go to a restaurant
link |
00:34:40.460
and it's like, this is kind of like a game or something.
link |
00:34:42.460
It's like a Flash.
link |
00:34:43.460
All the font looks small.
link |
00:34:44.460
You didn't like Flash from the beginning.
link |
00:34:46.460
This doesn't feel right.
link |
00:34:47.460
Not really.
link |
00:34:48.460
I actually admire Flash's technology.
link |
00:34:50.460
I'm pretty pragmatic about these things.
link |
00:34:52.460
I realized that, you know, it doesn't matter if your delta bad hand
link |
00:34:56.460
like JavaScript was a rush job or if you have Flash as a plugin
link |
00:35:00.460
and you can invest in the tools and make it pretty good.
link |
00:35:03.460
You should make it better for your users and grow it as best you can.
link |
00:35:07.460
And what happened with the browser due to Microsoft's monopoly abuse
link |
00:35:11.460
for which they were convicted and, you know, even after that
link |
00:35:15.460
until I think Firefox and then Chrome was people kept saying,
link |
00:35:18.460
oh, the web can't do X.
link |
00:35:20.460
Can't do Y.
link |
00:35:21.460
You have to have a plugin.
link |
00:35:22.460
You have to have a new approach.
link |
00:35:23.460
Well, we'll clean the slate and have a new web.
link |
00:35:26.460
And everyone who said that failed.
link |
00:35:28.460
And the reason they failed is because there's too much value in the web,
link |
00:35:32.460
this huge network, and the worst is better principle means that you can
link |
00:35:36.460
not only start bad, which they all sneer at, but get on first
link |
00:35:40.460
and get wide distribution and get sort of evolutionary advantage
link |
00:35:44.460
in the priority of place, but you can also improve it over time.
link |
00:35:48.460
Yes.
link |
00:35:49.460
So if you're going to improve flash and for some reason, flash is now
link |
00:35:52.460
out of favor.
link |
00:35:53.460
Steve Jobs said you can't have flash on the iPhone.
link |
00:35:55.460
That was probably the death now.
link |
00:35:56.460
Put your energy into JavaScript.
link |
00:35:58.460
And that happened, right?
link |
00:35:59.460
So we did things at Mozilla with Adobe to improve,
link |
00:36:02.460
which bought my macro media, to improve flash and to improve
link |
00:36:05.460
the version of JavaScript that was in flash.
link |
00:36:07.460
We tried to standardize that.
link |
00:36:08.460
Oh, that's right.
link |
00:36:09.460
I'm getting ahead of myself.
link |
00:36:10.460
That was ES4.
link |
00:36:11.460
That's right.
link |
00:36:12.460
Can we just rewind to the magical, like, you know,
link |
00:36:16.460
it's a special moment in the history of all of computing.
link |
00:36:19.460
We'll talk about it later, but it's arguable.
link |
00:36:22.460
It's possible that the entirety of the world will run
link |
00:36:25.460
in JavaScript at some point.
link |
00:36:27.460
It's like those days, it would be interesting if you could just
link |
00:36:31.460
describe actually zooming in on the how the cake was baked
link |
00:36:37.460
from the several days that you were working on it.
link |
00:36:41.460
What was in your mind?
link |
00:36:42.460
How much coffee were you drinking?
link |
00:36:44.460
Were you nervous?
link |
00:36:46.460
Why the freaking out?
link |
00:36:47.460
I'll try to remember it.
link |
00:36:48.460
I mean, you're right.
link |
00:36:49.460
There are these pregnant moments you see in hindsight.
link |
00:36:50.460
Maybe they're overrated, but like,
link |
00:36:52.460
Hegel sees Napoleon on horseback at Yena and says,
link |
00:36:55.460
there's the world spirit on horse.
link |
00:36:59.460
And I knew that there was a chance to do it.
link |
00:37:03.460
Mark knew and he was my, you know, executive sponsor
link |
00:37:07.460
and he was the one, you know, sort of brainstorming
link |
00:37:10.460
how the JavaScript should be right there in the page.
link |
00:37:13.460
That was important for him to say that because I thought so too.
link |
00:37:15.460
But a lot of people were like, well,
link |
00:37:17.460
you can't write programming language in the middle of the markup.
link |
00:37:19.460
And indeed there are problems if you did it naively,
link |
00:37:21.460
you'd see the code laid out as like random gibberish.
link |
00:37:24.460
So I had to figure out how to hide that.
link |
00:37:26.460
That was a challenge.
link |
00:37:27.460
Is that a breakthrough idea?
link |
00:37:29.460
I mean, so you and Mark thinking about this idea
link |
00:37:32.460
that you just inject code in the middle of the markup.
link |
00:37:35.460
Of the web page.
link |
00:37:36.460
Yeah, I was considered kind of heretical.
link |
00:37:37.460
There was an SGML guru, I forget his name,
link |
00:37:39.460
but he corresponded with me and at first he was angry.
link |
00:37:41.460
He's like, you should have used a marked section.
link |
00:37:44.460
Why didn't you use a marked section?
link |
00:37:45.460
And I said, well, SGML marked sections are not part of HTML,
link |
00:37:48.460
by the way, and they're not supported in the browser.
link |
00:37:50.460
And so I did some hack that was equivalent.
link |
00:37:52.460
And over time you could do the proper SGML thing.
link |
00:37:54.460
But eventually he came around and it was again,
link |
00:37:57.460
sort of a revolutionary necessity.
link |
00:37:59.460
It was almost like introgression, like, you know,
link |
00:38:01.460
the idea which Lynn Margulies, I think, helped get across
link |
00:38:06.460
that we have to consider mutualism and biology
link |
00:38:10.460
that maybe, you know, mitochondria were ancient prokaryotes
link |
00:38:13.460
that got into the cell and became beneficial.
link |
00:38:16.460
Somehow the same sort of thinking applies.
link |
00:38:20.460
You have to embed JavaScript in HTML.
link |
00:38:22.460
It's going to be a good virus.
link |
00:38:24.460
The code becomes data in a sense that just gets carried along.
link |
00:38:29.460
But is there the side of the,
link |
00:38:32.460
you were focusing on the Nescape at that time.
link |
00:38:34.460
Doesn't the browser have to support,
link |
00:38:36.460
interpret correctly this mix of HTML?
link |
00:38:39.460
Yeah.
link |
00:38:40.460
And whatever code?
link |
00:38:41.460
I had to hide it from old browsers, including Netscape 1.1,
link |
00:38:43.460
which was predominant then.
link |
00:38:45.460
So I used an HTML comment.
link |
00:38:47.460
But inside the container that comment lived in,
link |
00:38:49.460
the script tag, which is a new element,
link |
00:38:51.460
I could make different semantics in Netscape 2,
link |
00:38:54.460
where those HTML comment delimiters,
link |
00:38:56.460
instead of being multi line brackets,
link |
00:38:58.460
became one line, or essentially one line.
link |
00:39:00.460
So you wrote, so JavaScript was written,
link |
00:39:02.460
the programming language was written as a comment?
link |
00:39:04.460
A comment for old browsers and a set of brackets
link |
00:39:07.460
that were ignored with real code for new.
link |
00:39:09.460
And it was this two way comment hiding hack,
link |
00:39:11.460
as I called it, that was absolutely necessary
link |
00:39:13.460
for us to get off the ground.
link |
00:39:15.460
We couldn't have bootstrapped JavaScript without it.
link |
00:39:17.460
We didn't have scripts that were loaded from a separate file.
link |
00:39:19.460
The only scripts in Netscape 2 were in line in the document.
link |
00:39:22.460
What were the challenges here?
link |
00:39:24.460
Like what, you know, typing,
link |
00:39:27.460
what were the choices you were thinking about?
link |
00:39:29.460
Garbage collection?
link |
00:39:30.460
I didn't have time to write a garbage collector.
link |
00:39:32.460
So I just, I didn't at first.
link |
00:39:34.460
So the thing was using essentially arenas,
link |
00:39:37.460
or what GNU calls object pools,
link |
00:39:39.460
and just would run out of memory eventually.
link |
00:39:41.460
And I added reference counting in a hurry
link |
00:39:43.460
after the 10 days in which I hacked.
link |
00:39:45.460
So after I was in the server team doing HTTP11
link |
00:39:47.460
and thinking about the language,
link |
00:39:49.460
I finally got transferred to the client team in early May.
link |
00:39:52.460
And that's when I, you know, I got the go sign from Mark,
link |
00:39:55.460
and it was like, we can't wait,
link |
00:39:57.460
because people inside Netscape are doubting,
link |
00:39:59.460
even people inside Sun are definitely doubting.
link |
00:40:01.460
Bill Joy was the champion, but he was like alone in that,
link |
00:40:04.460
in seeing there was a role for JavaScript as the,
link |
00:40:07.460
as I call it, the sidekick language,
link |
00:40:10.460
robbing the boy hostage.
link |
00:40:12.460
Frank Miller put it in The Dark Knight Returns,
link |
00:40:15.460
that there was this silly little language
link |
00:40:18.460
that would be the glue language,
link |
00:40:19.460
and it could become important over time.
link |
00:40:20.460
And you were better off having that complementarity,
link |
00:40:23.460
that pairing of languages, just like Microsoft stacked it
link |
00:40:26.460
with Visual C++ and Visual Basic.
link |
00:40:28.460
So what was the big moment of I'm done?
link |
00:40:32.460
So I had to do a demo.
link |
00:40:34.460
I forget the dates.
link |
00:40:35.460
I think I, for a history of programming languages,
link |
00:40:38.460
paper that Alan Worsbrock did with my help,
link |
00:40:40.460
he did a lot of the writing.
link |
00:40:42.460
I think it was the 10 days from like Thursday evening
link |
00:40:47.460
through to the following weeks, you know,
link |
00:40:50.460
the whole of that week and then into Monday.
link |
00:40:52.460
Did you get sleep?
link |
00:40:53.460
Not, not enough.
link |
00:40:54.460
And I was really going fast,
link |
00:40:56.460
and I'd already used a lot of C compiler
link |
00:40:59.460
and front end compiler knowledge
link |
00:41:01.460
that I'd gained from undergraduate school.
link |
00:41:04.460
When I started getting into computing
link |
00:41:06.460
as a Renegade Physics major,
link |
00:41:09.460
people were formalizing more efficient
link |
00:41:12.460
bottom up grammars, parsers for bottom up languages.
link |
00:41:16.460
Really, LALR1 was the big thing.
link |
00:41:19.460
And I studied all this and learned how to parse them.
link |
00:41:21.460
And in the end, if you're doing C languages,
link |
00:41:24.460
you often do what Dennis Ritchie did anyway,
link |
00:41:27.460
which is the recursive descent parser.
link |
00:41:30.460
You can hand code it.
link |
00:41:31.460
And I did that for JavaScript in a blazing hurry.
link |
00:41:35.460
Mostly got it right.
link |
00:41:36.460
I didn't have precedence inversion problems or other bugs,
link |
00:41:39.460
but I copied a lot from Java NC.
link |
00:41:42.460
And I tried to keep things simple,
link |
00:41:44.460
like the equality operator in those 10 days sprint
link |
00:41:48.460
between two objects of different dynamic type said,
link |
00:41:51.460
no, they're not equal.
link |
00:41:52.460
Their types are different.
link |
00:41:53.460
They're not too different.
link |
00:41:54.460
And then after that, I had internal early adopters
link |
00:41:57.460
and they were using JavaScript to match a number
link |
00:42:01.460
against a database field that had been stringized.
link |
00:42:03.460
And they said, oh, can we just have implicit conversion?
link |
00:42:06.460
Like an idiot, I agreed.
link |
00:42:07.460
I gave them what they wanted.
link |
00:42:08.460
I was trying to please them and get adoption.
link |
00:42:10.460
And that broke what equivalence relation nature there was
link |
00:42:17.460
to the double equal.
link |
00:42:19.460
There's some edge cases with not a number
link |
00:42:22.460
that break that up too.
link |
00:42:23.460
But it really broke it.
link |
00:42:24.460
Having implicit conversions in the operator is something
link |
00:42:27.460
that people still roast me over.
link |
00:42:29.460
So let's talk about two things.
link |
00:42:31.460
One, it sounds like the comparison operator,
link |
00:42:34.460
the equality operator is the thing that you regret.
link |
00:42:38.460
So maybe can you...
link |
00:42:39.460
Making it sloppy.
link |
00:42:40.460
Making it sloppy.
link |
00:42:41.460
So what is the biggest thing you regret in those 10 days?
link |
00:42:45.460
And what is the biggest thing you're proud of?
link |
00:42:47.460
So that making it sloppy came after the 10 days.
link |
00:42:49.460
And my lesson there, which I've tweeted is,
link |
00:42:51.460
when people come to you saying,
link |
00:42:53.460
can you please make it sloppy or add this cute feature?
link |
00:42:56.460
The answer should be no.
link |
00:42:57.460
And I should have known that because I think,
link |
00:42:59.460
Nikolas, one of my heroes said,
link |
00:43:01.460
the essence of design is leaving things out.
link |
00:43:04.460
But during the 10 days, I also, like I said,
link |
00:43:06.460
I was in such a hurry, I left out garbage collection,
link |
00:43:08.460
came back to haunt me, but I got reference counting in in time
link |
00:43:11.460
that people weren't running out of memory right away
link |
00:43:14.460
on long live jobs.
link |
00:43:16.460
What happens when you don't have garbage collection
link |
00:43:17.460
and you have objects?
link |
00:43:18.460
Well, you just run out of memory.
link |
00:43:20.460
And, you know, at first you write a short script
link |
00:43:23.460
and the page doesn't last long or it doesn't do a lot
link |
00:43:25.460
and it's okay.
link |
00:43:26.460
Oh, I see. Yeah.
link |
00:43:27.460
But if you're writing a game or something
link |
00:43:28.460
and you're doing event based allocation,
link |
00:43:30.460
you run out of memory.
link |
00:43:31.460
And this was noticed in the summer of 1985
link |
00:43:33.460
and people were like, what's going on?
link |
00:43:35.460
I got to go back and do reference counting.
link |
00:43:38.460
And then the problem with reference counting is
link |
00:43:40.460
you're writing the language in the runtime in C,
link |
00:43:42.460
an unsafe language.
link |
00:43:44.460
And if you're reference counting
link |
00:43:45.460
and you overflow the counter, you mismanage it
link |
00:43:47.460
so it goes high, it gets stuck high,
link |
00:43:49.460
you leak memory again and you run out.
link |
00:43:51.460
If you underflow it, you pre memory that's still in use.
link |
00:43:55.460
And even then we knew what all the security hackers
link |
00:43:59.460
came to know that you therefore have a,
link |
00:44:02.460
potentially a remote code execution vulnerability.
link |
00:44:05.460
Because this was before things like non executable
link |
00:44:09.460
heap memory and stack defenses against taking over memory.
link |
00:44:14.460
So if you can, from the remote side,
link |
00:44:17.460
write some HTML and JavaScript that just happens
link |
00:44:19.460
to exploit a bug in memory safety,
link |
00:44:21.460
like it causes JavaScript to underflow reference counter.
link |
00:44:24.460
And the script still has its hands on that object.
link |
00:44:27.460
And it's trying to call a method on it.
link |
00:44:28.460
And there's some kind of lookup function table
link |
00:44:30.460
in the object, but you've managed to stuff the heap
link |
00:44:34.460
with strings that forge their own lookalike
link |
00:44:36.460
for the function table.
link |
00:44:39.460
You can call some other code.
link |
00:44:41.460
And this was a problem right away.
link |
00:44:43.460
So security, JavaScript up the ante.
link |
00:44:46.460
Java had this problem too, but in its own VM.
link |
00:44:48.460
And it just was, you know, a separate headache
link |
00:44:51.460
for son to worry about.
link |
00:44:53.460
We had this problem in Netscape right away.
link |
00:44:55.460
So Netscape 2 came out after my 10 days
link |
00:44:58.460
and after these, you know, follow along work
link |
00:45:00.460
to embed JavaScript better in the browser
link |
00:45:03.460
and to add garbage collection through reference counting.
link |
00:45:05.460
Really, I call it reference counting.
link |
00:45:07.460
And get it shipped.
link |
00:45:09.460
We had a bunch of dot releases where we fixed security bugs
link |
00:45:11.460
like maniacs.
link |
00:45:13.460
But what is the thing you're, you know, when you sit back
link |
00:45:17.460
on a porch and just look out into the sunset,
link |
00:45:19.460
what are you most proud of from those 10 days?
link |
00:45:21.460
I think the first class functions shines.
link |
00:45:23.460
I think especially since Java didn't have it
link |
00:45:25.460
and it was somewhat unusual.
link |
00:45:27.460
The scheme made it in somehow at the end of the day.
link |
00:45:30.460
In spirit.
link |
00:45:31.460
I mean, people complain because scheme has, you know,
link |
00:45:33.460
minimalism.
link |
00:45:34.460
It has, you know, six or seven special forms.
link |
00:45:36.460
It has hygienic macros.
link |
00:45:38.460
It has call CC.
link |
00:45:39.460
It has sort of a beautiful, complete set of forms
link |
00:45:44.460
to make the Lambda Calculus pleasant to use in practice.
link |
00:45:48.460
And JavaScript is, you know, kind of a multi paradigm
link |
00:45:53.460
or shambolic.
link |
00:45:55.460
Just in a small tangent, you mentioned Mark Andreessen.
link |
00:45:58.460
It sounds like in Bill Joy, but staying on Mark,
link |
00:46:02.460
it sounds like he had an impact on you
link |
00:46:05.460
in that he sort of believed in what you were doing there.
link |
00:46:08.460
Can you talk about, like, what role Mark had in your life?
link |
00:46:11.460
Yeah.
link |
00:46:12.460
We would meet at the Pencila Creamery in downtown Palo Alto.
link |
00:46:16.460
And Mark was just fresh out of, you know, grad school
link |
00:46:19.460
or whatever he was doing.
link |
00:46:20.460
And he was a big dude and he got fitter later.
link |
00:46:24.460
He had hair.
link |
00:46:25.460
He would order giant milkshakes and burgers.
link |
00:46:28.460
And we would meet there in brainstorm about what to do.
link |
00:46:30.460
And it was very direct because we didn't have much time.
link |
00:46:33.460
The sort of, we didn't talk about it.
link |
00:46:35.460
The implication was Microsoft was coming after us.
link |
00:46:38.460
Mark was saying things boldly, pre IPO,
link |
00:46:41.460
like Netscape plus Java kills Windows, right?
link |
00:46:43.460
It's ambitious.
link |
00:46:44.460
Make a browser programmable.
link |
00:46:46.460
It becomes the new runtime for programs.
link |
00:46:48.460
It's the meta OS or it's the replacement OS.
link |
00:46:51.460
But he still saw value in JavaScript.
link |
00:46:53.460
Yes.
link |
00:46:54.460
Even though he was saying that and Java was the big name,
link |
00:46:57.460
hence the trademark license,
link |
00:46:59.460
he saw JavaScript as important.
link |
00:47:01.460
And he even thought, what if we got,
link |
00:47:03.460
I told us another interviews, I can say,
link |
00:47:05.460
he thought, what if we had my friend Kip Hickman,
link |
00:47:07.460
who'd been at Netscape from the beginning
link |
00:47:09.460
and who was a kernel hacker at SGI when I joined,
link |
00:47:12.460
he'd started writing his own JVM before we consummated
link |
00:47:15.460
the Sun deal and got our hands on their code.
link |
00:47:17.460
And the Java compiler, Java C,
link |
00:47:20.460
which Arthur Van Hoff had written, very nice code,
link |
00:47:22.460
was all written in Java.
link |
00:47:24.460
It was self hosted or so called bootstrap.
link |
00:47:26.460
And so we could use that as soon as Kip's Java VM
link |
00:47:29.460
would run the bytecode from the Sun JVM
link |
00:47:34.460
running the self hosted compiler to emit the bytecode.
link |
00:47:37.460
So once we could bootstrap into Kip's VM,
link |
00:47:39.460
we wouldn't need Sun and Mark was like,
link |
00:47:41.460
well, maybe we can just ditch Sun with Kip's Java VM
link |
00:47:45.460
or if you're at JavaScript VM, we,
link |
00:47:47.460
now we need graphics.
link |
00:47:48.460
So Mark was thinking far ahead because he knew
link |
00:47:51.460
you could do things with HTML and images,
link |
00:47:53.460
but at some point you really want this.
link |
00:47:55.460
Like 10 NEMA graphics or three dimensional.
link |
00:47:57.460
Like even SGI had already started its downfall
link |
00:47:59.460
because the first four to VLSI team there
link |
00:48:02.460
had gone off to do 3DFX and all these other companies
link |
00:48:05.460
that made the graphics card on your PC, right?
link |
00:48:07.460
Doom was big and quake.
link |
00:48:09.460
And so we were all playing quake.
link |
00:48:10.460
I was old, so I was terrible.
link |
00:48:12.460
But why not put that graphics capability on the web?
link |
00:48:16.460
And in fact, it finally happened at Mozilla
link |
00:48:18.460
with Firefox era with Vlad Vukicovic
link |
00:48:21.460
taking OpenGLES and reflecting it as WebGL.
link |
00:48:24.460
But OpenGLES is the mobile version of OpenGL,
link |
00:48:27.460
which is a standard based on SGI GL.
link |
00:48:30.460
So there's this whole lineage of graphics libraries
link |
00:48:32.460
or really graphics languages for what became the GPU.
link |
00:48:35.460
And Mark was thinking ahead.
link |
00:48:37.460
It's like, we need graphics too.
link |
00:48:38.460
And I thought, okay, I can try to get somebody I knew
link |
00:48:40.460
at SGI, but he's a grad student at MIT.
link |
00:48:42.460
He was studying at the Barbara Liskoff.
link |
00:48:44.460
He laughed when he heard about this later.
link |
00:48:45.460
Andrew Myers, he's at Cornell long time.
link |
00:48:48.460
I think he's a full professor.
link |
00:48:49.460
And Mark said, great, well, get him.
link |
00:48:51.460
I'm not sure he's going to come.
link |
00:48:53.460
We don't have any real money, you know, stock options.
link |
00:48:55.460
We never did it.
link |
00:48:56.460
And they did the Sun Deal.
link |
00:48:58.460
So Kip Nobley put aside his own JVM
link |
00:49:00.460
and we used the Sun JVM.
link |
00:49:02.460
So that was an ambitious period.
link |
00:49:04.460
And Mark was very generative because he was pushing hard.
link |
00:49:06.460
He was ambitious and he wanted to have Netscape
link |
00:49:10.460
possibly be in control of the ball.
link |
00:49:13.460
Maybe you can speak to the dance of Netscape
link |
00:49:18.460
versus Internet Explorer.
link |
00:49:20.460
You've thrown some loving words towards Microsoft
link |
00:49:25.460
throughout this conversation.
link |
00:49:26.460
But that's a theme with, I mean, Steve Jobs
link |
00:49:28.460
had a similar sort of commentary.
link |
00:49:30.460
From a big sort of philosophical principle perspective,
link |
00:49:34.460
can you comment on like the approach
link |
00:49:36.460
that Microsoft has taken with Internet Explorer
link |
00:49:38.460
from IE1 to Edge today?
link |
00:49:41.460
Is there something that you see as valuable
link |
00:49:45.460
that they're doing in the occasional copying
link |
00:49:48.460
that kind of stuff or is it the world worse off
link |
00:49:53.460
because Internet Explorer exists?
link |
00:49:55.460
So I'm going to segment this into historical errors
link |
00:49:57.460
because I think Microsoft is today with Satya.
link |
00:49:59.460
It's quite a different company and what they're doing
link |
00:50:01.460
with Edge is different.
link |
00:50:02.460
But back then, Gates, you know, aggressive character,
link |
00:50:05.460
not really original in my view, not an originator.
link |
00:50:09.460
Steve Jobs famously said once, he doesn't have any taste
link |
00:50:12.460
and I don't mean this in a small way.
link |
00:50:14.460
There's no taste.
link |
00:50:15.460
You can see this.
link |
00:50:16.460
Apple at the time had beautiful typography
link |
00:50:19.460
and ligatures and kerning and the fonts looked great.
link |
00:50:22.460
And Windows had this sort of ugly system font
link |
00:50:25.460
that was carefully aligned with Pixel
link |
00:50:27.460
so it didn't get into anything.
link |
00:50:28.460
Why is it, I'm sorry to keep interrupting,
link |
00:50:30.460
but why was Internet Explorer winning
link |
00:50:32.460
throughout the history of these competitions?
link |
00:50:34.460
Distribution.
link |
00:50:35.460
Distribution matters more than anything.
link |
00:50:36.460
And this is why, you know, even now
link |
00:50:39.460
we're seeing in the browser worse Edge doing better
link |
00:50:41.460
because it's being foisted on people of Windows.
link |
00:50:43.460
We have Windows 10 boxes at home.
link |
00:50:45.460
Windows 7 boxes or laptops we keep running to
link |
00:50:48.460
because we don't connect them to the Internet generally.
link |
00:50:50.460
But once you have that operating system to hold,
link |
00:50:55.460
you can force, you know, Edge.
link |
00:50:57.460
And Apple did it with Safari too.
link |
00:50:59.460
It's not unique to Microsoft.
link |
00:51:01.460
That's sad.
link |
00:51:02.460
Distribution matters.
link |
00:51:03.460
And that's why I think IE was going to win.
link |
00:51:06.460
That's why everybody at Netscape felt we're doomed.
link |
00:51:09.460
This was something Michael Toy and Jamie Woodson were doomed.
link |
00:51:12.460
But for a while there, we had a chance
link |
00:51:14.460
and we innovated in Netscape too.
link |
00:51:16.460
We did a big platform push, Java and JavaScript
link |
00:51:19.460
and plugins, more plugins and, you know,
link |
00:51:23.460
more HTML table features and really started making
link |
00:51:26.460
a comparable stack out of what were pretty static web languages.
link |
00:51:30.460
And even in the beta release of Netscape 2,
link |
00:51:33.460
people were using JavaScript to build what you would call
link |
00:51:35.460
single page applications like Gmail.
link |
00:51:37.460
And they were using JavaScript locally to compute things
link |
00:51:40.460
and to call the server on a hidden frame in the background.
link |
00:51:43.460
So it was prefiguring a lot of what came later as AJAX
link |
00:51:46.460
or Dynamic JavaScript, Dynamic HTML.
link |
00:51:48.460
So people saw that.
link |
00:51:49.460
Even when they saw it.
link |
00:51:50.460
That's kind of, I don't know,
link |
00:51:52.460
but from my perspective, that seems quite brilliant.
link |
00:51:54.460
It seems like really innovative
link |
00:51:56.460
that you would have code running in the browser.
link |
00:51:58.460
It did impress me with something,
link |
00:52:00.460
which I learned later about from Eric von Hippel of MIT,
link |
00:52:03.460
which is user innovation networks, lead user effects,
link |
00:52:06.460
that throwing out JavaScript,
link |
00:52:08.460
even though we weren't doing open source,
link |
00:52:10.460
we were doing beta releases early and permissively with Netscape.
link |
00:52:13.460
Getting early developer feedback, absolutely critical.
link |
00:52:16.460
I loved it.
link |
00:52:17.460
I did some of that with SGI with some of the products I worked on,
link |
00:52:19.460
but it really came to the fore in Netscape.
link |
00:52:21.460
And that, you know, culminated in Mozilla,
link |
00:52:23.460
where you're dealing with developers all the time
link |
00:52:25.460
and early adopters, lead users.
link |
00:52:27.460
But lead users helped improve JavaScript,
link |
00:52:29.460
even in those last few betas where I could hardly change things.
link |
00:52:32.460
I was under pretty rigid change control.
link |
00:52:34.460
So we're talking about just a small collection of individuals
link |
00:52:36.460
that are just like upfront.
link |
00:52:38.460
My name is Bill Dorch. You can find his work in the Web Archive,
link |
00:52:40.460
still from 1996.
link |
00:52:42.460
It's a single page application.
link |
00:52:44.460
It's an artist gallery of mountain art.
link |
00:52:46.460
He uses JavaScript.
link |
00:52:47.460
It doesn't quite work. He uses JavaScript locally.
link |
00:52:49.460
He uses a local database.
link |
00:52:51.460
What you would think of now is JSON,
link |
00:52:53.460
but it's all pure JavaScript code,
link |
00:52:55.460
a bunch of objects being constructed.
link |
00:52:57.460
That's so cool.
link |
00:52:59.460
So how is, if you can do sort of a big sweeping
link |
00:53:02.460
progress of JavaScript,
link |
00:53:04.460
how has JavaScript changed over the years,
link |
00:53:06.460
nearly 10 days, with a quick addition of garbage collection
link |
00:53:09.460
and fixes around security?
link |
00:53:11.460
How is this evolution that now it's taken over the world?
link |
00:53:14.460
It's been a bumpy ride because the standards body
link |
00:53:17.460
got shut down after Microsoft, I think,
link |
00:53:20.460
took over the web and then felt punished
link |
00:53:22.460
by the USV Microsoft.
link |
00:53:24.460
Antitrust case.
link |
00:53:25.460
Can you speak to the standard body?
link |
00:53:27.460
That was a fun ride, too, because Netscape had taken
link |
00:53:30.460
the lead with the web and HTML innovations
link |
00:53:34.460
like frames and frame sets, tables.
link |
00:53:36.460
And the W3C was sort of off even then
link |
00:53:39.460
in SGML land heading toward XML la la land.
link |
00:53:42.460
I'm going to be a little harsh on it.
link |
00:53:44.460
What's SGML? I'm sorry.
link |
00:53:45.460
SGML was the precursor of markup language to HTML,
link |
00:53:48.460
or it was sort of the more extensible
link |
00:53:50.460
standard generalized markup language.
link |
00:53:53.460
It was a pointy brackets, but it had
link |
00:53:56.460
all sorts of elaborate syntax for doing
link |
00:53:58.460
different semantics.
link |
00:54:00.460
And this is why, I think, TBL and others
link |
00:54:03.460
who wanted to do the semantic web then
link |
00:54:05.460
took XML forward, but they had this,
link |
00:54:08.460
or some of them anyway, had this strange idea
link |
00:54:10.460
they could replace the web with XML
link |
00:54:12.460
or that they would upgrade the web to be XML.
link |
00:54:15.460
And it couldn't be done.
link |
00:54:16.460
Worse is better had concrete meaning.
link |
00:54:18.460
The web was very forgiving of HTML,
link |
00:54:21.460
including sort of minor syntax errors
link |
00:54:24.460
that could be error corrected.
link |
00:54:26.460
Error correction isn't generally done
link |
00:54:27.460
in programming languages because...
link |
00:54:29.460
That's another amazing thing about HTML.
link |
00:54:31.460
It's more like biology than programming.
link |
00:54:34.460
Exactly.
link |
00:54:35.460
And so, XML was, in its standard form,
link |
00:54:39.460
super strict and could never have admitted
link |
00:54:41.460
the kind of users who were committing these errors.
link |
00:54:44.460
And the funniest part was Microsoft said,
link |
00:54:46.460
hey, we're doing XML, but the way they put it
link |
00:54:48.460
in Internet Explorer under the default media type,
link |
00:54:50.460
put it through the HTML error corrector.
link |
00:54:53.460
Oh, wow.
link |
00:54:54.460
So they kind of bastardized it to make it
link |
00:54:56.460
popular and usable and accessible.
link |
00:54:58.460
And so, XML as a pure, you know,
link |
00:55:02.460
thing was never going to take over.
link |
00:55:04.460
And what W3C was kind of not fully functional
link |
00:55:07.460
because Nescape wasn't cooperating with them.
link |
00:55:09.460
We thought about where to take JavaScript
link |
00:55:11.460
and we realized our standards guru Carl Cargo
link |
00:55:14.460
realized there was a European standards body
link |
00:55:17.460
that had already given Microsoft fits
link |
00:55:19.460
by standardizing parts of the Windows 3.1 API,
link |
00:55:22.460
which European governments insisted on.
link |
00:55:24.460
They said, Microsoft, we can't use your operating system
link |
00:55:26.460
without some standards.
link |
00:55:27.460
And Microsoft said, you know, here's our docs.
link |
00:55:29.460
And the government said, no, we need a European standard.
link |
00:55:32.460
So this body called the European Computer Manufacturers Association,
link |
00:55:35.460
ECMA, which eventually became global
link |
00:55:38.460
and became a proper noun instead of an acronym.
link |
00:55:40.460
Right.
link |
00:55:41.460
It's just one capital E now with a lowercase CMA.
link |
00:55:44.460
Right.
link |
00:55:45.460
And as one of the early Microsoft guys I met
link |
00:55:47.460
when we first convened a working group to talk
link |
00:55:50.460
about JavaScript said, it sounds like a skin disease.
link |
00:55:52.460
But it gave, I mean, maybe you'll speak to that,
link |
00:55:55.460
but it gave the name to JavaScript of ECMA script.
link |
00:55:58.460
That was the standard name because Java was a trademark of Suns.
link |
00:56:02.460
They were so aggressive, they were sending cease and desist letters
link |
00:56:05.460
to people whose middle European heritage meant their surname was Javonco
link |
00:56:10.460
and they called their website Javonco.com
link |
00:56:12.460
and Sun would send them a letter saying, you're using JAVA
link |
00:56:15.460
at the start of your domain name.
link |
00:56:16.460
You must cease and desist.
link |
00:56:18.460
I love marketing more than anything else in this world.
link |
00:56:21.460
So ECMA script and now is popularly named as ES plus version.
link |
00:56:27.460
I would say people use JS more than anything.
link |
00:56:29.460
People still say JavaScript.
link |
00:56:30.460
JavaScript is in all the books.
link |
00:56:32.460
So I mean, when you're referring to, it's usually JavaScript
link |
00:56:34.460
and when you want to refer to a version of JavaScript,
link |
00:56:36.460
you'll say ES6, ES5.
link |
00:56:38.460
Yes.
link |
00:56:39.460
Or now they've gone to years, which is kind of confusing
link |
00:56:41.460
because it's an offset of 2009, ES6, ES 2016.
link |
00:56:50.460
Yeah, it doesn't match the years perfectly.
link |
00:56:52.460
Yeah, so what were the choices made
link |
00:56:55.460
and how did JavaScript evolve here?
link |
00:56:57.460
So we took this new standards body,
link |
00:57:00.460
which we thought was sort of a proven record of standing up to Microsoft.
link |
00:57:05.460
But Microsoft sent a lot of people.
link |
00:57:07.460
They sent some people who were pretty good
link |
00:57:10.460
and then when they realized that I was there and Netscape
link |
00:57:13.460
was not going to just bend over and do whatever they wanted,
link |
00:57:16.460
they sent somebody really good.
link |
00:57:17.460
And this smart guy, he did a lot of the work on the first draft of the spec.
link |
00:57:20.460
Sean Katzenberger, he's left Microsoft.
link |
00:57:23.460
He even did what I sort of did.
link |
00:57:25.460
He told his bosses, stop bugging me to do other things.
link |
00:57:28.460
I'm focused on this because it took a lot of focused work
link |
00:57:30.460
to create the first draft of the spec.
link |
00:57:32.460
And I was still holding, I was spending almost all the plates.
link |
00:57:35.460
I had like part time help in certain areas
link |
00:57:37.460
and on the front end integrations, I had the front end guys.
link |
00:57:40.460
But I couldn't take as much time as Sean was to write the draft spec,
link |
00:57:43.460
but I had to participate because I was essentially helping write down
link |
00:57:46.460
what the language did.
link |
00:57:47.460
And in areas where we didn't like what it did
link |
00:57:49.460
and Microsoft didn't agree, we sometimes got away with slight changes.
link |
00:57:54.460
And that's the story of standards.
link |
00:57:55.460
You have different implementations.
link |
00:57:57.460
And depending on their market power, they interoperate
link |
00:58:00.460
where you have agreement and where they don't,
link |
00:58:02.460
the dominant one usually sets the de facto standard.
link |
00:58:05.460
And then you should probably reflect that into the de jure standard.
link |
00:58:08.460
And this happened with JavaScript.
link |
00:58:10.460
Over time as Netscape went down and Microsoft went up,
link |
00:58:13.460
we did the first edition of the standard codified in 1997 in France.
link |
00:58:18.460
We had a trip to Nice, which was very memorable.
link |
00:58:21.460
For any interesting reason or just because it's Nice?
link |
00:58:24.460
And ECMAS European and IBM and others were, you know, there.
link |
00:58:28.460
Mike Cowleshawn, IBM fellow was a Britisher.
link |
00:58:31.460
And the guy who ran ECMAS at the time,
link |
00:58:34.460
Jan van den Belb, was quite a raconteur and a very fun guy.
link |
00:58:38.460
And he had us out for, you know, the great, you know,
link |
00:58:41.460
the Fuitimer, the Bouillabaisse.
link |
00:58:43.460
Was the standardization process beautiful or painful
link |
00:58:46.460
that those early days you as a designer of the language?
link |
00:58:48.460
It was painful because it was rushed.
link |
00:58:50.460
Now Guy Steele was contributed by Sun.
link |
00:58:52.460
So even more than Sean, you had this giant brain Guy Steele
link |
00:58:55.460
helping bringing some of that scheme magic.
link |
00:58:57.460
He even brought Richard Gabriel for fun.
link |
00:58:59.460
And Richard wrote the fourth clause of the ECMAS standard,
link |
00:59:02.460
which was kind of an intro to what JavaScript is all about.
link |
00:59:05.460
So we had some really good people and we didn't fight too much.
link |
00:59:09.460
There was a lot of tension where I was fixing bugs
link |
00:59:11.460
and I was late to a meeting and Sean Katzenberger
link |
00:59:13.460
or Microsoft was actually mad, like where is he?
link |
00:59:15.460
We need him.
link |
00:59:16.460
And when I got there, I saw that only he saw this sort of
link |
00:59:20.460
off by one bug in somewhere in the spec.
link |
00:59:22.460
And then I saw it too.
link |
00:59:23.460
And I said, there's a fence post bug there.
link |
00:59:25.460
And then we kind of locked eyes and we realized
link |
00:59:27.460
we were on the same page and we kind of, he wasn't mad anymore.
link |
00:59:30.460
What were the features that are being, like,
link |
00:59:32.460
struggled over and debated and thought about?
link |
00:59:34.460
It was mainly writing down what worked
link |
00:59:36.460
and what we thought should work in the edge cases
link |
00:59:38.460
that didn't interoperate or that seemed wrong.
link |
00:59:41.460
But we were already laying the groundwork
link |
00:59:43.460
for the future editions that I was already implementing.
link |
00:59:46.460
I was still trying to lead the standard
link |
00:59:48.460
by using the dominant market power to write the code
link |
00:59:51.460
that actually shipped.
link |
00:59:52.460
So the de facto standard would lead the deserter standard.
link |
00:59:54.460
And I was putting in the missing, you know,
link |
00:59:57.460
function forms that I didn't have time for in the 10 days.
link |
01:00:00.460
So this is the engineering mindset versus the theoretician.
link |
01:00:03.460
So you didn't want to create the perfect language,
link |
01:00:05.460
but one that was the popular and shipped and all that kind of stuff.
link |
01:00:07.460
And you could say there was, I was standing out of the shoulders of giants.
link |
01:00:09.460
So there was a staged process where I had to hold back things
link |
01:00:12.460
that were well designed by others in other languages
link |
01:00:15.460
that I could imitate, but I couldn't do them all in the 10 days.
link |
01:00:18.460
So they came in in 1996 and 97.
link |
01:00:22.460
And they came into the third edition of the standard,
link |
01:00:24.460
which was finalized in 1999.
link |
01:00:27.460
But at that point, Netscape had been sold to AOL
link |
01:00:30.460
and was, which was a decent exit considering
link |
01:00:32.460
and, you know, had previously been mercilessly crushed.
link |
01:00:36.460
Netscape was selling the browser along with server software
link |
01:00:39.460
that it had acquired after its IPO.
link |
01:00:42.460
And Microsoft was just underpricing it.
link |
01:00:44.460
So there was no way to compete with that.
link |
01:00:47.460
Microsoft was also, you know,
link |
01:00:49.460
making Internet Explorer the default browser in Windows,
link |
01:00:52.460
which is called tying in antitrust law.
link |
01:00:55.460
And they were doing even more brutal things.
link |
01:00:57.460
There was a famous investor.
link |
01:00:59.460
He did very well on Google.
link |
01:01:00.460
So he's a billionaire, Ram Shri Ram.
link |
01:01:01.460
And he was sales guy or head of sales at Netscape.
link |
01:01:04.460
And he got off the phone looking ashen faced
link |
01:01:07.460
after a compact call and said,
link |
01:01:09.460
Microsoft just told us they're going to pull
link |
01:01:11.460
our Windows license if we ship Netscape
link |
01:01:13.460
as the default browser.
link |
01:01:14.460
Wow.
link |
01:01:15.460
So there is some bullying going on.
link |
01:01:17.460
It was totally material in the antitrust case.
link |
01:01:19.460
But JavaScript escaped into the standard setting
link |
01:01:22.460
where there was fairly good cooperation.
link |
01:01:24.460
Microsoft had a really good guy on it
link |
01:01:26.460
and, you know, Guy Steele was there for a time
link |
01:01:28.460
and there was some good work.
link |
01:01:30.460
But after the antitrust case and
link |
01:01:33.460
Netscape kind of dissolving into AOL
link |
01:01:36.460
and not really going anywhere quickly,
link |
01:01:38.460
Mozilla took years to really bring up.
link |
01:01:41.460
The standard froze.
link |
01:01:42.460
And by 2003, even though they'd been sort of
link |
01:01:44.460
noodling around with advanced versions,
link |
01:01:46.460
JavaScript 2, I'd given the keys to the kingdom
link |
01:01:49.460
to another MIT grad, Baltimore Horwatt.
link |
01:01:52.460
Very big brain.
link |
01:01:53.460
It's still at Google, I think.
link |
01:01:54.460
He won the Putnam in 86.
link |
01:01:56.460
So he's, you know, very mathematical.
link |
01:01:58.460
He designed this successor language,
link |
01:02:01.460
JavaScript 2, but it only showed up in mutated form
link |
01:02:06.460
in Microsoft's ASP.NET server side.
link |
01:02:09.460
And it didn't last there.
link |
01:02:10.460
And it showed up in Flash.
link |
01:02:12.460
And that's what became ActionScript 3.
link |
01:02:14.460
ActionScript.
link |
01:02:15.460
Interesting.
link |
01:02:16.460
And then Flash was declined.
link |
01:02:18.460
And so how did we arrive at ES6 where it's like,
link |
01:02:22.460
there's so many, where everyone,
link |
01:02:24.460
okay, there's this history of JavaScript
link |
01:02:26.460
that people were just like, cool when you're like
link |
01:02:29.460
having beers to talk crap about JavaScript.
link |
01:02:32.460
Everyone loves to hate, like people who are married
link |
01:02:34.460
say, ah, marriage sucks, is they just want to get,
link |
01:02:37.460
let off some steam, even though everyone uses the language.
link |
01:02:40.460
But ES6, it's become this like reputed,
link |
01:02:45.460
like it fixed major pain points, I think.
link |
01:02:48.460
It added things to the language and added something
link |
01:02:51.460
that was already ES5 strict mode,
link |
01:02:53.460
but made it implicit in class bodies and module bodies.
link |
01:02:56.460
It was a big jump, but it accumulated some of the ES4 designs
link |
01:03:00.460
that we'd done with Adobe for what we hoped would be
link |
01:03:04.460
the fourth edition of ECMAScript,
link |
01:03:06.460
that were supposed to fold in some of these old JavaScript
link |
01:03:09.460
two ideas that had come into ActionScript 3.
link |
01:03:12.460
So you look at the family tree and you see these forks
link |
01:03:14.460
and the main ones are the ones that go into Adobe Flash,
link |
01:03:19.460
acquired from Acromedia, and the one that went into the
link |
01:03:22.460
server side of Microsoft's stack, which kind of died.
link |
01:03:26.460
And then trying to bring them back into the standard
link |
01:03:28.460
and not quite succeeding ES4 was mothballed,
link |
01:03:31.460
but all the good parts that everyone liked made it into ES6.
link |
01:03:35.460
And so that was a success.
link |
01:03:36.460
And I said earlier, I had the wrong year.
link |
01:03:38.460
I think it's 2015, so it's off by.
link |
01:03:40.460
For ES6?
link |
01:03:41.460
Yeah, it was done, finalized in 2015.
link |
01:03:43.460
It took a little longer than we hoped,
link |
01:03:45.460
but because ES5 was 2009 and that was a smaller increment
link |
01:03:49.460
from ES3.
link |
01:03:51.460
We skipped four again.
link |
01:03:52.460
We mothballed.
link |
01:03:53.460
And we had a split in the committee where some people said,
link |
01:03:56.460
ES4 is too big.
link |
01:03:57.460
We're going to work on incremental improvements,
link |
01:03:59.460
no new syntax in particular, they promised.
link |
01:04:02.460
Not quite true, but they added a bunch of interesting APIs.
link |
01:04:06.460
Alan Weir Sprock, my coauthor of that Hubble paper.
link |
01:04:09.460
And he was at Microsoft at the time.
link |
01:04:11.460
I ended up hiring Mozilla.
link |
01:04:12.460
He wanted to get to Mozilla and keep doing the sort of
link |
01:04:16.460
editor job of the JavaScript standard ECMAScript.
link |
01:04:21.460
And when we got ES6 done, it was a little late 2015,
link |
01:04:25.460
and we switched to year numbers.
link |
01:04:27.460
People still call it ES6.
link |
01:04:28.460
I call it ES6.
link |
01:04:29.460
But if you remember, off by nine plus 2000.
link |
01:04:32.460
Yeah, ES6 is such a big job.
link |
01:04:35.460
Like you said, there's a thread that connects all of it,
link |
01:04:38.460
but ES6 is when it became this language that almost feels ready
link |
01:04:42.460
to take over the world completely.
link |
01:04:44.460
More programming in the large features,
link |
01:04:46.460
more features you need for larger teams.
link |
01:04:48.460
Software engineering.
link |
01:04:49.460
Microsoft did something smart, too.
link |
01:04:51.460
They, Anders and company, Luke Hoban,
link |
01:04:54.460
who's left Microsoft, also did TypeScript.
link |
01:04:57.460
And they realized something,
link |
01:04:59.460
I think that Galat Braka's also popularized,
link |
01:05:01.460
and he was involved in Darted.
link |
01:05:04.460
Google, if you don't worry about soundness in the type system,
link |
01:05:08.460
you don't try to enforce the type checks at runtime in particular,
link |
01:05:11.460
just use it as sort of a warning system, a tool time.
link |
01:05:13.460
You can still have a lot of value for developers,
link |
01:05:16.460
especially in large projects.
link |
01:05:18.460
So TypeScript has been a roaring success for Microsoft.
link |
01:05:20.460
What do you think about TypeScript?
link |
01:05:23.460
Is it adding confusion, or is it ultimately beneficial?
link |
01:05:26.460
I think it's beneficial.
link |
01:05:27.460
Now, it's technically a super set of JavaScript.
link |
01:05:30.460
So of course I love it, right?
link |
01:05:32.460
The shortest JavaScript program is still a TypeScript program.
link |
01:05:35.460
Any JavaScript program is a TypeScript program,
link |
01:05:37.460
which is brilliant because then you can start incrementally adding
link |
01:05:40.460
type annotations, getting warnings, learning how to use them.
link |
01:05:43.460
Microsoft had to kind of look around corners at the standard's body
link |
01:05:47.460
and guess how their version of modules or decorators should work.
link |
01:05:52.460
And the standard's body then may change things a bit.
link |
01:05:55.460
So I think they're obligated with TypeScript,
link |
01:05:57.460
either to carry their own version or to bring it back
link |
01:06:00.460
with incompatible changes toward the standard over time.
link |
01:06:02.460
And I think they've played generally fair there.
link |
01:06:05.460
There's some sentiment that why don't they standardize TypeScript?
link |
01:06:07.460
Well, they've been clear they don't want to.
link |
01:06:09.460
They have a proprietary investment.
link |
01:06:11.460
It's valuable.
link |
01:06:12.460
They've controlled the ball.
link |
01:06:13.460
And in some ways, you can say the same thing to any of the other
link |
01:06:16.460
big companies in the standard's body.
link |
01:06:18.460
Why doesn't Google standardize its stuff?
link |
01:06:20.460
So you think it'll continue being like a kind of a dance partner
link |
01:06:23.460
to JavaScript, to the base JavaScript?
link |
01:06:25.460
There's a hope that at some point, if they keep reconverging it
link |
01:06:28.460
and the standard doesn't break them and goes in a good direction,
link |
01:06:31.460
we will get at least the annotations syntax
link |
01:06:34.460
and some semantics around them.
link |
01:06:36.460
Because when you're talking about type annotations,
link |
01:06:38.460
they're generally on parameters and return values
link |
01:06:41.460
and variable declarations.
link |
01:06:43.460
They're cast operators.
link |
01:06:45.460
You want that syntax to be reserved and you want it to work
link |
01:06:48.460
the same in all engines.
link |
01:06:49.460
And this is where ideas like Gilad's Plugable Type Systems
link |
01:06:52.460
might be good, though then you could create the same problem
link |
01:06:55.460
you have with Blisp and Scheme where there's a bunch of macro libraries
link |
01:06:58.460
and they don't agree and you have conflicts between them.
link |
01:07:01.460
But the Plugable Type Systems could be one way to standardize this.
link |
01:07:04.460
What do you think about the giant ecosystem of frameworks in JavaScript?
link |
01:07:09.460
It feels like, because I mean, this is a side effect
link |
01:07:13.460
of how many people use JavaScript.
link |
01:07:15.460
A lot of entrepreneurial spirit, like create their own JavaScript frameworks
link |
01:07:21.460
and they're actually awesome in all different ways.
link |
01:07:26.460
And this is an interesting question about almost like philosophically
link |
01:07:32.460
about biological system and evolution and all that kind of stuff.
link |
01:07:35.460
Do you see that as good or should some of them die out quicker?
link |
01:07:39.460
I think maybe they should.
link |
01:07:41.460
Now, jQuery was a very clever thing.
link |
01:07:44.460
John Resick made this library that was sort of query and do
link |
01:07:47.460
and blended sort of CSS selector syntax with JavaScript
link |
01:07:50.460
sort of object graph or DOM querying and made it very easy
link |
01:07:53.460
for people to do things almost like they were learning jQuery
link |
01:07:56.460
as its own language, domain specific language.
link |
01:07:58.460
And that I think reflected in part the difficulty of using
link |
01:08:03.460
the document object model, these APIs that were originally designed
link |
01:08:06.460
in the 90s for Java as well as JavaScript.
link |
01:08:08.460
They're a very object oriented or even procedural.
link |
01:08:11.460
They're very kind of verbose.
link |
01:08:13.460
And it took like a constructor column,
link |
01:08:15.460
three different, you know, hokey pokey dances to do something
link |
01:08:18.460
whereas in jQuery, it's just one line, right?
link |
01:08:20.460
So that fed back finally into the standards.
link |
01:08:23.460
It didn't mean we standardized jQuery.
link |
01:08:25.460
It wasn't quite that concise.
link |
01:08:27.460
You find now with the modern standards
link |
01:08:29.460
that we were working on in the HTML5 sort of effort
link |
01:08:34.460
that things became simpler, the fetch API
link |
01:08:36.460
and the query selector API, document query selector.
link |
01:08:39.460
A lot of things can be done now in raw JavaScript
link |
01:08:42.460
that you would make more concise and terse in jQuery,
link |
01:08:46.460
but it's not bad. It's pretty good.
link |
01:08:48.460
Whereas in the old DOM of 15 years ago, it was just too verbose.
link |
01:08:51.460
So maybe the frameworks were born kind of because JavaScript
link |
01:08:56.460
lacked some of the features of jQuery.
link |
01:08:58.460
And so, like, now that JavaScript is swallowing
link |
01:09:02.460
what jQuery was, then the frameworks will,
link |
01:09:04.460
only the ones that truly add value will stick around
link |
01:09:07.460
and the other ones will die out.
link |
01:09:09.460
And that highlights also this division between the core language
link |
01:09:11.460
JavaScript, which can show up in other places
link |
01:09:13.460
like Node.js on the server side
link |
01:09:15.460
and the browser specific APIs
link |
01:09:17.460
or the document object model APIs,
link |
01:09:19.460
which are even managed by the W3C,
link |
01:09:21.460
the standards body that was off in XML,
link |
01:09:23.460
and we were doing real JavaScript standards in ECMA.
link |
01:09:26.460
And you have this division of labor,
link |
01:09:29.460
division of responsibility and division of style
link |
01:09:32.460
and sort of aesthetics and also speed.
link |
01:09:36.460
So the document object model really stagnated
link |
01:09:39.460
after Microsoft kind of deinvested in the web.
link |
01:09:43.460
And Microsoft did something in their haste
link |
01:09:45.460
in the spirit of Netscape, doing things quickly
link |
01:09:47.460
and getting on first called DHTML
link |
01:09:49.460
and some of their innovations that were like
link |
01:09:51.460
an alternative document object model
link |
01:09:53.460
didn't really get standardized until HTML5
link |
01:09:56.460
when we pragmatists set up for at the time
link |
01:09:59.460
Ian Hixon, he went to Google,
link |
01:10:01.460
Apple and Mozilla said,
link |
01:10:03.460
let's XML is not going to replace HTML.
link |
01:10:06.460
HTML4 is too old.
link |
01:10:08.460
Let's standardize HTML5 based on all this good stuff
link |
01:10:11.460
including that DHTML variant, dynamic HTML5.
link |
01:10:14.460
HTML5, it feels like to me, maybe you can correct me
link |
01:10:17.460
like a beautiful piece of design work.
link |
01:10:20.460
It's not often with web stuff,
link |
01:10:23.460
you have this breath of just like,
link |
01:10:26.460
oh, whoever did this, they just feels good.
link |
01:10:30.460
What are your thoughts about HTML?
link |
01:10:33.460
Am I being too romantic?
link |
01:10:35.460
A little bit.
link |
01:10:36.460
Are there fundamental flaws to it that I'm just not aware of?
link |
01:10:39.460
My old friend Hix, he did a great job.
link |
01:10:42.460
He was another renegade physics student
link |
01:10:44.460
and he was basically a QA guy at Opera,
link |
01:10:47.460
but he obviously trained physics student
link |
01:10:51.460
and someone who could write a Britisher.
link |
01:10:54.460
He developed test suites
link |
01:10:57.460
and he started thinking about them more axiomatically.
link |
01:11:00.460
Now, this can be good because you can sort of
link |
01:11:02.460
systematize in a way that makes a better HTML
link |
01:11:05.460
or you can get caught in the pragmatism of saying,
link |
01:11:07.460
well, we have to handle all these edge cases
link |
01:11:09.460
so we're just going to have sort of a test matrix.
link |
01:11:12.460
And if the matrix is large, it will not be beautiful
link |
01:11:14.460
by many people's likes.
link |
01:11:15.460
Everyone likes to minimize along their preferred dimensions,
link |
01:11:18.460
the seven special forms in scheme or whatever.
link |
01:11:21.460
But reality is HTML needs to be big.
link |
01:11:26.460
It's kind of shambolic.
link |
01:11:27.460
It's a creative, multi paradigm.
link |
01:11:29.460
And Hix, he did a good job, I would say, with a bunch of it.
link |
01:11:33.460
Other people came in, in the spirit of Ian Hix,
link |
01:11:36.460
and to do HTML5 work.
link |
01:11:38.460
And they've carried on that effort.
link |
01:11:40.460
So it's a mix of pragmatism,
link |
01:11:42.460
de facto standards from the past being sort of
link |
01:11:45.460
combined or written down for the first time
link |
01:11:47.460
and then rethought in a way that has a simpler syntax,
link |
01:11:50.460
like the Fetch API instead of XML HTTP request.
link |
01:11:53.460
This video, too, as well.
link |
01:11:55.460
It ultimately, it feels like maybe you can correct me.
link |
01:11:57.460
It feels like it was the nail in the coffin of Flash.
link |
01:12:00.460
Steve Jobs saying no Flash on the iPhone, in my opinion,
link |
01:12:03.460
was the actual stake to the heart.
link |
01:12:05.460
But, well, I'm not sure what trope you want to use.
link |
01:12:08.460
Flash was a zombie until just this year, right?
link |
01:12:11.460
Or last year.
link |
01:12:12.460
I think last year was the end of Flash and main browsers.
link |
01:12:15.460
But Jobs really did the death blow.
link |
01:12:17.460
And yet, you're right.
link |
01:12:20.460
We had to make HTML5 competitive.
link |
01:12:22.460
I still don't think we got that beautiful timeline animation.
link |
01:12:26.460
The timeline things.
link |
01:12:27.460
You like the time.
link |
01:12:28.460
I mean, me, from, you know, I used to animate
link |
01:12:30.460
all kinds of stuff inside Flash.
link |
01:12:32.460
Plus, there's a programming element.
link |
01:12:34.460
It was a little bit, I don't know if you commented on that,
link |
01:12:37.460
but to me, it was a little bit like go to statement,
link |
01:12:40.460
like in a sense that there's a little bit too chaotic.
link |
01:12:44.460
Like it didn't, that OCD part of me as a programmer
link |
01:12:47.460
wasn't satisfied by Flash.
link |
01:12:49.460
It feels like there's bugs that were introduced
link |
01:12:52.460
through the animation process that I couldn't debug easily.
link |
01:12:55.460
Yes, I heard that too.
link |
01:12:56.460
I didn't use it.
link |
01:12:57.460
So I'm doing the grasses greener thing here.
link |
01:12:59.460
The thing I liked about the animation model
link |
01:13:01.460
was that it was this immutable function of time.
link |
01:13:03.460
So you could time warp and you could,
link |
01:13:05.460
if you dodged these bugs or worked carefully,
link |
01:13:07.460
you could really make it sing in ways
link |
01:13:09.460
that I think still a little challenging
link |
01:13:11.460
with the web animation standards,
link |
01:13:14.460
or just using Rock Canvas and WebGL.
link |
01:13:17.460
But there's so many tools now that maybe it doesn't matter.
link |
01:13:20.460
And yet we had to, you know, do video.
link |
01:13:23.460
We had to do WebGL and then evolve it.
link |
01:13:27.460
We had to do web audio.
link |
01:13:29.460
But once we did all these things that helped Flash die
link |
01:13:33.460
thanks to Steve Gobs, we had something that
link |
01:13:38.460
people didn't realize.
link |
01:13:39.460
We had that vision that Mark and Jason had,
link |
01:13:41.460
this graphics capable to the metal portable runtime.
link |
01:13:46.460
And we at Mozilla realized this,
link |
01:13:49.460
and we saw JavaScript was something that you could compile to.
link |
01:13:53.460
Adobe had somebody in the Adobe Labs doing this too.
link |
01:13:55.460
He had a project called Alchemy.
link |
01:13:57.460
We had somebody who's now at Google,
link |
01:13:59.460
Alon Zakai, who did his own LLVN based compiler
link |
01:14:03.460
that would take C or C++ and it would emit JavaScript.
link |
01:14:06.460
I think this is crazy going from this sort of machine types,
link |
01:14:09.460
low level, you know, controlled memory allocation language
link |
01:14:12.460
to this garbage collected, dynamically typed,
link |
01:14:15.460
high level, higher level language.
link |
01:14:17.460
But Alon sort of just phenomenologically carved nature of the joint
link |
01:14:22.460
and found the forms that were fast in JavaScript.
link |
01:14:25.460
And then with Dave Herman, who I'd recruited from
link |
01:14:28.460
Northeastern University, who was a type theorist,
link |
01:14:31.460
and Luke Wagner, who's still at Mozilla,
link |
01:14:33.460
who was the compiler guy and the JIT guy,
link |
01:14:36.460
they figured out how to codify what Alon had done
link |
01:14:39.460
into a typed subset of JavaScript called Asm.js.
link |
01:14:43.460
And this is a strange thing to think about
link |
01:14:45.460
because it doesn't have new syntax.
link |
01:14:47.460
The types are casts that occur in
link |
01:14:51.460
dominator positions in the control flow graph.
link |
01:14:53.460
So it's like a hack on JavaScript and it's a subset.
link |
01:14:56.460
It uses those bitwise operators that I talked about
link |
01:14:58.460
copying from Java to basically cast
link |
01:15:02.460
numeric types, which are double precision flowing point,
link |
01:15:05.460
into integers.
link |
01:15:06.460
And so inside JavaScript, in the kernel semantics,
link |
01:15:10.460
are integers.
link |
01:15:11.460
And if you use these operators, if a compiler
link |
01:15:13.460
emits them in the right places, you can then treat them
link |
01:15:16.460
as typed values, typed memory locations.
link |
01:15:19.460
And you can type check your program.
link |
01:15:21.460
You can not only type check it, you can compile it.
link |
01:15:24.460
And this is all in sort of linear time.
link |
01:15:26.460
Oh, and you can compile it to have deterministic performance.
link |
01:15:30.460
It doesn't touch the garbage collector.
link |
01:15:32.460
It calls a bunch of functions that come from the C functions
link |
01:15:35.460
or C++ code that you're compiling.
link |
01:15:37.460
And you can make the Epic Unreal Engine go
link |
01:15:41.460
in 30 frames a second.
link |
01:15:43.460
And when we did this in 2013 in the fall,
link |
01:15:46.460
Tim Sweeney, I met, didn't think it could be done quickly.
link |
01:15:49.460
He thought it would take years.
link |
01:15:51.460
And the team went to Raleigh to Epic and in four days
link |
01:15:55.460
they had Unreal Engine ported by pressing a compile button.
link |
01:15:59.460
But they had to have WebGL, which came from OpenGL.
link |
01:16:02.460
Yes, it came from OpenGL, which came from Silicon GraphicsGL.
link |
01:16:05.460
They had to have WebAudio so they could map OpenAL, which
link |
01:16:09.460
was another audio library standard, to WebAudio, which
link |
01:16:11.460
was kind of a Chrome idiosyncratic thing.
link |
01:16:14.460
But they could make it work.
link |
01:16:16.460
And they had to have Asmjs for fast C++ to JavaScript.
link |
01:16:20.460
And if you didn't have that fast compiler step,
link |
01:16:24.460
the JavaScript you'd write by hand trying to do
link |
01:16:27.460
an Unreal game would be too big and too slow.
link |
01:16:29.460
It would touch the garbage collector.
link |
01:16:31.460
It would not keep up with 30 frames a second on the hardware,
link |
01:16:34.460
2013 hardware.
link |
01:16:35.460
So we demoed that at, this must have been fall 2012
link |
01:16:39.460
now that I think about it.
link |
01:16:40.460
Because we demoed it at GDC Game Developer Conference 2013.
link |
01:16:44.460
And people were stunned.
link |
01:16:45.460
It's like Unreal Engine, Unreal Tournament running in my browser
link |
01:16:48.460
window.
link |
01:16:48.960
No plug in, no flash, no Java, no.
link |
01:16:52.460
So where does the early days of, because JavaScript now
link |
01:16:55.460
is able to run basically on par with a lot of the C++?
link |
01:17:01.460
Yeah.
link |
01:17:01.960
And even before then, you had the fast JavaScript VMs.
link |
01:17:04.460
In 2008, when Chrome came out, just before it came out,
link |
01:17:07.460
Mozilla, my friend Andreas Gallo and I, and others
link |
01:17:11.460
hacked out Trace Monkey, our trace based JIT.
link |
01:17:14.460
The Squirrel Fish Extreme team at Apple did their JIT.
link |
01:17:18.460
And we were all competing on these crazy performance
link |
01:17:20.960
benchmarks.
link |
01:17:21.460
It was a little bit too much tuning to the benchmark.
link |
01:17:23.460
But JavaScript started getting fast.
link |
01:17:25.460
And developers started noticing it.
link |
01:17:26.460
But it was still kind of its own high level language
link |
01:17:29.460
with garbage collection.
link |
01:17:30.460
The Asm.js step helped us go further.
link |
01:17:33.460
Because until we really proved the concept, people were still
link |
01:17:37.460
saying, well, JavaScript's OK.
link |
01:17:39.460
It's getting faster thanks to V8.
link |
01:17:41.460
Everybody gave Google credit, especially Google.
link |
01:17:43.460
But we need something to kill flash.
link |
01:17:44.460
Let's use the portable native client code that Google
link |
01:17:47.460
had acquired, native client, which is a separate lineage
link |
01:17:51.460
that we're taking basically C code, compiling it into a
link |
01:17:54.460
software fault isolated container or some sort of using
link |
01:17:57.460
some kind of virtualization technique.
link |
01:17:59.460
And maybe it can even be in process and still be memory
link |
01:18:02.460
save.
link |
01:18:02.460
That would be awesome.
link |
01:18:03.460
But they ended up using process isolation too.
link |
01:18:05.460
And that kind of weakened it.
link |
01:18:06.460
And in the end, it was like, portable native client, OK,
link |
01:18:09.460
meet the new boss.
link |
01:18:10.460
Name is the old boss.
link |
01:18:11.460
This is the Google Flash, right?
link |
01:18:13.460
But when we did Asm.js and we showed Unreal Engine working,
link |
01:18:17.460
I think it was only a matter of time before Google threw
link |
01:18:19.460
in the towel.
link |
01:18:20.460
Everybody agreed in the spring of 2015, we're going to take
link |
01:18:23.460
what was proven by Asm.js and make a new syntax, a binary
link |
01:18:27.460
syntax that's efficient, that loads into the same JavaScript
link |
01:18:30.460
VM that JavaScript loads into.
link |
01:18:32.460
So there'll be two source languages, one VM, very important,
link |
01:18:35.460
one garbage collector, one memory manager, one set of
link |
01:18:38.460
compiler stages.
link |
01:18:40.460
And that's called WebAssembly.
link |
01:18:42.460
And that's the successor to Asm.js.
link |
01:18:44.460
And it's important that it have binary syntax because at the
link |
01:18:47.460
end of the day, especially on mobile, if you're downloading
link |
01:18:49.460
JavaScript, even if you're using LZ compression on the
link |
01:18:51.460
wire, that's cool.
link |
01:18:52.460
But you've got to blow it out into memory and then parse the
link |
01:18:54.460
silly eight character function keyword that I picked when I
link |
01:18:58.460
could have used something shorter.
link |
01:19:00.460
I picked it because of AUK, the Unix tool.
link |
01:19:04.460
So anyway, I want to, but I'm not following the AUK thread.
link |
01:19:09.460
I said surprising to you that how damn fast JavaScript is
link |
01:19:13.460
these days.
link |
01:19:14.460
I mean, you've been through the whole journey.
link |
01:19:16.460
I know every step of the way, but is it like, I mean, it's how
link |
01:19:20.460
it feels incredible.
link |
01:19:21.460
It does.
link |
01:19:22.460
But I knew, so the funny thing is computer science is this big
link |
01:19:24.460
karmic wheel, right?
link |
01:19:26.460
Wheel of Fortuna.
link |
01:19:28.460
And in the, it's not the 97, I was loaned by Netscape to do
link |
01:19:34.460
due diligence for Sun in their acquisition of Anamorphic,
link |
01:19:38.460
which was David Unger and friends, people, Craig, I'm
link |
01:19:44.460
forgetting his name, he went to Microsoft.
link |
01:19:46.460
These Stanford language buffs who had taken small talk and
link |
01:19:50.460
then David created itself as a simpler sort of small talk
link |
01:19:54.460
language and made really fast just in time compiling VMs for
link |
01:19:59.460
them.
link |
01:20:00.460
And they, you know, well ahead of Java hotspot or JavaScript V8
link |
01:20:04.460
or any of these modern VMs, figure out how to make dynamic
link |
01:20:08.460
code fast because small talk is dynamic language, right?
link |
01:20:12.460
It has classes that has, I think, more lockdown declarative
link |
01:20:15.460
syntax than JavaScript, but it's fundamentally dynamic.
link |
01:20:18.460
You don't declare the types.
link |
01:20:20.460
But you could infer the types as the program runs and you
link |
01:20:23.460
start to form these ideas about what types are actually
link |
01:20:26.460
flowing through key operations and you form little so called
link |
01:20:30.460
polymorphic inline caches that are optimized machine code.
link |
01:20:34.460
The cache is the machine code that assumes it does a quick
link |
01:20:38.460
check to make sure the type is right.
link |
01:20:40.460
If it's not right, it bails to the interpreter.
link |
01:20:42.460
If it is right, you go pretty fast.
link |
01:20:44.460
And that short test is a predicted branch.
link |
01:20:47.460
So things are pretty quick.
link |
01:20:49.460
All that amazing stuff I knew about in the 90s and I didn't
link |
01:20:52.460
have time to do it and anamorphic got bought by son and
link |
01:20:56.460
they did hotspot and you needed that even in Java because at
link |
01:20:59.460
scale Java has some dynamic aspects due to invoke interface.
link |
01:21:04.460
You can have basically collections of Java code where you
link |
01:21:07.460
don't know at the time each module or package is compiled
link |
01:21:12.460
exactly what's being called, what subclass or what
link |
01:21:15.460
implementation of an interface is being called.
link |
01:21:17.460
And so you want to optimize using the sort of dynamic
link |
01:21:19.460
polymorphic caching there too.
link |
01:21:21.460
And they did that and hotspot is an amazing beast.
link |
01:21:24.460
I've met like 13 people who all claim they created it.
link |
01:21:27.460
I think one of them may deserve credit more than others.
link |
01:21:31.460
But I didn't get to do that in JavaScript.
link |
01:21:34.460
And when we knew that Google was going to do their own browser
link |
01:21:38.460
which we knew it was around 2006.
link |
01:21:41.460
I also met the team that did v8.
link |
01:21:44.460
And it turns out it was Lars Bach who was one of the young
link |
01:21:47.460
engineers from anamorphic got acquired by son.
link |
01:21:50.460
And so Lars is like the one of the world's expert on these
link |
01:21:53.460
kinds of virtual machines.
link |
01:21:54.460
And he picked my brains up JavaScript.
link |
01:21:56.460
I could tell he didn't like it at the time but he had to do it.
link |
01:21:59.460
And really interesting.
link |
01:22:01.460
Yeah, 2006 lunch at Google's campus.
link |
01:22:04.460
And then I had another friend who was Deverell at Chrome and he
link |
01:22:07.460
said, yeah, we don't know what they're doing.
link |
01:22:08.460
This is getting 2007 to fall, getting toward 2008.
link |
01:22:11.460
We're trying to get Chrome out and we don't know what's going
link |
01:22:13.460
with the v8 team.
link |
01:22:14.460
They're often all who's Denmark, you know, rewriting their engine
link |
01:22:17.460
four times, which is good.
link |
01:22:19.460
That's the right way to do this kind of development.
link |
01:22:21.460
You know, they were learning JavaScript including all its
link |
01:22:23.460
quirks which they came to hate the fire of a thousand sons,
link |
01:22:26.460
which is one of the reasons that Lars and company did dart
link |
01:22:29.460
their own language.
link |
01:22:31.460
But they also made the language fast.
link |
01:22:33.460
And meanwhile we knew this was happening.
link |
01:22:35.460
So we got our act together with Trace Monkey, our tracing jet
link |
01:22:39.460
at Mozilla and Apple I think was also aware.
link |
01:22:41.460
And so they were doing their own jet.
link |
01:22:43.460
So the era of jitted fast JavaScript in 2008 had this
link |
01:22:46.460
prehistory going back to small talk itself and anamorphic.
link |
01:22:50.460
And again, the lineage is interesting because you had Lars
link |
01:22:53.460
and anamorphic and then he ends up at Google.
link |
01:22:55.460
Yeah.
link |
01:22:56.460
And today we have an incredibly fast language that like you
link |
01:23:00.460
said, still, you know, without hate, you can't have love.
link |
01:23:04.460
So I think there's both love and hate for this dance, this rich
link |
01:23:10.460
complex dance of JavaScript throughout its history.
link |
01:23:12.460
There's a dialectic for sure.
link |
01:23:14.460
Today JavaScript is the most popular language in the world.
link |
01:23:19.460
Why by many measures?
link |
01:23:22.460
Why do you think that is?
link |
01:23:24.460
Is there some fundamental ideas that you've already
link |
01:23:28.460
spoke a little bit broader that you think is the most
link |
01:23:31.460
popular language in the world?
link |
01:23:32.460
So I think I did, you know, by doing first class functions
link |
01:23:35.460
and taking the good parts of the C operator hierarchy and
link |
01:23:40.460
just keeping things simple enough.
link |
01:23:43.460
Maybe it could have been simpler, but I had to make it
link |
01:23:46.460
look like Java and interoperate with Java.
link |
01:23:48.460
That there was, you know, inherent goodness,
link |
01:23:52.460
you know, Aristotelian quality there and people perceive
link |
01:23:55.460
that even through all the quirks and warts and then over time
link |
01:23:58.460
working on it with the standards body, working on it,
link |
01:24:00.460
not only as a core language, but in the context of HTML5
link |
01:24:04.460
and making the browser better, listening to developers,
link |
01:24:07.460
thinking about this is something that Nick Thompson
link |
01:24:10.460
wrote nicely about on the hacker news.
link |
01:24:12.460
I was very flattered.
link |
01:24:13.460
He said Java was this thing where the experts were writing
link |
01:24:15.460
the code and it was compiled and you had to declare all
link |
01:24:17.460
your types and some didn't really give a damn about,
link |
01:24:20.460
you know, the average programmer who wanted to build
link |
01:24:22.460
real web apps, dynamic things.
link |
01:24:24.460
And I was in there meanwhile doing, you know,
link |
01:24:27.460
a bunch of people's jobs, making JavaScript survive
link |
01:24:30.460
those early years when it was kind of touch and go, right?
link |
01:24:33.460
JavaScript was considered Mickey Mouse language.
link |
01:24:35.460
It was for annoyances like the scrolling text at the bottom
link |
01:24:38.460
of the browser in the status bar.
link |
01:24:40.460
But I kept listening to developers working with them
link |
01:24:42.460
and trying to make it run in that single threaded event loop
link |
01:24:46.460
in a useful way.
link |
01:24:47.460
And I think that forged something that people have come to love.
link |
01:24:50.460
Now, you don't always love, you know, the best thing, right?
link |
01:24:53.460
I talked about Shakespeare, sonnet about,
link |
01:24:57.460
I'm Mr. Seizer, nothing like the sun or, you know,
link |
01:25:00.460
the scene from Josh Whedon's film Serenity at the end
link |
01:25:04.460
where the actual piece in the score by David Newman is called
link |
01:25:08.460
Love where Captain Mal is teaching River Tam
link |
01:25:12.460
about how to pilot the ship.
link |
01:25:13.460
And she's a super genius, super soldier.
link |
01:25:15.460
She knows how to do it already.
link |
01:25:16.460
And he's basically talking about how you have to love the ship
link |
01:25:19.460
because if you don't, it's going to kill you.
link |
01:25:21.460
And then the piece falls off the ship.
link |
01:25:23.460
It's kind of like JavaScript.
link |
01:25:25.460
You have to love it.
link |
01:25:26.460
You have to love it because now people will say,
link |
01:25:28.460
we're stuck with it because it got this priority of place.
link |
01:25:31.460
But there's love underpinning that and actually the listening
link |
01:25:34.460
to developers, that's kind of beautiful.
link |
01:25:36.460
There's most successful products in this world
link |
01:25:40.460
with all the messes, with all the flaws.
link |
01:25:42.460
Perhaps the flaws themselves are actual features,
link |
01:25:44.460
but that's a whole other, that's a discussion about love.
link |
01:25:47.460
But underneath it, there's something
link |
01:25:49.460
that just connects with people.
link |
01:25:51.460
And it has to keep connecting.
link |
01:25:52.460
If JavaScript kind of went off in this,
link |
01:25:54.460
people sometimes complain about ES6.
link |
01:25:56.460
Oh, you put classes in JavaScript.
link |
01:25:58.460
I hate classes.
link |
01:25:59.460
You know, you've ruined it.
link |
01:26:00.460
But it's not true.
link |
01:26:01.460
It's a dynamic language.
link |
01:26:02.460
Smalltalk had classes.
link |
01:26:04.460
Python has classes.
link |
01:26:06.460
There are lots of Lisp variants that have classy systems.
link |
01:26:10.460
Common Lisp.
link |
01:26:12.460
So, you know, people who don't reject it based on some sort
link |
01:26:16.460
of fashion judgment do use it and do interact
link |
01:26:21.460
with the standards body.
link |
01:26:23.460
The standards body is competing browser vendors mainly,
link |
01:26:25.460
but also now big companies that use JavaScript heavily,
link |
01:26:28.460
the PayPal's and other such companies, Salesforce.
link |
01:26:32.460
And they have to cater to web developers.
link |
01:26:36.460
They have to hire developers who know JavaScript.
link |
01:26:38.460
They have to keep their engines up to the latest standard.
link |
01:26:42.460
And this creates all this sort of social structure
link |
01:26:45.460
around JavaScript that is unusual.
link |
01:26:47.460
I mean, you get C++ buffs to follow the inner workings
link |
01:26:50.460
of, you know, C++.
link |
01:26:52.460
What is it now?
link |
01:26:54.460
21 something.
link |
01:26:55.460
I don't know.
link |
01:26:56.460
I've lost track.
link |
01:26:57.460
But it's a more rarefied group.
link |
01:26:58.460
It's more like the old language, you know, gray hairs.
link |
01:27:02.460
Whereas JavaScript is a younger and more, you know,
link |
01:27:05.460
vibrant large crowd.
link |
01:27:07.460
There's a community feel to it.
link |
01:27:09.460
There's a echoes.
link |
01:27:10.460
Perhaps I don't want to draw too many similarities.
link |
01:27:13.460
Maybe you can comment on it.
link |
01:27:15.460
There's a C++ is like Wall Street and the JavaScript is
link |
01:27:19.460
like Wall Street bets from the recent events.
link |
01:27:22.460
It's like there's a chaotic community of all and there's
link |
01:27:25.460
some power from that distributed crowd of people.
link |
01:27:29.460
It's more demonic.
link |
01:27:30.460
It's more of the people.
link |
01:27:32.460
It lets people in without requiring these credentials.
link |
01:27:35.460
I remember in the late 90s into the 90s, people were all
link |
01:27:38.460
getting Java credentials and I knew people and friends knew
link |
01:27:41.460
people who became Java programmers and you knew they
link |
01:27:44.460
really should have been like nature guides or pilots.
link |
01:27:46.460
They hated programming, but they thought, I got to make money.
link |
01:27:49.460
I'm going to become a Java programmer.
link |
01:27:51.460
Do you have some, because it's such a monumental moment in
link |
01:27:54.460
our current history as a quick aside, do you have thoughts
link |
01:27:58.460
about this huge distributed crowd sourced financial
link |
01:28:03.460
happenings with Wall Street bets?
link |
01:28:06.460
That's like nobody could have, well, you could have predicted
link |
01:28:09.460
but the scale and the impact of this kind of emergent
link |
01:28:12.460
behavior from independent parties that could happen.
link |
01:28:15.460
Like I said, my own experience with the dismal science as
link |
01:28:19.460
with physics led me to reject a lot of bad models and
link |
01:28:22.460
economics was always compromised by politics,
link |
01:28:25.460
political economy.
link |
01:28:27.460
You could also argue that it used to be a branch of moral
link |
01:28:30.460
philosophy, so it was concerned with the good and it became
link |
01:28:33.460
divorced and became sort of in this quasi Newtonian way
link |
01:28:36.460
just about everything's just running by itself.
link |
01:28:39.460
Don't worry about it.
link |
01:28:40.460
This monopoly is crushing your Netscape company,
link |
01:28:42.460
but that's just nature.
link |
01:28:43.460
An economist couldn't or doesn't really have good models
link |
01:28:46.460
for the Wall Street bets subreddit.
link |
01:28:49.460
They know how to squeeze the short, right?
link |
01:28:52.460
So the amazing thing is you have Robinhood app,
link |
01:28:56.460
which was again, supposedly for the demos for the people
link |
01:29:00.460
and eliminated the fee through various kinds of straddles
link |
01:29:05.460
or some kind of spread operation that helped them
link |
01:29:09.460
eliminate the fee or eat the fee.
link |
01:29:11.460
And in fact, as a broker in these days,
link |
01:29:14.460
because it takes two days to settle,
link |
01:29:15.460
there's counterparty risk as they found out.
link |
01:29:18.460
And so the Wall Street bets people,
link |
01:29:22.460
the memes are like the Terminator robot with the $600
link |
01:29:27.460
Stimmy check and the hedge funds,
link |
01:29:29.460
the little girl hiding under the desk.
link |
01:29:33.460
There is a problem which I talked about in the recent podcast,
link |
01:29:36.460
which I'm conscious of from the history of the web.
link |
01:29:38.460
And that is, you could say it's monopoly,
link |
01:29:40.460
which antitrust wasn't enforced after USV Microsoft
link |
01:29:43.460
for a long time.
link |
01:29:44.460
And a lot of this was due to the money interests buying
link |
01:29:48.460
control of politicians.
link |
01:29:50.460
And in Plato's five regimes, that's oligarchy.
link |
01:29:54.460
That's where we are.
link |
01:29:56.460
And now we're seeing a fight against the oligarchs.
link |
01:29:58.460
I don't know if it'll work, but you're definitely seeing it.
link |
01:30:00.460
And it's also kind of hackerish, right?
link |
01:30:02.460
It's got a hacker ethos.
link |
01:30:04.460
Hey, Robinhood, no fees.
link |
01:30:05.460
Oh, interesting.
link |
01:30:06.460
Hey, buy a fraction of a share in this thing
link |
01:30:09.460
or I can keep buying with my stimulus check.
link |
01:30:12.460
So I mentioned Hegel seeing Napoleon on the horse.
link |
01:30:16.460
Hegel also talked about the cunning of reason
link |
01:30:19.460
to have this sort of God's history in full.
link |
01:30:23.460
And if you believe in God, or we don't know the future,
link |
01:30:26.460
but there's always this sort of fly in the ointment,
link |
01:30:29.460
this unintended consequence that confounds
link |
01:30:32.460
the best plans of the powers that be.
link |
01:30:35.460
And we're living through it.
link |
01:30:37.460
I'm glad it's not street warfare or mechanized warfare
link |
01:30:41.460
because it has been in the past.
link |
01:30:44.460
It's more like soft power.
link |
01:30:47.460
And people are fighting back.
link |
01:30:50.460
Do you think it's possible?
link |
01:30:51.460
So the JavaScript used to be for the front end of the web.
link |
01:30:56.460
It's now increasingly so being used for back end,
link |
01:31:01.460
like running stuff that's like behind the scenes.
link |
01:31:05.460
And it's also starting to be used quite a bit
link |
01:31:09.460
for things like TensorFlow.js.
link |
01:31:11.460
So starting to actually use like these heavy duty applications
link |
01:31:15.460
that are using your networks when you're learning
link |
01:31:17.460
and so on on the browser.
link |
01:31:19.460
Is it possible in 10, 20, 30 years
link |
01:31:23.460
that basically most of the world runs on JavaScript?
link |
01:31:28.460
This is a dystopia and a nightmare to some people.
link |
01:31:31.460
When we did Asim Jassi WebAssembly,
link |
01:31:34.460
I would joke and meme people with scenes
link |
01:31:36.460
like Neo waking up in his pod in the matrix
link |
01:31:39.460
and he's all skinny and weak and hairless.
link |
01:31:42.460
And you know, you realize in the future
link |
01:31:45.460
that you're living in some simulation
link |
01:31:47.460
that it's all running on JavaScript
link |
01:31:48.460
and you just scream forever.
link |
01:31:51.460
It's possible.
link |
01:31:52.460
Gary Bernhard does these funny talks.
link |
01:31:54.460
He did WhatJS and then he did this life and death of JavaScript
link |
01:31:58.460
I think it's called where he took some clever ideas
link |
01:32:01.460
that actually have a thread of credibility to them.
link |
01:32:04.460
But I mentioned software fault isolation.
link |
01:32:08.460
In the old days when we were using computers,
link |
01:32:10.460
we said we're going to use the Unix monolithic monitor
link |
01:32:13.460
and it's the privilege program.
link |
01:32:15.460
This is before you even had hardware rings of protection,
link |
01:32:18.460
some of the early 60s operating systems
link |
01:32:20.460
used hardware protection zones.
link |
01:32:22.460
But Unix is privileged and the program
link |
01:32:25.460
that runs user code in a process is hosted.
link |
01:32:30.460
It's the guest in the host and you get to suspend it.
link |
01:32:33.460
You get to kill it.
link |
01:32:34.460
If it crashes, it doesn't take down the whole wonderful idea.
link |
01:32:39.460
But the call into the kernel is expensive.
link |
01:32:42.460
The system calls, so called.
link |
01:32:43.460
And this has even been optimized now
link |
01:32:44.460
for things like getting the time of day
link |
01:32:46.460
so it doesn't actually enter the kernel.
link |
01:32:49.460
And meanwhile, hardware architectures
link |
01:32:52.460
and virtualization techniques have gone in a different direction
link |
01:32:55.460
even to the point where you can do software fault isolation
link |
01:32:57.460
very cheaply without entering the operating system kernel.
link |
01:33:00.460
And so you get unicernals and exo kernels
link |
01:33:02.460
and very lightweight VMs.
link |
01:33:04.460
And so Gary took this idea and said,
link |
01:33:07.460
JavaScript will take over computing
link |
01:33:09.460
because the system call boundaries too expensive.
link |
01:33:11.460
So everything ends up in JavaScript
link |
01:33:13.460
with these lighter weight isolation enforcement mechanisms.
link |
01:33:16.460
It's not totally beyond belief.
link |
01:33:18.460
People have assembly too.
link |
01:33:21.460
It's nice to ask you sort of for advice
link |
01:33:24.460
to there's so many people that are interested
link |
01:33:27.460
in starting to learning about programming,
link |
01:33:29.460
getting into this world.
link |
01:33:31.460
Is there some number of languages,
link |
01:33:35.460
programming languages that you would recommend people learn
link |
01:33:38.460
or maybe a broader advice on how to get started in programming?
link |
01:33:43.460
Well, so you asked about machine learning
link |
01:33:45.460
and JavaScript is a general purpose language
link |
01:33:47.460
and it's a language that's not that great
link |
01:33:52.460
for doing matrix operations
link |
01:33:55.460
or doing parallel programming, I would say,
link |
01:33:59.460
without using some extensions or some libraries
link |
01:34:01.460
that have some magic in them.
link |
01:34:03.460
So if someone wanted to learn,
link |
01:34:08.460
there are amazing languages in sort of the APL family
link |
01:34:11.460
that are very useful for, I would say, linear algebra
link |
01:34:14.460
which gets to a lot of the kernels in machine learning.
link |
01:34:16.460
And so APL had J and then K
link |
01:34:20.460
and there are K variants
link |
01:34:22.460
because the guy that did K is still going
link |
01:34:24.460
and they're proprietary but he's still innovating there.
link |
01:34:28.460
Python is used.
link |
01:34:30.460
So people talk about TensorFlow.js.
link |
01:34:32.460
That's surprising because Python was heavily used
link |
01:34:34.460
for machine learning.
link |
01:34:36.460
And Python was always, you know,
link |
01:34:38.460
they didn't have this fast just in time compiler tradition.
link |
01:34:41.460
There were some projects that tried this
link |
01:34:43.460
and some of them were interesting.
link |
01:34:45.460
PyPy was interesting, but the philosophy with Python was,
link |
01:34:49.460
oh, you need to go fast or write a C plug in
link |
01:34:51.460
and drop into C code.
link |
01:34:54.460
So I think people should look at multiple languages
link |
01:34:57.460
because there are different tools in the belt.
link |
01:34:59.460
If you're trying to do supervision or rapid prototyping,
link |
01:35:02.460
you want a dynamic language, you want to throw things together
link |
01:35:04.460
and see what works.
link |
01:35:06.460
If you're trying to go down to the metal very fast,
link |
01:35:08.460
well, I'm an old C hacker,
link |
01:35:10.460
but I was also the sponsor, executive sponsor of Rust
link |
01:35:13.460
at Mozilla and Rust has now escaped, you know,
link |
01:35:15.460
from that sort of nest where it was born
link |
01:35:18.460
to be adopted by a bunch of companies
link |
01:35:21.460
and have a foundation in the works.
link |
01:35:23.460
Some of the key core team members are working now
link |
01:35:25.460
at Amazon and other places.
link |
01:35:27.460
So it looks like Rust has reached escape velocity,
link |
01:35:29.460
and Rust is an interesting language
link |
01:35:31.460
because one of our goals there,
link |
01:35:33.460
one of the reasons I sponsored it was,
link |
01:35:35.460
we were all tired of seeing those
link |
01:35:37.460
remote code execution vulnerabilities
link |
01:35:39.460
due to C and C++, and we thought,
link |
01:35:41.460
can we have a sort of safety property
link |
01:35:43.460
through a type and effect system
link |
01:35:45.460
or an ownership system, and Rust has that.
link |
01:35:47.460
And that ownership system is interesting
link |
01:35:49.460
because it doesn't just give you memory safety.
link |
01:35:51.460
There's a sort of theorem for free,
link |
01:35:53.460
a dual that falls out for protection against data races.
link |
01:35:56.460
So Rust is better for low level programming,
link |
01:35:59.460
you delimit your unsafe code where you do have to be unsafe,
link |
01:36:02.460
and you can prove certain facts about memory safety
link |
01:36:05.460
and race condition avoidance.
link |
01:36:08.460
And so I think people should learn these new languages.
link |
01:36:11.460
I think Go is a great language I admire,
link |
01:36:13.460
you know, the Unix, people who did that,
link |
01:36:16.460
Ken Stoll was involved, Rob Pike, of course,
link |
01:36:19.460
David, what's his name, and other people.
link |
01:36:22.460
Go is a huge success,
link |
01:36:25.460
really on the server side, anywhere you have,
link |
01:36:28.460
you know, a lot of networking to do,
link |
01:36:30.460
and it's garbage collected,
link |
01:36:32.460
but it's also very pragmatic, it has that sort of C flavor.
link |
01:36:35.460
As an old C hacker, I can't get used to the fact
link |
01:36:37.460
that they swapped the type and declarator
link |
01:36:39.460
in the declaration order.
link |
01:36:41.460
I haven't used Rust, but this is one of the most respected
link |
01:36:44.460
and loved languages currently.
link |
01:36:46.460
And it's still young, you look at these things,
link |
01:36:48.460
JavaScript is now considered old.
link |
01:36:50.460
It's gone through so many versions
link |
01:36:52.460
that you can fall in love with it all over again.
link |
01:36:54.460
25 plus years, you know, it's an adult.
link |
01:36:57.460
It should be out of the house.
link |
01:36:59.460
But it could be around another 25 years.
link |
01:37:02.460
Cannot rule it out.
link |
01:37:04.460
So Rust will be around for a long time.
link |
01:37:06.460
The longer you're around, the more likely you're
link |
01:37:08.460
Lindy, and you're around.
link |
01:37:10.460
A lot of people ask me,
link |
01:37:12.460
I'm often torn between recommending either Python
link |
01:37:15.460
or JavaScript as the first language to play with,
link |
01:37:18.460
because it's difficult,
link |
01:37:20.460
because it's so easy to do JavaScript incorrectly.
link |
01:37:24.460
It's much easier to do it correctly these days.
link |
01:37:29.460
Or like, well, like learn about programming.
link |
01:37:31.460
But the cool thing about JavaScript
link |
01:37:33.460
is that you can create stuff
link |
01:37:35.460
that will put a smile on your face.
link |
01:37:37.460
Like as a developer, you can create stuff
link |
01:37:40.460
and it'll visually look like something
link |
01:37:42.460
and it'll do stuff and it makes you feel good.
link |
01:37:45.460
It makes you fall in love with programming.
link |
01:37:47.460
With Python, you could do the same.
link |
01:37:49.460
And with C++, it takes 5 to 10 years to write a program
link |
01:37:52.460
that actually does something.
link |
01:37:54.460
So there's that tension between
link |
01:37:56.460
is JavaScript the right first step
link |
01:37:58.460
or is it Python?
link |
01:38:00.460
And I've been going back and forth on those two.
link |
01:38:02.460
I had my Python right. It came from a lineage of ABC,
link |
01:38:05.460
which was a pedagogical language in the Netherlands.
link |
01:38:09.460
And it was a good teaching language too.
link |
01:38:16.460
I think it is a good teaching language
link |
01:38:18.460
and it's more restrictive
link |
01:38:20.460
that if you misspell something
link |
01:38:22.460
in a way that JavaScript might let run,
link |
01:38:25.460
let reach runtime, it'll get stopped
link |
01:38:27.460
at syntax check in Python.
link |
01:38:30.460
That's good for beginners.
link |
01:38:32.460
I think the sloppiness that some people object to,
link |
01:38:35.460
like people were just tweeting at me,
link |
01:38:37.460
having just learned JavaScript, they said,
link |
01:38:39.460
I can take a number and I can index into it
link |
01:38:41.460
and get undefined out of it as a property.
link |
01:38:43.460
And why is that? A number is not an object.
link |
01:38:45.460
And I explained why it is.
link |
01:38:47.460
The primitive types, which unfortunately are not objects,
link |
01:38:50.460
can be automatically boxed or wrapped by an object.
link |
01:38:53.460
And I made that implicit.
link |
01:38:55.460
In Java, it's typed and you have to declare things
link |
01:38:58.460
and you'll get type errors.
link |
01:39:00.460
But there are cases in Java where you get auto boxing
link |
01:39:03.460
or auto wrapping because you've declared that you want it.
link |
01:39:06.460
In JavaScript, it just happens.
link |
01:39:08.460
So once I explain it, I'm like, oh, wow, I get it.
link |
01:39:10.460
But it also means that you can commit a blunder that just...
link |
01:39:13.460
You don't get punished for, you don't detect.
link |
01:39:15.460
You get an undefined value and you don't know where it came from.
link |
01:39:17.460
Right.
link |
01:39:19.460
I've been reading a lot about military history recently.
link |
01:39:22.460
And one way to paint the picture of browsers,
link |
01:39:26.460
Internet browsers, is through the various wars
link |
01:39:28.460
throughout its history.
link |
01:39:30.460
I don't know if that's a useful way to look at it,
link |
01:39:32.460
but we've already talked a little bit about Netscape
link |
01:39:34.460
and Internet Explorer in the early days.
link |
01:39:37.460
Can you tell the story of the different wars,
link |
01:39:40.460
if that's at all an interesting way to look at it,
link |
01:39:43.460
of the 90s and to today?
link |
01:39:46.460
Yeah. So I mentioned that Microsoft,
link |
01:39:48.460
which was convicted for it, did abuse its monopoly,
link |
01:39:51.460
but they had a pretty good team by the time they did IE4.
link |
01:39:54.460
And Netscape, unfortunately, I was like the second floor
link |
01:39:57.460
and I was friends with all the first floor people,
link |
01:39:59.460
the front end guys who did the JavaScript event hookup
link |
01:40:02.460
and things like that,
link |
01:40:04.460
that that team was fairly burnt out
link |
01:40:07.460
and I think having gone public,
link |
01:40:10.460
the upper management wanted to buy a bunch of companies
link |
01:40:13.460
to try to go head to head with Microsoft.
link |
01:40:15.460
Didn't work, but buying a bunch of companies
link |
01:40:17.460
usually doesn't work.
link |
01:40:19.460
I think the modern sort of approach,
link |
01:40:22.460
roughly is like Mark Zuckerberg took,
link |
01:40:25.460
which is to keep them at arm's length and let them do their thing.
link |
01:40:28.460
And now that he's pulling WhatsApp in and people are fleeing it
link |
01:40:31.460
because it's tied into the ad surveillance.
link |
01:40:33.460
But for a while there, keeping it separate really does work
link |
01:40:37.460
because you bought it for its value.
link |
01:40:39.460
And you're not messing with it.
link |
01:40:41.460
With Netscape, when they bought a bunch of companies,
link |
01:40:43.460
they had some of the first floor people
link |
01:40:45.460
or the founders burned out.
link |
01:40:47.460
They had newcomers who wanted their turn to do the browser
link |
01:40:51.460
and they hadn't really done browsers or understood them.
link |
01:40:54.460
And so Netscape 4 was originally supposed to be 3
link |
01:40:57.460
and it was so late they renumbered it.
link |
01:40:59.460
We did a 3 release, Jamie and a few others
link |
01:41:01.460
put some extra effort into SecureMime
link |
01:41:03.460
was supported in the mail, built in mail program.
link |
01:41:07.460
And Netscape 4 was late and it was only on Windows at first
link |
01:41:11.460
and Microsoft had really started doing better.
link |
01:41:14.460
Like they do, they copy in the first version's trash
link |
01:41:16.460
and the second one, you're starting to feel a little threatened.
link |
01:41:18.460
The third one, you can tell what's going to happen
link |
01:41:20.460
and the fourth one's good.
link |
01:41:22.460
And plus there's the benefit, like you said,
link |
01:41:24.460
that it comes as a default browser.
link |
01:41:26.460
Yes, and yet Netscape's screwing it up
link |
01:41:28.460
and Microsoft really putting some quality people on it.
link |
01:41:31.460
I4 was good, on Windows it was good.
link |
01:41:33.460
And they did the dynamic HTML innovations.
link |
01:41:36.460
Scott Isaacs, my old buddy, a former accountant
link |
01:41:40.460
who programmed in basic and became what Microsoft calls
link |
01:41:44.460
a program manager, which is kind of an elevated position.
link |
01:41:47.460
You can be a programmer and engineer in track,
link |
01:41:50.460
but you switch to it and you sort of lead
link |
01:41:52.460
a lot of design and standards efforts.
link |
01:41:54.460
And so Scott Isaac put in a lot of those funky DHTML APIs
link |
01:41:58.460
that didn't quite have the same flavor as the stuff that I did
link |
01:42:01.460
and neither of them was like the later sort of verbose Java
link |
01:42:05.460
like DOM W3C standardized.
link |
01:42:08.460
But I4 was pretty darn good.
link |
01:42:10.460
I remember a friend, Scott Furman, and I got invited by Scott Isaacs
link |
01:42:13.460
to Gordon Beersch and San Jose.
link |
01:42:16.460
They were doing a preview of I4.
link |
01:42:19.460
This must have been 1997.
link |
01:42:21.460
And Scott said, yeah, we've got here's the new graphic stuff we're doing.
link |
01:42:25.460
We've got something like your Netscape layers.
link |
01:42:27.460
We've got VML, a vector markup language.
link |
01:42:31.460
We can do virtual reality.
link |
01:42:33.460
And Scott and I looked at each other and said, we're doomed, right?
link |
01:42:36.460
Microsoft was starting to fire in all cylinders.
link |
01:42:38.460
So I have to give them credit for that,
link |
01:42:40.460
even though they abused their market power.
link |
01:42:42.460
And maybe, you know, I shouldn't give them credit
link |
01:42:44.460
for having the resources to hire talented people,
link |
01:42:46.460
but they did a credible job on I4.
link |
01:42:48.460
What really was bad was that phase of the browser wars
link |
01:42:51.460
ended with monopoly and perhaps due to the antitrust case,
link |
01:42:55.460
perhaps due to regulation in Europe,
link |
01:42:58.460
perhaps just due to Microsoft not liking dealing with standardization,
link |
01:43:02.460
they would let it rot.
link |
01:43:05.460
They just abandoned it I5, I5, I6 later,
link |
01:43:10.460
but these were not well maintained.
link |
01:43:12.460
They had a lot of security bugs.
link |
01:43:14.460
Browsers really closed and outdated too,
link |
01:43:16.460
even though it was getting updated.
link |
01:43:18.460
Browsers like Mozilla and Firefox were adding tabs,
link |
01:43:21.460
Operahead, a version of tabs.
link |
01:43:23.460
And they didn't add tabs.
link |
01:43:25.460
And they pop up blocking,
link |
01:43:27.460
something I should have done from the start.
link |
01:43:29.460
People realized that you can tell when the user clicks something
link |
01:43:31.460
and it goes in JavaScript to open a little window
link |
01:43:34.460
that you can sort of inspect the stack
link |
01:43:36.460
and see that the click originated that.
link |
01:43:38.460
And it's probably okay.
link |
01:43:39.460
Whereas if you're just loading a script
link |
01:43:41.460
and it opens a new window, that's a spam technique
link |
01:43:43.460
and you should block it.
link |
01:43:45.460
Tabs were brilliant innovation.
link |
01:43:47.460
Like you said, Operahead, but I remember
link |
01:43:49.460
I fully switched to Firefox the moment.
link |
01:43:52.460
I remember the moments of first using tabs in Firefox
link |
01:43:57.460
and not liking it for the first few minutes
link |
01:44:00.460
and like, wait a minute.
link |
01:44:02.460
You get the groove.
link |
01:44:03.460
You get the groove and you understand.
link |
01:44:05.460
So that timing, what year was this?
link |
01:44:08.460
Because also as a aspiring web designer,
link |
01:44:12.460
I used Table.
link |
01:44:13.460
So we didn't mention layout or CSS much.
link |
01:44:16.460
There's also a change in the way,
link |
01:44:18.460
like the frames were going away.
link |
01:44:20.460
So there's a change in the way websites looked
link |
01:44:23.460
and behaved and all that kind of stuff.
link |
01:44:25.460
CSS finally, which Microsoft embraced with IE4
link |
01:44:28.460
and Netscape never really did right.
link |
01:44:30.460
CSS became a better standard over time
link |
01:44:33.460
for doing table layout that relieved you of the need
link |
01:44:36.460
to use what are called spacer gifts.
link |
01:44:38.460
The spacer gifts, right?
link |
01:44:40.460
You would throw in the space up tables.
link |
01:44:43.460
The typographic power of the web has gotten better
link |
01:44:47.460
but it's still not on the level of PDF
link |
01:44:49.460
and you can't do advanced typography.
link |
01:44:51.460
But it's gotten really better
link |
01:44:53.460
and even then tables were getting better.
link |
01:44:55.460
If you were using Firefox, that would have been 2004
link |
01:44:57.460
and it was called Firebird until early that year.
link |
01:45:00.460
No, yeah, I think it wasn't.
link |
01:45:02.460
2003.
link |
01:45:03.460
I don't remember.
link |
01:45:04.460
It was a Firebird which had tabs.
link |
01:45:06.460
We had tabs the whole way.
link |
01:45:07.460
So it started out as Zola slash browser in 2002,
link |
01:45:10.460
became Phoenix.
link |
01:45:12.460
There's a BIOS that has an embedded version of IE
link |
01:45:14.460
and they said, we're called Phoenix technologies.
link |
01:45:16.460
You can't use Phoenix.
link |
01:45:17.460
And so we said, okay, we'll call it Firebird.
link |
01:45:19.460
And then this Australian centered open source database project
link |
01:45:22.460
started really like in the true Mad Max style
link |
01:45:26.460
where we were streaming at us saying you can't use Firebird.
link |
01:45:28.460
And I had to sort of be the ambassador
link |
01:45:30.460
and say, okay, we're going to rename
link |
01:45:31.460
and I'm like, we don't believe you,
link |
01:45:32.460
you shouldn't have used it, we hate you.
link |
01:45:33.460
And then we renamed it to Firefox
link |
01:45:35.460
and they're like, we love you.
link |
01:45:37.460
And then I haven't heard of them ever since.
link |
01:45:39.460
But Firefox was a clever name.
link |
01:45:41.460
We had to think of something distinctive.
link |
01:45:43.460
We wanted to keep the fire going
link |
01:45:45.460
and it turns out there's a red panda.
link |
01:45:47.460
Right, it's a nickname for.
link |
01:45:49.460
So that's the second set of browser wars.
link |
01:45:51.460
Second browser wars.
link |
01:45:52.460
How did you, how was Firefox born?
link |
01:45:56.460
How was Mozilla born?
link |
01:45:58.460
Is there a, there's a long story there too.
link |
01:46:00.460
So Netscape got acquired by AOL,
link |
01:46:02.460
which as I say was a reasonable happy ending for a lot of people
link |
01:46:05.460
because Netscape otherwise was going to go out of business
link |
01:46:08.460
because Microsoft was just killing its market.
link |
01:46:10.460
There was no way to charge for a browser.
link |
01:46:12.460
Windows came with IE, IE four was pretty good
link |
01:46:15.460
and Netscape four wasn't that good
link |
01:46:17.460
and took a while to get better.
link |
01:46:19.460
But the Netscape executive said,
link |
01:46:22.460
let's do an open source escape pod, you know,
link |
01:46:25.460
and like in Star Wars and New Hope,
link |
01:46:27.460
the gunner won't shoot it
link |
01:46:28.460
because there's no life forms on board, right?
link |
01:46:30.460
It's not a threat.
link |
01:46:31.460
And so we did Mozilla in 1998
link |
01:46:33.460
and it looked like it was going to, you know,
link |
01:46:37.460
initially just give the world an open source browser,
link |
01:46:40.460
but it's really hard to get people to work on this sort of hairball
link |
01:46:43.460
that had been hacked up over by that point four years.
link |
01:46:46.460
It also couldn't have the crypto module for secure sockets,
link |
01:46:50.460
so called or now transport layer security.
link |
01:46:52.460
That was an electronic munition.
link |
01:46:54.460
We were not allowed to release that in the full 1024 bit key strength.
link |
01:47:00.460
And yet people, one of whom I happened to meet previously at SGI
link |
01:47:05.460
when I went on a sales support engineering trip,
link |
01:47:08.460
Tim Hudson in Brisbane, Australia and Eric A. Young
link |
01:47:14.460
did what became open SSL.
link |
01:47:16.460
It was called SSL EAY after Eric's initials
link |
01:47:19.460
and Tim and Eric took their open SSL
link |
01:47:23.460
outside of the purview of the NSA
link |
01:47:25.460
and the Department of Commerce
link |
01:47:27.460
and they stuck it into Mozilla's code.
link |
01:47:29.460
And that was perhaps the best hack that was done
link |
01:47:31.460
in the first few months after we open sourced the browser.
link |
01:47:34.460
We had other problems.
link |
01:47:35.460
The politics inside Netscape were driven by these acquisitions.
link |
01:47:38.460
So the one acquisition that kind of messed up Netscape 4
link |
01:47:41.460
also wanted to keep doing a proprietary mail and groupware program
link |
01:47:46.460
not Jamie Zewinski's mail program that was in Netscape 2 and 3
link |
01:47:50.460
and they held it back from open source.
link |
01:47:52.460
We didn't have a mail program, it was just a browser.
link |
01:47:54.460
We didn't know what AL will do to us.
link |
01:47:56.460
Turns out they didn't interfere with us for a long time.
link |
01:47:59.460
But Netscape wasn't the best steward of Mozilla.
link |
01:48:02.460
We were operating Mozilla as a pirate ship without a legal entity.
link |
01:48:06.460
So most of us worked for Netscape under a separate organization
link |
01:48:10.460
and initially the first engineering manager, Tom Pekwin
link |
01:48:16.460
of Netscape was the Mozilla Founding Manager.
link |
01:48:19.460
But he left pretty quickly and he left me as the acting manager
link |
01:48:22.460
which is more like method acting in my case.
link |
01:48:25.460
And that was my first management stint.
link |
01:48:28.460
But then someone who'd written the licenses, Mitchell Baker,
link |
01:48:32.460
she was a lawyer at Netscape, she was involved in the open source
link |
01:48:35.460
license decision making and the actual writing and construction
link |
01:48:39.460
of those licenses, that was Mitchell's job.
link |
01:48:41.460
Netscape Public License and the truly open Mozilla Public License.
link |
01:48:45.460
And there were two because Netscape needed, because of some encumbered code,
link |
01:48:48.460
needed some special rights, but that went away over time.
link |
01:48:50.460
Mitchell was always interested in Mozilla and she came back
link |
01:48:53.460
from maternity leave and she said, I'll be the manager if you want
link |
01:48:55.460
and Jamie and I said sure.
link |
01:48:57.460
And then Jamie quit.
link |
01:48:58.460
He quit after a year and he said, this didn't work, I'm sorry.
link |
01:49:01.460
He acted like it was a total failure because Mozilla didn't restart
link |
01:49:06.460
the browser market.
link |
01:49:07.460
But there's no way it could have, right?
link |
01:49:09.460
Netscape was still shipping variants of Netscape 4,
link |
01:49:13.460
which was based on the old code.
link |
01:49:15.460
Mozilla was trying to rearchitect the code to make green field for developers.
link |
01:49:19.460
So it was one of my big goals.
link |
01:49:20.460
It wasn't a technical goal so much as, again, a social goal.
link |
01:49:23.460
People wanted a more standard spaced browser.
link |
01:49:26.460
They wanted a less of a hairball that had been hacked on by
link |
01:49:29.460
X grad students starting four years prior.
link |
01:49:31.460
So we said we're going to make a modular code base.
link |
01:49:34.460
We're going to use a variant or an open source version of Microsoft's
link |
01:49:37.460
component object model.
link |
01:49:39.460
It has reference counting and standardized vTables,
link |
01:49:42.460
virtual calls and C++.
link |
01:49:44.460
And we're going to use JavaScript.
link |
01:49:46.460
We're going to have a bridge between those two so you can script
link |
01:49:49.460
those components just like Java components.
link |
01:49:51.460
We're going to make a portable front end with a markup language
link |
01:49:55.460
for the user interface.
link |
01:49:56.460
Not tables, not HTML, but custom menus and dropdowns and toolbars.
link |
01:50:01.460
And that was called Zool, XML user interface language.
link |
01:50:05.460
And some real talent on the Netscape side delivered that Dave Hyatt,
link |
01:50:08.460
who was instrumental in Zool, Chris Watterson, Joe Hewitt,
link |
01:50:13.460
Blake Ross.
link |
01:50:15.460
And Blake was an intern.
link |
01:50:17.460
He was like a high school aged intern in Netscape.
link |
01:50:20.460
And at some point we were innovating rapidly in the Mozilla world.
link |
01:50:24.460
And Netscape was still caught up in this management mess from these
link |
01:50:28.460
acquisitions and it wasn't delivering.
link |
01:50:30.460
And every year they were wondering if AOL was going to come and start
link |
01:50:33.460
beheading the executive because it didn't do anything useful.
link |
01:50:36.460
And there was a thought you should take the Netscape browser engine
link |
01:50:39.460
and put it in the Windows AOL client, which was the dial up client
link |
01:50:42.460
that all the increasingly aging users of AOL were using.
link |
01:50:45.460
Never happened.
link |
01:50:46.460
It would have been too big a change.
link |
01:50:48.460
So it wasn't clear why AOL bought Netscape, but as I said,
link |
01:50:50.460
they left it alone.
link |
01:50:51.460
But Netscape didn't leave Mozilla alone.
link |
01:50:53.460
And so in 2001, Mitchell called me up and said,
link |
01:50:58.460
I'm no longer employed.
link |
01:51:00.460
And I was like, what? You quit? No, no, this wasn't my choice.
link |
01:51:02.460
And there was a layoff, which maybe accidentally or on purpose,
link |
01:51:05.460
got rid of Mitchell.
link |
01:51:06.460
But the funny thing was we had an open source project.
link |
01:51:08.460
We had a lot of the engineers on staff on our side and we had
link |
01:51:13.460
people we'd hired through the Mozilla community who were top notch.
link |
01:51:16.460
They'd risen, you know, they came in high quality.
link |
01:51:18.460
They knew the code and they actually were better than the average
link |
01:51:21.460
or median higher of Netscape.
link |
01:51:23.460
And so the funny thing was the executive who thought they'd gotten
link |
01:51:27.460
rid of Mitchell in the layoff on the next week's community call
link |
01:51:31.460
around Mozilla and what to do.
link |
01:51:33.460
There's Mitchell.
link |
01:51:34.460
And so this show, you can kind of transcend your, you know,
link |
01:51:38.460
boundaries of corporate open source.
link |
01:51:40.460
If you get a project that has enough loyalty, even among the paid
link |
01:51:43.460
staff, because we had outside people contributing with people
link |
01:51:46.460
at Red Hat and a few other places.
link |
01:51:48.460
But the majority of the hackers were employed by Netscape.
link |
01:51:50.460
But a lot of them at that point had come from the community
link |
01:51:53.460
and others got the community and wanted to work with it.
link |
01:51:55.460
And it was really the weakest engineers at Netscape who didn't
link |
01:51:58.460
like Mozilla and didn't like the crucible of competing with the
link |
01:52:01.460
better programmers.
link |
01:52:03.460
So if the project is good enough, it will rise.
link |
01:52:06.460
The Phoenix will rise out of the...
link |
01:52:08.460
That's exactly right.
link |
01:52:09.460
And so we had this Mozilla code base that was getting better.
link |
01:52:11.460
In fact, I think at some point in 2002 when we declared Mozilla 1.0,
link |
01:52:15.460
I engineered a roadmap that successively through similar sort
link |
01:52:19.460
of six week, five week releases like we all do with browser
link |
01:52:22.460
releases nowadays, Chrome does and Firefox braves us three weeks.
link |
01:52:26.460
We got to a point where we said, you know what?
link |
01:52:29.460
It doesn't suck.
link |
01:52:30.460
This is like the 1.0 that you want to release because if you hold it back
link |
01:52:34.460
any longer to polish it, you're denying others the ability to use it.
link |
01:52:36.460
It's like pro engineer, the mechanical CAD tool embedded the code.
link |
01:52:40.460
They embedded the layout engine.
link |
01:52:43.460
And Mozilla 1.0 was like a Netscape communication suite.
link |
01:52:46.460
We had at that point gotten male people to reintegrate male news.
link |
01:52:50.460
And we had an editor for HTML.
link |
01:52:53.460
And it felt like a 90s suite, a suiteware.
link |
01:52:56.460
And it felt kind of bloated.
link |
01:52:58.460
And the people who were taking that Mozilla open source and then adding
link |
01:53:02.460
Netscape flavor to it were not calling the shots right.
link |
01:53:06.460
And they were also under ALL's thumb a little bit and that they said,
link |
01:53:09.460
we should probably put the ALL instant messenger chicklet on the toolbar.
link |
01:53:12.460
And we should put the ICQ, the other messaging system that ALL had acquired.
link |
01:53:16.460
We should put the ICQ button on the toolbar.
link |
01:53:19.460
And pretty soon Netscape looked like a bit of a NASCAR badged version of Mozilla.
link |
01:53:24.460
And that also made Mozilla more popular.
link |
01:53:27.460
And yet they had contrived to fire or lay off the leader.
link |
01:53:35.460
And we carried on with an open source structure where Mozilla was still,
link |
01:53:39.460
Mitchell was calling management or project level shots.
link |
01:53:44.460
And I was calling technical shots.
link |
01:53:46.460
And we had a popular suite.
link |
01:53:50.460
But we thought, why not make it just a browser?
link |
01:53:52.460
Because it'll be simpler.
link |
01:53:53.460
It'll do one job well.
link |
01:53:55.460
And even then we can strip it down by having extensions.
link |
01:53:58.460
So Dave Hyatt and Blake Ross, the high school aged intern, did the first
link |
01:54:04.460
version, which was called Mozilla slash browser.
link |
01:54:07.460
It was a group of us, Ian Hicks and Asa Dotsler, me, Joe Hewitt and Hyatt and Blake.
link |
01:54:14.460
And Hyatt was really the senior hacker.
link |
01:54:16.460
He'd done all these things like amazing cross platform menus
link |
01:54:20.460
through the user interface market language.
link |
01:54:23.460
And he knew how to do tab browsing.
link |
01:54:24.460
He'd implemented it natively on macOS at the time in Camino, originally called Camara.
link |
01:54:31.460
He'd written multiple limitations, which was a thing programmers should do.
link |
01:54:36.460
It's like the VA team did for those missing years when the rest of the Chrome teams
link |
01:54:39.460
like, where's VA?
link |
01:54:41.460
In fact, Dave's wife, Rebecca, told me a story about when they were at UIUC.
link |
01:54:45.460
They were also University of Illinois grad students.
link |
01:54:49.460
There was an assignment.
link |
01:54:50.460
It was a programming assignment.
link |
01:54:51.460
It was supposed to be due at the end of the semester.
link |
01:54:53.460
And Dave's friend was this, I'm going to go think and I'm going to design and I'm going
link |
01:54:58.460
to make this platonic perfect form of the program.
link |
01:55:01.460
And then I'm going to write it at the end when it's due.
link |
01:55:03.460
And Hyatt just went there and started hacking.
link |
01:55:05.460
He wrote one version, he wrote a second version, a third version.
link |
01:55:07.460
The end of the semester comes around.
link |
01:55:09.460
The friend's not doing too well.
link |
01:55:10.460
It wasn't perfect and it wasn't written.
link |
01:55:12.460
I'm not sure how that story ended, but for him,
link |
01:55:14.460
but Dave's version was a fifth iteration.
link |
01:55:16.460
It was great.
link |
01:55:17.460
And so he'd done that with everything you needed in a tabbed browser.
link |
01:55:21.460
And this really showed well in Phoenix, what we called Phoenix,
link |
01:55:24.460
and I had to rename two more times.
link |
01:55:27.460
And Blake went to Stanford.
link |
01:55:30.460
He became a Stanford student and couldn't work on it.
link |
01:55:33.460
Dave Hyatt went to Apple in 2001.
link |
01:55:36.460
He was one of the founding Safari team members.
link |
01:55:39.460
Interesting.
link |
01:55:40.460
Wow.
link |
01:55:41.460
But he was still blogging about tabbed browsing.
link |
01:55:43.460
I think Apple at some point said,
link |
01:55:45.460
Safari have tabbed browsing?
link |
01:55:46.460
Yeah.
link |
01:55:47.460
But it was because of Hyatt.
link |
01:55:48.460
Hyatt was quite a feather in their cap.
link |
01:55:50.460
Don Melton, who had been the engineering manager at
link |
01:55:53.460
for Safari from the beginning, had been in Netscape also.
link |
01:55:56.460
And so there's just a diaspora of talent.
link |
01:55:59.460
And yet Hyatt was still kind of writing blog posts
link |
01:56:01.460
about how to do tabs, right?
link |
01:56:03.460
And at some point Apple said, don't blog about that.
link |
01:56:05.460
That's our proprietary tab technology.
link |
01:56:07.460
And I was like, no, it's not.
link |
01:56:09.460
It was an opera.
link |
01:56:10.460
And I refined it.
link |
01:56:11.460
So we had to replace people.
link |
01:56:13.460
And we had Ben Goodger, a New Zealander.
link |
01:56:17.460
We hired at Netscape.
link |
01:56:18.460
And he stepped in to be the Firefox lead.
link |
01:56:21.460
And we also had this weird circumstance where AOL finally
link |
01:56:25.460
did notice that Netscape was kind of an albatross,
link |
01:56:28.460
that they bought it for no particular benefit.
link |
01:56:31.460
And even then the AOL politics were also heinous,
link |
01:56:34.460
sort of East Coast politics.
link |
01:56:35.460
And we were taking two trips there because I was a principal
link |
01:56:37.460
engineer.
link |
01:56:38.460
And so as principal engineers got trotted out to do dog and pony
link |
01:56:40.460
shows in Dallas, Virginia, and the AOL for management was
link |
01:56:45.460
very East Coast in flavor.
link |
01:56:46.460
And they were at that time merging with Time Warner,
link |
01:56:49.460
which would not go well.
link |
01:56:50.460
So one of these years we went out there and we were all doing
link |
01:56:52.460
dog and pony shows.
link |
01:56:53.460
And there were these characters that were sort of like
link |
01:56:55.460
marketing guys, one of the most wearing a cravat.
link |
01:56:57.460
And one of them was named Reggie.
link |
01:56:59.460
And they were very you rather than non you,
link |
01:57:05.460
or they were like what's still in metropolitan film,
link |
01:57:08.460
UHB, urban, oh, bourgeoisie.
link |
01:57:13.460
They were funny and they were kind of useless and kind of
link |
01:57:18.460
preppy.
link |
01:57:19.460
And then the next year we went back and I said,
link |
01:57:21.460
where's Reggie?
link |
01:57:22.460
And it's like, oh, Reggie's not here anymore because Time Warner
link |
01:57:24.460
realized that the merger wasn't in their interest either.
link |
01:57:27.460
And then the sort of knives came out.
link |
01:57:28.460
And these mergers rarely work, right?
link |
01:57:31.460
This is very difficult.
link |
01:57:32.460
You get these giant companies and they think there's going
link |
01:57:34.460
to be synergy.
link |
01:57:35.460
That was the late 90s watchword.
link |
01:57:37.460
And there wasn't synergy with AOL buying Netscape.
link |
01:57:39.460
And there wasn't synergy with Time Warner and AOL.
link |
01:57:41.460
But did AOL ever really work?
link |
01:57:42.460
Was it ever really cool?
link |
01:57:44.460
Like the same kind of fire and excitement that Firefox
link |
01:57:47.460
eventually created, was that ever there in AOL?
link |
01:57:50.460
AOL was the right time to do a dial up service that got
link |
01:57:55.460
distribution by basically leaflet bombing compact discs on
link |
01:57:59.460
the country.
link |
01:58:00.460
And they beat out CompuServe and the other ones,
link |
01:58:04.460
Prodigy.
link |
01:58:05.460
And then the web happened.
link |
01:58:06.460
And so you had almost like this isolated continent.
link |
01:58:10.460
Like some of the evolutionary biologists I follow make fun
link |
01:58:14.460
of the funny large marsupial mammals of Australia,
link |
01:58:19.460
how silly they are.
link |
01:58:21.460
So AOL is like Australia.
link |
01:58:23.460
And you saw it over time because they kept aging and they
link |
01:58:26.460
were using AOL to get online and they couldn't really use
link |
01:58:29.460
a web browser.
link |
01:58:30.460
And it became sort of a valued cohort because they still
link |
01:58:33.460
have relatively high socioeconomic status and they
link |
01:58:36.460
have grandchildren.
link |
01:58:37.460
But it's going away.
link |
01:58:38.460
It's dying at some point.
link |
01:58:39.460
Towards the end of the aughts that decade and then to the
link |
01:58:42.460
decade 2010 plus that Firefox became this incredible.
link |
01:58:48.460
I forget when Chrome came out.
link |
01:58:50.460
2008 September.
link |
01:58:51.460
But Firefox was the sexy, cool thing that represented a
link |
01:58:55.460
lot of the cutting edge technologies and all that kind
link |
01:58:57.460
of stuff.
link |
01:58:58.460
It was amazing.
link |
01:58:59.460
Tim O'Malley and John Battelle did the first Web 2
link |
01:59:02.460
conference, which eventually became huge and they split
link |
01:59:04.460
it.
link |
01:59:05.460
But that was in 2004.
link |
01:59:06.460
It was right when Firefox was out.
link |
01:59:08.460
Craigslist was huge.
link |
01:59:09.460
It was killing classified revenue for newspapers.
link |
01:59:12.460
But there was just this ferment.
link |
01:59:14.460
People starting Wikipedia along there somewhere.
link |
01:59:16.460
Gmail was already done and it was an impressive Web mail.
link |
01:59:19.460
There were others before it like Hotmail, but Gmail was
link |
01:59:21.460
really impressive from Google and Google Maps.
link |
01:59:23.460
People started seeing what could be done.
link |
01:59:25.460
They thought, how can you drag the map around and how does
link |
01:59:28.460
that work?
link |
01:59:29.460
And it was all JavaScript and images.
link |
01:59:31.460
So Gmail was 2003, 2004?
link |
01:59:33.460
Yeah, it actually started quite early.
link |
01:59:35.460
It might have been 2002 or three.
link |
01:59:37.460
But by the time we started dealing with Google and Firefox
link |
01:59:39.460
to get the search deal, which was the main revenue source
link |
01:59:42.460
for Mozilla and still is 2004.
link |
01:59:45.460
Early Sergey Brins, one of his trusted engineer guys,
link |
01:59:49.460
Fritz Schneider, made contact with me at Mozilla.
link |
01:59:51.460
And we started talking and we realized search and browser
link |
01:59:55.460
need each other.
link |
01:59:56.460
And this is deeply true, right?
link |
01:59:58.460
This is still true.
link |
01:59:59.460
This is why a lot of the search engines have their own
link |
02:00:01.460
browsers.
link |
02:00:02.460
Yeah, so in case people don't know, the main revenue source
link |
02:00:04.460
for the browser is the default search engine, which is kind
link |
02:00:07.460
of incredible to think about.
link |
02:00:09.460
That is a revenue source.
link |
02:00:11.460
It's a little bit sad.
link |
02:00:12.460
Yeah, it leads to this capture or kill effect where you
link |
02:00:14.460
have the search engine own its own browser.
link |
02:00:16.460
And other browsers may struggle to get this distribution
link |
02:00:20.460
we talked about earlier.
link |
02:00:21.460
Yeah.
link |
02:00:22.460
So where, and you said you've figured out that Google is
link |
02:00:27.460
working on its own browser at some point.
link |
02:00:29.460
2006, yeah.
link |
02:00:30.460
2006.
link |
02:00:31.460
So would you say Firefox versus, was Internet Explorer
link |
02:00:33.460
part of the war here or was the Firefox versus Chrome?
link |
02:00:36.460
So Firefox didn't quite cause Microsoft to reconvene IE.
link |
02:00:40.460
They did do IE7.
link |
02:00:42.460
And I remember being on a plane back from the standards
link |
02:00:45.460
meeting, the JavaScript standards meeting from Seattle
link |
02:00:48.460
from Redmond.
link |
02:00:49.460
And there was some Microsoft guy in front of me.
link |
02:00:52.460
It turns out my wife knew him from her past life before
link |
02:00:55.460
we married.
link |
02:00:56.460
And he was just this bearded big guy.
link |
02:00:58.460
And he was like, we should have just killed Firefox
link |
02:01:00.460
in the cradle.
link |
02:01:01.460
All we needed to do was add pop up walking in and tabs.
link |
02:01:04.460
And we could have made Internet Explorer kill Firefox.
link |
02:01:06.460
And it's like, should have cut a wood up, pal.
link |
02:01:08.460
And I was right behind him hearing this.
link |
02:01:10.460
But they didn't.
link |
02:01:11.460
And IE7 wasn't that great.
link |
02:01:13.460
And what really got them started, I think, was Chrome.
link |
02:01:18.460
And I talked to Larry Page in 2005.
link |
02:01:21.460
I think I said, we're talking about the Firefox relationship.
link |
02:01:24.460
But he was also saying, what a web kit.
link |
02:01:26.460
This was Apple's version of the old K HTML engine
link |
02:01:30.460
from Linux, the KDE side of Linux that was used in the Conqueror
link |
02:01:35.460
browser, all spelled Ks, that Apple had forked.
link |
02:01:38.460
And in 2005 was when Apple's principles, including Dave Hyatt,
link |
02:01:42.460
Maches de Covex, some of my friends who were still there,
link |
02:01:44.460
said, we must stop patch bombing this poor K HTML project.
link |
02:01:48.460
We should make a proper Mozilla like organization WebKit.org.
link |
02:01:51.460
Now, it wasn't a separate nonprofit or anything.
link |
02:01:53.460
It was still Apple.
link |
02:01:54.460
It was Apple controlled.
link |
02:01:55.460
But they made their fork first class.
link |
02:01:58.460
And they made it be something that they all worked in
link |
02:02:00.460
and lived in.
link |
02:02:01.460
And that was before Chrome.
link |
02:02:02.460
And then Chrome, Larry Page said, what about WebKit?
link |
02:02:05.460
I said, yeah, it's nice.
link |
02:02:06.460
I have friends who work on it.
link |
02:02:07.460
You might use that if you do your own browser.
link |
02:02:09.460
Why don't you do your own browser?
link |
02:02:10.460
Don't worry about Firefox.
link |
02:02:11.460
You should do your own browser.
link |
02:02:12.460
You can have your own opinion of how it should work.
link |
02:02:15.460
And sure enough, they did.
link |
02:02:16.460
So by 2006, we knew they'd been working on it.
link |
02:02:18.460
Some of my friends who'd been at Netscape did the original demo.
link |
02:02:22.460
And the demo wasn't what you thought.
link |
02:02:23.460
It didn't have the fast JavaScript yet.
link |
02:02:25.460
That was still often Denmark in the farm.
link |
02:02:28.460
Did it have tabs?
link |
02:02:30.460
It had tabs because all browsers had tabs at this point.
link |
02:02:32.460
And it had this software fault isolation I mentioned.
link |
02:02:37.460
It was through process isolation.
link |
02:02:39.460
So in theory, each tab has its own operating system process.
link |
02:02:43.460
And so what's going to take your tab down?
link |
02:02:45.460
Well, WebKit has bugs that can crash it.
link |
02:02:48.460
But Flash was still big then.
link |
02:02:49.460
All the restaurant sites, remember?
link |
02:02:51.460
And Flash crashed a lot.
link |
02:02:53.460
So the demo that I heard about my friends at Netscape,
link |
02:02:56.460
as a lot of people did, inside Google was the sad tab.
link |
02:03:00.460
They showed an early version of Chrome,
link |
02:03:02.460
which is this bare bones tab browser.
link |
02:03:04.460
They loaded a site with a known Flash bone,
link |
02:03:06.460
and then suddenly Flash crashes.
link |
02:03:08.460
And everyone expected the whole browser to go down.
link |
02:03:10.460
But instead, you got this little sad face in the tab.
link |
02:03:13.460
And you could reload it.
link |
02:03:14.460
And there it is again.
link |
02:03:15.460
So this was an improvement.
link |
02:03:16.460
It was a real move for security.
link |
02:03:18.460
It was based on a company they acquired called Green Border.
link |
02:03:22.460
They had some really big brains, like Olfar Erelingson,
link |
02:03:24.460
I think was involved.
link |
02:03:25.460
And they had done some exotic security stuff.
link |
02:03:28.460
But they ended up simplifying it to this process isolation.
link |
02:03:31.460
And it was good.
link |
02:03:34.460
And Firefox didn't have it at the time.
link |
02:03:36.460
So we were still struggling with security bugs.
link |
02:03:41.460
So we knew Chrome was coming,
link |
02:03:42.460
but it took two more years to come out.
link |
02:03:44.460
And we were still getting the Google search revenue.
link |
02:03:48.460
We were still making Google the default engine.
link |
02:03:51.460
And Firefox was still growing.
link |
02:03:52.460
Firefox grew, I think, until 2011.
link |
02:03:54.460
That was when it peaked.
link |
02:03:56.460
And as it started falling, it was because of Chrome.
link |
02:03:59.460
Chrome came out in 2008.
link |
02:04:01.460
And it had a comic book that leaked accidentally
link |
02:04:03.460
that showed some of the people who worked on it.
link |
02:04:05.460
Lars Bock was in there and so on.
link |
02:04:07.460
It was kind of soft launch because they didn't market it heavily.
link |
02:04:10.460
They didn't push distribution.
link |
02:04:12.460
But Google had reason to worry about distribution
link |
02:04:14.460
because Microsoft was, you know, doing a search engine,
link |
02:04:18.460
Bing since 2007.
link |
02:04:20.460
In fact, when they came out with Bing,
link |
02:04:21.460
Google was worried that Microsoft would just brute force
link |
02:04:24.460
switch the default browser and everyone's Internet Explorer
link |
02:04:28.460
or even Firefox on Windows to Bing from Google.
link |
02:04:32.460
And Microsoft wasn't, I think,
link |
02:04:34.460
ready to dare the antitrust cops that way,
link |
02:04:36.460
even though they'd gone to sleep.
link |
02:04:38.460
And I don't think Bing was ready either.
link |
02:04:41.460
But just in case it happened,
link |
02:04:43.460
Sundar Pichai, who rose very well based on this work,
link |
02:04:47.460
was sort of in charge of getting distribution deals.
link |
02:04:50.460
And he got Google toolbar and Google desktop search distribution.
link |
02:04:55.460
And remember those pieces of software?
link |
02:04:56.460
Those were like desktop extensions,
link |
02:04:59.460
toolbars or operating system extensions
link |
02:05:01.460
for doing desktop search, searching your local files,
link |
02:05:03.460
kind of like macOS spotlight, right?
link |
02:05:05.460
Sadly, died of doubt.
link |
02:05:07.460
It all died.
link |
02:05:08.460
And there were some features that we still missed
link |
02:05:09.460
that didn't make it into Chrome.
link |
02:05:10.460
But Sundar got OEMs to bundle those.
link |
02:05:13.460
And then he got enough of those deals
link |
02:05:15.460
that by 2007 or 2008, Google felt,
link |
02:05:17.460
well, if Microsoft does the worst and tries to force Bing,
link |
02:05:21.460
we can reach in and reset it with that point of presence.
link |
02:05:25.460
So that was good for Sundar's career.
link |
02:05:27.460
And it was good for Google,
link |
02:05:28.460
but it never came to pass that they had to defend.
link |
02:05:30.460
Microsoft was still slow.
link |
02:05:32.460
And by the time they saw Chrome come out,
link |
02:05:34.460
then they did what would have been IE9.
link |
02:05:37.460
And then they said,
link |
02:05:38.460
we're going to have a fast JavaScript engine to Chakra,
link |
02:05:40.460
Chakra Core.
link |
02:05:41.460
And they did okay.
link |
02:05:43.460
So that was another process isolated fast JavaScript browser,
link |
02:05:47.460
tab browser.
link |
02:05:48.460
So it sounds like there's a deep fundamental coupling
link |
02:05:52.460
of search engine and browser
link |
02:05:53.460
that's mixing this whole thing up.
link |
02:05:55.460
And obviously Firefox doesn't have a search engine.
link |
02:05:59.460
That's like, I mean, you're partnering with somebody
link |
02:06:03.460
with a search engine.
link |
02:06:04.460
Yeah.
link |
02:06:05.460
With Yahoo or with Google or so on.
link |
02:06:08.460
They tried Yahoo.
link |
02:06:09.460
That was unfortunate because I think,
link |
02:06:11.460
even though Marissa Mayer talked about it,
link |
02:06:14.460
she never pulled it off and never restored the search team
link |
02:06:17.460
that had been laid off.
link |
02:06:19.460
I believe Carol Bartz was running Yahoo when Carol said,
link |
02:06:22.460
I've got to get rid of one of the three expensive things.
link |
02:06:24.460
I'm going to get rid of search.
link |
02:06:25.460
And those researchers went to Google and Microsoft.
link |
02:06:29.460
And there was no way to put Yahoo search back together.
link |
02:06:32.460
So when Firefox tried switching all their users who'd stuck
link |
02:06:36.460
with a default from Google to Yahoo,
link |
02:06:38.460
like mid December 2014, a bunch of users said,
link |
02:06:41.460
what just happened to my Firefox?
link |
02:06:43.460
And others didn't notice right away,
link |
02:06:44.460
but over time they did.
link |
02:06:45.460
And so over the next year,
link |
02:06:47.460
the traffic just went away for Yahoo.
link |
02:06:50.460
And yet they were obliged.
link |
02:06:52.460
I understand it.
link |
02:06:53.460
I don't have inside knowledge,
link |
02:06:55.460
but this is leaked out.
link |
02:06:56.460
And Danny Sullivan's written about it, search engine land.
link |
02:06:58.460
I think the deal was like fixed payments to Mozilla.
link |
02:07:00.460
So Mozilla was getting a bunch of money for traffic
link |
02:07:02.460
that wasn't staying because users were resetting their default.
link |
02:07:05.460
And this shows how defaults are important,
link |
02:07:08.460
but they have to be good enough that the user doesn't override them.
link |
02:07:11.460
And a lot of the commercial value in popular apps
link |
02:07:15.460
is one of the default settings.
link |
02:07:17.460
What is the default search?
link |
02:07:19.460
But oftentimes there's something just like you said.
link |
02:07:21.460
I mean, if there's something compelling,
link |
02:07:24.460
that's also can beat out the default like tab browser and so on.
link |
02:07:28.460
And that's where, I mean, we'll talk about Brave browser.
link |
02:07:31.460
It feels like now we're in this third stage
link |
02:07:35.460
where there's Chrome, Firefox, Edge, I guess it's called,
link |
02:07:42.460
and Brave, and these all seem like really exciting,
link |
02:07:47.460
I don't know, innovative browsers.
link |
02:07:50.460
They're all kind of copying off of each other,
link |
02:07:52.460
picking up the good stuff.
link |
02:07:53.460
There's evolution again, especially on tracking protection.
link |
02:07:56.460
Privacy is this sort of global wave that's rising.
link |
02:08:02.460
I like to call it a wave because it's a large,
link |
02:08:04.460
somewhat chaotic structure.
link |
02:08:06.460
It's not a unitary good.
link |
02:08:08.460
You can't say, I'm buying privacy for $3.
link |
02:08:11.460
I'm paying $3 privacy.
link |
02:08:12.460
Some people think a VPN does this and are disappointed when it fails them,
link |
02:08:15.460
but often people use VPNs for region unlocking video
link |
02:08:19.460
or getting the US Netflix catalog.
link |
02:08:21.460
Exactly.
link |
02:08:22.460
But privacy is not a unitary good.
link |
02:08:24.460
It's complex and people are understanding it only over time
link |
02:08:27.460
and as they get burned.
link |
02:08:28.460
But there's a genie that's not going back in the bottle there.
link |
02:08:31.460
People are fed up.
link |
02:08:32.460
Apple has responded to this.
link |
02:08:34.460
Apple was always making Safari, I think,
link |
02:08:36.460
more of a privacy branded browser from the very beginning.
link |
02:08:40.460
I think this was probably Steve Jobs.
link |
02:08:41.460
Safari had private Windows, private tabs before Firefox did.
link |
02:08:47.460
And these are only private in the sense that they don't leave local traces,
link |
02:08:52.460
if you don't want them to, turns out Safari does keep them around
link |
02:08:55.460
between shutdown.
link |
02:08:56.460
But the canonical model is no local traces after you close the private window.
link |
02:09:01.460
No leftover traces that you went to some site that you were embarrassed by
link |
02:09:05.460
or bought a gift for somebody you wanted to keep secret.
link |
02:09:09.460
But there's still some level of tracking.
link |
02:09:11.460
There's network tracking.
link |
02:09:14.460
Network privacy is not guaranteed at all
link |
02:09:16.460
because you're using the same internet and ISP as a public window,
link |
02:09:19.460
a non private window.
link |
02:09:20.460
But Safari had that early on.
link |
02:09:22.460
They also had a cookie blocking policy that might take a little explaining.
link |
02:09:27.460
When you, if you know what a cookie is,
link |
02:09:29.460
it's a little bit of storage in the browser indexed by the name of the site.
link |
02:09:32.460
And it's really only the main name of the site, like bfa.com or, you know,
link |
02:09:39.460
something like npr.org.
link |
02:09:42.460
Every site can store some information in a cookie.
link |
02:09:45.460
Every time it's contacted by the browser,
link |
02:09:48.460
the previous version is sent back and in the response from the server,
link |
02:09:52.460
the cookies updated.
link |
02:09:53.460
So it's this little bit of storage in the browser that the site can keep updating
link |
02:09:57.460
and it can store an encrypted version of your login credentials with a time stamp
link |
02:10:03.460
so you can stay logged in without having to retype your password every time you navigate,
link |
02:10:08.460
which is how it would be if you didn't have cookies.
link |
02:10:10.460
The web protocols, especially in the 90s, are so called stateless protocols.
link |
02:10:15.460
So you go to your bank, you log in, you go from your login confirmed page
link |
02:10:20.460
to your account view.
link |
02:10:21.460
If you didn't have a cookie, you'd be logging in again.
link |
02:10:24.460
Every time you type in a cell.
link |
02:10:26.460
So that was a great thing about cookies.
link |
02:10:27.460
Lumontually did it in a hurry in 1994 before I joined that escape
link |
02:10:30.460
and he did it for really holding that kind of credential.
link |
02:10:34.460
But even then, there was the image element embedded in the page
link |
02:10:38.460
and the image gets fetched possibly from a different server
link |
02:10:41.460
and that request carries the last cookie, which could be empty at first
link |
02:10:45.460
and the response carries the updated cookie.
link |
02:10:47.460
So just by having images and cookies yet tracking
link |
02:10:50.460
because that image server can be serving a little one by one pixel
link |
02:10:54.460
and they still use the word pixel on ad tech
link |
02:10:56.460
and that pixel can be served from the same server embedded differently
link |
02:11:00.460
with different URL spellings in the New York Times and ESPN.
link |
02:11:03.460
And as you go from one to the other, the image server can say,
link |
02:11:06.460
I haven't got a cookie for you.
link |
02:11:08.460
It's empty initially.
link |
02:11:09.460
I'm going to assign you user number one, two, three, four.
link |
02:11:11.460
I'm going to put a database entry in.
link |
02:11:13.460
And I see by the way, I always fetch the name of the path part of the URL
link |
02:11:16.460
that I was in the New York Times.
link |
02:11:17.460
So you're a New York Times reader.
link |
02:11:19.460
And then you hit ESPN, same thing.
link |
02:11:21.460
And the database gets updated and the number user one, two, three, four indexes
link |
02:11:25.460
in the database to a profile of you.
link |
02:11:27.460
You've been tracked.
link |
02:11:28.460
This was not intended.
link |
02:11:29.460
And it was too late to undo by the time I got the Netscape.
link |
02:11:32.460
I think Lou wanted to do Twinkies, he called them in.
link |
02:11:35.460
He was trying to solve several problems.
link |
02:11:37.460
He wanted them to be bigger because initially cookies had a short size limit.
link |
02:11:40.460
I think he wanted to solve the third party problem,
link |
02:11:42.460
but Tom Paiklin, the engineering manager said, no, no Twinkies, just cookies.
link |
02:11:46.460
We're done.
link |
02:11:47.460
You're done, son.
link |
02:11:48.460
And that's how a lot of that stuff was.
link |
02:11:51.460
That's how JavaScript, you know, got frozen like a flying amber in some ways
link |
02:11:55.460
with that sloppy equality operator that I made because the early adopters.
link |
02:11:58.460
And the cookie got stuck with this tracking hazard.
link |
02:12:01.460
And then because JavaScripts can be like images, they're embedded in the page.
link |
02:12:05.460
By the time of Netscape 3, I made that work.
link |
02:12:08.460
You can get a request with the last cookie value and the response updates it.
link |
02:12:11.460
That's a tracking mechanism.
link |
02:12:12.460
And that's why you don't even need images to track.
link |
02:12:14.460
Now you just use scripts.
link |
02:12:16.460
So this whole tracking economy evolved.
link |
02:12:19.460
And it depended on these accidents of the 90s, these unintended consequences.
link |
02:12:25.460
Well, it created some of the richest companies in the world, right?
link |
02:12:27.460
I mean, it's the social media.
link |
02:12:28.460
All I got was t shirts.
link |
02:12:30.460
All I got is this crappy t shirt.
link |
02:12:32.460
Yeah.
link |
02:12:33.460
I mean, so that's, that's the fundamental problem the world is facing now.
link |
02:12:39.460
They're looking at what social media has created and they're looking at,
link |
02:12:43.460
and like a world is looking itself in the mirror and seeing that privacy is actually something.
link |
02:12:50.460
It's supposed to like a nice thing to have.
link |
02:12:53.460
It's something that is actually should be fundamental to the way we interact with the world as part of our tooling.
link |
02:13:00.460
And that's where the brave browser comes in.
link |
02:13:03.460
And I suppose others as well will play with this idea, but brave is at the forefront of that.
link |
02:13:07.460
So maybe can you like describe what brave is and what are its key principles and what's broken
link |
02:13:14.460
and what is it brave trying to fix?
link |
02:13:16.460
So when I realized that these accidents, like the third party cookie, the image or script that's tracking you,
link |
02:13:21.460
or the java scripts that can do it invisibly now, that all this stuff wasn't intended
link |
02:13:28.460
and that Firefox had supported extensions that block some of these things,
link |
02:13:32.460
I thought probably we should have browsers just block some of these things by default.
link |
02:13:37.460
These were not intended and they're now unsafe.
link |
02:13:39.460
They're tracking you.
link |
02:13:40.460
There could be data breaches, malware distribution, you know, bullying and PSI ops and other attacks on people.
link |
02:13:49.460
Block that stuff.
link |
02:13:50.460
Block that JavaScript.
link |
02:13:51.460
I'm Dr. Frankenstein.
link |
02:13:52.460
I've got to deal with the monster here.
link |
02:13:54.460
But obviously you go to Gmail, there's a bunch of script there to make that amazing web client.
link |
02:13:59.460
That's okay.
link |
02:14:00.460
That's first party JavaScript.
link |
02:14:02.460
So how do you tell the first from the third party?
link |
02:14:04.460
And it's not easy.
link |
02:14:05.460
It's not a matter of just what's embedded from a different server because a lot of publishers use benign scripts
link |
02:14:11.460
from unrelated domains or apparently unrelated domains.
link |
02:14:14.460
So you end up having to develop a sort of human and machine learning practice around blocking.
link |
02:14:19.460
And at Brave, we did that from the start and built a research team to help drive it and automate it.
link |
02:14:25.460
We realized that protecting people needed machine learning.
link |
02:14:28.460
And around 2017 spring, I talked to my friends at Apple about this too.
link |
02:14:32.460
And they were also doing what they call intelligent tracking prevention,
link |
02:14:36.460
which uses local machine learning in the browser.
link |
02:14:39.460
And the funny thing is, you know, great minds think alike,
link |
02:14:42.460
they were taking their third party cookie blocker that was in Safari from the old days
link |
02:14:46.460
and making it not have a big loophole.
link |
02:14:48.460
Because what they did was in 2003, when I came out, they said,
link |
02:14:52.460
we're going to block cookies that are from those third party embedded elements
link |
02:14:57.460
where you've never visited that site before.
link |
02:14:59.460
So I'm going to pick an ad company that got sold to AT&T.
link |
02:15:02.460
So I'm not picking on anybody on fairly appnexus.com.
link |
02:15:05.460
Have you ever been to appnexus.com?
link |
02:15:06.460
No.
link |
02:15:07.460
I've never been there.
link |
02:15:08.460
But I guarantee you 10 years ago, you probably had, if you're using Firefox,
link |
02:15:11.460
you had a cookie third party cookie because you're being tracked by them.
link |
02:15:14.460
And they were using that cookie to build up a profile of you.
link |
02:15:17.460
In Safari, as long as the user never went to appnexus,
link |
02:15:20.460
that cookie would not be set.
link |
02:15:22.460
And that was a real move for privacy early on when jobs were still around in Safari.
link |
02:15:27.460
But it had this loophole that if you do go to appnexus,
link |
02:15:30.460
then why it's okay to be a third party cookie?
link |
02:15:32.460
And so appnexus did something very naughty.
link |
02:15:35.460
They took their ad partners to put the actual ad you click on.
link |
02:15:38.460
And they said, hey, add a little script so that when somebody clicks on the ad,
link |
02:15:42.460
before it goes to your landing page, redirect to appnexus
link |
02:15:45.460
and we'll redirect to the landing page.
link |
02:15:47.460
And by doing that, they set a first party cookie and they got whitelisted.
link |
02:15:49.460
So it was a loophole they exploited.
link |
02:15:51.460
Intelligent tracking prevention in Safari was sophisticated enough to counteract this
link |
02:15:56.460
and it did other things and it's evolved since they did it.
link |
02:15:59.460
And we've evolved brave too.
link |
02:16:00.460
And so when I say machine and human learning, there's a real set of techniques here.
link |
02:16:05.460
They have to fight.
link |
02:16:06.460
It's a fascinating problem.
link |
02:16:07.460
Finger printing, right?
link |
02:16:08.460
Anytime you have a little bit of storage in the browser associated with a website,
link |
02:16:13.460
if the bad guy can get 32 websites, each one has a bit of storage.
link |
02:16:16.460
That's 32 bits.
link |
02:16:17.460
You can turn the bit on or off.
link |
02:16:19.460
You can make four billion numbers.
link |
02:16:21.460
You can make an identifier.
link |
02:16:22.460
It's called a super cookie sometimes.
link |
02:16:24.460
There are weaker ways that are statistical.
link |
02:16:28.460
They're called fingerprinting.
link |
02:16:29.460
You have to block all of them and you have to not only automate,
link |
02:16:32.460
you want to work in the web standards body to put privacy in by default,
link |
02:16:37.460
by design, from the get go, not added as an afterthought
link |
02:16:40.460
or go hog while with new web APIs that add a bunch more local storage
link |
02:16:45.460
or fingerprint surface area.
link |
02:16:47.460
And that's been a struggle too because guess who's the new Microsoft in the standards body?
link |
02:16:51.460
It's Google.
link |
02:16:52.460
And they're not in favor of privacy first.
link |
02:16:55.460
They want to do privacy their way only under, I would say, market pressure.
link |
02:17:00.460
But with Apple and with Brave leading the way,
link |
02:17:03.460
we block third party cookies almost without exception.
link |
02:17:06.460
So we just block them and that gives us a very strong privacy benefit.
link |
02:17:11.460
But it also means some sites just don't work right.
link |
02:17:13.460
Embedded YouTube videos might not work right.
link |
02:17:15.460
So we're adapting in similar way to Apple's done with ITP to make third party cookies blocked
link |
02:17:22.460
but to sort of simulate what looks like a working third party cookie for the site.
link |
02:17:28.460
It essentially tries to partition each site and its third parties into its own sort of cookie jar.
link |
02:17:34.460
Got it.
link |
02:17:35.460
So like you said, is this both like a human fine tuning issue and a machine learning problem?
link |
02:17:42.460
Yes.
link |
02:17:43.460
And as humans learn, then they train the machine learning.
link |
02:17:46.460
But maybe Google aside or including Google, there is millions of dollars,
link |
02:17:52.460
if not be billions of dollars to be made from fighting the ways of Brave.
link |
02:17:57.460
That's right.
link |
02:17:58.460
And it's been an interesting change from when we started in 2015.
link |
02:18:02.460
Adblocking extensions, Ablock Plus was one of the big ones that started on Firefox in 2006,
link |
02:18:07.460
I believe, had gotten to a certain level of use around the world.
link |
02:18:10.460
And browsers like UcWeb, UcBrowser in Asia had some amount of ablocking built in and on by default.
link |
02:18:16.460
So a page fair was a startup and they measured ablocking adoption and they tried to say,
link |
02:18:23.460
hey, publishers, you're 30% of the visitors to pitchfork or wire to kind of NAS properties
link |
02:18:30.460
are using ablockers.
link |
02:18:32.460
If we can somehow convince them to lower their ablocking for your site,
link |
02:18:36.460
that could be like a 43% lift, right?
link |
02:18:39.460
And three sevenths.
link |
02:18:41.460
Well, that's easier said than done.
link |
02:18:43.460
And page fair and other source point that many others tried to either smuggle ads through
link |
02:18:47.460
or cajole the user into letting ads appear.
link |
02:18:51.460
And it didn't really work.
link |
02:18:52.460
And meanwhile, the ablocking adoption has just continued intelligent tracking prevention in Safari in 2017.
link |
02:18:58.460
Brave from 2016 on with very strong cookie blocking and other protections.
link |
02:19:04.460
And this is not going away.
link |
02:19:06.460
The publishers used to rage against it.
link |
02:19:08.460
We would try to say, we can help you.
link |
02:19:10.460
You're dealing with users who are already blocking all your ads.
link |
02:19:13.460
We can try to put back some economics that helped the user and you that led to the basic attention
link |
02:19:19.460
token that we started with Bitcoin.
link |
02:19:21.460
We can be your friend.
link |
02:19:22.460
Don't just fingerprint us as an ad blocker and treat us as an enemy.
link |
02:19:26.460
But in 2015 or 16, it was like, nah, you're an ablocker.
link |
02:19:29.460
Get out of here.
link |
02:19:30.460
I hate you.
link |
02:19:31.460
And by 2017 or 18, it's like something's happening.
link |
02:19:33.460
The ablocking is not stopping.
link |
02:19:35.460
And we're all getting sort of pulled on the Google's plantation through AMP, AMP.
link |
02:19:41.460
Or we're getting killed by the Google ad system we use because it's taking all the revenue.
link |
02:19:46.460
Or some other vendors we use are permitting ad fraud.
link |
02:19:50.460
So a fake New York Times is getting paid by the marketer running an ad that a bot clicks on.
link |
02:19:56.460
And the real New York Times, it's supposed to get the ad, doesn't get it.
link |
02:20:00.460
And there's something really broken about that kind of system.
link |
02:20:02.460
And that fraud is mediated through Google's ad exchange, which is the biggest of them all.
link |
02:20:07.460
And Google takes a fee.
link |
02:20:09.460
There's a flip side of that, which is malware distribution, malvertising, where fake advertisers
link |
02:20:14.460
put malware payloads or exploit kit loaders in JavaScript and they smuggle them in ads
link |
02:20:20.460
onto real publisher pages.
link |
02:20:22.460
The ad exchange takes the fee.
link |
02:20:24.460
Now, I'm not a lawyer.
link |
02:20:25.460
I'm not going to say this is a RICO predicate.
link |
02:20:27.460
But why is the ad exchange facilitating fraud and malware distribution and taking a fee?
link |
02:20:31.460
It's not right.
link |
02:20:32.460
As opposed to just fighting, this is the really interesting thing about Brave.
link |
02:20:35.460
As opposed to just fighting and then being treated like an ad blocker, you're providing an alternate.
link |
02:20:41.460
There's a philosophical idea here that might change the nature of the internet with the basic attention token.
link |
02:20:49.460
Maybe what is basic attention token, BAT, and how does it work?
link |
02:20:55.460
Okay.
link |
02:20:56.460
I'll tell the story first by saying how I came to it.
link |
02:20:58.460
I realized for a long time at Firefox, we were dependent on this Google search deal.
link |
02:21:03.460
And I thought, now that Chrome's out, maybe that's going to go away.
link |
02:21:07.460
At some point, Google will say, Firefox, like old Yeller, you saved me from the rabid beast.
link |
02:21:14.460
Now, I have to shoot you in the head.
link |
02:21:16.460
Done your job.
link |
02:21:17.460
Sad but true.
link |
02:21:18.460
Goodbye.
link |
02:21:19.460
And what can we do?
link |
02:21:21.460
And I think this, Mozilla doesn't know what to do.
link |
02:21:24.460
This is something that I couldn't solve there and I don't think they can solve.
link |
02:21:27.460
But I thought, why is the browser the sort of passive servant of these big tech companies?
link |
02:21:32.460
I said a blind runtime for ad tech JavaScripts, including from Google.
link |
02:21:37.460
Why doesn't it block some?
link |
02:21:39.460
And if it blocks some, why can't it reconnect users, readers, fans with publishers, creators, websites?
link |
02:21:48.460
Why can't it help people make direct payments or even possibly get an ad revenue share for private ads that are placed in the browser?
link |
02:21:56.460
The ads are all placed in the browser.
link |
02:21:57.460
Some people have this sort of model that the server is painting the ad into some flash combined package or into some giant image and then it all gets sent down.
link |
02:22:07.460
That's not how it works.
link |
02:22:08.460
All the ads you see on the web are placed in your browser by calling out to various ad tech partners and Google's among them.
link |
02:22:15.460
And so if you block those scripts, you break the advertising flow of money from the brands and their agencies to the publishers.
link |
02:22:25.460
And if you want to reconnect it directly with the user, you have limited choices.
link |
02:22:30.460
The user generally isn't going to sign up with a ACH bank connection or a credit card.
link |
02:22:34.460
The publisher isn't going to sign up the user except as a subscriber.
link |
02:22:38.460
And then they're going to overcharge you because they want you to cross subsidize all the content and buy more than you read and all that stuff.
link |
02:22:43.460
And people are doing great who are big names like New York Times and The Washington Post.
link |
02:22:48.460
But how many subscriptions are you as a user going to pay for?
link |
02:22:51.460
This is why startups like Tony Hale's Skrull are trying to do a portable subscription system.
link |
02:22:56.460
By the way, just on a small tangent there, even in New York Times, it's really annoying how difficult it is to subscribe.
link |
02:23:02.460
There's way too many clicks.
link |
02:23:04.460
They don't make it easy.
link |
02:23:05.460
I had friends a few years ago, I think they fixed this, who would pay for the paper and then they'd go online and they get upcharged for the digital.
link |
02:23:11.460
And there was no break.
link |
02:23:12.460
There was no connection between them.
link |
02:23:14.460
But publishers are not that technical and they can't all get you to subscribe.
link |
02:23:19.460
You can't have a thousand subscriptions.
link |
02:23:20.460
So for a long time, people talked about micropayments.
link |
02:23:23.460
There was Blendol and other ones which came to the US but didn't grow.
link |
02:23:26.460
And I thought if you have just a browser and it's protecting you by blocking all this ad tech tracking junk,
link |
02:23:32.460
it can provide you an option that uses cryptocurrency to let you support your favorite sites and even YouTube channels.
link |
02:23:40.460
And that we prototyped with Bitcoin.
link |
02:23:42.460
And that meant the user had to be of means to contribute and willing to contribute.
link |
02:23:46.460
But it could be done on the Bitcoin blockchain and it could be fairly efficient even though Bitcoin went through a period
link |
02:23:51.460
when we had this prototype running in 2016 into 2017 where Bitcoin was very congested and very slow to confirm and the fees got very high.
link |
02:23:59.460
And a lot of users who were not Bitcoin maximalists or even experienced,
link |
02:24:04.460
we helped them out by embedding a Coinbase buy widget and they had the income to buy but it was hard.
link |
02:24:09.460
It was like, do I buy $5 a month?
link |
02:24:11.460
But the fee is like $4.50.
link |
02:24:13.460
I better buy in larger batches, right?
link |
02:24:15.460
Then they're like, I don't want to own that much Bitcoin.
link |
02:24:18.460
So it became this painful thing.
link |
02:24:20.460
And the real idea that I had of private ads that pay the user a rev share couldn't be realized alone in that kind of system.
link |
02:24:29.460
In these cryptocurrency systems, especially with the blockchain we switched to Ethereum, you can have smart contracts.
link |
02:24:36.460
The Bitcoin system is not turn complete so what you can do with the script is more limited.
link |
02:24:40.460
But you can still do sort of clever things even with Bitcoin script.
link |
02:24:45.460
What we wanted to do was sort of a three sided ecosystem.
link |
02:24:49.460
We wanted users, creators, publishers and advertisers.
link |
02:24:53.460
And we wanted the advertisers to put money in just like they do today.
link |
02:24:56.460
But without going through the Googles and the app nexuses and all these other ad tech companies,
link |
02:25:01.460
because those companies take out a huge cut.
link |
02:25:03.460
The Guardian in the UK once did an experiment for a month.
link |
02:25:06.460
They bought out their own ad space.
link |
02:25:08.460
They put in a pound and they were paid 30 pence.
link |
02:25:11.460
70% was coming out to the intermediary vendors they were using.
link |
02:25:16.460
And that's like the opposite of what the App Store does.
link |
02:25:19.460
The App Store takes 30% and gives the publisher 70%.
link |
02:25:22.460
So pretty broken.
link |
02:25:23.460
In the old days of the Superstation TBS, the media owner would get 85%.
link |
02:25:29.460
So these splits have become really unbalanced.
link |
02:25:33.460
And the middle players, the ad tech vendors are taking out way too much money.
link |
02:25:37.460
And they're doing something worse, which has been noticed.
link |
02:25:40.460
They're letting not just the malware vendors, but also the ad fraud side, which fakes the publishers,
link |
02:25:47.460
and clickbait merchants come in and steal traffic from good sites.
link |
02:25:53.460
Because once you have a certain audience identified at one site,
link |
02:25:56.460
Jason Calconas told me this about his experience with, I guess it was in Gadget.
link |
02:26:00.460
Once he started using an ad partner that was sharing his audience information across multiple sites,
link |
02:26:07.460
he saw his competitors stealing all his traffic.
link |
02:26:09.460
And then what's worse is the clickbait sites that just have much cheaper rates steal all that traffic.
link |
02:26:15.460
And that facilitates fraud, facilitates fake news, all sorts of problems.
link |
02:26:21.460
So Grave blocks it and then we give users the ability to give back.
link |
02:26:26.460
And because we invented the basic attention token in Ethereum, we can do this three way split.
link |
02:26:30.460
And we can give users a share of the revenue.
link |
02:26:33.460
And if they want to take it out, they can.
link |
02:26:35.460
Now, unfortunately for us and for all blockchain, the regulators are saying,
link |
02:26:39.460
we're going to have to know who you are.
link |
02:26:41.460
There's the Treasury Department's FinCEN agency.
link |
02:26:47.460
There's the Office of Foreign Asset Controls, OFAC.
link |
02:26:50.460
There's the other regulators in the federal government that take a very dark look at things like money laundering
link |
02:26:58.460
and sending money to someone named Osama bin Laden.
link |
02:27:01.460
So compliance starts to come in.
link |
02:27:03.460
And even now they're threatening for pure Bitcoin sending to some address.
link |
02:27:07.460
If you're a Coinbase, you're going to have to know who's at that address.
link |
02:27:11.460
Make the actual identities of people involved.
link |
02:27:13.460
Yeah.
link |
02:27:14.460
Now with Coinbase members, you sign up and they know you and they comply with the regulations.
link |
02:27:17.460
They're a regulated money services business.
link |
02:27:19.460
But if somebody's using their own self custodial wallet where they have the hardware private key
link |
02:27:28.460
and they're not named and they want to send to that address,
link |
02:27:32.460
our friends in the federal government are talking about requiring at some threshold knowing who that is.
link |
02:27:37.460
Some threshold that's unreasonable.
link |
02:27:40.460
It's not that big.
link |
02:27:41.460
Yeah.
link |
02:27:42.460
I don't know how this will play out.
link |
02:27:43.460
I think crypto is here to stay.
link |
02:27:44.460
I think the beauty of being able to send peer to peer without any bank in the middle without any, you know,
link |
02:27:49.460
huge wire charge and two day delay and all that nonsense.
link |
02:27:52.460
It's beautiful and I've used it and I love it.
link |
02:27:54.460
But we're pragmatists that brave about crypto and we realize that anything like a revenue split,
link |
02:27:59.460
we can't facilitate without being licensed in a certain way and it requires knowing who the user is.
link |
02:28:03.460
So our default mode doesn't know who the user is.
link |
02:28:06.460
It instead imputes to the user's browser some of the revenue and allows that browser to steer it back to the creators.
link |
02:28:14.460
And we do have to identify the creators.
link |
02:28:16.460
But as things improve and, you know, who knows how it'll play out,
link |
02:28:20.460
there should become a day when this full vision can be done more fully on a blockchain.
link |
02:28:25.460
But regulations and the practicalities of today's blockchains, which are not that fast and not anonymous over time,
link |
02:28:32.460
you fingerprint yourself over time, we do some of this with the browser.
link |
02:28:35.460
So one of the ideas of the basic attention token is to make a hybrid system that's stronger than blockchain alone.
link |
02:28:42.460
It's the browser and the blockchain.
link |
02:28:45.460
And the browser is this trusted endpoints software.
link |
02:28:47.460
It's this universal app.
link |
02:28:49.460
Everyone uses browsers.
link |
02:28:50.460
The bigger the screen, the more you're in the browser and the less you install, you know, fat clients for things.
link |
02:28:55.460
I use Slack on Mac OS and it's like a browser.
link |
02:28:59.460
It's based on an electron framework we used to use and it's just, it's not that great.
link |
02:29:03.460
Some people at Brave use Slack in Brave as a browser.
link |
02:29:07.460
In the browser.
link |
02:29:08.460
Yeah.
link |
02:29:09.460
I use that often.
link |
02:29:10.460
Yeah.
link |
02:29:11.460
And I noticed on the iPad, I use apps less.
link |
02:29:12.460
The smaller the screen, you know, the browser got handicapped by Apple and Android both.
link |
02:29:17.460
And it also, you know, can be slower or not have the right, you know, affordances,
link |
02:29:22.460
the interface with the security limited APIs.
link |
02:29:26.460
But in principle, with the right permissioning, you can make the web browser just as good as any app.
link |
02:29:31.460
You make it be a super app.
link |
02:29:33.460
And that's part of our mission at Brave.
link |
02:29:35.460
So we want to have the economics that got captured by these big tech companies through tracking and through social networks.
link |
02:29:41.460
We want to block that for your own safety and then let you opt into a cleaner world where you keep your data defended in your browser and you can actually realize value from it.
link |
02:29:49.460
So the way our ad system works, I mentioned it being private, but how does that work?
link |
02:29:53.460
We don't see your data at all.
link |
02:29:55.460
All browsers are sort of the mother of all data feeds, your history, all your searches at all engines.
link |
02:30:00.460
Each engine sees the queries you send to it, but it doesn't see the others.
link |
02:30:03.460
But the browser sees them all.
link |
02:30:05.460
Machine learning in the browser that you can opt into can study all that in a very complete way and do a better job than Google does.
link |
02:30:11.460
Google has, you know, cookie and scripts across the web from, according to DoubleClick, they have YouTube, they have Android, they have search, which is still their big revenue link.
link |
02:30:21.460
But they don't see everything.
link |
02:30:22.460
The browser sees everything.
link |
02:30:23.460
And if it can do a good job locally, and this is not advanced machine learning, this is not TensorFlow.
link |
02:30:27.460
This is like SVMs now, Naive Bayes.
link |
02:30:31.460
Then you can match intense signals, intense signals from those data feeds, searches, the queries, the history, how much you're scrolling down a page, how much you redid a search.
link |
02:30:43.460
It's all blind browser algorithm.
link |
02:30:45.460
We don't see that data.
link |
02:30:46.460
And then pick the best ad from a fixed catalog per day.
link |
02:30:50.460
And the catalog is fixed across a large population per day and it only updates once a day because new offers come in and old ones inspire.
link |
02:30:57.460
Sometimes every week or every month.
link |
02:30:59.460
And that catalog, and there can be many such catalogs, is sold by our direct sales team.
link |
02:31:05.460
And so we're making an anonymous audience available to advertisers without the advertisers tracking them.
link |
02:31:11.460
Instead, each browser is a little machine learning system that's picking the best catalog entry.
link |
02:31:16.460
Now, the catalog is not the ads.
link |
02:31:18.460
Those are big, right?
link |
02:31:19.460
It's not the video or web page.
link |
02:31:20.460
It's just the link to an edge cache.
link |
02:31:22.460
And there are many such edge caches.
link |
02:31:23.460
We're not trying to protect them from seeing your IP address.
link |
02:31:26.460
It's not really feasible.
link |
02:31:27.460
We could use Tor, but we don't yet.
link |
02:31:29.460
And some keywords about the ad.
link |
02:31:31.460
So it's basically like metadata and a link.
link |
02:31:34.460
And that's what the catalog consists of.
link |
02:31:36.460
And that's what the machine learning pick.
link |
02:31:37.460
And the machine learning is learning about the use specifically locally in order to choose from the catalog of different ads.
link |
02:31:43.460
Couldn't this possibly be like a multi billion dollar?
link |
02:31:47.460
Isn't this taking on the Google ad ad?
link |
02:31:51.460
So like what, I mean, one question to ask that there seems to be some really profound ideas here that are different than what the internet has grown up to be.
link |
02:32:01.460
If brave or something like brave, the idea is the fundamental philosophical ideas underlying brave win out and runs 95% of the internet.
link |
02:32:12.460
How does that change the, what, what are the major things that changes about the internet?
link |
02:32:19.460
So social networks and then the creatives like YouTube creators and all that kind of stuff.
link |
02:32:23.460
So let's talk about that.
link |
02:32:24.460
First of all, if brave gets 95%, I'm going to demand a recount because I won't believe it.
link |
02:32:29.460
I don't know.
link |
02:32:30.460
I think we're trying to put things into web standards that can be standardized across browsers.
link |
02:32:34.460
So the main value of brave will be the trust users having us and our ability to give the best deal to users.
link |
02:32:41.460
70% of the gross ad revenue we give to the user.
link |
02:32:44.460
And if they go through that KYC process I mentioned, they can take it out.
link |
02:32:48.460
They can also give it back.
link |
02:32:49.460
They can take some out, give the rest back.
link |
02:32:51.460
They can add basic attention tokens to give back.
link |
02:32:54.460
Some of them turn off the ads because you just don't like ads, but they put in $20 a month.
link |
02:32:58.460
So I believe Zuko of ZCast fame does that.
link |
02:33:00.460
And that's very generous because the browser is just anonymously based on his browsing sort of keeping score on how much time he spent on this video on that website.
link |
02:33:09.460
And if those sites verify in sort of like getting a domain certificate fashion, they can get paid.
link |
02:33:16.460
They can get part of his $20 a month.
link |
02:33:19.460
So that vision could go big.
link |
02:33:21.460
And if it does, I hope it's across multiple browsers.
link |
02:33:23.460
I don't know that they'll all compete well on the quality of the ads, the quality of the ad blocking and tracking protection.
link |
02:33:30.460
Those are subject to competition.
link |
02:33:31.460
It'll take a while to standardize them.
link |
02:33:33.460
But I think that would be a better world.
link |
02:33:35.460
It would have less counterparty risk.
link |
02:33:38.460
The fee takers in the middle, really just the browser.
link |
02:33:40.460
We're taking 30%.
link |
02:33:42.460
It's sort of the app store split.
link |
02:33:44.460
And if we get bigger, maybe we can take even less.
link |
02:33:47.460
Social networks, creators.
link |
02:33:49.460
If you look at YouTubers, a lot of them are the indies that are getting some size are getting sponsorship deals.
link |
02:33:56.460
They're using Patreon.
link |
02:33:58.460
They're encouraging people to subscribe and give them regular money for Patreon.
link |
02:34:04.460
But that's centralized your Patreon.
link |
02:34:06.460
There's censorship hazards.
link |
02:34:08.460
There's a 5% fee.
link |
02:34:10.460
What if that were a web standard?
link |
02:34:12.460
What if Brave pioneered it first and we took 3% and we did it in a way that was through your browser so we couldn't censor it?
link |
02:34:18.460
That's brilliant.
link |
02:34:20.460
Do you think it could be standardized to cross browsers?
link |
02:34:22.460
Can Internet Explorer come in again?
link |
02:34:26.460
Protocols are easy to copy and they're meant to be interoperable.
link |
02:34:29.460
So there's a risk there.
link |
02:34:31.460
And the loyal users might be tricked into leaving you.
link |
02:34:34.460
Because of that distribution power, you might end up getting stomped.
link |
02:34:37.460
I don't know. I can't predict the future.
link |
02:34:39.460
I think antitrust is back on the case finally in the U.S.
link |
02:34:42.460
and certainly in Europe, DG Comp is doing its thing.
link |
02:34:45.460
So I'm hopeful that we'll have a period of innovation.
link |
02:34:48.460
You know, people were talking like Elizabeth Warren was talking about breaking up the tech companies very clearly.
link |
02:34:53.460
Now, she didn't win and I suspect that won't happen.
link |
02:34:56.460
But I also suspect that Google might be smart enough to see they should do something more than just put privacy perfume on Chrome.
link |
02:35:03.460
They should maybe get rid of Double Click or something, divest something.
link |
02:35:06.460
I don't know. It might happen.
link |
02:35:08.460
So Brave might inspire Google to completely change the way they're doing things?
link |
02:35:11.460
They're already doing something you may have read about called the Privacy Sandbox or Flock,
link |
02:35:17.460
which they have this bird metaphor going, Turtledove, Fledge.
link |
02:35:22.460
But these systems have been very googly, kind of overengineered.
link |
02:35:26.460
And yet, depending on differential privacy, which has weakness over time,
link |
02:35:30.460
if you know how that works, it's kind of injecting noise to hide you in a crowd.
link |
02:35:34.460
But over time, an adversary can pull you out of the crowd.
link |
02:35:37.460
This doesn't look like it's going to become a standard like Apple, Brave, Mozilla.
link |
02:35:41.460
We're not going to just say, oh, Google, you saved us.
link |
02:35:44.460
You've invented the Privacy Sandbox, so I'll just adopt it.
link |
02:35:47.460
Not going to be that easy.
link |
02:35:48.460
It's going to be more like pieces of what we do in Brave,
link |
02:35:51.460
the synonymous ad matching or the blind signature cryptography we used to confirm the ad impressions.
link |
02:35:56.460
That's David Chum's invention.
link |
02:35:59.460
That could get standardized.
link |
02:36:00.460
In fact, some of that is being standardized.
link |
02:36:02.460
Even Google's in favor of so called trust tokens,
link |
02:36:04.460
which are Xiaomi and blind signature certs.
link |
02:36:07.460
But they're not using them for ad confirmations,
link |
02:36:09.460
because they don't want to blow up their own business.
link |
02:36:11.460
And they need to let some of the publishers they serve have other ad tech scripts on the page.
link |
02:36:17.460
And so they're kind of caught.
link |
02:36:18.460
And this is something I realized doing Brave.
link |
02:36:20.460
I thought, what's Google's innovators dilemma apart from just being mature
link |
02:36:24.460
and having trouble innovating?
link |
02:36:26.460
It's that they have come to depend on this ad tech system that has all these vendors
link |
02:36:32.460
that publishers rely on, because publishers aren't technical enough.
link |
02:36:36.460
And I feel for the publishers, but I realized the users have to come first.
link |
02:36:39.460
And if you give the users a better browser that's faster,
link |
02:36:43.460
then you'll get enough users to give back or support publishers.
link |
02:36:47.460
The speed and the battery savings and the data plan savings are significant.
link |
02:36:50.460
There's so much bad JavaScript involved in ad tech that if you block it
link |
02:36:53.460
and you sort of chop off the what's called the programmatic waterfall,
link |
02:36:57.460
which chains a bunch of requests.
link |
02:36:59.460
Yeah, that's one of the incredible things about Brave.
link |
02:37:01.460
I guess you're saying you should attribute it to the fact that the message JavaScript,
link |
02:37:05.460
no offense, it's not my exclusive.
link |
02:37:10.460
I mean, Brave just feels faster.
link |
02:37:14.460
I mean, Chrome was fast.
link |
02:37:16.460
One of the things that it was like impressive is it showed that browsers could be really fast.
link |
02:37:21.460
And Brave is even faster than that, which is incredible.
link |
02:37:24.460
And it saves the network, which means data plan, it saves battery
link |
02:37:27.460
because the radio consumes your battery when it's running more to do those requests.
link |
02:37:31.460
And it's just stunning how many there are.
link |
02:37:33.460
Some of my Google friends are like, oh, that's just that bad site.
link |
02:37:35.460
They'll fix it.
link |
02:37:36.460
And you actually do a survey of web pages.
link |
02:37:38.460
They're mostly like that.
link |
02:37:40.460
I know Google engineers could make everything super efficient,
link |
02:37:43.460
but they can't, especially in antifrust court, do it.
link |
02:37:45.460
They cannot take over all the publishers and do that.
link |
02:37:48.460
They're trying with accelerated mobile profile AMP.
link |
02:37:51.460
They're trying to pull publishers who are like, oh, you poor publishers,
link |
02:37:54.460
don't know how to make your pages fast.
link |
02:37:56.460
Put them on our AMP system and we'll give you extra placement in the search carousel.
link |
02:38:00.460
That's an antifrust problem for one.
link |
02:38:02.460
But it's also publishers we talk to hate it because it degrades their brand.
link |
02:38:05.460
Now, they look like a gig writer wrote a piece that's got Google's framing an AMP URL on top of it.
link |
02:38:11.460
And they're trying to fix that too.
link |
02:38:13.460
But it just looks like Google's borgifying all these publishers
link |
02:38:16.460
and they don't want to be plugged into the borg cube.
link |
02:38:18.460
They want to build up their own brand and have loyal readers.
link |
02:38:21.460
So, you know, I'm in favor of giving the users power to help all the publishers
link |
02:38:27.460
and the little platoons and the creators.
link |
02:38:29.460
And so we talked about Patreon.
link |
02:38:30.460
What about social networks?
link |
02:38:31.460
Well, they're inherently like search a global algorithm.
link |
02:38:35.460
You're trying to find friends of friends.
link |
02:38:36.460
You're doing the transitive closure of a graph induced by this friend of relation.
link |
02:38:41.460
But you should own your friend relation.
link |
02:38:44.460
You should own your posts.
link |
02:38:46.460
They shouldn't be owned by somebody else who can take them down or send to them.
link |
02:38:50.460
And your friend relations, you should be able to find those friends on other networks.
link |
02:38:53.460
And that's why I've tweeted about this.
link |
02:38:55.460
I haven't built it yet.
link |
02:38:56.460
What if the browser could keep track of those for you?
link |
02:38:59.460
What if the browser could maybe combine Facebook and Twitter
link |
02:39:03.460
and you could find your friends on both and you could have a sort of...
link |
02:39:06.460
So that relationship is not owned by Facebook or Twitter.
link |
02:39:09.460
It's owned by you through the browser.
link |
02:39:11.460
They don't have terms of use and they'll say they own it.
link |
02:39:13.460
But if they zap you on one and you're still on the other, your friends find you
link |
02:39:17.460
and the browser could preserve a combined view.
link |
02:39:20.460
You could resurrect almost across networks.
link |
02:39:23.460
It's something I want to maybe quickly ask you about.
link |
02:39:26.460
On that front, there's been quite a lot of centralized...
link |
02:39:31.460
We talked about Wall Street Bets and then Robinhood.
link |
02:39:34.460
There's been centralized banning of different accounts
link |
02:39:38.460
and removing like Parler, for example, from AWS and this kind of overreach of centralized control.
link |
02:39:45.460
Is your hope that it's possible to...
link |
02:39:48.460
What are your thoughts about that in general?
link |
02:39:50.460
Is it possible to create tools that give individual people the power
link |
02:39:56.460
to fight back against overreach of such control?
link |
02:39:59.460
So we're talking about oligarchy, I do think.
link |
02:40:02.460
And that if it controls a nation state, that's formidable.
link |
02:40:05.460
It's the tax and the police power, the military power.
link |
02:40:08.460
It means that you may have the great firewall of China.
link |
02:40:11.460
You may have people in China who are jailed because of their tweets.
link |
02:40:14.460
This is a serious threat.
link |
02:40:16.460
I can't minimize it or say that we'll win.
link |
02:40:18.460
I don't know how it's going to go.
link |
02:40:20.460
But I do think, like I said earlier about the cutting of reason,
link |
02:40:23.460
people find ways around things, the internet routes around censorship.
link |
02:40:26.460
And this is not to endorse any particular bad faction.
link |
02:40:29.460
One of the things that happens when you try to wave the free speech flag too much,
link |
02:40:33.460
I'm not going to censor anything and you get colonized by terrible, terrible people.
link |
02:40:37.460
I don't care if you call them neo Nazis, some of them could be doing illegal things.
link |
02:40:41.460
And you don't want them colonizing because it'll ruin your reputation and destroy your business.
link |
02:40:46.460
So what you really want is that kind of user first subsidiarity, that subjectivity.
link |
02:40:51.460
I want my social networks to be composited in some multi social user interface
link |
02:40:57.460
where I don't lose track of people across networks.
link |
02:40:59.460
And if they leave one or they get banned from one, I can find them on another.
link |
02:41:02.460
I can still sort of thread them together.
link |
02:41:04.460
That's brilliant.
link |
02:41:05.460
And this didn't happen because browsers got captured by the central powers.
link |
02:41:09.460
Why did they get captured mostly because of search?
link |
02:41:11.460
And search is a central algorithm.
link |
02:41:13.460
So Larry Page said this too many years ago.
link |
02:41:15.460
He said, with search, you're giving up a little privacy by handing the query over to us.
link |
02:41:19.460
And we'll error correct it.
link |
02:41:21.460
Alan used to be a Google executive.
link |
02:41:23.460
He said, oh yeah, we used to laugh.
link |
02:41:25.460
They'd all be doing typos and they'd be typing the wrong word.
link |
02:41:27.460
And we're like, no, dummy, type that query.
link |
02:41:29.460
And it's like, okay, Google might want to dial back that ego a little bit.
link |
02:41:32.460
But yes, you do see all the queries and you can improve them
link |
02:41:35.460
and you can find the best results.
link |
02:41:37.460
And that was Google's forte.
link |
02:41:38.460
When we did the Firefox deal in 2004, Google was really good.
link |
02:41:41.460
And over time, SEO, which is an adversarial game,
link |
02:41:45.460
and Google itself buying all these companies and crowding its own results page
link |
02:41:49.460
with its own tied in stuff, the YouTube.
link |
02:41:53.460
The slipper slope that happens when you have control over these kinds
link |
02:41:57.460
of really important mechanisms.
link |
02:41:59.460
Yeah, monopoly capitalism or cartel.
link |
02:42:01.460
You get this with the Robin Hoods and the hedge funds.
link |
02:42:04.460
You get sort of the money interest takeover and kind of abuse their power
link |
02:42:08.460
and wear out their welcome.
link |
02:42:09.460
So how do you get around that?
link |
02:42:11.460
You have to have either new land to go to, which some people's ancestors,
link |
02:42:16.460
not mine, did to found the country, mostly Irish, German.
link |
02:42:22.460
You have new virtual space people go to.
link |
02:42:25.460
And that requires an ISP or a Colo Center or Amazon to host you.
link |
02:42:31.460
It requires domain name registrar who will not strike you.
link |
02:42:35.460
And so when Parler was taken down, I thought that was egregious.
link |
02:42:40.460
Parler, it was not well designed.
link |
02:42:42.460
And I tried it out because I tried all these things, but I didn't use it.
link |
02:42:46.460
And I also felt they were being unfairly scored for not moderating
link |
02:42:49.460
because you can find tweets to this day that are horrendous
link |
02:42:52.460
and threaten all sorts of violence.
link |
02:42:54.460
Whereas Twitter, why isn't Twitter being taken down?
link |
02:42:56.460
But so it was very selective.
link |
02:42:57.460
It was the insiders who have the power are going to take out the newcomer.
link |
02:43:01.460
And it looked bad, sort of like the hedge funds sort of in GameStop.
link |
02:43:06.460
It looked bad.
link |
02:43:07.460
You know, you're seeing a piece in Time Magazine this week that's like
link |
02:43:10.460
basically saying, yeah, we interfere with the election,
link |
02:43:12.460
but it was great.
link |
02:43:13.460
Aren't we good?
link |
02:43:14.460
I don't know if you've seen this piece yet.
link |
02:43:15.460
No, I haven't.
link |
02:43:16.460
If you tried to say that as a Trump supporter in November after the election,
link |
02:43:21.460
you get banned from Twitter.
link |
02:43:22.460
But now time in its Twitter account is saying, you know, we saved the day.
link |
02:43:26.460
It's AFL CIO and big business.
link |
02:43:30.460
The Better Business Bureau got together, kept Trump from spreading fake news.
link |
02:43:34.460
So the country's kind of broken.
link |
02:43:36.460
I don't know how to fix that.
link |
02:43:37.460
The oligarchs have run wild in my opinion.
link |
02:43:39.460
And big tech is in the antitrust doc.
link |
02:43:42.460
What's going to happen?
link |
02:43:43.460
I don't think they get out.
link |
02:43:44.460
I think some of the DOJ and certainly the state cases,
link |
02:43:47.460
because they're separate cases, are not going to go away
link |
02:43:49.460
just because somebody got elected differently.
link |
02:43:51.460
And these are career prosecutors and they have a strong case.
link |
02:43:55.460
And Google's smart.
link |
02:43:56.460
Microsoft almost got split up, right?
link |
02:43:59.460
The judge, Thomas Penfield Jackson, he overreached.
link |
02:44:02.460
He didn't hold a hearing about the remedy.
link |
02:44:04.460
He just said, I'm going to break you up.
link |
02:44:06.460
And Microsoft appealed on the higher level court said, go back and figure this out.
link |
02:44:11.460
You're not breaking them up.
link |
02:44:12.460
You didn't even hold a hearing.
link |
02:44:13.460
And when they got back, Microsoft said, let's settle.
link |
02:44:15.460
Let's settle.
link |
02:44:16.460
We don't want to get broken up because Jackson was going to make the
link |
02:44:19.460
Opsco, the operating system company and the Opsco office,
link |
02:44:23.460
Word and Excel.
link |
02:44:24.460
And that would have been a huge blow to Microsoft.
link |
02:44:27.460
But ultimately, I don't know if you're optimistic or cynical
link |
02:44:31.460
about the possibility of breaking up big tech.
link |
02:44:34.460
To me, I'm optimistic that tools like Brave,
link |
02:44:39.460
I love the idea of owning your friendships.
link |
02:44:41.460
And users more and more owning the stuff is the only real way.
link |
02:44:46.460
Unfortunately, it's like the Wall Street bet subred is the only real
link |
02:44:49.460
way to fight the centralized power.
link |
02:44:51.460
You can't break them up with the regulation.
link |
02:44:53.460
It's very difficult.
link |
02:44:54.460
Certainly, I don't want to wait for the law.
link |
02:44:55.460
Netscape was long dead or acquired by AOL and effectively dead.
link |
02:44:58.460
It was only most of the return in Firefox to the market by the time
link |
02:45:02.460
that the USV Microsoft case was finally settled and the penalties were put
link |
02:45:06.460
in place.
link |
02:45:07.460
And yet, Antitrust has a role to play.
link |
02:45:11.460
Those penalties caused Microsoft to kind of turn away from the web.
link |
02:45:14.460
They did Windows Vista and they thought the web's too painful.
link |
02:45:17.460
We got punished in court and we had to standardize things with those
link |
02:45:20.460
standard people.
link |
02:45:21.460
So they ran back to proprietary lock in and Windows Vista flocked.
link |
02:45:24.460
It was late.
link |
02:45:25.460
It was bloated.
link |
02:45:26.460
Longhorn, remember.
link |
02:45:27.460
Now, what Google, I was going to say, but Google is smart enough,
link |
02:45:30.460
they won't get split up.
link |
02:45:31.460
They'll split something out to get off the hook, I think.
link |
02:45:35.460
This is a complicated subject, but I myself was so I decided to journey
link |
02:45:42.460
from the world of being a researcher at MIT and potentially doing a
link |
02:45:47.460
startup myself.
link |
02:45:48.460
And I've been thinking of, you know, I wanted to come to Silicon Valley
link |
02:45:52.460
to do so.
link |
02:45:53.460
It's the land of the entrepreneur.
link |
02:45:55.460
And there's a lot of my friends.
link |
02:45:57.460
A lot of them are successfully have been entrepreneurs themselves have
link |
02:46:01.460
said, do not come to Silicon Valley.
link |
02:46:03.460
You've started, you ran amazing teams of engineers.
link |
02:46:08.460
You started a lot of successful businesses.
link |
02:46:11.460
I wondered if you could comment on why a lot of people are leaving
link |
02:46:16.460
California.
link |
02:46:17.460
Is there something that could be fixed about California?
link |
02:46:19.460
If you were starting a business today, would you consider somewhere else
link |
02:46:24.460
like Austin or some other place or is Silicon Valley still?
link |
02:46:28.460
Is it just a little lull?
link |
02:46:30.460
Everybody's being overdramatic during this particular year of the
link |
02:46:34.460
coronavirus and so on.
link |
02:46:35.460
I think, you know, even Austin's getting overheated here.
link |
02:46:38.460
Yes.
link |
02:46:39.460
I've had relatives and friends move to Texas within the last few months.
link |
02:46:43.460
So Texas as a whole is a big place.
link |
02:46:45.460
And, you know, people are moving to Florida.
link |
02:46:48.460
There's a big movement toward Miami.
link |
02:46:50.460
Peter Tielke, these people, the mayor has been very business friendly
link |
02:46:55.460
about it, which I think is just good politics.
link |
02:46:58.460
America is fundamentally a commercial republic.
link |
02:47:00.460
So you would think this would be what's happening.
link |
02:47:02.460
For a long time, California was the golden state.
link |
02:47:04.460
I came here in late 76 when I was a teenager.
link |
02:47:08.460
It's in crushing debt to the lockdowns.
link |
02:47:11.460
It's got the highest taxes.
link |
02:47:13.460
That's got to matter.
link |
02:47:14.460
People will do a fleet at high taxes.
link |
02:47:17.460
It's got likely fires every year because of the deadfall.
link |
02:47:21.460
It's not global warming.
link |
02:47:22.460
It's because the forest weren't managed like they had been in the first
link |
02:47:25.460
part of the 20th century.
link |
02:47:27.460
Just, I would say, corruption at all levels, especially up to the governor
link |
02:47:32.460
who, you know, famously was eating at the French Laundry and claimed
link |
02:47:35.460
the outside was inside and they were out in masks off and it was great.
link |
02:47:39.460
Do what I say, not what I do.
link |
02:47:42.460
Rules for thee, but not for me.
link |
02:47:45.460
When you see that in leadership, people either run or they get rid
link |
02:47:49.460
of the leadership.
link |
02:47:50.460
So there's a recall drive, which is about to reach the threshold.
link |
02:47:53.460
Or in the old days, they get their guns, right?
link |
02:47:55.460
You don't put up with this junk.
link |
02:47:57.460
But ultimately, the thing that made Silicon Valley a special place,
link |
02:48:01.460
it gave freedom to like young kids, entrepreneurs, young minds,
link |
02:48:06.460
brave minds to think bold, to try different stuff.
link |
02:48:10.460
I mean, even if the taxes are high, so outside of financial stuff,
link |
02:48:14.460
outside of all of that.
link |
02:48:15.460
Housing is super expensive.
link |
02:48:16.460
Housing is super expensive.
link |
02:48:17.460
So it's hard.
link |
02:48:18.460
Okay, everything about startups is hard.
link |
02:48:20.460
And it was narrow and they didn't plan the roads, right?
link |
02:48:22.460
Yeah.
link |
02:48:23.460
They got rid of public transportation in LA like the Who Framed Roger
link |
02:48:26.460
Rabbit cartoon show that used to have trolley cars in Portland too.
link |
02:48:30.460
The oil companies and the DOD conspired to build highways
link |
02:48:34.460
and make cars dominant.
link |
02:48:35.460
And the rights of way are long gone.
link |
02:48:37.460
Like Elon's going to go underground.
link |
02:48:39.460
And I wish him well.
link |
02:48:40.460
That's probably the only way to do it now.
link |
02:48:42.460
But is it still a place?
link |
02:48:44.460
Do you think it's possible that Silicon Valley is still a place
link |
02:48:47.460
where magic happens?
link |
02:48:48.460
Where the next Google's built?
link |
02:48:49.460
Where the next, I mean, Brave is built where?
link |
02:48:53.460
I think all good things come to an end.
link |
02:48:55.460
I think the problem is Silicon Valley had strong network effects
link |
02:48:58.460
through the angel investor networks and the wealth effect.
link |
02:49:02.460
And originally you have to give the federal government credit.
link |
02:49:05.460
Like the ARPANET was a government project.
link |
02:49:07.460
Let's not kid ourselves.
link |
02:49:08.460
This wasn't wild free market, you know, libertarian capitalism.
link |
02:49:11.460
This was all Cold War stuff.
link |
02:49:13.460
You had out of the academia, you had Shockley and then the
link |
02:49:17.460
the Traders Aid and Fairchild and Intel.
link |
02:49:20.460
But now, you know, when's the last fab that was built in the valley?
link |
02:49:24.460
Micro Unity might have been the last.
link |
02:49:26.460
I don't know.
link |
02:49:27.460
We built a fab in Sunnyvale and in Micro Unity in starting early
link |
02:49:32.460
in the 90s and now the fabs are overseas.
link |
02:49:35.460
And the one thing that I would say that the oligarchs have
link |
02:49:39.460
intentionally done in both parties is sort of labor and environmental
link |
02:49:44.460
protection law arbitrage by going where the labor is cheaper
link |
02:49:47.460
and the environmental laws aren't as strict.
link |
02:49:49.460
And, you know, that's polluted the hell out of parts of China,
link |
02:49:51.460
but it's made things, you can make cheaper junk.
link |
02:49:54.460
And this is not a story that's over yet.
link |
02:49:58.460
So what is Silicon Valley for now?
link |
02:50:00.460
It's for the network effect, the brain trust of who you know,
link |
02:50:03.460
the parties, the Stanford sort of network.
link |
02:50:08.460
That's fragile too over time.
link |
02:50:10.460
I'm afraid, right?
link |
02:50:11.460
Stanford, a lot of good professors are like they still filter,
link |
02:50:16.460
you know, mainly based on socioeconomic status,
link |
02:50:19.460
but it's kind of a skate school.
link |
02:50:21.460
I had a friend hired out of Harvard 20 years ago at Netscape
link |
02:50:26.460
and we talked about Harvard and he said, yeah,
link |
02:50:28.460
there's still professors who are great on the curve.
link |
02:50:30.460
And I said, oh, yeah, I don't,
link |
02:50:31.460
they're any doing that at Stanford.
link |
02:50:33.460
And he said, oh, it was shocking.
link |
02:50:34.460
Some of the students got C's and D's and they were crying.
link |
02:50:37.460
It's like, yes, that's right.
link |
02:50:38.460
The precious deers can't take that at Stanford.
link |
02:50:40.460
So they get A's and B's.
link |
02:50:42.460
Now you look at China and say what you all about China,
link |
02:50:45.460
they prove Russia to a lot of math science training,
link |
02:50:49.460
a lot of engineering, a lot of people who are doing their coursework
link |
02:50:53.460
to get the A's and B's.
link |
02:50:55.460
So I'm an American.
link |
02:50:57.460
I'm born on the 4th of July.
link |
02:50:59.460
Really?
link |
02:51:00.460
4th of July.
link |
02:51:01.460
Yeah.
link |
02:51:02.460
And America, as I say, fundamentally is a commercial republic.
link |
02:51:04.460
You can try to make it something else.
link |
02:51:06.460
You can see it's the new Atlantis and mystify it.
link |
02:51:08.460
You could talk about it in a more, I think, correct way,
link |
02:51:10.460
which is 13 colonies that grew.
link |
02:51:12.460
And then there's a lot of local or original design anyway.
link |
02:51:16.460
The Federalist Papers talk about this.
link |
02:51:18.460
There's just a lot of subsidiarity.
link |
02:51:20.460
But that's been eroded over time.
link |
02:51:23.460
And like I say, a lot of the offshoring is hurt.
link |
02:51:26.460
So what happened with coronavirus?
link |
02:51:28.460
People working from home.
link |
02:51:30.460
At first it was funny because I have friends at Google who used to grumble
link |
02:51:33.460
that not only did they have to come into the office,
link |
02:51:35.460
if they joined a different team that was sent to a different office,
link |
02:51:37.460
they had to move.
link |
02:51:38.460
Or if the VA team was reconstituted in Munich,
link |
02:51:42.460
which it was after Lars Bock just got tired of JavaScript,
link |
02:51:46.460
that they hired in Munich,
link |
02:51:48.460
or they hired PhDs in Germany and moved into Munich.
link |
02:51:50.460
With coronavirus, everyone's working from home,
link |
02:51:52.460
and it's like, what a relief I can work for Google from home.
link |
02:51:54.460
But then the next shoe dropped,
link |
02:51:56.460
and people started asking Mark Zuckerberg,
link |
02:51:58.460
hey, can I move to my hometown in the Midwest?
link |
02:52:01.460
And he said, okay.
link |
02:52:02.460
And they said, I'll kind of keep getting myself in Valley Pay.
link |
02:52:05.460
No.
link |
02:52:06.460
We're going to figure out what your cost of living there is,
link |
02:52:08.460
and we're going to adjust your pay accordingly.
link |
02:52:10.460
And these colonies and these little mini experiments
link |
02:52:13.460
that all combine to the big giant experiment,
link |
02:52:15.460
I have a, I don't know,
link |
02:52:17.460
I have this vision of America,
link |
02:52:19.460
which is a country I was born in Russia,
link |
02:52:21.460
like I said here,
link |
02:52:22.460
and this is truly a wonderful country.
link |
02:52:24.460
I wasn't born on the 4th of July,
link |
02:52:26.460
but I might as well be.
link |
02:52:27.460
People still flee here.
link |
02:52:28.460
I still, and I'm a red blooded American at this point,
link |
02:52:31.460
and I have a sense that we've figured it out somehow.
link |
02:52:34.460
If Silicon Valley burns,
link |
02:52:36.460
another place will come up in this place
link |
02:52:38.460
that even more innovation and people will move.
link |
02:52:41.460
And the remote work might change fundamentally
link |
02:52:45.460
how we work or might not.
link |
02:52:47.460
It might just give you the freedom to then create
link |
02:52:49.460
many other small Silicon Valley throughout the place,
link |
02:52:52.460
like Austin included, but other places as well.
link |
02:52:54.460
And we somehow figured it out.
link |
02:52:57.460
And I think that's true,
link |
02:52:59.460
that there will be more mobility
link |
02:53:01.460
and maybe new places that come up.
link |
02:53:03.460
I don't know if Silicon Valley has, you know,
link |
02:53:06.460
passed some sell by date because it did hurt.
link |
02:53:10.460
The coronavirus hurt.
link |
02:53:11.460
The lockdowns hurt in the sense that
link |
02:53:13.460
part of what keeps things going is social.
link |
02:53:15.460
And so a lot of young people,
link |
02:53:16.460
even before coronavirus, moved to San Francisco.
link |
02:53:19.460
It was very strange to watch
link |
02:53:20.460
because in the 80s, we all lived in the valley
link |
02:53:22.460
and it was less populated.
link |
02:53:24.460
And San Francisco was grungier.
link |
02:53:25.460
It was more like dirty hairy in the 70s.
link |
02:53:27.460
But by the 90s, and Jamie runs a nightclub there,
link |
02:53:31.460
and he's talked about this.
link |
02:53:32.460
You had sort of wealthy tech people moving in,
link |
02:53:34.460
south of market, fancy townhouses being built.
link |
02:53:37.460
And that's continued in such a point
link |
02:53:39.460
that it's almost like, what's the movie
link |
02:53:41.460
by the South African director Nils Jody Foster
link |
02:53:43.460
up in the space colony.
link |
02:53:45.460
Matt Damon is the guy on the earth who has to go up.
link |
02:53:48.460
And anyway, it's about the stratification.
link |
02:53:50.460
It's about the great inequality.
link |
02:53:51.460
The people in the space station have like amazing
link |
02:53:53.460
medical autodocs that can extend their life
link |
02:53:56.460
or save them cure cancer.
link |
02:53:57.460
People on earth are all suffering,
link |
02:53:59.460
ground down in poverty.
link |
02:54:02.460
And, you know, that sort of happened.
link |
02:54:05.460
While I was here, you saw a lot of money
link |
02:54:08.460
drive prices up along the narrow peninsula,
link |
02:54:11.460
and the single people wanted nightlife
link |
02:54:13.460
so they were in the city,
link |
02:54:14.460
and the condos in the city got super expensive.
link |
02:54:16.460
And I know even Google friends who are, you know,
link |
02:54:19.460
socially responsible say,
link |
02:54:20.460
we should have more housing built.
link |
02:54:22.460
We should have yes in my backyard, not in my backyard.
link |
02:54:25.460
But that's not happening, as far as I can tell.
link |
02:54:28.460
And from the government to the incumbent,
link |
02:54:31.460
you know, landowners and renters,
link |
02:54:33.460
it's just not happening.
link |
02:54:34.460
And that has to drive people away.
link |
02:54:37.460
And I appreciate that people come here
link |
02:54:39.460
and you should wait for the prices to moderate.
link |
02:54:41.460
They will.
link |
02:54:42.460
But a lot of people are going to go
link |
02:54:44.460
where the prices are lower.
link |
02:54:47.460
You, and sorry for silly questions here,
link |
02:54:50.460
but just looking back,
link |
02:54:51.460
you have created things,
link |
02:54:54.460
have been part of creating things
link |
02:54:56.460
that have transformed this world,
link |
02:54:58.460
the world of technology,
link |
02:55:00.460
perhaps more than almost anything else.
link |
02:55:04.460
But you're still a human being.
link |
02:55:07.460
And unfortunately, this ride ends.
link |
02:55:10.460
Do you ever think about your own mortality?
link |
02:55:13.460
Not too much.
link |
02:55:14.460
I mean, I'm Roman Catholic,
link |
02:55:17.460
so I am not afraid of death.
link |
02:55:19.460
I think a lot of people who have problems with death
link |
02:55:24.460
are suffering from some lack of either faith
link |
02:55:30.460
in their transcending death,
link |
02:55:32.460
maybe they don't have children
link |
02:55:34.460
or they feel like, you know,
link |
02:55:36.460
they get later in life
link |
02:55:37.460
and they feel like they've missed opportunities
link |
02:55:39.460
to do something that endures.
link |
02:55:41.460
And I sympathize a lot because I'm old.
link |
02:55:43.460
I got married fairly old,
link |
02:55:44.460
so I understand all that.
link |
02:55:46.460
Nothing human is alien to me, as Terence said.
link |
02:55:50.460
But I don't fear it, no.
link |
02:55:53.460
What do you hope your legacy is?
link |
02:55:56.460
It's going to be JavaScript.
link |
02:55:58.460
I think, you know,
link |
02:55:59.460
my legacy has more to do with my children
link |
02:56:01.460
and their children.
link |
02:56:02.460
I think it also has to do with web standards.
link |
02:56:05.460
It has to do with things like Brave.
link |
02:56:07.460
The things we did with Firefox,
link |
02:56:09.460
when we did, you know,
link |
02:56:11.460
I'm not going to over solve Brave,
link |
02:56:12.460
but I think Brave is important
link |
02:56:13.460
and we will continue to prove this in a way
link |
02:56:15.460
that counts for many decades to come.
link |
02:56:17.460
But even Firefox,
link |
02:56:19.460
whatever its future fortune,
link |
02:56:20.460
showed you can restart the browser market.
link |
02:56:22.460
This thing you said about people opting out
link |
02:56:25.460
and routing around,
link |
02:56:26.460
you don't need everybody to do that.
link |
02:56:28.460
It's more like Talib's stubborn minorities
link |
02:56:30.460
than do that.
link |
02:56:31.460
It's the lead users,
link |
02:56:32.460
Airfront Hippos lead users.
link |
02:56:33.460
You can be a few percent,
link |
02:56:34.460
you can tilt the market.
link |
02:56:35.460
And that can be done in spite of the incumbents
link |
02:56:38.460
of money interests not being in favor of what you're doing.
link |
02:56:41.460
So I think what we do with Firefox won't be forgotten
link |
02:56:44.460
and it needs to be done more
link |
02:56:45.460
and we're doing it with Brave
link |
02:56:46.460
and you could argue that other projects are doing it
link |
02:56:48.460
in some ways blockchain is doing it.
link |
02:56:50.460
The Robinhood take down the use of Robinhood
link |
02:56:55.460
by the Wall Street Bets kids, similar.
link |
02:56:58.460
So yeah, that kind of spirit endures.
link |
02:57:00.460
And I think it in some ways it's American, right?
link |
02:57:03.460
It's not hard revolutionary.
link |
02:57:05.460
It's not trying to burn the past and destroy everything.
link |
02:57:08.460
It's more like we have these certain, let's say, rights.
link |
02:57:14.460
We have duties too.
link |
02:57:15.460
So there's some debate about which comes first in American jurisprudence
link |
02:57:18.460
and the founding documents.
link |
02:57:19.460
But as long as things are working,
link |
02:57:22.460
we'll be like pragmatic Americans,
link |
02:57:25.460
like the Tocqueville described in his writings.
link |
02:57:28.460
But if things get too out of whack for one reason or another,
link |
02:57:31.460
too unequal, too oligarchic and abusive,
link |
02:57:34.460
we're going to start our rights
link |
02:57:36.460
and even a few of us can do it.
link |
02:57:38.460
And even in the American Revolution,
link |
02:57:40.460
it was a minority who fought
link |
02:57:41.460
and put their lives, treasure and sacred honor at stake.
link |
02:57:45.460
A bunch of people went to Upper Canada.
link |
02:57:48.460
I think it was called Ontario.
link |
02:57:50.460
Yeah, that's the beautiful thing.
link |
02:57:52.460
I mean, that is at the core where your work stands for
link |
02:57:54.460
is that a few people can have the power to transform society
link |
02:57:59.460
with just a few radical ideas
link |
02:58:01.460
with just a little bit of code to change the world.
link |
02:58:04.460
Gotta do it.
link |
02:58:05.460
And that's empowering.
link |
02:58:06.460
And that is the American way.
link |
02:58:07.460
That's why this country is, I believe,
link |
02:58:09.460
the greatest country in the world.
link |
02:58:10.460
That's not...
link |
02:58:11.460
Romance says it too much,
link |
02:58:13.460
but I think some special things have already happened
link |
02:58:16.460
in this country and will continue to happen.
link |
02:58:18.460
And that spirit can continue.
link |
02:58:20.460
No matter who comes here,
link |
02:58:22.460
they can adopt those folk ways and that spirit.
link |
02:58:25.460
Brendan, as I can't tell you how much I was freaking out,
link |
02:58:28.460
how much of an honor it is to talk to you.
link |
02:58:30.460
You're an incredible human being.
link |
02:58:31.460
It's one of my favorite conversations ever.
link |
02:58:33.460
Thank you so much for wasting all this time with me.
link |
02:58:35.460
I really appreciate it.
link |
02:58:36.460
Oh, it seems like you have a breeze.
link |
02:58:37.460
My pleasure.
link |
02:58:39.460
Thank you for listening to this conversation with Brendan Nike.
link |
02:58:42.460
And thank you to our sponsors,
link |
02:58:44.460
Jordan Harbinger Show,
link |
02:58:46.460
Sunbasket Meal Delivery Service,
link |
02:58:48.460
BetterHelp Online Therapy,
link |
02:58:50.460
8Sleep Self Cooling Mattress.
link |
02:58:52.460
Click the sponsor links to get a discount
link |
02:58:54.460
and to support this podcast.
link |
02:58:56.460
And now, let me leave you with some words from Jeff Atwood.
link |
02:59:00.460
Any app that can be written in JavaScript
link |
02:59:03.460
will eventually be written in JavaScript.
link |
02:59:06.460
Thank you for listening and hope to see you next time.