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.560
creator of the JavaScript programming language,
link |
00:00:05.700
cofounder of Mozilla, which created the Firefox browser,
link |
00:00:09.200
and now cofounder and CEO of Brave Software,
link |
00:00:12.860
which has created the Brave browser.
link |
00:00:15.440
Each of these are revolutionary technologies.
link |
00:00:18.340
JavaScript is one of the most widely used
link |
00:00:21.120
and impactful programming languages in the world.
link |
00:00:24.920
Firefox pioneered many browser ideas that we love today
link |
00:00:29.040
or even take for granted today,
link |
00:00:31.280
and Brave is looking to revolutionize
link |
00:00:33.540
not only the browser, but content creation online
link |
00:00:36.640
and the nature of the internet
link |
00:00:38.280
to make it fundamentally about respecting
link |
00:00:40.680
people's control over their data.
link |
00:00:43.440
Quick mention of our sponsors.
link |
00:00:45.400
The Jordan Harbinger Show,
link |
00:00:47.360
Sun Basket Meal Delivery Service,
link |
00:00:49.760
Better Help Online Therapy,
link |
00:00:51.540
and AidSleep Self Cleaning Mattress.
link |
00:00:53.940
Click the sponsor links to get a discount
link |
00:00:56.240
and to support this podcast.
link |
00:00:58.120
As a side note, let me say that there's a tension
link |
00:01:00.840
between theory and engineering
link |
00:01:03.160
that I've been thinking a lot about.
link |
00:01:05.220
I tweeted something like,
link |
00:01:06.960
"'Good execution is more important than a good idea,
link |
00:01:09.840
"'but one helps the other.'"
link |
00:01:11.800
I think the wording of that sucks,
link |
00:01:13.480
but what I mean is a good idea is a must,
link |
00:01:16.880
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.720
I think some mix of good timing, good idea,
link |
00:01:26.040
and good execution is essential.
link |
00:01:28.160
Getting that mix right is tough,
link |
00:01:29.840
and Brendan, somehow, multiple times in his career,
link |
00:01:32.880
did just that.
link |
00:01:34.260
I'm starting to believe it's more art than science,
link |
00:01:36.640
like most interesting things in life.
link |
00:01:39.200
If you enjoy this thing, subscribe on YouTube,
link |
00:01:41.720
review an Apple podcast, follow on Spotify,
link |
00:01:44.680
support on Patreon, or connect with me on Twitter
link |
00:01:47.480
at Lex Friedman.
link |
00:01:48.840
And now, here's my conversation with Brendan Eich.
link |
00:01:53.360
When did you first fall in love with programming?
link |
00:01:56.000
I didn't program a lot when I was in high school,
link |
00:01:58.320
but I had a friend who had a Commodore PET,
link |
00:02:01.580
and after we saw Star Wars, he said,
link |
00:02:03.160
"'Hey, let's make a basic program
link |
00:02:05.660
"'that does the Death Star Trench run.'"
link |
00:02:08.040
And it was just simple 2D graphics,
link |
00:02:10.960
and I didn't know what I was doing,
link |
00:02:11.840
so I just helped him out on the math and stuff like that.
link |
00:02:14.320
I was a math and science kid.
link |
00:02:16.120
I was really into the HP calculators of the early mid-'70s.
link |
00:02:20.120
These were the RPN.
link |
00:02:21.600
They were really strongly built,
link |
00:02:23.440
and as Arik Goldfinger said of gold, divinely heavy.
link |
00:02:27.520
There's probably some gold in them, too, gold metalization.
link |
00:02:29.880
But they were awesome calculators,
link |
00:02:31.300
and they had all the scientific functions,
link |
00:02:33.160
so I was really into that.
link |
00:02:35.420
So I aimed toward physics.
link |
00:02:38.720
I was a little late for the, I think,
link |
00:02:40.640
the 20th century golden age,
link |
00:02:42.460
and I read a lot of science fiction,
link |
00:02:43.760
so I was like, yeah, it's on the hyperdrives
link |
00:02:45.880
and warp drives, and physics was not gonna get there quickly,
link |
00:02:50.360
and I started hacking on computers
link |
00:02:52.480
while I was studying physics as an undergraduate
link |
00:02:55.040
at Santa Clara University,
link |
00:02:56.560
and I dodged the Fortran bullet
link |
00:03:00.120
because I was in the science department
link |
00:03:02.040
instead of the engineering department,
link |
00:03:03.140
where they still did Fortran card decks.
link |
00:03:05.720
I think they had an auto collator.
link |
00:03:07.520
But we were using Pascal,
link |
00:03:09.320
and I got one of the first portable C Compilers ports
link |
00:03:15.200
to the DEC minicomputers we were using,
link |
00:03:17.760
and I fell in love with programming
link |
00:03:19.320
just based on procedural abstraction, Pascal,
link |
00:03:25.880
just what now would be considered old school,
link |
00:03:28.880
like structured programming from the 70s.
link |
00:03:31.600
Niklaus Wirth, the creator of Pascal,
link |
00:03:33.480
was a good writer and a good pedagogue, right?
link |
00:03:36.160
He always at ETH would do these courses
link |
00:03:38.220
where it's like build your own computer,
link |
00:03:40.120
build your own compiler, build your own operating system.
link |
00:03:42.720
It was scratch. Yeah, kind of.
link |
00:03:44.220
And I know some people who were grad students under him
link |
00:03:47.120
and said he would torture the students
link |
00:03:50.480
with things like this custom email system
link |
00:03:52.260
that had 25 word limit and things like that.
link |
00:03:56.820
I unfortunately dodged both the Pascal
link |
00:03:59.240
and the Fortran bullets.
link |
00:04:00.740
Could you maybe linger on the Pascal?
link |
00:04:04.760
What kind of programming language was it?
link |
00:04:06.320
What is it reminiscent of today?
link |
00:04:08.160
Because it sounds like it may have had an impact
link |
00:04:11.440
on your own trajectory.
link |
00:04:12.600
Yeah, it was in the ALGOL family,
link |
00:04:14.460
and ALGOL was the big successful language design
link |
00:04:20.960
and compiler project in the 60s.
link |
00:04:23.160
It had a successor called ALGOL 68,
link |
00:04:24.960
which was ambitious but not as successful.
link |
00:04:27.440
But Pascal was kind of wordy procedures
link |
00:04:31.000
and functions language.
link |
00:04:32.580
It distinguished between functions
link |
00:04:33.920
which return a value and procedures which don't,
link |
00:04:36.160
which just compute.
link |
00:04:37.880
And you could say that whole ALGOL family went into ADA.
link |
00:04:42.580
Pascal had a second life thanks to Borland
link |
00:04:44.560
with Turbo Pascal, which was hugely successful.
link |
00:04:48.920
I think in large part due to Anders Helberg,
link |
00:04:51.000
who then went to Microsoft and did C Sharp and done that
link |
00:04:53.820
with his team there and has done really well
link |
00:04:55.520
doing TypeScript, type JavaScript.
link |
00:04:58.000
So yeah, there's a lineage here.
link |
00:05:00.800
But I was also interested in C and Unix
link |
00:05:03.800
by the time I was an undergrad
link |
00:05:05.680
because people were bringing Unix up
link |
00:05:07.840
on all sorts of hardware.
link |
00:05:09.240
I had some friends who were doing
link |
00:05:10.200
their own wirewrapped computers, 6820 maybe.
link |
00:05:14.480
And I was wirewrapping for my engineering course,
link |
00:05:19.160
6809 or something simpler, building a computer on a board.
link |
00:05:22.480
And I wanted to build a more ambitious one
link |
00:05:24.720
and port Unix to it, but I picked the wrong processor.
link |
00:05:26.960
I picked the National Semiconductor NS16032,
link |
00:05:30.960
which was this amazing, you know,
link |
00:05:33.440
CISC, complex instruction set computer,
link |
00:05:37.200
and not the reduced instruction set computers
link |
00:05:39.360
that were just being contemplated into the mid eighties.
link |
00:05:43.740
And RISC ultimately went out.
link |
00:05:45.440
RISC won in some ways, it dissolved into,
link |
00:05:48.360
you have both now, you have these super scalar architectures
link |
00:05:50.800
where like Intel has kept probably too much
link |
00:05:54.160
backward compatibility at the instruction level,
link |
00:05:56.800
but that's just, there's a front end that parses that
link |
00:05:58.920
into these, you know, these wide internal instructions.
link |
00:06:01.240
So, you know, the very long instruction word research
link |
00:06:04.440
that was also interesting at the time
link |
00:06:06.900
kind of became the micro architecture
link |
00:06:08.560
inside the backward compatible Intel.
link |
00:06:11.440
But I picked a National Semi chip
link |
00:06:13.160
and it never got made successfully.
link |
00:06:14.840
It was full of bugs and I never could have brought it up.
link |
00:06:17.800
But I went on out of physics after three years
link |
00:06:21.160
into math, computer science.
link |
00:06:23.240
And like I said, I did it because I saw,
link |
00:06:25.740
I was being sort of childlike and naive about physics.
link |
00:06:28.420
And I thought, meanwhile, the Valley is go go for computers.
link |
00:06:32.120
The Apple II, right?
link |
00:06:33.700
The PC, the Intel 8086, 8088 based PC,
link |
00:06:40.720
the IBM, you know, gave Microsoft the future for,
link |
00:06:45.040
you know, somewhat fishy deal.
link |
00:06:46.800
So it was wide open in the computing space,
link |
00:06:48.640
but in physics, you were as optimistic about physics as?
link |
00:06:52.200
No, I mean, I was one of three brothers
link |
00:06:54.680
who were all in the same grade.
link |
00:06:56.060
I have a twin and a younger brother who skipped second grade
link |
00:07:00.920
and was with us the whole time after that.
link |
00:07:02.980
And, you know, he went on,
link |
00:07:04.480
he actually studied under Kip Thorne at Caltech.
link |
00:07:07.520
But he also didn't, he ended up in software.
link |
00:07:09.560
He didn't talk about physics stuff.
link |
00:07:12.340
Does it make you sad that theoretical physics,
link |
00:07:16.080
even with string theory,
link |
00:07:17.120
hasn't really had any foundational breakthroughs
link |
00:07:20.920
in the latter part of the 20th century?
link |
00:07:23.320
Yeah, in fact, I'd say the problem is theory
link |
00:07:25.220
over experiment.
link |
00:07:27.120
I would say, you know, we need more Aristotle
link |
00:07:29.920
and less Plato.
link |
00:07:31.240
You know, mathematics is not all physical.
link |
00:07:33.800
There are lots of mathematics that cannot be realized
link |
00:07:36.280
as far as I know in this world.
link |
00:07:38.360
So to understand the world, you need to do experiments.
link |
00:07:41.000
You need to not just dream up inductive theories
link |
00:07:45.200
that could have lots of alternative theories
link |
00:07:47.880
competing with them, with no way to decide between them,
link |
00:07:50.120
except aesthetics, which is not a good guide in my opinion.
link |
00:07:53.000
Yeah, I don't know if you are friends
link |
00:07:54.760
or have a relationship with Elon Musk.
link |
00:07:56.880
Where's the, in terms of like what you would love to see
link |
00:08:00.520
our society investing in, building up,
link |
00:08:02.800
is it closer to Elon or is it closer to Feynman
link |
00:08:07.080
and Einstein and those?
link |
00:08:09.120
Well, those gentlemen are no longer with us
link |
00:08:10.600
and I think that's noticed.
link |
00:08:12.000
So like I said, the real glory days of physics,
link |
00:08:14.480
the famous pictures from Germany before the second war
link |
00:08:17.280
were just a fantastic assembly of brains,
link |
00:08:21.760
Schrodinger and Einstein.
link |
00:08:23.120
And physics, I think, took a wrong turn
link |
00:08:26.320
that maybe all of, I would say, Western science
link |
00:08:30.040
took in going for models over reality, right?
link |
00:08:33.760
You see this in all sorts of fields.
link |
00:08:35.320
Now, we can build models that are very predictive
link |
00:08:38.000
and generative and then we build actual devices
link |
00:08:40.320
or semiconductors, things like that.
link |
00:08:42.200
That's good, I'm not dismissing that.
link |
00:08:44.440
We need good models, we need to experiment
link |
00:08:46.880
and prove them and test them.
link |
00:08:49.680
But the problem I've seen in physics,
link |
00:08:51.920
which you see certainly in economics, the dismal science,
link |
00:08:55.640
and you see surprisingly in other so called hard sciences
link |
00:08:59.080
is models that don't really have to be
link |
00:09:04.320
tested against reality.
link |
00:09:05.440
They can instead become policy tools
link |
00:09:07.640
or they can become, like I said,
link |
00:09:09.920
one of a large family of alternate theories
link |
00:09:12.960
that could be as predictive
link |
00:09:14.640
but nobody's doing the winnowing out.
link |
00:09:17.000
That's such an interesting tension in society.
link |
00:09:18.920
You see this in even the software scientists
link |
00:09:21.000
which have a deep love for psychology.
link |
00:09:24.440
You see this in epidemiology, not with the virus.
link |
00:09:27.200
Absolutely.
link |
00:09:28.040
There's this tension of how much of the world
link |
00:09:31.280
can we understand through just a beautifully fit model?
link |
00:09:35.040
And then at the same time, my main work
link |
00:09:37.640
is in machine learning where it's like
link |
00:09:41.000
there is no provable thing usually.
link |
00:09:44.400
It's all about just getting the right data set
link |
00:09:47.760
and getting tricks and so on.
link |
00:09:49.640
And there's this tension even in my own soul
link |
00:09:51.760
of I grew up on theoretical computer science.
link |
00:09:55.680
I loved approximation algorithms,
link |
00:09:58.920
all of that different complexity classes,
link |
00:10:01.920
just those little puzzles.
link |
00:10:03.960
I mean, I don't know, to you as somebody
link |
00:10:06.200
who was in math and computer science
link |
00:10:08.600
and then ended up going into places
link |
00:10:11.280
where you engineer some of the most impactful things
link |
00:10:13.880
in this world, do you see the P versus NP,
link |
00:10:18.680
all that whole space is interesting at all?
link |
00:10:21.280
Yeah, it's not that useful in practice.
link |
00:10:24.640
People are using it with sort of crypto analysis
link |
00:10:27.920
or asymptotic arguments about can we have
link |
00:10:31.760
a quantum resistant crypto algorithm, things like that,
link |
00:10:35.320
which may not be practical, right?
link |
00:10:36.560
If you follow Mikhail Diakonov or Gil Kalai,
link |
00:10:40.400
there are big questions about how quantum computing
link |
00:10:43.640
will scale up, how practical it will be.
link |
00:10:46.800
Is that something that you think about quantum computing?
link |
00:10:49.880
Not except for spare time.
link |
00:10:51.080
Like you said, I'm not using this kind of computer science
link |
00:10:53.560
in practice because almost everything now is engineering
link |
00:10:57.680
and finding ways to get computers
link |
00:11:02.160
to be more useful for people,
link |
00:11:03.320
which goes from design problems,
link |
00:11:06.160
which are really kind of an art.
link |
00:11:07.440
Like you said, anything you can't automate is an art.
link |
00:11:09.960
Well, we can have machine learning compose music
link |
00:11:13.360
and it can imitate, you can train it,
link |
00:11:14.800
and it can sound kind of decent,
link |
00:11:16.040
but maybe lacking that je ne sais quoi.
link |
00:11:18.680
But user interface still, I think, requires human art.
link |
00:11:23.560
So speaking of things that didn't follow
link |
00:11:26.440
a perfect theory and model, JavaScript,
link |
00:11:30.480
so there's two things.
link |
00:11:31.320
One, it had an impact on the world at a huge scale,
link |
00:11:34.360
obviously, and it also still is one of probably
link |
00:11:38.920
the most popular programming language in the world.
link |
00:11:41.400
So can we go back to the origin story?
link |
00:11:45.200
Can you tell the story of how JavaScript was created?
link |
00:11:47.840
Yeah, I was at Silicon Graphics
link |
00:11:49.960
after graduate school for seven years,
link |
00:11:53.080
and it got to be big and successful
link |
00:11:54.720
and divisionalized and political,
link |
00:11:56.800
and I thought kind of boring.
link |
00:12:00.480
And a friend who'd been there went to one of the last
link |
00:12:03.960
of the super companies, the super startups
link |
00:12:06.040
in the early 90s.
link |
00:12:07.640
There were several.
link |
00:12:08.720
I suppose General Magic was a little after that
link |
00:12:10.840
around the same time.
link |
00:12:11.920
But Micro Unity was that company that I went to,
link |
00:12:14.360
and it was because my friend Jeff Weinstein
link |
00:12:16.880
had gone there from Silicon Graphics.
link |
00:12:18.040
He recruited me, and Micro Unity was doing everything.
link |
00:12:21.960
So this was like the ultimate sort of pretend grad school.
link |
00:12:26.080
It was doing a new fab, new semiconductor process.
link |
00:12:29.360
It was doing new analog and digital circuits
link |
00:12:32.600
on the same very large but not wafer scale chip.
link |
00:12:36.080
Originally, it was five centimeters on a side.
link |
00:12:40.400
It was really hot too, so I needed a water cooler.
link |
00:12:43.880
It was a Craykiller, and then they shrunk it,
link |
00:12:46.280
and they tried to do a home sort of media processor
link |
00:12:49.360
that was essentially a barrel processor.
link |
00:12:51.920
But you could think of trying to do all the things
link |
00:12:55.440
that we now see in modern architectures
link |
00:12:58.160
with short vector instructions
link |
00:13:00.240
and sort of wide instructions or multiple issue,
link |
00:13:05.120
and doing a lot of the stuff in software
link |
00:13:07.520
because the second iteration, the set top box,
link |
00:13:10.120
was really for avoiding the cost to the cable company
link |
00:13:13.040
of rolling the trucks out
link |
00:13:14.520
to replace your garbage General Atlantic set top box
link |
00:13:17.560
with a totally newer, less garbagey one.
link |
00:13:21.000
So if you could have software gradable set top boxes,
link |
00:13:23.860
the cable companies thought they could save a lot of money
link |
00:13:26.200
and add features.
link |
00:13:27.160
Is this assembly, or which level of the software?
link |
00:13:30.240
It was like, we were writing in, we were using GCC.
link |
00:13:33.800
We were writing C++ and C.
link |
00:13:36.240
Somebody I worked with there, really very smart guy,
link |
00:13:39.880
hired from a sort of Wall Street
link |
00:13:41.680
hotshot programming consultancy,
link |
00:13:45.240
did his own hardware design as well as software.
link |
00:13:47.040
And we were working on how to make
link |
00:13:49.380
not only a short vector units,
link |
00:13:50.740
but general bit shufflers and permuters.
link |
00:13:53.080
So you could do things like crypto algorithms efficiently,
link |
00:13:57.440
and you could do demodulation of the cable,
link |
00:14:01.400
complex quadrature amplitude modulated signal.
link |
00:14:05.240
So you're basically taking A to D converters,
link |
00:14:07.980
dumping things in buffers,
link |
00:14:09.000
and then doing the rest in software.
link |
00:14:10.740
All the framing and the Reed Solomon and Viterbi
link |
00:14:13.480
and all that error correction.
link |
00:14:14.480
So that was really great learning experience,
link |
00:14:16.060
but it was not gonna work.
link |
00:14:16.920
It was doing too many risky things at once, right?
link |
00:14:18.660
If you, as Jim Clark said to me,
link |
00:14:20.460
when I hopped to Netscape after three years at MicroUnity,
link |
00:14:23.200
he said, oh yeah, you do 10 things each,
link |
00:14:26.040
one in 10 odds, it's gonna be one in 10 billion, right?
link |
00:14:29.840
The multiplication principle.
link |
00:14:31.080
So, Netscape was already a rocket,
link |
00:14:33.360
and I passed the chance to go there in 1994.
link |
00:14:36.760
I knew the founders because I worked at SGI,
link |
00:14:39.200
Clark's company.
link |
00:14:40.040
Could you pause for a second in Netscape?
link |
00:14:42.200
When was the launch of this rocket?
link |
00:14:44.800
94.
link |
00:14:45.840
94 was the launch of Netscape?
link |
00:14:47.320
And I went there in early 95 in April.
link |
00:14:49.720
Okay, so you said you missed the launch.
link |
00:14:52.200
Well, I missed the first floor employment opportunity,
link |
00:14:55.560
but the IPO was August 1995, so I was there for that.
link |
00:14:58.960
How obvious was it that Netscape was like world changing?
link |
00:15:02.280
What was the layout?
link |
00:15:04.080
Was Netscape one of the first big browsers?
link |
00:15:06.160
Yes, so when I was at MicroUnity still in 93,
link |
00:15:09.280
we saw a browser called Mosaic.
link |
00:15:11.720
And up till then, we'd used email and we'd used Usenet,
link |
00:15:14.760
the NNTP protocol, we'd use news readers, we used FTP,
link |
00:15:18.680
we used all these old internet protocols,
link |
00:15:20.860
all relying on the DNS and TCP IP and UDP for that matter.
link |
00:15:25.720
When I was at Silicon Graphics,
link |
00:15:26.800
we brought up the whole stack, right?
link |
00:15:28.140
We had to discover how to find the ethernet addresses
link |
00:15:31.760
on your network and then find IP addresses for them,
link |
00:15:34.720
ARP protocol, all that stuff.
link |
00:15:35.940
And it was great because nobody knew in the 80s
link |
00:15:38.680
what was gonna win, all the proprietary stacks
link |
00:15:41.480
like IBM, SNA and DeckNet and all these other protocols
link |
00:15:44.840
were saying, we're gonna do it
link |
00:15:46.320
or it's gonna be heterogeneous future.
link |
00:15:48.080
And instead it was Berkeley Unix and the TCP IP stack
link |
00:15:52.520
that dated back to the ARPANET that won.
link |
00:15:54.900
And I think we knew it, we all knew it at SGI,
link |
00:15:57.680
but the salespeople didn't.
link |
00:15:59.280
And so they kept trying to get multiple network stacks
link |
00:16:02.080
interoperating, but in the end it won.
link |
00:16:04.360
And so that was the internet and it was email and texty
link |
00:16:08.120
and it was used and very texty.
link |
00:16:09.520
And then Tim Berners Lee did his thing,
link |
00:16:12.540
but I don't think I was paying attention.
link |
00:16:14.120
And I think the date when he first did it
link |
00:16:16.400
or when he wrote the famous emails and pushed back to 89,
link |
00:16:19.580
but I noticed a mosaic in 93 because one of the things
link |
00:16:23.160
that Mark Andreessen and Eric Bina did at NCSA
link |
00:16:26.560
was they innovated on the early HTML standard.
link |
00:16:31.320
They in particular Mark sent this email saying,
link |
00:16:33.040
hey everybody, we think you should be able
link |
00:16:34.360
to put an image in a page.
link |
00:16:36.240
And you know when he sent that Eric Bina had already
link |
00:16:38.400
written the code.
link |
00:16:39.240
And I talked to Tim Berners Lee more recently
link |
00:16:41.920
just a few years ago and he was like,
link |
00:16:43.080
oh, we had another way of doing it and it didn't work out
link |
00:16:45.880
because Mark shipped his in mosaic.
link |
00:16:48.000
And this convinced me of several things.
link |
00:16:50.040
One, the internet meant there was a huge first mover
link |
00:16:53.840
advantage and being fast, getting on first mattered a lot.
link |
00:16:58.080
And so Richard Gabriel of scheme and poetry fame
link |
00:17:01.840
has written about this, the famous.
link |
00:17:03.160
What's poetry? Well, he's a poet.
link |
00:17:06.320
Oh, actual poetry.
link |
00:17:07.160
Is he talking about some kind of something?
link |
00:17:08.360
No, no.
link |
00:17:09.200
I mean, he's the founder of Lucid,
link |
00:17:10.200
which is where Jamie Zawinski worked before Netscape.
link |
00:17:12.920
And Lucid was doing compilers and Lucid Emacs,
link |
00:17:16.320
which was a fork of Emacs,
link |
00:17:18.240
famously Jamie fighting against Richard Stallman, Stalmax.
link |
00:17:22.680
And so Richard Gabriel, very, very brainy computer guy,
link |
00:17:25.260
but also a poet, but he wrote a nice essay
link |
00:17:27.360
that gets abused all the time.
link |
00:17:28.960
In fact, Jamie's put a kind of warning in front
link |
00:17:30.760
of his version of it on his site,
link |
00:17:32.640
JWC.org called Worse is Better.
link |
00:17:34.400
And this is about survival advantage of software
link |
00:17:38.240
in the network world, in my opinion.
link |
00:17:39.780
It's about Unix.
link |
00:17:41.440
It started out being framed as Unix and Lisp,
link |
00:17:43.720
good news, bad news, because all the Lisp people,
link |
00:17:46.000
the MIT people were like, oh, you know,
link |
00:17:48.320
the crown jewel scheme, this Faberge egg or Common Lisp,
link |
00:17:52.720
this giant cathedral, of course we're going to win.
link |
00:17:54.520
This is civilization.
link |
00:17:55.740
And those, you know, those farmers in New Jersey
link |
00:17:58.040
to borrow from the Sopranos, those picks down at Bell Labs,
link |
00:18:01.320
they're just, you know, there's nothing sound there.
link |
00:18:03.400
It's all hacking.
link |
00:18:05.280
Well, guess what won?
link |
00:18:06.840
Wow, so you're saying this is a fundamental,
link |
00:18:09.960
like principle of the internet is moving fast wins.
link |
00:18:14.800
You could say in almost any network system,
link |
00:18:16.960
like in biological evolution,
link |
00:18:18.260
you see successful alleles sweep populations
link |
00:18:20.720
and they don't always have, you know,
link |
00:18:23.440
they aren't free of flaws.
link |
00:18:24.480
They're heterozygous advantage, right?
link |
00:18:26.360
You can get both parents give you the gene variant
link |
00:18:30.200
and you get sickle cell anemia, right?
link |
00:18:31.800
But if one of them does, you're more resistant to malaria.
link |
00:18:34.680
And so this isn't a beautiful process,
link |
00:18:38.160
except at large scale.
link |
00:18:39.520
And then you realize that because it moves fast
link |
00:18:41.520
and can adapt, it can win.
link |
00:18:44.200
And people still struggle with this.
link |
00:18:46.600
I used to struggle with this
link |
00:18:47.880
because JavaScript was done in such a hurry
link |
00:18:50.120
and the force of web compatibility meant
link |
00:18:52.980
early mistakes couldn't be fixed.
link |
00:18:55.240
And even the standards process injected new mistakes,
link |
00:18:57.680
as it will.
link |
00:18:59.040
But often standards bodies go back
link |
00:19:00.400
and making compatible changes.
link |
00:19:01.680
You can't do that with the web.
link |
00:19:03.080
It's more like, again, like biology,
link |
00:19:05.200
you preserve what still works.
link |
00:19:07.120
You don't want to break ATP metabolism or whatever.
link |
00:19:10.360
So you have to kind of resign yourself to the reality
link |
00:19:15.140
of worse is better being enshrined
link |
00:19:20.000
in actual design points you might not like.
link |
00:19:23.120
And that happened with JavaScript and I'm way over it,
link |
00:19:25.780
but it also, I think was a huge advantage.
link |
00:19:28.880
That's why JavaScript has kind of swept
link |
00:19:31.160
a lot of programming domains.
link |
00:19:33.400
People will say, oh, it's not because of merit.
link |
00:19:34.840
Well, you're right.
link |
00:19:35.660
But we also improved it over time in the standards body.
link |
00:19:37.600
I spent 20 years doing that.
link |
00:19:39.320
And you don't get that choice.
link |
00:19:41.760
It's like, I'm not saying that that was the best language.
link |
00:19:45.360
I'm just saying that was the right time to do it.
link |
00:19:47.360
And I like to say the alternative was not to do it.
link |
00:19:50.280
I could have told Netscape, I can't do this.
link |
00:19:52.180
It's too rushed.
link |
00:19:53.200
And it would have been visual basic script.
link |
00:19:55.260
And it would have been bad.
link |
00:19:57.180
So that's a good way to present the alternative.
link |
00:19:59.780
But so it was a Netscape and you have written it
link |
00:20:03.020
in how many days and why was it only that many days?
link |
00:20:05.860
And what was the goal and the underlying principles
link |
00:20:08.880
in your mind at the time?
link |
00:20:09.720
So the whole, I'm sort of describing worse is better
link |
00:20:11.740
in a frenetic way because it fit the model of Netscape.
link |
00:20:14.980
When it was known that Jim Clark
link |
00:20:18.420
and Marc Inves were founding Netscape
link |
00:20:20.020
and they did the first release in 1994,
link |
00:20:22.880
that browser took over from Mosaic.
link |
00:20:24.820
In fact, that's why Mozilla is called that.
link |
00:20:27.100
It's the Mosaic killer.
link |
00:20:28.260
It's like the giant monster that kills Mosaic.
link |
00:20:30.140
That's awesome.
link |
00:20:30.980
And they knew they could, it wasn't that, again,
link |
00:20:34.180
it's not like you're doing advanced scientific research
link |
00:20:36.220
that is changing the world.
link |
00:20:37.380
You're more like taking down the last iteration
link |
00:20:41.020
on the browser, Marc did, which had images
link |
00:20:43.180
and other importances before he stopped working on it.
link |
00:20:45.900
And you're making Netscape the new thing that has images,
link |
00:20:49.060
plugins, which was the way to do video back in the day.
link |
00:20:51.720
It had something that's kind of died now for tiled windows
link |
00:20:54.260
called frames and frame sets.
link |
00:20:56.000
HTML tables, that was new.
link |
00:20:59.280
Eric Bina did tables in Netscape 1.1.
link |
00:21:01.640
So when I got there, they were heading toward IPO.
link |
00:21:05.040
Clark wanted the IPO early, I think his instinct was right.
link |
00:21:07.640
And that kicked off the whole dot com era, right?
link |
00:21:10.280
There was a recession in the US in 91.
link |
00:21:13.280
You can see old law and order reruns
link |
00:21:15.140
where they talk about the recession
link |
00:21:16.520
and how hard it's hitting New Yorkers.
link |
00:21:18.080
And after that, Greenspan really goosed things
link |
00:21:20.440
at the Federal Reserve and technology had been sort of
link |
00:21:23.840
fermenting in a way that came together with the internet.
link |
00:21:26.480
And Netscape made it possible to do pets.com,
link |
00:21:30.040
to do eBay, to get people to recognize a URL on a billboard
link |
00:21:34.280
and then type it in when they get home.
link |
00:21:36.040
And that was huge.
link |
00:21:38.280
That was so fast moving a rocket that Marc
link |
00:21:42.120
and the engineering team there thought,
link |
00:21:45.060
we need to make this a programmable browser,
link |
00:21:47.920
not just a document viewer, not just a video.
link |
00:21:50.840
It was all HTML with images and tables and also,
link |
00:21:54.120
like you said, frames.
link |
00:21:55.320
There was no dynamic element at all.
link |
00:21:57.800
Yeah, the most dynamism we get was from a plugin,
link |
00:21:59.680
which there are a few of them then.
link |
00:22:01.640
Flash didn't exist at that point.
link |
00:22:03.960
It was, I think.
link |
00:22:05.960
Java Applets yet or no?
link |
00:22:07.400
Well, that's the thing we did to deal with Sun.
link |
00:22:09.440
In fact, I was recruited to go do Scheme in the browser.
link |
00:22:12.600
Remember Guy Steele and Gerald Sussman's
link |
00:22:14.800
beautiful Lisp variant?
link |
00:22:16.760
I was gonna do it in the browser
link |
00:22:17.920
because my friends from SG, I thought,
link |
00:22:19.480
hey, we like Scheme, you like Scheme.
link |
00:22:20.920
And I'm like, I hardly ever use Scheme.
link |
00:22:22.140
It's not really used in industry,
link |
00:22:23.360
except in sort of silos, but I like it.
link |
00:22:27.080
Okay, I'll come do Scheme in the browser.
link |
00:22:29.760
I have a slide from my 2017 talk
link |
00:22:32.720
where I have Bruce Willis crawling through the duct
link |
00:22:34.640
in Die Hard.
link |
00:22:35.480
He's like, come out to the coast, have a lot of fun.
link |
00:22:38.300
Come on, do Scheme in the browser.
link |
00:22:40.560
But when I got there, there was no Scheme in the browser
link |
00:22:42.160
because they'd started a deal with Sun Microsystems.
link |
00:22:45.240
And my best contact there was Bill Joy,
link |
00:22:47.040
who I admired as a Berkeley Unix founder.
link |
00:22:48.960
And, you know, Sun founder.
link |
00:22:50.600
And Bill got the idea of making the browser programmable too.
link |
00:22:53.920
And so the main idea was to put the Java VM,
link |
00:22:57.240
which at that point was not really easy to embed,
link |
00:23:00.400
into Netscape, including the Netscape version on Windows
link |
00:23:04.280
that was still most popular,
link |
00:23:05.660
which was the 16 bit Windows 3.1, which was going away.
link |
00:23:09.560
Microsoft was coming out with Windows 95
link |
00:23:11.360
and everyone was afraid they were gonna do
link |
00:23:13.620
Internet Explorer, I guess, two at that point,
link |
00:23:16.200
three the next year.
link |
00:23:17.080
They already bought or invested in somehow Spyglass,
link |
00:23:20.960
this other company that shot out from NCSA
link |
00:23:24.440
at University of Illinois.
link |
00:23:26.000
And in fact, Microsoft had tried to buy Netscape
link |
00:23:29.740
in late 94, before I got there.
link |
00:23:31.400
And I heard about this later.
link |
00:23:32.280
I heard they offered way too little money.
link |
00:23:35.040
And so, you know, Jim Barksdale and Jim Clark said,
link |
00:23:37.480
get out of here, you know, pound sand.
link |
00:23:39.820
But then they realized, oh, this is going to hurt us
link |
00:23:43.780
because now they're gonna copy us.
link |
00:23:45.520
Didn't happen right away.
link |
00:23:46.340
I'm not sure when Gates internet title wave memo
link |
00:23:49.080
was written.
link |
00:23:50.240
That's the famous memo he wrote when Bill Gates realized
link |
00:23:53.180
that Microsoft was going down this old copy AOL path
link |
00:23:56.840
or copy CompuServe path, a project called Blackbird,
link |
00:24:01.100
presumably after the SR71, I don't know.
link |
00:24:03.240
But they were gonna make a, you know,
link |
00:24:04.680
dial up service with a custom content language stack
link |
00:24:07.600
and custom rendering.
link |
00:24:09.040
It wasn't the web.
link |
00:24:10.680
You know, they could have content partners.
link |
00:24:13.200
They have a lot of money,
link |
00:24:14.400
but it still wasn't to scale the web.
link |
00:24:15.920
It wasn't gonna be compelling.
link |
00:24:16.880
And Gates realized this,
link |
00:24:18.200
and he turned the company on a dime
link |
00:24:20.000
and they couldn't buy Netscape.
link |
00:24:22.400
Again, I'm not sure the timing,
link |
00:24:23.320
so they decided to copy it.
link |
00:24:24.540
And once we realized that everybody inside Netscape
link |
00:24:27.400
felt even more urgency and more of a frenetic mood.
link |
00:24:30.920
And so my chance to do scheme disappeared
link |
00:24:33.620
when the Java deal started brewing.
link |
00:24:35.840
But there was still a chance to do a companion language
link |
00:24:38.800
to Java because Java was a compiled,
link |
00:24:41.080
is a compiled language.
link |
00:24:42.620
It's evolved and improved quite a lot since then too,
link |
00:24:44.960
but it was for sort of serious advanced programmers
link |
00:24:48.560
that cost a certain salary or hourly rate.
link |
00:24:51.400
And people observed, Bill Joy observed,
link |
00:24:53.880
and Mark Andreessen and I observed
link |
00:24:55.760
that in a mature stack like Microsoft,
link |
00:24:57.900
you really benefit from having a scripting language
link |
00:25:00.020
like Visual Basic,
link |
00:25:01.680
which became Visual Basic script in IE3,
link |
00:25:03.680
but didn't take over and kill JavaScript,
link |
00:25:07.120
that you need two languages.
link |
00:25:08.340
One is for the component writers
link |
00:25:10.160
who are higher price and more expert.
link |
00:25:12.560
And the other is for scripters,
link |
00:25:17.000
certified public accountants, designers,
link |
00:25:19.480
graphic designers with some programming inclination,
link |
00:25:21.720
anybody, amateurs, doesn't matter.
link |
00:25:23.460
There's a much more demotic approach there
link |
00:25:26.600
for programming the components together,
link |
00:25:28.660
gluing them together.
link |
00:25:29.880
Some people say duct tape language, which I don't really like.
link |
00:25:32.800
But we saw, Bill Joy and Mark Andreessen and I,
link |
00:25:36.080
we saw the need for a companion language.
link |
00:25:38.020
And the gleam in our eye was to call it JavaScript.
link |
00:25:40.400
I didn't like it, that was marketing's plan.
link |
00:25:42.480
Mark called it Mocha, which I liked.
link |
00:25:45.080
And Netscape Marketing, I think, didn't like that.
link |
00:25:47.080
So they said, oh, there's some trademark
link |
00:25:48.520
and some software somewhere that uses Mocha,
link |
00:25:50.800
so we can't use that.
link |
00:25:52.000
And they tried LiveScript in August and that didn't last.
link |
00:25:54.960
And then finally we got the trademark license
link |
00:25:56.680
in December 1995.
link |
00:25:58.720
But the work I did to prove that it could be done
link |
00:26:01.600
was important because I came in in April
link |
00:26:05.200
and even then Netscape was growing so fast
link |
00:26:08.320
that they couldn't find an open hiring requisition
link |
00:26:11.280
in the client team for me.
link |
00:26:12.320
So they hired me into the server team.
link |
00:26:14.280
And I worked for a month on server team
link |
00:26:16.680
on what became HTTP 1.1.
link |
00:26:18.600
So I was actually, I had done protocol work
link |
00:26:20.280
at Silicon Graphics with Greg Chesson,
link |
00:26:22.640
former Bell Labs intern, grad student intern
link |
00:26:25.360
who knew all the Unix founders.
link |
00:26:27.020
And Greg was very interested in taking protocols
link |
00:26:30.880
to the next level with VLSI,
link |
00:26:32.840
because he thought that CPUs wouldn't scale up.
link |
00:26:35.640
He was mistaken in that, unfortunately.
link |
00:26:37.480
Moore's law more than kept up.
link |
00:26:39.060
And you have gigabit ethernet running
link |
00:26:41.400
with conventional processors.
link |
00:26:42.520
But I worked on protocols at SGI
link |
00:26:45.680
as well as Unix kernel hacking and NFS and things like that.
link |
00:26:49.000
So I came into Netscape to work on the server side
link |
00:26:53.040
for a month, but I was thinking the whole time,
link |
00:26:55.260
what should this language be like?
link |
00:26:56.360
Should it be easy to use?
link |
00:26:58.480
Might its syntax even be more like natural language
link |
00:27:00.680
like HyperTalk, which is Bill Atkinson's language
link |
00:27:04.840
in HyperCard, if you ever used HyperCard on an early Mac.
link |
00:27:08.560
And I thought, well, I'd like to do that,
link |
00:27:12.080
but my management is saying, make it look like Java,
link |
00:27:15.160
which looks like C from a distance.
link |
00:27:17.480
What does that mean?
link |
00:27:18.320
Is it braces?
link |
00:27:19.280
We're talking about visually?
link |
00:27:20.400
Does that mean like, management,
link |
00:27:23.060
do they understand what they think about?
link |
00:27:24.640
Marketing didn't know, but management did.
link |
00:27:26.560
Like Rick Schell, the VP of engineering, knew.
link |
00:27:29.680
And we had a plan even that was,
link |
00:27:31.720
if you have this companion language,
link |
00:27:32.920
you're going to glue things together
link |
00:27:34.560
between Java and JavaScript.
link |
00:27:35.680
So you're going to have commerce in memory, in the heap
link |
00:27:38.800
with data types.
link |
00:27:40.240
So you're going to want some of the data types
link |
00:27:41.760
in Java to reflect in the JavaScript.
link |
00:27:43.880
You're going to want the primitive types
link |
00:27:45.700
that Java unfortunately separated from objects.
link |
00:27:47.540
So at least some of them, double, let's call it
link |
00:27:50.880
in Java's terms from the C term
link |
00:27:52.560
for double precision floating point,
link |
00:27:55.640
or strings or Booleans and objects.
link |
00:28:01.200
And so right away there was this constraint
link |
00:28:04.000
that looking like Java meant kind of a C curly brace syntax
link |
00:28:07.920
but also some of the data types and objects.
link |
00:28:09.800
Like objects and so on, all that kind of stuff.
link |
00:28:12.000
Comparison operator.
link |
00:28:13.000
Garbage collection, all that stuff.
link |
00:28:15.480
Even the bitwise operators and the shift operators
link |
00:28:17.640
including the unsigned right shift,
link |
00:28:19.580
which Java had because it didn't have
link |
00:28:21.420
unsigned integer types.
link |
00:28:22.720
It said, if you want to do unsigned operations,
link |
00:28:24.600
use an operator.
link |
00:28:25.440
And that turned out to be important much later.
link |
00:28:27.560
I'll tell that story five time.
link |
00:28:28.560
But JavaScript inherited a set of operators,
link |
00:28:35.080
the expression grammar, the statement grammar
link |
00:28:37.160
up to a point from Java.
link |
00:28:39.360
But I wanted a functional language.
link |
00:28:40.720
I wanted scheme, a little bit of scheme,
link |
00:28:42.840
even though it wasn't as clean as scheme.
link |
00:28:44.600
I wanted.
link |
00:28:45.440
So you had a love, sorry to interrupt.
link |
00:28:46.260
You had a love for scheme and list
link |
00:28:47.600
but that functional language landscape.
link |
00:28:49.760
Yes, I wanted first class functions
link |
00:28:51.640
because I saw the need for callbacks in the browser
link |
00:28:54.000
where it's a single threaded program.
link |
00:28:55.880
All the early browsers were single threaded
link |
00:28:57.360
and it's the right model for users.
link |
00:28:58.640
Most users weren't ready for mutual exclusion
link |
00:29:00.600
and threading.
link |
00:29:01.680
So in a single threaded world,
link |
00:29:03.680
you cannot block the user interface.
link |
00:29:05.440
So you have to use a callback and run later.
link |
00:29:07.520
And without getting too fancy
link |
00:29:09.920
and trying to capture the continuation
link |
00:29:11.640
like call CC does in scheme,
link |
00:29:13.340
I thought I'll just make it easy to have fun arcs.
link |
00:29:16.640
First class functions you pass downward
link |
00:29:18.860
and it can call back, it'd be called back.
link |
00:29:21.800
And Java didn't have that at the time.
link |
00:29:23.640
It took forever to get proper first class functions
link |
00:29:27.280
or lambdas now into Java, Java seven or eight, I think.
link |
00:29:30.720
It did have concurrency, right?
link |
00:29:32.120
Yes.
link |
00:29:32.960
From the very beginning.
link |
00:29:33.780
But you were thinking that the JavaScript
link |
00:29:35.680
in the browser would not have the luxury
link |
00:29:38.160
of being concurrent.
link |
00:29:39.360
That's right.
link |
00:29:40.200
And the reason was Java was gonna run in the plugins.
link |
00:29:42.480
So it could fork threads and go to town.
link |
00:29:44.560
But the main action in the browser
link |
00:29:46.880
was in the single threaded program,
link |
00:29:48.280
the single Unix process on Unix or Windows.
link |
00:29:51.880
And it was where you had to service the event loop
link |
00:29:54.400
and then go do things.
link |
00:29:56.160
Respond to the network layout, some HTML, render it,
link |
00:29:59.360
turn widths into heights by filling containers, boxes,
link |
00:30:03.200
the early, what became the CSS box model.
link |
00:30:06.080
And run scripts to make the thing livelier,
link |
00:30:09.600
respond to user input.
link |
00:30:11.160
And all that event driven programming
link |
00:30:14.240
was in part like HyperCard
link |
00:30:16.080
because HyperCard had this on event name syntax.
link |
00:30:19.440
And so that's why you have in JavaScript on click
link |
00:30:21.680
run together as the name of the event handler.
link |
00:30:24.120
And there's some funny ones on mouse over
link |
00:30:26.060
and on mouse out, people still complain about those.
link |
00:30:28.200
But there were many more events now over the years
link |
00:30:31.060
standardized, but it was a mix of event driven
link |
00:30:33.980
single threaded programming because it had to run
link |
00:30:36.240
in the main thread of the browser where the action is
link |
00:30:38.960
and Java never got there.
link |
00:30:40.680
Which meant Java could not interact easily
link |
00:30:42.640
or quickly or in a nested way with the document,
link |
00:30:46.720
with the objects reflected from the HTML document,
link |
00:30:49.200
with the tables and forms and so on.
link |
00:30:50.960
And that is one of the reasons I think JavaScript
link |
00:30:53.960
survived and Java kind of died.
link |
00:30:55.320
Java was in this plugin prison.
link |
00:30:56.960
It essentially was confined to a rectangle,
link |
00:30:58.760
the applet rectangle.
link |
00:30:59.960
And while we even built next year,
link |
00:31:02.720
Nick Thompson, a friend from SGI
link |
00:31:04.840
who was an intern grad student at CMU at the time,
link |
00:31:08.640
built the first version of Live Connect
link |
00:31:10.280
to glue Java and JavaScript together
link |
00:31:12.640
to deliver on that vision where you do have commerce
link |
00:31:14.680
between the data types in the heap.
link |
00:31:18.040
Did it work?
link |
00:31:18.880
It worked, but Java was in charge.
link |
00:31:21.280
JavaScript was in charge and Java was just these components,
link |
00:31:23.640
these helper objects.
link |
00:31:24.480
You might as well do everything in JavaScript.
link |
00:31:25.920
What happened over time, it's like an evolutionary filter.
link |
00:31:27.960
It just kind of, who needs the plugin?
link |
00:31:29.600
And in fact, Sun mismanaged Java as a plugin.
link |
00:31:33.000
They thought, oh, Netscape is giving us
link |
00:31:35.520
the distribution vehicle and we don't care about the browser.
link |
00:31:38.400
It's just about getting Java out there.
link |
00:31:39.680
And that was a big miscalculation.
link |
00:31:41.220
They then tried, because Microsoft's killing Netscape
link |
00:31:43.840
after years, they tried getting into Microsoft.
link |
00:31:46.120
And you may remember there was a Sun Microsoft deal
link |
00:31:48.520
which famously blew up.
link |
00:31:50.640
And Microsoft kicked Java out of Windows.
link |
00:31:54.800
And that's when they really pulled the trigger.
link |
00:31:56.400
I think they'd already evaluated it and liked it
link |
00:31:58.120
on Anders Helzberg's.NET and C Sharp
link |
00:32:01.740
and decided we're gonna just not have Java.
link |
00:32:04.160
We don't want any of that Sun stuff.
link |
00:32:06.440
We don't want the patent risk.
link |
00:32:07.560
We don't want, I'm not sure what all fights were about.
link |
00:32:10.080
There was some patent angle to it, I think.
link |
00:32:12.040
And up till then, Microsoft had been using Java components
link |
00:32:16.920
like in Outlook Web Access,
link |
00:32:19.240
which had a lot of JavaScript to be a webmail
link |
00:32:21.480
like Hotmail, like user interface.
link |
00:32:23.120
They had to call the mail server through HTTP
link |
00:32:27.760
and they used a Java object to do this.
link |
00:32:31.360
And when they gave the boot to Sun,
link |
00:32:34.280
suddenly the left hand gave the boot
link |
00:32:37.240
and the right hand said, we better do something else
link |
00:32:39.160
in Outlook Web Access.
link |
00:32:40.080
What are we gonna do?
link |
00:32:40.920
And they said, let's just add an ActiveX component,
link |
00:32:43.640
which is their own native way of embedding things
link |
00:32:46.300
in languages and it'll be what became XML HTTP request,
link |
00:32:51.960
which is now a web standard for calling asynchronously.
link |
00:32:54.760
And it's been replaced by the fetch API
link |
00:32:57.040
in HTML5 or HTML living document.
link |
00:32:59.480
But this whole lineage goes back to Java
link |
00:33:02.400
being successfully the loser and getting kicked out.
link |
00:33:05.100
And after Microsoft kicked it out, it was a plugin
link |
00:33:07.680
and you would find it required for like smart card banking
link |
00:33:11.040
in the Nordic countries where that was mandated by law,
link |
00:33:14.700
but really didn't get used much.
link |
00:33:16.360
Or there were pilots who used it for flight information,
link |
00:33:21.560
but Flash, which Netscape could have bought,
link |
00:33:24.160
but fortunately didn't.
link |
00:33:25.560
The early days.
link |
00:33:26.400
Yeah, we would have screwed it up.
link |
00:33:28.080
What year are we talking about with Flash?
link |
00:33:29.520
I think after the IPO, so it was probably late 95.
link |
00:33:32.160
Oh, Flash was around.
link |
00:33:33.320
Was it Adobe?
link |
00:33:34.160
No, it wasn't.
link |
00:33:34.980
No, it was called Future Splash
link |
00:33:36.360
and it was these brothers, Jonathan Gay,
link |
00:33:38.720
I think his name was, and he came knocking
link |
00:33:41.720
and the marketing guy at Netscape,
link |
00:33:43.520
who was screening the technology partners
link |
00:33:45.840
or wannabe acquisitions was brutal
link |
00:33:47.800
and just everybody wanted to get in on the Netscape,
link |
00:33:50.320
stock gravy train and he sent them packing
link |
00:33:52.480
and they ended up selling to Macromedia
link |
00:33:55.120
and Macromedia was where Flash was created.
link |
00:33:57.320
And the good thing about Macromedia was
link |
00:33:58.960
it was a tool company.
link |
00:34:02.000
So it invested in the best ideas, I think,
link |
00:34:05.800
which are still somewhat lost to us of Flash,
link |
00:34:08.120
the timeline, animation has sort of been a mutable function
link |
00:34:12.500
over time.
link |
00:34:13.800
They had the tooling around that too,
link |
00:34:14.920
like they had Dreamweaver, there's a Flash.
link |
00:34:17.240
Flash Director, there were a bunch of them.
link |
00:34:18.840
Yeah, I mean, yeah, that was a great.
link |
00:34:20.840
Flash Builder was one of the last ones.
link |
00:34:22.800
These tools were used by real artists
link |
00:34:25.420
and special effects people and designers.
link |
00:34:27.440
All the restaurant websites around 2005
link |
00:34:29.760
were done in Flash, which was,
link |
00:34:32.280
we were trying to do HTML5 at the same time.
link |
00:34:34.080
That was the Firefox era.
link |
00:34:35.080
We were trying to make the web capable enough
link |
00:34:37.640
you didn't need Flash, but if you recall,
link |
00:34:39.400
you go to a restaurant and it's like,
link |
00:34:41.080
this is kind of like a game or something.
link |
00:34:42.400
It's like a Flash, all the font looks small.
link |
00:34:44.600
So you didn't like Flash from the beginning.
link |
00:34:45.880
You're like, this doesn't feel right.
link |
00:34:47.640
Not really.
link |
00:34:48.480
I actually admire Flash's technology
link |
00:34:50.000
and I'm pretty pragmatic about these things.
link |
00:34:51.700
And I realized that it doesn't matter
link |
00:34:54.840
if your Delta bad hand like JavaScript was a rush job,
link |
00:34:58.280
or if you have Flash as a plugin
link |
00:35:00.240
and you can invest in the tools and make it pretty good.
link |
00:35:03.620
You should make it better for your users
link |
00:35:05.720
and grow it as best you can.
link |
00:35:07.000
And what happened with the browser
link |
00:35:08.800
due to Microsoft's monopoly abuse
link |
00:35:11.040
for which they were convicted.
link |
00:35:12.600
And even after that, until I think Firefox and then Chrome
link |
00:35:17.440
was people kept saying, oh, the web can't do X, can't do Y.
link |
00:35:21.240
We'll have to have a plugin.
link |
00:35:22.240
We'll have to have a new approach.
link |
00:35:23.680
We'll clean the slate and have a new web.
link |
00:35:26.860
And everyone who said that failed.
link |
00:35:28.960
And the reason they failed is because
link |
00:35:30.180
there's too much value in the web, this huge network.
link |
00:35:34.080
And the worse is better principle means
link |
00:35:36.040
that you can not only start bad, which they all sneer at,
link |
00:35:39.460
but get on first and get wide distribution,
link |
00:35:41.920
get sort of evolutionary advantage in priority of place,
link |
00:35:47.080
but you can also improve it over time.
link |
00:35:49.320
And so if you're gonna improve Flash,
link |
00:35:51.080
and for some reason Flash is now out of favor.
link |
00:35:53.000
Steve Jobs said you can't have Flash on the iPhone.
link |
00:35:55.000
That was probably the death knell.
link |
00:35:56.740
Put your energy into JavaScript.
link |
00:35:58.100
And that happened, right?
link |
00:35:58.940
So we did things at Mozilla with Adobe to improve,
link |
00:36:02.400
which bought my Macromedia, to improve Flash
link |
00:36:04.860
and to improve the version of JavaScript that was in Flash.
link |
00:36:07.560
We tried to standardize that.
link |
00:36:09.000
Oh, that's right.
link |
00:36:09.840
I'm getting ahead of myself with it.
link |
00:36:10.660
It was ES4.
link |
00:36:11.500
Yeah.
link |
00:36:12.340
That's right, that's right.
link |
00:36:13.180
Can we just rewind to the magical, like, you know.
link |
00:36:17.000
It's a special moment in the history of all of computing.
link |
00:36:20.160
We'll talk about it later, but it's arguable.
link |
00:36:22.840
It's possible that the entirety of the world
link |
00:36:25.280
will run in JavaScript at some point.
link |
00:36:27.280
So like, it's like those days,
link |
00:36:30.040
it would be interesting if you could just describe,
link |
00:36:33.320
actually zooming in on how the cake was baked
link |
00:36:38.320
from the several days that you were working on it.
link |
00:36:41.580
What was on your mind?
link |
00:36:43.320
How much coffee were you drinking?
link |
00:36:45.380
Were you nervous?
link |
00:36:46.220
Why, freaking out?
link |
00:36:47.360
I'll try to remember it.
link |
00:36:48.360
I mean, you're right.
link |
00:36:49.200
There are these pregnant moments you see in hindsight,
link |
00:36:50.940
maybe they're overrated,
link |
00:36:52.200
but like Hegel sees Napoleon on horseback at Jena
link |
00:36:55.760
and says, there's the world spirit on horse.
link |
00:37:00.440
And I knew that there was a chance to do it.
link |
00:37:04.120
Mark knew, and he was my executive sponsor
link |
00:37:07.960
and he was the one sort of brainstorming
link |
00:37:10.800
how the JavaScript should be right there in the page.
link |
00:37:13.360
That was important for him to say that.
link |
00:37:14.760
Cause I thought so too, but a lot of people were like,
link |
00:37:17.360
well, you can't write programming language
link |
00:37:18.680
in the middle of the markup.
link |
00:37:20.120
And indeed there are problems.
link |
00:37:21.040
If you did it naively, you'd see the code laid out
link |
00:37:23.600
as like random gibberish.
link |
00:37:25.300
So I had to figure out how to hide that.
link |
00:37:26.600
That was a challenge.
link |
00:37:28.120
Is that a breakthrough idea?
link |
00:37:29.800
I mean, so you and Mark thinking about this idea
link |
00:37:32.580
that you just inject code in the middle of the markup.
link |
00:37:36.080
Of the webpage.
link |
00:37:36.920
I consider kind of heretical.
link |
00:37:38.000
There was an SGML guru, I forget his name,
link |
00:37:40.120
but he corresponded with me and at first he was angry.
link |
00:37:42.120
He's like, you should have used a marked section.
link |
00:37:44.760
Why didn't you use a marked section?
link |
00:37:45.960
And I said, well, SGML marked sections are not part of HTML
link |
00:37:48.600
by the way, and they're not supported in the browser.
link |
00:37:50.600
And so I did some hack that was equivalent
link |
00:37:52.540
and over time you could do the proper SGML thing.
link |
00:37:55.280
But eventually he came around and it was again,
link |
00:37:58.200
sort of evolutionary necessity.
link |
00:37:59.640
It was almost like introgression, like the idea
link |
00:38:02.920
which Lynn Margulies, I think helped get across
link |
00:38:06.980
that we have to consider mutualism biology
link |
00:38:10.640
that maybe mitochondria were ancient prokaryotes
link |
00:38:14.080
that got into the cell and became beneficial.
link |
00:38:17.420
Somehow the same sort of thinking applies.
link |
00:38:21.200
You have to embed JavaScript in HTML.
link |
00:38:23.040
It's gonna be a good virus.
link |
00:38:24.760
It won't hurt you.
link |
00:38:25.720
The code becomes data in the sense
link |
00:38:27.400
it just gets carried along.
link |
00:38:30.040
But is there the side of the, so you were focusing
link |
00:38:33.680
on Netscape at that time.
link |
00:38:35.080
Doesn't the browser have to support interpret correctly
link |
00:38:38.360
this mix of HTML and whatever code?
link |
00:38:41.440
I had to hide it from old browsers,
link |
00:38:42.720
including Netscape 1.1, which was predominant then.
link |
00:38:45.140
So I used an HTML comment, but the inside the container
link |
00:38:49.560
that comment lived in the script tag,
link |
00:38:51.080
which is a new element, I could make different semantics
link |
00:38:53.480
in Netscape 2 where those HTML comment delimiters
link |
00:38:57.040
instead of being multi line brackets became one line
link |
00:38:59.760
or essentially one line.
link |
00:39:00.600
So you wrote, so JavaScript was written,
link |
00:39:02.600
the programming language was written as a comment.
link |
00:39:05.080
A comment for old browsers and a set of brackets
link |
00:39:08.120
that were ignored with real code for new.
link |
00:39:10.160
And it was this two way comment hiding hack, as I called it,
link |
00:39:13.480
that was absolutely necessary for us to get off the ground.
link |
00:39:15.700
We couldn't have bootstrapped JavaScript without it.
link |
00:39:17.680
We didn't have scripts that were loaded from a separate file.
link |
00:39:20.240
The only scripts in Netscape 2 were inline in the document.
link |
00:39:22.900
What were the challenges here?
link |
00:39:24.280
What, like what, you know, typing,
link |
00:39:27.440
what were the choices you were thinking about?
link |
00:39:30.120
What was the design for this garbage collection?
link |
00:39:31.560
I didn't have time to write a garbage collector.
link |
00:39:32.960
So I just, I didn't at first.
link |
00:39:34.680
The thing was using essentially arenas
link |
00:39:36.920
or what GNU calls object pools
link |
00:39:39.160
and just would run out of memory eventually.
link |
00:39:41.680
And I added reference counting in a hurry
link |
00:39:43.560
after the 10 days in which I hacked.
link |
00:39:45.340
So after I was in the server team doing HTTP 1.1
link |
00:39:48.120
and thinking about the language,
link |
00:39:49.640
I finally got transferred to the client team in early May.
link |
00:39:52.300
And that's when I, you know, I got the go sign from Mark
link |
00:39:55.260
and it was like, we can't wait
link |
00:39:57.280
because people inside Netscape are doubting.
link |
00:39:59.360
Even people inside Sun are definitely doubting.
link |
00:40:01.880
Bill Joy was the champion, but he was like alone in that
link |
00:40:04.960
in seeing that there was a role for JavaScript
link |
00:40:07.260
as the, as I call it, the sidekick language,
link |
00:40:10.560
robbing the boy hostage.
link |
00:40:12.720
Frank Miller put it in the Dark Knight Returns
link |
00:40:16.360
that there was this silly little language
link |
00:40:18.640
that would be the glue language
link |
00:40:19.520
and it could become important over time.
link |
00:40:20.960
And you were better off having that complementarity,
link |
00:40:23.880
that pairing of languages,
link |
00:40:25.120
just like Microsoft stacked it with visual C plus plus
link |
00:40:28.080
and visual pacing.
link |
00:40:28.900
So what was the big moment of I'm done?
link |
00:40:33.120
So I had to do a demo.
link |
00:40:34.320
I forget the dates.
link |
00:40:35.800
I think I, for a history of programming languages paper
link |
00:40:38.680
that Alan Wiersbrock did with my help,
link |
00:40:40.840
he did a lot of the writing.
link |
00:40:42.760
I think it was the 10 days from like Thursday evening
link |
00:40:47.440
through to the following weeks, you know,
link |
00:40:50.800
the whole of that week and then into the Monday.
link |
00:40:52.520
You get sleep?
link |
00:40:53.360
Not enough.
link |
00:40:54.400
And I was really going fast
link |
00:40:56.280
because I had already used a lot of C compiler
link |
00:41:00.080
and front end compiler knowledge
link |
00:41:02.320
that I'd gained from undergraduate school.
link |
00:41:04.700
When I started getting into computing
link |
00:41:07.560
as a renegade physics major,
link |
00:41:10.040
people were formalizing more efficient bottom up grammars,
link |
00:41:14.640
parsers for bottom up languages,
link |
00:41:17.040
really LALR one was the big thing.
link |
00:41:19.520
And I studied all this and learned how to parse them.
link |
00:41:22.440
And in the end, if you're doing C languages,
link |
00:41:25.100
you often do what Dennis Ritchie did anyway,
link |
00:41:28.640
which is the recursive descent parser.
link |
00:41:31.280
You can hand code it.
link |
00:41:32.200
And I did that for JavaScript in a blazing hurry,
link |
00:41:36.280
mostly got it right.
link |
00:41:37.280
I didn't have precedence inversion problems or other bugs,
link |
00:41:40.160
but I copied a lot from Java and C.
link |
00:41:43.160
And I tried to keep things simple,
link |
00:41:45.240
like the equality operator in those 10 days sprint
link |
00:41:49.400
between two objects of different dynamic type said,
link |
00:41:52.360
no, they're not equal, their types are different.
link |
00:41:54.320
And then after that, I had internal early adopters
link |
00:41:57.680
and they were using JavaScript to match a number
link |
00:42:01.240
against a database field that had been stringized.
link |
00:42:03.920
And they said, oh, can we just have implicit conversion?
link |
00:42:06.440
Like an idiot, I agreed.
link |
00:42:07.720
I gave them what they wanted.
link |
00:42:08.640
I was trying to please them and get adoption.
link |
00:42:10.680
And that broke what equivalence relation
link |
00:42:16.560
nature there was to the double equal.
link |
00:42:19.600
There's some edge cases with not a number
link |
00:42:22.360
that break that too, but it really broke it.
link |
00:42:25.040
Having an implicit conversions in the operator
link |
00:42:26.960
is something that people still roast me over.
link |
00:42:29.360
So let's talk about two things.
link |
00:42:31.720
One, it sounds like the comparison operator,
link |
00:42:34.280
the equality operator is the thing that you regret.
link |
00:42:38.760
So maybe you can.
link |
00:42:39.600
Making it sloppy.
link |
00:42:40.600
Making it sloppy.
link |
00:42:41.440
So what is the biggest thing you regret in those 10 days?
link |
00:42:45.200
And what is the biggest thing you're proud of?
link |
00:42:47.480
So that making it sloppy came after the 10 days.
link |
00:42:49.680
And my lesson there, which I've tweeted is
link |
00:42:51.880
when people come to you saying,
link |
00:42:53.160
can you please make it sloppy or add this cute feature?
link |
00:42:56.080
The answer should be no.
link |
00:42:57.640
And I should have known that
link |
00:42:58.480
because I think Nicholas Viert, one of my heroes said,
link |
00:43:01.200
the essence of design is leaving things out.
link |
00:43:04.560
But during the 10 days, I also, like I said,
link |
00:43:06.200
I was in such a hurry, I left out garbage collection,
link |
00:43:08.560
came back to haunt me, but I got reference counting in
link |
00:43:10.760
in time that people weren't running out of memory
link |
00:43:13.960
right away on long lived JavaScript.
link |
00:43:16.120
What happens when you don't have garbage collection
link |
00:43:17.760
and you have objects?
link |
00:43:18.600
Well, you just run out of memory.
link |
00:43:20.240
And you know, at first you write a short script
link |
00:43:24.120
and the page doesn't last long or it doesn't do a lot.
link |
00:43:25.920
It's okay.
link |
00:43:26.760
Oh, I see, yeah, yeah.
link |
00:43:27.600
But if you're writing a game or something
link |
00:43:28.600
and you're doing event based allocation,
link |
00:43:30.600
you run out of memory.
link |
00:43:31.680
And this was noticed in the summer of 1985
link |
00:43:34.320
and people were like, what's going on?
link |
00:43:35.720
Oh yeah, I better go back and do reference counting.
link |
00:43:38.600
And then the problem with reference counting is
link |
00:43:40.200
you're writing the language in the runtime in C,
link |
00:43:43.160
an unsafe language, and if you're reference counting
link |
00:43:45.760
and you overflow the counter, you mismanage it
link |
00:43:48.080
so it goes high, it gets stuck high,
link |
00:43:49.640
you leak memory again and you run out.
link |
00:43:51.560
If you underflow it, you pre memory that's still in use.
link |
00:43:56.200
And even then we knew what all the security hackers
link |
00:44:00.120
came to know that you therefore have potentially
link |
00:44:03.000
a remote code execution vulnerability.
link |
00:44:05.840
Cause this was before things like non executable
link |
00:44:09.800
heap memory and staff defenses against taking over memory.
link |
00:44:14.800
So if you can, from the remote side,
link |
00:44:17.780
write some HTML and JavaScript that just happens
link |
00:44:19.920
to exploit a bug in memory safety,
link |
00:44:21.820
like it causes JavaScript to underflow reference counter.
link |
00:44:24.960
And the script still has its hands on that object
link |
00:44:27.560
and it's trying to call a method on it
link |
00:44:29.040
and there's some kind of lookup function table
link |
00:44:30.680
in the object, but you've managed to stuff the heap
link |
00:44:34.600
with strings that forwards their own lookalike
link |
00:44:37.160
for the function table.
link |
00:44:39.720
You can call some other code.
link |
00:44:41.360
And this was a problem right away.
link |
00:44:43.400
So security, JavaScript upped the ante.
link |
00:44:46.280
Java had this problem too, but in its own VM.
link |
00:44:48.840
And it just was a separate headache for Sun to worry about.
link |
00:44:53.440
We had this problem in Netscape right away.
link |
00:44:55.280
So Netscape 2 came out after my 10 days
link |
00:44:58.360
and after these follow on work to embed JavaScript
link |
00:45:02.640
better in the browser and to add garbage
link |
00:45:04.480
or collection through reference counting,
link |
00:45:05.960
really I call it reference counting and get it shipped.
link |
00:45:09.640
We had a bunch of dot releases where we fixed
link |
00:45:11.400
security bugs like maniacs.
link |
00:45:13.560
But what is the thing you're, you know,
link |
00:45:16.200
when you sit back on a porch and just look out
link |
00:45:19.120
into the sunset, what are you most proud of
link |
00:45:21.000
from those 10 days?
link |
00:45:21.960
I think the first class functions shines.
link |
00:45:23.560
I think especially since Java didn't have it
link |
00:45:25.600
and it was somewhat unusual.
link |
00:45:27.600
Scheme made it in somehow at the end of the day.
link |
00:45:30.640
In spirit, I mean, people complain because Scheme has,
link |
00:45:33.440
you know, minimalism.
link |
00:45:34.840
It has, you know, six or seven special forms.
link |
00:45:37.000
It has hygienic macros.
link |
00:45:38.720
It has call CC.
link |
00:45:39.640
It has sort of a beautiful complete set of forms
link |
00:45:44.880
to make the land of calculus pleasant to use in practice.
link |
00:45:49.440
And JavaScript is, you know, kind of a multi paradigm
link |
00:45:54.120
or shambolic.
link |
00:45:55.200
Just in a small tangent, you mentioned Mark Andreessen.
link |
00:45:59.400
It sounds like, and Bill Joy, but staying on Mark,
link |
00:46:03.400
it sounds like he had an impact on you
link |
00:46:06.520
in that he sort of believed in what you were doing there.
link |
00:46:09.120
Can you talk about like what role Mark had in your life?
link |
00:46:11.920
Yeah, we would meet at the Peninsula Creamery
link |
00:46:15.880
in downtown Palo Alto.
link |
00:46:17.720
And Mark was just fresh out of, you know, grad school
link |
00:46:19.960
or whatever he was doing and he was big dude
link |
00:46:22.720
and he got fitter later.
link |
00:46:25.280
He had hair, he would order giant milkshakes and burgers
link |
00:46:28.800
and we would meet there and brainstorm about what to do.
link |
00:46:31.040
And it was very direct because we didn't have much time.
link |
00:46:34.280
The sort of, we didn't talk about it.
link |
00:46:36.400
The implication was Microsoft was coming after us.
link |
00:46:39.080
Mark was saying things boldly pre IPO
link |
00:46:41.760
like Netscape plus Java kills Windows, right?
link |
00:46:44.320
This is, make a browser programmable.
link |
00:46:46.840
It becomes the new runtime for programs.
link |
00:46:49.440
It's the meta OS or it's the replacement OS.
link |
00:46:52.000
But he still saw value in JavaScript.
link |
00:46:54.280
Yes, even though he was saying that
link |
00:46:56.000
and Java was the big name, hence the trademark license,
link |
00:46:59.800
he saw JavaScript as important.
link |
00:47:01.360
And he even thought, what if we got,
link |
00:47:03.720
I told this in other interviews, I can say it.
link |
00:47:05.040
He thought, what if we had my friend Kip Hickman
link |
00:47:07.680
who'd been at Netscape from the beginning
link |
00:47:09.560
and who was a kernel hacker at SGI when I joined,
link |
00:47:13.080
he'd started writing his own JVM
link |
00:47:14.920
before we consummated the Sun deal
link |
00:47:16.440
and got our hands on their code.
link |
00:47:17.960
And the Java compiler, Java C,
link |
00:47:20.480
which Arthur Van Hoff had written very nice code,
link |
00:47:23.200
was all written in Java.
link |
00:47:24.160
It was self hosted or so called bootstrap.
link |
00:47:26.480
And so we could use that as soon as Kip's Java VM
link |
00:47:29.320
could run the bytecode from the Sun JVM
link |
00:47:34.400
running the self hosted compiler to emit the bytecode.
link |
00:47:37.520
So once we could bootstrap into Kip's VM,
link |
00:47:39.400
we wouldn't need Sun.
link |
00:47:40.320
And Mark was like, well, maybe we can just ditch Sun.
link |
00:47:44.400
Well, if Kip's Java VM, or if you're a JavaScript VM,
link |
00:47:47.360
now we need graphics.
link |
00:47:48.240
So Mark was thinking far ahead
link |
00:47:49.600
because he knew you could do things with HTML and images,
link |
00:47:53.380
but at some point you really want.
link |
00:47:54.920
Like dynamic graphics or three dimensional?
link |
00:47:57.600
Even SGI had already started its downfall
link |
00:47:59.920
because the first floor VLSI team there
link |
00:48:02.960
had gone off to do 3D effects
link |
00:48:04.440
and all these other companies
link |
00:48:05.360
that made the graphics card on your PC, right?
link |
00:48:07.520
Doom was big and Quake.
link |
00:48:09.360
And so you were, we were all playing Quake.
link |
00:48:10.680
I was old, so I was terrible.
link |
00:48:12.880
But why not put that graphics capability on the web?
link |
00:48:16.400
And in fact, it finally happened at Mozilla
link |
00:48:18.720
with Firefox era with Vlad Vukicovic
link |
00:48:21.520
taking OpenGL ES and reflecting it as WebGL.
link |
00:48:24.420
But OpenGL ES is the mobile version of OpenGL,
link |
00:48:28.000
which is a standard based on SGI GL.
link |
00:48:30.320
So this whole lineage of graphics libraries
link |
00:48:32.800
or really graphics languages for what became the GPU.
link |
00:48:36.280
And Mark was thinking ahead.
link |
00:48:37.320
He's like, we need graphics too.
link |
00:48:38.560
And I thought, okay, I can try to get somebody I knew at SGI,
link |
00:48:40.960
but he's a grad student at MIT.
link |
00:48:42.880
He was studying under Barbara Liskov.
link |
00:48:44.440
He laughed when he heard about this later, Andrew Myers.
link |
00:48:46.780
He's at Cornell, long time, I think he's a full professor.
link |
00:48:50.040
And Mark said, great, we'll get him.
link |
00:48:52.200
I'm not sure he's gonna come.
link |
00:48:53.200
We'll throw money, we'll stock options.
link |
00:48:55.320
We never did it.
link |
00:48:56.160
And they did the Sun deal.
link |
00:48:57.640
So Kip Nobly put aside his own JVM
link |
00:49:00.960
and we used the Sun JVM.
link |
00:49:02.880
So that was an ambitious period.
link |
00:49:04.000
And Mark was very generative because he was pushing hard.
link |
00:49:06.640
He was ambitious and he wanted to have Netscape
link |
00:49:11.200
possibly be in control of the ball.
link |
00:49:13.680
Maybe you can speak to this dance
link |
00:49:16.840
of Netscape versus Internet Explorer.
link |
00:49:20.440
You've thrown some loving words towards Microsoft
link |
00:49:25.600
throughout this conversation,
link |
00:49:26.720
but that's a theme with, I mean, Steve Jobs
link |
00:49:29.080
has a similar sort of commentary.
link |
00:49:31.280
From a big sort of philosophical principle perspective,
link |
00:49:34.520
can you comment on like the approach
link |
00:49:36.600
that Microsoft has taken with Internet Explorer
link |
00:49:39.280
from IE1 to Edge today?
link |
00:49:42.120
Is there something that you see as valuable
link |
00:49:45.400
that they're doing in the occasional copying
link |
00:49:48.420
and that kind of stuff?
link |
00:49:49.600
Or is it, is the world worse off
link |
00:49:53.360
because Internet Explorer exists?
link |
00:49:55.240
So I'm gonna segment this into historical areas
link |
00:49:57.640
because I think Microsoft today with Satya
link |
00:49:59.560
is quite a different company
link |
00:50:00.640
and what they're doing with Edge is different.
link |
00:50:02.360
But back then, Gates, aggressive character,
link |
00:50:06.160
not really original in my view, not an originator.
link |
00:50:09.680
Steve Jobs famously said once,
link |
00:50:11.280
he doesn't have any taste
link |
00:50:12.440
and I don't mean this in a small way, he has no taste.
link |
00:50:15.080
You can see this, Apple at the time had beautiful typography
link |
00:50:19.360
and ligatures and kerning and the fonts looked great.
link |
00:50:22.600
And Windows had this sort of ugly system font
link |
00:50:25.240
that was carefully aligned with Pixel
link |
00:50:26.920
so it didn't get anything.
link |
00:50:28.640
What is it?
link |
00:50:29.480
I'm sorry to keep interrupting,
link |
00:50:30.300
but why was Internet Explorer winning
link |
00:50:32.360
throughout the history of these competitions?
link |
00:50:34.320
Distribution.
link |
00:50:35.240
Distribution matters more than anything.
link |
00:50:36.600
And this is why even now we're seeing
link |
00:50:39.840
in the browser wars Edge doing better
link |
00:50:41.640
because it's being foisted on people of Windows.
link |
00:50:43.440
We have Windows 10 boxes at home.
link |
00:50:45.200
We have some Windows 7 boxes or laptops we keep running to
link |
00:50:48.240
because we don't connect them to the internet generally.
link |
00:50:50.840
But once you have that operating system to hold,
link |
00:50:55.840
you can force Edge.
link |
00:50:57.800
And Apple did it with Safari too.
link |
00:50:59.480
It's not unique to Microsoft.
link |
00:51:01.340
That's sad.
link |
00:51:02.180
But distribution matters.
link |
00:51:03.680
And that's why I think IE was going to win.
link |
00:51:07.080
That's why everybody at Netscape felt we're doomed.
link |
00:51:09.560
This was something Michael Toy and Jamie Woodson were doomed.
link |
00:51:12.900
But for a while there we had a chance
link |
00:51:14.720
and we innovated in Netscape too.
link |
00:51:16.040
We did a big platform push, Java and JavaScript
link |
00:51:18.860
and plugins, more plugins and more HTML table features.
link |
00:51:23.860
And really started making a programmable stack
link |
00:51:28.700
out of what were pretty static web languages.
link |
00:51:30.820
And even in the beta releases of Netscape,
link |
00:51:33.220
two people were using JavaScript
link |
00:51:34.460
to build what you would call single page applications
link |
00:51:36.620
like Gmail.
link |
00:51:37.620
And they were using JavaScript locally to compute things
link |
00:51:40.380
and to call the server on a hidden frame in the background.
link |
00:51:43.660
So it was prefiguring a lot of what came later as AJAX
link |
00:51:46.860
or dynamic JavaScript, dynamic HTML.
link |
00:51:48.580
So people saw that, I mean.
link |
00:51:49.740
Even then they saw it, yeah.
link |
00:51:50.920
That's kind of, I don't know.
link |
00:51:52.900
But from my perspective, that seems quite brilliant.
link |
00:51:55.180
It seems like really innovative
link |
00:51:56.580
that you would have code run in the browser.
link |
00:51:59.220
It did impress me with something
link |
00:52:01.380
which I learned later about from Eric Von Hippel of MIT,
link |
00:52:04.020
which is user innovation networks, lead user effects.
link |
00:52:07.260
That throwing out JavaScript,
link |
00:52:09.200
even though we weren't doing open source,
link |
00:52:10.460
we were doing beta releases early
link |
00:52:12.320
and permissively with Netscape.
link |
00:52:14.360
Getting early developer feedback, absolutely critical.
link |
00:52:17.180
I loved it.
link |
00:52:18.020
I did some of that with SGI
link |
00:52:19.140
with some of the products I worked on,
link |
00:52:20.260
but it really came to the fore in Netscape.
link |
00:52:21.860
And that culminated in Mozilla
link |
00:52:23.780
where you're dealing with developers all the time
link |
00:52:25.740
and early adopters, lead users.
link |
00:52:27.240
But the lead users helped improve JavaScript,
link |
00:52:29.840
even in those last few betas
link |
00:52:31.580
where I could hardly change things.
link |
00:52:32.660
I was under pretty rigid change control.
link |
00:52:34.580
So we're talking about just a small collection
link |
00:52:36.260
of individuals that are just like upfront.
link |
00:52:38.340
A guy named Bill Dorch.
link |
00:52:39.420
You can find his work in the web archives,
link |
00:52:40.940
still from 1996.
link |
00:52:41.960
It's a single page application.
link |
00:52:43.300
It's an artist gallery of mountain art.
link |
00:52:46.340
He used JavaScript?
link |
00:52:47.180
It doesn't quite work.
link |
00:52:48.000
He uses JavaScript locally.
link |
00:52:48.840
He uses a local database.
link |
00:52:50.580
What you would think of now is JSON,
link |
00:52:52.180
but it's all pure JavaScript code,
link |
00:52:54.260
a bunch of objects being constructed.
link |
00:52:55.820
That's so cool.
link |
00:52:57.460
So how is, if you can do sort of a big sweeping progress
link |
00:53:02.620
of JavaScript, how has JavaScript changed over the years?
link |
00:53:05.380
Any of you from those early 10 days
link |
00:53:07.300
with a quick addition of garbage collection
link |
00:53:09.460
and fixes around security,
link |
00:53:11.140
how has this evolution that now it's taken over the world?
link |
00:53:14.500
In this, it's been a bumpy ride
link |
00:53:16.340
because the standards body got shut down after Microsoft,
link |
00:53:19.900
I think, took over the web and then felt punished
link |
00:53:22.580
by the USB Microsoft antitrust case.
link |
00:53:25.360
Can you speak to the standard body?
link |
00:53:27.380
That was a fun ride too
link |
00:53:28.260
because Netscape had taken the lead
link |
00:53:30.940
with the web and HTML innovations
link |
00:53:34.340
like frames and framesets tables.
link |
00:53:36.900
And the W3C was sort of off even then,
link |
00:53:39.220
sort of in SGML land heading toward XML, la la land.
link |
00:53:43.100
I'm gonna be a little harsh on it.
link |
00:53:44.340
What's SGML?
link |
00:53:45.180
I'm sorry.
link |
00:53:46.000
SGML was the precursor markup language to HTML.
link |
00:53:48.900
It was sort of the more extensible standards,
link |
00:53:52.740
generalized markup language.
link |
00:53:54.140
It was a...
link |
00:53:54.980
XML like...
link |
00:53:55.820
Pointy brackets, but it had all sorts of elaborate syntax
link |
00:53:58.540
for doing different semantics.
link |
00:54:00.940
And this is why I think TBL and others
link |
00:54:03.780
who wanted to do the semantic web then took XML forward,
link |
00:54:08.320
but they had this, or some of them anyway,
link |
00:54:10.400
had this strange idea they could replace the web with XML
link |
00:54:12.980
or that they would upgrade the web to be XML.
link |
00:54:15.720
And it couldn't be done.
link |
00:54:17.240
Worse is better had concrete meaning.
link |
00:54:19.500
The web was very forgiving of HTML,
link |
00:54:22.660
including sort of minor syntax errors
link |
00:54:25.180
that could be error corrected.
link |
00:54:26.500
Like error correction isn't generally done
link |
00:54:28.140
in programming languages because...
link |
00:54:29.980
That's another amazing thing about HTML is like,
link |
00:54:32.540
it's more like biology than programming.
link |
00:54:35.140
Exactly.
link |
00:54:35.980
And so XML was in its standard form super strict
link |
00:54:40.700
and could never have admitted the kind of users
link |
00:54:43.220
who were committing these errors.
link |
00:54:44.420
And the funniest part was Microsoft said,
link |
00:54:46.500
hey, we're doing XML,
link |
00:54:47.620
but the way they put it in Internet Explorer
link |
00:54:49.540
under the default media type,
link |
00:54:51.500
put it through the HTML error corrector.
link |
00:54:53.940
Oh, wow.
link |
00:54:54.940
So they kind of bastardized it to make it popular
link |
00:54:57.020
and usable and accessible.
link |
00:54:58.580
And so XML as a pure thing was never gonna take over.
link |
00:55:04.220
And what W3C was kind of not fully functional
link |
00:55:07.140
because Netscape wasn't cooperating with them.
link |
00:55:09.700
We thought about where to take JavaScript
link |
00:55:11.100
and we realized our standards,
link |
00:55:12.660
Guru Kargal realized there was a European standards body
link |
00:55:17.140
that had already given Microsoft fits
link |
00:55:18.800
by standardizing parts of the Windows 3.1 API,
link |
00:55:22.580
which European governments insisted on.
link |
00:55:24.020
They said, Microsoft, we can't use your operating system
link |
00:55:26.260
without some standards.
link |
00:55:27.580
And Microsoft said, here's our docs.
link |
00:55:29.660
And the government said, no, we need a European standard.
link |
00:55:32.460
So this body called
link |
00:55:33.420
the European Computer Manufacturers Association, ECMA,
link |
00:55:37.500
which eventually became global
link |
00:55:38.620
and became a proper noun instead of an acronym.
link |
00:55:40.980
Right, it's just one capital E now with a lowercase CMA.
link |
00:55:44.660
Right, and as one of the early Microsoft guys I met
link |
00:55:47.580
when we first convened a working group
link |
00:55:50.260
to talk about JavaScript said,
link |
00:55:51.420
it sounds like a skin disease.
link |
00:55:53.420
But it gave, I mean, maybe you'll speak to that,
link |
00:55:56.140
but it gave the name to JavaScript of ECMA script.
link |
00:55:58.980
That was the standard name
link |
00:55:59.820
because Java was a trademark of Suns.
link |
00:56:02.820
They were so aggressive,
link |
00:56:03.720
they were sending cease and desist letters
link |
00:56:05.840
to people whose middle European heritage
link |
00:56:08.500
meant their surname was Javanko
link |
00:56:10.820
and they called their website javanko.com
link |
00:56:12.900
and Sunwood sent them a letter saying,
link |
00:56:14.680
you're using J A V A at the start of your domain name,
link |
00:56:16.820
you must cease and desist.
link |
00:56:18.940
I love marketing more than anything else in this world.
link |
00:56:22.020
So ECMA script and now is popularly named as ES plus version.
link |
00:56:27.420
I would say people use JS more than anything.
link |
00:56:29.900
People still say JavaScript.
link |
00:56:31.140
JavaScript is in all the books.
link |
00:56:32.460
So I mean, when you're referring to it,
link |
00:56:33.740
it's usually JavaScript.
link |
00:56:34.900
And when you wanna refer to a version of JavaScript,
link |
00:56:37.340
you'll say ES6, ES5.
link |
00:56:39.180
Yes, or now they've gone to years,
link |
00:56:40.860
which is kind of confusing
link |
00:56:41.840
because it's an offset of 2009, ES6, ES 2016.
link |
00:56:50.740
Yeah, it doesn't match the years perfectly.
link |
00:56:52.700
Yeah, so what were the choices made
link |
00:56:55.680
and how did JavaScript evolve here?
link |
00:56:58.020
So we took this new standards body,
link |
00:57:01.100
which we thought sort of a proven record
link |
00:57:04.340
of standing up to Microsoft,
link |
00:57:05.420
but Microsoft sent a lot of people.
link |
00:57:07.540
They sent some people who were pretty good.
link |
00:57:10.540
And then when they realized that I was there
link |
00:57:12.940
and Netscape was not gonna just bend over
link |
00:57:15.220
and do whatever they wanted,
link |
00:57:16.380
they sent somebody really good.
link |
00:57:17.220
And he was a smart guy.
link |
00:57:18.060
He did a lot of the work on the first draft of the spec.
link |
00:57:21.000
Sean Katzenberger, he's left Microsoft.
link |
00:57:22.780
He even did what I sort of did.
link |
00:57:25.280
He told his bosses, stop bugging me to do other things.
link |
00:57:28.000
I'm focused on this.
link |
00:57:28.960
Cause it took a lot of focused work
link |
00:57:30.580
to create the first draft of the spec.
link |
00:57:31.940
And I was still holding,
link |
00:57:33.560
I was spending almost all the plates.
link |
00:57:34.900
I had like part time help in certain areas.
link |
00:57:37.220
And on the front end integrations,
link |
00:57:38.740
I had the front end guys.
link |
00:57:40.080
But I couldn't take as much time as Sean was
link |
00:57:42.620
to write the draft spec,
link |
00:57:43.680
but I had to participate
link |
00:57:44.660
because I was essentially helping write down
link |
00:57:46.880
what the language did
link |
00:57:48.020
and in areas where we didn't like what it did
link |
00:57:50.180
and Microsoft didn't agree,
link |
00:57:51.620
we sometimes got away with slight changes.
link |
00:57:54.580
And that's the story of standards.
link |
00:57:55.800
You have different implementations
link |
00:57:58.020
and depending on their market power,
link |
00:57:59.840
they interoperate where you have agreement
link |
00:58:01.840
and where they don't,
link |
00:58:02.780
the dominant one usually sets the de facto standard.
link |
00:58:05.900
And then you should probably reflect that
link |
00:58:07.500
into the de jure standard.
link |
00:58:09.340
And this happened with JavaScript.
link |
00:58:11.060
Over time, as Netscape went down and Microsoft went up,
link |
00:58:14.120
we did the first edition of the standard codified in 1997
link |
00:58:18.180
in France, we had a trip to Nice, which was very memorable.
link |
00:58:22.140
For any interesting reason or just because it's Nice?
link |
00:58:24.540
And ECMA's European and IBM and others were there.
link |
00:58:28.980
Mike Kalashaw, an IBM fellow was a British.
link |
00:58:31.340
And the guy who ran ECMA at the time, Jan van der Bell,
link |
00:58:35.260
was quite a raconteur and a very fun guy.
link |
00:58:39.060
And he had us out for, you know, the great,
link |
00:58:41.220
you know, Fui de mer, the bouillabaisse and the...
link |
00:58:43.480
Was the standardization process beautiful or painful
link |
00:58:46.140
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.140
Now, Guy Steele was contributed by Sun.
link |
00:58:52.400
So even more than Sean,
link |
00:58:53.620
you had this giant brain Guy Steele helping,
link |
00:58:55.960
bringing some of that scheme magic.
link |
00:58:57.220
And he even brought Richard Gabriel for funding.
link |
00:58:59.460
Richard wrote the fourth clause of the ECMA standard,
link |
00:59:02.900
which was kind of an intro to what JavaScript's all about.
link |
00:59:05.300
So we had some really good people
link |
00:59:07.260
and we didn't fight too much.
link |
00:59:09.140
There was some tension where I was fixing bugs
link |
00:59:11.480
and I was late to a meeting and Sean Katzenberger,
link |
00:59:13.860
Microsoft, was actually mad.
link |
00:59:15.020
Like, where is he?
link |
00:59:15.840
We need him.
link |
00:59:16.680
And when I got there,
link |
00:59:18.660
I saw that only he saw this sort of off by one bug
link |
00:59:21.940
in somewhere in the spec.
link |
00:59:22.960
And then I saw it too.
link |
00:59:24.020
And I said, there's a fence post bug there.
link |
00:59:25.300
And then we kind of locked eyes
link |
00:59:27.020
and we realized we were on the same page.
link |
00:59:28.480
And we kind of, he wasn't mad anymore.
link |
00:59:30.300
What were the features that are being struggled over
link |
00:59:33.020
and debated and thought about?
link |
00:59:35.000
It was mainly writing down what worked
link |
00:59:36.480
and what we thought should work in the edge cases
link |
00:59:38.420
that didn't interoperate or that seemed wrong.
link |
00:59:41.540
But we were already laying the groundwork
link |
00:59:43.080
for the future additions that I was already implementing.
link |
00:59:46.220
I was still trying to lead the standard
link |
00:59:48.120
by using the dominant market power
link |
00:59:50.100
to write the code that actually shipped.
link |
00:59:52.500
So the de facto standard would lead the de jure standard.
link |
00:59:54.740
And I was putting in the missing function forms
link |
00:59:58.220
that I didn't have time for in the 10 days.
link |
01:00:00.520
So this is the engineering mindset versus the theoretician.
link |
01:00:03.500
So you didn't want to create the perfect language,
link |
01:00:05.120
but one that was the popular and shipped
link |
01:00:06.940
and all that kind of stuff.
link |
01:00:07.780
And you could say there was,
link |
01:00:08.620
I was standing on the shoulders of giants.
link |
01:00:09.940
So there was a staged process
link |
01:00:11.220
where I had to hold back things
link |
01:00:12.820
that were well designed by others in other languages
link |
01:00:15.900
and I could imitate,
link |
01:00:17.260
but I couldn't do them all in the 10 days.
link |
01:00:18.540
So they came in 1996 and 97,
link |
01:00:22.820
and they came into the third edition of the standard,
link |
01:00:25.140
which was final finalized in 1999.
link |
01:00:27.680
But at that point,
link |
01:00:28.520
Netscape had been sold to AOL
link |
01:00:31.220
which was a decent exit considering
link |
01:00:33.140
and had previously been mercilessly crushed.
link |
01:00:37.380
Netscape was selling the browser along with server software
link |
01:00:40.700
that it had acquired after its IPO
link |
01:00:42.740
and Microsoft was just underpricing it.
link |
01:00:44.560
So there was no way to compete with that.
link |
01:00:47.500
Microsoft was also making Internet Explorer
link |
01:00:51.420
the default browser in Windows,
link |
01:00:53.140
which is called tying and antitrust law.
link |
01:00:55.580
And they were doing even more brutal things.
link |
01:00:57.140
There was a famous investor.
link |
01:00:59.260
He did very well on Google.
link |
01:01:00.340
So he's a billionaire, Ramshree Ram,
link |
01:01:01.780
and he was sales guy or head of sales at Netscape.
link |
01:01:04.700
And he got off the phone looking ashen faced
link |
01:01:07.920
after a compact called and said,
link |
01:01:10.540
Microsoft just told us they're gonna pull
link |
01:01:12.060
our Windows license if we ship Netscape
link |
01:01:13.860
as the default browser.
link |
01:01:15.100
Wow.
link |
01:01:15.940
So there is some bullying going on.
link |
01:01:17.460
It was totally immaterial in the antitrust case.
link |
01:01:19.720
But JavaScript escaped into the standard setting
link |
01:01:23.060
where there was fairly good cooperation.
link |
01:01:24.900
Microsoft had a really good guy on it
link |
01:01:26.860
and Guy Steele was there for a time
link |
01:01:29.420
and there was some good work.
link |
01:01:30.900
But after the antitrust case
link |
01:01:33.460
and Netscape kind of dissolving into AOL
link |
01:01:37.500
and not really going anywhere quickly,
link |
01:01:38.940
Mozilla took years to really bring up,
link |
01:01:42.380
the standard froze.
link |
01:01:43.400
And by 2003, even though they'd been sort of noodling around
link |
01:01:46.300
with advanced versions, JavaScript 2,
link |
01:01:48.900
I'd given the keys to the kingdom
link |
01:01:50.300
to another MIT grad, Baltimore Horwatt.
link |
01:01:53.060
Very big brain and still at Google, I think.
link |
01:01:54.860
He won the Putnam in 86
link |
01:01:56.700
and he's very mathematical.
link |
01:01:58.380
Legit.
link |
01:01:59.640
He designed this successor language, JavaScript 2,
link |
01:02:02.980
but it only showed up in mutated form
link |
01:02:06.620
in Microsoft's ASP.NET server side
link |
01:02:09.560
and it didn't last there.
link |
01:02:11.100
And it showed up in Flash
link |
01:02:12.340
and that's what became ActionScript 3.
link |
01:02:14.220
Ah, ActionScript, interesting.
link |
01:02:16.860
And then Flash of course declined.
link |
01:02:18.740
And so how did we arrive at ES6
link |
01:02:21.300
where it's like there's so many,
link |
01:02:24.120
where everyone, okay, there's this history of JavaScript
link |
01:02:27.220
that people were, it was just like cool
link |
01:02:29.220
when you're like having beers to talk crap about JavaScript.
link |
01:02:32.540
Everyone loves to hate,
link |
01:02:33.900
like people who are married say, ah, marriage sucks,
link |
01:02:36.460
is they just wanna get, let off some steam
link |
01:02:38.900
even though everyone uses the language.
link |
01:02:40.900
But ES6, it's become this like reputable,
link |
01:02:45.940
like it fixed major pain points, I think.
link |
01:02:49.180
It added things to the language
link |
01:02:50.420
and added something that was already ES5 strict mode,
link |
01:02:53.580
but made it implicit in class bodies and module bodies.
link |
01:02:57.260
It was a big jump,
link |
01:02:58.500
but it accumulated some of the ES4 designs
link |
01:03:01.300
that we'd done with Adobe
link |
01:03:03.640
for what we hoped would be the fourth edition of ECMAScript
link |
01:03:07.660
that were supposed to fold in some of these old JavaScript 2
link |
01:03:10.740
ideas that had come into ActionScript 3.
link |
01:03:13.060
So you look at the family tree and you see these forks
link |
01:03:15.220
and the main ones are the ones that go into Adobe Flash
link |
01:03:20.700
acquired from Macromedia
link |
01:03:21.900
and the one that went into the service side
link |
01:03:23.580
of Microsoft's stack, which kind of died.
link |
01:03:27.100
And then trying to bring them back into the standard
link |
01:03:28.900
and not quite succeeding, ES4 was mothballed,
link |
01:03:32.300
but all the good parts that everyone liked made it into ES6.
link |
01:03:35.700
And so that was a success.
link |
01:03:37.060
And I said earlier, I had the wrong year,
link |
01:03:38.380
I think it's 2015, so it's off by.
link |
01:03:40.380
Four, ES6.
link |
01:03:42.420
Yeah, it was finalized in 2015.
link |
01:03:44.300
It took a little longer than we hoped,
link |
01:03:45.620
but because ES5 was 2009
link |
01:03:48.580
and that was a smaller increment from ES3.
link |
01:03:51.580
We skipped four again, we mothballed it.
link |
01:03:53.500
And we had a split in the committee where some people said,
link |
01:03:56.620
ES4 is too big, we're gonna work on incremental improvements,
link |
01:03:59.540
no new syntax in particular, they promised.
link |
01:04:02.580
Not quite true, but they added a bunch of interesting APIs,
link |
01:04:06.300
Alan Wiersbrock, my coauthor of the Hobble paper.
link |
01:04:09.880
And he was at Microsoft at the time.
link |
01:04:11.140
I ended up hiring with Mozilla.
link |
01:04:12.300
He wanted to get to Mozilla and keep doing
link |
01:04:16.620
his sort of editor job of the JavaScript standard,
link |
01:04:19.660
ECMAScript.
link |
01:04:21.300
And when we got ES6 done, it was a little late, 2015,
link |
01:04:25.660
and we switched to year numbers.
link |
01:04:27.180
So people still call it ES6, I call it ES6.
link |
01:04:30.100
But if you remember, off by nine plus 2000.
link |
01:04:33.100
Yeah, I mean, ES6 is such a big job.
link |
01:04:35.780
I mean, like you said, there's a third that connects all of it,
link |
01:04:38.300
but ES6 is when it became this language
link |
01:04:41.100
that almost feels ready to take over the world completely.
link |
01:04:45.180
More programming and the large features,
link |
01:04:46.660
more features you need for larger teams.
link |
01:04:49.380
Software engineering.
link |
01:04:50.300
Microsoft did something smart, too.
link |
01:04:52.220
Anders and company, Luke Hoban, who's left Microsoft,
link |
01:04:56.220
also did TypeScript.
link |
01:04:57.800
And they realized something, I think,
link |
01:05:00.400
that Gilad Barak has also popularized,
link |
01:05:02.760
and he was involved in Dart at Google.
link |
01:05:05.740
If you, don't worry about soundness in the type system.
link |
01:05:08.860
You don't try to enforce the type checks
link |
01:05:10.920
at runtime in particular.
link |
01:05:11.860
Just use it as sort of a warning system,
link |
01:05:13.460
a tool time type system.
link |
01:05:15.020
You can still have a lot of value for developers,
link |
01:05:17.660
especially in large projects.
link |
01:05:19.260
So TypeScript's been a roaring success for Microsoft.
link |
01:05:21.260
What do you think about TypeScript?
link |
01:05:24.100
Is it adding confusion, or is it ultimately beneficial?
link |
01:05:27.380
I think it's beneficial.
link |
01:05:28.220
Now, it's technically a superset of JavaScript,
link |
01:05:30.920
so of course I love it, right?
link |
01:05:33.380
The shortest JavaScript program
link |
01:05:35.540
is still a TypeScript program.
link |
01:05:36.660
Any JavaScript program is a TypeScript program,
link |
01:05:38.540
which is brilliant,
link |
01:05:39.380
because then you can start incrementally adding
link |
01:05:40.860
type annotations, getting warnings,
link |
01:05:43.020
learning how to use them.
link |
01:05:44.420
Microsoft's had to kind of look around corners
link |
01:05:47.180
at the standards body and guess how their version of modules
link |
01:05:50.780
or decorators should work.
link |
01:05:52.500
And the standards body then may change things a bit.
link |
01:05:55.380
So I think they're obligated with TypeScript
link |
01:05:57.620
either to carry their own version
link |
01:05:59.340
or to bring it back with incompatible changes
link |
01:06:01.680
towards the standard over time.
link |
01:06:03.100
And I think they've played generally fair there.
link |
01:06:05.420
There's some sentiment that,
link |
01:06:06.460
why don't they standardize TypeScript?
link |
01:06:07.980
Well, they've been clear they don't want to.
link |
01:06:09.920
They have a proprietary investment, it's valuable.
link |
01:06:11.880
They have control of the ball.
link |
01:06:13.420
And in some ways, you can say the same thing
link |
01:06:15.820
to any of the other big companies in the standards body.
link |
01:06:18.100
Why doesn't Google standardize its stuff?
link |
01:06:20.580
So you think it'll continue being
link |
01:06:22.260
like a kind of dance partner to JavaScript,
link |
01:06:24.620
to the base JavaScript?
link |
01:06:25.860
There's a hope that at some point,
link |
01:06:27.620
if they keep reconverging it and the standard
link |
01:06:29.740
doesn't break them and goes in a good direction,
link |
01:06:32.020
we will get at least the annotation syntax
link |
01:06:34.780
and some semantics around them.
link |
01:06:37.020
Because when you're talking about type annotations,
link |
01:06:39.020
they're generally on parameters and return values
link |
01:06:42.340
and variable declarations.
link |
01:06:43.940
They're cast operators.
link |
01:06:45.540
You want that syntax to be reserved
link |
01:06:47.260
and you want it to work the same in all engines.
link |
01:06:49.980
And this is where ideas like Gilad's
link |
01:06:51.540
pluggable type systems might be good,
link |
01:06:54.240
though then you could create the same problem
link |
01:06:55.820
you have with Lisp and Scheme,
link |
01:06:56.960
where there's a bunch of macro libraries
link |
01:06:58.540
and they don't agree and you have conflicts between them.
link |
01:07:01.700
But pluggable type systems could be one way to standardize.
link |
01:07:04.940
What do you think about the giant ecosystem
link |
01:07:07.060
of frameworks in JavaScript?
link |
01:07:09.820
It feels like, because, I mean,
link |
01:07:12.860
this is a side effect of how many people use JavaScript,
link |
01:07:16.060
a lot of entrepreneurial spirit
link |
01:07:19.220
create their own JavaScript frameworks
link |
01:07:22.300
and they're actually awesome in all different ways.
link |
01:07:27.260
And this is an interesting question
link |
01:07:31.220
about almost like philosophically
link |
01:07:33.180
about biological system and evolution,
link |
01:07:35.260
all that kind of stuff.
link |
01:07:36.140
Do you see that as good or should it like,
link |
01:07:38.600
should some of them die out quicker?
link |
01:07:40.380
I think maybe they should, now jQuery was a very clever
link |
01:07:44.480
thing, John Resig made this library
link |
01:07:45.980
that was sort of query and do
link |
01:07:47.600
and blended sort of CSS selector syntax
link |
01:07:49.980
with JavaScript sort of object graph or DOM querying
link |
01:07:53.020
and made it very easy for people to do things
link |
01:07:54.940
almost like they were learning jQuery as its own language,
link |
01:07:57.660
domain specific language.
link |
01:07:58.980
And that I think reflected in part the difficulty
link |
01:08:03.220
of using the document object model,
link |
01:08:04.960
these APIs that were originally designed in the 90s
link |
01:08:07.020
for Java as well as JavaScript.
link |
01:08:08.460
They're very object oriented or even procedural.
link |
01:08:11.740
They're very kind of verbose.
link |
01:08:13.360
And it took like a constructor call
link |
01:08:15.420
and three different, you know, hokey pokey dances
link |
01:08:17.820
to do something where as in jQuery, it's just one line.
link |
01:08:20.500
Right, so that fed back finally into the standards.
link |
01:08:24.500
It didn't mean we standardized jQuery.
link |
01:08:25.940
It wasn't quite that concise,
link |
01:08:27.140
but you find now with the modern standards
link |
01:08:29.660
that we were working on in the HTML5 sort of effort
link |
01:08:34.780
that things became simpler, the fetch API
link |
01:08:37.100
and the query selector API, document.querySelector.
link |
01:08:40.140
A lot of things can be done now in raw JavaScript
link |
01:08:42.540
that you would make more concise and terse in jQuery,
link |
01:08:46.660
but it's not bad.
link |
01:08:47.980
It's pretty good.
link |
01:08:48.820
Whereas in the old DOM of 15 years ago,
link |
01:08:51.100
it was just too verbose.
link |
01:08:51.940
So maybe the frameworks were born kind of
link |
01:08:55.560
because JavaScript lacks some of the features of jQuery.
link |
01:08:59.020
And so like now that JavaScript is swallowing
link |
01:09:02.700
what jQuery was, then the frameworks will,
link |
01:09:05.220
only the ones that truly add value will stick around
link |
01:09:07.840
and the other ones will die out.
link |
01:09:08.980
And that highlights this also this division
link |
01:09:10.700
between the core language JavaScript,
link |
01:09:12.300
which can show up in other places
link |
01:09:13.580
like Node.js on the server side
link |
01:09:15.680
and the browser specific APIs
link |
01:09:17.660
or the document object model APIs,
link |
01:09:19.720
which are even managed by the W3C,
link |
01:09:21.580
the standards body that was off in XML La La Land
link |
01:09:24.460
when we were doing real JavaScript standards in ECMA.
link |
01:09:26.940
And you have this division of labor,
link |
01:09:30.260
division of responsibility and division of style
link |
01:09:33.260
and sort of aesthetics and also speed.
link |
01:09:37.260
So the document object model really stagnated
link |
01:09:39.620
after Microsoft kind of deinvested in the web.
link |
01:09:43.580
And Microsoft did something in their haste
link |
01:09:45.860
in the spirit of Netscape,
link |
01:09:46.900
doing things quickly and getting on first called DHTML.
link |
01:09:49.780
And some of their innovations
link |
01:09:51.340
that were like an alternative document object model
link |
01:09:53.700
didn't really get standardized until HTML5
link |
01:09:56.860
when we pragmatists at Opera at the time,
link |
01:10:00.020
Ian Hickson who went to Google,
link |
01:10:01.720
Apple and Mozilla said let's,
link |
01:10:05.100
XML is not gonna replace HTML, HTML4 is too old.
link |
01:10:08.700
Let's standardize HTML5 based on all this good stuff
link |
01:10:12.140
including that DHTML variant dynamic HTML5.
link |
01:10:14.900
HTML5, it feels like to me, maybe you can correct me,
link |
01:10:18.140
like a beautiful piece of design work.
link |
01:10:21.140
It was, it's not often with web stuff,
link |
01:10:24.860
you have this breath of just like,
link |
01:10:27.320
oh, whoever did this is, it just feels good.
link |
01:10:31.740
Is that, what are your thoughts about HTML?
link |
01:10:33.660
Is the, am I being too romantic?
link |
01:10:35.860
A little bit, a little bit.
link |
01:10:36.780
Are there flaws, fundamental flaws to it
link |
01:10:38.660
that I'm just not aware of?
link |
01:10:40.180
My old friend Hixie did a great job.
link |
01:10:42.540
He was another renegade physics student.
link |
01:10:45.660
And he was basically a QA guy at Opera
link |
01:10:47.980
but he obviously trained physics student
link |
01:10:52.500
and someone who could write British
link |
01:10:54.620
or he developed test suites
link |
01:10:57.820
and he started thinking about them more axiomatically.
link |
01:11:00.920
Now this is, this can be good
link |
01:11:02.520
because you can sort of systematize
link |
01:11:03.980
in a way that makes a better HTML
link |
01:11:06.020
or you can get caught in the pragmatism of saying,
link |
01:11:08.100
well, we have to handle all of these edge cases
link |
01:11:09.820
so we're just gonna have sort of a test matrix.
link |
01:11:12.580
And if the matrix is large,
link |
01:11:13.980
it will not be beautiful by many people's lights.
link |
01:11:15.860
Everyone likes to minimize along their preferred dimensions,
link |
01:11:19.340
the seven special forms and scheme or whatever.
link |
01:11:21.660
But reality is HTML needs to be big.
link |
01:11:27.140
It's kind of shambolic, it's a creative multi paradigm.
link |
01:11:30.400
And Hixie did a good job, I would say, with a bunch of it.
link |
01:11:34.380
Other people came in in the spirit of Ian Hickson
link |
01:11:36.620
to do HTML5 work and they've carried on that effort.
link |
01:11:40.260
And so it's a mix of pragmatism,
link |
01:11:42.820
de facto standards from the past being sort of combined
link |
01:11:46.280
or written down for the first time
link |
01:11:47.580
and then rethought in a way that has a simpler syntax,
link |
01:11:50.300
like the fetch API instead of XML HTTP request.
link |
01:11:54.420
This video too as well, it ultimately,
link |
01:11:56.540
it feels like maybe you can correct me,
link |
01:11:58.100
it feels like it was the nail in the coffin of Flash.
link |
01:12:01.180
Steve Jobs saying no Flash on the iPhone,
link |
01:12:03.020
in my opinion, was the actual sting through the heart.
link |
01:12:05.460
But, well, I'm not sure what trope you wanna use.
link |
01:12:09.140
Flash was a zombie until just this year, right?
link |
01:12:12.060
Or last year, I think last year
link |
01:12:13.300
was the end of Flash in main browsers.
link |
01:12:16.380
But Jobs really did the death blow.
link |
01:12:18.280
And yeah, you're right, we had to make HTML5 competitive.
link |
01:12:23.020
I still don't think we got
link |
01:12:23.900
that beautiful timeline animation.
link |
01:12:26.780
The timeline thing, so you like the time.
link |
01:12:28.620
I mean, me from, I used to animate
link |
01:12:31.180
all kinds of stuff inside Flash,
link |
01:12:32.780
plus there's a programming element.
link |
01:12:34.940
It was a little bit, I don't know if you can comment on that,
link |
01:12:38.440
but to me, it was a little bit like go to statement,
link |
01:12:40.780
like in a sense that it was a little bit too chaotic.
link |
01:12:44.900
Like it didn't, that OCD part of me as a programmer
link |
01:12:48.380
wasn't satisfied by Flash.
link |
01:12:50.180
It feels like there was bugs that were introduced
link |
01:12:52.760
through the animation process that I couldn't debug easily.
link |
01:12:55.340
Yes, I heard that too.
link |
01:12:56.620
I didn't use it,
link |
01:12:57.460
so I'm doing the grass is greener thing here.
link |
01:12:59.820
The thing I liked about the animation model
link |
01:13:02.100
was that it was this immutable function of time.
link |
01:13:03.900
So you could time warp and you could,
link |
01:13:06.220
if you dodged these bugs or worked carefully,
link |
01:13:08.320
you could really make it sing in ways
link |
01:13:09.900
that I think still a little challenging
link |
01:13:11.700
with the web animation standards.
link |
01:13:14.620
But, or just using raw canvas and WebGL.
link |
01:13:18.140
But there's so many tools now that maybe it doesn't matter.
link |
01:13:20.740
And yet we had to do video,
link |
01:13:23.980
we had to do WebGL and then evolve it.
link |
01:13:27.820
We had to do web audio.
link |
01:13:30.060
But once we did all these things that helped Flash die,
link |
01:13:34.140
thanks to Steve Gubbs,
link |
01:13:35.700
we had something that people didn't realize.
link |
01:13:39.580
We had that vision that Market Vision had,
link |
01:13:41.180
this graphics capable to the metal portable runtime.
link |
01:13:46.620
And we at Mozilla realized this
link |
01:13:49.360
and we saw JavaScript was something
link |
01:13:52.420
that you could compile to.
link |
01:13:53.340
Adobe had somebody in the Adobe Labs doing this too.
link |
01:13:55.620
He had a project called Alchemy.
link |
01:13:57.220
We had somebody who's now Google,
link |
01:13:59.820
Alon Zakai, who did his own LLVM based compiler
link |
01:14:03.260
that would take C or C++ and it would emit JavaScript.
link |
01:14:06.140
And you would think this is crazy.
link |
01:14:07.660
You're going from this sort of machine types,
link |
01:14:09.820
low level, controlled memory allocation language
link |
01:14:13.100
to this garbage collected, dynamically typed,
link |
01:14:16.380
high level, higher level language.
link |
01:14:18.060
But Alon sort of just phenomenologically carved nature
link |
01:14:22.460
of the joint and found the forms
link |
01:14:23.740
that were fast in JavaScript.
link |
01:14:25.380
And then with Dave Herman,
link |
01:14:27.300
who I'd recruited from Northeastern University,
link |
01:14:29.580
who was a type theorist,
link |
01:14:31.280
and Luke Wagner, who's still at Mozilla,
link |
01:14:33.840
who was the compiler guy and the JIT guy,
link |
01:14:36.860
they figured out how to codify what Alon had done
link |
01:14:40.240
into a typed subset of JavaScript called Asm.js.
link |
01:14:44.320
And this is a strange thing to think about
link |
01:14:45.700
because it doesn't have new syntax.
link |
01:14:47.320
The types are casts that occur in dominator positions
link |
01:14:52.780
in the control flow graph.
link |
01:14:54.180
So it's like a hack on JavaScript and it's a subset
link |
01:14:56.740
and it uses those bitwise operators
link |
01:14:58.380
that I talked about copying from Java
link |
01:15:00.420
to basically cast numeric types,
link |
01:15:04.500
which are double position flowing point, into integers.
link |
01:15:06.940
And so inside JavaScript, in the kernel semantics,
link |
01:15:10.600
are integers.
link |
01:15:11.700
And if you use these operators,
link |
01:15:13.040
if a compiler emits them in the right places,
link |
01:15:15.600
you can then treat them as typed values,
link |
01:15:18.500
typed memory locations, and you can type check your program.
link |
01:15:22.380
You can not only type check it, you can compile it.
link |
01:15:24.940
And this is all in sort of linear time, Alon.
link |
01:15:27.480
You can compile it to have deterministic performance.
link |
01:15:30.420
It doesn't touch the garbage collector.
link |
01:15:32.580
It calls a bunch of functions that come from the C functions
link |
01:15:35.500
or C++ code that you're compiling.
link |
01:15:37.500
And you can make the Epic Unreal Engine
link |
01:15:40.980
go in 30 frames a second.
link |
01:15:43.620
And when we did this in 2013 in the fall,
link |
01:15:46.900
Tim Sweeney and I didn't think it could be done quickly.
link |
01:15:50.180
Thought it would take years.
link |
01:15:51.580
And the team went to Raleigh, to Epic,
link |
01:15:54.100
and in four days they had Unreal Engine ported
link |
01:15:57.460
by pressing a compile button.
link |
01:15:59.980
But they had to have WebGL,
link |
01:16:01.700
which came from OpenGL.
link |
01:16:03.220
Yes, it came to OpenGL, which came from Silicon Graphics GL.
link |
01:16:06.020
They had to have Web Audio so they could map OpenAL,
link |
01:16:09.460
which was another audio library standard to Web Audio,
link |
01:16:11.740
which was kind of a Chrome idiosyncratic thing.
link |
01:16:14.940
But they could make it work.
link |
01:16:16.300
And they had to have Asm.js for fast C++ to JavaScript.
link |
01:16:21.100
And if you didn't have that fast compiler step,
link |
01:16:25.260
the JavaScript you'd write by hand
link |
01:16:27.380
trying to do an Unreal game would be too big and too slow.
link |
01:16:29.820
It would touch the garbage collector.
link |
01:16:31.420
It would not keep up with 30 frames a second
link |
01:16:33.220
on the hardware, 2013 hardware.
link |
01:16:35.580
So we demoed that at,
link |
01:16:38.540
this must have been fall 2012 now that I think about it.
link |
01:16:40.420
Because we demoed it at GDC,
link |
01:16:42.340
Game Developer Conference 2013.
link |
01:16:44.420
And people were stunned.
link |
01:16:45.420
That's like Unreal Engine, Unreal Tournament
link |
01:16:47.380
running in my browser window.
link |
01:16:48.860
No plugin, no Flash, no Java, no.
link |
01:16:52.660
So were those the early days of,
link |
01:16:54.420
because JavaScript now is able to run basically on par
link |
01:16:58.340
with a lot of the C++.
link |
01:17:01.860
And even before then,
link |
01:17:02.780
you had the fast JavaScript VMs in 2008
link |
01:17:05.340
when Chrome came out.
link |
01:17:06.520
Just before it came out, Mozilla,
link |
01:17:08.740
my friend Andreas Gal and I and others
link |
01:17:11.660
hacked out Trace Monkey, our Trace based JIT.
link |
01:17:14.420
The Squirrel Fish Extreme team at Apple did their JIT.
link |
01:17:18.700
And we were all competing
link |
01:17:19.660
on these crazy performance benchmarks.
link |
01:17:21.860
It was a little bit too much tuning to the benchmark.
link |
01:17:23.520
But JavaScript started getting fast
link |
01:17:25.180
and developers started noticing it.
link |
01:17:26.660
But it was still kind of its own high level language
link |
01:17:29.740
with garbage collection.
link |
01:17:30.740
The Asm.js step helped us go further
link |
01:17:33.220
because until we really proved the concept,
link |
01:17:37.060
people were still saying, well, JavaScript's okay.
link |
01:17:39.340
It's getting faster, thanks to V8.
link |
01:17:40.980
Everybody gave Google credit, especially Google.
link |
01:17:43.300
But we need something to kill Flash.
link |
01:17:44.900
Let's use the portable native client code
link |
01:17:47.260
that Google had acquired, native client.
link |
01:17:50.260
Which is a separate lineage for taking basically C code,
link |
01:17:52.940
compiling it into a software fault isolated container
link |
01:17:56.260
of some sort using some kind of virtualization technique.
link |
01:17:59.740
And maybe it can even be in process
link |
01:18:01.620
and still be memory safe, that would be awesome.
link |
01:18:03.080
But they ended up using process isolation too.
link |
01:18:04.800
And that kind of weakened it.
link |
01:18:06.300
And in the end, it was like portable native client,
link |
01:18:08.540
okay, meet the new boss, same as the old boss.
link |
01:18:11.060
This is the Google Flash, right?
link |
01:18:13.260
But when we did Asm.js and we showed Unreal Engine working,
link |
01:18:17.180
I think it was only a matter of time
link |
01:18:18.660
before Google threw in the towel.
link |
01:18:19.820
And in fact, everybody agreed in spring of 2015,
link |
01:18:23.160
we're gonna take what was proven by Asm.js
link |
01:18:25.500
and make a new syntax, a binary syntax, it's efficient,
link |
01:18:29.460
that loads into the same JavaScript VM
link |
01:18:31.580
that JavaScript loads into.
link |
01:18:32.620
So there'll be two source languages, one VM,
link |
01:18:34.780
very important, one garbage collector,
link |
01:18:36.220
one memory manager, one set of compiler stages.
link |
01:18:40.780
And that's called WebAssembly.
link |
01:18:42.300
And that's the successor to Asm.js.
link |
01:18:44.260
And it's important that it have binary syntax
link |
01:18:46.340
because at the end of the day, especially on mobile,
link |
01:18:48.780
if you're downloading JavaScript,
link |
01:18:50.100
even if you're using LZ compression on the wire,
link |
01:18:52.040
that's cool, but you've got to blow it out into memory
link |
01:18:53.940
and then parse the silly eight character function keyword
link |
01:18:56.860
that I picked, when I should have used something shorter,
link |
01:19:00.820
I picked it because of awk, the Unix tool.
link |
01:19:04.540
So anyways.
link |
01:19:05.380
I want to, but I'm not following the awk thread.
link |
01:19:07.940
Yeah, don't worry about it.
link |
01:19:09.780
Is it surprising to you that,
link |
01:19:12.260
how damn fast JavaScript is these days?
link |
01:19:14.660
I mean, like, you've been through the whole journey.
link |
01:19:16.900
I know every step of the way, but is it like,
link |
01:19:19.640
I mean, it feels incredible.
link |
01:19:22.140
It does, but I knew, so the funny thing is,
link |
01:19:24.220
computer science is this big karmic wheel, right?
link |
01:19:26.860
Wheel of Fortuna.
link |
01:19:29.140
And in the, it's about the 97,
link |
01:19:32.460
I was loaned by Netscape to do due diligence for Sun
link |
01:19:37.100
in their acquisition of Anamorphic,
link |
01:19:39.300
which was David Unger and friends, people,
link |
01:19:45.180
Craig, I'm forgetting his name, he went to Microsoft.
link |
01:19:47.700
These Stanford language buffs who'd taken Smalltalk
link |
01:19:51.180
and then David create itself
link |
01:19:53.500
as a simpler sort of Smalltalk language
link |
01:19:56.260
and made really fast, just in time compiling VMs for them.
link |
01:20:00.620
And they, you know, well ahead of Java hotspot
link |
01:20:04.320
or JavaScript V8 or any of these modern VMs,
link |
01:20:07.660
figured out how to make dynamic code fast
link |
01:20:10.780
because Smalltalk is dynamic language, right?
link |
01:20:13.100
It has classes, it has, I think more lockdown declarative
link |
01:20:16.420
syntax than JavaScript, but it's fundamentally dynamic.
link |
01:20:18.500
You don't declare the types.
link |
01:20:19.900
But you could infer the types as the program runs
link |
01:20:24.180
and you start to form these ideas
link |
01:20:26.100
about what types are actually flowing through key operations
link |
01:20:29.100
and you form little so called polymorphic inline caches
link |
01:20:32.740
that are optimized machine code.
link |
01:20:35.660
The cache is the machine code that assumes,
link |
01:20:38.340
does a quick check to make sure the type is right
link |
01:20:40.180
and if it's not right, it bails to the interpreter.
link |
01:20:42.420
And if it is right, you go pretty fast.
link |
01:20:44.500
And that short test is a predicted branch,
link |
01:20:47.100
so things are pretty quick.
link |
01:20:48.660
All that amazing stuff I knew about in the 90s
link |
01:20:51.340
and I didn't have time to do it
link |
01:20:53.780
and Anamorphic got bought by Sun and they did hotspot.
link |
01:20:57.220
And you needed that even in Java because at scale,
link |
01:21:00.060
Java has some dynamic aspects due to invoke interface.
link |
01:21:04.340
You can have basically collections of Java code
link |
01:21:06.740
where you don't know at the time each module
link |
01:21:10.900
or package is compiled exactly what's being called,
link |
01:21:13.900
what subclass or what implementation
link |
01:21:16.300
of an interface is being called.
link |
01:21:17.820
And so you want to optimize using this sort of dynamic
link |
01:21:20.100
polymorphic caching there too.
link |
01:21:21.740
And they did that and hotspot, it's amazing beast.
link |
01:21:24.620
I've met like 13 people who all claim they created it.
link |
01:21:27.740
I think one of them may deserve credit more than others.
link |
01:21:31.620
But I didn't get to do that in JavaScript.
link |
01:21:34.660
And when we knew that Google was going to do their own
link |
01:21:38.420
browser, which we knew at Mozilla around 2006,
link |
01:21:42.420
I also met the team that did V8.
link |
01:21:45.140
And it turns out it was Lars Bach,
link |
01:21:46.580
who was one of the young engineers from Anamorphic
link |
01:21:49.300
that got acquired by Sun.
link |
01:21:50.660
And so Lars is like one of the world's expert
link |
01:21:52.940
on these kinds of virtual machines.
link |
01:21:54.940
And he picked my brains about JavaScript.
link |
01:21:56.780
I could tell he didn't like it at the time,
link |
01:21:58.100
but he had to do it.
link |
01:21:59.920
And...
link |
01:22:00.760
Oh, really interesting.
link |
01:22:01.580
Yeah, in 2006 lunch at Google's campus.
link |
01:22:03.780
And then I had another friend who was DevRel at Chrome
link |
01:22:07.020
and he said, yeah, we don't know what they're doing.
link |
01:22:08.340
This is getting 2007 to fall, getting toward 2008.
link |
01:22:12.020
We're trying to get Chrome out
link |
01:22:13.020
and we don't know what's going with the V8 team.
link |
01:22:14.500
They're off in Aarhus, Denmark,
link |
01:22:16.900
rewriting their engine four times, which is good.
link |
01:22:19.300
That's the right way to do this kind of development.
link |
01:22:22.300
They were learning JavaScript, including all its quirks,
link |
01:22:24.280
which they came to hate the fire of a thousand suns,
link |
01:22:27.020
which is one of the reasons that Lars and company did Dart,
link |
01:22:29.820
their own language.
link |
01:22:30.940
But they also made the language fast.
link |
01:22:32.900
And meanwhile, we knew this was happening.
link |
01:22:35.260
So we got our act together with Trace Monkey,
link |
01:22:38.500
our tracing JIT at Mozilla and Apple I think was also aware.
link |
01:22:41.860
And so they were doing their own JIT.
link |
01:22:43.020
So the era of JITed fast JavaScript in 2008
link |
01:22:46.420
had this prehistory going back to Smalltalk itself
link |
01:22:49.580
and Anamorphic.
link |
01:22:50.980
And again, the lineage is interesting
link |
01:22:53.100
because you had Lars and Anamorphic
link |
01:22:54.500
and then he ends up at Google.
link |
01:22:55.980
Yeah, and today we have an incredibly fast language
link |
01:23:00.160
that like you said, still,
link |
01:23:02.860
without hate, you can't have love.
link |
01:23:04.780
So I think there's both love and hate for this dance,
link |
01:23:09.820
this rich complex dance of JavaScript
link |
01:23:12.100
throughout its history.
link |
01:23:12.940
There's a dialectic for sure.
link |
01:23:15.300
Today, JavaScript is the most popular language in the world.
link |
01:23:20.140
Why by many measures?
link |
01:23:22.980
Why do you think that is?
link |
01:23:24.700
Is there some fundamental ideas
link |
01:23:28.420
that you've already spoke to a little bit
link |
01:23:29.740
but sort of broader
link |
01:23:30.820
that you think is the most popular language in the world?
link |
01:23:32.820
So I think I did, by doing first class functions
link |
01:23:36.220
and taking the good parts of the C operator hierarchy
link |
01:23:40.780
and just keeping things simple enough,
link |
01:23:44.060
maybe it could have been simpler
link |
01:23:45.100
but I had to make it look like Java
link |
01:23:47.380
and interoperate with Java
link |
01:23:48.780
that there was inherent goodness,
link |
01:23:52.860
Aristotelian quality there.
link |
01:23:54.420
And people perceive that
link |
01:23:56.100
even through all the quirks and warts.
link |
01:23:57.740
And then over time working on it with the standards body,
link |
01:23:59.940
working on it not only as a core language
link |
01:24:02.800
but in the context of HTML5 and making the browser better,
link |
01:24:06.660
listening to developers, thinking about,
link |
01:24:08.940
this is something that Nick Thompson wrote nicely
link |
01:24:10.860
about on Hacker News, I was very flattered.
link |
01:24:12.620
He said, Java was this thing
link |
01:24:14.300
where the experts were writing the code
link |
01:24:16.000
and it was compiled and you had to declare all your types
link |
01:24:18.020
and Sun didn't really give a damn about
link |
01:24:20.980
the average programmer who wanted to build real web apps,
link |
01:24:23.820
dynamic things.
link |
01:24:25.060
And I was in there meanwhile doing a bunch of people's jobs
link |
01:24:28.820
making JavaScript survive those early years
link |
01:24:31.580
when it was kind of touch and go.
link |
01:24:33.620
JavaScript was considered a Mickey Mouse language.
link |
01:24:36.140
It was for annoyances like the scrolling text
link |
01:24:38.660
at the bottom of the browser in the status bar.
link |
01:24:40.780
But I kept listening to developers working with them
link |
01:24:43.060
and trying to make it run in that single threaded event loop
link |
01:24:46.860
in a useful way.
link |
01:24:47.720
And I think that forged something
link |
01:24:49.880
that people have come to love.
link |
01:24:51.180
Now you don't always love the best thing, right?
link |
01:24:53.700
I talked about Shakespeare sonnet about
link |
01:24:58.620
I'm Mr. Sizer, nothing like the sun.
link |
01:25:00.180
Or the scene from Josh Whedon's film Serenity at the end
link |
01:25:04.860
where the actual piece in the score by David Newman
link |
01:25:08.340
is called Love where Captain Mal is teaching River Tam
link |
01:25:12.860
about how to pilot the ship.
link |
01:25:13.860
And she's a super genius, super soldier.
link |
01:25:15.380
She knows how to do it already.
link |
01:25:17.100
And he's basically talking about how you have to love
link |
01:25:19.500
the ship because if you don't, it's going to kill you.
link |
01:25:22.020
And then the piece falls off the ship.
link |
01:25:23.860
It's kind of like JavaScript.
link |
01:25:26.060
You have to love it.
link |
01:25:26.900
You have to love it because now people say we're stuck
link |
01:25:30.020
with it because it got this priority of place.
link |
01:25:31.620
But there's love underpinning that.
link |
01:25:33.340
And actually the listening to developers,
link |
01:25:35.860
that's kind of beautiful.
link |
01:25:36.700
There's most successful products in this world
link |
01:25:41.140
with all the messes, with all the flaws.
link |
01:25:43.100
Perhaps the flaws themselves are actual features,
link |
01:25:45.360
but that's a whole nother, that's a discussion about love.
link |
01:25:48.180
But underneath it, there's something
link |
01:25:50.220
that just connects with people.
link |
01:25:52.420
And it has to keep connecting.
link |
01:25:53.480
If JavaScript kind of went off in this,
link |
01:25:55.640
people sometimes complain about ES6.
link |
01:25:57.340
Oh, you put classes in JavaScript.
link |
01:25:58.700
I hate classes.
link |
01:25:59.540
You've ruined it.
link |
01:26:00.420
But it's not true.
link |
01:26:01.420
It's a dynamic language.
link |
01:26:02.660
Smalltalk had classes.
link |
01:26:04.820
Python has classes.
link |
01:26:07.060
There are lots of Lisp variants that have classy systems.
link |
01:26:12.740
So people who don't reject it based on some sort
link |
01:26:16.780
of fashion judgment do use it and do interact
link |
01:26:22.120
with the standards body.
link |
01:26:23.380
The standards body is competing browser vendors mainly,
link |
01:26:25.840
but also now big companies that use JavaScript heavily,
link |
01:26:28.480
the Paypal's and other such companies, Salesforce.
link |
01:26:32.980
And they have to cater to web developers.
link |
01:26:36.300
They have to hire developers who know JavaScript.
link |
01:26:39.020
They have to keep their engines up to the latest standard.
link |
01:26:43.100
And this creates all this sort of social structure
link |
01:26:45.900
around JavaScript that is unusual.
link |
01:26:47.820
I mean, you get C++ buffs that follow the inner workings
link |
01:26:51.420
of C++, what is it now?
link |
01:26:54.460
21 something, I don't know.
link |
01:26:56.580
I've lost track.
link |
01:26:57.500
But it's a more rarefied group.
link |
01:26:59.020
It's more like the old language, gray hairs.
link |
01:27:02.860
Whereas JavaScript is a younger
link |
01:27:04.500
and more vibrant and large crowd.
link |
01:27:07.380
There's a community feel to it.
link |
01:27:09.260
There's echoes, perhaps I don't wanna draw too many
link |
01:27:13.180
similarities, maybe you can comment on it.
link |
01:27:15.420
There's C++ is like Wall Street,
link |
01:27:18.980
and the JavaScript is like Wall Street bets
link |
01:27:21.220
from the recent events.
link |
01:27:22.620
It's like there's a chaotic community of all,
link |
01:27:24.940
and there's some power from that distributed crowd
link |
01:27:28.820
of people that ultimately.
link |
01:27:30.260
It's more thematic, it's more of the people.
link |
01:27:32.660
It lets people in without requiring these credentials.
link |
01:27:35.860
I remember in the late 90s into the 90s,
link |
01:27:38.420
people were all getting Java credentials.
link |
01:27:39.900
And I knew people, and friends knew people
link |
01:27:42.700
who became Java programmers, and you knew
link |
01:27:44.580
they really should have been like nature guides or pilots.
link |
01:27:47.260
They hated programming, but they thought,
link |
01:27:49.020
I gotta make money, I'm gonna become a Java programmer.
link |
01:27:51.780
Do you have some, because it's such a monumental moment
link |
01:27:55.060
in our current history, as a quick aside,
link |
01:27:58.060
do you have thoughts about this huge distributed crowdsourced
link |
01:28:03.260
financial happenings with Wall Street bets?
link |
01:28:06.740
That's like nobody could have, well,
link |
01:28:08.780
you could have predicted, but the scale and the impact
link |
01:28:11.420
of this kind of emergent behavior
link |
01:28:13.260
from independent parties that could happen.
link |
01:28:15.780
Like I said, my own experience with the dismal science,
link |
01:28:19.900
as with physics, led me to reject a lot of bad models.
link |
01:28:23.500
Economics was always compromised by politics,
link |
01:28:26.260
political economy.
link |
01:28:28.220
You could also argue that it was,
link |
01:28:29.460
it used to be a branch of moral philosophy,
link |
01:28:30.980
so it was concerned with the good,
link |
01:28:32.460
and it became divorced and became sort of
link |
01:28:34.740
in this quasi Newtonian way, just about,
link |
01:28:37.700
everything's just running by itself, don't worry about it.
link |
01:28:40.220
This monopoly's crushing your Netscape company,
link |
01:28:42.060
but that's just nature.
link |
01:28:43.700
And economics couldn't, or doesn't really have good models
link |
01:28:46.580
for the Wall Street bets subreddit.
link |
01:28:49.500
You know, they know how to squeeze a short, right?
link |
01:28:52.300
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.740
and eliminated the fee through various kinds of straddles
link |
01:29:06.300
or some kind of spread operation
link |
01:29:09.220
that helped them eliminate the fee or eat the fee.
link |
01:29:11.860
And in fact, as a broker in these days,
link |
01:29:14.540
because it takes two days to settle,
link |
01:29:15.820
there's counterparty risk, as they found out.
link |
01:29:18.620
And so the Wall Street bets people,
link |
01:29:22.980
you know, the memes are like the Terminator robot
link |
01:29:25.700
with the $600 STEMI check and the hedge funds
link |
01:29:30.140
that make little girl hiding under the desk.
link |
01:29:34.060
There is a problem, which I talked about
link |
01:29:36.060
in a recent podcast, which I'm conscious of
link |
01:29:38.300
from the history of the web, and that is,
link |
01:29:40.020
you could say it's monopoly,
link |
01:29:41.260
which antitrust wasn't enforced
link |
01:29:42.980
after USB Microsoft for a long time.
link |
01:29:45.140
And a lot of this was due to the money interests
link |
01:29:48.020
buying control of politicians.
link |
01:29:50.900
And, you know, in Plato's five regimes, that's oligarchy.
link |
01:29:54.460
That's where we are.
link |
01:29:56.060
And now we're seeing a fight against the oligarchs.
link |
01:29:58.780
I don't know if it'll work,
link |
01:29:59.620
but you're definitely seeing it.
link |
01:30:00.780
And it's also kind of hackerish, right?
link |
01:30:02.420
It's got a hacker ethos.
link |
01:30:04.100
You know, hey, Robinhood, no fees.
link |
01:30:05.660
Oh, interesting.
link |
01:30:06.500
Hey, you know, I could buy a fraction of a share
link |
01:30:09.180
in this thing, or I can keep buying with my stimulus check.
link |
01:30:12.300
So I mentioned Hegel seeing Napoleon on the horse, right?
link |
01:30:16.980
Hegel also talked about the cunning of reason
link |
01:30:19.220
that you have this sort of, you know,
link |
01:30:21.380
God sees history in full, and if you believe in God,
link |
01:30:24.100
or, you know, we don't know the future,
link |
01:30:25.940
but there's always this sort of fly in the ointment,
link |
01:30:28.380
this unintended consequence that confounds
link |
01:30:32.140
the best plans of the powers that be.
link |
01:30:35.660
And we're living through it.
link |
01:30:37.060
I'm glad it's not, you know, street warfare
link |
01:30:39.700
or mechanized warfare, because it has been in the past.
link |
01:30:43.380
It's more like soft power, and people are fighting back.
link |
01:30:50.620
Do you think it's possible?
link |
01:30:51.740
So JavaScript used to be for the front end of the web.
link |
01:30:57.100
It's now increasingly so being used for back end,
link |
01:31:01.620
like running stuff that's like behind the scenes.
link |
01:31:06.060
And it's also starting to be used quite a bit
link |
01:31:10.260
for things like TensorFlow.js.
link |
01:31:12.260
So starting to actually use like these heavy duty
link |
01:31:14.700
applications that are using neural networks,
link |
01:31:17.140
machine learning, and so on in the browser.
link |
01:31:19.380
Is it possible in 10, 20, 30 years
link |
01:31:24.140
that basically most of the world runs on JavaScript?
link |
01:31:28.660
This is a dystopia and a nightmare to some people.
link |
01:31:32.380
When we did Asm.js and WebAssembly,
link |
01:31:34.940
I would joke and mean people with scenes like
link |
01:31:37.340
Neo waking up in his pod in the matrix,
link |
01:31:39.500
and he's all skinny and weak and hairless.
link |
01:31:42.380
And, you know, you realize in the future
link |
01:31:46.220
that you're living in some simulation
link |
01:31:48.020
that it's all running on JavaScript,
link |
01:31:49.180
and you just scream forever.
link |
01:31:51.980
It's possible.
link |
01:31:52.820
Gary Bernhardt does these funny talks.
link |
01:31:54.860
He did watch.js, and then he did this
link |
01:31:58.020
life and death of JavaScript, I think it's called,
link |
01:31:59.540
where he took some clever ideas that actually have
link |
01:32:02.580
a thread of credibility to them.
link |
01:32:05.340
But I mentioned software fault isolation.
link |
01:32:09.220
In the old days, when we were using computers,
link |
01:32:10.620
we said we're gonna use the Unix monolithic monitor,
link |
01:32:14.140
and it's the privileged program.
link |
01:32:15.980
This is before you even had hardware rings of protection.
link |
01:32:18.420
Those, some of the early 60s operating systems
link |
01:32:20.460
used hardware protection zones.
link |
01:32:22.700
But Unix is privileged, and the program
link |
01:32:25.900
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.660
You get to kill it.
link |
01:32:35.220
If it crashes, it doesn't take down the whole OS.
link |
01:32:37.300
It's a wonderful idea, but the call into the kernel
link |
01:32:41.940
is expensive, the system call, so called.
link |
01:32:43.820
And this has even been optimized now
link |
01:32:45.180
for things like getting the time of day,
link |
01:32:46.320
so it doesn't actually enter the kernel.
link |
01:32:49.580
And meanwhile, hardware architectures
link |
01:32:52.780
and virtualization techniques have gone
link |
01:32:54.460
in a different direction, even to the point
link |
01:32:56.380
where you can do software fault isolation very cheaply
link |
01:32:58.840
without entering the operating system kernel,
link |
01:33:00.740
and so you get unikernels and exokernels
link |
01:33:02.940
and very lightweight VMs.
link |
01:33:04.460
And so Gary took this idea and said, JavaScript
link |
01:33:08.060
will take over computing, because the system call
link |
01:33:10.540
boundary's too expensive, so everything ends up
link |
01:33:12.340
in JavaScript with these lighter weight
link |
01:33:14.220
isolation enforcement mechanisms.
link |
01:33:16.940
It's not totally beyond belief.
link |
01:33:18.580
It'd be WebAssembly too.
link |
01:33:22.100
It's nice to ask you sort of for advice to,
link |
01:33:25.380
there's so many people that are interested
link |
01:33:26.980
in starting to learning about programming,
link |
01:33:29.180
getting into this world.
link |
01:33:31.180
Is there some number of languages,
link |
01:33:34.980
three to five programming languages
link |
01:33:36.460
that you would recommend people learn,
link |
01:33:38.220
or maybe a broader advice on how
link |
01:33:42.060
to get started in programming?
link |
01:33:43.940
Well, so you asked about machine learning,
link |
01:33:45.380
and JavaScript is a general purpose language,
link |
01:33:47.820
and it's a language that's not that great
link |
01:33:53.100
for doing matrix operations or doing parallel programming,
link |
01:33:58.100
I would say, without using some extensions
link |
01:34:01.100
or some libraries that have some magic in them.
link |
01:34:03.620
So if someone wanted to learn,
link |
01:34:08.580
there are amazing languages in sort of the APL family
link |
01:34:11.100
that are very useful for, I would say, linear algebra,
link |
01:34:14.060
which gets to a lot of the kernels in machine learning.
link |
01:34:16.820
And so APL had like J and then K and their K variants
link |
01:34:22.240
because the guy that did K is still going,
link |
01:34:24.660
and they're proprietary, but he's still innovating there.
link |
01:34:28.900
There are, you know, Python is used.
link |
01:34:30.420
So people talk about TensorFlow.js.
link |
01:34:31.740
Well, it's not that surprising
link |
01:34:33.460
because Python was heavily used for machine learning,
link |
01:34:36.380
and Python was always, you know,
link |
01:34:38.740
they didn't have this fast just in time compiler tradition.
link |
01:34:41.540
There were some projects that tried this,
link |
01:34:43.180
and some of them were interesting.
link |
01:34:45.340
PyPy was interesting,
link |
01:34:46.300
but the philosophy with Python was,
link |
01:34:50.020
oh, you need to go fast, write a C plugin,
link |
01:34:51.780
and drop into C code.
link |
01:34:53.300
So I think people should look at multiple languages
link |
01:34:57.500
because there are different tools in the belt.
link |
01:34:59.500
If you're trying to do supervision or rapid prototyping,
link |
01:35:02.820
you want a dynamic language.
link |
01:35:03.900
You want to throw things together and see what works.
link |
01:35:06.500
If you are trying to go down to the metal very fast,
link |
01:35:09.280
well, I'm an old C hacker,
link |
01:35:10.740
but I was also the executive sponsor of Rust at Mozilla,
link |
01:35:14.300
and Rust has now escaped, you know,
link |
01:35:16.180
from that sort of nest where it was born
link |
01:35:18.540
to be adopted by a bunch of companies
link |
01:35:21.460
that have a foundation in the works.
link |
01:35:23.220
Some of the key core team members
link |
01:35:24.780
are working now at Amazon and other places.
link |
01:35:27.700
So it looks like Rust has reached escape velocity,
link |
01:35:30.100
and Rust is an interesting language
link |
01:35:31.380
because one of our goals there,
link |
01:35:33.060
one of the reasons I sponsored it was we were all tired
link |
01:35:35.300
of seeing those remote code execution vulnerabilities
link |
01:35:38.100
due to C and C++, and we thought,
link |
01:35:41.240
can we have a sort of safety property
link |
01:35:43.840
through a type and effect system or an ownership system,
link |
01:35:46.920
and Rust has that.
link |
01:35:48.300
And that ownership system is interesting
link |
01:35:50.020
because it doesn't just give you memory safety.
link |
01:35:52.140
There's a sort of theorem for free,
link |
01:35:53.500
a dual that falls out for protection against data races.
link |
01:35:57.220
So Rust is better for low level programming.
link |
01:35:59.740
You delimit your unsafe code
link |
01:36:01.100
where you do have to be unsafe,
link |
01:36:02.900
and you can prove certain facts about memory safety
link |
01:36:05.300
and race condition avoidance.
link |
01:36:08.820
And so I think people should learn these new languages.
link |
01:36:11.340
I think Go is a great language.
link |
01:36:13.380
I admire, you know, the Unix people who did that.
link |
01:36:16.540
Ken Stoll was involved, Rob Pike, of course, David,
link |
01:36:21.420
what's his name, and other people.
link |
01:36:23.440
Go is a huge success, really on the server side,
link |
01:36:27.100
anywhere you have a lot of networking to do,
link |
01:36:30.140
and it's garbage collected, but it's also very pragmatic.
link |
01:36:33.780
It has that sort of C flavor.
link |
01:36:35.420
As an old C hacker, I can't get used to the fact
link |
01:36:37.020
that they swapped the type and declarator
link |
01:36:39.620
in the declaration order.
link |
01:36:41.140
I haven't used Rust, but this is one of the most respected
link |
01:36:44.180
and loved languages currently, so it's interesting.
link |
01:36:46.260
Yeah, and it's still young.
link |
01:36:47.380
You look at these things, JavaScript is now considered old.
link |
01:36:50.980
It's gone through so many versions
link |
01:36:52.500
that you can fall in love with it all over again.
link |
01:36:54.860
25 plus years, you know, it's an adult.
link |
01:36:58.740
It should be out of the house.
link |
01:36:59.800
But it could be around another 25 years.
link |
01:37:03.420
Cannot rule it out.
link |
01:37:04.240
So Rust will be around for a long time.
link |
01:37:06.260
The longer you're around, the more likely you're Lindy,
link |
01:37:08.900
and you're around your wife.
link |
01:37:10.400
A lot of people ask me, like,
link |
01:37:13.500
I'm often torn between recommending either Python
link |
01:37:15.780
or JavaScript as the first language to play with,
link |
01:37:18.100
because, I mean, it's difficult,
link |
01:37:20.900
because it's so easy to do JavaScript incorrectly.
link |
01:37:25.180
It's much easier to do it correctly these days,
link |
01:37:29.460
or like, well, learn about programming.
link |
01:37:31.620
But the cool thing about JavaScript
link |
01:37:33.940
is that you can create stuff
link |
01:37:36.100
that will put a smile on your face.
link |
01:37:38.140
Like, as a developer, you can create stuff,
link |
01:37:41.460
and it'll visually look like something,
link |
01:37:43.060
and it'll do stuff, and it makes you feel good.
link |
01:37:45.700
It makes you fall in love with programming.
link |
01:37:47.340
With Python, you could do the same.
link |
01:37:48.700
It's a little slower.
link |
01:37:49.540
And with C++, it takes five to 10 years
link |
01:37:51.580
to write a program that actually does something.
link |
01:37:54.100
So, like, there's that tension between
link |
01:37:56.820
is JavaScript the right first step, or is it Python?
link |
01:37:59.460
And I've been going back and forth on those two.
link |
01:38:02.060
My Python, right, it came from a lineage of ABC,
link |
01:38:05.300
which was a pedagogical language in the Netherlands.
link |
01:38:09.580
And it, you know,
link |
01:38:12.140
it was a good teaching language, too.
link |
01:38:16.700
I think it is a good teaching language,
link |
01:38:17.980
and it's a little more restrictive
link |
01:38:19.100
in that if you misspell something
link |
01:38:21.980
in a way that JavaScript might let run,
link |
01:38:25.220
let reach runtime, it'll get stopped
link |
01:38:26.860
at syntax check in Python.
link |
01:38:30.600
That's good for beginners.
link |
01:38:31.700
I think the sloppiness that some people object to,
link |
01:38:34.760
like, people were just tweeting at me,
link |
01:38:37.140
having just learned JavaScript.
link |
01:38:38.660
They said, I can take a number, and I can index into it,
link |
01:38:41.160
and get undefined out of it as a property.
link |
01:38:43.180
Why is that?
link |
01:38:44.020
A number's not an object.
link |
01:38:44.860
And I explained why it is,
link |
01:38:46.180
because like in Java, the primitive types,
link |
01:38:48.340
which unfortunately are not objects,
link |
01:38:49.840
can be automatically boxed or wrapped by an object.
link |
01:38:53.260
And I made that implicit.
link |
01:38:55.440
In Java, it's typed, and you have to declare things,
link |
01:38:58.240
and you'll get type errors.
link |
01:39:00.500
But there are cases in Java where you get auto boxing
link |
01:39:03.080
or auto wrapping, because you've declared that you want it.
link |
01:39:06.020
In JavaScript, it just happens.
link |
01:39:07.580
And so once I explained it, like, oh, wow, I get it.
link |
01:39:10.300
But it also means that you can commit a blunder that just.
link |
01:39:13.540
You don't get punished for it, you don't detect.
link |
01:39:15.360
You get an undefined value,
link |
01:39:16.800
and you don't know where it came from.
link |
01:39:17.860
Right.
link |
01:39:19.900
I've been reading a lot about military history recently.
link |
01:39:23.340
And one way to paint the picture of browsers,
link |
01:39:26.780
internet browsers, is through the various wars
link |
01:39:29.280
throughout its history.
link |
01:39:30.620
I don't know if that's a useful way to look at it,
link |
01:39:32.300
but we've already talked a little bit about Netscape
link |
01:39:34.660
and Internet Explorer in the early days.
link |
01:39:38.420
Can you tell the story of the different wars,
link |
01:39:41.260
if that's at all an interesting way to look at it,
link |
01:39:43.420
of the 90s and to today?
link |
01:39:46.460
Yeah.
link |
01:39:47.300
So I mentioned that Microsoft, you know,
link |
01:39:49.100
which was convicted for it, did abuse its monopoly,
link |
01:39:51.500
but they had a pretty good team by the time they did IE4.
link |
01:39:55.100
And Netscape, unfortunately, I was like second floor,
link |
01:39:57.900
and I was friends with all the first floor people,
link |
01:39:59.540
the front end guys who did the JavaScript event hookup
link |
01:40:02.700
and things like that,
link |
01:40:04.700
that that team was fairly burnt out.
link |
01:40:07.580
And I think having gone public,
link |
01:40:10.900
the upper management wanted to buy a bunch of companies
link |
01:40:13.300
to try to go head to head with Microsoft.
link |
01:40:15.340
Didn't work, but buying a bunch of companies
link |
01:40:17.740
usually doesn't work.
link |
01:40:19.380
I think the modern sort of approach roughly
link |
01:40:22.800
is like Mark Zuckerberg took,
link |
01:40:25.260
which is to keep them at arm's length
link |
01:40:26.860
and let them do their thing.
link |
01:40:28.300
And now that he's pulling WhatsApp in
link |
01:40:29.900
and people are fleeing it
link |
01:40:31.420
because it's tied into the ad surveillance.
link |
01:40:33.480
But, you know, for a while,
link |
01:40:36.260
they're keeping it separate really does work
link |
01:40:37.660
because you bought it for its value,
link |
01:40:39.020
it's complimentary, and you're not messing with it.
link |
01:40:41.140
With Netscape, when they bought a bunch of companies,
link |
01:40:43.600
they had some of the first floor people
link |
01:40:45.500
or the founders burned out.
link |
01:40:46.940
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.540
And so Netscape 4 was originally supposed to be 3,
link |
01:40:57.340
and it was so late, they renumbered it.
link |
01:40:58.820
We did a 3 release.
link |
01:41:00.560
Jamie and a few others put some extra effort into.
link |
01:41:03.060
SecureMine was supported in the built in mail program.
link |
01:41:08.340
And Netscape 4 was late,
link |
01:41:10.200
and it was only on Windows at first,
link |
01:41:11.860
and Microsoft had really started doing better,
link |
01:41:14.920
like they do.
link |
01:41:15.760
They copy, and the first version's trash,
link |
01:41:17.300
and the second one, you're starting to feel threatened.
link |
01:41:19.100
The third one, you can tell what's gonna happen,
link |
01:41:21.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.260
that it comes as a default browser.
link |
01:41:26.120
Yes, and yet Netscape's screwing it up,
link |
01:41:28.780
and Microsoft really putting some quality people on it.
link |
01:41:32.540
IE4 was good.
link |
01:41:33.380
On Windows, it was good.
link |
01:41:34.220
And they did the dynamic HTML innovations.
link |
01:41:38.300
Scott Isaac's my old buddy,
link |
01:41:39.700
a former accountant who programmed in BASIC
link |
01:41:42.360
and became what Microsoft calls a program manager,
link |
01:41:45.500
which is kind of an elevated position.
link |
01:41:48.760
You can be a programmer or an engineer and track,
link |
01:41:50.500
but you switch to it,
link |
01:41:51.340
and you sort of lead a lot of design and standards efforts.
link |
01:41:54.700
And so Scott Isaac put in a lot of those funky DHTML APIs
link |
01:41:58.940
that didn't quite have the same flavor
link |
01:42:01.020
as the stuff that I did, and neither of them
link |
01:42:03.260
was like the later sort of verbose Java,
link |
01:42:05.540
like DOM W3C standardized.
link |
01:42:08.540
But IE4 was pretty darn good.
link |
01:42:10.540
I remember a friend, Scott Furman and I,
link |
01:42:12.460
got invited by Scott Isaac to Gordon Beers in San Jose.
link |
01:42:16.700
They were doing a preview of IE4.
link |
01:42:19.340
This must have been 1997.
link |
01:42:21.500
And Scott said, yeah, here's the new graphics stuff
link |
01:42:25.140
we're doing.
link |
01:42:25.980
We've got something like your Netscape layers.
link |
01:42:28.220
We've got VML, a vector markup language.
link |
01:42:31.740
We can do virtual reality.
link |
01:42:33.420
And Scott and I looked at each other and said,
link |
01:42:35.260
we're doomed, right?
link |
01:42:36.820
Microsoft was starting to fire on all cylinders.
link |
01:42:38.780
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.940
And maybe I shouldn't give them credit
link |
01:42:44.320
for having the resources to hire talented people,
link |
01:42:45.940
but they did a credible job on IE4.
link |
01:42:48.900
What really was bad was that phase of the browser wars
link |
01:42:51.940
ended with monopoly and perhaps due to the antitrust case,
link |
01:42:56.100
perhaps due to regulation in Europe,
link |
01:42:59.340
perhaps just due to Microsoft not liking
link |
01:43:01.100
dealing with standardization, they let it rot.
link |
01:43:05.420
They just abandoned it, IE5, 5.5, IE6 later,
link |
01:43:10.520
but these were not well maintained.
link |
01:43:12.300
They had a lot of security bugs.
link |
01:43:14.420
It felt really closed and outdated too,
link |
01:43:16.660
even though it's getting updated, it's just weird.
link |
01:43:19.020
Browsers like Mozilla and then Firefox were adding tabs.
link |
01:43:22.100
Opera had a version of tabs and they didn't add tabs.
link |
01:43:25.940
And they pop up blocking,
link |
01:43:27.560
something I should have done from the start.
link |
01:43:28.860
People realized that you can tell
link |
01:43:30.160
when the user clicks something
link |
01:43:31.540
and it goes in JavaScript to open a little window,
link |
01:43:34.300
that you can sort of inspect the stack
link |
01:43:36.220
and see that the click originated that,
link |
01:43:38.140
and it's probably okay.
link |
01:43:39.420
Whereas if you're just loading a script
link |
01:43:40.820
and it opens a new window, that's a spam technique
link |
01:43:43.860
and you should block it.
link |
01:43:45.220
Tabs were a brilliant innovation.
link |
01:43:47.380
Like you said, Opera had it,
link |
01:43:48.380
but I remember I fully switched to Firefox the moment.
link |
01:43:52.060
I remember the moments of first using tabs in Firefox
link |
01:43:57.060
and not liking it for the first few minutes,
link |
01:44:00.220
and then like, wait a minute.
link |
01:44:02.460
You get the groove, yeah.
link |
01:44:03.300
You get the groove and you understand.
link |
01:44:05.580
So that timing, what year was this?
link |
01:44:08.540
Because also as a aspiring web designer,
link |
01:44:12.100
I use Table, so we didn't mention Layout or CSS much.
link |
01:44:16.260
There's also a change in the way
link |
01:44:18.760
the frames were going away.
link |
01:44:21.100
So there's a change in the way websites looked
link |
01:44:23.620
and behaved and all that kind of stuff.
link |
01:44:25.300
CSS finally, which Microsoft embraced with IA4
link |
01:44:28.420
and Netscape never really did right.
link |
01:44:30.700
CSS became a better standard over time
link |
01:44:33.440
for doing Table Layout that relieved you
link |
01:44:36.140
of the need to use what are called spacer GIFs,
link |
01:44:39.260
spacer GIFs, right?
link |
01:44:40.300
Images, you would throw into space at tables.
link |
01:44:44.180
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.320
and you can't do advanced typography,
link |
01:44:51.580
but it's gotten really better.
link |
01:44:53.180
And even then, tables were getting better.
link |
01:44:54.920
If you were using Firefox, that would have been 2004
link |
01:44:57.260
because it was called Firebird until earlier that year.
link |
01:45:00.260
No, yeah, I think it wasn't.
link |
01:45:01.860
2003.
link |
01:45:02.700
I don't remember, it was a Firebird, which had tabs?
link |
01:45:06.100
We had tabs the whole way.
link |
01:45:07.060
So it started out as Mozilla slash browser in 2002,
link |
01:45:10.420
became Phoenix.
link |
01:45:12.080
There's a BIOS that has an embedded version of IE
link |
01:45:14.700
and they said, we're called Phoenix Technologies,
link |
01:45:16.420
you can't use Phoenix.
link |
01:45:17.620
And so we said, okay, we'll call it Firebird.
link |
01:45:19.180
And then this Australian centered
link |
01:45:21.220
open source database project started really like
link |
01:45:24.900
in the true Mad Max style, just screaming at us saying,
link |
01:45:27.340
you can't use Firebird.
link |
01:45:28.380
And I had to sort of be the ambassador and say,
link |
01:45:30.660
okay, we're gonna rename.
link |
01:45:31.500
And they're like, we don't believe you,
link |
01:45:32.340
you shouldn't have used it, we hate you.
link |
01:45:33.700
And then we renamed it to Firefox.
link |
01:45:36.100
And they're like, ah, we love you.
link |
01:45:38.060
And then I haven't heard of them ever since.
link |
01:45:40.140
But Firefox was a clever name.
link |
01:45:41.780
We had to think of something distinctive.
link |
01:45:43.660
We wanted to keep the fire going.
link |
01:45:45.740
And it turns out there's a red panda, right?
link |
01:45:48.180
That's the nickname for it.
link |
01:45:49.460
So that's the second set of browser wars.
link |
01:45:51.980
So how was Firefox born, how was Mozilla born?
link |
01:45:59.660
There's a long story there too.
link |
01:46:01.060
So Netscape got acquired by AOL,
link |
01:46:02.980
which as I say was a reasonable happy ending
link |
01:46:05.500
for a lot of people,
link |
01:46:06.580
because Netscape otherwise was gonna go out of business
link |
01:46:08.500
because Microsoft was just killing its market.
link |
01:46:10.740
There was no way to charge for a browser.
link |
01:46:12.540
Windows came with IE, IE4 was pretty good
link |
01:46:15.980
and Netscape 4 wasn't that good.
link |
01:46:17.580
It took a while to get better.
link |
01:46:20.180
But the Netscape executive said,
link |
01:46:22.340
let's do an open source escape pod.
link |
01:46:25.660
And like in Star Wars, A New Hope,
link |
01:46:27.180
the gunner won't shoot it
link |
01:46:28.340
because there's no life forms on board, right?
link |
01:46:30.180
It's not a threat.
link |
01:46:31.460
And so we did Mozilla in 1998
link |
01:46:33.740
and it looked like it was going to initially
link |
01:46:37.980
just give the world an open source browser.
link |
01:46:40.140
But it's really hard to get people to work
link |
01:46:42.020
on this sort of hairball that had been hacked up
link |
01:46:43.900
over by that point four years.
link |
01:46:46.100
And it also couldn't have the crypto module
link |
01:46:49.140
for secure sockets, so called,
link |
01:46:51.020
or now transport layer security.
link |
01:46:52.980
That was an electronic munition.
link |
01:46:54.380
We were not allowed to release that
link |
01:46:56.100
in the full 1024 bit key strength.
link |
01:47:00.460
And yet people, one of whom I happened to meet previously
link |
01:47:05.100
at SGI when I went on a sales support engineering trip,
link |
01:47:08.980
Tim Hudson in Brisbane, Australia,
link |
01:47:11.100
and Eric A. Young did what became open SSL.
link |
01:47:16.460
It was called SSL EAY after Eric's initials.
link |
01:47:19.500
And Tim and Eric took their open SSL
link |
01:47:23.180
outside of the purview of the NSA
link |
01:47:25.420
and the Department of Commerce,
link |
01:47:27.300
and they stuck it into Mozilla's code.
link |
01:47:28.940
And that was perhaps the best hack that was done
link |
01:47:31.060
in the first few months after we open sourced the browser.
link |
01:47:34.540
We had other problems.
link |
01:47:35.420
The politics inside Netscape were riven
link |
01:47:37.420
by these acquisitions.
link |
01:47:38.340
So the one acquisition that kind of messed up Netscape
link |
01:47:41.020
for also wanted to keep doing a proprietary mail
link |
01:47:44.340
and groupware program, not Jamie Zawinski's mail program
link |
01:47:48.860
that was in Netscape two and three.
link |
01:47:50.180
And they held it back from open source.
link |
01:47:51.860
We didn't have a mail program, it was just a browser.
link |
01:47:54.320
We didn't know what AOL will do to us.
link |
01:47:56.700
Turns out they didn't interfere with us for a long time.
link |
01:47:59.260
But Netscape wasn't the best steward of Mozilla.
link |
01:48:02.980
We were operating Mozilla as a pirate ship
link |
01:48:05.340
without a legal entity.
link |
01:48:06.420
So most of us worked for Netscape
link |
01:48:08.900
under a separate organization.
link |
01:48:10.900
And initially the first engineering manager,
link |
01:48:15.400
Tom Paquin of Netscape was the Mozilla founding manager.
link |
01:48:19.360
But he left pretty quickly
link |
01:48:20.820
and he left me as the acting manager,
link |
01:48:23.120
which is more like method acting in my case.
link |
01:48:25.500
And that was my first management stint.
link |
01:48:28.780
But then someone who'd written the licenses,
link |
01:48:32.140
Mitchell Baker, she was a lawyer at Netscape.
link |
01:48:34.100
She was involved in the open source license decision making
link |
01:48:38.180
and the actual writing and construction of those licenses.
link |
01:48:40.380
That was Mitchell's job, Netscape public license
link |
01:48:42.980
and the truly open Mozilla public license.
link |
01:48:45.700
And there were two because Netscape needed,
link |
01:48:47.380
because of some encumbered code, needed some special rights
link |
01:48:49.580
but that went away over time.
link |
01:48:51.100
Mitchell was always interested in Mozilla
link |
01:48:52.820
and she came back from maternity leave
link |
01:48:54.220
and she said, I'll be the manager if you want.
link |
01:48:55.900
And Jamie and I said, sure.
link |
01:48:57.420
And then Jamie quit, he quit after a year.
link |
01:48:59.380
He said, this didn't work, I'm sorry.
link |
01:49:02.580
He acted like it was a total failure
link |
01:49:04.340
because Mozilla didn't restart the browser market.
link |
01:49:08.100
But there's no way it could have, right?
link |
01:49:09.260
Netscape was still shipping variants of Netscape 4,
link |
01:49:13.740
which was based on the old code.
link |
01:49:15.700
Mozilla was trying to react to the code
link |
01:49:18.360
to make greenfield for developers.
link |
01:49:19.860
So it was one of my big goals.
link |
01:49:20.900
It wasn't a technical goal so much as again, a social goal.
link |
01:49:24.180
People wanted a more standard spaced browser.
link |
01:49:26.380
They wanted less of a hairball that had been hacked on
link |
01:49:29.380
by ex grad students starting four years prior.
link |
01:49:32.020
So we said, we're gonna make a modular code base.
link |
01:49:35.100
We're gonna use a variant or an open source version
link |
01:49:37.500
of Microsoft's component object model,
link |
01:49:39.980
has reference counting and standardized V tables,
link |
01:49:43.420
virtual calls and C++.
link |
01:49:45.180
And we're gonna use JavaScript.
link |
01:49:47.300
We're gonna have a bridge between those two
link |
01:49:48.700
so you can script those components
link |
01:49:50.140
just like Java components.
link |
01:49:52.780
We're going to make a portable front end
link |
01:49:54.800
with a markup language for the user interface.
link |
01:49:57.220
Not tables, not HTML, but custom menus
link |
01:50:00.380
and dropdowns and toolbars.
link |
01:50:02.880
And that was called Zool, XML user interface language.
link |
01:50:06.060
And some real talent on the Netscape side delivered that.
link |
01:50:08.220
Dave Hyatt, who was instrumental in Zool,
link |
01:50:11.320
Chris Watterson, Joe Hewitt, Blake Ross.
link |
01:50:15.700
And Blake was an intern.
link |
01:50:17.820
He was like a high school aged intern at Netscape.
link |
01:50:20.500
And at some point we were innovating rapidly
link |
01:50:23.920
in the Mozilla world and Netscape was still caught up
link |
01:50:26.960
in this management mess from these acquisitions
link |
01:50:29.340
and it wasn't delivering.
link |
01:50:30.420
And every year they were wondering if ALO was gonna come
link |
01:50:32.800
and start beheading the executives
link |
01:50:34.260
because it didn't do anything useful.
link |
01:50:36.100
And there was this thought
link |
01:50:36.940
you should take the Netscape browser engine
link |
01:50:38.940
and put it in the Windows ALO client,
link |
01:50:40.740
which was the dial up client
link |
01:50:41.980
that all the increasingly aging users of ALO were using.
link |
01:50:45.420
Never happened.
link |
01:50:46.260
It would have been too big a change.
link |
01:50:48.140
So it wasn't clear why ALO bought Netscape,
link |
01:50:49.820
but as I said, they left it alone.
link |
01:50:50.940
But Netscape didn't leave Mozilla alone.
link |
01:50:53.300
And so in 2001, Mitchell called me up and said,
link |
01:50:58.780
I'm no longer employed.
link |
01:50:59.820
And I was like, what?
link |
01:51:00.660
You quit?
link |
01:51:01.480
No, no, this wasn't my choice.
link |
01:51:02.320
And there was a layoff which maybe accidentally
link |
01:51:05.300
or on purpose got rid of Mitchell.
link |
01:51:06.820
But the funny thing was we had an open source project.
link |
01:51:08.660
We had a lot of the engineers on staff on our side
link |
01:51:11.220
and we had people we'd hired through the Mozilla community
link |
01:51:15.220
who were top notch.
link |
01:51:16.300
They'd risen, they came in high quality, they knew the code
link |
01:51:19.260
and they actually were better than the average
link |
01:51:21.660
or median hire of Netscape.
link |
01:51:23.340
And so the funny thing was the executive
link |
01:51:26.940
who thought they'd gotten rid of Mitchell in the layoff
link |
01:51:29.940
on the next week's community call around Mozilla
link |
01:51:32.700
and what to do, there's Mitchell.
link |
01:51:35.220
And so this showed you can kind of transcend
link |
01:51:36.820
your boundaries of corporate open source
link |
01:51:40.420
if you get a project that has enough loyalty,
link |
01:51:42.700
even among the paid staff.
link |
01:51:43.820
Because we had outside people contributing.
link |
01:51:45.580
We had people at Red Hat and a few other places,
link |
01:51:47.980
but the majority of the hackers were employed by Netscape.
link |
01:51:50.620
But a lot of them at that point had come from the community
link |
01:51:53.380
and others got the community and wanted to work with it.
link |
01:51:55.820
And it was really the weakest engineers at Netscape
link |
01:51:57.900
who didn't like Mozilla and didn't like the crucible
link |
01:52:01.100
of competing with the better programmers.
link |
01:52:04.220
So if the project is good enough, it will rise,
link |
01:52:06.640
the Phoenix will rise out of the...
link |
01:52:08.220
That's exactly right.
link |
01:52:09.060
And so we had this Mozilla code base
link |
01:52:10.880
that was getting better.
link |
01:52:11.720
In fact, I think at some point in 2002
link |
01:52:13.540
when we declared Mozilla 1.0, I engineered a roadmap
link |
01:52:17.380
that successively through similar sort of six week,
link |
01:52:20.100
five week releases, like we all do with browser releases
link |
01:52:23.000
nowadays, Chrome does and Firefox braved us three weeks.
link |
01:52:26.460
We got to a point where we said, you know what?
link |
01:52:29.700
It doesn't suck.
link |
01:52:30.540
This is like the 1.0 that you want to release
link |
01:52:33.240
because if you hold it back any longer to polish it,
link |
01:52:35.340
you're denying others the ability to use it.
link |
01:52:36.980
It's like pro engineer, the mechanical CAD tool
link |
01:52:39.400
embedded the code, they embedded the layout engine.
link |
01:52:43.660
And Mozilla 1.0 was like a Netscape communication suite.
link |
01:52:46.980
We had at that point gotten male people
link |
01:52:49.560
to reintegrate mail and news and we had an editor for HTML.
link |
01:52:53.640
And it felt like a 90s suite, suiteware.
link |
01:52:57.620
And it felt kind of bloated.
link |
01:52:58.800
And the people who were taking that Mozilla open source
link |
01:53:02.140
and then adding Netscape flavor to it
link |
01:53:05.020
were not calling the shots right.
link |
01:53:06.540
And they were also under AOL's thumb a little bit
link |
01:53:08.460
and that they said, well, we should probably put
link |
01:53:10.540
the AOL instant messenger chicklet on the toolbar.
link |
01:53:13.180
We should put the ICQ, the other messaging system
link |
01:53:16.220
that AOL had acquired.
link |
01:53:17.340
We should put the ICQ button on the toolbar.
link |
01:53:19.580
And pretty soon Netscape looked like a bit of a NASCAR
link |
01:53:23.500
badged version of Mozilla.
link |
01:53:24.900
And that also made Mozilla more popular.
link |
01:53:27.180
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
link |
01:53:38.540
where Mozilla was still, you know, Mitchell was calling
link |
01:53:40.860
sort of management or project level shots
link |
01:53:44.480
and I was calling technical shots.
link |
01:53:46.100
And we had a popular suite, but we thought,
link |
01:53:51.200
why not make it just a browser?
link |
01:53:52.740
Because it'll be simpler, it'll do one job well.
link |
01:53:55.380
And even then we can strip it down by having extensions.
link |
01:53:58.780
So Dave Hyatt and Blake Ross, the high school aged intern
link |
01:54:03.740
did the first version, which was called Mozilla slash browser.
link |
01:54:07.260
It was very, the small group of us, Ian Hicks
link |
01:54:09.220
and Asa Dotzler, me and Joe Hewitt and Hyatt and Blake.
link |
01:54:14.340
And Hyatt was really the senior hacker.
link |
01:54:16.540
He'd done all these things like amazing cross platform menus
link |
01:54:20.500
through the user interface, markup language.
link |
01:54:23.500
And he knew how to do tab browsing.
link |
01:54:24.740
He'd implemented it natively on Mac OS at the time
link |
01:54:28.260
in Camino originally called Chimera.
link |
01:54:31.740
He'd written multiple implementations,
link |
01:54:34.300
which was a thing programmers should do.
link |
01:54:36.340
It's like the V8 team did for those missing years
link |
01:54:38.440
when the rest of the Chrome team's like, where's V8?
link |
01:54:41.980
In fact, Dave's wife, Rebecca told me a story
link |
01:54:44.440
about when they were at UIUC,
link |
01:54:45.860
they were also University of Illinois grad students.
link |
01:54:49.460
There was an assignment, it was a programming assignment
link |
01:54:51.300
it was supposed to do at the end of the semester.
link |
01:54:53.300
And Dave's friend was this, I'm gonna go think
link |
01:54:56.820
and I'm gonna design and I'm gonna make this
link |
01:54:59.460
platonic perfect form of the program.
link |
01:55:01.300
And then I'm gonna write it at the end when it's due.
link |
01:55:03.580
And Hyatt just went there and started hacking.
link |
01:55:05.140
He wrote one version, he wrote a second version,
link |
01:55:06.660
a third version, end of the semester comes around.
link |
01:55:09.220
The friend's not doing too well.
link |
01:55:11.140
It wasn't perfect and it wasn't written.
link |
01:55:13.000
I'm not sure how that story ended for him,
link |
01:55:14.820
but Dave's version was a fifth iteration, it was great.
link |
01:55:18.100
And so he'd done that with everything you need
link |
01:55:20.700
in a tabbed browser.
link |
01:55:21.700
And this really showed well in Phoenix,
link |
01:55:24.360
what we called Phoenix and I had to rename two more times.
link |
01:55:28.120
And Blake went to Stanford, he became a Stanford student
link |
01:55:32.260
and couldn't work on it.
link |
01:55:34.060
Dave Hyatt went to Apple in 2001.
link |
01:55:36.620
He was one of the founding Safari team members.
link |
01:55:39.580
Interesting, wow.
link |
01:55:40.460
But he was still blogging about tabbed browsing.
link |
01:55:43.540
I think Apple at some point said you should.
link |
01:55:44.860
Safari have tabbed browsing?
link |
01:55:46.140
Yeah, but it was because of Hyatt.
link |
01:55:48.220
Hyatt was quite a feather in their cap.
link |
01:55:49.820
Don Melton, who had been the engineering manager
link |
01:55:53.420
for Safari from the beginning, had been in Netscape also.
link |
01:55:56.540
And so there's this diaspora of talent
link |
01:55:58.980
and yet Hyatt was still kind of writing blog posts
link |
01:56:01.620
about how to do tabs right.
link |
01:56:03.260
And at some point Apple said, don't blog about that.
link |
01:56:05.360
That's our proprietary tab technology.
link |
01:56:07.580
And I was like, no, it's not.
link |
01:56:08.620
It was an opera and I've refined it.
link |
01:56:10.580
So we had to replace people and we had Ben Goodger,
link |
01:56:15.420
a New Zealander we hired at Netscape.
link |
01:56:18.020
And he stepped in to be the Firefox lead.
link |
01:56:21.260
And we also had this weird circumstance
link |
01:56:23.340
where AOL finally did notice that Netscape
link |
01:56:26.900
was kind of an albatross,
link |
01:56:28.380
that they bought it for no particular benefit.
link |
01:56:31.060
And even then the AOL politics were also heinous,
link |
01:56:33.820
sort of East Coast politics.
link |
01:56:35.380
I remember taking two trips there
link |
01:56:36.660
because I was a principal engineer.
link |
01:56:37.820
And so us principal engineers got trotted out
link |
01:56:39.560
to do dog and pony shows in Dallas, Virginia.
link |
01:56:42.740
And the AOL opera management was very East Coast in flavor.
link |
01:56:46.400
And they were at that time merging with Time Warner,
link |
01:56:49.100
which did not go well.
link |
01:56:50.500
So one of these years we went out there
link |
01:56:52.020
and we were all doing dog and pony shows
link |
01:56:53.420
and there were these characters
link |
01:56:55.100
that were sort of like marketing guys.
link |
01:56:56.340
One of them was wearing a cravat
link |
01:56:57.700
and one was named Reggie.
link |
01:56:59.460
And they were very you rather than non you.
link |
01:57:05.940
Or they were like what's what's Stoneman's
link |
01:57:07.480
metropolitan film, UHB, urban haute bourgeoisie.
link |
01:57:13.980
They were haute bourgeoisie.
link |
01:57:15.820
They were funny and they were kind of useless
link |
01:57:19.100
and kind of preppy.
link |
01:57:20.140
And then the next year we went back
link |
01:57:21.460
and I said, where's Reggie?
link |
01:57:22.340
And it's like, oh, Reggie's not here anymore
link |
01:57:24.140
because Time Warner realized that the merger
link |
01:57:26.300
wasn't in their interest either.
link |
01:57:27.520
And then the sort of knives came out.
link |
01:57:29.140
And these mergers rarely work, right?
link |
01:57:31.820
This is very difficult.
link |
01:57:32.680
You get these giant companies
link |
01:57:33.820
and they think there's gonna be synergy.
link |
01:57:35.300
That was the 90s, late 90s watch word.
link |
01:57:37.540
And there wasn't synergy with AOL buying Netscape
link |
01:57:39.340
and there wasn't synergy with Time Warner and AOL.
link |
01:57:41.260
But did AOL ever really work?
link |
01:57:43.020
Was it ever really cool?
link |
01:57:44.260
Like the same kind of fire and excitement
link |
01:57:46.460
that Firefox eventually created,
link |
01:57:48.740
was that ever there in AOL?
link |
01:57:51.100
AOL was the right time to do a dial up service
link |
01:57:55.020
that got distribution by basically
link |
01:57:56.660
leaflet bombing compact discs on the country.
link |
01:58:00.700
And they beat out CompuServe and the other ones,
link |
01:58:04.420
Prodigy, and then the web happened.
link |
01:58:06.860
And so you had almost like this isolated continent,
link |
01:58:10.940
like some of the evolutionary biologists I follow
link |
01:58:14.180
make fun of the funny large marsupial mammals of Australia,
link |
01:58:19.900
how silly they are.
link |
01:58:21.500
And so AOL is like Australia.
link |
01:58:23.100
Yeah.
link |
01:58:23.940
And you saw it over time because they kept aging
link |
01:58:26.420
and they were using AOL to get online
link |
01:58:28.180
and they couldn't really use a web browser.
link |
01:58:30.440
And it became sort of a valued cohort
link |
01:58:33.380
because they still have relatively high
link |
01:58:35.140
socioeconomic status and they have grandchildren,
link |
01:58:37.200
but it's going away, it's dying at some point.
link |
01:58:39.500
Towards the end of the aughts, that decade,
link |
01:58:42.100
and then to the decade 2010 plus,
link |
01:58:45.980
that Firefox became this incredible,
link |
01:58:48.620
I forget when Chrome came out, but.
link |
01:58:50.260
2008, September.
link |
01:58:51.100
2008, but Firefox was the sexy cool thing
link |
01:58:55.060
that represented a lot of the cutting edge technologies
link |
01:58:57.500
and all that kind of stuff.
link |
01:58:58.340
Web 2, it was amazing.
link |
01:59:00.140
Kim O'reilly and John Battelle did the first Web 2 conference
link |
01:59:03.380
which eventually became huge and they split it.
link |
01:59:05.420
But that was in 2004, it was right when Firefox was out.
link |
01:59:08.540
Craigslist was huge, it was killing classified revenue
link |
01:59:11.640
for newspapers, but there was just this ferment.
link |
01:59:14.420
People starting.
link |
01:59:15.260
Wikipedia along there somewhere.
link |
01:59:16.660
Gmail was already done and it was an impressive web mail.
link |
01:59:19.820
There were others before it like Hotmail,
link |
01:59:21.140
but Gmail was really impressive from Google.
link |
01:59:22.860
And Google Maps, people started seeing what could be done.
link |
01:59:26.020
They thought how can you drag the map around
link |
01:59:28.100
and how does that work?
link |
01:59:29.700
And it was all JavaScript and images and.
link |
01:59:32.460
So Gmail was 2003, four?
link |
01:59:34.500
Yeah, it actually started quite early.
link |
01:59:36.220
It might've been 2002 or three,
link |
01:59:37.340
but by the time we started dealing with Google and Firefox
link |
01:59:40.100
to get the search deal,
link |
01:59:41.040
which was the main revenue source for Mozilla,
link |
01:59:43.420
and still is, 2004, early, Sergey Brinz,
link |
01:59:47.740
one of his trusted engineer guys, Fritz Schneider,
link |
01:59:50.420
made contact with me at Mozilla and we started talking
link |
01:59:53.380
and we realized search and browser need each other.
link |
01:59:56.980
And this is deeply true, right?
link |
01:59:58.460
This is still true.
link |
01:59:59.780
This is why a lot of the search engines
link |
02:00:01.140
have their own browsers.
link |
02:00:02.240
Yeah, so in case people don't know,
link |
02:00:03.660
the main revenue source for the browser
link |
02:00:05.580
is the default search engine,
link |
02:00:07.240
which is kind of incredible to think about
link |
02:00:09.260
that that is a revenue source.
link |
02:00:11.460
It's a little bit sad.
link |
02:00:12.580
Yeah, it leads to this capture or kill effect
link |
02:00:14.580
where you have the search engine own its own browser
link |
02:00:17.020
and other browsers may struggle to get the distribution
link |
02:00:21.260
we talked about earlier.
link |
02:00:22.620
So where, and you said you've figured out
link |
02:00:26.800
that Google is working on its own browser
link |
02:00:29.100
at some point there.
link |
02:00:29.940
2006, yeah.
link |
02:00:30.780
2006, so would you say Firefox versus,
link |
02:00:33.220
was Internet Explorer part of the war here
link |
02:00:35.380
or was the Firefox versus Chrome?
link |
02:00:37.300
So Firefox didn't quite cause Microsoft to reconvene IE.
link |
02:00:40.900
They did do IE7 and I remember being on a plane
link |
02:00:44.580
back from the standards meeting,
link |
02:00:46.220
JavaScript standards meeting from Seattle, from Redmond,
link |
02:00:48.980
and there was some Microsoft guy in front of me.
link |
02:00:52.100
Turns out my wife knew him from her past life
link |
02:00:54.940
before we married and he was just this bearded big guy
link |
02:00:58.200
and he was like,
link |
02:00:59.040
we should have just killed Firefox in the cradle.
link |
02:01:01.500
All we needed to do was add pop up blocking in tabs
link |
02:01:04.160
and we could have made Internet Explorer kill Firefox.
link |
02:01:06.180
And it's like, shoulda, coulda, woulda, pal.
link |
02:01:07.820
And I was right behind him during this.
link |
02:01:10.300
But they didn't, they were slow
link |
02:01:11.580
and IE7 wasn't that great.
link |
02:01:13.540
And what really got them started I think was Chrome.
link |
02:01:18.440
And I talked to Larry Page in 2005,
link |
02:01:21.500
I think I said, we're talking about the Firefox relationship
link |
02:01:24.500
but he was also saying, what about WebKit?
link |
02:01:26.120
This was Apple's version of the old KHTML engine from Linux,
link |
02:01:32.020
the KDE side of Linux that was used in the Conqueror browser
link |
02:01:35.780
also with Ks that Apple had forked.
link |
02:01:38.140
And in 2005 was when Apple's principals
link |
02:01:41.700
including Dave Hyatt, Maciej Stokowiak,
link |
02:01:43.400
some of my friends who are still there said,
link |
02:01:45.580
we must stop patch bombing this poor KHTML project.
link |
02:01:48.540
We should make a proper Mozilla like organization,
link |
02:01:50.900
webkit.org.
link |
02:01:51.780
Now it wasn't a separate nonprofit or anything.
link |
02:01:53.700
It was still Apple, it was Apple controlled
link |
02:01:55.220
but they made their fork first class
link |
02:01:58.180
and they made it be something that they all worked in
link |
02:02:00.500
and lived in.
link |
02:02:01.340
And that was before Chrome.
link |
02:02:03.040
And then Chrome, Larry Page said, what about WebKit?
link |
02:02:05.660
I said, yeah, it's nice.
link |
02:02:06.540
I have friends who work on it.
link |
02:02:08.000
You might use that if you do your own browser.
link |
02:02:09.560
Why don't you do your own browser?
link |
02:02:10.460
Don't worry about Firefox.
link |
02:02:11.980
You should do your own browser.
link |
02:02:12.940
You can have your own opinion of how it should work.
link |
02:02:15.260
And sure enough they did.
link |
02:02:17.060
So by 2006, we knew they'd been working on it.
link |
02:02:19.180
Some of my friends who'd been at Netscape
link |
02:02:21.320
did the original demo.
link |
02:02:22.420
And the demo wasn't what you thought.
link |
02:02:24.020
It didn't have the fast JavaScript yet.
link |
02:02:25.340
That was still off in Denmark on a farm.
link |
02:02:29.540
Did it have tabs?
link |
02:02:30.500
It had tabs because all browsers had tabs at this point.
link |
02:02:32.820
And it had this software fault isolation I mentioned.
link |
02:02:37.460
It was through process isolation.
link |
02:02:39.060
So in theory, each tab has some operating system process.
link |
02:02:43.560
And so what's gonna take your tab down?
link |
02:02:45.580
Well, WebKit has bugs that can crash it
link |
02:02:48.380
but Flash was still big then.
link |
02:02:49.880
All the restaurant sites remember.
link |
02:02:51.220
And Flash crashed a lot.
link |
02:02:53.100
So the demo that I heard about,
link |
02:02:55.020
my friends at Netscape as a lot of people did,
link |
02:02:57.980
inside Google was the sad tab.
link |
02:03:00.460
They showed an early version of Chrome
link |
02:03:02.120
which is just this bare bones tab browser.
link |
02:03:04.200
They loaded a site with a known Flash volume
link |
02:03:06.700
and then suddenly Flash crashes.
link |
02:03:08.540
And everyone expected the whole browser to go down.
link |
02:03:10.860
But instead you got this little sad face in the tab
link |
02:03:13.080
and you could reload it and there it is again.
link |
02:03:14.740
So this was an improvement.
link |
02:03:16.740
It was a real move for security.
link |
02:03:18.740
It was based on a company they acquired
link |
02:03:21.420
called Green Border.
link |
02:03:22.660
They had some really big brains like Olfar Erlingsson
link |
02:03:25.060
I think was involved.
link |
02:03:25.880
And they had done some exotic security stuff
link |
02:03:28.880
but they ended up simplifying it to this process isolation.
link |
02:03:32.180
And it was good.
link |
02:03:34.960
And Firefox didn't have it at the time.
link |
02:03:36.740
So we were still struggling with security bugs.
link |
02:03:41.760
So we knew Chrome was coming
link |
02:03:42.980
but it took two more years to come out.
link |
02:03:45.060
And we were still getting the Google search revenue
link |
02:03:48.300
and we were still making Google the default engine
link |
02:03:51.860
and Firefox was still growing.
link |
02:03:52.980
Firefox grew I think until 2011.
link |
02:03:55.260
That was when it peaked.
link |
02:03:56.900
And as it started falling, it was because of Chrome.
link |
02:03:59.900
Chrome came out in 2008 and it had a comic book
link |
02:04:02.900
that leaked accidentally that showed some of the people
link |
02:04:04.820
who worked on it.
link |
02:04:05.660
Lars Bock was in there and so on.
link |
02:04:07.260
It was kind of soft launch
link |
02:04:08.980
because they didn't market it heavily.
link |
02:04:10.380
They didn't push distribution.
link |
02:04:12.580
But Google had reason to worry about distribution
link |
02:04:14.820
because Microsoft was doing a search engine, Bing,
link |
02:04:19.220
since 2007.
link |
02:04:20.500
In fact, when they came out with Bing,
link |
02:04:22.020
Google was worried that Microsoft would just brute force
link |
02:04:25.220
switch the default browser in everyone's Internet Explorer
link |
02:04:28.540
or even Firefox on Windows to Bing from Google.
link |
02:04:32.580
And Microsoft wasn't I think ready
link |
02:04:34.860
to dare the antitrust cops that way
link |
02:04:37.100
even though they'd gone to sleep.
link |
02:04:39.020
And I don't think Bing was ready either.
link |
02:04:42.020
But just in case it happened, Sundar Pichai,
link |
02:04:45.500
who rose very well based on this work,
link |
02:04:47.740
was sort of in charge of getting distribution deals.
link |
02:04:50.580
And he got Google toolbar
link |
02:04:52.180
and Google desktop search distribution.
link |
02:04:55.500
And if you remember those pieces of software,
link |
02:04:56.780
those were like desktop extensions,
link |
02:04:59.460
toolbars or operating system extensions
link |
02:05:01.940
for doing desktop search, searching your local files.
link |
02:05:03.820
Kind of like Mac OS Spotlight, right?
link |
02:05:05.900
Sadly, it died.
link |
02:05:07.300
It all died.
link |
02:05:08.140
And there were some features that we still missed
link |
02:05:09.220
that didn't make it into Chrome.
link |
02:05:10.580
But Sundar got OEMs to bundle those.
link |
02:05:14.020
And then he got enough of those deals
link |
02:05:15.500
that by 2007 or eight, Google felt,
link |
02:05:18.000
well, if Bing, Microsoft does the worst
link |
02:05:20.500
and tries to force Bing,
link |
02:05:21.860
we can reach in and reset it with that point of presence.
link |
02:05:25.500
So that was good for Sundar's career
link |
02:05:27.340
and it was good for Google,
link |
02:05:28.180
but it never came to pass that they had to defend.
link |
02:05:30.780
Microsoft was still slow.
link |
02:05:32.940
And by the time they saw Chrome come out,
link |
02:05:35.000
then they did what would have been IE9.
link |
02:05:37.420
And then they said,
link |
02:05:38.260
we're gonna have a fast JavaScript engine
link |
02:05:39.500
to Chakra, Chakra core.
link |
02:05:41.380
And they did okay.
link |
02:05:43.140
They were another process isolated,
link |
02:05:46.220
fast JavaScript browser, tab browser.
link |
02:05:48.980
So it sounds like there's a deep fundamental coupling
link |
02:05:52.340
of search engine and browser
link |
02:05:53.640
that's mixing this whole thing up.
link |
02:05:55.780
And obviously Firefox doesn't have a search engine.
link |
02:05:59.980
That's like, I mean, you're partnering with somebody
link |
02:06:03.680
with a search engine.
link |
02:06:04.940
With Yahoo or with Google or so on.
link |
02:06:08.780
They tried Yahoo, that was unfortunate
link |
02:06:10.660
because I think even though Marissa Mayer talked about it,
link |
02:06:14.660
she never pulled it off.
link |
02:06:15.840
They never restored the search team
link |
02:06:18.620
that had been laid off.
link |
02:06:19.600
I believe Carol Bartz was running Yahoo
link |
02:06:21.460
when Carol said, I've got to get rid
link |
02:06:23.100
of one of the three expensive things.
link |
02:06:24.580
I'm gonna get rid of search.
link |
02:06:25.940
And those researchers went to Google and Microsoft
link |
02:06:29.800
and there was no way to put Yahoo search back together.
link |
02:06:32.500
So when Firefox tried switching all their users
link |
02:06:36.020
who'd stuck with a default from Google to Yahoo,
link |
02:06:38.700
it was like mid December, 2014,
link |
02:06:40.980
a bunch of users said, what just happened to my Firefox?
link |
02:06:44.060
And others didn't notice right away,
link |
02:06:45.300
but over time they did.
link |
02:06:46.220
And so over the next year,
link |
02:06:48.320
the traffic just went away for Yahoo.
link |
02:06:51.360
And yet they were obliged, I understand it.
link |
02:06:54.420
I don't have inside knowledge, but this has leaked out
link |
02:06:56.700
and Danny Sullivan's written about it,
link |
02:06:58.340
search engine land.
link |
02:06:59.260
I think the deal was like fixed payments to Mozilla.
link |
02:07:01.520
So Mozilla was getting a bunch of money for traffic
link |
02:07:03.500
that wasn't staying because users
link |
02:07:04.960
were resetting their default.
link |
02:07:06.580
And this shows how defaults are important,
link |
02:07:09.220
but they have to be good enough
link |
02:07:10.520
that the user doesn't override them.
link |
02:07:12.580
And a lot of the commercial value in popular apps
link |
02:07:16.620
is what are the default settings?
link |
02:07:18.040
What is the default search?
link |
02:07:20.120
But oftentimes there's something just like you said,
link |
02:07:21.860
I mean, if there's something compelling
link |
02:07:25.020
that's also can beat out the default,
link |
02:07:27.220
like tab browsing and so on.
link |
02:07:29.020
And that's where, I mean, we'll talk about brave browser.
link |
02:07:32.300
It feels like now we're in this third stage
link |
02:07:36.200
where there's a Chrome, Firefox, Edge,
link |
02:07:41.440
I guess it's called and brave.
link |
02:07:44.620
And these are all seem like really exciting,
link |
02:07:48.500
I don't know, innovative browsers.
link |
02:07:50.560
They're all kind of copying off of each other,
link |
02:07:52.260
picking up the good stuff.
link |
02:07:53.760
There's evolution again, especially on tracking protection.
link |
02:07:56.260
So privacy is this sort of global wave that's rising.
link |
02:08:02.500
I like to call it a wave because it's a large,
link |
02:08:04.820
somewhat chaotic structure.
link |
02:08:07.020
It's not a unitary good.
link |
02:08:08.600
You can't say I'm buying privacy for $3,
link |
02:08:11.780
I'm paying $3 privacy.
link |
02:08:12.740
Some people think a VPN does this
link |
02:08:14.300
and are disappointed when it fails them.
link |
02:08:15.980
But often people use VPNs for region unlocking video
link |
02:08:19.700
or getting the US Netflix catalog.
link |
02:08:22.860
But privacy is not a unitary good, it's complex
link |
02:08:25.380
and people are understanding it only over time
link |
02:08:28.060
and as they get burned, but there's a genie
link |
02:08:30.700
that's not going back in the bottle there.
link |
02:08:31.980
People are fed up.
link |
02:08:33.380
Apple has responded to this.
link |
02:08:34.700
Apple was always making Safari, I think,
link |
02:08:36.620
more of a privacy branded browser from the very beginning.
link |
02:08:40.340
I think this was probably Steve Jobs.
link |
02:08:42.300
Safari had private windows, private tabs
link |
02:08:45.260
before Firefox did.
link |
02:08:48.220
And these are only private in the sense
link |
02:08:50.060
that they don't leave local traces,
link |
02:08:53.020
if you don't want them to.
link |
02:08:53.980
Turns out Safari does keep them around between shutdown.
link |
02:08:57.180
But the canonical model is no local traces
link |
02:08:59.860
after you close the private window.
link |
02:09:01.780
No leftover traces that you went to some site
link |
02:09:04.900
that you were embarrassed by
link |
02:09:06.140
or bought a gift for somebody you wanted to keep secret.
link |
02:09:10.220
But there's still some level of tracking.
link |
02:09:11.780
There's network tracking.
link |
02:09:14.860
Network privacy is not guaranteed at all
link |
02:09:16.900
because you're using the same internet and ISP
link |
02:09:18.980
as a public window, a non private window.
link |
02:09:21.340
But, Safari had that early on.
link |
02:09:22.900
They also had a cookie blocking policy
link |
02:09:26.060
that might take a little explaining.
link |
02:09:27.860
When you, if you know what a cookie is,
link |
02:09:29.820
it's a little bit of storage in the browser
link |
02:09:31.300
indexed by the name of the site.
link |
02:09:33.420
And it's really only the main name of the site,
link |
02:09:35.060
like bofa.com or, you know, something like npr.org.
link |
02:09:43.700
Every site can store some information in a cookie.
link |
02:09:45.980
Every time it's contacted by the browser,
link |
02:09:48.620
the previous version is sent back.
link |
02:09:50.860
And in the response from the server, the cookie's updated.
link |
02:09:54.060
So it's this little bit of storage in the browser
link |
02:09:56.580
that the site can keep updating
link |
02:09:58.180
and it can store an encrypted version
link |
02:10:01.460
of your login credentials with a timestamp
link |
02:10:03.820
so you can stay logged in
link |
02:10:05.980
without having to retype your password
link |
02:10:07.700
every time you navigate,
link |
02:10:08.820
which is how it would be if you didn't have cookies.
link |
02:10:11.220
The web protocols, especially in the 90s,
link |
02:10:14.420
are so called stateless protocols.
link |
02:10:16.020
So you go to your bank, you log in,
link |
02:10:18.740
you go from your login confirmed page
link |
02:10:21.220
to your account view.
link |
02:10:22.460
If you didn't have a cookie, you'd be logging in again.
link |
02:10:24.980
Every time you type in the source.
link |
02:10:26.580
So that was the great thing about cookies.
link |
02:10:27.900
Luhmann truly did it in a hurry in 1994
link |
02:10:29.820
before I joined Escape
link |
02:10:30.860
and he did it for really holding that kind of credential.
link |
02:10:34.860
But even then there was the image element
link |
02:10:37.500
embedded in the page
link |
02:10:38.580
and the image gets fetched possibly from a different server
link |
02:10:41.980
and that request carries the last cookie,
link |
02:10:44.220
which could be empty at first,
link |
02:10:45.740
and the response carries the updated cookie.
link |
02:10:47.980
So just by having images and cookies,
link |
02:10:49.780
you got tracking because that image server
link |
02:10:51.420
can be serving a little one by one pixel
link |
02:10:54.220
and they still use the word pixel in ad tech.
link |
02:10:56.500
And that pixel can be served from the same server,
link |
02:10:59.380
embedded differently with different URL spellings
link |
02:11:02.140
in the New York Times and ESPN.
link |
02:11:03.740
And as you go from one to the other,
link |
02:11:05.860
the image server can say,
link |
02:11:06.980
I haven't got a cookie for you.
link |
02:11:08.180
It's empty initially.
link |
02:11:09.020
I'm gonna assign you user number 1234.
link |
02:11:11.260
I'm gonna put a database entry in.
link |
02:11:13.020
And I see, by the way,
link |
02:11:13.860
I always fetch the name of the path part of the URL
link |
02:11:15.980
that I was in the New York Times.
link |
02:11:17.460
So you're a New York Times reader.
link |
02:11:18.980
And then you hit ESPN, same thing.
link |
02:11:20.980
And the database gets updated
link |
02:11:22.260
and the number user 1234 indexes in the database
link |
02:11:25.580
to a profile of you, you've been tracked.
link |
02:11:28.140
This was not intended.
link |
02:11:29.420
And it was too late to undo by the time I got the Netscape.
link |
02:11:32.740
I think Lou wanted to do Twinkies, he called them.
link |
02:11:35.100
And he was trying to solve several problems.
link |
02:11:37.380
He wanted them to be bigger
link |
02:11:38.380
because initially cookies had a short size limit.
link |
02:11:40.540
I think he wanted to solve the third party problem,
link |
02:11:42.340
but Tom Paquin, the engineering manager said,
link |
02:11:45.100
nope, no Twinkies, just cookies.
link |
02:11:47.180
We're done.
link |
02:11:48.100
You're done, son.
link |
02:11:49.060
And that's how a lot of that stuff was.
link |
02:11:51.540
That's how JavaScript got frozen
link |
02:11:54.620
like a flying Amber in some ways
link |
02:11:55.860
with that sloppy equality operator that I made
link |
02:11:57.900
because of the early adopters.
link |
02:11:58.980
And the cookie got stuck with this tracking hazard.
link |
02:12:01.900
And then because JavaScripts can be like images,
link |
02:12:04.300
they're embedded in the page.
link |
02:12:05.940
By the time Netscape 3, I made that work.
link |
02:12:08.660
You can get a request with the last cookie value
link |
02:12:10.820
and the response updates it.
link |
02:12:11.940
That's a tracking mechanism.
link |
02:12:12.940
And that's why you don't even need images to track.
link |
02:12:14.940
Now you just use scripts.
link |
02:12:16.460
So this whole tracking economy evolved
link |
02:12:20.020
and it depended on these accidents of the 90s,
link |
02:12:23.860
these unintended consequences.
link |
02:12:25.300
Well, it created some of the richest companies
link |
02:12:27.200
in the world, right?
link |
02:12:28.040
I mean, it's the social media.
link |
02:12:28.860
All I got was T shirts.
link |
02:12:29.980
All I got is this crappy T shirt.
link |
02:12:33.180
Yeah.
link |
02:12:34.100
I mean, so that's the fundamental problem
link |
02:12:38.420
the world is facing now.
link |
02:12:39.500
They're looking at what social media has created
link |
02:12:42.020
and they're looking at,
link |
02:12:44.180
and like a world is looking at itself in the mirror
link |
02:12:47.020
and seeing that privacy is actually something
link |
02:12:50.980
as opposed to like a nice thing to have.
link |
02:12:53.540
It's something that is actually should be fundamental
link |
02:12:57.260
to the way we interact with the world
link |
02:12:59.220
as part of our tooling.
link |
02:13:00.600
And that's where the Brave browser comes in.
link |
02:13:03.540
And I suppose others as well are playing with this idea,
link |
02:13:06.060
but Brave is at the forefront of that.
link |
02:13:07.660
So maybe can you like describe what Brave is
link |
02:13:11.020
and what are its key principles and what's broken
link |
02:13:14.700
and what is it Brave trying to fix?
link |
02:13:16.140
So when I realized that these accidents
link |
02:13:18.380
like the third party cookie,
link |
02:13:19.900
the image or script that's tracking you
link |
02:13:21.840
or the JavaScripts that can do an invisibly now,
link |
02:13:26.020
that all this stuff wasn't intended
link |
02:13:28.700
and that Firefox had supported extensions
link |
02:13:31.660
that block some of these things,
link |
02:13:32.640
I thought probably we should have browsers
link |
02:13:34.740
just block some of these things by default.
link |
02:13:37.440
These were not intended and they're now unsafe.
link |
02:13:39.780
They're tracking you.
link |
02:13:40.620
There could be data breaches, malware distribution,
link |
02:13:44.940
bullying and psyops and other attacks on people.
link |
02:13:49.660
Block that stuff, block that JavaScript.
link |
02:13:51.500
I'm Dr. Frankenstein, I've got to deal with a monster here.
link |
02:13:54.700
But obviously you go to Gmail,
link |
02:13:56.540
there's a bunch of script there
link |
02:13:57.540
to make that amazing web client.
link |
02:13:59.320
That's okay, that's first party JavaScript.
link |
02:14:02.180
So how do you tell the first from the third party?
link |
02:14:04.020
And it's not easy.
link |
02:14:04.860
It's not a matter of just what's embedded
link |
02:14:06.700
from a different server because a lot of publishers
link |
02:14:09.860
use benign scripts from unrelated domains
link |
02:14:12.980
or apparently unrelated domains.
link |
02:14:14.360
So you end up having to develop a sort of human
link |
02:14:16.660
and machine learning practice around blocking.
link |
02:14:19.700
And at Brave, we did that from the start
link |
02:14:22.300
and built a research team to help drive it and automate it.
link |
02:14:25.740
We realized that protecting people needed machine learning
link |
02:14:28.900
and around 2017 spring,
link |
02:14:30.420
I talked to my friends at Apple about this too
link |
02:14:32.680
and they were also doing
link |
02:14:34.060
what they call intelligent tracking prevention,
link |
02:14:36.640
which uses local machine learning in the browser.
link |
02:14:39.320
And the funny thing is, great minds think alike,
link |
02:14:42.880
they were taking their third party cookie blocker
link |
02:14:44.780
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.540
Because what they did was in 2003, when Safari came out,
link |
02:14:51.740
they said, we're gonna block cookies
link |
02:14:53.740
that are from those third party embedded elements
link |
02:14:57.220
where you've never visited that site before.
link |
02:14:59.120
So I'm gonna pick an ad company that got sold to AT&T,
link |
02:15:02.340
so I'm not picking on anybody unfairly, appnexus.com.
link |
02:15:05.140
Have you ever been to appnexus.com?
link |
02:15:06.660
Nope.
link |
02:15:07.500
I've never been there, but I guarantee you 10 years ago,
link |
02:15:09.020
you probably had, if you were using Firefox,
link |
02:15:11.180
you had a cookie, third party cookie,
link |
02:15:13.020
because you were being tracked by them
link |
02:15:14.980
and they were using that cookie
link |
02:15:15.920
to build up a profile of you.
link |
02:15:17.560
In Safari, as long as the user never went to appnexus,
link |
02:15:20.700
that cookie would not be set.
link |
02:15:22.380
And that was a real move for privacy early on
link |
02:15:25.460
when jobs were still around in Safari.
link |
02:15:27.660
But it had this loophole that if you do go to appnexus,
link |
02:15:30.620
then why it's okay to be a third party cookie.
link |
02:15:32.540
And so appnexus did something very naughty.
link |
02:15:35.180
They took their ad partners
link |
02:15:36.820
to put the actual ad you click on.
link |
02:15:39.000
And they said, hey, add a little script
link |
02:15:40.300
so that when somebody clicks on the ad,
link |
02:15:42.620
before it goes to your landing page,
link |
02:15:44.500
redirect to appnexus and we'll redirect
link |
02:15:46.340
to the landing page.
link |
02:15:47.180
And by doing that, they set a first party cookie
link |
02:15:49.140
and they got whitelisted.
link |
02:15:49.980
So it was a loophole they exploited.
link |
02:15:51.660
Intelligent tracking prevention in Safari
link |
02:15:53.580
was sophisticated enough to counteract this
link |
02:15:56.620
and it did other things and it's evolved since they did it.
link |
02:15:59.100
And we've evolved brave too.
link |
02:16:00.720
And so when I say machine and human learning,
link |
02:16:02.560
there's a real set of techniques here.
link |
02:16:05.580
They have to fight.
link |
02:16:06.420
This is a fascinating problem.
link |
02:16:07.580
Fingerprinting, right?
link |
02:16:08.400
Anytime you have a little bit of storage in the browser
link |
02:16:10.720
associated with a website,
link |
02:16:13.580
if the bad guy can get 32 websites,
link |
02:16:15.540
each one has a bit of storage, that's 32 bits.
link |
02:16:17.660
You can turn the bit on or off,
link |
02:16:19.820
you can make 4 billion numbers,
link |
02:16:21.280
you can make an identifier.
link |
02:16:22.260
It's called a super cookie sometimes.
link |
02:16:26.660
There are weaker ways that are statistical.
link |
02:16:28.880
They're called fingerprinting.
link |
02:16:29.780
You have to block all of them
link |
02:16:30.780
and you have to not only automate,
link |
02:16:32.840
you want to work in the web standards body
link |
02:16:34.940
to put privacy in by default, by design,
link |
02:16:38.480
from the get go, not add it as an afterthought
link |
02:16:40.500
or go hogwile with new web APIs
link |
02:16:43.180
to add a bunch more local storage or fingerprint surface area.
link |
02:16:47.500
And that's been a struggle too,
link |
02:16:48.660
because guess who's the new Microsoft
link |
02:16:50.940
in the standards body?
link |
02:16:51.780
It's Google.
link |
02:16:52.700
And they're not in favor of privacy first.
link |
02:16:55.900
They want to do privacy their way,
link |
02:16:58.740
only under, I would say, market pressure.
link |
02:17:01.180
But with Apple and with Brave leading the way,
link |
02:17:03.660
we block third party cookies almost without exception.
link |
02:17:06.280
So we've just blocked them.
link |
02:17:07.940
And that gives us a very strong privacy benefit,
link |
02:17:11.540
but it also means some sites just don't work right.
link |
02:17:13.740
Embedded YouTube videos might not work right.
link |
02:17:15.500
So we're adapting in a similar way to Apple's done with ITP
link |
02:17:19.620
to make third party cookies blocked,
link |
02:17:22.740
but to sort of simulate what looks like
link |
02:17:26.460
a working third party cookie for the site.
link |
02:17:28.860
It essentially tries to partition each site
link |
02:17:32.320
and its third parties into its own sort of cookie jar.
link |
02:17:34.860
Got it.
link |
02:17:35.700
And so, like you said,
link |
02:17:37.060
is this both like a human fine tuning issue
link |
02:17:41.100
and a machine learning problem?
link |
02:17:42.580
And as the humans learn,
link |
02:17:44.540
then they train the machine learning.
link |
02:17:46.380
But, you know, maybe Google aside or including Google,
link |
02:17:50.580
there's millions of dollars, if not B,
link |
02:17:53.220
billions of dollars to be made
link |
02:17:54.900
from fighting the ways of Brave.
link |
02:17:57.860
That's right.
link |
02:17:58.700
And it's been an interesting change
link |
02:18:00.660
from when we started in 2015.
link |
02:18:01.980
When we started, you know, ad blocking extensions,
link |
02:18:04.420
ad block plus was one of the big ones
link |
02:18:06.140
that started on Firefox in 2006, I believe,
link |
02:18:08.660
had gotten to a certain level of use around the world.
link |
02:18:11.020
And browsers like UC Web, UC Browser in Asia
link |
02:18:14.380
had some amount of ad blocking built in and on by default.
link |
02:18:17.300
So, a page fair was a startup
link |
02:18:20.500
and they measured ad blocking adoption.
link |
02:18:23.580
And they tried to say,
link |
02:18:24.420
hey publishers, you're, you know,
link |
02:18:26.580
30% of the visitors to Pitchfork or Wire
link |
02:18:30.200
to Conda NAS properties are using ad blockers.
link |
02:18:32.900
If we can somehow convince them
link |
02:18:34.380
to lower their ad blocking for your site,
link |
02:18:37.340
that could be like a 43% lift, right?
link |
02:18:39.300
And, you know, three sevenths.
link |
02:18:42.020
Well, that's easier said than done.
link |
02:18:44.260
And PageFair and others, SourcePoint,
link |
02:18:46.140
and many others tried to either smuggle ads through
link |
02:18:48.060
or cajole the user into letting, you know, ads appear.
link |
02:18:52.260
And it didn't really work.
link |
02:18:53.100
And meanwhile, the ad blocking adoption
link |
02:18:54.460
has just continued intelligent tracking prevention
link |
02:18:56.860
in Safari in 2017, Brave from 2016 on
link |
02:19:01.620
with very strong cookie blocking and other protections.
link |
02:19:04.460
And this is not going away.
link |
02:19:06.660
The publishers used to rage against it.
link |
02:19:08.500
Like we would try to say, we can help you.
link |
02:19:10.460
You're dealing with users
link |
02:19:11.960
who are already blocking all your ads.
link |
02:19:14.100
We can try to put back some economics
link |
02:19:16.800
that help the user and you
link |
02:19:18.460
that led to the basic attention token
link |
02:19:19.980
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
link |
02:19:24.980
and treat us as an enemy.
link |
02:19:26.480
But in 2015 or 16, it was like,
link |
02:19:28.620
nah, you're an ad blocker.
link |
02:19:29.540
Get out of here.
link |
02:19:30.380
I hate you.
link |
02:19:31.200
And by 2017 or 18, it's like something's happening.
link |
02:19:33.740
The ad blocking is not stopping
link |
02:19:34.940
and we're all getting sort of pulled
link |
02:19:37.020
on the Google's plantation through AMP, AMP.
link |
02:19:41.580
Or we're getting killed by the Google ad system we use
link |
02:19:44.580
because it's taking all the revenue
link |
02:19:46.620
or it's permitting or some other vendors we use
link |
02:19:49.140
are permitting ad fraud.
link |
02:19:50.140
And so a fake New York Times is getting paid
link |
02:19:52.640
by the marketer running an ad that a bot clicks on.
link |
02:19:57.140
And the real New York Times
link |
02:19:58.240
that's supposed to get the ad doesn't get it.
link |
02:20:00.500
And there's something really broken
link |
02:20:01.540
about that kind of system.
link |
02:20:02.460
And that fraud is mediated through Google's ad exchange,
link |
02:20:06.700
which is the biggest of them all.
link |
02:20:07.860
And Google takes a fee.
link |
02:20:09.660
There's a flip side of that,
link |
02:20:10.700
which is malware distribution, malvertising,
link |
02:20:12.660
where fake advertisers put malware payloads
link |
02:20:16.300
in or exploit hit loaders in JavaScript
link |
02:20:19.340
and they smuggle them in ads 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.580
I'm not gonna say this is a RICO predicate,
link |
02:20:27.100
but why is the ad exchange facilitating fraud
link |
02:20:30.220
and malware distribution and taking a fee?
link |
02:20:32.060
It's not right.
link |
02:20:32.880
As opposed to just fighting,
link |
02:20:33.940
this is the really interesting thing about Brave
link |
02:20:35.660
is as opposed to just fighting
link |
02:20:37.700
and then being treated like an ad blocker,
link |
02:20:39.980
you're providing an alternate.
link |
02:20:42.060
There's a philosophical idea here
link |
02:20:45.460
that might change the nature of the internet
link |
02:20:47.500
with the basic attention token.
link |
02:20:49.220
Yes.
link |
02:20:50.060
Well, maybe what is basic attention token BAT
link |
02:20:54.060
and how does it work?
link |
02:20:55.300
Okay, I'll tell the story first by saying how I came to it.
link |
02:20:58.200
I realized for a long time at Firefox,
link |
02:21:00.820
we were dependent on this Google search deal.
link |
02:21:02.940
And I thought, now that Chrome's out,
link |
02:21:05.700
maybe that's gonna go away.
link |
02:21:07.260
And they just, at some point, Google will say,
link |
02:21:10.740
Firefox, like old yeller, you saved me from the rabid beast,
link |
02:21:14.620
now I have to shoot you in the head.
link |
02:21:16.360
Done your job, sad but true, goodbye.
link |
02:21:19.660
And what could we do?
link |
02:21:21.780
And I think Mozilla doesn't know what to do.
link |
02:21:24.140
This is something that I couldn't solve there
link |
02:21:25.900
and I don't think they can solve.
link |
02:21:27.220
But I thought, why is the browser
link |
02:21:29.460
the sort of passive servant of these big tech companies?
link |
02:21:32.300
Why is it a blind runtime for ad tech JavaScripts,
link |
02:21:36.420
including from Google?
link |
02:21:38.100
Why doesn't it block some?
link |
02:21:39.220
And if it blocks some, why can't it reconnect users,
link |
02:21:43.940
readers, fans with publishers, creators, websites?
link |
02:21:48.480
Why can't it help people make direct payments
link |
02:21:51.220
or even possibly get an ad revenue share for private ads
link |
02:21:54.900
that are placed in the browser?
link |
02:21:56.300
The ads are all placed in the browser.
link |
02:21:57.580
Some people have this sort of model
link |
02:21:58.840
that the server's painting the ad into some,
link |
02:22:01.620
flash combined package or into some giant image
link |
02:22:06.500
and then it all gets sent down, that's not how it works.
link |
02:22:08.600
All the ads you see on the web are placed in your browser
link |
02:22:11.340
by it calling out to various ad tech partners
link |
02:22:13.980
and Google's among them.
link |
02:22:15.620
And so if you block those scripts,
link |
02:22:17.580
you break the advertising flow of money
link |
02:22:22.420
from the brands and their agencies to the publishers.
link |
02:22:26.300
And if you want to reconnect it directly with the user,
link |
02:22:29.460
you have limited choices.
link |
02:22:30.420
The user generally isn't gonna sign up
link |
02:22:31.940
with a ACH bank connection or a credit card.
link |
02:22:34.980
The publisher isn't gonna sign up the user
link |
02:22:37.260
except as a subscriber and then they're gonna overcharge you
link |
02:22:39.980
because they want you to cross subsidize all the content
link |
02:22:42.060
and buy more than you read and all that stuff.
link |
02:22:43.660
And how many, people are doing great who are big names
link |
02:22:47.220
like New York Times and The Washington Post,
link |
02:22:48.740
but how many subscriptions are you as a user gonna pay for?
link |
02:22:51.820
This is why startups like Tony Hale Scroll
link |
02:22:54.420
are trying to do a portable subscription system.
link |
02:22:57.160
By the way, just a small tangent there,
link |
02:22:58.860
even the New York Times is really annoying
link |
02:23:00.860
how difficult it is to subscribe.
link |
02:23:03.300
There's way too many clicks.
link |
02:23:04.620
They don't make it easy.
link |
02:23:05.460
And I had friends a few years ago,
link |
02:23:06.300
I think they fixed this, who would pay for the paper
link |
02:23:08.340
and then they'd go online and they get upcharged
link |
02:23:11.140
for the digital and there was no break.
link |
02:23:13.140
There was no connection between them.
link |
02:23:15.380
But publishers are not that technical
link |
02:23:17.260
and they can't all get you to subscribe.
link |
02:23:19.580
You can't have a thousand subscriptions.
link |
02:23:21.300
So for a long time, people talked about micropayments.
link |
02:23:23.460
There was Blendle and other ones which came to the US,
link |
02:23:25.860
but it didn't grow.
link |
02:23:27.580
And I thought, if you have just a browser
link |
02:23:29.820
and it's protecting you by blocking
link |
02:23:31.200
all this ad tech tracking junk,
link |
02:23:33.820
it can provide you an option that uses cryptocurrency
link |
02:23:36.620
to let you support your favorite sites
link |
02:23:39.420
and even YouTube channels.
link |
02:23:40.580
And that we prototyped with Bitcoin.
link |
02:23:42.740
And that meant the user had to be of means to contribute
link |
02:23:45.940
and willing to contribute,
link |
02:23:47.480
but it could be done on the Bitcoin blockchain
link |
02:23:49.220
and it could be fairly efficient
link |
02:23:50.560
even though Bitcoin went through a period
link |
02:23:52.260
when we had this prototype running in 2016 into 2017
link |
02:23:55.740
where Bitcoin was very congested and very slow to confirm
link |
02:23:58.780
and the fees got very high.
link |
02:24:01.020
And a lot of users who were not Bitcoin maximalists
link |
02:24:03.540
or even experienced,
link |
02:24:04.940
we helped them out by embedding a Coinbase buy widget
link |
02:24:07.620
and they had the income to buy, but it was hard.
link |
02:24:10.180
It was like, do I buy $5 a month?
link |
02:24:12.420
But the fee is like 450.
link |
02:24:14.320
I better buy in larger batches, right?
link |
02:24:16.420
And they're like, I don't wanna own that much Bitcoin.
link |
02:24:18.540
So it became this painful thing.
link |
02:24:21.180
And the real idea that I had of private ads
link |
02:24:23.800
that pay the user a rev share
link |
02:24:25.940
couldn't be realized alone in that kind of system.
link |
02:24:30.580
In these cryptocurrency systems,
link |
02:24:33.060
especially with the blockchain we switched to Ethereum,
link |
02:24:35.180
you can have smart contracts.
link |
02:24:36.920
The Bitcoin system is not turned complete.
link |
02:24:38.980
So what you can do with the scripts is more limited,
link |
02:24:41.100
but you can still do sort of clever things
link |
02:24:44.500
even with Bitcoin script.
link |
02:24:46.140
What we wanted to do was sort of a three sided ecosystem.
link |
02:24:49.280
We wanted users, creators or publishers and advertisers.
link |
02:24:53.740
And we wanted the advertisers to put money in
link |
02:24:55.740
just like they do today,
link |
02:24:57.140
but without going through the Googles and the app nexuses
link |
02:25:00.380
and all these other ad tech companies,
link |
02:25:01.980
because those companies take out a huge cut.
link |
02:25:04.420
The Guardian in the UK once did an experiment for a month.
link |
02:25:06.940
They bought out their own ad space.
link |
02:25:08.820
They put in a pound and they were paid 30 pence.
link |
02:25:11.180
70% was coming out to the intermediary vendors
link |
02:25:15.200
they were using.
link |
02:25:17.020
And that's like the opposite of what the app store does.
link |
02:25:19.260
The app store takes 30% and gives the publisher 70%.
link |
02:25:22.220
So pretty broken, in the old days of the superstation TBS,
link |
02:25:26.180
the media owner would get 85%.
link |
02:25:29.900
So these splits have become really unbalanced
link |
02:25:33.460
and the middle players, the ad tech vendors
link |
02:25:35.720
are taking out way too much money.
link |
02:25:37.420
And they're doing something worse, which has been noticed.
link |
02:25:39.700
They're letting not just the malware vendors,
link |
02:25:44.060
but also the ad fraud side, which fakes the publishers
link |
02:25:47.220
and clickbait merchants come in and steal traffic
link |
02:25:52.120
from good sites.
link |
02:25:53.220
Because once you have a certain audience identified
link |
02:25:55.640
at one site, Jason Calconas told me this
link |
02:25:57.500
about his experience with, I guess it was in Gadget,
link |
02:25:59.900
I forget which site he was running.
link |
02:26:01.620
But once he started using an ad partner
link |
02:26:04.180
that was sharing his audience information
link |
02:26:06.200
across multiple sites, he saw his competitors
link |
02:26:08.420
stealing all his traffic.
link |
02:26:09.540
And then what's worse is the clickbait sites
link |
02:26:11.540
that just have much cheaper rates steal all that traffic.
link |
02:26:15.500
And that facilitates fraud, facilitates fake news,
link |
02:26:20.300
all sorts of problems.
link |
02:26:21.340
So Gray blocks it and then we give users the ability
link |
02:26:24.580
to give back and because we invented
link |
02:26:27.460
the basic attention token on Ethereum,
link |
02:26:28.940
we can do this three way split.
link |
02:26:31.020
And we can give users a share of the revenue.
link |
02:26:33.620
And if they want to take it out, they can.
link |
02:26:35.500
Now, unfortunately for us and for all blockchain,
link |
02:26:38.240
the regulators are saying,
link |
02:26:39.800
we're gonna have to know who you are.
link |
02:26:41.300
There's the Treasury Department's FinCEN agency.
link |
02:26:47.320
There's the Office of Foreign Asset Controls, OFAC.
link |
02:26:50.780
There's the other regulators in the federal government
link |
02:26:55.260
that take a very dark look at things like money laundering
link |
02:26:58.260
and sending money to someone named Osama bin Laden.
link |
02:27:01.260
So compliance starts to come in.
link |
02:27:03.540
And even now they're threatening for pure Bitcoin
link |
02:27:06.100
sending to some address.
link |
02:27:07.820
If you're a Coinbase, you're gonna have to know
link |
02:27:10.260
who's at that address.
link |
02:27:11.340
You're gonna have to start.
link |
02:27:12.180
Like the actual identities of people involved.
link |
02:27:13.580
Yeah, now with Coinbase members,
link |
02:27:14.900
you sign up and they know you
link |
02:27:15.900
and they comply with the regulations.
link |
02:27:16.980
They're a regulated money services business.
link |
02:27:20.220
And, but if somebody's using their own self custody,
link |
02:27:25.600
so called self custodial wallet
link |
02:27:27.240
where they have the hardware private key
link |
02:27:29.340
and they're not named and they want to send to that address,
link |
02:27:33.620
our friends in the federal government are talking about
link |
02:27:35.080
requiring at some threshold and knowing who that is.
link |
02:27:37.560
So.
link |
02:27:38.400
Some threshold that's unreasonable.
link |
02:27:40.460
It's not that big.
link |
02:27:42.220
Yeah.
link |
02:27:43.060
Yeah, I don't know how this will play out.
link |
02:27:43.880
I think crypto is here to stay.
link |
02:27:44.820
I think the beauty of being able to send peer to peer
link |
02:27:47.260
without any bank in the middle,
link |
02:27:48.500
without any huge wire charge and two day delay
link |
02:27:51.620
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.340
But we're pragmatists are brave about crypto.
link |
02:27:56.400
And we realized that anything like a revenue split,
link |
02:27:59.580
we can't facilitate without being licensed in a certain way
link |
02:28:02.180
and it requires knowing who the user is.
link |
02:28:03.880
So our default mode doesn't know who the user is.
link |
02:28:06.460
It instead imputes to the user's browser,
link |
02:28:09.540
some of the revenue and allows that browser
link |
02:28:11.820
to steer it back to the creators.
link |
02:28:14.940
And we do have to identify the creators.
link |
02:28:16.680
But as things improve and who knows how it'll play out,
link |
02:28:20.460
there should become a day when this full vision
link |
02:28:22.820
can be done more fully on a blockchain.
link |
02:28:25.740
But regulations and the practicalities of today's blockchains,
link |
02:28:29.260
which are not that fast and not anonymous over time,
link |
02:28:32.700
you fingerprint yourself over time.
link |
02:28:34.780
We do some of this with the browser.
link |
02:28:36.260
So one of the ideas of the basic attention token
link |
02:28:39.780
is to make a hybrid system
link |
02:28:41.880
that's stronger than blockchain alone.
link |
02:28:43.420
It's the browser and the blockchain.
link |
02:28:45.900
And the browser is this trusted endpoint software.
link |
02:28:48.420
It's this universal app.
link |
02:28:49.980
Everyone uses browsers.
link |
02:28:51.120
The bigger the screen, the more you're in the browser
link |
02:28:53.020
and the less you install fat clients for things.
link |
02:28:56.140
I use Slack on Mac OS and it's like a browser.
link |
02:29:00.140
It's based on an electron framework we used to use.
link |
02:29:02.140
And it's just, it's not that great.
link |
02:29:04.740
Some of the people at Brave use Slack in Brave as a...
link |
02:29:07.780
In the browser, yeah.
link |
02:29:08.620
In the browser, yeah.
link |
02:29:09.440
I use that often, yeah.
link |
02:29:10.340
And I noticed on the iPad, I use apps less.
link |
02:29:13.140
The smaller the screen, the browser got handicapped
link |
02:29:16.460
by Apple and Android both.
link |
02:29:17.960
And it also can be slower or not have the right affordances,
link |
02:29:22.700
the interface with the security limited APIs.
link |
02:29:26.780
But in principle, with the right permissioning,
link |
02:29:28.740
you can make the web browser just as good as any app.
link |
02:29:31.680
You make it be a super app.
link |
02:29:33.380
And that's part of our mission at Brave.
link |
02:29:35.120
So we want to have the economics that got captured
link |
02:29:37.820
by these big tech companies through tracking
link |
02:29:40.060
and through social networks.
link |
02:29:41.380
We want to block that for your own safety
link |
02:29:43.300
and then let you opt into a cleaner world
link |
02:29:45.480
where you keep your data defended in your browser
link |
02:29:47.980
and you can actually realize value from it.
link |
02:29:49.840
So the way our ad system works,
link |
02:29:51.300
I mentioned it being private, but how does that work?
link |
02:29:53.340
We don't see your data at all.
link |
02:29:54.980
All browsers are sort of the mother of all data feeds,
link |
02:29:57.740
your history, all your searches at all engines.
link |
02:30:00.700
Each engine sees the queries you send to it,
link |
02:30:02.560
but it doesn't see the others,
link |
02:30:03.500
but the browser sees them all.
link |
02:30:05.220
Machine learning in the browser that you can opt into
link |
02:30:07.540
can study all that in a very complete way
link |
02:30:10.140
and do a better job than Google does.
link |
02:30:11.980
Google has cookie and scripts across the web
link |
02:30:15.180
from acquiring DoubleClick, they have YouTube,
link |
02:30:17.860
they have Android, they have search,
link |
02:30:19.700
which is still their big revenue lane,
link |
02:30:21.580
but they don't see everything.
link |
02:30:22.620
The browser sees everything.
link |
02:30:23.780
And if it can do a good job locally,
link |
02:30:25.180
and this is not advanced machine learning,
link |
02:30:26.660
this is not TensorFlow, this is like SVMs now,
link |
02:30:29.620
naive Bayes, then you can match intense signals,
link |
02:30:35.020
intense signals from those data feeds,
link |
02:30:37.180
searches, the queries, the history, how much you're
link |
02:30:40.220
scrolling down a page, how much you redid a search.
link |
02:30:43.860
It's all blind browser algorithm, we don't see that data.
link |
02:30:47.020
And then pick the best ad from a fixed catalog per day.
link |
02:30:50.820
And the catalog is fixed across a large population per day,
link |
02:30:53.460
and it only updates once a day,
link |
02:30:55.100
because new offers come in and old ones expire,
link |
02:30:57.620
sometimes every week or every month.
link |
02:30:59.620
And that catalog, and there can be many such catalogs,
link |
02:31:02.740
is sold by our direct sales team.
link |
02:31:06.220
And so we're making an anonymous audience available
link |
02:31:09.420
to advertisers without the advertisers tracking them.
link |
02:31:12.020
Instead, each browser is a little machine learning system
link |
02:31:15.300
that's picking the best catalog entry.
link |
02:31:17.180
Now, the catalog is not the ads, those are big, right?
link |
02:31:19.340
It's a video or a webpage, it's just the link
link |
02:31:21.420
to an edge cache, and there are many such edge caches.
link |
02:31:23.820
We're not trying to protect them from seeing
link |
02:31:25.620
your IP address, it's not really feasible.
link |
02:31:27.780
We could use Tor, but we don't yet.
link |
02:31:30.260
And then some keywords about the ad.
link |
02:31:31.980
So it's basically like metadata and a link.
link |
02:31:34.900
And that's what the catalog consists of,
link |
02:31:36.340
and that's what the machine learning picks.
link |
02:31:37.460
And the machine learning is learning
link |
02:31:39.020
about the use specifically locally
link |
02:31:41.820
in order to choose from the catalog of different ads.
link |
02:31:44.180
Couldn't this possibly be like a multi billion dollar,
link |
02:31:47.780
isn't this taken on the Google ad?
link |
02:31:50.980
Could be.
link |
02:31:51.820
So like what, I mean, one question to ask,
link |
02:31:54.580
there seems to be some really profound ideas here
link |
02:31:57.380
that are different than what the internet has grown up to be.
link |
02:32:01.900
If Brave or something like Brave,
link |
02:32:05.340
the ideas, the fundamental philosophical ideas
link |
02:32:07.580
underlying Brave went out and runs 95% of the internet,
link |
02:32:13.100
how does that change the, what are the major things
link |
02:32:18.500
these changes about the internet?
link |
02:32:19.620
So social networks and then the creatives,
link |
02:32:21.620
like YouTube creators and all that kind of stuff.
link |
02:32:23.660
So let's talk about that.
link |
02:32:24.580
First of all, if Brave gets 95%,
link |
02:32:26.260
I'm gonna demand a recount, because I won't believe it.
link |
02:32:29.100
I don't know, I think we're trying to put things
link |
02:32:31.980
into web standards that can be standardized across browsers.
link |
02:32:34.980
So the main value of Brave will be the trust users have in us
link |
02:32:38.940
and our ability to give the best deal to users.
link |
02:32:41.340
So 70% of the gross ad revenue we give to the user.
link |
02:32:45.140
And if they go through that KYC process I mentioned,
link |
02:32:47.940
they can take it out.
link |
02:32:48.940
They can also give it back, they can take some out,
link |
02:32:50.620
give the rest back.
link |
02:32:51.460
They can add basic attention tokens to give back.
link |
02:32:54.660
Some of them turn off the ads,
link |
02:32:56.140
cause they just don't like ads,
link |
02:32:57.220
but they put in $20 a month.
link |
02:32:58.980
But I believe Zuko of Zcashframe does that.
link |
02:33:01.140
And that's very generous,
link |
02:33:02.060
because the browser is just anonymously
link |
02:33:04.100
based on his browsing, sort of keeping score
link |
02:33:06.260
on how much time he spent on this video, on that website.
link |
02:33:09.540
And if those sites verify in sort of a,
link |
02:33:13.260
like getting a domain certificate fashion,
link |
02:33:15.240
they can get paid, they can get part of his $20 a month.
link |
02:33:19.260
So that vision could go big.
link |
02:33:21.140
And if it does, I hope it's across multiple browsers.
link |
02:33:23.400
I don't know that they'll all compete well
link |
02:33:25.980
on the quality of the ads, the quality of the ad blocking
link |
02:33:29.020
and tracking protection.
link |
02:33:30.340
Those are subject to competition.
link |
02:33:31.860
It'll take a while to standardize them.
link |
02:33:33.380
But I think that would be a better world.
link |
02:33:35.380
It would have less counterparty risk,
link |
02:33:38.220
fewer fee takers in the middle, really just the browser.
link |
02:33:40.740
We're taking 30%, sort of the app store split.
link |
02:33:44.580
And if we get bigger, maybe we can take even less.
link |
02:33:47.420
Social networks, creators.
link |
02:33:49.540
If you look at YouTubers, a lot of them are the indies
link |
02:33:52.220
that are getting some size are getting sponsorship deals.
link |
02:33:56.700
They're using Patreon.
link |
02:33:58.840
They're encouraging people to subscribe
link |
02:34:01.420
and give them regular money through Patreon.
link |
02:34:04.300
But that's centralized through Patreon.
link |
02:34:06.080
So there's censorship hazards, there's a 5% fee.
link |
02:34:09.840
What if that were a web standard?
link |
02:34:10.960
What if Brave pioneered it first and we took 3%?
link |
02:34:14.500
And we did it in a way that was through your browser
link |
02:34:17.460
so we couldn't censor it.
link |
02:34:19.180
That's brilliant.
link |
02:34:20.220
Do you think it could be standardized across browsers?
link |
02:34:22.780
Can Internet Explorer come in again and...
link |
02:34:25.580
Yeah, protocols are easy to copy
link |
02:34:27.900
in that they're meant to be interoperable.
link |
02:34:29.500
So there's a risk there.
link |
02:34:31.100
And the loyal users might be tricked into leaving you.
link |
02:34:33.980
Or they might, because of that distribution power,
link |
02:34:36.180
you might end up getting stomped.
link |
02:34:38.260
I don't know, I can't predict the future.
link |
02:34:39.640
I think antitrust is back on the case finally in the US.
link |
02:34:42.300
And certainly in Europe, G Comp is doing its thing.
link |
02:34:45.420
So I'm hopeful that we'll have a period of innovation.
link |
02:34:48.820
People were talking, like Elizabeth Warren was talking
link |
02:34:50.620
about breaking up the tech companies very clearly.
link |
02:34:53.700
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
link |
02:34:58.400
to see they should do something more
link |
02:35:01.040
than just put privacy perfume on Chrome.
link |
02:35:03.380
They should maybe get rid of DoubleClick or something,
link |
02:35:05.300
divest something.
link |
02:35:06.700
I don't know, it might happen.
link |
02:35:07.780
So Brave might inspire Google to completely change
link |
02:35:10.380
the way they're doing things in the browser?
link |
02:35:11.420
They're already doing something,
link |
02:35:12.780
you may have read about called the Privacy Sandbox
link |
02:35:15.460
or Flock, which they have this bird metaphor going,
link |
02:35:20.020
Turtle Dove, Fledge.
link |
02:35:22.780
But these systems have been very Googley,
link |
02:35:25.860
kind of overengineered, and yet,
link |
02:35:27.820
depending on differential privacy,
link |
02:35:29.260
which has weakness over time, if you know how that works,
link |
02:35:31.420
it's kind of injecting noise to hide you in a crowd,
link |
02:35:34.260
but over time an adversary can pull you out of the crowd.
link |
02:35:37.660
This doesn't look like it's gonna become a standard.
link |
02:35:39.380
Like Apple, Brave, Mozilla, we're not gonna just say,
link |
02:35:42.740
oh, Google, you saved us.
link |
02:35:44.700
You've invented the Privacy Sandbox,
link |
02:35:46.060
so we'll all just adopt it.
link |
02:35:47.660
Not gonna be that easy.
link |
02:35:48.580
It's gonna be more like pieces of what we do in Brave,
link |
02:35:51.540
the synonymous ad matching or the blind signature
link |
02:35:54.420
cryptography we use to confirm the ad impressions.
link |
02:35:57.020
That's David Chow's invention.
link |
02:35:59.260
That could get standardized.
link |
02:36:00.340
In fact, some of that is being standardized.
link |
02:36:02.220
Even Google's in favor of so called trust tokens,
link |
02:36:04.460
which are Chowmian blind signature certs.
link |
02:36:07.460
But they're not using them for ad confirmations
link |
02:36:09.300
because they don't wanna blow up their own business.
link |
02:36:11.460
And they need to let some of the publishers they serve
link |
02:36:14.740
have other ad tech scripts on the page.
link |
02:36:17.340
And so they're kind of caught.
link |
02:36:18.620
And this is something I realized doing Brave.
link |
02:36:19.860
I thought, what's Google's innovators dilemma
link |
02:36:22.900
apart from just being mature and having trouble innovating?
link |
02:36:26.300
It's that they have come to depend on this ad tech system
link |
02:36:30.620
that has all these vendors that publishers rely on
link |
02:36:34.980
because publishers aren't technical enough.
link |
02:36:36.380
And I feel for the publishers,
link |
02:36:37.980
but I realized the users have to come first.
link |
02:36:39.900
And if you give the users a better browser that's faster,
link |
02:36:43.700
then you'll get enough users to give back
link |
02:36:46.220
or support publishers.
link |
02:36:47.700
The speed and the battery savings
link |
02:36:49.420
and the data plan savings are significant.
link |
02:36:51.140
There's so much bad JavaScript involved in ad tech
link |
02:36:53.340
that if you block it, you sort of chop off
link |
02:36:55.740
what's called the programmatic waterfall,
link |
02:36:57.500
which chains a bunch of requests.
link |
02:36:59.140
Yeah, that's one of the incredible things about Brave.
link |
02:37:01.220
I guess you're saying you should attribute it
link |
02:37:03.220
to the fact that the messy JavaScript, no offense.
link |
02:37:06.620
No offense.
link |
02:37:07.460
Not my solution.
link |
02:37:08.300
I mean, Brave just feels faster.
link |
02:37:13.900
Even then, I mean, Chrome was fast.
link |
02:37:16.420
One of the things that it was like impressive
link |
02:37:18.420
is it showed that browsers can be really fast
link |
02:37:21.620
and Brave is even faster than that, which is incredible.
link |
02:37:24.260
And it saves the network, which means data plan.
link |
02:37:26.940
It saves battery because the radio consumes your battery
link |
02:37:29.420
when it's running more to do those requests.
link |
02:37:31.140
And it's just stunning how many there are.
link |
02:37:32.940
Like some of my Google friends were like,
link |
02:37:34.600
oh, that's just that bad site.
link |
02:37:35.860
They'll fix it.
link |
02:37:36.700
And you actually do a survey of web pages
link |
02:37:38.580
that they're like mostly like that.
link |
02:37:40.340
I know Google engineers could make everything
link |
02:37:42.460
super efficient, but they can't,
link |
02:37:44.300
especially in antitrust court, do it.
link |
02:37:45.780
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.780
They're trying to pull publishers.
link |
02:37:53.460
They're like, oh, you poor publishers
link |
02:37:54.620
don't know how to make your pages fast.
link |
02:37:56.900
Put them on our AMP system.
link |
02:37:58.180
We'll give you extra placement in the search carousel.
link |
02:38:00.660
That's an antitrust problem for one.
link |
02:38:02.420
But it's also publishers we talk to hate it
link |
02:38:04.340
because it degrades their brand.
link |
02:38:06.020
Now they look like a gig writer wrote a piece
link |
02:38:08.020
that's got Google's framing an AMP URL on top of it.
link |
02:38:12.140
And they're trying to fix that too.
link |
02:38:13.340
But it just looks like Google's Borgifying
link |
02:38:16.340
all these publishers and they don't want to be plugged
link |
02:38:18.160
into the Borg cube.
link |
02:38:19.020
They want to build up their own brand and have loyal readers.
link |
02:38:22.040
So, you know, I'm in favor of giving the users power
link |
02:38:25.580
to help all the publishers and the little platoons
link |
02:38:28.740
and the creators.
link |
02:38:29.580
And so we talked about Patreon.
link |
02:38:30.860
What about social networks?
link |
02:38:31.980
Well, they're inherently like search, a global algorithm.
link |
02:38:35.420
You're trying to find friends of friends.
link |
02:38:37.100
You're doing the transitive closure of a graph
link |
02:38:39.340
induced by this friend of relation.
link |
02:38:41.700
But you should own your friend relation.
link |
02:38:45.320
You should own your posts.
link |
02:38:46.980
They shouldn't be owned by somebody else
link |
02:38:48.660
who can take them down or censor them.
link |
02:38:51.060
And your friend relations, you should be able
link |
02:38:52.540
to find those friends on other networks.
link |
02:38:54.220
And that's why I've tweeted about this.
link |
02:38:55.420
I haven't built it yet.
link |
02:38:56.700
What if the browser could keep track of those for you?
link |
02:38:59.740
What if the browser could maybe combine Facebook and Twitter
link |
02:39:03.500
and you could find your friends on both
link |
02:39:05.300
and you could have a sort of multi.
link |
02:39:06.780
So that relationship is not owned by Facebook or Twitter.
link |
02:39:09.900
It's owned by you through the browser.
link |
02:39:12.020
They'll have terms of use and they'll say they own it.
link |
02:39:14.020
But if they zap you on one and you're still on the other,
link |
02:39:17.000
your friends find you and the browser
link |
02:39:18.500
could preserve a combined view.
link |
02:39:20.820
You could resurrect almost across networks.
link |
02:39:23.800
It's something I wanna maybe quickly ask you about.
link |
02:39:26.600
On that front, there's been quite a lot of centralized,
link |
02:39:31.340
we talked about Wall Street Bets and then Robinhood.
link |
02:39:35.260
There's been centralized banning of different accounts
link |
02:39:39.300
and removing like Parler, for example, from AWS
link |
02:39:42.620
and this kind of overreach of centralized control.
link |
02:39:46.740
Is your hope that it's possible to,
link |
02:39:49.360
like what are your thoughts about that in general?
link |
02:39:51.300
And then is it possible to create tools
link |
02:39:54.480
that give individual people the power
link |
02:39:56.700
to fight back against overreach of such control?
link |
02:40:00.060
So we're talking about oligarchy, I do think.
link |
02:40:02.660
And if it controls a nation state, that's formidable.
link |
02:40:05.260
It's the tax and the police power, the military power.
link |
02:40:08.220
It means that you may have the great firewall of China.
link |
02:40:10.860
You may have people in China who are jailed
link |
02:40:13.380
because of their tweets, right?
link |
02:40:14.880
This is a serious threat.
link |
02:40:15.740
I can't minimize it or say that we'll win.
link |
02:40:18.240
I don't know how it's gonna go.
link |
02:40:19.980
But I do think, like I said earlier
link |
02:40:21.660
about the kind of reason people find ways around things.
link |
02:40:24.000
The internet routes around censorship.
link |
02:40:25.820
And this is not to endorse any particular bad faction.
link |
02:40:28.820
One of the things that happens
link |
02:40:29.900
when you try to wave the free speech flag too much,
link |
02:40:33.020
you say, I'm not gonna censor anything
link |
02:40:34.620
and you get colonized by terrible, terrible people.
link |
02:40:37.900
I don't care if you call them neo Nazis,
link |
02:40:39.820
some of them could be doing illegal things.
link |
02:40:41.840
And you don't want them colonizing
link |
02:40:44.020
because it'll ruin your reputation
link |
02:40:45.220
and destroy your business.
link |
02:40:46.380
So what you really want is that kind of
link |
02:40:48.740
user first subsidiarity, that subjectivity.
link |
02:40:51.580
I want my social networks to be composited
link |
02:40:55.320
in some multi social user interface
link |
02:40:57.100
where I don't lose track of people across networks.
link |
02:40:59.420
And if they leave one or they get banned from one,
link |
02:41:01.620
I can find them on another,
link |
02:41:02.520
I can still sort of thread them together.
link |
02:41:04.360
That's brilliant.
link |
02:41:05.200
And this didn't happen because browsers
link |
02:41:07.740
got captured by the central powers.
link |
02:41:10.060
Why did they get captured?
link |
02:41:10.900
Mostly because of search.
link |
02:41:11.900
And search is a central algorithm.
link |
02:41:13.740
So Larry Page said this too many years ago.
link |
02:41:15.620
He said, with search, you're giving up a little privacy
link |
02:41:17.960
by handing the query over to us.
link |
02:41:19.820
And we'll error correct it.
link |
02:41:21.460
Alan used to be a Google executive.
link |
02:41:24.340
He said, oh yeah, we used to laugh.
link |
02:41:25.600
They'd all be doing typos and they'd be typing
link |
02:41:27.480
the wrong word.
link |
02:41:28.320
And we'd be like, no dummy, type that query.
link |
02:41:29.760
And it's like, okay Google,
link |
02:41:31.340
might want to dial back that ego a little bit.
link |
02:41:33.060
But yes, you do see all the queries
link |
02:41:35.260
and you can improve them and you can find the best results.
link |
02:41:37.340
And that was Google's forte.
link |
02:41:38.900
When we did the Firefox deal in 2004,
link |
02:41:40.580
Google was really good.
link |
02:41:42.380
And over time, SEO, which is an adversarial game,
link |
02:41:46.260
and Google itself buying all these companies
link |
02:41:48.580
and crowding its own results page
link |
02:41:50.100
with its own tied in stuff.
link |
02:41:53.160
The YouTube.
link |
02:41:54.000
It's a slippery slope that happens
link |
02:41:55.260
when you have control over these kinds
link |
02:41:58.380
of really important mechanisms.
link |
02:42:00.020
Yeah, monopoly capitalism or cartel.
link |
02:42:02.140
You get this with the Robin Hoods and the hedge funds.
link |
02:42:05.300
You get sort of the money interests take over
link |
02:42:07.940
and kind of abuse their power and wear out their welcome.
link |
02:42:10.100
So how do you get around that?
link |
02:42:11.940
You have to have either new land to go to,
link |
02:42:15.380
which some people's ancestors, not mine,
link |
02:42:18.220
did to found the country.
link |
02:42:20.820
I'm mostly Irish, German.
link |
02:42:22.780
You have new virtual space people go to
link |
02:42:26.020
and that requires an ISP or a colo center
link |
02:42:30.300
or Amazon to host you.
link |
02:42:32.060
It requires domain name registrar who will not strike you.
link |
02:42:35.980
And so when Parler was taken down,
link |
02:42:39.580
I thought that was egregious.
link |
02:42:40.860
Parler, it was not well designed
link |
02:42:42.980
and I tried it out because I tried all these things,
link |
02:42:45.900
but I didn't use it.
link |
02:42:46.740
And I also felt they were being unfairly scored
link |
02:42:49.380
for not moderating because you can find tweets to this day
link |
02:42:51.780
that are horrendous and threaten all sorts of violence.
link |
02:42:54.640
Whereas Twitter, why isn't Twitter being taken down?
link |
02:42:56.700
But so it was very selective.
link |
02:42:57.640
It was the insiders who have the power
link |
02:42:59.900
are gonna take out the newcomer.
link |
02:43:01.660
And it looked bad, sort of like the hedge funds,
link |
02:43:05.380
shorting GameStop, looked bad.
link |
02:43:08.060
You're seeing a piece in Time Magazine this week
link |
02:43:10.060
that's like basically saying,
link |
02:43:11.340
yeah, we interfere with the election,
link |
02:43:12.660
but it was great, aren't we good?
link |
02:43:14.580
I don't know if you've seen this piece yet.
link |
02:43:16.620
If you tried to say that as a Trump supporter
link |
02:43:18.980
in November after the election,
link |
02:43:21.500
you'd get banned from Twitter.
link |
02:43:22.900
But now Time in its Twitter account is saying,
link |
02:43:25.980
we saved the day, it's AFL, CIO and big business,
link |
02:43:30.260
the Better Business Bureau got together
link |
02:43:32.060
and kept Trump from spreading fake news.
link |
02:43:34.980
So the country's kind of broken.
link |
02:43:36.860
I don't know how to fix that.
link |
02:43:37.820
The oligarchs have run wild in my opinion.
link |
02:43:40.180
And big tech is in the antitrust dock.
link |
02:43:42.780
What's gonna happen?
link |
02:43:43.740
I don't think they get out.
link |
02:43:44.780
I think some of the DOJ and certainly the state cases,
link |
02:43:47.900
because they're separate cases,
link |
02:43:49.060
are not gonna go away just
link |
02:43:50.100
because somebody got elected differently.
link |
02:43:52.420
And these are career prosecutors
link |
02:43:53.900
and they have a strong case.
link |
02:43:55.940
And Google's smart.
link |
02:43:56.780
And Microsoft almost got split up, right?
link |
02:43:59.620
The judge, Thomas Penfield Jackson, he overreached.
link |
02:44:02.780
He didn't hold a hearing about the remedy.
link |
02:44:05.020
He just said, I'm gonna break you up.
link |
02:44:06.820
And Microsoft appealed and the higher level court said,
link |
02:44:10.580
go back and figure this out.
link |
02:44:11.660
You're not breaking them up.
link |
02:44:12.480
You didn't even hold a hearing.
link |
02:44:13.700
And when they got back, Microsoft said,
link |
02:44:15.460
let's settle, let's settle, we don't wanna get broken up.
link |
02:44:17.660
Because Jackson was gonna make the Opsco,
link |
02:44:20.500
the operating system company,
link |
02:44:21.620
and the Appsco office, you know, Word and Excel.
link |
02:44:24.780
And that would have been a huge blow to Microsoft, so.
link |
02:44:28.500
But ultimately, I don't know if you're optimistic
link |
02:44:31.140
or cynical about the possibility of breaking up big tech.
link |
02:44:34.540
To me, I'm optimistic that tools like Brave,
link |
02:44:40.060
I love the idea of owning your friendships.
link |
02:44:42.100
Like users more and more owning the stuff
link |
02:44:44.660
is the only real way.
link |
02:44:46.460
Unfortunately, it's like the WallStreetBets subreddit
link |
02:44:48.540
is the only real way to fight decentralized power.
link |
02:44:51.100
You can't break them up with the regulation.
link |
02:44:52.700
It's very difficult.
link |
02:44:53.540
Certainly don't wanna wait for the law.
link |
02:44:55.220
Netscape was long dead or acquired by AOL
link |
02:44:57.660
and effectively dead.
link |
02:44:58.500
It was only Mozilla that returned Firefox to the market
link |
02:45:01.980
by the time that the US v. Microsoft case
link |
02:45:04.140
was finally settled and the penalties were put in place.
link |
02:45:07.180
And yet, antitrust has a role to play.
link |
02:45:11.020
Those penalties caused Microsoft
link |
02:45:12.660
to kind of turn away from the web.
link |
02:45:14.220
They did Windows Vista and they thought,
link |
02:45:16.060
the web's too painful.
link |
02:45:16.900
We got punished in court and we had to standardize things
link |
02:45:19.700
with those icky standards people.
link |
02:45:21.220
So they ran back to proprietary lock in
link |
02:45:23.460
and Windows Vista flopped.
link |
02:45:24.660
It was late, it was bloated.
link |
02:45:26.620
Longhorn, remember?
link |
02:45:27.700
Now, what I was gonna say, but Google's smart enough,
link |
02:45:30.340
they won't get split up.
link |
02:45:31.620
They'll split something out to get off the hook, I think.
link |
02:45:35.780
This is a complicated subject, but I myself was so,
link |
02:45:39.660
I decided to journey out from the world
link |
02:45:43.220
of being a researcher at MIT
link |
02:45:45.260
and potentially doing a startup myself.
link |
02:45:48.340
And I've been thinking of, you know,
link |
02:45:51.420
I wanted to come to Silicon Valley to do so.
link |
02:45:53.660
It's the land of the entrepreneur.
link |
02:45:55.780
And there's a lot of my friends,
link |
02:45:57.980
a lot of them are successfully,
link |
02:45:59.580
have been entrepreneurs themselves,
link |
02:46:01.380
have said, do not come to Silicon Valley.
link |
02:46:04.540
It'd be, you've started, you ran amazing teams of engineers.
link |
02:46:09.100
You started a lot of successful businesses.
link |
02:46:12.100
I wondered if you could comment on why a lot of people
link |
02:46:15.860
are leaving California.
link |
02:46:17.180
Is there something that could be fixed about California?
link |
02:46:19.780
If you were starting a business today,
link |
02:46:22.700
would you consider somewhere else,
link |
02:46:24.780
like Austin or some other place?
link |
02:46:27.300
Or is Silicon Valley still, is it just a little lull,
link |
02:46:30.660
everybody's being overdramatic during this particular year
link |
02:46:34.100
of the coronavirus and so on?
link |
02:46:35.820
I think, you know, even Austin's getting overheated, I hear.
link |
02:46:39.220
And I've had relatives and friends move to Texas
link |
02:46:42.420
within the last few months.
link |
02:46:43.260
So Texas as a whole is a big place.
link |
02:46:45.860
And, you know, people are moving to Florida.
link |
02:46:48.460
There's a big movement toward Miami,
link |
02:46:50.700
Peter Thielke, these people.
link |
02:46:53.260
The mayor has been very business friendly about it,
link |
02:46:56.260
which I think is just good politics.
link |
02:46:58.460
America is fundamentally a commercial republic.
link |
02:47:00.660
So you would think this would be what's happening.
link |
02:47:02.540
For a long time, California was the golden state.
link |
02:47:04.420
I came here in late 76 when I was a teenager.
link |
02:47:06.820
So it's in crushing debt due to the lockdowns.
link |
02:47:11.380
It's got the highest taxes.
link |
02:47:13.460
That's got to matter.
link |
02:47:14.500
People will do high taxes.
link |
02:47:17.640
It's got likely fires every year because of the deadfall.
link |
02:47:21.580
It's not global warming.
link |
02:47:22.780
It's because the forests weren't managed
link |
02:47:24.220
like they had been in the first part of the 20th century.
link |
02:47:28.140
Just, I would say corruption at all levels,
link |
02:47:31.100
especially up to the governor,
link |
02:47:32.260
who famously was eating at the French Laundry
link |
02:47:34.460
and claimed that the outside was inside.
link |
02:47:36.740
And they wore masks off and it was great.
link |
02:47:39.540
Do what I say, not what I do.
link |
02:47:42.300
Rules for thee, but not for me.
link |
02:47:45.380
When you see that in leadership,
link |
02:47:47.580
people either run or they get rid of the leadership.
link |
02:47:50.400
So there's a recall drive,
link |
02:47:51.420
which is about to reach the threshold.
link |
02:47:53.500
Or in the old days, they get their guns, right?
link |
02:47:56.140
You don't put up with this junk.
link |
02:47:57.580
But ultimately, the thing that made Silicon Valley
link |
02:48:00.700
a special place, it gave freedom to young kids,
link |
02:48:04.600
entrepreneurs, young minds, brave minds
link |
02:48:08.100
to think bold, to try different stuff.
link |
02:48:10.820
I mean, even if the taxes are high,
link |
02:48:12.940
so outside of financial stuff, outside of all of that.
link |
02:48:15.540
Housing's super expensive.
link |
02:48:16.980
Housing's super.
link |
02:48:17.820
So it's hard.
link |
02:48:18.820
Okay, everything about startups is hard.
link |
02:48:19.660
Peninsula was narrow and they didn't plan the roads, right?
link |
02:48:22.820
Yeah.
link |
02:48:23.660
They got rid of public transportation in LA,
link |
02:48:26.020
like the Who Framed Roger Rabbit cartoon show.
link |
02:48:28.260
They used to have trolley cars in Portland too.
link |
02:48:30.860
The oil companies and the DOD conspired to build highways
link |
02:48:34.300
and make cars dominant.
link |
02:48:35.660
And the rights of way are long gone.
link |
02:48:37.420
Like Elon's gonna go underground.
link |
02:48:39.740
And I wish him well.
link |
02:48:40.740
That's probably the only way to do it now.
link |
02:48:42.780
But is it still a place,
link |
02:48:44.820
do you think it's possible that Silicon Valley
link |
02:48:46.500
is still a place where magic happens?
link |
02:48:48.180
Where the next Google's built?
link |
02:48:49.500
Where the next, I mean, Brave is built where?
link |
02:48:53.580
I think all good things come to an end.
link |
02:48:54.900
I think the problem is Silicon Valley
link |
02:48:56.660
had strong network effects through Stanford,
link |
02:48:58.820
through the angel investor networks and the wealth effect.
link |
02:49:02.300
And originally you have to give the federal government credit
link |
02:49:05.220
like the ARPANET was a government project.
link |
02:49:07.300
Let's not kid ourselves.
link |
02:49:08.140
This wasn't wild free market, libertarian capitalism.
link |
02:49:11.180
This was all Cold War stuff.
link |
02:49:14.020
You had out of the academia, you had Shockley
link |
02:49:17.060
and then the Traders Aid and Fairchild and Intel.
link |
02:49:21.060
But now, when's the last fab that was built in the Valley?
link |
02:49:25.040
MicroUnity might've been the last, I don't know.
link |
02:49:26.880
I haven't followed.
link |
02:49:27.720
We built a fab in Sunnyvale and MicroUnity
link |
02:49:31.340
in starting early 90s.
link |
02:49:33.300
And now the fabs are overseas.
link |
02:49:36.600
And the one thing that I would say
link |
02:49:38.820
that the oligarchs have intentionally done
link |
02:49:40.640
in both parties is sort of labor
link |
02:49:44.220
and environmental protection law arbitrage
link |
02:49:46.180
by going where the labor is cheaper
link |
02:49:47.580
and the environmental laws aren't as strict.
link |
02:49:49.460
And that's polluted the hell out of parts of China,
link |
02:49:52.020
but it's made things, you can make cheaper junk.
link |
02:49:54.940
And this is not a story that's over yet.
link |
02:49:58.900
So what is Silicon Valley for now?
link |
02:50:00.740
It's for the network effect, the brain trust
link |
02:50:03.300
of who you know, the parties, the Stanford sort of network.
link |
02:50:09.500
That's fragile too over time, I'm afraid.
link |
02:50:11.860
Stanford, a lot of good professors are like,
link |
02:50:16.100
they still filter mainly based on socioeconomic status,
link |
02:50:19.900
but it's kind of a skate school.
link |
02:50:22.180
I had a friend hired out of Harvard 20 years ago at Netscape
link |
02:50:26.980
and we talked about Harvard and he said,
link |
02:50:28.860
yeah, there's still professors who do great on the curve.
link |
02:50:30.700
And I said, oh yeah, I don't think they're any doing that
link |
02:50:32.340
at Stanford anymore.
link |
02:50:33.180
And he said, yo, it was shocking.
link |
02:50:35.100
Some of the students got Cs and Ds and they were crying.
link |
02:50:37.700
It's like, yes, that's right, the precious deers
link |
02:50:39.620
can't take that at Stanford, so they get As and Bs.
link |
02:50:42.420
Now you look at China and people say what you all about China,
link |
02:50:46.260
they prove Russia too, a lot of math science training,
link |
02:50:49.700
a lot of engineering, a lot of people who are doing
link |
02:50:52.540
their coursework to get the As and the Bs.
link |
02:50:55.220
So I'm an American, I'm born on the 4th of July.
link |
02:50:59.940
American, yeah.
link |
02:51:00.780
4th of July, wow.
link |
02:51:02.100
And America, as I say, fundamentally
link |
02:51:03.940
is a commercial republic.
link |
02:51:04.860
You can try to make it something else.
link |
02:51:06.340
You can say it's the new Atlantis and mystify it.
link |
02:51:09.020
You could talk about it in a more, I think, correct way,
link |
02:51:11.260
which is 13 colonies that grew and then there's a lot
link |
02:51:13.780
of local or original design anyway,
link |
02:51:16.740
the federalist papers talk about this,
link |
02:51:18.820
there's a lot of subsidiarity,
link |
02:51:20.660
but that's been eroded over time.
link |
02:51:23.940
And like I say, a lot of the offshoring is hurt.
link |
02:51:26.660
So what happened with coronavirus?
link |
02:51:28.860
People working from home, and at first it was funny
link |
02:51:30.940
because I have friends at Google who used to grumble
link |
02:51:33.540
that not only did they have to come into the office,
link |
02:51:35.420
if they joined a different team that was centered
link |
02:51:37.340
in a different office, they had to move.
link |
02:51:39.100
Or if the VA team was reconstituted in Munich,
link |
02:51:43.060
which it was after Lars Bock just got tired of JavaScript,
link |
02:51:46.700
that they hired in Munich or they hired PhDs
link |
02:51:48.780
in Germany and moved them to Munich.
link |
02:51:50.780
With coronavirus, everyone's working from home
link |
02:51:52.300
and it's like, what a relief, I can work for Google
link |
02:51:53.940
from home.
link |
02:51:54.820
But then the next shoe dropped and people started asking
link |
02:51:57.220
Mark Zuckerberg, hey, can I move to my hometown
link |
02:52:00.460
in the Midwest?
link |
02:52:01.580
And he said, okay.
link |
02:52:02.420
And they said, oh, can I keep getting my Silicon Valley pay?
link |
02:52:05.100
No.
link |
02:52:06.660
We're gonna figure out what your cost of living there is
link |
02:52:08.500
and we're gonna adjust your pay accordingly.
link |
02:52:10.300
And these colonies and these little mini experiments
link |
02:52:13.020
that all combine to the big giant experiment,
link |
02:52:15.140
I have a, I don't know, I have this vision of America,
link |
02:52:20.060
which the country, I was born in Russia, like I said here,
link |
02:52:22.180
and this is truly a wonderful country.
link |
02:52:24.980
I wasn't born on the 4th of July, but I might as well be.
link |
02:52:27.500
People still flee here.
link |
02:52:28.340
I still, and I'm a red blooded American at this point.
link |
02:52:31.740
And I have a sense that we figured it out somehow.
link |
02:52:35.420
If Silicon Valley burns, another place will come up
link |
02:52:37.940
in this place that even more innovation and people will move
link |
02:52:42.020
and the remote work might change fundamentally how we work
link |
02:52:46.460
or it might not.
link |
02:52:47.300
It might just give you the freedom to then create
link |
02:52:49.540
many other small Silicon Valleys throughout the place,
link |
02:52:52.220
like Austin included, but other places as well.
link |
02:52:54.940
And we somehow figured it out and...
link |
02:52:58.540
I think that's true that there will be more mobility
link |
02:53:01.660
and maybe new places that come up.
link |
02:53:03.460
I don't know if Silicon Valley has passed some sell by date
link |
02:53:07.940
because it did hurt.
link |
02:53:10.820
The coronavirus hurt, the lockdowns hurt in the sense
link |
02:53:13.420
that part of what keeps things going is social.
link |
02:53:15.860
And so a lot of young people, even before coronavirus,
link |
02:53:18.300
moved to San Francisco.
link |
02:53:19.660
It was very strange to watch because in the 80s,
link |
02:53:21.660
we all lived in the Valley and it was less populated
link |
02:53:24.860
and San Francisco was grungier.
link |
02:53:26.060
It was more like Dirty Harry in the 70s.
link |
02:53:28.620
But by the 90s, and Jamie runs a nightclub there
link |
02:53:31.660
and he's talked about this, you had sort of wealthy
link |
02:53:33.780
tech people moving in south of market,
link |
02:53:36.100
fancy townhouses being built.
link |
02:53:37.780
And that's continued in such a point that it's almost like,
link |
02:53:41.020
what's the movie by the South African director Nils Jody
link |
02:53:43.540
Foster up in the space colony?
link |
02:53:46.020
Matt Damon is the guy on the earth who has to go
link |
02:53:48.180
up and anyway, it's about the stratification.
link |
02:53:50.540
It's about the great inequality that people
link |
02:53:52.060
in the space station have like amazing medical auto docs
link |
02:53:55.540
that can extend their life or save them cure cancer.
link |
02:53:57.940
People on earth are all suffering ground down in poverty.
link |
02:54:02.820
And that sort of happened while I was here.
link |
02:54:06.260
You saw a lot of money drive prices up
link |
02:54:10.660
along the narrow peninsula and the single people
link |
02:54:12.540
wanted nightlife so they were in the city
link |
02:54:14.540
and the condos in the city got super expensive.
link |
02:54:16.700
And I know even Google friends who are socially responsible
link |
02:54:20.660
say we should have more housing built.
link |
02:54:22.820
We should have yes in my backyard, not in my backyard.
link |
02:54:25.860
But that's not happening as far as I can tell.
link |
02:54:28.460
And from the government to the incumbent landowners
link |
02:54:32.540
and renters, it's just not happening.
link |
02:54:34.500
And that has to drive people away.
link |
02:54:37.500
I appreciate that people come here and you should wait
link |
02:54:40.500
for the prices to moderate, they will.
link |
02:54:42.620
But a lot of people are gonna go where the prices are lower.
link |
02:54:47.360
You, and sorry for silly questions here,
link |
02:54:50.340
but just looking back, you have created things,
link |
02:54:54.380
have been part of creating things
link |
02:54:56.540
that have transformed this world, the world of technology,
link |
02:55:00.740
perhaps more than almost anything else.
link |
02:55:04.820
But you're still a human being
link |
02:55:07.580
and unfortunately this ride ends.
link |
02:55:10.900
Do you ever think about your own mortality?
link |
02:55:13.780
Not too much, I mean, I'm a Roman Catholic
link |
02:55:17.460
so I am not afraid of death.
link |
02:55:19.220
I think a lot of people who have problems with death
link |
02:55:25.140
are suffering from some lack of either faith
link |
02:55:30.700
in their transcending death or maybe they don't have
link |
02:55:33.380
children or they feel like they get later in life
link |
02:55:37.260
and they feel like they've missed opportunities
link |
02:55:39.220
to do something that endures.
link |
02:55:40.620
And I sympathize with a lot because I'm old,
link |
02:55:43.540
I got married fairly old, so I understand all that.
link |
02:55:46.440
Nothing human is alien to me as Terrence said.
link |
02:55:50.820
But I don't fear it, no.
link |
02:55:54.100
What do you hope your legacy is?
link |
02:55:56.300
Yeah, it's gonna be JavaScript.
link |
02:55:57.740
I think, no, I think my legacy has more to do
link |
02:56:01.100
with my children and their children.
link |
02:56:03.540
I think it also has to do with web standards,
link |
02:56:06.460
it has to do with things like Brave,
link |
02:56:08.340
the things we did with Firefox.
link |
02:56:10.060
When we did, I'm not gonna oversell Brave
link |
02:56:13.100
but I think Brave is important and we'll continue
link |
02:56:15.140
to prove this in a way that counts
link |
02:56:16.780
for many decades to come.
link |
02:56:18.120
But even Firefox, whatever its future fortune,
link |
02:56:21.420
showed you can restart the browser market.
link |
02:56:23.300
This thing you said about people opting out
link |
02:56:26.180
and routing around, you don't need everybody to do that.
link |
02:56:28.600
It's more like Taleb's stubborn minorities that do that.
link |
02:56:31.220
It's the lead users, Erfron Hipple's lead users.
link |
02:56:33.640
You can be a few percent, you can tilt the market.
link |
02:56:36.100
And that can be done in spite of the incumbents,
link |
02:56:39.380
of moneyed interests not being in favor of what you're doing.
link |
02:56:41.540
So I think what we do with Firefox won't be forgotten
link |
02:56:45.260
and it needs to be done more and we're doing it with Brave.
link |
02:56:47.140
And you could argue that other projects are doing it.
link |
02:56:48.780
In some ways, blockchain is doing it.
link |
02:56:50.780
The Robinhood, take down the use of Robinhood
link |
02:56:56.100
by the Wall Street Bets kids, similar.
link |
02:56:59.100
So yeah, that kind of spirit endures.
link |
02:57:01.300
And I think it, in some ways it's American, right?
link |
02:57:04.180
It's not hard revolutionary.
link |
02:57:06.540
It's not trying to burn the past and destroy everything.
link |
02:57:08.780
It's more like we have these certain, let's say rights.
link |
02:57:15.140
We have duties too.
link |
02:57:16.180
So there's some debate about which comes first
link |
02:57:17.780
in American jurisprudence and the founding documents.
link |
02:57:20.360
But as long as things are working,
link |
02:57:23.020
we'll be like pragmatic Americans,
link |
02:57:25.900
like de Tocqueville described in his writings.
link |
02:57:29.300
But if things get too out of whack for one reason or another,
link |
02:57:32.620
too unequal, too oligarchic and abusive,
link |
02:57:35.540
we're gonna start our rights.
link |
02:57:37.060
And even a few of us can do it.
link |
02:57:38.860
And even in the American Revolution,
link |
02:57:40.460
it was the minority who fought and put their lives,
link |
02:57:44.100
treasure and sacred honor at stake.
link |
02:57:45.620
It was a bunch of people went to upper Canada,
link |
02:57:48.860
I think it was called, Ontario.
link |
02:57:51.140
Yeah, that's the beautiful, I mean,
link |
02:57:52.860
that is at the core where your work stands for
link |
02:57:55.100
is that a few people can have the power
link |
02:57:58.180
to transform society with just a few radical ideas,
link |
02:58:01.580
with just a little bit of code, change the world.
link |
02:58:04.580
Gotta do it.
link |
02:58:05.420
And that's empowering.
link |
02:58:06.240
That is the American way.
link |
02:58:07.220
That's why this country is, I believe,
link |
02:58:09.380
the greatest country on Earth.
link |
02:58:10.460
That's not over, or Matt says it too much,
link |
02:58:13.040
but I think some special things
link |
02:58:15.900
have already happened in this country
link |
02:58:17.580
and will continue to happen.
link |
02:58:18.800
And that's really exciting.
link |
02:58:19.640
And that spirit can continue no matter who comes here.
link |
02:58:22.520
They can adopt those folkways and that spirit.
link |
02:58:25.520
Brandon, I can't tell you how much,
link |
02:58:27.580
I was freaking out how much of an honor it is
link |
02:58:29.540
to talk to you.
link |
02:58:30.380
You're an incredible human being.
link |
02:58:31.420
It's one of my favorite conversations ever.
link |
02:58:33.580
Thank you so much for wasting all this time with me.
link |
02:58:35.660
I really appreciate it.
link |
02:58:36.580
Oh, it seems like a breeze.
link |
02:58:38.060
My pleasure.
link |
02:58:39.740
Thank you for listening to this conversation
link |
02:58:41.380
with Brandon and Ike.
link |
02:58:42.580
And thank you to our sponsors,
link |
02:58:44.440
Jordan Harbert's Show, Sun Basket Meal Delivery Service,
link |
02:58:48.460
BetterHelp Online Therapy,
link |
02:58:50.260
and Eight Sleep Self Cooling Mattress.
link |
02:58:52.820
Click the sponsor links to get a discount
link |
02:58:54.860
and to support this podcast.
link |
02:58:57.060
And now, let me leave you with some words from Jeff Atwood.
link |
02:59:00.720
Any app that can be written in JavaScript
link |
02:59:03.700
will eventually be written in JavaScript.
link |
02:59:06.980
Thank you for listening and hope to see you next time.