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

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

Lex Fridman

AI-assisted summary of Brendan Eich: JavaScript, Firefox, Mozilla, and Brave | Lex Fridman Podcast #160 — original source. Check the original for full context.

Source published:

Detailed notes

## Detailed walkthrough ### [00:00](https://www.youtube.com/watch?v=krB0enBeSiE&t=0s) Introduction: Execution, Ideas, and Brendan Eich

Lex Fridman introduces Brendan Eich as the creator of JavaScript, the co-founder of Mozilla (which developed the Firefox browser), and the co-founder and CEO of Brave Software. He frames each of these achievements as revolutionary milestones in computing: JavaScript remains one of the world's most ubiquitous and impactful programming languages, Firefox introduced and popularized browser features that modern users now take for granted, and Brave seeks to transform web content monetization and privacy by returning control of personal data to individual users.

Before bringing on Eich, Fridman reflects on the recurring tension between theoretical concepts and practical engineering. Thinking through a thought he had posted on Twitter—that good execution matters more than a good idea—Fridman acknowledges that while a strong concept is necessary, ideas are abundant while relentless, high-level execution is exceptionally rare. Navigating the delicate convergence of timing, vision, and execution across multiple decades and separate projects is an accomplishment Eich pulled off repeatedly, prompting Fridman to conclude that “I'm starting to believe it's more art than science, like most interesting things in life.”

[01:53](https://www.youtube.com/watch?v=krB0enBeSiE&t=113s) Early Computing: From HP Calculators to Pascal and Niklaus Wirth

When asked when he first fell in love with programming, Eich looks back to his high school days. Although he was not coding heavily at the time, a friend owned a Commodore PET. After watching *Star Wars*, the pair decided to build a simple 2D graphics BASIC program that simulated the Death Star trench run. Being oriented toward mathematics and science, Eich assisted with the underlying calculations. During the early-to-mid 1970s, he became fascinated by Hewlett-Packard scientific calculators featuring Reverse Polish Notation (RPN). These machines were remarkably rugged and solid—recalling the villain from the James Bond film *Goldfinger*, Eich jokes they were "divinely heavy" and likely contained real gold metallization.

Eich initially set his sights on physics, inspired by science fiction visions of hyperdrives and warp drives. However, he soon recognized that 20th-century physics was not advancing rapidly enough to realize those concepts. While studying physics as an undergraduate at Santa Clara University, he began hacking on computers. He avoided punch cards because the science department did not require the Fortran card decks still used in the engineering wing, working instead with Pascal on DEC minicomputers alongside an early port of a portable C compiler. Eich became enamored with 1970s-era structured programming and procedural abstraction. He credits Pascal designer Niklaus Wirth at ETH Zurich as an exceptional writer and teacher who famously taught courses where students built a computer, compiler, and operating system from the ground up. Eich recalls hearing from former graduate students that Wirth would also jokingly torture his classes, including imposing a custom email system with a strict 25-word limit per message.

[04:12](https://www.youtube.com/watch?v=krB0enBeSiE&t=252s) The Algol Lineage, Wire-Wrapping, and Hardware Architecture

Discussing Pascal's characteristics, Eich explains that it stems from the Algol family tree that dominated 1960s compiler and language research. Unlike its overly ambitious successor Algol 68, Pascal maintained a verbose syntax that strictly separated functions that returned values from procedures that merely computed state without returning values. The broader Algol lineage fed into Ada, while Pascal enjoyed an enduring second life via Borland's Turbo Pascal. That compiler's success was spearheaded by Anders Hejlsberg, who later joined Microsoft to lead the development of C# and TypeScript.

```mermaid flowchart LR accTitle: Lineage of Algol and Pascal to Modern Languages accDescr: Flowchart illustrating the evolution from Algol to Pascal, Turbo Pascal, and modern systems like C-sharp and TypeScript. subgraph Early["Early Structured Languages"] ALG["Algol 60"] --> PAS["Pascal (Niklaus Wirth)"] ALG -.-> A68["Algol 68"] end subgraph Evolution["PC Era & Borland"] PAS --> ADA["Ada"] PAS --> TP["Turbo Pascal (Anders Hejlsberg)"] end subgraph Modern["Modern Microsoft Ecosystem"] TP --> CS["C#"] CS --> TS["TypeScript"] end ```

Simultaneously, Eich was drawn into the Unix and microprocessor revolution. Silicon Valley hobbyists were bringing Unix up on hand-built machines. Eich wire-wrapped a Motorola 6809 board for an engineering course and set out to build an ambitious board capable of running Unix. However, he gambled on the National Semiconductor NS16032, a complex instruction set computer (CISC) chip that was delayed, bug-ridden, and never fabricated cleanly. As the mid-1980s approached, the industry debate shifted toward reduced instruction set computers (RISC), which ultimately reshaped microprocessors into superscalar pipelines with wide internal micro-instructions while maintaining instruction-level backward compatibility, as Intel did with the x86 line. Realizing that the computer industry was moving at an exhilarating pace with the Apple II, the IBM PC (8088/8086), and Microsoft's operating system deal, Eich left physics after three years to complete a degree in mathematics and computer science.

- Eich's friends built custom wire-wrapped systems using Motorola processors such as the 68020. - Eich attempted to target the National Semiconductor NS16032 for his personal Unix port, but the chip's severe hardware bugs prevented it from ever functioning reliably. - CISC versus RISC debates eventually merged into hybrid superscalar designs, where CISC instructions are decoded into internal RISC-like operations or Very Long Instruction Word (VLIW) micro-architectures.

[06:46](https://www.youtube.com/watch?v=krB0enBeSiE&t=406s) Physics, Theory vs. Experiment, and Models Over Reality

Reflecting on his departure from physics, Eich reveals that he was one of three brothers who all attended the same grade at school—his twin and a younger brother who had skipped second grade to catch up with them. His younger brother went on to study under theoretical physicist Kip Thorne at Caltech, yet he too eventually transitioned into software engineering. When Fridman asks whether it is saddening that theoretical physics has lacked foundational experimental breakthroughs despite decades of string theory, Eich responds firmly that the discipline has become top-heavy with unanchored abstractions: “I would say, you know, we need more Aristotle and less Plato.”

Eich argues that mathematics is not synonymous with the physical universe because vast swaths of mathematical structures cannot be physically realized. Without empirical experiments, theorists fall into generating sprawling inductive models that compete with one another with no ground truth to arbitrate between them aside from personal taste, which he views as a dangerous guide for science. He contrasts modern theoretical malaise with the pre-World War II golden era in Germany, where figures like Albert Einstein and Erwin Schrödinger anchored bold hypotheses in observational reality. Eich cautions that this tendency—favoring internal model elegance over empirical validation—has infected fields ranging from economics to epidemiology, where models risk turning into untested policy tools. Fridman echoes this dilemma within machine learning and software, noting the constant philosophical tension between the mathematical neatness of theoretical computer science and the messy, data-driven trial-and-error that actually drives empirical breakthroughs.

[10:00](https://www.youtube.com/watch?v=krB0enBeSiE&t=600s) Theoretical Complexity, Quantum Scaling, and Engineering as Art

Lex Fridman asks Brendan Eich whether the theoretical space of computer science—such as P versus NP and computational complexity classes—holds real interest for someone with a background in mathematics and computer science who ultimately built some of the most impactful software in the world. Eich responds that while those concepts are intellectually stimulating, they are rarely useful in everyday practice. Instead, they primarily appear in cryptanalysis or asymptotic debates over quantum-resistant cryptography, which itself faces unresolved physical constraints. Eich points to physicists Mikhail Dyakonov and Gil Kalai, who raise serious doubts about whether quantum computing will ever scale up practically.

```mermaid flowchart LR accTitle: Practical Computing Spectrum accDescr: Spectrum moving from theoretical complexity to engineering and human art. subgraph Theory["Theory (Low Daily Impact)"] A["P vs NP & Asymptotics"] B["Quantum Scalability Debates"] end subgraph Engineering["Applied Engineering (High Impact)"] C["Practical Systems"] D["Human-Facing Art & UI"] end Theory -.-> Engineering ```

When Fridman asks if quantum computing occupies his thoughts, Eich explains that it is strictly a spare-time interest. He emphasizes that the overwhelming majority of work today is applied engineering: figuring out how to make computers genuinely useful to people. That process spans aesthetic and design problems that cannot simply be automated. Eich notes that while machine learning can be trained to compose music that sounds reasonably decent, it inevitably lacks that intangible *je ne sais quoi*. User interfaces and human interactions, he argues, remain fundamentally an art form rather than a neat theoretical science.

[11:47](https://www.youtube.com/watch?v=krB0enBeSiE&t=707s) Microprocessor Frontiers at Micro Unity

Turning toward systems that defied clean theoretical models, Fridman brings up the origin story of JavaScript—a language that reshaped the world despite being heavily debated. Eich traces his journey back to his seven years at Silicon Graphics (SGI) after graduate school. As SGI expanded, it grew increasingly divisionalized and political, which Eich found boring. In search of a dynamic environment, he was recruited by his former SGI colleague Jeff Weinstein to join Micro Unity Systems Engineering, one of the ambitious "super startups" of the early 1990s (comparable in scale to General Magic).

Micro Unity operated like an ultimate "pretend grad school" because it attempted to build an entire hardware and software stack from scratch. The company designed its own semiconductor fabrication plant, created novel analog and digital circuits on a massive five-centimeter chip, and cooled its initial prototype with water because it ran so hot as a potential "Cray killer." When that proved unwieldy, the company pivoted toward a home media processor—a barrel processor architecture designed for set-top boxes. The economic goal was to save cable operators the massive expense of "rolling the trucks out" to replace inferior General Instrument hardware by substituting software-upgradable set-top boxes that could handle new features through code rather than hardware swaps.

- Micro Unity's engineering stack relied on GCC, C, and C++. - The team designed custom short vector instructions, wide multiple-issue instructions, bit shufflers, and permuters in silicon. - The hardware ran direct analog-to-digital (A/D) conversions into memory buffers, executing QAM (quadrature amplitude modulation) demodulation, framing, Reed-Solomon, and Viterbi error correction entirely in software.

[14:14](https://www.youtube.com/watch?v=krB0enBeSiE&t=854s) The Networking Wars and Netscape's Ascent

Despite the technical brilliance at Micro Unity, Eich realized the venture was taking on far too many simultaneous risks to survive in the market. When Eich eventually transitioned to Netscape in April 1995 after three years at Micro Unity, SGI founder Jim Clark articulated the flaw in Micro Unity's strategy: “Oh yeah, you do 10 things, each one-in-10 odds, it's going to be 1 in 10 billion.” By that time, Netscape was already rocketing upward, having launched in 1994, with its landmark initial public offering set for August 1995.

Eich explains the historical landscape that set the stage for the Web. Throughout the 1980s at SGI, proprietary network stacks like IBM's SNA and DECnet vied for dominance, with vendors promising either a proprietary win or a permanently fractured, heterogeneous landscape. Instead, the open Berkeley UNIX implementation of the ARPANET-derived TCP/IP protocol suite won outright. By the early 1990s, the internet existed as an assortment of text-heavy tools: email, USENET via NNTP, and FTP. Tim Berners-Lee had introduced the World Wide Web around 1989, but Eich only took notice of its disruptive potential in 1993 with the appearance of the NCSA Mosaic browser, developed by Marc Andreessen and Eric Bina.

[16:11](https://www.youtube.com/watch?v=krB0enBeSiE&t=971s) The NCSA Mosaic Breakthrough and "Worse is Better"

The turning point for the Web came when Marc Andreessen and Eric Bina decided to break from standard academic protocol and innovate unilaterally on HTML. Andreessen sent an email to the developer community proposing an `<img>` tag to allow inline images directly within a webpage; by the time he sent the note, Bina had already implemented the code in Mosaic. Eich recalls discussing this decades later with Tim Berners-Lee, who remarked that his group had envisioned a different method for multimedia. But Berners-Lee’s alternative never gained traction because Andreessen had already shipped working code in Mosaic.

This convinced Eich of a primary rule of networked platforms: massive first-mover advantage rewards speed and practical execution over formal perfection. Eich draws on the classic 1989 essay "Worse is Better" by Lisp hacker and poet Richard Gabriel (founder of Lucid, where Jamie Zawinski worked before Netscape). Gabriel framed the debate through the historical clash between the pristine, ivory-tower designs of MIT's Lisp and Scheme communities and the bare-bones, iterative hacking of Bell Labs' UNIX and C:

> “All the Lisp people, the MIT people were like, ‘Oh, you know, this is the crown jewel, right? Scheme, this Fabergé egg, or Common Lisp, this giant cathedral. Of course we're going to win, this is civilization. And those, you know, those farmers in New Jersey’—to borrow from *The Sopranos*—‘those hicks down at Bell Labs, they're just, you know, there's nothing sound there, it's all hacking.’ Well, guess what won.”

[18:14](https://www.youtube.com/watch?v=krB0enBeSiE&t=1094s) Biological Evolution and JavaScript's Web Compatibility

Eich links the success of fast, imperfect software directly to Darwinian natural selection. In biological evolution, advantageous alleles sweep through a population even if they bring baggage—much like the heterozygous advantage where a single copy of a sickle cell gene confers malaria resistance despite the harm of carrying two copies. Biological adaptation does not stop to construct an immaculate design; it preserves whatever functions well enough to survive at scale.

This evolutionary constraint shaped JavaScript's fate. Because Eich had to design and build JavaScript under extreme time pressure in 1995, early design mistakes became instantly entrenched through the immutable rule of web compatibility. Once millions of pages were authored to rely on specific browser behaviors, browsers could not introduce backwards-incompatible fixes without breaking the Web. Standardizing bodies attempted to refine the language, occasionally adding fresh mistakes of their own, but unlike traditional software compilers that can deprecate broken features, the Web was bound to its historical runtime. Eich notes that while programmers often sneer that JavaScript spread without pure intellectual merit, embracing the reality that “worse is better” was precisely what enabled the language to conquer the globe.

[19:34](https://www.youtube.com/watch?v=krB0enBeSiE&t=1174s) The "Worse is Better" Pressure and the Netscape Rocket Ship

Reflecting on the rushed creation of JavaScript and his subsequent twenty years working inside standards bodies to clean it up, Brendan Eich emphasizes that timing superseded perfection. Had he refused the task or demanded more runway, the web would not have stayed an open, neutral canvas; Microsoft would have simply filled the vacuum with its own proprietary tooling. As Eich explains, “I'm not saying that that was the best language, I'm just saying that was the right time to do it.” He notes that the pragmatic alternative to rushing was total abdication: “And I like to say the alternative was not to do it — I could have told Netscape 'I can't do this, it's too rushed,' and it would have been Visual Basic Script, it would have been bad.”

The frenetic development pace mirrored Netscape itself. Founded by Jim Clark and Marc Andreessen, the company released its first browser in 1994, explicitly positioning it to conquer Mosaic. The internal codename and mascot, Mozilla, was coined precisely as a blend of "Mosaic killer" and Godzilla. Rather than conducting detached academic research, the team moved at breakneck speed to supplant Mosaic by rapidly shipping practical, web-expanding capabilities: inline images, Eric Bina’s implementation of HTML tables in Netscape 1.1, client-side tiled window layouts known as frames and framesets, and native browser plugins to play video before technologies like Flash even existed.

This technical acceleration collided with explosive macroeconomic tailwinds. Following the severe early-1990s US recession, Federal Reserve Chairman Alan Greenspan lowered interest rates and stimulated the economy just as the commercial internet reached critical mass. Clark recognized the window and pushed for an aggressive, early initial public offering. Netscape's impending IPO ignited the dot-com boom, transforming the web from an obscure academic medium into a cultural phenomenon where everyday consumers saw URLs on billboards and rushed home to type them into their computers.

[22:06](https://www.youtube.com/watch?v=krB0enBeSiE&t=1326s) The Scheme Bait-and-Switch, Sun Microsystems, and the Microsoft Threat

Netscape was initially just a document reader, but Andreessen and the engineering core recognized that the web needed to become a fully programmable application platform. Eich was originally recruited to Netscape under the promise that he could implement Scheme—Guy Steele and Gerald Jay Sussman's elegant, minimalist dialect of Lisp—directly in the browser. His former colleagues from Silicon Graphics sold him on the vision, joking that it was an irresistible opportunity. Eich often illustrates this moment with a slide of Bruce Willis crawling through the air duct in *Die Hard*: “Come out to the coast, have a few laughs,” Eich chuckles, likening the pitch to being lured into unexpected chaos.

Upon arriving at Netscape, Eich discovered that the Scheme plan had been scrapped. Netscape had begun negotiating a landmark alliance with Sun Microsystems, driven in part by Sun co-founder and BSD Unix pioneer Bill Joy, whom Eich deeply respected. Joy shared the vision of making the browser programmable, but the primary corporate goal became embedding the Java Virtual Machine directly into Netscape. Doing so was a massive technical headache, especially on the prevailing 16-bit Windows 3.1 architecture, even as the industry braced for Windows 95 and the impending threat of Microsoft’s Internet Explorer.

Microsoft was already circling. After Netscape turned down an early, low-ball acquisition offer in late 1994—prompting Jim Clark and CEO Jim Barksdale to tell them to pound sand—Redmond pivoted to outright confrontation. Microsoft licensed Mosaic code from Spyglass, an NCSA spinout, to build Internet Explorer. Initially, Microsoft had pursued project "Blackbird," an effort to build a proprietary, closed dial-up service designed to rival AOL and CompuServe. However, Bill Gates quickly realized that proprietary networks could never match the open web's exponential scale. Gates penned his famous "Internet Tidal Wave" memo, redirected Microsoft's entire corporate strategy toward the web, and mobilized to clone Netscape's feature set. As Eich recalls, “And once we realized that, everybody inside Netscape felt even more urgency and more of a frenetic mood.”

```mermaid flowchart TD accTitle: Browser Programming Strategy accDescr: Divergence between high-end compiled Java components and glue scripting in Netscape.

subgraph SunAlliance["Sun & Netscape Alliance"] JavaVM["Java Virtual Machine<br>(Compiled / Heavyweight)"] Components["Engineered Components<br>& Complex Applets"] end

subgraph ClientScripting["Client Scripting Need"] Mocha["Mocha / LiveScript / JavaScript<br>(Dynamic / Scripting)"] GlueCode["Page Glue, Events, CPAs,<br>Designers & Amateurs"] end

JavaVM --- Components Mocha --- GlueCode Components <-->|"Heap Reflection & Interop"| GlueCode ```

[24:36](https://www.youtube.com/watch?v=krB0enBeSiE&t=1476s) The Two-Tier Vision: Java for Components, Mocha for the Masses

Despite the focus on Java, both Bill Joy at Sun and Marc Andreessen and Brendan Eich at Netscape recognized that a compiled, strictly typed language was inadequate on its own. Java was geared toward elite, expensive enterprise developers writing heavy-duty components. Drawing inspiration from Microsoft's successful pairing of C/C++ with Visual Basic, they realized the web needed a two-tier language model: - **Component writers:** High-priced software engineers crafting compiled, reusable code. - **Scripters:** Designers, certified public accountants, hobbyists, and non-professional amateurs writing lightweight code directly into web pages to glue components and HTML elements together.

Eich rejects the derogatory term "duct-tape language," preferring to view scripting as a democratic, accessible medium that enabled mass participation. Netscape needed this complementary scripting partner to prevent Microsoft's Visual Basic Script from capturing the authoring market when Internet Explorer 3 launched.

The branding of this companion language went through rapid churn: - **Mocha:** The original internal name coined by Marc Andreessen, which Eich liked. It was abandoned after corporate attorneys warned of potential software trademark conflicts. - **LiveScript:** The transitional moniker adopted briefly around August 1995. - **JavaScript:** The final trademarked name agreed upon with Sun Microsystems and announced officially in December 1995, leveraged purely as a marketing co-brand to ride Java’s promotional coattails.

[26:02](https://www.youtube.com/watch?v=krB0enBeSiE&t=1562s) Language Design Under Corporate Constraints: Making Scheme Look Like Java

When Eich joined Netscape in April 1995, the browser client engineering team had grown so fast that it lacked an open headcount requisition. Eich was placed on the server team for his first month, where he worked on early protocol foundations for HTTP/1.1. This drew on his deep systems background at SGI, where he had worked alongside Unix pioneer Greg Chesson hacking on network protocols, VLSI research, and the Unix kernel.

All throughout that month, Eich contemplated the syntax and architecture of the browser language he was slated to build. He briefly considered an approachable, natural-language syntax modeled after Bill Atkinson’s HyperTalk from Apple's HyperCard. However, Netscape engineering leadership, led by Vice President of Engineering Rick Schell, handed down a strict mandate: the language had to look like Java. Eich explains the management logic: “In a mature stack like Microsoft, you really benefit from having a scripting language like Visual Basic.” Because the browser language was conceived to operate in direct memory with Java applets, management required shared semantics, heap interoperability, and visual continuity: - C-style curly brace block syntax (`{... }`). - Distinct primitive data types separated from objects, replicating Java’s handling of strings, booleans, and double-precision IEEE 754 floating-point numbers. - Identical arithmetic, logical, and assignment expressions. - Java-style bitwise operators, including the unique unsigned right-shift operator (`>>>`), which Java had introduced to bypass its own lack of primitive unsigned integer types.

While management demanded that the surface syntax look like Java and C, Eich was determined to keep the underlying semantics functional. Operating under extreme time constraints, he set out to build a language that outwardly dressed like Java to satisfy corporate requirements, but secretly preserved the dynamic, first-class functional spirit of Scheme under the hood.

- Netscape hired Eich in April 1995; his initial HTTP/1.1 work drew on earlier networking and OS research with Greg Chesson at Silicon Graphics. - Java applets ran into severe practical constraints in 1995 because the runtime was difficult to embed cleanly into 16-bit Windows 3.1 environments. - The unsigned right-shift operator (`>>>`) preserved by Eich to mimic Java later became vital for low-level performance optimizations and typed array compilers in modern JavaScript engines. - The official naming sequence transitioned from Mocha in spring 1995 to LiveScript in August 1995, before culminating in the trademark license for JavaScript in December 1995.

[28:43](https://www.youtube.com/watch?v=krB0enBeSiE&t=1723s) First-Class Functions, the Event Loop, and the Single-Threaded Browser

Brendan Eich explains that although early JavaScript could not be as syntactically pure as Scheme, he insisted on bringing first-class functions into the language. Because early web browsers operated as single-threaded processes on Unix and Windows, they could not afford to block the user interface. As Eich points out, “in a single threaded world you cannot block the user interface so you have to use a callback and run later.” While Java possessed concurrency and multithreading primitives right from its inception, ordinary browser users and scripters were not equipped to manage locks, mutual exclusion, and concurrent threads. Eich avoided capturing full continuations via Scheme’s `call/cc`, choosing instead to implement downward-passed functional arguments that could cleanly invoke and receive callbacks.

```mermaid flowchart TD accTitle: Browser Event Loop and Execution Model accDescr: Flow diagram showing user interaction, network events, layout, rendering, and script execution inside a single-threaded browser loop. subgraph BrowserCore["Single-Threaded Browser Loop"] EL["Event Loop"] EV["Process Input & Network Events"] DOM["Reflect DOM / HTML Tables & Forms"] CSS["Compute Box Model & Layout"] JS["Execute JavaScript Event Handlers (onClick)"] end EL --> EV EV --> DOM DOM --> CSS CSS --> JS JS --> EL ```

The browser needed an event loop capable of servicing networking, parsing and laying out HTML, executing the early CSS box model to transform container widths into heights, and running scripts in response to user inputs. This design took inspiration from Apple’s HyperCard, which used an `on <event>` handler syntax. That direct lineage produced JavaScript’s familiar compound event names like `onclick`, `onmouseover`, and `onmouseout`. Because Java was confined to an external plug-in container, it could never live directly on the browser's main thread or manipulate document objects, tables, and forms with low-overhead nesting. Eich notes that this fundamental architectural limitation meant “java was in this plug-in prison it essentially was confined to a rectangle the applet rectangle.”

- Single-threaded execution forced non-blocking callback architectures decades before async became ubiquitous. - Java took until Java 7 or Java 8 to incorporate true first-class lambdas. - LiveConnect was built in 1996 by intern Nick Thompson (a friend of Eich from SGI and CMU) to bridge Java and JavaScript heaps, but JavaScript remained in the driver’s seat.

---

[31:26](https://www.youtube.com/watch?v=krB0enBeSiE&t=1886s) The Downfall of Java Plug-ins and the Accidental Birth of XHR

Sun Microsystems miscalculated its browser strategy by treating Netscape simply as a distribution channel to install the Java runtime, showing little interest in integrating with browser internals. As Netscape faced intensifying competition, Sun attempted an alliance with Microsoft. That partnership famously collapsed in acrimony and patent litigation, prompting Microsoft to eject Java from Windows and commit fully to Anders Hejlsberg’s work on.NET and C#.

Before the rupture, Microsoft used an embedded Java object within Outlook Web Access to make asynchronous HTTP background calls back to mail servers for a webmail interface similar to Hotmail. When Sun was ousted, Microsoft engineers urgently needed an alternative mechanism to avoid breaking Outlook Web Access. They substituted a native ActiveX control to make asynchronous calls, creating what became the `XMLHttpRequest` (XHR) API. Eich traces this pivotal advancement back to Sun's browser missteps: “this whole lineage goes back to java being successfully the loser and getting kicked out.” Although the W3C later standardized XHR and the modern web evolved it into the Fetch API, the entire paradigm of asynchronous web applications emerged as an ad-hoc fix for an abandoned Java dependency.

- Sun viewed Netscape solely as an installation pipeline for the JVM rather than investing in DOM integration. - Microsoft banished Java from Windows, accelerating.NET and C# development under Anders Hejlsberg. - Early implementations of asynchronous calls powered the browser client of Outlook Web Access via an ActiveX component before evolving into standardized XHR and `fetch()`. - Post-eviction Java browser applets were largely relegated to niche requirements, such as mandated smart-card banking in Nordic countries and specialized flight-tracking utilities.

---

[33:21](https://www.youtube.com/watch?v=krB0enBeSiE&t=2001s) Flash, FutureSplash, and the "Worse is Better" Evolution

Around late 1995, shortly after Netscape's initial public offering, Jonathan Gay approached Netscape to sell FutureSplash. Netscape's marketing gatekeeper aggressively screened potential acquisitions and turned them away, leaving the company to be acquired by Macromedia, which renamed the technology Flash. Eich admits that Netscape likely would have mishandled it anyway. Macromedia, as a dedicated creative tools vendor, developed software such as Director, Flash Builder, and Dreamweaver, providing timeline-based animation pipelines that attracted artists, designers, and web agencies. By the mid-2000s, Flash completely dominated expressive web design, powering animated restaurant websites and online games.

```mermaid flowchart LR accTitle: Evolution of Rich Web Technologies accDescr: Progression showing FutureSplash being acquired by Macromedia, the Flash era, Steve Jobs rejecting it, and JavaScript absorbing rich web capabilities. FS["FutureSplash (Jonathan Gay)"] -->|"Acquired"| MM["Macromedia Flash & Creative Tools"] MM -->|"Acquired"| ADB["Adobe Flash"] ADB -->|"iPhone Rejection (Steve Jobs)"| MOB["Mobile Web Shift"] MOB -->|"Absorbed Capabilities"| JS5["HTML5 & Modern JavaScript Engines"] ```

Eich maintained a pragmatic view of Flash, admiring its conceptual foundation of timeline animation treated as an immutable function over time. When competitors argued that the open web was fundamentally unsuited for sophisticated media and called for clean-slate runtime replacements, they consistently failed. Eich invokes Richard P. Gabriel's famous software maxim, observing that “the worst is better principle means that you can not only start bad which they all sneer at but get on first and get wide distribution get sort of evolutionary advantage in the priority of place but you can also improve it over time.” Once Steve Jobs issued his ban against Flash on the iPhone, the technology faced an inevitable demise, redirecting industry focus toward enhancing JavaScript and building out HTML5.

- FutureSplash was pitched to Netscape right after the company's 1995 IPO before being acquired by Macromedia. - Rich-media restaurant websites of circa 2005 heavily relied on Flash before HTML5 became capable enough to replace them. - Mozilla later partnered with Adobe (which acquired Macromedia) to work on standardizing ActionScript and modernizing its shared underlying engine.

---

[36:13](https://www.youtube.com/watch?v=krB0enBeSiE&t=2173s) The Ten-Day Genesis: Coding Directly Inside HTML

Lex Fridman steers the conversation back to the crucial moment in computing history: the frenetic days in May 1995 when Eich wrote the prototype of JavaScript. Eich recalls the immense pressure of that window, likening his awareness of the historical opening to Hegel watching Napoleon riding through Jena and glimpsing the "world spirit on horseback." Marc Andreessen acted as Eich's executive sponsor and brainstormed the radical proposition that executable code should live directly embedded inside the HTML source document rather than behind external binaries or complicated build steps.

> “I knew that there was a chance to do it. Marc knew, and he was my, you know, executive sponsor, and he was the one, you know, sort of brainstorming how the JavaScript should be right there in the page.”

The decision to interweave code into the markup provoked severe skepticism across the engineering team, with many insisting that a true programming language could not reside inside raw markup. A direct, naive embedding threatened to expose the interpreter's code as unformatted text if an older browser or faulty parser rendered the document. Eich had to solve layout, parsing, and script-hiding quirks on the fly, proving that an accessible scripting language directly inside HTML tags could turn static hyperlinked text into an interactive application platform.

[37:30](https://www.youtube.com/watch?v=krB0enBeSiE&t=2250s) Injecting Code into HTML: The Biological Analogy and the Two-Way Comment Hack

Lex Fridman brings up the unorthodox core concept of JavaScript: injecting raw program code right into the markup of a web document. Brendan Eich notes that at the time, doing this was viewed as utterly heretical by purists. An SGML expert reached out in anger, demanding to know why Eich hadn’t used an official SGML marked section. Eich responded pragmatically: marked sections were not supported by web browsers, nor were they an official part of HTML at the time. Eich bypassed theoretical correctness with a practical hack, noting that over time the formal SGML techniques evolved, but biological survival required quick adaptation.

Eich compares this pragmatic embedding to evolutionary biology—specifically endosymbiosis and the ideas championed by Lynn Margulis, where ancient prokaryotes slipped inside host cells and eventually evolved into beneficial organelles like mitochondria. In the exact same way, JavaScript had to piggyback as a “good virus” inside HTML to survive and be carried along as inline data.

```mermaid flowchart TD accTitle: Two-Way Comment Hack for Script Tags accDescr: How Netscape 2 and older browsers parsed the script tag using comment delimiters.

subgraph Input["HTML Document"] direction TB ST["<script>"] OBC["<!-- // start HTML comment"] JS["JavaScript Source Code"] CBC["// --> end HTML comment"] ET["</script>"] end

ST --> OBC --> JS --> CBC --> ET

subgraph Browsers["Browser Parsing Paths"] direction LR OldB["Old Browsers (Netscape 1.1)"] NewB["New Browsers (Netscape 2.0)"] end

Input -->|"Ignores script tags, hides raw code via comment"| OldB Input -->|"Executes code inside script tag, treats delimiters as single-line comments"| NewB ```

The dominant browser at the time was Netscape 1.1, which had zero concept of the new `<script>` tag. To prevent legacy browsers from puking raw code onto the rendered screen, Eich engineered what he calls the “two-way comment hiding hack”: - Netscape 1.1 saw the newly introduced `<script>` tag as an unknown element, ignored it, and treated the enclosed `<!--` block as a standard multi-line HTML comment, rendering nothing. - Netscape 2.0 recognized `<script>`, changed the parsing semantics inside that element so the delimiter acted as a single-line comment, and cleanly evaluated the interior JavaScript code.

As Eich emphasizes, “it was this two-way comment hiding hack as I called it that was absolutely necessary for us to get off the ground; we couldn't have bootstrapped JavaScript without it.” At this early juncture, scripts could not be fetched from separate remote files; all JavaScript in Netscape 2 existed strictly inline within the document.

---

[39:22](https://www.youtube.com/watch?v=krB0enBeSiE&t=2362s) The May 1995 Ten-Day Sprint and the Parsing Engine

Eich had spent time on the Netscape server team hacking on HTTP 1.1 ideas before finally transferring to the client team in early May 1995. Marc Andreessen gave him the green light to build the language immediately. Internal factions within Netscape and Sun Microsystems were deeply skeptical about whether a lightweight client-side language was even necessary. Bill Joy was the rare champion who understood the power of pairing languages—much like Microsoft paired Visual C++ with Visual Basic. Joy recognized JavaScript as what Eich half-jokingly refers to as “robin the boy hostage” (quoting Frank Miller’s *The Dark Knight Returns*): a sidekick glue language that could start small and grow into massive strategic importance.

To prove the concept before corporate politics killed it, Eich had to pull off a working demo over an intense ten-day stretch—spanning from a Thursday evening, through the following week, and into Monday, with virtually no sleep. Eich pulled heavily from his undergraduate days at Santa Clara University, where he had transitioned from a “renegade physics major” into computer science just as compiler theory was formalizing bottom-up parsing techniques like LALR(1).

Rather than relying on heavy compiler-compiler generators, Eich followed Dennis Ritchie’s classic approach for C and hand-coded a recursive descent parser. Writing at breakneck speed, he largely nailed the syntax and avoided precedence-inversion bugs while borrowing familiar surface grammar from both Java and C.

---

[41:40](https://www.youtube.com/watch?v=krB0enBeSiE&t=2500s) The Origins of Dynamic Equality (`==`) and Memory Leaks

During the initial 10-day sprint, Eich deliberately kept dynamic comparison strict: comparing two objects of different dynamic types simply evaluated to `false`. However, right after the demo, internal early adopters at Netscape began hooking JavaScript up to backend systems. They complained about having to manually cast stringified database fields to match numeric user inputs, pleading for implicit type coercion.

> “And like an idiot I agreed; I gave them what they wanted, I was trying to please them and get adoption, and that, you know, broke what equivalence relation nature there was to the double equal.” — Brendan Eich

The ten-day timeline also forced Eich to make severe engine trade-offs, chief among them the total omission of a garbage collector: - In the initial prototype, memory was allocated out of monolithic arenas (similar to GNU `obstack` pools) that were never reclaimed during execution, meaning long-running scripts eventually ran out of memory. - For short-lived scripts on static pages, running out of memory was rarely an issue; however, when developers started building games and event-driven applications in the summer of 1995, browsers started crashing rapidly. - Eich hastily retrofitted a reference-counting memory manager after the sprint to keep client memory from exhausting itself immediately.

Reflecting on feature creep and the double-equals operator, Eich invokes one of his engineering heroes, Niklaus Wirth: “when people come to you saying can you please make it sloppier, add this cute feature, the answer should be no, and I should have known that because I think Niklaus Wirth, one of my heroes, said 'the essence of design is leaving things out'.”

---

[43:38](https://www.youtube.com/watch?v=krB0enBeSiE&t=2618s) Memory Safety Vulnerabilities and the Triumph of First-Class Functions

Writing a runtime with manual reference counting in an unsafe language like C proved to be a minefield: - If a reference counter overflowed or stayed stuck high, the engine leaked memory and eventually crashed. - If a counter underflowed, the engine freed an object that was still referenced by JavaScript code (a classic use-after-free).

In the era prior to non-executable heap memory (W^X / DEP) and modern stack canaries, these use-after-free bugs opened the door to immediate remote code execution. A remote attacker could craft an HTML page with JavaScript that triggered an underflow, fill the heap with custom strings designed to spoof virtual function tables (vtables), and hijack control flow when an object method was called. Netscape had to spend subsequent dot releases frantically patching security vulnerabilities.

Despite these sharp edges, when Fridman asks Eich what single feature he remains most proud of when looking back at those ten days, Eich points directly to **first-class functions**. Java lacked them at the time, and bringing closures and functional capability into a mainstream browser runtime was revolutionary. While JavaScript lacked the pure, minimalist beauty of Scheme—with its hygienic macros, call/cc, and clean lambda calculus—it successfully smuggled the spirit of Scheme into the browser under a pragmatic, multi-paradigm C-style syntax.

---

[45:56](https://www.youtube.com/watch?v=krB0enBeSiE&t=2756s) Marc Andreessen and the Peninsula Creamery

Fridman asks about Marc Andreessen’s mentorship and presence during those foundational moments. Eich recalls meeting Andreessen regularly at the Peninsula Creamery in downtown Palo Alto.

Andreessen was freshly out of the University of Illinois Urbana-Champaign (NCSA): a tall, imposing young man with hair who would order massive milkshakes and giant burgers while mapping out strategy. Their conversations were fast, high-stakes, and direct. The impending pressure of Microsoft entering the web market hung over every meeting: Netscape was heading toward its historic IPO, Andreessen was making bold public statements, and both men knew they had almost no time to secure their lead.

- Meeting venue: The Peninsula Creamery in downtown Palo Alto, California. - Andreessen's persona: A towering, ambitious founder straight out of university, consuming massive diner meals while plotting against Microsoft. - Strategic tension: An unstated but omnipresent urgency that Microsoft was mobilizing to crush Netscape, necessitating the frantic ten-day development of JavaScript.

[46:41](https://www.youtube.com/watch?v=krB0enBeSiE&t=2801s) Marc Andreessen's Ambition and Netscape's Push for Graphics

Brendan Eich looks back at the daring vision driving Netscape during the mid-1990s. The rallying cry was “Netscape plus Java kills Windows.” The browser was envisioned not merely as an application viewer, but as a completely programmable runtime environment—a meta-OS designed to replace traditional desktop operating systems. Even while publicly championing Java and licensing the trademark, Marc Andreessen recognized that JavaScript held indispensable independent value.

Behind the scenes, Netscape tried to insulate itself from Sun Microsystems. Kip Hickman, an early Netscape employee and former Silicon Graphics (SGI) kernel hacker alongside Eich, began implementing an independent Java Virtual Machine (JVM). Because Arthur van Hoff had written the Sun Java compiler (`javac`) in clean, self-hosted Java, Hickman’s JVM could execute the bytecode directly once bootstrapped. Had that succeeded, Netscape could have bypassed Sun entirely. Andreessen was constantly scheming forward, wondering whether they could ditch Sun and combine their own runtime with high-performance graphics.

Andreessen anticipated that HTML and static images would soon prove insufficient; the web would eventually demand cinematic, interactive, three-dimensional graphics. SGI had begun to decline after its original VLSI team spun off to launch PC graphics accelerator firms like 3dfx, fueled by gaming hits like *Doom* and *Quake*. Eich recalls everyone playing *Quake* at the office, noting with a self-deprecating laugh that because he was older, he was terrible at it. Andreessen wanted that raw rendering hardware on the web immediately. Eich tried courting Andrew Myers—then an MIT graduate student under Barbara Liskov, and later a professor at Cornell—to build it. When Eich warned that Myers might not leave MIT, Andreessen responded aggressively:

> “We'll throw money, you know, stock options.”

Although that specific recruitment never materialized and Netscape finalized its licensing deal with Sun—prompting Hickman to set aside his JVM—the graphics ambition eventually found vindication years later in Mozilla Firefox. Vladimir Vukićević adapted OpenGL ES into WebGL, tracing a direct architectural lineage back through SGI's original GL libraries.

```mermaid flowchart TD accTitle: Lineage of Web Graphics accDescr: Diagram tracing the technical heritage from SGI GL to WebGL in modern browsers. subgraph SGI["Silicon Graphics Heritage"] GL["SGI GL"] --> OGL["OpenGL"] OGL --> OGLES["OpenGL ES (Mobile)"] end subgraph WebEvolution["Web Integration"] OGLES -->|"Adapted by Vladimir Vukićević (Mozilla)"| WGL["WebGL"] WGL -->|"Runs in"| Firefox["Modern Web Browsers"] end ```

[49:13](https://www.youtube.com/watch?v=krB0enBeSiE&t=2953s) The Browser Wars and the Power of Distribution

Lex Fridman steers the discussion to Microsoft's trajectory with Internet Explorer and asks why Microsoft managed to crush Netscape despite entering late. Eich draws a line between modern Microsoft under Satya Nadella and the Bill Gates era. Gates was an aggressive operator rather than an originator, echoing Steve Jobs's famous assessment that Microsoft possessed no aesthetic taste. Eich illustrates this by contrasting Apple’s elegant fonts, kerning, and ligatures with the rigid, pixel-snapped system fonts inside early Windows.

When Fridman asks why Internet Explorer won regardless of product flaws, Eich provides a blunt, single-word answer:

> “Distribution matters more than anything.”

Operating system ownership decided the browser wars. Netscape engineers like Michael Toy and Jamie Zawinski routinely lamented, “we’re doomed,” knowing Microsoft could simply bundle Internet Explorer with Windows. Microsoft later did the same with Edge, and Apple used the exact same playbook to cement Safari across macOS and iOS.

Despite their impending doom, Netscape responded with frantic product velocity. Netscape 2.0 pushed the web forward into a programmable application platform: - Introduced JavaScript alongside Java applets and Netscape Plugins. - Added advanced HTML layout mechanisms such as tables, frames, and framesets. - Enabled early pioneers to construct what would later be called Single-Page Applications (SPAs). - Allowed developers to maintain state, run local computation, and silently ping backend servers using hidden frames—anticipating the AJAX and Dynamic HTML revolutions by nearly a decade.

[51:59](https://www.youtube.com/watch?v=krB0enBeSiE&t=3119s) Lead Users and Accidental Single-Page Applications

Seeing developers seize JavaScript to build complex client-side applications surprised and inspired Eich. He links this phenomenon to Eric von Hippel’s MIT research on "user innovation networks" and the power of "lead users." Netscape did not open-source its code, but it pioneered open, permissive, and rapid beta distribution. Getting code into users' hands yielded invaluable real-time signals.

A prime example was developer Bill Dortch. In 1996, Dortch built an interactive online gallery for mountain art that survives in the Internet Archive. Working around early interpreter bugs and strict beta code-freeze rules, Dortch used pure JavaScript objects as an in-browser database to render responsive client-side UI—inventing the architectural pattern of JSON and SPAs years ahead of industry nomenclature.

[52:57](https://www.youtube.com/watch?v=krB0enBeSiE&t=3177s) The Fallacy of Pure XML and Taking JavaScript to ECMA

Fridman asks Eich how JavaScript evolved from a ten-day prototype into a ubiquitous worldwide platform. Eich explains that the trajectory was rocky because standards bodies collapsed following the *United States v. Microsoft* antitrust case.

In the mid-1990s, the World Wide Web Consortium (W3C) drifted away from practical web development. While Netscape iterated on pragmatic formatting tags like frames and tables, the W3C was stuck inside SGML purism and embarked on what Eich terms "XML la-la land." Led by Tim Berners-Lee and academic theorists, the W3C imagined the Semantic Web would replace forgiving HTML with rigid, pedantic XML.

Eich points out that the web succeeded precisely because "worse is better": - HTML forgives syntax omissions, mismatched tags, and syntax errors through internal error-correction heuristics. - Fridman compares this organic error handling to biological resilience rather than typical programming semantics. - Standard XML enforced a strict, non-forgiving parser that immediately halts on any single syntax flaw, making it unusable for everyday web creators. - When Microsoft later added XML support to Internet Explorer, they quietly passed it through the fault-tolerant HTML parser anyway to prevent page breakage, subverting the purist specification to make it functional.

Because Netscape refused to cooperate with an unresponsive W3C, Netscape standards guru Carl Cargill looked elsewhere to standardize JavaScript. Cargill selected the European Computer Manufacturers Association (ECMA). ECMA had already forced Microsoft's hand by standardizing portions of the Windows 3.1 API on behalf of European governments that refused to rely on proprietary operating systems without formal international standards. Netscape leveraged that exact playbook to ensure Microsoft could not privatize or monopolize the scripting language of the web.

[55:50](https://www.youtube.com/watch?v=krB0enBeSiE&t=3350s) The Birth of ECMAScript and Trademark Battles

Lex Fridman jokes that ECMAScript “sounds like a skin disease,” bringing up how the formal standardization created an alternative name for JavaScript. Brendan Eich explains that ECMAScript became the official name because "Java" was a trademark owned by Sun Microsystems. Sun guarded the trademark with extraordinary aggressiveness, to the point of sending cease-and-desist letters to individuals simply because their surname began with those letters. Eich recalls:

> “They were so aggressive they were sending cease and desist letters to people whose Middle European heritage meant their their surname was Javonko and they called their website javonko.com, and Sun sent them a letter saying you're using Java at the start of your domain name you must cease and desist.”

Fridman quips, “I love marketing more than anything else in this world.” Eich and Fridman sort through how developers actually refer to the language versus its formal specifications. While most people in everyday conversation and book titles simply say "JavaScript" or "JS," official specification milestones are designated as ECMAScript editions, such as ES5 and ES6. Later, the committee switched to year-based designations (ES2015, ES2016), introducing an offset where ES6 corresponds to the year 2015 (an offset of nine: edition number plus 2009).

[56:58](https://www.youtube.com/watch?v=krB0enBeSiE&t=3418s) The Ecma Standards Battle: Netscape vs. Microsoft

Netscape brought JavaScript to Ecma, a European standards organization that Netscape believed had an established track record of standing up to Microsoft. Once Microsoft recognized that Netscape was not going to simply surrender control of the language, they assigned a top-tier engineer, Shon Katzenberger. Katzenberger dug in deeply, told his superiors to leave him alone so he could concentrate, and took on the heavy lifting of producing the first draft of the specification.

Eich was juggling multiple responsibilities, maintaining front-end integrations with part-time help, and keeping all the plates spinning, which prevented him from spending as much uninterrupted time drafting text as Katzenberger did. Nevertheless, Eich had to participate closely to codify how the language operated in practice, resolving discrepancies between their implementations. In standard-setting, when two engines differ, the implementation backed by greater market dominance typically establishes the de facto rule that gets enshrined into the de jure standard:

> “And that's the story of standards: you have different implementations, and depending on their market power they interoperate where you have agreement, and where they don't, the dominant one usually sets this de facto standard, and then you should probably reflect that into the de jure standard.”

```mermaid flowchart TD accTitle: Standardization and Implementation Feedback Loop accDescr: Shows how market implementation leads into formal de jure standardization in Ecma.

subgraph BrowserEngines["Browser Implementations"] A["Netscape (Brendan Eich)"] B["Microsoft (Shon Katzenberger)"] end

subgraph StandardsBody["Ecma International"] C["Drafting the Spec"] D["De Jure Standard (ECMA-262)"] end

A -->|"Edge cases & code"| C B -->|"Drafting & bug fixes"| C C -->|"Consensus / Dominant behavior"| D D -.->|"Informs future browser editions"| BrowserEngines ```

[58:14](https://www.youtube.com/watch?v=krB0enBeSiE&t=3494s) Codifying the First Edition in Nice (1997)

The first edition of the standard was ratified in 1997 in Nice, France. Eich looks back fondly on the European hospitality, recalling dinners featuring bouillabaisse and fruits de mer hosted by the head of Ecma at the time, Jan van den Beld, whom Eich describes as a great raconteur. The committee included prominent industry figures like IBM Fellow Mike Cowlishaw.

Fridman asks whether the standardization process felt beautiful or painful from the perspective of a language designer. Eich admits:

> “It was painful because it was rushed.”

The technical horsepower in the room was formidable. Sun contributed programming-language luminary Guy Steele, who brought deep Scheme insights to the table. Steele also brought along computer scientist Richard P. Gabriel, who drafted the famous Clause 4 of the specification—the foundational overview describing the core nature of JavaScript. Despite high stakes, the engineers worked constructively. Eich recounts arriving late to one meeting because he was fixing bugs, which irritated Katzenberger. But as soon as Eich looked at the spec, spotted the subtle off-by-one fence-post error Katzenberger had caught, and pointed it out, the tension dissolved instantly into shared professional respect.

- **Key participants**: Brendan Eich (Netscape), Shon Katzenberger (Microsoft), Guy Steele (Sun Microsystems), Richard P. Gabriel (Clause 4 author), Mike Cowlishaw (IBM), Jan van den Beld (Ecma). - **Core technical goal**: Writing down edge cases that worked, resolving divergence between Netscape and Microsoft, and specifying missing language constructs (such as additional function forms) that Eich had not had time to build during the original 10-day creation sprint.

[01:00:27](https://www.youtube.com/watch?v=krB0enBeSiE&t=3627s) The Third Edition, Antitrust Drama, and JavaScript 2

By 1999, the third edition (ES3) was finalized, adding features Eich had long wanted to incorporate from existing languages. However, Netscape’s corporate position had disintegrated under Microsoft's predatory tactics, eventually forcing a sale to AOL. Microsoft tied Internet Explorer directly into the Windows operating system and aggressively undercut Netscape's server bundling. Eich relates a striking incident involving Ram Shriram, then an executive at Netscape (and later a prominent billionaire investor in Google):

> “He got off the phone looking ashen-faced after Compaq called and said, ‘Microsoft just told us they're going to pull our Windows license if we ship Netscape as the default browser.’”

While these bullying tactics became central evidence in the United States antitrust case against Microsoft, JavaScript itself survived by virtue of having been placed in an open standards body. Following the antitrust trial and Netscape’s dissolution into AOL, the standardization process ground to a halt around 2003. Eich handed the architectural reigns of "JavaScript 2" to MIT graduate and 1986 Putnam Fellow Waldemar Horwat. That advanced design never landed in browsers directly; instead, pieces mutated into Microsoft's ASP.NET server-side framework (where they quickly languished) and into Macromedia/Adobe's ActionScript 3 inside the Flash runtime.

[01:02:19](https://www.youtube.com/watch?v=krB0enBeSiE&t=3739s) The Long Road from Mothballed ES4 to ES6

Fridman notes that in developer culture, it was long considered fashionable over beers to bash JavaScript—much like people complaining about marriage while staying in it—until ES6 arrived as a major turning point that resolved pervasive frustrations. Eich clarifies the messy path that led there.

Plans for ECMAScript 4 (ES4), developed jointly with Adobe to bring ActionScript 3 / JavaScript 2 concepts into the web standard, collapsed under their own weight and were officially mothballed. The committee split: one camp resisted radical syntactical churn in favor of incremental changes, producing ECMAScript 5 (ES5) in 2009. ES5 added strict mode and key utility APIs without sweeping grammar changes.

Allen Wirfs-Brock, Eich’s co-author on the HOPL (History of Programming Languages) paper, served as the primary editor for the specification while at Microsoft and later joined Mozilla to finish that editorial work. When the long-delayed overhaul finally wrapped up in 2015, the best, widely liked parts of ES4 were harvested into ECMAScript 6 (ES6 / ES2015). ES6 eliminated friction by introducing proper class syntax, modules (with strict mode active by default within both), and cleaner structural patterns, transforming modern JavaScript into a robust, respectable platform.

[01:04:35](https://www.youtube.com/watch?v=krB0enBeSiE&t=3875s) TypeScript and Type Annotations

Lex Fridman observes that ECMAScript 6 (ES6) was the inflection point where JavaScript seemed ready to “take over the world completely,” adding the foundational features necessary for large software teams. Brendan Eich agrees, pointing out that Microsoft made a brilliant move with TypeScript through figures like Anders Hejlsberg and Luke Hoban. Drawing on principles popularized by Gilad Bracha (who worked on Dart at Google), TypeScript discarded runtime soundness in favor of a compile-time tool:

> “If you don’t worry about soundness in the type system, you don’t try to enforce the type checks at runtime in particular, just use it as sort of a warning system, a tool-time type system, you can still have a lot of value for developers, especially in large projects.”

Eich explains that because TypeScript is technically a strict superset of JavaScript, “any JavaScript program is a TypeScript program,” allowing developers to adopt type annotations incrementally.

Because Microsoft had to anticipate how future JavaScript standards (such as modules and decorators) would evolve, they occasionally ran ahead of TC39. When the standards committee settled on slightly different semantics, Microsoft had to either maintain their divergent syntax or introduce breaking changes to realign with the official ECMAScript standard. While some in the community have asked why Microsoft does not standardize TypeScript itself, Eich notes they have made it clear they want to keep it proprietary to protect their investment. Eich hopes the committee will eventually standardize type annotation syntax and cast operators across all engines, perhaps via pluggable type systems. However, he cautions that pluggable types carry the same risk seen in Lisp and Scheme, where competing, incompatible macro libraries caused widespread friction.

```mermaid flowchart TD accTitle: TypeScript Relationship to JavaScript and TC39 accDescr: Diagram showing how TypeScript extends JavaScript and manages divergence with the ECMA TC39 standard.

subgraph Core ["Language Layer"] JS["Standard JavaScript (ECMA)"] TS["TypeScript (Tool-Time Superset)"] JS -->|"100% valid syntax inside"| TS end

subgraph DevProcess ["Adoption & Standardization"] Incr["Incremental Type Annotations"] TC39["TC39 Standards Body"] TS -->|"Adds tool-time warnings"| Incr TS -.->|"Guesses future features<br>(Modules, Decorators)"| TC39 TC39 -->|"Reconverges / Normalizes"| TS end ```

[01:07:04](https://www.youtube.com/watch?v=krB0enBeSiE&t=4024s) Frameworks, the DOM, and jQuery's Legacy

Fridman asks about the sprawling ecosystem of JavaScript frameworks and whether natural selection should prune them faster. Eich reflects that libraries arise when native browser capabilities are too clumsy. John Resig’s jQuery was a prime example: by combining CSS selector syntax with JavaScript DOM querying into a concise “query and do” domain-specific language, it solved the cumbersome nature of the original 1990s Document Object Model. Those early W3C APIs were designed to satisfy both Java and JavaScript, resulting in verbose, procedural, multi-step ceremonies just to manipulate an element.

Rather than standardizing jQuery directly, the modern browser standards bodies absorbed its lessons into HTML5, giving developers native capabilities like `document.querySelector` and the `fetch` API. Eich explains that this history exposes a persistent tension between: - The core ECMAScript language (managed by Ecma, which easily ported to non-browser environments like Node.js) - The browser-specific DOM APIs (managed by the W3C, which spent years distracted in “XML la-la land” while Microsoft de-invested in Internet Explorer)

Because early DOM APIs stagnated, browser makers had to catch up later. Many past innovations originated in Microsoft’s early haste with Dynamic HTML (DHTML). Eventually, pragmatic browser vendors—Mozilla, Apple, and Opera (led by Ian Hickson, who later moved to Google)—bypassed the W3C’s stagnant XML roadmap to standardize HTML5 around proven real-world practices.

[01:10:14](https://www.youtube.com/watch?v=krB0enBeSiE&t=4214s) HTML5, Ian Hickson, and the Demise of Flash

Fridman praises HTML5 as an exceptionally clean and satisfying piece of design, asking if he is being overly romantic. Eich responds that he is “a little bit,” while praising Ian Hickson (“Hixie”), a former Opera QA engineer and physics student who brought an axiomatic, test-suite-driven rigor to HTML5. Eich notes that the reality of standardizing the web inevitably conflicts with aesthetic purity:

> “And if the matrix is large, it will not be beautiful by many people's lights.”

Eich explains that while language purists prefer to minimize design around tiny sets of rules (like the seven special forms in Scheme), web standards must embrace complexity because HTML is symbolic, multi-paradigm, and heavily constrained by legacy edge cases. HTML5 succeeded because it blended pragmatism, formal documentation of de facto quirks, and modern replacements for old APIs (such as the `fetch` API replacing `XMLHttpRequest`, alongside native `<video>`).

Fridman suggests that HTML5 was the final nail in the coffin for Adobe Flash, though Eich argues the true death blow came directly from Steve Jobs refusing to allow Flash on the iPhone:

> “Steve Jobs saying no Flash on the iPhone, in my opinion, was the actual stick to the heart.”

Eich jokes that Flash lingered as a “zombie” for a decade before major browsers finally dropped support completely around 2020. Fridman recalls using Flash for animations and scripting, noting that its chaotic timeline paradigm felt uncomfortably close to a programming `goto` statement, leading to hard-to-debug behaviors that troubled his engineer instincts. Eich admits that while he never used Flash directly, he always admired the smooth timeline animation model that the open web still struggles to replicate with equal elegance.

[01:13:02](https://www.youtube.com/watch?v=krB0enBeSiE&t=4382s) Compiling C/C++ to JavaScript and the Creation of asm.js

Brendan Eich discusses how the evolution of web platform primitives—standardizing `<video>`, WebGL, and Web Audio—finally displaced proprietary plugins like Adobe Flash, aided in large part by Steve Jobs refusing to allow Flash on iOS. Eich notes that behind the scenes, early web architects realized they had built a graphics-capable, bare-metal runtime. At Mozilla, engineers recognized that JavaScript could serve as a portable target compilation language. Others had explored this concept; Adobe Labs ran a project called Alchemy, while Alon Zakai developed Emscripten, an LLVM-based compiler that took C and C++ source code and emitted JavaScript.

At first glance, emitting dynamically typed, garbage-collected code from low-level languages with manual memory management seemed completely counterintuitive. However, Zakai identified the exact JavaScript idioms that runtime engines optimized well. Collaborating with type theorist Dave Herman and compiler architect Luke Wagner at Mozilla, they formalized these patterns into `asm.js`. Rather than introducing new syntax, `asm.js` operates as an extraordinarily strict subset of JavaScript. Types are expressed through operations placed at dominator positions within the control flow graph. By utilizing bitwise operators—which Eich had originally copied from Java—numbers represented internally as 64-bit double-precision floats are forced into 32-bit integers:

```mermaid flowchart LR accTitle: C/C++ to asm.js Compilation Pipeline accDescr: Diagram showing how C and C++ source code is compiled by Emscripten into asm.js and executed efficiently without triggering garbage collection.

subgraph Frontend["Compiler Toolchain"] A["C / C++ Source"] --> B["LLVM / Emscripten"] end

subgraph EmittedCode["asm.js Output"] B --> C["Type Casts via Bitwise Ops<br/>(e.g., x | 0)"] C --> D["Flat Typed Arrays<br/>(Simulated Heap)"] end

subgraph Execution["Browser Engine"] D --> E["Linear-Time JIT Validation"] E --> F["Native Machine Code<br/>(Deterministic, No GC)"] end ```

Because these types can be verified in linear time, the engine generates deterministic, native machine code that avoids garbage collection overhead entirely.

- Eich jokes about Flash’s demise: “once we did all these things that helped Flash die, thanks to Steve Jobs, we had something that people didn't realize we had... this graphics-capable, to-the-metal, portable runtime.” - Inside JavaScript's core semantics, integer operations can be simulated by truncating floating-point numbers via bitwise operations (such as `x | 0`), allowing compilers to enforce strict integer typing.

---

[01:15:37](https://www.youtube.com/watch?v=krB0enBeSiE&t=4537s) The Epic Unreal Engine Demo and the Birth of WebAssembly

To demonstrate the capability of `asm.js`, Mozilla engineers targeted high-end 3D gaming. In late 2012, Eich met Tim Sweeney of Epic Games, who was deeply skeptical that a project of that scope could be completed quickly and estimated it would take years. A team from Mozilla traveled to Epic's headquarters in Raleigh, North Carolina, and within four days had the Unreal Engine compiling and running in Firefox at 30 frames per second. The port stitched together WebGL (derived from OpenGL ES and Silicon Graphics), Web Audio (mapping Epic's OpenAL implementation to the Web Audio API), and `asm.js`.

Presented at the Game Developers Conference (GDC) in spring 2013, the demonstration of *Unreal Tournament* running smoothly inside a browser window without third-party plugins shocked the industry. Prior to this, Google had pushed its own proprietary solution to native web execution called Portable Native Client (PNaCl), using sandboxing and process isolation to run native binaries. Eich characterized PNaCl as “the Google Flash.” The success of `asm.js` proved that browser-native technologies could achieve competitive speeds, leading the industry to unify. In spring 2015, major browser vendors agreed to retire divergent experiments and collaborate on WebAssembly (Wasm). Designed as a compact binary syntax running atop the existing browser virtual machine, Wasm eliminated the transmission and parsing overhead of verbose text files.

```mermaid flowchart TD accTitle: Convergence onto WebAssembly accDescr: Map showing how competing efforts like asm.js and Native Client merged into standard WebAssembly.

subgraph DivergentPaths["Competing Approaches"] NC["Google PNaCl<br/>(Virtualization / Sandboxing)"] AJ["Mozilla asm.js<br/>(Typed JS Subset)"] end

subgraph IndustryConsensus["Spring 2015 Agreement"] NC -.->|Abandoned| WA AJ -->|Standardized As| WA["WebAssembly (Wasm)<br/>Compact Binary Format"] end

subgraph UnifiedEngine["Single Browser Runtime"] WA --> VM["Unified VM Infrastructure"] JS["Standard JavaScript"] --> VM VM --> Comp["Shared JIT, Memory Manager, & GC"] end ```

- When recounting Sweeney's initial skepticism, Eich remembers: “Tim Sweeney I met... didn't think it could be done quickly, thought it would take years, and the team went to Raleigh to Epic and in four days they had Unreal Engine ported by pressing a compile button.” - Eich laments the historical bloat of downloading JavaScript over mobile connections, noting that even compressed scripts must be inflated and parsed: “you've got to blow it out into memory and then parse the silly eight-character `function` keyword that I picked when I could have used something shorter. I picked it because of awk, the Unix tool.”

---

[01:19:07](https://www.youtube.com/watch?v=krB0enBeSiE&t=4747s) The Origins of High-Performance Virtual Machines

Lex Fridman asks Eich whether he is surprised by how fast JavaScript has become, given its beginnings. Eich answers that while it feels astonishing, the techniques are grounded in deep computer science history. In 1997, Netscape loaned Eich to Sun Microsystems to perform technical due diligence for Sun’s acquisition of Anamorphic—a startup founded by David Ungar and other Stanford language researchers. At Anamorphic, the team had created the Self programming language (a streamlined dialect of Smalltalk) and pioneered advanced Just-In-Time (JIT) virtual machines.

The Self VM solved the puzzle of optimizing dynamic code by observing execution types at runtime and generating polymorphic inline caches (PICs). These caches generate specialized machine code preceded by lightweight branch checks; if types change, execution bails out to the interpreter, but if the type profile remains consistent, the specialized code runs at near-native speed. Sun applied these techniques to build the Java HotSpot VM to mitigate dynamic bottlenecks caused by `invokeinterface`. A decade later, around 2006, when Mozilla discovered Google was building its own browser (Chrome), Eich met the team creating its V8 JavaScript engine. V8 was led by Lars Bak, one of the original core engineers from Anamorphic and Sun HotSpot, who brought the same dynamic optimization lineage directly into the modern web ecosystem.

- Eich summarizes the cyclic nature of language design and optimization architectures: “The funny thing is computer science is this big karmic wheel, right? Wheel of Fortuna.” - On the lineage of VM technology, Eich explains that Lars Bak was “one of the young engineers from Anamorphic got acquired by Sun, and so Lars is like the world's expert on these kinds of virtual machines, and he picked my brains about JavaScript.”

[01:21:56](https://www.youtube.com/watch?v=krB0enBeSiE&t=4916s) The 2008 JIT Revolution: V8, TraceMonkey, and the Speed Race

Brendan Eich recounts a lunch on Google’s campus in 2006, followed by conversations heading into late 2007 and 2008 with a friend working as a Chrome Developer Relations advocate. The Chrome team was racing to ship their browser, completely unsure of what Lars Bak and the V8 team were up to off in Aarhus, Denmark. Lars and his team rewrote their engine four times from scratch. Eich defends that cycle as the ideal path for systems development: they spent that time deeply absorbing all of JavaScript’s edge cases, coming to “hate [them with] the fire of a thousand suns.” That frustration later drove Bak and company to create Dart. Crucially, they succeeded in making JavaScript genuinely fast.

Mozilla had caught wind of Google's efforts and readied its own tracing JIT, TraceMonkey. Apple’s WebKit team followed suit with SquirrelFish (Nitro). Eich highlights the historical lineage: just-in-time compilation for dynamic languages went straight back through Smalltalk and the startup Animorphic before Bak ended up at Google. Lex Fridman remarks that JavaScript has survived through a rich dialectic of love and hate—a tension between deep frustration with its oddities and genuine affection for its power.

```mermaid flowchart LR accTitle: Lineage of Dynamic Language JIT Compilation accDescr: Diagram tracing dynamic JIT technology from Smalltalk and Animorphic to modern browser engines.

subgraph Origins ["Foundational JIT"] ST["Smalltalk Systems"] AM["Animorphic"] ST --> AM end

subgraph Engines2008 ["2008 Browser JIT Race"] V8["Chrome: V8 (Aarhus, Denmark)"] TM["Mozilla: TraceMonkey"] SF["Apple WebKit: SquirrelFish / Nitro"] end

AM -->|"Lars Bak & Team"| V8 V8 -.->|"Pushes industry"| TM V8 -.->|"Pushes industry"| SF ```

[01:23:15](https://www.youtube.com/watch?v=krB0enBeSiE&t=4995s) Why JavaScript Became the Most Popular Language

When Fridman asks why JavaScript stands as the most popular programming language in the world by nearly every metric, Eich points to foundational design choices: first-class functions, familiar C-style operator hierarchy, and a syntax kept just simple enough to grasp while mimicking Java. Beyond the raw syntax, its longevity came from years of hands-on community engagement. Eich worked inside standards committees, pushed for HTML5 features, and relentlessly listened to everyday web developers rather than ivory-tower language theorists.

Eich references a Hacker News essay by Nick Thompson contrasting Java with JavaScript. Java demanded heavy static typings, catered to corporate enterprise architects, and showed little empathy for everyday programmers building dynamic apps. By contrast, Eich kept JavaScript alive through its early, precarious years when industry gatekeepers laughed at it as a "Mickey Mouse language" relegated to scrolling text across browser status bars. He compares working with JavaScript to the final scene of Joss Whedon’s film *Serenity*, set to David Newman’s musical piece *Love*, where Captain Mal teaches the prodigy River Tam how to pilot the vessel: “he's basically talking about how you have to love the ship because if you don't it's going to kill you and then the piece falls off the ship it's kind of like JavaScript.”

- Sun Microsystems treated Java as an elite language where corporate experts declared rigid types upfront, showing little interest in scrappy web developers. - Eich juggled the responsibilities of multiple engineers during Netscape's precarious early years to keep JavaScript relevant and usable within its single-threaded event loop. - The popular resistance to ECMAScript 6 (ES2015) class syntax proved overblown; dynamic languages including Smalltalk, Python, and Common Lisp have long supported classes without losing their core dynamism.

[01:26:11](https://www.youtube.com/watch?v=krB0enBeSiE&t=5171s) A Demotic Community vs. Corporate Ivory Towers

Fridman and Eich observe that the social architecture surrounding JavaScript is unusually broad and bottom-up compared to traditional compiled languages. While modern C++ standardization is governed by a small, rarefied council of senior engineers, JavaScript's evolution is pulled by competing browser vendors (Google, Apple, Mozilla, Microsoft) alongside major enterprise consumers like PayPal and Salesforce who must actively recruit from an enormous web developer talent pool.

Fridman draws an analogy to finance: if C++ represents the credentialed institutional realm of Wall Street, JavaScript resembles the chaotic, bottom-up movement of WallStreetBets. Eich agrees, calling JavaScript far more *demotic*—belonging directly to the common people: “it lets people in without requiring these credentials.” During the late 1990s tech bubble, thousands of people who had no innate passion for programming chased Java certificates purely for money when they would have been happier as nature guides or pilots. JavaScript bypassed that elitist gatekeeping, providing a low-friction runway for anyone with a browser and a text editor.

[01:27:52](https://www.youtube.com/watch?v=krB0enBeSiE&t=5272s) WallStreetBets, Decentralized Swarms, and the Cunning of Reason

Prompted by the contemporary GameStop short squeeze orchestrated by r/WallStreetBets, Eich reflects on how distributed, decentralized crowds expose the limitations of establishment economic theory. Just as in physics, mainstream economics has routinely fallen prey to bad mathematical models divorced from actual human incentives. Formerly treated as a branch of moral philosophy, modern economics drifted into a detached, quasi-Newtonian perspective that viewed institutional monopolies crushing upstarts as mere "nature."

Those rigid models left institutional hedge funds totally blind to emergent internet behavior. Armed with commission-free brokerages like Robinhood and fueled by $600 government stimulus checks, everyday retail traders banded together to squeeze institutional short positions, spawning viral memes of the Terminator squaring off against terrified hedge funds. Eich connects this moment to political economy, arguing that decades of lax antitrust enforcement have concentrated power into an oligopoly—resembling the oligarchic decline detailed in Plato's *Republic*. Yet, invoking Georg Wilhelm Friedrich Hegel’s concept of the "cunning of reason" (*List der Vernunft*), Eich notes that history routinely introduces an unexpected "fly in the ointment": decentralized internet hacker culture, turning platforms designed for passive consumption into chaotic instruments that upend institutional control.

- Classical economics originated as a branch of moral philosophy before shedding its ethical concerns to model markets as purely mechanical, self-regulating systems. - The Robinhood business model eliminated trading commissions by routing order flow and absorbing trade settlement costs, only to face massive counterparty clearinghouse risk when retail volume spiked during two-day settlement periods. - Drawing from Plato's regime taxonomy, Eich identifies current corporate and tech dominance as an oligarchy created by regulatory capture and neutered antitrust policy. - Hegel's "cunning of reason" illustrates how decentralized, unintended consequences consistently confound the best-laid plans of entrenchment and power.

[01:30:35](https://www.youtube.com/watch?v=krB0enBeSiE&t=5435s) The Dystopian Future: Will JavaScript Run the Entire World?

Lex Fridman remarks that the conflict over web ecosystems operates like soft power rather than open warfare. He points out that while JavaScript originally existed exclusively on the frontend, it has steadily colonized the backend and is increasingly trusted with heavy-duty machine learning through libraries like TensorFlow.js. Given this relentless expansion, Fridman asks whether it is conceivable that in 10, 20, or 30 years, virtually the entire computing world will run on JavaScript.

Brendan Eich laughs and acknowledges that to many software purists, this scenario is an outright horror story:

> “You realize in the future that you're living in some simulation and it's all running on JavaScript and you just scream forever.”

Eich explains that while the concept sounds comical, the technical architecture behind it is plausible. He cites Gary Bernhardt's iconic tech talks—such as *Wat* and *The Birth & Death of JavaScript*—which explored this very trajectory based on the concept of Software Fault Isolation (SFI). In traditional operating system design (exemplified by Unix), user processes run as untrusted guests inside a monolithic, privileged host. If a program crashes, the kernel suspends or kills it without bringing down the OS. However, crossing that privilege boundary via a system call is expensive.

While engineers have optimized calls like getting the system time to avoid entering kernel space, virtualization, unikernels, and exokernels have simultaneously unlocked lightweight virtual machines with extremely cheap Software Fault Isolation outside the traditional OS kernel. Under Bernhardt's thesis, because the OS system-call boundary remains too costly, execution layers drift upward into lightweight runtimes. With tools like asm.js, WebAssembly, and JIT compilers, JavaScript and its browser-derived sandboxes provide a viable runtime for almost everything, making the scenario far from impossible.

```mermaid flowchart TD accTitle: Gary Bernhardt Thesis on JS and SFI Dominance accDescr: Diagram tracing traditional Unix syscall overhead to the rise of lightweight VMs and universal JS/Wasm runtimes.

subgraph TraditionalOS["Traditional Monolithic OS (Unix)"] A["User Space Process"] -->|"Expensive System Call"| B["Privileged Kernel"] B -->|"Isolation & Fault Recovery"| A end

subgraph ModernRuntime["Lighter-Weight Isolation Trend"] C["Hardware Evolution & Virtualization"] --> D["Unikernels & Exokernels"] D --> E["Software Fault Isolation (SFI)"] E --> F["JavaScript / WebAssembly Runtime Engine"] end

TraditionalOS -.->|"Boundary too expensive"| ModernRuntime ```

[01:33:22](https://www.youtube.com/watch?v=krB0enBeSiE&t=5602s) Advice for Programmers and Language Recommendations

Fridman asks Eich what advice he would give to prospective programmers and which three to five languages they should learn. Eich emphasizes that no single language fits all problems because different jobs demand distinct tools on a developer's utility belt:

* **Linear Algebra and Machine Learning:** Eich highlights languages in the APL lineage, specifically J and K, as uniquely suited for expressing the array and matrix operations that power machine learning kernels. He notes that Arthur Whitney, the creator of K, is still actively designing proprietary variants in that space. * **Rapid Prototyping vs. Dropping into C:** Python gained dominance in ML not because of high-performance JIT execution (projects like PyPy explored that space, but the mainstream remained interpreted), but because its design made it seamless to drop into C plugins for heavy math. Eich notes that developers who need to iterate rapidly should embrace dynamic languages. * **Low-Level Systems and Memory Safety (Rust):** Eich, an old-school C hacker, takes pride in having served as the executive sponsor of Rust at Mozilla. He watched it escape its initial nest to achieve escape velocity across the software industry, culminating in independent foundation support and widespread adoption by companies like Amazon. * **Concurrency and Network Services (Go):** Eich praises Go for its pragmatic design and garbage-collected network efficiency, citing the Bell Labs pedigree of Ken Thompson and Rob Pike. His only personal gripe as an old C programmer is the reversed declaration syntax: “I can't get used to the fact that they swapped the type and declarator in the declaration order.”

Regarding Rust, Eich explains why he backed the project so aggressively early on:

> “One of our goals there, one of the reasons I sponsored it, was we were all tired of seeing those remote code execution vulnerabilities due to C and C++.”

He highlights that Rust's type, effect, and ownership system delivers memory safety alongside an automatic mathematical dual: compile-time guarantees against data races in concurrent code. It forces programmers to explicitly isolate unsafe blocks while proving memory correctness elsewhere.

Turning to longevity, Eich observes the Lindy effect: JavaScript is already over 25 years old and shows no sign of disappearing, meaning it could easily thrive for another 25. Rust, while young by comparison, has demonstrated the architectural weight necessary to enjoy a similar decades-long lifespan.

[01:37:10](https://www.youtube.com/watch?v=krB0enBeSiE&t=5830s) The First Language Dilemma: Python vs. JavaScript

Fridman and Eich debate whether a newcomer should pick Python or JavaScript as their first programming language. Fridman notes the dilemma: C++ can take years before a novice produces something tangible, whereas JavaScript gives beginners immediate visual feedback in the browser that makes them fall in love with coding, even if it allows them to learn messy habits. Python sits comfortably between the two, though it lacks the instant visual gratification of a web app.

Eich explains that Python's pedagogical strengths stem from its pedigree in ABC, an educational language developed in the Netherlands. Python protects beginners by halting typos at the syntax-check stage rather than carrying them into dynamic execution.

In contrast, JavaScript's permissive semantics frequently confuse novices. Eich mentions a recent tweet from a beginner who was astonished that indexing into a primitive number (`(123)[0]`) returns `undefined` instead of throwing a runtime type error:

> “In Java, the primitive types, which unfortunately are not objects, can be automatically boxed or wrapped by an object, and I made that implicit.”

Because Eich made boxing automatic and silent to prevent dynamic scripts from crashing, accessing a nonexistent property on a number implicitly wraps it into a `Number` object, finds no matching index property, and evaluates to `undefined`. While that design choice keeps web pages running, Eich admits the dark side: a beginner can introduce an undetected blunder into their code and end up tracing mysterious `undefined` values across an application without knowing where they originated. As they wrap up the topic, Fridman pivots to analyzing the history of internet browsers through the lens of military history and the browser wars.

[01:39:33](https://www.youtube.com/watch?v=krB0enBeSiE&t=5973s) The First Browser War: Netscape’s Missteps and Internet Explorer 4

When Lex Fridman asks about the legendary browser battles of the 1990s between Netscape and Microsoft, Brendan Eich points out that although Microsoft was ultimately convicted for antitrust violations and abusing its monopoly power, they had assembled an extraordinarily capable team by the time they built Internet Explorer 4. Netscape, on the other hand, was stumbling. Eich was located on the second floor and remained close friends with the first-floor front-end developers who handled the JavaScript event hookups, but that core group was thoroughly burned out. Flush with cash after going public, Netscape's upper management attempted to go head-to-head with Microsoft by acquiring a slate of outside companies. Eich observes that buying companies rarely works unless you follow the modern playbook—such as Mark Zuckerberg’s initial strategy with WhatsApp—where acquisitions are kept at arm's length to protect the complementary value that justified buying them in the first place, rather than prematurely forcing an integration.

Netscape’s acquisitions diluted its technical focus. Experienced founders and early engineers were exhausted, while incoming staff wanted their turn to run browser development without understanding the intricacies of building one. Consequently, Netscape 4 ran disastrously late. It was originally intended to be version 3, but delays forced the team to ship an intermediate 3.0 release—boosted by Jamie Zawinski and others adding S/MIME support to the integrated mail client—while bumping the delayed project number to 4. When Netscape 4 finally arrived, it launched only on Windows and suffered from severe bloat and instability.

Meanwhile, Microsoft executed its classic competitive pattern: the first version is garbage, the second version feels mildly threatening, the third version clearly signals where things are headed, and the fourth version is genuinely good. Paired with the overwhelming structural advantage of being pre-installed as the default browser on Windows, Internet Explorer became formidable. Microsoft staffed IE with top-tier talent, including Scott Isaacs, a former accountant who had programmed in BASIC before rising to become a Microsoft program manager—a hybrid technical leadership role that drove system design and standards. Isaacs drove the creation of Dynamic HTML (DHTML) APIs, which differed both from Eich’s earlier work and from the verbose, Java-esque W3C DOM specifications that followed.

Eich recalls a telling evening around 1997 when he and his colleague Scott Furman were invited by Isaacs to Gordon Biersch in San Jose for an advance preview of IE4:

> “Scott said, ‘Yeah, we've got—here's the new graphics stuff we're doing. We've got something like your Netscape layers, um, we've got VML, a Vector Markup Language, you know, we can do like virtual reality.’ And Scott and I looked to each other and said, ‘We're doomed.’”

Even though Microsoft abused its operating system monopoly, Eich acknowledges that IE4 was an impressive, high-performance piece of software across the board.

```mermaid flowchart TD accTitle: Microsoft vs Netscape Browser Trajectory accDescr: Diagram illustrating the contrasting trajectories of Microsoft IE and Netscape leading to the birth of Mozilla.

subgraph Netscape_Decline ["Netscape Stagnation"] N1["Netscape 1 & 2<br/>Rapid innovation & IPO"] --> N2["Acquisitions & Engineer Burnout"] N2 --> N3["Netscape 4 Delayed<br/>Bloated code & buggy rollout"] end

subgraph Microsoft_Ascent ["Microsoft IE Progression"] M1["IE1 & IE2<br/>Lagging copies"] --> M2["IE3<br/>Closing the gap"] M2 --> M3["IE4 (1997)<br/>DHTML, VML, fast engine"] end

subgraph Monopoly_Aftermath ["Monopoly & Open Source Reaction"] N3 -->|Defeated in market| MOZ["Mozilla Project (1998)<br/>The Open Source 'Escape Pod'"] M3 -->|Crushes competition| STAG["IE5, 5.5, IE6 Stagnation<br/>Unpatched security holes & no tabs"] end ```

---

[01:42:50](https://www.youtube.com/watch?v=krB0enBeSiE&t=6170s) The Post-Monopoly Rot and the Evolution of Browser UI

After Microsoft crushed Netscape, the browser wars entered an era of stagnation. Having won total dominance, Microsoft essentially abandoned the browser. Whether constrained by the Department of Justice antitrust proceedings, scrutiny from European regulators, or corporate disinterest in web standards, Microsoft let Internet Explorer rot. Releases like IE5, IE5.5, and IE6 were poorly maintained and riddled with systemic security vulnerabilities. The software sat frozen while user expectations and the broader web continued to evolve.

Independent projects seized the opening to innovate on browser ergonomics. Tabbed browsing emerged—pioneered in niche browsers like Opera and early Mozilla builds—and transformed how people navigated the web. Fridman recalls his own conversion experience: initially disliking tabs for the first few minutes in Firefox, before falling into the groove and realizing browsing could never go back to isolated windows. Pop-up blocking was another overdue innovation. As Eich explains, early browsers permitted scripts to spawn arbitrary windows, creating an epidemic of spam ads. The fix required tracking execution context: inspecting the call stack to verify whether a window was spawned by an explicit user gesture (such as an `onClick` event) or triggered automatically by a loading page script, and blocking the automated ones.

Web design itself was fundamentally modernizing. Designers abandoned ugly hacks like nested HTML tables and transparent "spacer GIFs" that were previously required to hold complex layouts together. While Microsoft had embraced CSS early in IE4 and Netscape had lagged behind, CSS standards gradually matured to handle complex table layouts natively, eventually giving web typography far more power, even if it still lagged behind the fixed-layout precision of PDF.

- **Tabbed navigation:** Developed in Opera and community Mozilla builds, proving so compelling that it permanently broke IE's interface monopoly. - **Pop-up blockers:** Implemented by verifying whether window-opening scripts originated from genuine user clicks on the call stack. - **Layout modernization:** CSS stylesheets gradually replaced table-based web layouts and spacer GIFs.

---

[01:44:54](https://www.youtube.com/watch?v=krB0enBeSiE&t=6294s) Phoenix, Firebird, and the Naming of Firefox

Following the demise of Netscape's proprietary codebase, community-driven development at Mozilla laid the groundwork for a standalone browser in 2002. However, getting the browser’s identity right turned into a bizarre naming saga:

1. **Phoenix (2002):** The browser was initially named Phoenix, but BIOS vendor Phoenix Technologies had an embedded version of IE and objected on trademark grounds, forcing a name change. 2. **Firebird:** The team chose Firebird to retain the mythic fire imagery, but ran directly into an Australian open-source relational database project of the same name. The database community reacted furiously, unleashing fierce backlash in what Eich jokes was *"true Mad Max style."* 3. **Firefox (2004):** To resolve the hostility, Eich acted as an ambassador, agreeing to discard the name. Looking for a distinctive moniker that preserved the fire theme, the team discovered that "firefox" is a common nickname for the red panda. Once the switch was official, the database community was appeased, and Firefox launched in 2004 with native tab support built in from the start.

---

[01:45:56](https://www.youtube.com/watch?v=krB0enBeSiE&t=6356s) The Birth of Mozilla: Open-Sourcing Netscape and the Crypto Hack

By the late 1990s, Netscape could no longer sustain a commercial business model selling web browsers when Microsoft bundled Internet Explorer for free with Windows. Facing insolvency, Netscape agreed to be acquired by AOL—an outcome Eich views as a reasonably fortunate exit for employees under the circumstances. Before the acquisition closed, Netscape executives opted to jettison the browser codebase into the public domain. Eich likens this move to an iconic sci-fi trope:

> “The Netscape executives said, ‘Let's do an open-source escape pod, you know, and like in Star Wars: A New Hope, the gunner won't shoot it because there's no life forms on board, right? It's not a threat.’ Uh, and so we did Mozilla in 1998.”

Releasing Mozilla in 1998 did not solve Netscape’s problems overnight. The original codebase was a massive, tangled "hairball" accumulated over four years of rapid hacking, making it daunting for outside open-source contributors to understand or improve. More critically, United States export controls treated strong public-key cryptography as a military munition; Netscape was legally prohibited from open-sourcing its full 1,024-bit SSL/TLS encryption implementation.

The encryption problem was solved by outside developers operating beyond the jurisdiction of the United States Department of Commerce and the National Security Agency (NSA). Tim Hudson—whom Eich had previously crossed paths with during an SGI engineering sales trip—and Eric A. Young in Brisbane, Australia, had developed SSLeay (named after Young’s initials, which ultimately became OpenSSL). Working abroad, Hudson and Young integrated their independent SSL implementation directly into Mozilla’s source code. Eich praises this clean circumvention of export regulations as perhaps the single best open-source hack achieved in the first few months after the release.

Internally, Netscape was still hobbled by factional politics. A division acquired during Netscape’s buying spree insisted on keeping its own proprietary email and groupware platform closed, while refusing to open-source the stable mail client that Jamie Zawinski had engineered for Netscape 2 and 3. As a result, Mozilla launched strictly as a standalone browser without an integrated mail suite. Though AOL largely left the engineering team alone for years, Netscape was poorly equipped to shepherd the project. Mozilla had no formal legal structure and ran essentially like an unsanctioned "pirate ship" inside the company, with developers operating under an insulated internal unit led by first engineering manager Tom Paquin.

[01:48:16](https://www.youtube.com/watch?v=krB0enBeSiE&t=6496s) Re-architecting Mozilla, XPCOM, and XUL

When Mozilla was first formed, Netscape provided a founding manager who quickly departed, leaving Brendan Eich as the acting manager—a role Eich wryly compares to “method acting.” Eich handled the management responsibilities until Mitchell Baker returned from maternity leave. Baker, a lawyer at Netscape, had played a central role in constructing the project's legal foundations, authoring both the Netscape Public License (NPL) and the fully open Mozilla Public License (MPL). The NPL had initially been required because Netscape held code with third-party licensing encumbrances requiring special rights, though that need faded over time. When Baker offered to take over management, Eich and Jamie Zawinski readily agreed. Zawinski, however, resigned after roughly a year, viewing Mozilla as an outright failure because it had not immediately revitalized the browser market. At the time, Netscape was still shipping variants of Netscape 4 based on its aging codebase, while Mozilla was attempting to build a clean, greenfield foundation.

Eich’s primary objective was as much social as technical: developers were clamoring for a standards-based browser rather than the existing “hairball that had been hacked on by ex-grad students starting four years prior.” The team set out to engineer a completely modular architecture. They adopted an open-source variant of Microsoft's Component Object Model (XPCOM), utilizing reference counting and standardized C++ virtual method tables (`vtables`), linked to JavaScript via a bridging layer so components could be scripted just like Java objects. To create a portable user interface across operating systems without resorting to clumsy HTML tables, they invented XUL (XML User Interface Language) to define custom menus, toolbars, and drop-downs. This work was driven by a core group of talented engineers, including Dave Hyatt, Chris Waterson, Joe Hewitt, and Blake Ross, who began working on the project while still a high school intern.

```mermaid flowchart TD accTitle: Mozilla Modular Architecture accDescr: Architecture diagram showing how XUL, JavaScript, XPConnect, and XPCOM C++ components interact to form the modular browser base.

subgraph Presentation ["Presentation Layer"] XUL["XUL (XML User Interface Language)<br/>Menus, toolbars, dialogs"] JS["JavaScript Engine<br/>Scripts UI and browser logic"] end

subgraph Bridge ["Interoperability Bridge"] XPC["XPConnect<br/>Scriptable component bridge"] end

subgraph Native ["Core Services (XPCOM)"] COM["XPCOM Components<br/>C++ interfaces, ref-counting, vtables"] Engine["Gecko Layout Engine & Networking"] end

XUL --> JS JS --> XPC XPC --> COM COM --> Engine ```

[01:50:20](https://www.youtube.com/watch?v=krB0enBeSiE&t=6620s) Corporate Dysfunction, Layoffs, and Open-Source Resilience

While Mozilla made rapid engineering strides, Netscape was paralyzed by corporate disarray following its acquisition by AOL. Every year brought anxiety over whether AOL corporate executives would descend and terminate Netscape leadership for failing to deliver value. One ongoing AOL scheme involved replacing the engine inside the Windows AOL dial-up client with Netscape’s layout engine, but the aging user base and massive legacy footprint made the transition too risky to ever execute. While AOL largely ignored Netscape, Netscape repeatedly meddled with Mozilla.

In 2001, Mitchell Baker called Eich with unexpected news: she had been laid off. Eich initially assumed she had quit, but the corporate hierarchy had eliminated her position, either by bureaucratic accident or calculated design. However, the dismissal backfired. Mozilla had built a devoted, meritocratic open-source community whose top contributors—hired directly into Netscape—regularly outperformed the median corporate Netscape engineer. When the next weekly Mozilla community coordination call took place, Baker was right there leading it as a volunteer. Eich notes how open source disrupted traditional corporate power:

> “So this show you can kind of transcend your boundaries of corporate open source if you get a project that has enough loyalty even among the paid staff.”

The engineers who resented Mozilla were typically the weaker Netscape developers who shrank from competing in an open crucible alongside outside hackers from places like Red Hat. When Lex Fridman suggests that a great project will always rise like a phoenix from the ashes, Eich agrees that Mozilla's technical momentum could not be halted by corporate missteps.

[01:52:08](https://www.youtube.com/watch?v=krB0enBeSiE&t=6728s) The Bloat of Mozilla 1.0 and the Creation of Phoenix

By 2002, Eich established a release roadmap modeled on rapid five- to six-week cycles—a cadence that foreshadowed modern browser releases by Chrome, Firefox, and Brave. This push culminated in Mozilla 1.0. Eich decided it was time to ship because holding the software back for further polish would prevent external adopters, such as PTC's mechanical CAD software Pro/ENGINEER, from embedding the layout engine. However, Mozilla 1.0 remained a traditional 1990s-style software suite: it bundled the browser with an email client, a Usenet newsreader, and an HTML editor. AOL further cluttered Netscape's commercial builds by demanding toolbar buttons for AOL Instant Messenger (AIM) and ICQ, turning the browser into what Eich describes as a “NASCAR badged version of Mozilla.”

Frustrated by this creeping bloat, a small splinter group—consisting of Dave Hyatt, Blake Ross, Joe Hewitt, Ian Hickson, Asa Dotzler, and Eich—set out to build a lightweight, dedicated web browser under the working directory `mozilla/browser`. Hyatt, the senior technical architect among them, had already mastered tabbed browsing, having implemented it natively in Cocoa on macOS for Camino (originally named Chimera).

Eich recalls an anecdote from Hyatt’s undergraduate days at the University of Illinois Urbana-Champaign (UIUC), told to him by Hyatt’s wife, Rebecca. While a fellow student spent the entire semester attempting to conceive a single, platonic, theoretically perfect software design before writing code, Hyatt continuously hacked, throwing away drafts until his fifth working iteration was a triumph. Hyatt applied this same rapid, iterative mindset to tabs and cross-platform menus in the new browser, which was christened Phoenix.

Phoenix soon faced talent shifts and outside friction: - Phoenix had to be renamed twice due to trademark conflicts, first becoming Firebird and ultimately Firefox. - Blake Ross left day-to-day development to attend Stanford University. - Dave Hyatt was recruited by Apple in 2001 under engineering manager Don Melton (another Netscape alumnus) to help create the original Safari team. - Hyatt continued blogging about how to properly implement tabbed browsing until Apple ordered him to stop, claiming tabbed browsing was proprietary Apple technology, despite the feature having previously appeared in Opera and being refined by Hyatt himself. - Ben Goodger, a talented engineer recruited from New Zealand to Netscape, stepped up to take the technical reins as the lead engineer of Firefox. - Back at corporate headquarters, AOL began to recognize Netscape as an unproductive albatross, forcing senior engineers like Eich into grueling trips to navigate East Coast corporate politics.

[01:56:40](https://www.youtube.com/watch?v=krB0enBeSiE&t=7000s) The AOL–Time Warner Culture Clash and the Evolution of AOL

Brendan Eich recounts traveling to Dulles, Virginia, for corporate “dog and pony shows” during the era when AOL was merging with Time Warner. The upper management of AOL carried a distinctly East Coast, preppy atmosphere, populated by marketing executives who seemed almost entirely out of place in tech. Eich recalls one particular executive named Reggie who wore a cravat, epitomizing what Whit Stillman’s film *Metropolitan* termed the “UHB” (Urban Haute Bourgeoisie)—humorous, sharply dressed, and largely useless. When Eich returned the following year and asked, “Where’s Reggie?”, the response was simply, “Reggie’s not here anymore.” Time Warner had quickly realized the merger was not working in their favor, the knives came out, and the late-1990s corporate obsession with “synergy” unraveled completely, just as it had when AOL acquired Netscape.

When Lex Fridman asks whether AOL ever possessed the genuine excitement, coolness, and fire that Firefox later generated, Eich explains that AOL was simply the right dial-up service at the right historical moment. It captured the American consumer by aggressively distribution-bombing the country with compact discs through the mail, allowing it to beat out early online services like CompuServe and Prodigy. However, once the open World Wide Web emerged, AOL became an anachronism. Eich draws an analogy to evolutionary biology, comparing AOL to an isolated continent like Australia where unique, peculiar marsupial mammals evolved in complete detachment from the rest of the ecosystem. AOL subscribers aged into a captive demographic of relatively high socioeconomic status who used the service simply because it was their familiar portal to get online, but as a closed ecosystem, it steadily withered away as the 2000s came to an end.

- **AOL Headquarters:** Dulles, Virginia, marked by an East Coast corporate culture that clashed with Silicon Valley engineering. - **The "Synergy" Myth:** The late-1990s corporate buzzword failed to materialize both in AOL’s acquisition of Netscape and in AOL’s disastrous merger with Time Warner. - **AOL's Strategy:** Mass physical distribution by “leaflet bombing compact disks” across the United States to defeat CompuServe and Prodigy before the open web bypassed proprietary dial-up portals.

---

[01:58:47](https://www.youtube.com/watch?v=krB0enBeSiE&t=7127s) Web 2.0, the Firefox Surge, and the Search Engine Revenue Model

By the time the decade progressed, Firefox emerged as the cutting-edge, charismatic centerpiece of the internet. In 2004, Tim O’Reilly and John Battelle organized the very first Web 2.0 Conference, marking an explosive ferment across the industry: Craigslist was decimating newspaper classified revenue, Wikipedia was gaining momentum, and Google had introduced groundbreaking web applications like Gmail and Google Maps. Users were stunned to discover they could dynamically drag a map around the screen inside a web page—an effect achieved entirely through clever combinations of JavaScript and image tiles.

During this period, Mozilla established the financial foundation that would sustain it for decades. Early in 2004, Fred Schneider, a trusted engineer working with Sergey Brin, contacted Eich at Mozilla to negotiate placing Google as the default search provider in Firefox. This arrangement became—and remains—Mozilla’s primary revenue stream. Eich emphasizes the fundamental symbiotic and predatory reality between the two technologies: “Search and browser need each other.” When Fridman remarks that relying on default search placement as a core revenue engine is somewhat sad, Eich acknowledges the dynamic, noting that it produces a powerful “capture or kill” effect where major search providers eventually build their own browsers to protect their distribution pipelines.

```mermaid flowchart TD accTitle: The Search and Browser Distribution Loop accDescr: Diagram illustrating the financial and distribution dependencies between browsers and search engines.

subgraph Browser["Web Browser Ecosystem"] FF["Firefox / Independent Browsers"] DefSearch["Default Search Engine Slot"] FF --> DefSearch end

subgraph SearchEngine["Search Engine Provider (Google)"] SE["Search Engine & Ad Platform"] RevShare["Search Revenue / Royalties"] SE -->|"Monetizes Queries"| RevShare end

DefSearch -->|"Directs Query Traffic"| SE RevShare -->|"Funds Browser Development"| FF SE -.->|"Incentive to control distribution"| OwnBrowser["Build First-Party Browser (Chrome)"] ```

---

[02:00:32](https://www.youtube.com/watch?v=krB0enBeSiE&t=7232s) Microsoft's Regrets and the Birth of Google Chrome

The competitive pressure from Firefox failed to provoke a swift, decisive response from Microsoft. Although Microsoft eventually released Internet Explorer 7, Eich recalls overhearing a telling conversation on a flight back to California from a standards meeting in Redmond. Directly in front of him sat a bearded Microsoft engineer who lamented: “We should have just killed Firefox in the cradle. All we needed to do was add pop-up blocking and tabs.” Eich listened from the seat behind, thinking to himself, “Shoulda, coulda, woulda, pal.” Microsoft moved too slowly, and IE7 failed to stem the loss of enthusiasm among technical users.

Instead, the true rival to Firefox emerged from Google. Around 2005, Eich spoke with Larry Page about the evolving relationship between Google and Firefox. Page asked Eich about WebKit, Apple’s fork of the open-source KHTML rendering engine from KDE, which Apple engineers like Dave Hyatt and Maciej Stachowiak were spinning out into the open-source project WebKit.org. Eich told Page: “Why don't you do your own browser? You can have your own opinion of how it should work.” Page took the suggestion seriously, and by 2006, Google was secretly building what would become Chrome.

- **Apple’s Fork of KHTML:** Apple had initially patched the Linux KDE desktop's KHTML engine for Safari in Konqueror before formalizing WebKit.org in 2005 to collaborate more transparently with the broader developer community. - **Eich's Advice to Larry Page:** Eich openly encouraged Google to build its own browser rather than solely relying on or conforming to Mozilla's roadmap.

---

[02:02:18](https://www.youtube.com/watch?v=krB0enBeSiE&t=7338s) The "Sad Tab," Process Isolation, and the Race for Distribution

By 2006, ex-Netscape engineers working inside Google gave early demonstrations of Chrome's prototype. At that stage, Chrome did not yet feature the blisteringly fast V8 JavaScript engine being developed by Lars Bak in Denmark. Instead, its revolutionary architectural breakthrough was software fault isolation achieved via multi-process architecture. Historically, when a browser crashed, the entire window and all active tabs disappeared. In those years, Adobe Flash was ubiquitous—running every multimedia and restaurant menu website—and crashed constantly. Google had acquired a security startup called GreenBorder (involving computer scientist Úlfar Erlingsson), distilling complex isolation concepts into dedicated operating system processes per browser tab.

Eich describes the iconic early demo: Google engineers deliberately loaded a webpage containing a known Flash exploit. Instead of taking down the entire browser window, the single failing container died and displayed the now-famous “sad tab” icon, allowing the user to simply reload the tab while the rest of the browser continued running smoothly. This architectural leap gave Chrome a decisive security and stability advantage over Firefox, which was still wrestling with single-process architecture and security vulnerabilities.

Chrome leaked via an illustrated comic book in September 2008 and conducted a soft launch without immediate heavy marketing. However, Google’s leadership was deeply paranoid about distribution vulnerabilities. In 2007, Microsoft began launching its search engine, Bing, prompting acute fears in Mountain View that Microsoft would use its Windows monopoly to switch the default search engine in both Internet Explorer and Firefox from Google to Bing. In response, Google executive Sundar Pichai spearheaded extensive defensive distribution pacts, scaling Google Toolbar and Google Desktop Search across millions of OEM machines to protect Google's search gateway on personal computers.

- **The "Sad Tab" Demo:** Proved that process isolation could insulate the parent application from crashes in third-party plugins like Adobe Flash. - **Firefox's Peak:** Firefox's market share climbed steadily through the late 2000s, reaching its peak around 2011 before losing significant ground to Chrome's speed, stability, and distribution engine. - **The Bing Threat:** Google feared Microsoft would “brute force switch the default browser in everyone's Internet Explorer or even Firefox on Windows to Bing from Google,” prompting Sundar Pichai to secure fallback search entry points via desktop toolbars and system extensions.

[02:05:07](https://www.youtube.com/watch?v=krB0enBeSiE&t=7507s) Search Engine Coupling, Defaults, and Mozilla's Yahoo Misstep

Brendan Eich explains how Google secured its distribution in the mid-2000s under Sundar Pichai. Pichai negotiated deals with original equipment manufacturers (OEMs) to bundle specific components. By 2007 or 2008, Google had amassed enough OEM distribution deals that if Microsoft attempted to use its desktop dominance to force Bing onto users, Google possessed an independent point of presence to reach in and reset the default. While Pichai’s strategy accelerated his career, Microsoft was slow to retaliate. Once Google released Chrome, Microsoft eventually responded with Internet Explorer 9 and introduced their own fast, process-isolated JavaScript engine called Chakra (ChakraCore).

```mermaid flowchart TD accTitle: The Search Engine Default Dilemma accDescr: Shows the impact of switching default search providers on user retention and traffic.

subgraph ChromeStrategy["Google's OEM Defensive Moat"] OEM["OEM Bundling Deals (Sundar Pichai)"] --> ResetCap["Reset Capability if Microsoft Enforced Bing"] end

subgraph FirefoxYahoo["Firefox's 2014 Default Switch"] DefaultSwitch["Switch Default to Yahoo (Dec 2014)"] UserAction["Users Manually Revert to Google"] TrafficDrop["Yahoo Search Traffic Drops Over Time"] FixedPayout["Mozilla Receives Fixed Deal Payments"]

DefaultSwitch --> UserAction UserAction --> TrafficDrop DefaultSwitch --> FixedPayout end ```

Lex Fridman observes that there is an intense, fundamental coupling between web browsers and search engines. Because Firefox lacked an in-house search engine, it relied on external partnerships for revenue. Eich recounts the disastrous December 2014 transition when Mozilla switched Firefox’s default search provider from Google to Yahoo. Although Yahoo CEO Marissa Mayer championed search, she had inherited a crippled product after previous CEO Carol Bartz had laid off the search engineering team to cut costs, dispersing top search researchers to Google and Microsoft. When Mozilla made Yahoo the default, users rebelled or gradually switched their default search back to Google over the course of the following year. Public reporting by figures such as Danny Sullivan at *Search Engine Land* revealed that Yahoo had agreed to guaranteed fixed payments, leaving Mozilla well-compensated while Yahoo hemorrhage traffic:

> “And this shows how defaults are important, but they have to be good enough that the user doesn't override them.” — Brendan Eich

- Sundar Pichai’s OEM bundling deals insulated Google against aggressive Microsoft Bing distribution between 2007 and 2008. - Microsoft eventually matched modern tabbed browsing and isolated processes with Internet Explorer 9 and its Chakra/ChakraCore JavaScript engine. - Carol Bartz cut Yahoo's core search engineering team, preventing Marissa Mayer from rebuilding a competitive internal search stack before the Firefox deal. - The commercial value of browser applications remains tied to default search placements, but users will manually override defaults if the service degrades.

---

[02:07:32](https://www.youtube.com/watch?v=krB0enBeSiE&t=7652s) The Rise of the Privacy Wave and Safari's Origins

Fridman and Eich identify a third era of browser evolution featuring Chrome, Firefox, Microsoft Edge, and Brave. Rather than just competing on rendering speed or tab management, modern browsers actively differentiate themselves through tracking protection. Eich describes the societal demand for privacy as an emerging global wave—a massive, somewhat chaotic phenomenon rather than a simple off-the-shelf commodity:

> “I like to call it a wave because it's a large, somewhat chaotic structure. It's not a unitary good. You can't say, 'I'm buying privacy for, you know, three dollars.'” — Brendan Eich

Eich points out that consumers frequently misunderstand privacy, assuming a VPN protects them, only to discover it merely shifts trust or serves primarily to bypass regional licensing restrictions to access US Netflix catalogs. Real privacy is far more complex, but a growing awareness of surveillance capitalism has permanently broken through consumer consciousness. Apple capitalized early on this sentiment with Safari, likely directed by Steve Jobs. Safari pioneered private browsing tabs and windows well before Firefox introduced them. Eich notes that early private windows were primarily built for local session privacy (ensuring no local traces were left behind if someone bought an embarrassing gift or visited a sensitive website), even though Safari initially retained some residual state between shut-downs. Crucially, local private windows did nothing to defend against external network-level surveillance, as requests traveled over the exact same ISP as standard traffic.

- Browser competition has shifted focus from JavaScript execution speed to native tracking protection. - Consumer VPNs do not offer holistic privacy; they are primarily used to unlock geo-restricted media content. - Apple's Safari set the industry precedent for privacy branding, shipping local private windows and strict third-party cookie restrictions prior to other major browsers.

---

[02:09:23](https://www.youtube.com/watch?v=krB0enBeSiE&t=7763s) Accidental Surveillance: How Cookies and Pixels Broke the Web

The core tracking infrastructure of the web was never intentionally designed to surveil users; it evolved out of rapid, ad-hoc architectural compromises in the mid-1990s. Eich explains that HTTP web protocols were inherently stateless. Without a persistent identifier, a user logging into a bank would be prompted for credentials on every subsequent page click. To resolve this, Lou Montulli created cookies at Netscape in 1994, allowing a domain to store a tiny string—such as an encrypted authentication token with a timestamp—that the browser automatically echoed back to the host server on subsequent requests.

The vulnerability emerged because web pages also allowed arbitrary embedded resources, such as images. An embedded image hosted on an external server would also transmit and receive cookies. Ad-tech firms leveraged this mechanism by embedding invisible 1x1-pixel images across disparate websites:

```mermaid sequenceDiagram accTitle: Third-Party Cookie Tracking Sequence accDescr: Demonstrates how an embedded tracker assigns a user ID across different websites using cookies.

autonumber actor User as User Browser participant NYT as nytimes.com participant AdServer as tracker.adtech.com participant ESPN as espn.com

User->>NYT: 1. Visit news page NYT-->>User: Return HTML containing tracker pixel User->>AdServer: 2. Fetch 1x1 pixel (Cookie: Empty) AdServer-->>User: Set-Cookie: id=1234; (Logs: User 1234 read NYT)

User->>ESPN: 3. Visit sports page ESPN-->>User: Return HTML containing same tracker pixel User->>AdServer: 4. Fetch 1x1 pixel (Cookie: id=1234) AdServer-->>User: Return 1x1 pixel (Logs: User 1234 read ESPN) ```

Montulli attempted to resolve these emerging third-party tracking vectors and expand cookie size limits with a proposal called "Twinkies," but Netscape engineering manager Tom Paquin dismissed the project with, “Nope, no twinkies, just cookies, we’re done. You’re done, son.” Much like Eich's own rushed implementation of JavaScript's loose equality operator (`==`), the unconstrained cookie system became frozen in time. When Eich later made dynamic script embedding possible in Netscape 3, tracking companies stopped relying on 1x1 tracking pixels and migrated entirely to invisible JavaScript execution.

- Cookies were designed by Lou Montulli in 1994 strictly to preserve state across page reloads without forcing frequent re-authentication. - Third-party tracking arose from the interaction between domain-indexed cookies and cross-origin resource requests (such as images and scripts). - An ad-tech server hosting a single-pixel image across publishers could assign a persistent user ID, record browsing paths, and assemble user profiling databases. - Netscape management killed the proposed "Twinkies" standard, locking the web into structural tracking hazards that subsequently powered social media ad platforms. - Eich founded the Brave browser to challenge this dynamic by blocking third-party tracking scripts, cookies, and intrusive ad-tech by default.

[02:13:41](https://www.youtube.com/watch?v=krB0enBeSiE&t=8021s) First-Party vs. Third-Party Code, Tracking, and Fingerprinting

The web has become inundated with malicious vectors—ranging from malware distribution and bot-driven psyops to surveillance trackers. Brendan Eich observes that while the browser must aggressively block these threats, the creator of JavaScript faces an ironic dilemma: “I’m Dr. Frankenstein with the monster here, but obviously you go to Gmail, there’s a bunch of script there to make that amazing web client; that’s okay, that’s first-party JavaScript.” Distinguishing legitimate first-party code from abusive third-party code is fundamentally hard. Publishers routinely embed benign scripts from unrelated domains, meaning a naive domain check fails to separate critical site functionality from covert tracking.

To tackle this, Brave built an in-house research team combining human heuristics with local machine learning to automate script classification and tracker blocking. Fingerprinting poses an especially insidious threat: if a malicious actor can access even one bit of storage across 32 separate sites, those 32 bits yield over 4 billion distinct combinations, creating a persistent, pseudo-anonymous identifier known as a supercookie. Beyond explicit local storage, statistical fingerprinting vectors exploit small rendering differences across system configurations, requiring browsers to systematically reduce the exposed attack surface.

```mermaid flowchart TD accTitle: First-Party vs Third-Party Script Classification accDescr: Flow showing how incoming scripts are analyzed by machine learning to separate benign site functions from tracking vectors.

subgraph Ingestion ["Page Request"] A["Incoming Script Execution"] end

subgraph Analysis ["Brave ML & Heuristics"] B{"Origin & Behavior Check"} C["First-Party Functional Script<br>(e.g., Gmail Client Engine)"] D["Third-Party Tracker / Exploitation Vector"] end

subgraph Enforcement ["Browser Protection"] E["Execute in DOM"] F["Block Script Execution"] G["Partition Storage / Spoof Fingerprint Surface"] end

A --> B B -->|"Benign / First-Party"| C B -->|"Tracking / Ad Tech / Malicious"| D C --> E D --> F D --> G ```

- Distinguishing first-party application logic from third-party tracking scripts cannot be accomplished via domain names alone, as many publishers pull standard utility libraries from third-party CDNs. - A malicious actor only needs 32 distinct cooperating origins with a single bit of persistent client storage each to uniquely distinguish more than 4 billion individual users.

---

[02:14:48](https://www.youtube.com/watch?v=krB0enBeSiE&t=8088s) The AppNexus Loophole and Safari’s Intelligent Tracking Prevention

When Apple launched Safari in 2003, it introduced an early privacy protection: blocking third-party cookies from any domain the user had never explicitly visited. Under Steve Jobs, this served as an early stance against web surveillance. However, ad networks engineered clever workarounds. Eich singles out AppNexus as a prime historical example: a typical web user never intentionally browsed to AppNexus, yet almost every Firefox or Internet Explorer user carried an AppNexus cookie tracking their browsing habits across the web.

Under Safari's original rule, AppNexus could not set a third-party tracking cookie directly. To circumvent this, AppNexus instructed partner publishers to alter ad click-through targets. When a user clicked an ad, the browser was redirected through AppNexus first—setting a valid first-party cookie—before instantly bouncing the user onward to the merchant's landing page. Once whitelisted as a visited first-party site, AppNexus was free to track that user via third-party contexts across the web. Apple addressed this loophole in the spring of 2017 with Intelligent Tracking Prevention (ITP), deploying on-device machine learning to detect and neutralize redirect tracking. Brave implemented similar aggressive protections, isolating third-party cookies into distinct, partitioned "cookie jars" per site to prevent cross-site identity leakage without breaking legacy embeds like YouTube videos.

- Safari’s 2003 cookie policy allowed third-party cookies only if the user had previously visited the embedded domain directly as a top-level site. - Ad networks defeated this rule by inserting intermediary bounce redirects on ad clicks, converting their trackers into ostensibly legitimate first-party visits. - Modern privacy engines like Apple's ITP and Brave's shields use per-site storage partitioning, effectively ensuring that a third party on one site cannot inspect cookies deposited by the same third party on another site.

---

[02:16:47](https://www.youtube.com/watch?v=krB0enBeSiE&t=8207s) Google as the New Microsoft and the Fight over Web Standards

Enforcing privacy on the open web requires fighting institutional battles within international standards bodies like the W3C and WHATWG. Eich points out that web architecture should embody privacy by design, rather than treating user protection as a retroactive patch. However, standards negotiations are heavily steered by incumbent platform owners who prioritize surveillance monetization:

> “And that’s been a struggle too, because guess who’s the new Microsoft in the standards body: it’s Google, and they’re not in favor of privacy first.”

Google resists default-on privacy controls unless compelled by market pressure from competing browsers like Apple's Safari and Brave. Because Brave blocks third-party tracking cookies by default, the engineering team frequently has to emulate legacy cookie behavior. By isolating and partitioning storage into site-specific virtual environments, Brave maintains site functionality—such as embedded media widgets—without allowing surveillance scripts to stitch together a continuous timeline of a user's web history.

- Google has assumed the legacy role once held by Microsoft: dominating standards committees to safeguard its proprietary platform and advertising revenues. - Privacy by design requires restricting the introduction of new browser APIs that unnecessarily expose local hardware or font attributes to fingerprinting scripts. - Client-side storage partitioning simulates a functioning cookie state for embedded media while preventing the underlying vendor from querying the global browser state.

---

[02:18:00](https://www.youtube.com/watch?v=krB0enBeSiE&t=8280s) The Failure of Anti-Ad Blocking and the Rise of Ad Fraud

The programmatic advertising ecosystem reached an inflection point in the mid-2010s. AdBlock Plus had popularized ad blocking on Firefox as early as 2006, and mobile browsers such as UC Browser in Asia subsequently introduced ad blocking by default. By 2015, analytics startups like PageFair began alerting publishers that 30% or more of visitors to premier properties—such as Condé Nast’s *Wired* or *Pitchfork*—were running ad blockers. PageFair calculated that convincing those visitors to disable their blockers could yield a theoretical 43% revenue lift.

Publishers responded by hiring firms like PageFair and Sourcepoint to deploy anti-ad-blocking paywalls, ad re-insertion scripts, and guilt-trip messaging. These tactics largely failed; users doubled down on ad blocking rather than capitulating. Meanwhile, Google channeled publishers into proprietary, closed distributions like AMP (Accelerated Mobile Pages) while taking substantial cuts of ad revenues. Worse, the programmatic auction ecosystem became riddled with severe click fraud and malware distribution:

> “A fake New York Times is getting paid by the marketer running an ad that a bot clicks on, and the real New York Times that’s supposed to get that doesn't get it, and there’s something really broken about that kind of system.”

Malicious actors routinely bought exchange inventory to smuggle JavaScript exploit kits onto legitimate news sites, while ad exchanges took transaction fees on both sides. Eich questions how ad exchanges can profit from facilitating fraud and distributing malware without facing scrutiny: “Now, I’m not a lawyer, I’m not going to say this is a RICO predicate, but why is the ad exchange facilitating fraud and malware distribution and taking a fee? It's not right.”

- In 2015–2016, roughly 30% of traffic to major digital publications was already using ad-blocking extensions, representing a massive loss of expected programmatic revenue. - Early ad-tech defenses attempted to cajole readers into whitelisting sites or relied on circumvention scripts to force ads through blockers, but both techniques failed to halt user adoption. - Ad networks frequently broker automated traffic where non-human bots click ads on counterfeit domains, misallocating marketing budgets away from legitimate content creators.

---

[02:20:32](https://www.youtube.com/watch?v=krB0enBeSiE&t=8432s) Rethinking Browser Economics and the Genesis of BAT

Watching these systemic failures take root, Eich realized that browser architecture had to fundamentally evolve beyond passive software. At Mozilla, Firefox was financially tethered to search syndication deals with Google. Eich saw the writing on the wall once Chrome established market dominance:

> “Now that Chrome’s out, maybe that’s going to go away, and at some point Google will say, you know, ‘Firefox, like Old Yeller, you saved me from the rabid beast, now I have to shoot you in the head.’”

Mozilla possessed no viable alternative business model to break this dependency. When founding Brave, Eich questioned why the web browser had been reduced to a blind, passive runtime executing toxic ad-tech scripts. Web ads are not rendered into monolithic page images on a remote publisher server; they are assembled locally inside the client's browser through dozens of asynchronous network requests to ad tech partners.

Because the browser possesses the final authority over what gets rendered, Eich realized it could fundamentally invert the economics of the web. Instead of acting as an uncritical host for surveillance capitalism, the browser could directly mediate the relationship between readers and creators. By blocking exploitative middleman scripts, the browser could facilitate local, privacy-preserving ads and channel financial value directly back to publishers and users—a structural realization that led directly to the creation of the Basic Attention Token (BAT).

- Firefox’s operational survival was dependent on revenue-sharing royalties derived from setting Google as its default search engine. - Web advertisements are not baked into server-side page assets; they are assembled dynamically inside the client browser DOM via external JavaScript calls. - The realization that the browser controls the final rendering pipeline prompted Eich to design a client-side economic model—connecting publishers, creators, and users through cryptocurrency micro-settlements.

[02:22:17](https://www.youtube.com/watch?v=krB0enBeSiE&t=8537s) Micropayments, Subscriptions, and Early Bitcoin Experiments

Brendan Eich explains the economic dilemma created by blocking online tracking: when you sever the flow of advertising dollars running from brands and agencies to publishers, reconnecting that revenue stream directly through the end user proves exceptionally hard. Ordinary users will not set up an ACH bank transfer or enter a credit card on every individual website they visit. Meanwhile, publishers only want users to register as full subscribers, charging inflated rates so readers cross-subsidize every piece of content whether they read it or not. While juggernauts like *The New York Times* and *The Washington Post* can thrive under that model, an individual consumer cannot manage a thousand discrete subscriptions. Eich notes startups like Tony Haile's Scroll attempted to build portable subscriptions across publishers, but friction remains severe everywhere. Lex Fridman points out that even subscribing to *The New York Times* is frustratingly cumbersome due to excessive clicks and confusing interfaces, recalling friends who paid for print editions only to find themselves upcharged and shut out of digital access.

Because traditional publishers lack the technical infrastructure to run seamless micropayments, historical efforts like Blendle in the Netherlands struggled to scale upon expanding to the United States. Eich reasoned that a privacy-preserving browser that blocks ad-tech tracking junk is uniquely positioned to offer a native cryptocurrency option to fund creators and YouTube channels. Brave initially prototyped this idea using Bitcoin in 2016 and 2017. However, the system demanded that users already possess discretionary income and crypto literacy. As the Bitcoin network experienced severe congestion, confirmation times slowed down and transaction fees soared:

> “And a lot of users who were not Bitcoin maximalist or even experienced, we helped them out by embedding a Coinbase buy widget, and they had the income to buy, but it was hard. It was like, do I buy five dollars a month, but the fee is like 4.50? I better buy in larger batches, right? Then they're like, I don't want to own that much Bitcoin. So it became this painful thing, and the real idea that I had of private ads that pay the user a rev share couldn't be realized alone in that kind of system.”

[02:24:31](https://www.youtube.com/watch?v=krB0enBeSiE&t=8671s) The Broken Ad-Tech Middleman Economy

Recognizing Bitcoin's non-Turing-complete scripting constraints and high transaction fees, Brave migrated its design toward Ethereum to utilize smart contracts. Eich envisioned a balanced three-sided marketplace comprising users, publishers/creators, and advertisers. In this setup, advertisers inject capital as they always have, but bypass rent-seeking intermediaries like Google and AppNexus. Eich illustrates the parasitic nature of current ad tech by citing an empirical study conducted by *The Guardian* in the United Kingdom. The newspaper ran a month-long trial in which it bought out its own ad space: for every £1 spent by their media-buying arm, only 30 pence actually reached the publishing side. Fully 70% of the expenditure was siphoned off by intermediary vendors, ad exchanges, and tracking networks—an inverted distortion compared to app stores, which take 30% and leave 70% to developers. In the earlier television era of Ted Turner's TBS superstation, media creators retained around 85%.

Beyond excessive revenue extraction, the ad-tech programmatic pipeline harbors deep structural vulnerabilities. It fuels malware and click fraud through spoofed domains, while simultaneously draining traffic from legitimate newsrooms. Eich shares an anecdote from Jason Calacanis, who observed that once he allowed an ad network partner to syndicate audience identifiers across properties, rival outlets and cut-rate clickbait farms immediately hijacked his audience segments at discounted rates. By serving sensationalized, low-cost content aimed at re-targeted readers, these middlemen ended up fueling misinformation and digital ad fraud. Brave was engineered to cut off that entire supply chain by blocking trackers by default and instituting an attention-based alternative.

```mermaid flowchart TD accTitle: Broken Ad Tech vs Brave Direct Split accDescr: Comparison of traditional ad-tech revenue flow versus Brave's direct BAT three-sided ecosystem.

subgraph BrokenModel["Traditional Ad-Tech Middleman Pipeline"] direction TB A["Advertiser spends £1.00"] --> B["Intermediaries: DSPs, SSPs, Google, AppNexus"] B -->|"70% lost to fees, fraud & malware"| C["Ad-Tech Vendors keep £0.70"] B -->|"Leaves 30 pence"| D["Publisher receives £0.30"] end

subgraph BraveBAT["Brave BAT 3-Sided Architecture"] direction TB ADV["Advertiser"] -->|"Ad spend"| BRAVE["Brave Private Ad Engine"] BRAVE -->|"70% Revenue Share"| USR["User (Browser Attention)"] USR -->|"Tips / Auto-Contribute"| PUB["Verified Creators & Publishers"] BRAVE -->|"30% Share"| PLAT["Brave Platform Infrastructure"] end ```

[02:26:30](https://www.youtube.com/watch?v=krB0enBeSiE&t=8790s) Regulatory Friction, Blockchain Limitations, and Browser Primacy

By deploying the Basic Attention Token (BAT) as an ERC-20 utility token on Ethereum, Brave unlocked an automated three-way revenue share that compensates users directly for opt-in viewing. However, enabling users to withdraw that value to external wallets directly intersects with stringent global regulatory frameworks. U.S. federal entities—including the Treasury Department’s Financial Crimes Enforcement Network (FinCEN) and the Office of Foreign Assets Control (OFAC)—impose rigorous anti-money laundering (AML) and know-your-customer (KYC) requirements to block illicit financing:

> “Now unfortunately for us, and for all blockchain, the regulators are saying, we're going to have to know who you are. There's the Treasury Department's FinCEN agency, there's the Office of Foreign Asset Controls (OFAC), there's other regulators in the federal government that take a very dark look at things like money laundering and sending money to someone named Osama bin Laden. So compliance starts to come in, and even now they're threatening for pure Bitcoin sending to some address, if you're a Coinbase, you're going to have to know who's at that address.”

While custodial platforms like Coinbase comply as regulated Money Services Businesses (MSBs), Eich points out that regulators increasingly target un-hosted, self-custodial hardware wallets by proposing compliance mandates whenever transfers cross relatively modest monetary thresholds. Although Eich affirms that peer-to-peer cryptocurrency transfers without bank friction or wire delays are genuinely revolutionary, Brave had to adopt a pragmatic posture:

- **Browser-Side Imputation:** Because distributing cash equivalents directly requires MSB licensing and mandatory KYC, Brave’s default mode preserves anonymity. It assigns revenue to the local browser client, allowing users to direct those tokens toward verified creators without exposing their personal identities. - **Hybrid Blockchain Architecture:** Public blockchains remain too slow and lack baseline privacy, meaning persistent on-chain transaction graphs risk fingerprinting users over time. BAT was therefore architected as a hybrid structure uniting the blockchain with the browser as a trusted endpoint. - **The Browser as Super App:** As screen sizes increase, users shift away from standalone desktop native wrappers (such as Electron-based Slack) and back toward the browser. Eich argues that with appropriate security sandbox permissions, modern web browsers can match or exceed native application experiences. - **On-Device Private Matching:** Unlike Google—which patches together incomplete behavioral data via DoubleClick cookies, YouTube, Android, and search queries—the browser sits at the apex of all telemetry. It observes cross-engine searches and browsing history locally. Brave runs machine learning entirely client-side on the device to match ads privately against that rich feed without any personal data leaving the user’s machine.

[02:30:27](https://www.youtube.com/watch?v=krB0enBeSiE&t=9027s) On-Device Machine Learning and Brave's Ad Catalog

Brendan Eich explains the technical architecture behind Brave’s private advertising model. Rather than relying on heavy deep learning frameworks like TensorFlow, Brave employs classical machine learning techniques—specifically Support Vector Machines (SVMs) and Naive Bayes classifiers—running directly on the user's local device. The browser analyzes local intent signals without sending any personal data back to Brave's servers. These signals include search queries, browsing history, how far a user scrolls down a page, and how frequently searches are repeated. Eich stresses: “It’s all blind browser algorithm; we don't see that data.”

```mermaid flowchart TD accTitle: Brave On-Device Ad Matching Flow accDescr: Diagram showing how Brave downloads a shared catalog and matches ads locally without telemetry. subgraph Cloud["Brave Infrastructure"] DirectSales["Direct Sales Team"] --> CatalogGen["Generate Daily Ad Catalog<br/>(Metadata & Edge Cache Links)"] end

subgraph Client["User Device (Brave Browser)"] LocalData["Local Intent Signals<br/>(Scroll Depth, Queries, History)"] LocalML["Local ML Engine<br/>(SVMs & Naive Bayes)"] LocalData --> LocalML CatalogGen -->|"Fixed Catalog Broadcast (Daily)"| LocalML LocalML --> ChosenAd["Matched Ad Display"] end

subgraph CDN["Edge Caches"] ChosenAd -->|"Direct Asset Fetch"| MediaFetch["Video / Web Assets"] end ```

The browser pairs these client-side intent signals against a catalog of ads downloaded once per day across a broad population segment. This catalog does not contain large multimedia files like videos or full web pages; instead, it consists strictly of metadata, relevant targeting keywords, and links pointing to edge caches. Eich notes that while edge caches could theoretically log a user's IP address—something Brave might mitigate with Tor in the future—the advertiser never tracks the individual browsing session. Instead of servers spying on user behavior, each installation of the browser functions as an autonomous machine learning node picking relevant offers from a shared catalog.

- **Intent Signals Analyzed Locally:** Query keywords, search re-queries, browsing history, and page scroll depth. - **Model Types:** Lightweight on-device SVMs and Naive Bayes rather than resource-heavy neural network frameworks. - **Catalog Structure:** Synchronized daily over large demographic cohorts, containing ad metadata and edge-cache URLs rather than embedded media assets.

---

[02:31:44](https://www.youtube.com/watch?v=krB0enBeSiE&t=9104s) Rethinking Web Monetization: 70/30 Revenue Share and Creator Support

Lex Fridman asks whether this model could disrupt the multi-billion-dollar digital advertising landscape dominated by Google, wondering what the web would look like if the philosophical principles behind Brave came to run 95% of the internet. Eich reacts with trademark humor: “First of all, if Brave gets 95%, I'm going to demand a recount because I won't believe it.” Rather than aiming for absolute market dominance, Eich advocates baking these privacy-preserving economic primitives directly into open web standards so multiple competing browsers can implement them.

Under Brave's system, 70% of gross ad revenue is returned directly to the user in Basic Attention Tokens (BAT). Users who undergo identity verification (KYC) can withdraw those funds, or they can tip their favorite publishers and creators. Some users choose to opt out of viewing ads entirely while still funding the ecosystem out-of-pocket; Eich cites Zooko Wilcox-O'Hearn of Zcash fame, who disables ads but deposits $20 every month for the browser to allocate anonymously to publishers based on his attention and time spent. Eich points out that creators on YouTube currently rely heavily on centralized tipping platforms like Patreon, which charge a 5% cut and carry significant deplatforming and censorship risks. If browser-level tipping became a web standard—with Brave taking only a 3% platform fee or operating purely as client software—creators could earn money without intermediaries exercising censorship power.

- **Ad Revenue Distribution:** 70% goes to the user, while Brave retains a 30% cut (mirroring traditional app store splits, with plans to reduce it as scale increases). - **Publisher Verification:** Websites verify domain ownership through a process akin to obtaining an SSL/TLS domain certificate to claim user-directed tips. - **Counterparty Risk Reduction:** Direct browser-to-creator funding removes centralized gatekeepers and fee-skimming middle layers.

---

[02:34:20](https://www.youtube.com/watch?v=krB0enBeSiE&t=9260s) Privacy Sandboxes, Antitrust, and the Innovator's Dilemma

When Fridman asks whether dominant incumbents like Microsoft or Google could simply copy Brave’s protocols and crush them, Eich acknowledges that open web protocols are inherently easy to copy, but he argues that incumbents are trapped by their own business models. With regulators like DG Comp in the European Union and renewed antitrust scrutiny in the United States, tech monopolies face growing constraints. Eich doubts that calls from politicians like Elizabeth Warren to break up big tech will materialize into direct corporate dissolutions, but he believes Google will eventually be forced to divest assets like DoubleClick rather than merely applying "privacy perfume on Chrome."

Eich critiques Google's public privacy proposals, such as the Privacy Sandbox, FLoC (Federated Learning of Cohorts), TURTLEDOVE, and FLEDGE, characterizing them as over-engineered systems dependent on differential privacy. He notes that while differential privacy attempts to hide individuals in a crowd by injecting statistical noise, persistent adversaries can systematically isolate users over time. Major browser vendors like Apple, Mozilla, and Brave refuse to accept Google's proposals as industry standards:

> “Apple, Brave, Mozilla, we're not going to just say, ‘Oh, Google, you saved us; you've invented the Privacy Sandbox, so we'll all just adopt it.’”

Instead, Eich points toward cryptographic methods like blind signatures—pioneered by David Chaum—which Brave already utilizes to verify ad impressions without revealing identities. Even though Google has supported Chaumian blind signatures via its Trust Tokens initiative, Eich emphasizes that Google cannot apply these mechanisms to ad confirmations without undermining its own multi-billion-dollar ad tech infrastructure. Google suffers from classic innovator's dilemma: it remains beholden to an intricate web of non-technical publishers and third-party ad tech vendors that depend on server-side tracking scripts.

---

[02:36:47](https://www.youtube.com/watch?v=krB0enBeSiE&t=9407s) Eliminating the Programmatic Waterfall and Resisting the AMP "Borg"

Fridman observes that Brave consistently feels significantly faster than even Google Chrome. Eich explains that this speed advantage stems directly from aggressive ad-blocking, which severs the "programmatic waterfall"—a cascade of chained network requests where dozens of ad networks auction off user impressions in real time. Cutting out this waterfall preserves device battery life by leaving the cellular and Wi-Fi radios idle, saves user bandwidth, and strips out vast quantities of unoptimized JavaScript. Eich jokes about ad-tech code quality:

> “The speed and the battery savings and data plan savings are significant. There's so much bad JavaScript involved in ad tech—if you block it and you sort of chop off the what's called the programmatic waterfall which chains a bunch of requests...”

Google engineers often brush off these performance drains as isolated bad sites, but Eich insists comprehensive web surveys show that bloated JavaScript is the norm. To mask this slowness on mobile devices, Google introduced AMP (Accelerated Mobile Pages), encouraging publishers to host stripped-down content on Google's cache in exchange for preferential placement in mobile search carousels. Eich argues that publishers detest AMP because it strips away their distinct branding and treats their work like commoditized gig content served under a Google URL frame. Eich views AMP as an antitrust liability that aims to assimilate independent media: “It just looks like Google’s borgifying all these publishers, and they don't want to be plugged into the Borg cube; they want to build their own brand and have loyal readers.” As the segment concludes, Eich turns his focus from publisher models toward social networks, framing them alongside search as massive, graph-traversal global algorithms.

[02:38:37](https://www.youtube.com/watch?v=krB0enBeSiE&t=9517s) Owning the Social Graph and Multi-Network Resiliency

Brendan Eich outlines an architectural vision where users retain custody over their own social graphs rather than renting them from centralized walled gardens. Under current models, platforms own the entire friend-of-a-friend relation, meaning users cannot freely transport their network, and their posts can be unceremoniously deleted or censored. Eich imagines a browser-level solution that aggregates social connections across distinct platforms like Facebook and Twitter into a unified local database. In this model, even if an account is suspended or purged from one network, the user retains their aggregated identity graph, enabling them to discover their contacts elsewhere without interruption.

Lex Fridman connects this concept to recent events involving centralized de-platforming, citing how the WallStreetBets community faced suppression and Parler was wiped off the internet when Amazon Web Services (AWS) revoked its infrastructure hosting. In response to Fridman asking whether individual users can acquire tools to push back against this overreach, Eich acknowledges that when an oligarchy aligns with state authority—commanding military, police, and taxation powers, as exemplified by the Great Firewall of China—it presents an extraordinarily formidable threat that cannot easily be defeated. At the same time, he maintains faith in technological adaptability: "the internet routes around censorship."

```mermaid flowchart TD accTitle: User-Centric Multi-Social Browser Model accDescr: A diagram contrasting centralized platform lock-in with a browser-based federated social graph.

subgraph Centralized["Platform Lock-In"] direction TB P1["Twitter Profile"] --> T1["TOS / De-platform Risk"] P2["Facebook Profile"] --> T2["TOS / De-platform Risk"] end

subgraph BrowserLayer["User-Centric Architecture"] direction TB B1["Brave / Local Client"] --> B2["Aggregated Identity Graph"] B2 --> B3["Cross-Network Resolution"] end

Centralized -->|"Abstracted to"| BrowserLayer B3 -->|"Resilient to"| Outage["Targeted Bans & Server Takedowns"] ```

However, Eich warns against absolute, naive approaches to free speech that completely reject all content moderation. When platforms run entirely unconstrained under an absolute free speech banner, bad actors swiftly exploit the void: “one of the things that happens when you try to wave the free speech flag too much you say i'm not going to censor anything and you get colonized by terrible terrible people.” This colonization by bad actors or illegal activity inevitably ruins a company's brand reputation and destroys the enterprise. Instead of ideological free speech crusades, the practical alternative is user-first subsidiarity and client-side subjectivity: an interface where the user controls their own filters, tracks people across fragmented networks, and reconstructs their social web dynamically.

---

[02:41:05](https://www.youtube.com/watch?v=krB0enBeSiE&t=9665s) Centralized Search, Monopoly Capture, and Cartels

Eich traces the central capture of web browsers directly back to search engines. Because search depends on large-scale centralized indexes, users traded away incremental privacy in exchange for error correction and relevance. Larry Page openly acknowledged this trade-off years ago, and former Google executive Alan Eustis remarked humorously on how Google engineers would laugh at users mistyping their queries, acting as an all-knowing mediator telling them what they actually meant to ask. In 2004, when Mozilla closed its default search deal with Google for Firefox, Google offered superior results. Over time, however, the dynamic deteriorated: search engine optimization (SEO) devolved into a hostile, adversarial game, while Google increasingly leveraged its search results page to favor vertically integrated products like YouTube over external websites.

This dynamic closely resembles monopoly capitalism or cartel-like consolidation. Central authorities—whether search giants, financial platforms like Robinhood halting trading alongside hedge funds, or payment processors—eventually maximize power to the point where they alienate their user base. Eich observes that evading these cartels requires either expanding into physical frontiers (analogous to the waves of immigrants, including Irish and German ancestors, who founded communities in America) or migrating into sovereign virtual spaces. Yet, virtual space remains fragile: it still relies on third-party domain registrars, physical colocation facilities, Internet Service Providers (ISPs), and cloud platforms like AWS.

- Google leveraged early Firefox distribution starting in 2004, offering best-of-breed algorithms before search became dominated by self-dealing and SEO optimization. - The Robinhood and GameStop controversy is highlighted as an example of financial entities protecting incumbent hedge fund shorts at the expense of retail traders. - Virtual independence requires resilience across every layer of the stack: host nodes, colocation facilities, cloud infrastructure, and DNS registrars.

---

[02:42:36](https://www.youtube.com/watch?v=krB0enBeSiE&t=9756s) The Parler Takedown and Big Tech Antitrust

Eich criticizes the sudden AWS de-platforming of Parler as an egregious display of cartel power, pointing out that while the platform was poorly engineered, the punishment was selectively applied: “i also felt they were being unfairly scored for not moderating because you can find tweets to this day that are horrendous and threaten all sorts of violence where's twitter why isn't twitter being taken down.” Instead of consistent rules, tech giants acted to squash a nascent market rival. He notes that this arbitrary exercise of political power mirrors broader institutional decay, pointing to a contemporary *Time* magazine article that unabashedly celebrated a coordinated alliance between big business, the AFL-CIO, and tech executives to manipulate political outcomes—a narrative that ordinary citizens would have been instantly suspended for uttering just months prior.

Turning to the ongoing Department of Justice (DOJ) and state antitrust actions against modern tech giants, Eich draws comparisons to the late 1990s *United States v. Microsoft Corp.* antitrust trial. In that case, Judge Thomas Penfield Jackson overreached by attempting to unilaterally break Microsoft into two separate entities—an operating system firm ("OpsCo") and an application firm ("AppsCo" for Office)—without holding an evidentiary hearing on remedies, which prompted an appellate court reversal and an eventual settlement. While Netscape died and was sold to AOL long before that legal battle resolved, the antitrust scrutiny scarred Microsoft enough that it retreated from the web, focusing on proprietary, bloated initiatives like Windows Vista (Longhorn), which allowed Firefox to thrive. Looking at current litigation, Eich predicts Google is too nimble to be broken apart by the courts: “google's smart enough they won't get split up they'll split something out to get off the hook i think.” Fridman concurs that waiting for judicial remedies is ineffective, arguing that private user-owned software architectures like Brave and decentralized initiatives like r/wallstreetbets are the only true mechanism to check monopolistic power.

---

[02:45:35](https://www.youtube.com/watch?v=krB0enBeSiE&t=9935s) The California Tech Exodus

Fridman transitions to the state of Silicon Valley, explaining that after concluding his research work at MIT, he had planned to relocate to California to start a company, yet found many successful entrepreneur friends pleading with him to stay away. Fridman asks Eich—having founded several landmark software companies and directed massive engineering operations—whether California is fundamentally broken, or if the current wave of departures is simply an overreaction to the COVID-19 pandemic.

Eich confirms that the migration away from the San Francisco Bay Area is real and substantial. He notes that even primary landing spots like Austin, Texas, are quickly becoming overheated under the influx of relocating tech talent and capital, adding that several of his own friends and relatives recently relocated to Texas. He also points to a massive, parallel migration toward Florida, particularly Miami, spurred by prominent venture capitalists like Peter Thiel and Keith Rabois leading the charge to build new operational hubs outside California's regulatory and tax reach.

[02:46:52](https://www.youtube.com/watch?v=krB0enBeSiE&t=10012s) California's Crises, Governance, and the Erosion of the Valley

Brendan Eich reflects on California's decline from the once-heralded "Golden State" that he moved to in late 1976 as a teenager. He observes that America is fundamentally a commercial republic where political leadership ought to foster business, pointing out that local leaders like Miami's mayor have recently succeeded by adopting an overtly business-friendly stance. In contrast, Eich argues that California is suffocating under crushing debt, the nation's highest taxes, and recurring seasonal wildfires driven by neglected forest management and deadfall rather than climate change alone. He expresses deep frustration with state leadership, specifically pointing to Governor Gavin Newsom's infamous French Laundry dinner: “Rules for thee but not for me.” Eich argues that when hypocrisy reaches that level, citizens either leave, launch recall efforts, or, historically, take up arms.

```mermaid flowchart TD accTitle: Systemic Pressures on California and Silicon Valley accDescr: Diagram tracing policy and infrastructure issues to the flight of talent and capital from California.

subgraph Governance["Policy & Quality of Life"] Taxes["Crushing Debt & Highest Taxes"] Lockdowns["Pandemic Lockdowns & Remote Work"] Forests["Mismanaged Forests & Annual Fires"] Hypocrisy["Leadership Double Standards (French Laundry)"] end

subgraph Infrastructure["Infrastructure Bottlenecks"] Transit["Dismantled Rail / Highway Dominance"] Housing["Severe Shortages & High Housing Costs"] end

subgraph Impact["Consequences"] Outflow["Outflow of Talent & Founders"] Decentralization["Emergence of New Hubs (Austin, Remote)"] end

Governance --> Outflow Infrastructure --> Outflow Outflow --> Decentralization ```

Lex Fridman counters by asking whether Silicon Valley's unique magic—its ability to give young, bold entrepreneurs the freedom to try risky ideas—can survive these financial and living pressures. Eich remains skeptical, emphasizing that California's infrastructure was never planned adequately to support sustainable growth. He highlights how public transit was dismantled across cities like Los Angeles and Portland in favor of highway construction dominated by oil and defense interests, leaving modern innovators like Elon Musk with no choice but to dig underground tunnels to bypass gridlock.

- Eich moved to California as a teenager in late 1976. - The French Laundry controversy is cited by Eich as an emblematic example of political double standards driving public backlash and recall petitions. - Transportation rights-of-way have long been surrendered to car dominance, rendering surface transit solutions virtually impossible.

---

[02:48:42](https://www.youtube.com/watch?v=krB0enBeSiE&t=10122s) The Origins and Vulnerabilities of the Silicon Valley Network Effect

Addressing whether Silicon Valley can still produce the next Google or Brave, Eich remarks that “all good things come to an end.” He reminds listeners that Silicon Valley was not born purely out of unconstrained, free-market libertarian capitalism; it was heavily seeded by Cold War federal projects like ARPANET, along with academic spinouts starting from William Shockley, the "traitorous eight," Fairchild Semiconductor, and Intel. However, the physical hardware foundation has vanished: the last major fabrication plant in the area was likely built in Sunnyvale by MicroUnity in the early 1990s, after which manufacturing was offshored by bipartisan political and corporate elites exploiting cheap labor and weak environmental protections abroad.

Silicon Valley's remaining advantage is an insular network effect—wealth, parties, and the Stanford brain trust. Yet Eich views Stanford's prestige as increasingly fragile. He recounts an anecdote of a Netscape colleague hired from Harvard twenty years prior who was stunned that Harvard still graded on a tough curve, causing some students to weep over C's and D's, whereas Stanford had largely adopted grade inflation to avoid upsetting privileged students. In contrast, Eich observes that nations like China and Russia place intense rigor on foundational mathematics, science, and engineering education.

- Silicon Valley's foundational chip industry began with William Shockley and the "traitorous eight" founding Fairchild, later leading to Intel. - MicroUnity built an advanced fab in Sunnyvale in the early 1990s before chip manufacturing moved almost entirely overseas. - Eich points out that corporate offshoring functioned as deliberate regulatory and labor arbitrage, leaving environmental damage overseas while generating cheap consumer goods domestically. - Eich notes his own patriotic perspective: “I'm an American, I'm born on the Fourth of July.”

---

[02:51:24](https://www.youtube.com/watch?v=krB0enBeSiE&t=10284s) Remote Work, Regional Mobility, and Urban Stratification

The COVID-19 pandemic catalyzed a massive shift to remote work, upending the rigid in-office cultures of major tech firms. Eich recalls how Google employees previously had to relocate even when shifting between internal teams, such as when the V8 engine team was reorganized in Munich under Lars Bak. While engineers initially celebrated the freedom of working from home, tech companies quickly instituted cost-of-living salary reductions when employees attempted to move to lower-cost regions like the Midwest.

Fridman and Eich debate whether this geographic diaspora will permanently dilute the Bay Area or simply seed dozens of smaller tech hubs across America. Eich notes that San Francisco had already grown highly stratified well before the pandemic. In the 1980s, tech workers lived modestly down the peninsula while San Francisco was grittier; by the 1990s and 2000s, an influx of tech wealth transformed neighborhoods South of Market into luxury enclaves. Eich compares this extreme wealth divide to Neill Blomkamp's sci-fi film *Elysium*, where elites live in orbit with miracle medical technology while the masses languish in poverty on Earth. Because strict NIMBYism prevents new housing from being built, exorbitant living costs continue to push people out toward more affordable regions.

- The Google V8 engine team was relocated to Munich, Germany, after Lars Bak stepped back from JavaScript development, requiring local PhD hiring. - Tech firms like Facebook tied compensation to local cost-of-living metrics once remote workers began moving outside the Bay Area. - Eich compares modern San Francisco's hyper-inequality directly to Neill Blomkamp's film *Elysium* (featuring Matt Damon and Jodie Foster).

---

[02:54:47](https://www.youtube.com/watch?v=krB0enBeSiE&t=10487s) Mortality and Roman Catholic Faith

Turning to philosophical and personal themes, Fridman asks Eich whether he ever reflects on his own mortality, especially given his legacy of building software technologies that transformed modern global society. Eich answers straightforwardly that he does not dwell on death or fear it, attributing his peace of mind to his Roman Catholic faith:

> “I'm a Roman Catholic so I am not afraid of death. I think a lot of people who have problems with death are suffering from some lack of either faith in their transcending death, or maybe they don't have children...”

He observes that an acute fear of mortality often stems from an absence of faith in something beyond physical death, or from lacking the generational continuation that comes from raising children and family.

[02:55:34](https://www.youtube.com/watch?v=krB0enBeSiE&t=10534s) Legacy, Family, and Market Disruptions

Reflecting on age, mortality, and the drive to leave an enduring mark, Brendan Eich observes that many people later in life worry they missed their window to build something lasting. Having married relatively late in life, he notes that he deeply understands those anxieties, referencing the classical playwright Terence by noting that nothing human is alien to him, yet he does not harbor a fear of death. When Lex Fridman asks what he hopes his legacy will ultimately be, Eich initially laughs that the world will probably remember JavaScript, but emphasizes that his real legacy centers on his children and grandchildren. Professionally, he points to his stewardship of web standards, the ongoing work at Brave, and the historical breakthrough of Firefox.

Even as the fortunes of individual projects fluctuate over time, Eich argues that Firefox proved an essential lesson to the tech ecosystem: an entrenched, monopolized browser market can be reopened from the outside. Rather than requiring mass consumer buy-in from day one, market shifts are sparked by lead users—invoking Eric von Hippel’s innovation framework—and what Nassim Nicholas Taleb describes as stubborn minorities. A tiny minority representing just a few percent of engaged users can successfully route around established monopolies and tilt an entire industry, even when well-funded incumbents oppose everything they are doing. Eich sees that exact pattern continuing through Brave, decentralized blockchain protocols, and grassroots movements like retail traders on WallStreetBets challenging institutional brokerages.

```mermaid flowchart LR accTitle: The Stubborn Minority Market Disruption Loop accDescr: A small group of lead users initiates change, tilting the market against entrenched incumbents.

subgraph Sub1["Catalysts"] A["Lead Users & Stubborn Minorities"] B["Radical Technical Ideas & Code"] end

subgraph Sub2["Action"] C["Routing Around Incumbents"] end

subgraph Sub3["Impact"] D["Market Tipping Point"] E["Long-Term Systemic Shift"] end

A --> C B --> C C --> D D --> E ```

- Eich reflects on perspective and aging: “I'm old, I got married fairly old, so I understand all that, I, nothing human is alien to me, as Terence said, but I don't fear it, no.” - Addressing his life’s work, Eich states: “It's gonna be JavaScript I think, no I think you know my legacy has more to do with my children and their children.” - On the leverage held by dedicated minorities, Eich explains: “You don't need everybody to do that, it's more like Taleb's stubborn minorities that do that, it's the lead users, Eric von Hippel's lead users, you can be a few percent, you can tilt the market and that can be done in spite of the incumbents, the moneyed interests not being in favor of what you're doing.”

---

[02:57:00](https://www.youtube.com/watch?v=krB0enBeSiE&t=10620s) The Pragmatic American Spirit and Transforming Society

Eich views this ability to challenge entrenched systems as deeply tied to the American tradition. It is not a doctrine of burning the past down in total revolution, but rather a pragmatic disposition reminiscent of Alexis de Tocqueville’s observations of early America. Under ordinary circumstances, citizens carry out their daily affairs and balance their rights and duties; however, when institutions drift toward abuse, extreme inequality, or oligarchic control, individuals reassert their autonomy. Eich notes that even during the American Revolution, only a committed minority pledged their lives, fortunes, and sacred honor to fight, while loyalists opted to depart for Upper Canada.

Fridman connects this historical ethos directly to Eich’s career, highlighting how a handful of determined engineers armed with clear ideas and minimal code can fundamentally reshape global communications. Eich agrees, affirming that this empowering spirit remains the country's defining strength, allowing newcomers to adopt these folkways and continuously renew the culture. As the interview draws to a close, Fridman expresses his profound gratitude, calling the discussion an honor and one of his favorite conversations, while Eich warmly brushes off the long hours, remarking that the session felt like a breeze. In his postscript, Fridman highlights episode sponsors and departs with Jeff Atwood’s well-known programming adage: “Any app that can be written in JavaScript will eventually be written in JavaScript.”

- Eich describes the threshold where citizens resist institutional capture: “As long as things are working we'll be like pragmatic Americans like de Tocqueville described in his writings, but if things get too out of whack for one reason or another, too unequal, too oligarchic and abusive, we're going to assert our rights and even a few of us can do it.” - Fridman summarizes the broader significance of Eich’s career: “That is at the core what your work stands for is that a few people can have the power to transform society with just a few radical ideas with just a little bit of code.” - Fridman concludes the episode by citing the famous formulation of Atwood's Law: “Any app that can be written in JavaScript will eventually be written in JavaScript.”

## Video description Brendan Eich is the creator of JavaScript and co-founder of Mozilla and Brave. Please support this podcast by checking out our sponsors: - The Jordan Harbinger Show: https://jordanharbinger.com/lex/ - Sun Basket: https://sunbasket.com/lex and use code LEX to get $35 off - BetterHelp: https://betterhelp.com/lex to get 10% off - Eight Sleep: https://www.eightsleep.com/lex and use code LEX to get special savings

EPISODE LINKS: Brendan's Twitter: https://twitter.com/BrendanEich Brendan's Website: https://brendaneich.com Brave browser: https://brave.com

PODCAST INFO: Podcast website: https://lexfridman.com/podcast Apple Podcasts: https://apple.co/2lwqZIr Spotify: https://open.spotify.com/episode/5vLJaVnHrT6uWrgZdRaAkO RSS: https://lexfridman.com/feed/podcast/ Full episodes playlist: https://www.youtube.com/playlist?list=PLrAXtmErZgOdP_8GztsuKi9nrraNbKKp4 Clips playlist: https://www.youtube.com/playlist?list=PLrAXtmErZgOeciFP3CBCIEElOJeitOr41

OUTLINE: 0:00 - Introduction 1:53 - History of early programming languages 6:46 - Physics needs more experiments and less theory 11:23 - JavaScript origin story 36:16 - JavaScript was created in 10 days 45:56 - Marc Andreessen 49:13 - Internet Explorer 52:57 - Evolution of JavaScript 58:43 - Javascript standardization 1:04:33 - TypeScript 1:07:04 - JavaScript ecosystem 1:10:14 - HTML5 1:13:46 - Making JavaScript fast 1:22:56 - JavaScript is the most popular language in the world 1:33:22 - Advice for programmers 1:39:19 - Browser wars 1:45:49 - Firefox 2:07:32 - Brave 2:20:32 - Basic Attention Token 2:45:35 - California 2:54:47 - Mortality 2:55:53 - Legacy

SOCIAL: - Twitter: https://twitter.com/lexfridman - LinkedIn: https://www.linkedin.com/in/lexfridman - Facebook: https://www.facebook.com/LexFridmanPage - Instagram: https://www.instagram.com/lexfridman - Medium: https://medium.com/@lexfridman - Reddit: https://reddit.com/r/lexfridman - Support on Patreon: https://www.patreon.com/lexfridman

[Source](https://www.youtube.com/watch?v=krB0enBeSiE)

中文简报

Brendan Eich 专访:JavaScript、Firefox、Mozilla 与 Brave | Lex Fridman 播客 #160 在本期播客中,Lex Fridman 专访了 JavaScript 创造者、Mozilla 联合创始人及 Brave 首席执行官 Brendan Eich。Eich 回顾了自己从物理学转向计算机工程的经历,详述了 1990 年代网景(Netscape)在白热化的浏览器竞争与互联网浪潮中仓促创造 JavaScript 的内幕。此外,他还深入探讨了理论科学与实用工程之间的张力、“差即是好”(Worse is Better)理念在技术演进中的关键作用,以及 Java 插件、ActiveX 和 Flash 等技术在 Web 生态变迁中的兴衰历程。 Eich 早期深受结构化编程与硬件架构影响,经历物理学研究后转向计算机科学,随后于 1995 年加入正迅速崛起的网景公司。 为应对微软竞争并配合 Sun 的 Java 生态,网景需要一种面向大众的轻量级胶水语言,Eich 在多重约束与极度紧张的工期下开发出了 JavaScript 的前身。 Eich 强调“差即是好”与快速执行在平台生态中的决定性作用,这种敏捷与进化优势最终使 Web 标准击败了 Java 插件和 Flash 等竞争对手。

Reading summary

Brendan Eich argues that the web's development has been propelled by pragmatic compromises, open-source resilience, and competitive counterweights against monopolistic stagnation. Across the creation of JavaScript, Mozilla Firefox, and the Brave browser, transformative systems endured not through theoretical perfection, but through Darwinian adaptation to immediate user and developer needs. The Darwinian Creation and Survival of JavaScript (18:14) Eich joined Netscape in April 1995 with the goal of embedding the Scheme language into the browser, but engineering management mandated that the new language visually mimic Java to serve as a companion scripting tool. During a ten-day sprint in May 1995, Eich hand-coded a recursive descent parser in C, embedding executable code directly into HTML markup. Although forced to adopt Java-style curly braces and primitive types, he preserved first-class functions and closures from Scheme, giving the runtime foundational functional capabilities. Because the web expanded rapidly, early design flaws became permanently locked in by the requirement of backwards compatibility; breaking changes could not be pushed to browsers without breaking millions of live websites. Eich compares this trajectory to biological evolution: advantageous adaptations survive and spread even if they carry suboptimal traits, demonstrating that practical speed-to-market consistently outperformed pristine academic designs. Standardization and High-Performance Virtual Machine Architecture (58:14) To protect against Sun Microsystems' aggressive trademark enforcement over the name "Java," the language was standardized under Ecma International in 1997 as ECMAScript. While a planned ECMAScript 4 overhaul collapsed under excessive syntactic ambition, the standards committee rebounded with ECMAScript 5 in 2009 and ECMAScript 6 in 2015, formalizing strict mode, modules, and class syntax to establish a mature baseline for modern development. Performance breakthroughs similarly drew from deep virtual machine research. Drawing on techniques originally developed for the Self programming language and Sun's Java HotSpot VM, engines like Google's V8 deployed polymorphic inline caches to optimize dynamic JavaScript into near-native machine code. Mozilla engineers pushed performance further with asm.js—a restricted, type-annotated subset of JavaScript compiled from C and C++ via LLVM and Emscripten—proving that browser runtimes could execute heavy client-side graphics and computation without reliance on proprietary plugins like Flash. Browser Stagnation, Open Source, and Chrome's Ascent (105:56) Following Microsoft's defeat of Netscape, Internet Explorer stagnated under a desktop monopoly, suffering from unpatched security vulnerabilities and zero functional innovation. Netscape executives responded in 1998 by releasing its browser codebase into the public domain as an open-source "escape pod," giving rise to Mozilla. Despite bureaucratic paralysis after Netscape's acquisition by AOL and severe U.S. export restrictions on strong SSL cryptography, Mozilla's independent community developed Firefox, reviving browser innovation through features like tabbed browsing and integrated pop-up blocking. Microsoft reacted slowly to Firefox, but Google emerged as the primary competitive force. Encouraged by conversations with Eich and leveraging Apple's WebKit fork, Google developed Chrome, securing rapid market share through OEM distribution deals orchestrated by Sundar Pichai. These agreements gave Google independent control over default search settings and transformed search integration into the dominant economic foundation of browser development. The Surveillance Web and Brave's Monetization Model (129:23) Eich explains that contemporary web surveillance was not deliberately architected, but stemmed from ad-hoc solutions to early stateless protocols—primarily Lou Montulli’s 1994 invention of cookies at Netscape. Ad networks quickly exploited this mechanism by embedding third-party tracking pixels across unrelated websites and utilizing redirect hops to bypass early browser privacy blocks, as seen in AppNexus's historical circumvention of Safari. This programmatic advertising architecture created complex "waterfalls" of chained auctions that depleted user battery life, wasted mobile data, delivered malicious code, and led to rampant click fraud. Through Brave Software, Eich aims to eliminate this intermediary bloat by blocking tracking scripts by default and returning 70% of gross ad revenue to opt-in users via the Ethereum-based Basic Attention Token (BAT). However, Eich notes that scaling decentralized micropayments faces friction from global financial regulators, whose anti-money laundering (AML) and know-your-customer (KYC) rules increasingly target user wallets. Eich views challenging web monopolies and surveillance architectures as an extension of the American pragmatic tradition, where small groups of engineers disrupt entrenched institutions. However, the path forward remains complicated by global regulatory pressure on decentralized finance, search engine cartels that vertically integrate traffic, and the erosion of traditional tech hubs like Silicon Valley as talent disperses.

精炼阅读摘要

Brendan Eich在访谈中回顾了创造JavaScript、联合创办Mozilla及打造Brave浏览器的历程,指出软件计算的核心在于高强度执行力与工程妥协的艺术。他认为技术的胜出往往遵循达尔文式演化逻辑,从语言设计到网络生态,唯有适应现实约束与用户反馈的实用系统才能在大规模竞争中立足并重构权力格局。 JavaScript的设计妥协与演化哲学 (26:02) 1995年Netscape为了在浏览器中嵌入可编程能力并抗衡微软威胁,与Sun Microsystems结盟,管理层强制要求新脚本语言在外表上模仿Java语法,采用C风格花括号及区分原始类型与对象的内存模型。Eich在仅有十天的极限冲刺中手工编写了递归下降解析器,巧妙地将Scheme语言的一等公民函数(first-class functions)与闭包特性注入其中。由于早期使用C语言手动管理引用计数,运行时存在内存泄漏及释放后使用(use-after-free)等安全隐患,但其底层敏捷性迅速获得了开发者青睐。 Eich将JavaScript的统治地位归因于生物学中的“更差即更好”(worse is better)生存逻辑。由于Web向后兼容性的刚性约束,早期的设计缺陷被永久固化在历史运行时中,无法像传统编译器那样随意废弃。尽管长期遭受学术派程序员的指责,该语言通过1997年Ecma标准化会议奠定基础,历经ES4方案夭折与ES6的全面现代化,并结合源自Self语言虚拟机的即时编译(JIT)优化及asm.js编译技术,最终从被嘲讽的脚本工具演进为支撑全球前后端计算的关键基础设施。 浏览器战争、Mozilla开源与生态重构 (105:56) 在通过系统捆绑击垮Netscape后,微软因反垄断诉讼与缺乏竞争对手而放任Internet Explorer停滞,致使IE5至IE6长期受困于系统性安全漏洞。1998年Netscape被AOL收购前夕,管理层决定将代码库开源作为技术“逃生舱”成立Mozilla。面对美国政府将1024位加密算法列为军事管制的出口限制,项目依靠澳大利亚开发者Tim Hudson在境外编写代码,成功规避了法律阻碍。 在随后的企业整合动荡中,尽管AOL管理层在2001年解雇了Mozilla领导人Mitchell Baker,但Baker依然以志愿者身份继续统筹每周协调会议,展示了精英治理开源社区超越传统雇佣关系的抗风险能力。Firefox通过引入多标签浏览及基于调用栈验证用户手势的弹窗拦截机制,打破了IE的停滞状态。这一技术反扑促使未能及时遏制Firefox的微软倍感懊悔,同时也直接启发了Google——在Sundar Pichai通过OEM预装建立分发防线及Larry Page调研WebKit的背景下,Google秘密研发Chrome,彻底重塑了现代浏览器竞争版图。 网络追踪机制异化与Brave的经济模型 (129:23) 现代Web的监视追踪体系并非源于蓄意作恶,而是早期技术权衡的意外产物。Netscape工程师Lou Montulli于1994年设计Cookie旨在解决HTTP协议的无状态问题,但第三方资源嵌入机制很快被广告技术公司利用,通过跨站点嵌入1x1像素透明图片建立全局用户画像。随后,广告网络如AppNexus利用重定向技术绕过早期Safari的隐私拦截,促使苹果推出智能防追踪(ITP),而Brave则采用站点级Cookie隔离机制予以反制。 程序化广告瀑布流引发的性能损耗、电量浪费、流量欺诈及恶意软件分发,导致大量用户转向广告拦截,出版商的反拦截策略亦普遍失败。为此,Eich创立Brave并推出基于以太坊的Basic Attention Token(BAT),建立端侧匹配广告并向自愿观看广告的用户返还70%收益的三方经济模型。然而,该去中心化探索面临严格的监管壁垒:当用户尝试提现时,必须遵从美国FinCEN与OFAC的反洗钱(AML)及身份认证(KYC)要求。Eich主张应将隐私保护与微支付原语纳入通用Web标准,从而在根本上削弱科技巨头的垄断围墙。 实用工程主义、硅谷变迁与自主抗争 (168:42) 在计算科学的理论前沿与工业实践之间,Eich直言P对NP或量子计算等纯理论议题极少直接指导日常开发,且物理学界如Dyakonov与Kalai对量子计算的可扩展性持有严重质疑。他认为现代软件绝大多数属于应用工程,其价值体现在让计算机切实服务于人类。回顾硅谷生态,Eich指出其技术繁荣最初由冷战时期的联邦项目(如ARPANET)及军工学术溢出所驱动,而非纯粹的自由市场产物;但随着本地硬件制造外包殆尽及名校基础教育标准因避险情绪而通胀,硅谷传统的网络效应壁垒正显现脆弱迹象,促使人才向得州奥斯汀和佛罗里达迈阿密外迁。 面对中心化平台和卡特尔式垄断力量的压迫,Eich推崇托克维尔笔下的美国传统实用主义精神:公众在常规时期维持系统运转,但在机构走向寻租或寡头垄断时,个体便会通过边疆开拓或工具重构来重新争夺自主权。他以自身的天主教信仰阐释对生死与风险的坦然态度,并强调少数意志坚定的工程师凭借精简的代码与开源架构,依然具备从底层颠覆僵化巨头、重塑社会权力结构的现实可能性。 Eich的软件生涯展现了实用主义工程学对理论纯粹性的胜利:系统往往诞生于高压下的妥协与粗糙修补,却凭借对环境的快速适应成为难以撼动的基石。然而,当早期的临时解决方案异化为数字垄断与监控资本主义的技术支柱时,如何在去中心化协议、现实金融合规框架与既得利益集团的阻力之间重建开放且尊重隐私的Web生态,依然是一个未完成的系统工程。

Detailed notes — zh

## Detailed walkthrough ### [00:00](https://www.youtube.com/watch?v=krB0enBeSiE&t=0s) 访谈开篇与理论对工程的张力 Lex Fridman 在开场白中介绍了本期嘉宾 Brendan Eich:JavaScript 编程语言的创造者、Firefox 浏览器开发机构 Mozilla 的联合创始人,以及当前 Brave 软件公司的联合创始人兼 CEO。Lex 强调,Brendan 的每一项成果都是革命性的——JavaScript 是全世界使用最广、影响最深远的编程语言之一;Firefox 开创了大量现代浏览器习以为常的特性;而 Brave 则试图重塑浏览器乃至整个互联网的内容创作和生态,使用户重新夺回对自身数据的控制权。 在播客赞助商口播之后,Lex 分享了一段个人感悟,探讨了“理论”与“工程实践”之间的深刻张力。他提到自己曾发过一条推文,大意是“良好的执行比一个好点子更重要,但两者互为助益”。Lex 坦言这种表述可能不够完美,但核心观点在于:好点子随处可见,而极其扎实的工程执行力却极为罕见。完美的创新往往依赖于恰到好处的时机、点子与执行力的结合,但这极难把握,而 Brendan Eich 在其职业生涯中多次成功做到了这一点。Lex 感慨道,这种境界与其说是科学,不如说更接近艺术。 --- ### [01:50](https://www.youtube.com/watch?v=krB0enBeSiE&t=110s) 早期编程启蒙与从物理学转向计算机 访谈正式开始后,Lex 询问 Brendan 是在何时爱上编程的。Brendan 回忆自己高中时并没有写太多程序,但当时有个朋友拥有一台 Commodore PET。在看完电影《星球大战》(Star Wars)后,朋友提议用 BASIC 语言编写一个模拟“死星战壕俯冲”(Death Star trench run)的 2D 绘图程序;由于 Brendan 当时还不懂编程细节,便发挥自己在数学与理科方面的特长,负责计算底层数学逻辑。在 1970 年代初中期,他极其痴迷惠普(HP)生产的 RPN(逆波兰表示法)科学计算器,赞叹其做工扎实得像金块一样坚固沉重。 基于对科学幻想和宇宙航行(如超空间跃迁引擎)的热情,Brendan 原本立志投身物理学,并进入圣克拉拉大学(Santa Clara University)攻读物理本科。然而,他很快意识到 20 世纪物理学的黄金时代已经过去,现实中的物理学发展速度难以满足他对科幻概念的渴望。在物理系期间,他幸运地避开了工程系当时仍在使用打孔卡(punch card)的 FORTRAN 语言,而是接触到了 Pascal,并在 DEC 小型机上体验到了最早的一批便携式 C 编译器(portable C compiler)。他彻底沉迷于过程抽象(procedural abstraction)与 1970 年代风格的结构化编程,并由衷赞赏 Pascal 之父 Niklaus Wirth 的写作与教学风格。 - **Commodore PET 与星战模拟**:高中时期 Brendan 协助朋友利用数学算法计算星战死星战壕的 2D 轨迹。 - **HP RPN 计算器**:1970 年代惠普采用逆波兰表示法的计算器,做工极其厚重坚固,内部带有镀金触点,激发了他对工程计算的兴趣。 - **躲过 FORTRAN**:在圣克拉拉大学物理系避开了需要自动整理器处理卡片的 FORTRAN 卡片机,直接接触了 Pascal。 - **Niklaus Wirth 的硬核教学风格**:Niklaus Wirth 在苏黎世联邦理工学院(ETH)推行“从零构建计算机、编译器到操作系统”的教学法;Brendan 提到 Wirth 还曾用自制的限字 25 词的内部邮件系统来“折磨”研究生。 --- ### [04:12](https://www.youtube.com/watch?v=krB0enBeSiE&t=252s) 编程语言血统与早期计算机硬件探索 在 Lex 的追问下,Brendan 梳理了 Pascal 及其所代表的 Algol 家族的技术脉络,并分析了它与现代语言的联系。Pascal 继承自 Algol 60,是一种语法相对繁复但严谨的语言,严格区分了带返回值的“函数”(function)与仅执行计算而不返回值的“过程”(procedure)。Algol 家族演化出了 Ada,而 Pascal 后来通过 Borland 公司的 Turbo Pascal 焕发新生,其背后功臣 Anders Hejlsberg 后来加入微软,主导了 C# 与 TypeScript 的设计,与现代 JavaScript/TypeScript 生态形成了深厚的传承链条。 本科阶段,Brendan 逐渐转向 C 语言和 Unix 系统。当时正值硬件极客流行使用绕线技术(wire-wrap)自制计算机的浪潮,许多人尝试移植 Unix。Brendan 也为工程课用绕线板做过简易计算机,并试图搭建一台更具雄心的机器来移植 Unix。遗憾的是,他选错了处理器——挑选了美国国家半导体(National Semiconductor)的 NS16032(一款复杂的 CISC 架构芯片),而不是当时刚刚兴起的 RISC 架构。由于该芯片硬件 Bug 极多,最终未能成功流片,项目被迫搁浅。看到硅谷正处于个人电脑革命的高潮(如 Apple II、IBM 采用 Intel 8088 架构并与微软达成协议),Brendan 意识到计算机领域的广阔前景,而物理学进展相对迟缓,于是在本科三年级后转向了数学与计算机科学。 ```mermaid flowchart TD accTitle: Programming Language Lineage accDescr: The historical evolution from Algol 60 to modern languages like TypeScript and C#. subgraph Algol_Branch["Algol 语言家族"] A["Algol 60"] --> B["Pascal (Niklaus Wirth 设计)"] A --> C["Algol 68"] B --> D["Ada"] B --> E["Turbo Pascal (Anders Hejlsberg 主导)"] end subgraph Modern_Evolution["现代工程演进"] E --> F["Delphi"] F --> G["C# /.NET (微软)"] G --> H["TypeScript (类型化 JavaScript)"] end ``` - **指令集架构的博弈**:Brendan 选用的 NS16032 芯片因硬件故障频发而失败;尽管 RISC 理念最终在理论上胜出,但现代处理器(如 Intel x86)演变成了超标量微架构(superscalar),在内部将复杂的 CISC 前端指令动态译码为类似 VLIW(超长指令字)的底层微操作以兼顾向后兼容性。 - **兄弟三人的学术路径**:Brendan 与双胞胎兄弟以及一位跳级一年的弟弟同班读书,其弟弟后来在加州理工学院(Caltech)师从引力物理学泰斗 Kip Thorne,但最终也和 Brendan 一样转行投身软件行业。 --- ### [07:10](https://www.youtube.com/watch?v=krB0enBeSiE&t=430s) 理论与现实的脱节:物理学及现代科学的模型陷阱 针对理论物理学在 20 世纪后半叶停滞不前的现象,Brendan 直言其核心症结在于“理论凌驾于实验之上”。他借用哲学观点指出:“我们需要更多的亚里士多德,更少的柏拉图。”他阐释道,数学本身绝非等同于现实物理,世界上存在大量数学自洽但无法在现实物理宇宙中实现的结构。如果仅凭归纳推理构想出理论,而在缺乏实验手段去证伪的情况下仅凭“审美直觉”去筛选竞争假说,科学就会误入歧途。 Brendan Eich 一针见血地指出: > “物理学我认为走入了一条歧路,也许整个西方科学都走入了这种歧路——那就是偏爱模型胜过现实。” 他认为,无论是在被称为“沉闷科学”的经济学,还是在某些硬核科学中,人们都在大量构建高度预测性和生成性的数学模型,但这些模型往往并未真正经历现实世界的残酷检验。相反,它们容易蜕变为政治决策的政策工具,或变成一群无法被筛选淘汰的冗余理论。Lex 对此深表赞同,并结合自己在机器学习领域的背景谈到,不仅流行病学或心理学等软科学存在这种模型拟合现实的张力,在现代机器学习工程中同样如此:很多时候并没有可证明的完美理论,更多依赖的是数据集、技巧与工程调优,这与他早期接受的理论计算机科学教育形成了强烈的内心冲突。 ### [10:00](https://www.youtube.com/watch?v=krB0enBeSiE&t=600s) 理论计算与实际工程:P 与 NP 及量子计算的局限 Lex Fridman 谈及计算复杂性理论中的不同复杂度类别,向拥有数学和计算机科学背景、后来又工程实现出全球最具影响力技术的 Brendan Eich 提问:在现实世界中,P 与 NP 这样的理论领域是否仍然具有实际意义? Brendan Eich 直言这些理论在实践中并没有那么大的用处。他解释说,人们通常是在密码分析或渐近复杂度推演中使用这些理论,探讨诸如“我们能否设计出抗量子密码算法”之类的问题。然而,正如物理学家 Mikhail Dyakonov 或数学家 Gil Kalai 所指出的那样,量子计算能否真正规模化扩展、其在工程上究竟有多大实用性,依然存在巨大的问号。对于 Eich 而言,量子计算只是业余闲暇时偶尔思考的话题,在日常工作中根本用不上这类理论计算机科学,因为“如今几乎一切都关乎工程设计,以及寻找让计算机对人类更有用的方法”。从某种意义上说,任何无法实现自动化的设计本质上都是一门艺术;尽管机器学习可以模仿并谱写出听起来还算不错的音乐,但在界面与人机交互设计中,依然需要人类无可替代的艺术直觉。 - **Mikhail Dyakonov 与 Gil Kalai**:两位学者均对量子计算的大规模工程可行性提出过深刻质疑,指出现实环境中的退相干与误差修正极难在物理上完美扩展。 - **理论与工程的脱节**:渐近分析(Asymptotic arguments)和复杂度边界在工程落地面前往往退居次席,现代计算的核心命题在于如何通过系统工程与界面设计让机器服务于人。 --- ### [11:47](https://www.youtube.com/watch?v=krB0enBeSiE&t=707s) 走出 SGI:MicroUnity 的全能野心与“概率乘法原理” 在研究生毕业后,Brendan Eich 在 Silicon Graphics(SGI)工作了整整七年。随着 SGI 逐渐变得庞大、成功,公司内部出现了部门壁垒与官僚政治,工作也开始变得沉闷乏味。1990 年代初正值超级初创公司(Super startups)盛行的时期,同在 SGI 的好友 Jeff Weinstein 加入了一家名为 MicroUnity 的前沿公司,并随后将 Eich 也招募了过去。 MicroUnity 的野心大得惊人,宛如一所“终极假想研究生院”:他们尝试从零开始自建半导体制造厂(Fab),自主研发全新的半导体工艺,并计划在同一块极大的芯片上同时集成复杂的模拟与数字电路。最初设计的芯片边长达到惊人的 5 厘米,发热量极高,甚至需要专门配备水冷系统。这原本是一款被称为“Cray 杀手”的超级微处理器,但后来公司改变方向,试图将其改造成面向家庭的媒体处理器与有线电视机顶盒(Set-top box)。该架构本质上是一个桶型处理器(Barrel processor),试图引入现代处理器中的短向量指令(Short vector instructions)与超标量/多发射架构。有线电视运营商希望借此实现完全由软件升级的机顶盒,以避免每次技术迭代都要派遣工程车上门更换旧机顶盒的昂贵开销。 ```mermaid flowchart TD accTitle: MicroUnity 硬件设计与其高风险架构 accDescr: MicroUnity 试图将大量原本由专用硬件完成的射频与解调工作整合并由软件处理,由于同时承担过多高风险技术最终未能成功。 subgraph Hardware ["极度激进的芯片硬件"] Chip["超大芯片 / 5厘米边长 / 水冷散热"] Proc["桶型多线程处理器 + 短向量架构"] end subgraph SoftwareDemod ["纯软件信号链路"] ADC["A/D 转换器采集模拟信号"] Buffer["直接写入数据缓冲区"] SoftProc["纯软件实现 QAM 解调与纠错<br/>(Reed-Solomon & Viterbi)"] end Chip --> Proc ADC --> Buffer --> SoftProc Proc --> SoftProc ``` 在 MicroUnity,Eich 与团队使用 GCC 编写 C 和 C++ 代码。团队甚至自行设计硬件,开发通用比特重排与置换单元(Bit shufflers and permuters),用以高效执行加密算法。他们的设计极其激进:机顶盒直接通过模数转换器(A/D Converters)将高频信号倾倒进缓冲区,其余所有的正交幅度调制(QAM)信号解调、帧同步、Reed-Solomon 纠错以及 Viterbi 解码全部用软件实时运算解决。然而,这种技术尝试注定难以成功。SGI 创始人 Jim Clark 在 Eich 跳槽到网景(Netscape)时一针见血地向他指出:“你做十件事,每件事成功的概率都是十分之一,乘起来成功的概率就是百亿分之一。” - **MicroUnity 的技术构想**:打造高度灵活的软件定义硬件,用通用短向量运算完全替代专用 ASIC 芯片。 - **乘法原理(The multiplication principle)**:在系统级项目中同时引入过多未经验证的高风险创新,会导致整体失败概率呈指数级攀升。 --- ### [14:32](https://www.youtube.com/watch?v=krB0enBeSiE&t=872s) 网景崛起与网络协议的胜出:从纯文本到 Mosaic 图像标签 MicroUnity 的经历虽然充满挑战,却让 Brendan Eich 积累了深厚的底层软硬件知识。1994 年,由 Jim Clark 和 Marc Andreessen 创办的网景公司横空出世,Eich 虽然错过了第一批入职窗口,但在 1995 年 4 月正式加盟,并亲历了 1995 年 8 月网景震撼华尔街的传奇 IPO。 在 Web 浏览器普及之前,早期的互联网是由电子邮件、Usenet(NNTP 协议)、FTP 和各类新闻阅读器组成的纯文本世界。在 1980 年代,IBM 的 SNA、DECnet 等各大商业专有网络协议割据一方,厂商销售人员坚称未来的网络必然是异构共存的;但 SGI 的工程师们早就清楚,源自 ARPANET、由加州大学伯克利分校在 Unix(BSD)中实现的 TCP/IP 协议栈才是真正的未来。 到了 1993 年,仍在 MicroUnity 的 Eich 见证了 Mosaic 浏览器的爆发。尽管 Tim Berners-Lee 早在更早时期就提出了万维网的雏形,但在伊利诺伊大学国家超级计算应用中心(NCSA)的 Marc Andreessen 和 Eric Bina 采取了极其务实的行动——他们甚至没有等待标准化委员会的漫长讨论,Marc Andreessen 直接在邮件列表中发帖表示“网页中应该允许嵌入图片”,而此时 Eric Bina 早已把 `<img>` 标签的代码编写完毕并直接集成到了 Mosaic 中发布。关于这次历史性的越位,Brendan Eich 谈道:“我前几年跟蒂姆·伯纳斯-李聊过,他当时说‘哦,其实我们那时候有另一种做法’;是啊,但那行不通,因为马克直接把他的实现放进 Mosaic 发布了。” - **网络协议战争的结局**:开源、通用的 TCP/IP 彻底击败了各大硬件巨头的封闭专有协议栈。 - **先发优势(First-mover advantage)**:在互联网体系中,快速发布可用原型并迅速占领网络节点,比在学术层面上追求无瑕的设计拥有大得多的生存优势。 --- ### [16:48](https://www.youtube.com/watch?v=krB0enBeSiE&t=1008s) “差的反而更好”:进化论、生物学隐喻与 JavaScript 的宿命 Mosaic 的胜利彻底让 Brendan Eich 意识到:在网络世界里,速度与先发优势具有决定性的力量。计算机科学家兼诗人 Richard Gabriel 曾在其著名文章《差的反而更好》(Worse is Better)中探讨过软件在网络环境下的生存优势。当时麻省理工学院(MIT)的学者们将 Lisp(特别是 Scheme 和 Common Lisp)奉为至高无上的艺术珍宝与皇冠上的明珠,嘲笑贝尔实验室里开发 Unix 的工程师不过是一群不懂严谨理论的“新泽西黑客”;然而最终席卷世界的却是看似粗糙、妥协但实现简单且易于移植的 Unix 和 C 语言。 ```mermaid flowchart LR accTitle: 完美主义与 Worse is Better 的生存竞争 accDescr: 完美而笨重的系统往往在漫长的标准化中丧失先机,而演化快速、容忍妥协的系统最终席卷整个网络。 subgraph Cathedral ["高堂之上的理论派 (Lisp / 理论标准)"] CathedralDesign["复杂且完美的设计<br/>(法贝热彩蛋 / 宏伟教堂)"] SlowIter["演化迟缓<br/>理论争论长周期"] end subgraph Bazaar ["实用主义网络演化 (Unix / Mosaic / JS)"] WorseBetter["简单粗糙但能跑<br/>(Worse is Better)"] FastDeploy["极速部署抢占生态位<br/>(向后兼容锁定胜局)"] end CathedralDesign --> SlowIter WorseBetter --> FastDeploy FastDeploy -.->|"网络效应胜出"| CathedralDesign ``` Brendan Eich 将这种现象与生物学演化机制进行了深刻类比。正如生物种群中的杂合子优势(Heterozygote advantage)一样:如果一个人同时从父母双方继承了某种突变基因,就会患上镰刀型细胞贫血症;但如果只从单亲继承一个突变等位基因,反而会获得对疟疾的强大抵抗力。生命系统的演化从不追求每个细节的局部完美,而是以适应速度和生存概率为导向。 这正是 JavaScript 命运的写照。由于网景面临激烈的市场竞争,JavaScript 在极短的时间内仓促开发完成。随之而来的 Web 兼容性铁律(Web compatibility)使得早期遗留的各种设计失误永远无法被暴力推翻修复——就像生物不能随意推倒重构自己的 ATP 代谢机制一样,Web 必须无条件向下兼容旧代码。Brendan Eich 总结道:“你必须接受‘差的反而更好’这一现实被铭刻进那些你可能并不喜欢的设计细节之中;JavaScript 正是如此,而我早就释怀了;但我也认为,这正是 JavaScript 能够席卷众多编程领域的一大巨大优势。” - **《差的反而更好》(Worse is Better)**:系统在网络时代的生存法则在于极简的初始实现与快速迭代,而非理论上的纯粹与无懈可击。 - **Web 兼容性约束**:与常规软件版本迭代不同,浏览器无法随意发布破坏兼容性的重构更新,所有早期的历史包袱都必须被永久保留并演化下去。 ### [19:34](https://www.youtube.com/watch?v=krB0enBeSiE&t=1174s) 抢占历史时机与 Netscape 的“Worse is Better”哲学 Brendan Eich 回顾了 JavaScript 诞生的紧迫背景,他强调这门语言并非在一开始就是完美的,但关键在于它抓住了最正确的历史时间窗口。他在语言标准化委员会奋战了二十年,深知时机一旦错过便无法重来。Brendan 坦言自己当时面临的抉择非常残酷:要么顶着极限工期硬着头皮做出来,要么向 Netscape 表示项目太仓促而放弃;但如果放弃,历史的空白就会被微软的 VBScript(Visual Basic Script)填补,那样结果会糟糕得多。Brendan Eich 掷地有声地总结道:“I'm not saying that that was the best language I'm just saying that was the right time to do it.” 这种在狂热节奏下快速推出可用产品的开发模式,本质上契合了理查德·加百利(Richard P. Gabriel)提出的“Worse is Better(差即是好)”理念,也是 Netscape 基因的真实写照。1994 年,Jim Clark 与 Marc Andreessen 创立 Netscape 并发布了首个版本,迅速从 NCSA Mosaic 手中抢下浏览器市场的主导权。“Mozilla”这一名字的由来,正代表着要像巨大怪兽一样干掉 Mosaic(Mosaic Killer)。这并非象牙塔里的纯学术研究,而是激烈的工业代际更替:Marc 早期在 Mosaic 中加入了图像支持,而 Netscape 则进一步集成了插件(当时播放视频的唯一途径)、用于平铺多窗口的框架集(Frames / Framesets),以及 Eric Bina 在 Netscape 1.1 中实现的 HTML 表格(Tables)。 ```mermaid flowchart LR accTitle: 浏览器脚本方案演进与博弈 accDescr: 展现 Netscape 面对微软竞争及自身架构演进时的语言定位与技术路线选择。 subgraph Netscape["Netscape 技术路线"] A["最初构想: Scheme 嵌入浏览器"] --> B["Sun 合作启动: 引入 Java 虚拟机"] B --> C["双语言策略: 需要胶水脚本语言"] C --> D["Mocha / LiveScript / JavaScript"] end subgraph Microsoft["微软应对策略"] E["专有在线服务 Blackbird"] --> F["Gates 转向: 复制 Web 技术栈"] F --> G["推出 IE 与 VBScript"] end D -.->|"胜出并主导 Web"| G ``` ### [21:08](https://www.youtube.com/watch?v=krB0enBeSiE&t=1268s) 互联网繁荣前夜:让静态文档变成可编程的平台 伴随着美国 1991 年经济衰退的结束和美联储主席格林斯潘(Alan Greenspan)的宽松刺激,技术与互联网的交汇引爆了整个 Dot-com 繁荣时代。Jim Clark 敏锐地意识到必须尽快推动 Netscape 进行 IPO。当时整个社会正在发生巨变,大众甚至开始看懂户外广告牌上的 URL 并在回家后输入浏览器,类似 Pets.com 和 eBay 这样的平台迅速崛起。Netscape 就像一枚高速飞行的火箭,Marc Andreessen 和工程团队清楚地认识到,浏览器绝不能只停留在展示图片、表格和框架的静态文档阅读器阶段,它必须变成一个具有动态交互能力的可编程平台。 在那个时期,网页中最动态的元素仅仅依赖数量极少的插件,当时 Macromedia Flash 尚未问世,Java Applet 还在酝酿之中。Brendan Eich 最初被招募进 Netscape 时,公司向他许诺的目标是在浏览器中实现 Scheme——这是 Guy Steele 与 Gerald Sussman 共同创造的一种极为优雅的 Lisp 方言。Brendan 曾与来自 SGI(Silicon Graphics)的老同事开玩笑,表示自己平时工业开发中其实很少用 Scheme,但既然大家喜欢,那他就来试试。Brendan 甚至在后来的演讲幻灯片中放上了电影《虎胆龙威》(Die Hard)里布鲁斯·威利斯在通风管道爬行的经典剧照,借此调侃自己当年听信了“快来西海岸享受阳光,在浏览器里搞 Scheme 吧”的劝诱。 - 1991 年美国经济衰退的痕迹甚至留在了当年的经典电视剧《法律与秩序》(Law & Order)重播集中,剧里频繁探讨经济低迷对纽约人生活的冲击。 - Netscape 1.1 引入了对 HTML 表格的支持,由核心工程师 Eric Bina 编写。 - 早期 Web 缺乏原生动态能力,视频展示与交互完全依赖浏览器插件,而非原生 DOM 脚本。 ### [22:45](https://www.youtube.com/watch?v=krB0enBeSiE&t=1365s) 微软的追击与“双语言”体系的构想 当 Brendan 于 1995 年 4 月加入 Netscape 时,原本嵌入 Scheme 的计划彻底告吹,因为公司已经启动了与 Sun Microsystems 的战略合作。Netscape 内部与 Sun 联合创始人 Bill Joy 取得了联系,Bill Joy 同样提议让浏览器具备可编程性,首要方案是嵌入 Java 虚拟机。然而当时的 Java 虚拟机极其笨重,极难嵌入到 Netscape 浏览器中,尤其当时大部分用户仍在使用即将被淘汰的 16 位 Windows 3.1 系统,而微软即将携 Windows 95 登场。 商业环境瞬息万变。微软在 1994 年底曾试图以低价收购 Netscape,被 Jim Barksdale 与 Jim Clark 拒绝。比尔·盖茨(Bill Gates)随后写下了著名的《互联网海啸》(The Internet Tidal Wave)备忘录,果断砍掉原计划模仿 AOL 和 CompuServe 的封闭在线服务项目“Blackbird”,掉头全力复制 Web 技术栈并开发 Internet Explorer。这给 Netscape 团队带来了极度强烈的危机感。 面对 Java 的厚重与编译型特性,Bill Joy、Marc Andreessen 以及 Brendan Eich 达成共识:就像微软技术栈中需要 Visual Basic 作为底层组件的高效脚本黏合剂一样,Web 也需要一门轻量级的伴随语言(Companion Language)。Java 面向高薪、资深的专业工程师开发复杂组件,而伴随语言则应当更加平民化,面向初级脚本编写者、注册会计师(CPA)、网页设计师等业余开发者。这门胶水语言起初被 Marc 命名为 Mocha,后来由于商标争议曾短暂更名为 LiveScript,最终在 1995 年 12 月获得商标授权正式定名为 JavaScript。关于这种双语言分工的定位,Brendan Eich 强调道: > “Bill Joy observed and I, Marc and Jason and I observed that in a mature stack like Microsoft you really benefit from having a scripting language like Visual Basic which became Visual Basic Script in IE3 but didn't take on, didn't take over, kill JavaScript, that you need two languages: one is for the component writers who are higher priced and more expert, and the other is for scripters, certified public accountants, designers, graphic designers with some programming inclination, anybody, amateurs, doesn't matter.” ### [26:00](https://www.youtube.com/watch?v=krB0enBeSiE&t=1560s) 穿上 Java 的外衣:语法约束与函数式内核的权衡 Brendan 进入 Netscape 时由于客户端团队编制已满,被临时安排在服务端团队待了一个月,期间参与了 HTTP/1.1 协议的早期工作。在此之前,他曾在 SGI 与知名网络专家 Greg Chesson 共事,拥有扎实的 UNIX 内核底层、NFS 及网络协议研发经验。在那一个月里,他一直在反复构思这门新语言的形态:它应该使用类似于 HyperCard 中 Bill Atkinson 设计的 HyperTalk 那样偏向自然语言的语法,还是走别的路线? 然而管理层(如工程副总裁 Rick Schell)给出了硬性指标:语言必须长得像 Java。从远处看,这意味着继承 C 语言风格的花括号结构。更重要的是为了实现 Java 与 JavaScript 在内存堆中的数据互通与对象绑定,JavaScript 不得不借鉴 Java 的部分基础数据模型,包括区分原始类型与对象类型、双精度浮点数(Double)、字符串、布尔值,以及整套表达式、位运算符和三元运算符语法。甚至连 Java 特有的无符号右移运算符 `>>>`(由于 Java 缺少无符号整数类型而特设的运算符号)也被一并继承了下来,这在日后产生了深远的技术影响。 尽管披着 C 语言和 Java 的语法外衣,Brendan 内心深处依然保留着对函数式编程的追求。他悄悄将 Scheme 的核心灵魂——头等函数(First-class Functions)与闭包机制植入了这门外表看似 Java 的新语言中,从而奠定了 JavaScript 兼具命令式外貌与函数式底色的独特混合架构。 - Brendan 在 SGI 时与 Greg Chesson 共事,Chesson 当时曾悲观预判 CPU 性能无法跟上协议处理需求而押注 VLSI 硬件加速协议栈,但随后的摩尔定律证明通用 CPU 配合千兆以太网完全胜任。 - JavaScript 最初命名为 Mocha,后因潜在软件商标冲突在 1995 年 8 月改为 LiveScript,最终于 1995 年 12 月正式获得 Sun 的授权定名为 JavaScript。 - 语言被迫继承了 Java 的许多设计特征,如对象与基础类型的割裂、浮点数表达数字模型,以及用于位操作的 `>>>`(无符号右移)运算符。 ### [28:43](https://www.youtube.com/watch?v=krB0enBeSiE&t=1723s) 单线程、回调与 Java 的“插件牢笼” 布兰登·艾克(Brendan Eich)深爱 Scheme 和 Lisp 这类函数式编程语言,但在为浏览器设计语言时,语法无法做到像 Scheme 那样纯粹。他坚持保留一等公民函数(first-class functions),因为他预见到浏览器环境对回调(callbacks)的刚性需求。当时所有的早期浏览器都是单线程运行的,直接面对用户的软件根本不适合引入互斥锁(mutual exclusion)和复杂的多线程机制。在单线程模型下,程序绝不能阻塞用户界面,唯一的出路就是注册一个回调函数让它稍后执行。布兰登不想搞得太花哨去捕获 continuation(例如 Scheme 中的 `call/cc`),而是采用了直截了当的函数参数(funargs)传递,支持自上而下传递并在未来被回调。当时 Java 根本没有一等公民函数(直到 Java 8 才引入 Lambda 表达式),虽然 Java 从诞生起就具备并发能力,但布兰登敏锐地意识到,浏览器里的脚本语言根本无福消受这种并发待遇。 Java 预想的应用场景是运行在插件(plug-in)内部,因此它可以随意派生线程;然而浏览器中最核心的业务全发生在单线程的单进程主循环中。这个事件循环(event loop)需要处理网络请求、解析并渲染 HTML、将容器盒子按宽度折算为高度(早期演化为 CSS 盒模型的雏形),并执行脚本以响应用户输入。这套事件驱动编程在一定程度上借鉴了苹果的 HyperCard。HyperCard 使用了 `on[EventName]` 语法,因此 JavaScript 诞生了形如 `onclick`、`onmouseover` 和 `onmouseout` 的命名规范。正是因为 Java 被困在所谓的“插件牢笼”(plug-in prison)中,仅局限在类似 Applet 的固定小方框里,它无法快速、轻易、嵌套地与 HTML 反射出的 DOM 对象、表格和表单进行交互。这成为了后来 JavaScript 蓬勃发展而 Java 在前端彻底消亡的关键分水岭。 ```mermaid flowchart TD accTitle: Browser Main Thread vs Java Plugin Architecture accDescr: Comparison of JavaScript in the main thread event loop versus Java confined to a plugin container. subgraph Browser["浏览器主线程(单线程事件循环)"] EventLoop["事件循环 (Event Loop)"] LayoutEngine["HTML 解析与盒模型排版"] JSEngine["JavaScript 引擎<br/>• 一等公民函数与回调<br/>• 直接操作 DOM / 表单 / 表格"] EventLoop --> LayoutEngine EventLoop --> JSEngine end subgraph PluginPrison["插件独立沙盒(插件牢笼)"] JavaVM["Java 虚拟机 (Applet)<br/>• 多线程并发<br/>• 仅限矩形画布内交互"] end LiveConnect["LiveConnect 胶水层 (Nick Thompson)"] JSEngine <-->|"数据类型跨堆调用"| LiveConnect LiveConnect <--> JavaVM ``` - 布兰登邀请了来自 SGI 的好友兼 CMU 在读研究生尼克·汤普森(Nick Thompson),主导编写了初代 LiveConnect,用于在 JavaScript 与 Java 之间打通数据类型与堆内存的调用通道。 - 尽管 LiveConnect 跑通了,但主导权牢牢掌握在 JavaScript 手里,Java 沦为了辅助组件;随着时间推移,进化淘汰机制使得开发者普遍认为根本不需要插件。 - 谈及两种语言架构的宿命时,布兰登总结道:“Java 处于这种插件牢笼之中,它基本上被限制在一个矩形内,也就是 Applet 的矩形区域里。”(“Java was in this plug-in prison, it essentially was confined to a rectangle, the Applet rectangle.”) --- ### [31:26](https://www.youtube.com/watch?v=krB0enBeSiE&t=1886s) 微软驱逐 Java 与 XMLHttpRequest 的无心插柳 Sun 微系统公司在浏览器战略上犯了严重的误判。他们将网景(Netscape)单纯视为把 Java 分发到千家万户的渠道,对浏览器本身的生态毫不在意。后来面对微软对网景的全面围剿,Sun 试图与微软联合,但这笔著名的合作最终破裂,并演变为激烈的法律诉讼。微软在 Windows 系统中彻底驱逐了 Java,转而扶持安德斯·海尔斯伯格(Anders Hejlsberg)主导的.NET 与 C#,以此规避 Sun 的专利风险与纠纷。 在决裂之前,微软的 Outlook Web Access(一款类似 Hotmail 的 Web 邮件前端)高度依赖 JavaScript 构建交互界面,并使用一个 Java 组件向邮件服务器发起 HTTP 请求。随着微软高层一纸令下清理 Java,负责邮件客户端的团队必须寻找替代方案。他们选择使用微软自家的 ActiveX 组件技术来包装异步调用能力,并将其注入宿主环境。这个应急产物正是后来被称为 `XMLHttpRequest`(XHR)的组件。它随后演化成了全球通用的 Web 标配,甚至催生了 Ajax 时代,并在现代演化为 Fetch API。被驱逐出核心生态的 Java 插件最终被边缘化,沦为少数特定场景的工具(例如北欧地区法律强制要求的智能卡网上银行,或是少数航空飞行信息系统)。 - 微软与 Sun 破裂直接促成了原生异步 Web 请求接口的诞生,布兰登强调:“这整条血脉都可以追溯到 Java 沦为败者并被踢出局的往事。”(“This whole lineage goes back to Java being successfully the loser and getting kicked out.”) - 现代 HTML5 / HTML Living Standard 中的 Fetch API,其底层概念源头就是微软在 Outlook Web Access 中用来替换 Java 对象的 ActiveX 补丁。 --- ### [33:21](https://www.youtube.com/watch?v=krB0enBeSiE&t=2001s) Flash 的崛起、工具优势与“差即是优”进化论 网景曾有机会收购 Flash 的前身,但与这笔历史性机遇擦肩而过。1995 年底网景 IPO 之后,FutureSplash 的创始人乔纳森·盖伊(Jonathan Gay)曾带着产品前来寻求收购或合作。然而当时网景内部负责筛选技术伙伴的市场人员态度极其傲慢和粗暴,将这群开发者拒之门外。FutureSplash 随后转投 Macromedia,正式演变为主导富媒体时代数十年之久的 Flash。Macromedia 作为一家顶尖的工具软件公司,为 Flash 构建了无可匹敌的创作生态(包括 Dreamweaver、Director 以及后来的 Flash Builder)。其引入的时间轴(timeline)概念将动画本质视作基于时间的不可变函数,吸引了无数顶尖视觉艺术家与特效设计师。到了 2005 年前后,几乎所有高级餐厅的网站都是全 Flash 制作,尽管界面字体往往被压缩得很小,甚至看起来像个小游戏。 布兰登并不排斥 Flash,他反而十分赞赏其技术底蕴。在他看来,技术竞争并不在于开局拿到的牌有多完美(JavaScript 本身就是匆忙赶工的产物,Flash 则是作为插件起步),而在于能否持续通过工具链改进用户体验。然而在微软凭借垄断地位停滞 IE 浏览器发展之后,许多人断言“Web 无法承担复杂任务,必须全盘重构或完全依赖新插件”。所有试图推倒重来、脱离现有网络生态另起炉灶的尝试最终都失败了。因为 Web 拥有无可匹敌的庞大网络效应,符合“差即是优”(Worse is Better)的设计哲学:只要抢先占领分发渠道与先机,即便初期简陋,也能够在漫长的时间中持续演进优化。随着史蒂夫·乔布斯(Steve Jobs)宣布 iPhone 不支持 Flash,Flash 敲响了丧钟,整个行业的智力资源全面回流向 JavaScript,Mozilla 随后也吸纳了 Adobe 的技术并推动 JavaScript 标准化演进。 - 谈到 Web 技术为何能击败所有推倒重来的竞争者时,布兰登明确指出:“每一个说这种话的人都失败了,而他们之所以失败,是因为 Web 这个庞大的网络中沉淀了太多的价值。”(“Everyone who said that failed, and the reason they failed is because there's too much value in the web, this huge network.”) - 谈及技术的演进规律,他强调:“‘差即是优’原则意味着,你不仅可以从一个糟糕的起点开始……而且只要首先进入并获得广泛分发,占据先机带来的进化优势,你就能随着时间推移不断去改进它。”(“The 'worst is better' principle means that you can not only start bad... but get on first and get wide distribution, get sort of evolutionary advantage in the priority of place, but you can also improve it over time.”) --- ### [36:13](https://www.youtube.com/watch?v=krB0enBeSiE&t=2173s) 历史的关键截面:将脚本植入 HTML 标记 对谈转向了 JavaScript 诞生时的戏剧性历史时刻。莱克斯·弗里德曼(Lex Fridman)感叹,回看计算科学的历史,这几天就像是决定未来世界命运的魔幻时刻,甚至有可能在未来的某个节点,整个人类世界的数字基建都会运行在 JavaScript 之上。他好奇布兰登当年在短短几天的高压开发中究竟处于何种精神状态,喝了多少咖啡,是否存在极度的焦虑与恐慌。 布兰登回忆起当时的心境,借用了黑格尔在耶拿战役中目睹骑在马背上的拿破仑并惊呼“我看见了马背上的世界精神”这一著名典故,坦言后人回头看历史关键节点时往往会赋予过度的神圣感,但在当下,他确实敏锐地察觉到了这扇转瞬即逝的历史机遇之门。当时网景创始人马克·安德森(Marc Andreessen)是他的高管赞助人(Executive Sponsor),两人脑暴得出的核心构想是:这门脚本语言必须能够直接嵌入到 HTML 标记语言内部。这一构想在当时遭遇了巨大的专业阻力,许多正统软件工程师极力反对在标记中编写代码。更现实的挑战在于,如果在浏览器排版中天真地直接插入代码,未经隐藏的代码就会被排版引擎当成一堆乱七八糟的乱码文本渲染到屏幕上。布兰登必须在一片质疑中,想出巧妙的语法和解析规避机制来隐藏脚本,为整个 Web 前端开发拉开序幕。 - 布兰登引用哲学典故来形容这种历史机遇:“就像黑格尔在耶拿看到骑在马背上的拿破仑一样,对吧?然后说‘那是马背上的世界精神’。”(“Like Hegel sees Napoleon on horseback, right, at Jena, and says 'there's the world spirit on horse.'”) - 马克·安德森对该技术路线起到了至关重要的定调作用,布兰登强调:“他当时正在头脑风暴如何让 JavaScript 直接嵌入到页面中,能有他这么说非常重要,因为我心里也是这么想的,但当时很多人都在说‘你不能在标记语言中间写编程语言’。”(“He was the one sort of brainstorming how the JavaScript should be right there in the page, that was important for him to say that because I thought so too, but a lot of people were like, 'Well, you can't write programming language in the middle of the markup.'”) ### [37:30](https://www.youtube.com/watch?v=krB0enBeSiE&t=2250s) 代码即数据:将脚本注入网页的“异端”构想 Lex Fridman 提到,在网页的标记语言中间直接注入可执行代码的想法在当时是相当激进的。Brendan Eich 确认了这一点,并笑称这在当时被视作一种“异端邪说”。一位 SGML(标准通用标记语言)领域的专家甚至特地给 Eich 写信质问,怒气冲冲地质疑他为什么不用标记节(marked section)。Eich 则回应称,HTML 标记节根本就不是 HTML 正式规范的一部分,浏览器也完全不支持,因此他只能采取一种功能等价的变通黑客手段。不过随着时间推移,该规范逐渐成熟,那位专家最终也想通了。 Eich 借用了生物学理论来形容这种演进上的必然性。他提到了生物学家 Lynn Margulis 关于共生起源(endosymbiosis)的观点——线粒体最初也是侵入细胞的古代原核生物,最终演化为互利共生的细胞器。在 Eich 看来,JavaScript 之于 HTML 也是同样的逻辑:“你必须把 JavaScript 嵌入到 HTML 里面,它就像一个良性病毒。”代码在某种意义上变成了数据,被网页承载并传递。 ```mermaid flowchart LR accTitle: JavaScript 与 HTML 的共生机制 accDescr: 展示将 JavaScript 作为脚本标签直接嵌入 HTML 的互利共生机制 subgraph HTML ["HTML 宿主环境"] Tag["&lt;script&gt; 标签"] subgraph JS ["嵌入式代码 (良性共生)"] Code["JavaScript 脚本逻辑"] end Tag --- JS end Browser["浏览器解释执行"] --> HTML ``` ### [38:30](https://www.youtube.com/watch?v=krB0enBeSiE&t=2310s) 救命的双向注释黑客手法(Comment Hiding Hack) 为了让这项技术真正落地,Eich 必须解决一个致命的现实问题:当时市面上绝大多数人使用的是 Netscape 1.1 等旧版浏览器,它们根本不认识这个新语法。如果直接把代码裸露写在 HTML 里,旧版浏览器会把代码当成纯文本全部直接渲染在网页屏幕上。 为此,Eich 发明了一种精妙的双向注释隐藏黑客手段(two-way comment hiding hack)。他引入了全新的 `<script>` 标签,并在内部将 JavaScript 代码包裹在 HTML 注释标记 `<!--... -->` 之中。在 Netscape 1.1 等老浏览器眼中,整段代码就是一个纯粹的 HTML 注释,因此被直接跳过;而在支持 JavaScript 的 Netscape 2 中,Eich 为 `<script>` 内部重新赋予了语义,将多行注释分界符处理成单行注销或直接忽略,使新引擎能顺利读取并执行其中的真实代码。Eich 直言: > “这是我们起步所绝对必需的双向注释隐藏黑客手段,没有它,我们根本不可能把 JavaScript 启动引导起来。” 在 Netscape 2 早期,根本没有从独立外部文件加载脚本的功能,所有脚本代码都只能以这种内联方式直接嵌在文档中。 ### [39:24](https://www.youtube.com/watch?v=krB0enBeSiE&t=2364s) 临危受命与“罗宾”定位 在 1995 年 5 月初转入客户端团队之前,Eich 还在服务器团队忙于 HTTP 1.0/1.1 相关的工作,同时构思这门新语言。当他终于调入客户端团队并得到 Marc Andreessen 的发令枪时,局势已经千钧一发。Netscape 内部充斥着对这个项目的怀疑,Sun Microsystems 内部更是质疑声不断。在 Sun 内部,只有联合创始人 Bill Joy 是孤独的坚定支持者,他看出了 JavaScript 作为配套语言的独特价值。 Eich 形容 JavaScript 在最初设想中就像漫画《黑暗骑士归来》里弗兰克·米勒笔下的罗宾(Robin)——一个看似微不足道、当配角的“跟班语言”(sidekick language)或胶水语言。就像微软通过 Visual C++ 和 Visual Basic 形成高低搭配的技术栈一样,Sun 拥有严肃严谨的系统级语言 Java,而 Web 恰好需要一种轻量灵活的脚本语言与之互补。 - 转入客户端团队时间:1995 年 5 月初 - 外部盟友:Sun Microsystems 的 Bill Joy(极少数看懂该构想的高层之一) - 战略对标架构:类似于微软的 Visual C++ 配套 Visual Basic ### [40:29](https://www.youtube.com/watch?v=krB0enBeSiE&t=2429s) 十天极速冲刺与手写递归下降解析器 Eich 必须在极短时间内拿出一个可运行的原型演示。据他与 Allen Wirfs-Brock 合写的编程语言历史论文记载,那段著名的编码冲刺是从某周的周四傍晚开始,整整贯穿了一周,一直持续到次周的周一。在这 10 天里,他几乎没有睡觉,凭借大学时代作为一名“物理系叛逆者”自学计算机编译前端所积累的深厚功底疯狂敲击代码。 当时学术界正流行自底向上的 LALR(1) 等高效语法分析器,但 Eich 最终选择了 Dennis Ritchie 在编写 C 语言时采用的手法:纯手写一个递归下降解析器(recursive descent parser)。他在疾风骤雨般的冲刺中借鉴了大量 C 和 Java 的语法,甚至连运算符优先级都没有搞错,整体框架惊人地准确无误。 在最初的 10 天原型中,Eich 尽力保持设计的纯粹,例如对于双等号(`==`)相等性操作符,如果两个对象的动态类型不同,解释器就会直接判定它们不相等。然而在原型发布后,内部早期采用者试图用 JavaScript 去匹配数据库里已被转为字符串的数字字段,纷纷要求 Eich 提供隐式类型转换。Eich 自嘲道: > “我像个傻瓜一样同意了,我给了他们想要的东西;我当时一心想讨好他们以争取项目的采纳落地。” 这一妥协彻底破坏了双等号作为等价关系的严格数学性质(再加上 NaN 的各种边界异常),由此引发的隐式转换噩梦直到今天仍然被全球开发者广泛调侃与吐槽。 ### [43:03](https://www.youtube.com/watch?v=krB0enBeSiE&t=2583s) 垃圾回收的缺失与内存安全危机 当 Lex 询问这 10 天冲刺中最大的遗憾与骄傲时,Eich 指出,放宽双等号的隐式转换实际上发生在 10 天冲刺之后,而那次经历带给他的深刻教训正如他常在 Twitter 上强调的:当别人跑来请求你“能不能做得更随便一点、加个看似讨巧的特性”时,你的回答必须是“不”。他援引计算机先驱 Niklaus Wirth 的名言:“设计的精髓在于舍弃(The essence of design is leaving things out)。” 而在那短短 10 天内部,Eich 最大的现实妥协是根本没时间写垃圾回收器(Garbage Collector)。他最初仅使用了 GNU 中所谓的对象池(obj pools)或内存区域(arenas)来分配内存: - **短期脚本的假象**:简单的短脚本随页面刷新即被销毁,内存泄漏并未立刻暴露。 - **长时间运行程序的崩溃**:到了 1995 年夏天,当开发者尝试用它编写带有事件驱动分配的小游戏或复杂应用时,浏览器很快就会耗尽内存彻底崩溃。 面对这一紧急状况,Eich 匆忙赶制了一套引用计数(reference counting)机制。然而,在 C 语言这种不安全的底层语言中手写引用计数风险极高: 1. **计数溢出 / 滞高(Overflow)**:计数器无法归零,导致内存泄漏并最终耗尽内存。 2. **计数下溢(Underflow)**:提前释放了仍在使用的内存(Use-After-Free),导致悬垂指针。 在缺乏非可执行堆内存(DEP/NX)和现代栈防御机制的 1990 年代中期,这种内存下溢会直接导致远程代码执行(RCE)漏洞。攻击者只需在 HTML 和 JavaScript 中构造恶意对象,利用引用计数漏洞释放内存,再向堆中填充大量精心伪造函数跳转表(vtable)的字符串,就能劫持执行流调用任意代码。随着 Netscape 2 正式发布,Eich 和团队不得不在后续的多个小版本(dot releases)中像疯子一样连续扑火修补安全漏洞。 ### [45:16](https://www.youtube.com/watch?v=krB0enBeSiE&t=2716s) 傲人核心:头等函数与帕洛阿尔托的奶昔 抛开所有的工程妥协,当 Eich 如今坐在门廊上眺望日落、回首那惊心动魄的 10 天时,他心中最引以为傲的设计是引入了**头等函数(first-class functions)**。在那个时代,主流的 Java 并没有头等函数,而这一特性让函数式编程的灵魂注入了 Web。 尽管 Scheme 纯粹主义者常批评 JavaScript 不够极简——Scheme 仅有六七个特殊形式、卫生宏(hygienic macros)以及 `call/cc`,以近乎完美的形态将 λ 演算落地,而 JavaScript 则显得杂糅混乱——但 Eich 依然在残酷的商业倒计时下,将 Scheme 的神髓深深植入了 JavaScript 的基因之中。 ```mermaid flowchart TD accTitle: JavaScript 核心特性渊源对比 accDescr: 展示 JavaScript 如何吸收 Scheme 的函数式特性与 C/Java 的语法外衣 subgraph SchemeGene ["Scheme 核心灵魂"] FCF["头等函数 (First-Class Functions)"] Closure["闭包与函数式范式"] end subgraph CJavaGene ["C / Java 外表"] Syntax["类 C/Java 的语法结构"] RecParser["手写递归下降解析器"] end SchemeGene --> JS["JavaScript (1995)"] CJavaGene --> JS ``` 在访谈的最后,话题转向了 Netscape 联合创始人 Marc Andreessen。Eich 回忆起当年与 Marc 在帕洛阿尔托市中心的 Peninsula Creamery 餐厅见面的场景。当时的 Marc 刚从伊利诺伊大学厄巴纳-香槟分校毕业不久,身材高大,留着头发,每餐都会点上超大号的汉堡和巨型奶昔。在那个紧迫的春夏之交,两人坐在餐厅里激烈头脑风暴。虽然没有明说,但每个人心中都清楚一个不可回避的宿命危机:微软这头巨兽正在逼近,而在 Netscape 启动 IPO 之前,他们必须以超乎寻常的狂飙速度抢先定义 Web 的未来。 ### [46:41](https://www.youtube.com/watch?v=krB0enBeSiE&t=2801s) 颠覆操作系统的雄心与 3D 图形的超前构想 在 Netscape(网景)时期,联合创始人 Marc Andreessen 抱有极其庞大的野心,他曾提出“Netscape 加上 Java 将干掉 Windows”的论调。这在当时极具冲击力:一旦浏览器具备了可编程能力,它就不再只是一个查看网页的工具,而是成为全新程序的运行时环境,化身为一个“元操作系统”(meta OS)甚至直接取而代之。尽管 Marc 对 Java 赞誉有加并大力推动商标授权,但他依然敏锐地看到了 JavaScript 的不可替代性。当时在 Netscape 内部,甚至讨论过摆脱 Sun 公司的激进方案。 Brendan Eich 的前 SGI 同事、Netscape 创始元老 Kip Hickman 在公司尚未与 Sun 正式达成协议、未拿到对方源代码之前,就已经着手自己编写一套独立的 JVM(Java 虚拟机)。当时由 Arthur van Hoff 编写的 Java 编译器 `javac` 代码质量极高,且完全是用 Java 自举(self-hosted)编写的。这意味着只要 Kip 的自研虚拟机能够执行 Sun 自举编译器生成的字节码,Netscape 就完全可以抛开 Sun 独立运行。Marc 甚至兴奋地设想:“也许我们可以直接甩掉 Sun。”然而,随着与 Sun 的合作协议最终达成,Kip 高风亮节地搁置了自己的 JVM,团队全面转向 Sun 的官方虚拟机。 与此同时,Marc 已经开始构想更遥远的未来——Web 必须具备真正的 3D 图形能力。当时基于 HTML 和静态图像的交互已无法满足需求,而 SGI 早期 VLSI 芯片团队的成员已经离职创办了 3dfx 等公司,PC 端独立显卡正在迅速崛起,《毁灭战士》(Doom)和《雷神之锤》(Quake)等 3D 游戏风靡一时。Marc 渴望把这种底层的图形计算能力引入浏览器。Brendan 曾想引荐他在 SGI 认识、当时正在 MIT 师从 Barbara Liskov 的博士生 Andrew Myers(后任康奈尔大学正教授),Marc 甚至放言要用海量资金和期权不惜代价将其招募,但最终并未成行。这种图形愿景直到多年后的 Firefox 时代,才由 Vladimir Vukićević 将基于 SGI GL、OpenGL 一脉相承的 OpenGL ES 规范引入 Web,最终孵化成为正式的 WebGL 标准。 ```mermaid flowchart TD accTitle: 3D图形技术演进与向Web标准的变迁 accDescr: 展示从早期SGI图形硬件到现代浏览器WebGL标准的继承与演化脉络。 subgraph DesktopEra ["PC 3D 硬件革命"] SGI["SGI GL 图形库"] --> OGL["OpenGL 工业标准"] VLSI["SGI VLSI 芯片团队"] --> V3DFX["3dfx 等 PC 显卡厂商"] V3DFX --> Gaming["《Doom》与《Quake》流行"] end subgraph MobileAndWeb ["Web 图形化标准成型"] OGL --> OGLES["OpenGL ES (移动端裁剪版)"] OGLES --> MozFire["Firefox 时代: Vladimir Vukićević"] MozFire --> WGL["WebGL 标准 (网页 3D 运行环境)"] end ``` ### [49:13](https://www.youtube.com/watch?v=krB0enBeSiE&t=2953s) 浏览器大战与分发渠道的残酷法则 面对 Lex Fridman 提出的关于微软与 Internet Explorer(IE)历史评价的提问,Brendan 将微软划分为不同历史时期来看待。谈及初期的微软,Brendan 直言当时的 Bill Gates 是一个极具攻击性但缺乏真正原创性的角色,并引用了 Steve Jobs 的名言——微软“没有品味”(no taste)。在排版设计上,苹果当时已经支持了精美的字体连字(ligatures)和字距微调(kerning),字体视觉极佳;而 Windows 还在依赖紧贴像素网格排布、生硬粗糙的系统点阵字体。 然而,在激烈的商业竞争中,产品审美往往要向分发渠道让步。当 Lex 追问 IE 为何能在历史上屡次击败对手时,Brendan Eich 斩钉截铁地回答:“分发渠道比什么都重要(Distribution matters more than anything)。”正是因为牢牢掌控着 Windows 操作系统,微软能够轻而易举地把 IE(乃至于后来的 Edge)强行推送给全球数以亿计的用户;苹果后来在 macOS 和 iOS 上捆绑 Safari 也遵循了完全相同的逻辑。在 Netscape 内部,开发核心如 Michael Toy 和 Jamie Zawinski 早就看清了这一现实,甚至常常陷入“我们注定完蛋了”的悲观预期中。 尽管身处巨头的阴影下,Netscape 依然展开了绝地反击,在 Netscape 2 的黄金时期推出了强大的技术组合拳: - 打造包含 Java、JavaScript、增强插件体系(Plugins)以及复杂 HTML 表格支持的完整可编程运行平台。 - 将原先静态呈现内容的标记语言,全面重构为支持逻辑运算的动态技术栈。 ### [51:47](https://www.youtube.com/watch?v=krB0enBeSiE&t=3107s) 领先用户与现代 SPA 架构的雏形 在 Netscape 2 的公测阶段,开发者社区爆发出的创造力远远超出了官方的预想。尽管 Netscape 当时尚未开源,但公司采取了早期且极其宽松的公开测试机制(permissive beta releases)。开发者们开始利用 JavaScript 构建如今被称为“单页应用”(Single Page Application, SPA,如 Gmail)的雏形:他们利用 JavaScript 在客户端本地执行数据运算,并通过在后台隐藏的 HTML 帧(hidden frame)静默请求服务器拉取数据。这种模式提前数年预示了后来的 Ajax 和动态 HTML(DHTML)革命。 这一现象印证了 MIT 教授 Eric von Hippel 提出的“领先用户效应”(lead user effects)与用户创新网络理论。正如 Brendan Eich 所指出的:“尽早获取开发者的早期反馈至关重要;我非常喜欢这种模式(getting early developer feedback [was] absolutely critical; I loved it)。”即使在 Netscape 2 临近发布的最后几个 Beta 版本中,Brendan 面临着极其严格的代码变更控制限制,来自这些领先用户的反馈依然帮助他打磨并修正了许多底层的语法和行为逻辑。 其中极具代表性的是一位名为 Bill Dortch 的开发者。早在 1996 年,他就构建了一个展示山岳艺术画作的单页应用(至今仍可在网页档案馆中检索到)。在该作品中,Bill Dortch 利用纯 JavaScript 构建了大量的本地对象,形成了一个早于 JSON 概念的客户端轻量级数据库,完全在浏览器前端实现了艺术展品的动态检索与呈现。 ### [52:57](https://www.youtube.com/watch?v=krB0enBeSiE&t=3177s) 标准化博弈:W3C 的 XML 乌托邦与转战 ECMA 随着 JavaScript 席卷全球,语言的标准化进程却走得异常坎坷。当时主导网页规范的 W3C 沉溺于从 SGML 走向 XML 的构想,甚至试图用严格的 XML 彻底重写或取代万维网。然而,万维网之所以能够野蛮生长,核心在于“更差的就是更好的”(Worse is Better)这一务实哲学——HTML 具有极其包容的容错机制,面对标签未闭合或语法微瑕,浏览器内的错误纠正引擎能像生物组织自我修复一样将其兼容呈现,这与传统编程语言的严谨截然相反。 XML 本身要求绝对严谨的语法闭合,完全无法适应广大网页作者的编码习惯。具有讽刺意味的是,微软声称自己在 IE 中支持了 XML,但其默认媒体类型实际上仍然挂靠在 HTML 错误纠正器之后,实质上打破了标准 XML 的严苛性以换取可用性与普及度。与此同时,Netscape 与脱离实际的 W3C 产生了严重的理念分歧,无法在 W3C 框架下推进 JavaScript 的标准化。 为了给 JavaScript 寻求一个能够抗衡微软的公正避风港,Netscape 的标准化权威 Carl Cargill 提出了转战欧洲的策略。此前,欧洲各国政府曾因无法容忍使用完全封闭的专有系统,强硬要求微软对 Windows 3.1 API 的关键部分进行标准化;接手并迫使微软就范的正是欧洲计算机制造商协会(European Computer Manufacturers Association,简称 ECMA)。由于 ECMA 具备对抗微软垄断的历史经验与公信力,Netscape 决定将 JavaScript 正式提交至该机构。随着该组织后续彻底迈向全球化,其名称也从纯粹的缩写词变成了专有名词“Ecma”(首字母大写),并由此拉开了影响深远的 ECMAScript 标准化大幕。 ### [55:50](https://www.youtube.com/watch?v=krB0enBeSiE&t=3350s) ECMAScript 的命名由来与 Sun 公司的商标铁拳 Lex Fridman 提起 ECMAScript 这个名字,笑称它听起来像某种“皮肤病”,但它确实成为了 JavaScript 的官方标准化名称。Brendan Eich 解释道,之所以叫这个名字,是因为“Java”是 Sun Microsystems(太阳微系统公司)的注册商标。当时的 Sun 公司在商标维权上极其激进霸道,甚至到了荒唐的地步。Eich 举例说,曾有一位中欧血统的用户因为家族姓氏叫“Jovanko”,把自己的个人网站命名为 `javanco.com`,Sun 公司的法务部门竟然直接寄出侵权警告信(Cease and Desist),指责对方域名开头包含了“Java”,勒令其立即停止使用。Fridman 调侃道:“在这个世界上,我最爱的莫过于市场营销部门了。” 如今开发者社区对这门语言的叫法各有侧重:在日常指代整门语言时大家依然说 JavaScript 或简写为 JS;而指代具体语言规范版本时,则常使用“ES + 版本号”(如 ES5、ES6)。ECMA 后来改用年份命名机制(如 ES2015、ES2016),但由于版本号与实际年份并非直观对应,常常导致混淆。 --- ### [56:53](https://www.youtube.com/watch?v=krB0enBeSiE&t=3413s) 初代标准化之战:尼斯会议、巨人们的碰撞与第 1 版标准 ```mermaid flowchart TD accTitle: ECMAScript 初代标准化合作与博弈 accDescr: 展示 Netscape、Microsoft、Sun 及 IBM 在 ECMA 标准化委员会中的合作与分工 subgraph Participants ["标准制定参与方"] BE["Brendan Eich<br/>(Netscape)"] SK["Schan Katzenberger<br/>(Microsoft)"] GS["Guy Steele & Richard Gabriel<br/>(Sun Microsystems)"] MK["Mike Cowlishaw & John van den Belt<br/>(IBM / ECMA)"] end subgraph Output ["标准落地与成果"] Draft["起草首份规范草案<br/>(对齐运行时行为并修正边界 Bug)"] Spec1["ECMA-262 第 1 版 (1997)<br/>在法国尼斯正式确立"] end BE --> Draft SK --> Draft GS -->|"引入 Scheme 语义与编写引言"| Draft MK -->|"组织推进与协调"| Draft Draft --> Spec1 ``` 为了防止微软单方面掌控这门语言,Netscape 决定将 JavaScript 提交给欧洲的标准化机构 ECMA。起初 Netscape 以为这是一个敢于反抗微软强权的独立组织,但微软随即便派遣了一支庞大的技术代表团。当微软意识到 Brendan Eich 本人坐镇、Netscape 绝不会任人摆布时,他们也派出了顶尖高手——Schan Katzenberger。Schan 深度投入规范工作,甚至对自己的直属主管强硬表态:“别再拿其他杂事来烦我了,我正全力专注在这件事上。”由于 Eich 当时在 Netscape 还要分心维护浏览器前端集成代码并修补各类线上问题,无法全职编写规范文本,Schan 便承担了起草首份规范草案(Draft Spec)的大部分繁重工作。 两家巨头在标准制定中既博弈又合作。Eich 总结了技术标准背后的现实逻辑:“这就是标准的故事:你有着不同的实现,根据各自的市场话语权,在达成一致的地方实现互操作;在产生分歧的地方,通常由占据主导地位的一方来设立事实标准(de facto standard),随后再将其反映到法定标准(de jure standard)中。” 1997 年,标准化委员会在法国尼斯(Nice)齐聚,正式确立了 ECMA-262 第一版规范。IBM 的 Fellow Mike Cowlishaw 以及当时的 ECMA 主席 John van den Belt 也参与其中。谈到早期的标准化过程究竟是美好还是痛苦,Brendan Eich 直言:“那很痛苦,因为一切都太仓促了。”不过,Sun 公司派出了计算机语言大师 Guy Steele,将 Scheme 语言的思想火花注入规范中;Guy 还拉来了 Richard Gabriel,由其执笔撰写了标准中阐述 JavaScript 核心理念的第四条款(Clause 4)。 合作中也发生过紧张对峙的插曲。一次会议上,Eich 因在公司紧急修 Bug 而迟到,Schan Katzenberger 显得颇为恼火,质问他怎么还不来。但当 Eich 赶到现场,看到 Schan 在草案中挑出的一个极其隐蔽的“差一错误”(off-by-one bug)时,Eich 随即指出“这确实是个篱笆桩错误(fence post bug)”。两人四目相对,瞬间意识到彼此都在同一个高水平的技术认知频道上,Schan 的怒火瞬间烟消云散。 --- ### [01:00:00](https://www.youtube.com/watch?v=krB0enBeSiE&t=3600s) 微软的残酷围剿与反垄断阴影下的标准停滞 标准初期的争论主要集中于理顺各种边缘情况(edge cases)以及统一各方不兼容的行为。与此同时,Eich 依然坚持实用工程思维,利用 Netscape 当时的市场主导地位率先在代码中实装新特性,从而牵引法定标准的发展。在 10 天原型期内来不及实现的完整函数特性,在 1996 至 1997 年间陆续补齐,并最终写入了 1999 年完成的第三版标准(ES3)。 然而,外部商业环境急转直下。随着 Windows 捆绑销售 Internet Explorer(反垄断法中的搭售行为),微软开启了对 Netscape 的无情碾压。Eich 回忆起知名投资人 Ram Shriram(当时担任 Netscape 销售主管)经历的惊心一幕:电脑制造商康柏(Compaq)致电 Ram,面色惨白地告知他,微软发出直接通牒——“微软刚通知我们,如果我们在电脑里把 Netscape 设为默认浏览器,他们就会吊销我们的 Windows 授权许可。” 在这场不对称的残酷商战中,Netscape 最终被出售给美国在线(AOL)。随着反垄断诉讼拉开帷幕以及 Netscape 的没落,Mozilla 耗费数年才艰难重整旗鼓,ECMA 标准化进程陷入了长达数年的事实冻结。 - **第三版规范确立**:ECMAScript 3 于 1999 年正式完工,囊括了正则表达式、更好的字符串处理以及全新的异常处理(try/catch)等机制。 - **早期反垄断压制细节**:微软不仅在价格上以免费倾销的方式打击 Netscape 的浏览器与服务器套件销售,更通过操作系统层面的垄断地位威胁 PC 原始设备制造商(OEM)。 --- ### [01:01:48](https://www.youtube.com/watch?v=krB0enBeSiE&t=3708s) ActionScript 的分叉与漫长重生的 ES6 在标准停滞期间,语言进化的尝试并没有完全终止。Eich 曾把语言设计的接力棒交给了 MIT 毕业的数学奇才 Waldemar Horwat(1986 年 Putnam 数学竞赛得奖者)。Horwat 设计了一套宏大激进的后继语言规范——JavaScript 2。但这套方案未能在 Web 浏览器中直接落地,而是变相分化并渗透到了其他领域:一方面演变为微软 ASP.NET 服务端的托管 JScript 变体,另一方面则进入 Macromedia(后被 Adobe 收购)的 Flash 体系,成为了广为人知的 ActionScript 3。 ```mermaid flowchart LR accTitle: JavaScript 语言版本的演化与分叉路径 accDescr: 展示从早期 ES3、JS2 到 AS3、ES4 夭折,再到 ES5 与 ES6 最终集大成的完整路径 ES3["ECMAScript 3<br/>(1999 年发布)"] --> JS2["JavaScript 2 设计<br/>(Waldemar Horwat)"] JS2 --> MS_ASP["微软 ASP.NET<br/>(服务器端试水,后消亡)"] JS2 --> AS3["Adobe Flash / ActionScript 3<br/>(引入强类型与类结构)"] AS3 --> ES4["ECMAScript 4 提案<br/>(设计宏大,最终被搁置/Mothballed)"] ES3 --> ES5["ECMAScript 5 (2009)<br/>(渐进改良 / 引入严格模式)"] ES4 -.->|"吸收 Class/Module 等核心精华"| ES6 ES5 -->|"平滑过渡与基础严格语义"| ES6["ECMAScript 6 / ES2015<br/>(现代 JS 的重大里程碑)"] ``` 随后,社区试图通过 ECMAScript 4 将这些面向对象与静态类型等前卫特性带回 Web 标准,但由于跨度过大、各方利益博弈激烈,ES4 最终被彻底搁置(mothballed)。委员会分裂后,务实派转而推动改动相对温和的 ES5(于 2009 年发布),主打小幅渐进改良,并引入了“严格模式(strict mode)”。当时在微软任职、后来加入 Mozilla 的 Allen Wirfs-Brock 承担起了标准规范编辑的主导重任。 Lex Fridman 指出,过去在开发者圈子里,喝着啤酒聚会时吐槽 JavaScript 简直成了一种流行文化,就像已婚人士宣泄“婚姻糟透了”一样,大家一边骂一边又离不开它;然而 ES6 的横空出世彻底扭转了这门语言的声誉,解决了诸多核心痛点。Brendan Eich 赞同这一观点,指出 ES6(最终定名为 ES2015)虽然迟到了几年,但它不仅融合了 ES4 中备受好评的类(Classes)、模块(Modules)等核心语法设计,还将 ES5 的严格模式默认隐式应用在类和模块体中,使得 JavaScript 真正蜕变成一门成熟、现代且极具工业生产力的大规模工程语言。 ### [01:04:35](https://www.youtube.com/watch?v=krB0enBeSiE&t=3875s) TypeScript 的兴起与渐进式类型系统 Lex Fridman 回顾道,虽然 JavaScript 的演进有一脉相承的脉络,但真正让这门语言脱胎换骨并感觉“准备好彻底统治世界”的时刻是 ES6(ECMAScript 2015),它带来了大型工程和团队协作必不可少的特性。Brendan Eich 赞同这一观点,并指出微软在这一时期做出了极其明智的举措。Anders Hejlsberg 以及后来离开微软的 Luke Hoban 等人打造了 TypeScript。他们领悟到了一点(这一理念同样被 Gilad Bracha 在 Google 的 Dart 项目中推广):如果你不在乎类型系统的完全“健全性”(soundness),也不试图在运行时强制执行类型检查,而仅仅将其作为开发工具层面的警告系统,它依然能为开发者——尤其是大型项目中的开发者——提供巨大的价值。因此,TypeScript 取得了巨大的成功。 对于 Lex 提出 TypeScript 究竟是增加了混乱还是带来了净收益的疑问,Brendan Eich 坚定地认为它利大于弊。从技术上讲,TypeScript 是 JavaScript 的严格超集,“最短的 JavaScript 程序本身就是一个 TypeScript 程序,任何 JavaScript 程序都是 TypeScript 程序”,这种设计极其高明,它允许开发者以渐进的方式添加类型注解并获取编译器警告。 在标准化的博弈上,微软必须预测 ECMA 标准委员会的走向,猜测模块(modules)或装饰器(decorators)等特性未来会如何演进。当标准委员会做出微调时,微软必须在维护自己的分支与引入不兼容修改向标准靠拢之间做出抉择。Brendan Eich 认为微软在总体上表现得相当守规矩且公平。面对外界为何不将 TypeScript 彻底标准化的疑问,Brendan Eich 指出微软拥有商业上的专有投入,他们希望掌控主动权,这与其他巨头(例如 Google 在某些技术上不交出控制权)并无二致。谈及未来,Brendan Eich 表达了一种期待:如果双方持续趋同,未来 JavaScript 核心标准或许能至少保留类型注解的语法及基础语义,甚至可能通过类似 Gilad Bracha 提出的“可插拔类型系统”(pluggable type systems)来实现标准化,尽管这种方案也伴随着像 Lisp 和 Scheme 那样宏库互不兼容的碎片化风险。 “Any JavaScript program is a TypeScript program, which is brilliant because then you can start incrementally adding type annotations, getting warnings, learning how to use them.” —— Brendan Eich ```mermaid flowchart TD accTitle: TypeScript与JavaScript的关系及设计逻辑 accDescr: 展示TypeScript如何作为JavaScript超集并在工具期提供类型检查 subgraph LanguageRelation["语言形态与设计"] JS["JavaScript 源码"] -->|"纯超集设计 (Superset)"| TS["TypeScript 源码"] TS -->|"剥离类型注解"| RuntimeJS["运行时 JavaScript"] end subgraph ToolingAdvantage["工具链收益"] TS -->|"编译期/工具期检查"| Warning["代码补全 / 语法警告 (无需运行时健全性)"] Warning -->|"渐进式采纳"| LargeScale["赋能大规模软件工程"] end ``` ### [01:07:04](https://www.youtube.com/watch?v=krB0enBeSiE&t=4024s) 前端框架生态的演化与 Web 规范的吸收 Lex Fridman 转向讨论 JavaScript 庞大且繁杂的框架生态,感叹其如同生物进化一般充满创业精神与野蛮生长,并询问这些框架是否应当加速优胜劣汰。Brendan Eich 以 John Resig 创造的 jQuery 为例进行剖析。jQuery 极具创造性地将 CSS 选择器语法与 DOM 查询融合为“查询并操作”(query and do)的链式模式,让开发者感觉像是在学习一门高效的领域特定语言(DSL)。 jQuery 爆发的深层原因,在于早期 W3C 制定的文档对象模型(DOM)规范极其糟糕。那些在 20 世纪 90 年代同时为 Java 和 JavaScript 设计的 API 充满了冗长而繁琐的面向对象过程式代码,“需要调用一个构造函数并跳上三段别扭的舞蹈才能完成一件事,而在 jQuery 中只要一行代码”。随着后来 HTML5 标准化运动的推进,标准委员会反哺并吸纳了这些模式,推出了 `document.querySelector` 和 Fetch API 等原生接口,使得在现代原生 JavaScript 中直接操作变得简洁优雅。 Brendan Eich 还揭示了核心语言与宿主环境之间的割裂历史: - **核心语言与平台 API 的分离**:JavaScript 本身是一门纯粹的核心语言,不仅在浏览器中运行,也能通过 Node.js 进入服务端;而 DOM 等浏览器特定接口则曾由 W3C 掌管。 - **委员会方向的脱节**:当 ECMA 正在进行脚踏实地的 JavaScript 标准制定时,W3C 却一度陷入了虚无缥缈的 XML 幻想中(“off in XML la la land”)。 - **DHTML 的历史遗产**:在微软放缓对 Web 的投入之前,他们曾以网景式的敏捷风格推出了 DHTML(动态 HTML)。这套替代版 DOM 的诸多创新直到多年后才在 HTML5 中被正式纳入规范。 “And that I think reflected in part the difficulty of using the Document Object Model, these APIs that were originally designed in the 90s for Java as well as JavaScript; they're very object-oriented or even procedural, they're very kind of verbose.” —— Brendan Eich - jQuery 本质上填补了 15 年前底层 DOM API 设计繁冗、表达力低下的空白。 - 现代 Web 规范吸纳了成熟生态的语法优势,框架竞争的生物进化最终促成了底层标准的净化。 ### [01:10:14](https://www.youtube.com/watch?v=krB0enBeSiE&t=4214s) HTML5、Flash 的终结与 Web 多媒体的妥协 Lex Fridman 称赞 HTML5 是一项令人惊叹的美妙设计,并询问这是否属于自己的过度浪漫化。Brendan Eich 笑着回应确实“有一点点浪漫化”。他谈到了 HTML5 的核心推动者——他的老朋友 Ian Hickson(Hixie)。Hixie 曾是挪威 Opera 浏览器的 QA 人员,也是一名受过物理学学术训练的怪才。Hixie 擅长编写庞大的测试套件,并尝试以公理化的方式梳理整个 Web 规范。然而,Web 的现实注定了它无法维持极致的优雅与精炼,因为必须处理海量的向下兼容与边缘特例,测试矩阵一旦变得极为庞大,系统就会失去某种极简之美(不像 Scheme 语言只追求少数几个核心特殊形式)。 尽管如此,由 Opera、Apple 和 Mozilla 发起的实用主义联盟打破了 W3C 试图用 XML 完全取代 HTML 的僵局,他们联合确立了 HTML5,将过去的既成事实(de facto standards)正式文档化,并推出了简明现代的 API(如原生视频 `<video>` 支持与替代 `XMLHttpRequest` 的 Fetch API)。 谈到 Flash 的消亡,Lex 认为 HTML5 为其钉上了棺材板,而 Brendan Eich 则明确指出致命一击的真正来源:“Steve Jobs saying no Flash on the iPhone, in my opinion, was the actual stick to the heart.” 乔布斯在 iPhone 上的禁令是对 Flash 的绝杀,在此之后,Flash 就像一具僵尸在主流浏览器中苟延残喘,直到最近才被彻底拔掉插头。 Lex 回忆起自己早期使用 Flash 制作动画的经历,直言虽然它带有编程元素,但由于缺乏约束,事件与时间轴的交织就像滥用“goto”语句一样混乱,引发许多难以排查的 Bug。Brendan Eich 坦承自己虽然没深度用过 Flash,但也承认 HTML5 至今尚未能完美复刻 Flash 当年那种直观、美妙的时间轴动画开发体验。 “Steve Jobs saying no Flash on the iPhone, in my opinion, was the actual stick to the heart... Jobs really did the death blow, and yeah you're right, we had to make HTML5 competitive.” —— Brendan Eich ### [01:13:02](https://www.youtube.com/watch?v=krB0enBeSiE&t=4382s) 多媒体标准落地与 asm.js 的诞生 随着浏览器逐步补齐 Video、WebGL 以及 Web Audio 等原生能力,在史蒂夫·乔布斯(Steve Jobs)公开向 Flash 发难并促成其退场的背景下,Web 平台终于实现了马克·安德森(Marc Andreessen)等人早期设想的愿景:一个具备图形渲染能力、直面底层硬件且跨平台的可移植运行时环境。 然而,如何让庞大复杂的底层代码在 Web 上流畅运行仍是难题。Adobe 实验室曾尝试通过 Alchemy 项目进行编译实验,而当时在 Mozilla(现于 Google)的 Alon Zakai 独立打造了一个基于 LLVM 的编译器(即 Emscripten),将 C/C++ 代码直接编译为 JavaScript。把静态类型、底层受控内存管理的语言编译为带有垃圾回收(GC)和动态类型的高级语言,听上去近乎疯狂,但 Alon 凭敏锐的直觉找出了 JavaScript 引擎中执行效率最高的模式。随后,Brendan Eich 从东北大学招募的类型理论学者 Dave Herman 与 Mozilla 的 JIT/编译器专家 Luke Wagner 联手,将这套模式形式化,定义为 JavaScript 的静态类型子集——asm.js。 asm.js 并未引入任何新语法,而是巧妙利用控制流图支配点(dominator positions)上的类型转换技巧(例如借用源自 Java 的按位或操作符 `|0`,将 64 位双精度浮点数强制转为 32 位整型),让底层语义可以直接处理类型化内存,从而实现线性时间内的类型检查与编译。这段代码完全避开垃圾回收器,通过直接调用编译映射出的函数,实现了确定性的极致性能。 ```mermaid flowchart TD accTitle: C/C++ 代码编译至 WebAssembly 的演进路径 accDescr: 展示从 C/C++ 源码通过 LLVM、asm.js 再到 WebAssembly 二进制格式的演进过程 subgraph Source ["源码与编译"] C["C / C++ 游戏引擎源码"] LLVM["LLVM / Emscripten 编译器"] C --> LLVM end subgraph Evolution ["中间表示演进"] ASM["asm.js<br/>(无新语法 / 规避 GC / 整数类型转换)"] WASM["WebAssembly (Wasm)<br/>(紧凑二进制格式)"] LLVM --> ASM ASM -->|"2015 行业共识"| WASM end subgraph Runtime ["浏览器运行环境"] VM["统一 JavaScript 虚拟机<br/>(共用内存管理与优化流水线)"] WASM --> VM ASM --> VM end ``` --- ### [01:15:44](https://www.youtube.com/watch?v=krB0enBeSiE&t=4544s) 虚幻引擎移植与 WebAssembly 的确立 2012 年秋天,Mozilla 团队与 Epic Games 创始人 Tim Sweeney 会面。Tim Sweeney 起初认为将大型 3D 游戏引擎移植到 Web 需要耗费数年,但 Mozilla 团队前往 Epic 位于罗利(Raleigh)的总部后,仅用四天时间便通过编译器一键完成了虚幻引擎(Unreal Engine)的移植。 该方案依赖于三项关键技术的协同: - **WebGL**:源自 OpenGL ES 与 Silicon Graphics 的 GL,提供底层硬件图形加速; - **Web Audio**:用于桥接 OpenAL 等通用音频接口; - **asm.js**:规避手动编写 JavaScript 带来的 GC 顿挫与庞大体积,在 2013 年的硬件配置下稳定输出 30 FPS。 在 2013 年游戏开发者大会(GDC 2013)上,无需任何插件、Java 或 Flash,直接在浏览器窗口内满帧运行《虚幻竞技场》(Unreal Tournament)的演示震惊了整个行业。 面对这一突破,Google 原本力推的 Native Client / Portable Native Client(PNaCl)技术方案逐渐失去优势。PNaCl 试图通过进程隔离与虚拟化容器运行 C 代码,被 Brendan 戏称为“换汤不换药的 Google 版 Flash”。2015 年春季,各大浏览器厂商达成共识,决定以 asm.js 的成功经验为蓝本,制定全新的二进制格式——WebAssembly(Wasm)。Wasm 直接复用既有的 JavaScript 虚拟机、垃圾回收器和编译器流水线,避免了在移动端下载与解析庞大文本代码的开销。Brendan 自嘲道,自己当年参照 Unix 工具 awk 拍板选用的 8 字符 `function` 关键字,在现代网络传输和解析场景下确实显得冗长。 --- ### [01:19:11](https://www.youtube.com/watch?v=krB0enBeSiE&t=4751s) 虚拟机军备竞赛与 Smalltalk 的性能传承 针对 Lex Fridman 对 JavaScript 惊人性能表现的赞叹,Brendan 指出计算机科学就像一个不断循环的宿命之轮(karmic wheel),现代 JavaScript 引擎的飞跃早在数十年前的 Smalltalk 虚拟机中便埋下了伏笔。 1997 年,Netscape 曾外派 Brendan 协助 Sun 公司对 Animorphic 团队展开收购尽职调查。该团队由 David Ungar、Craig Chambers 等斯坦福大学语言专家组成,他们曾在 Smalltalk 及其简化分支 Self 语言中,开创性地实现了即时编译(JIT)虚拟机。动态语言虽无静态类型声明,但虚拟机可在运行时推断类型流向,并利用多态内联缓存(Polymorphic Inline Caches, PIC)生成高度优化的机器码:通过快速分支预测核验类型,一旦类型不匹配则安全回退(bailout)至解释器。这套技术随后直接孕育了 Java 著名的 HotSpot 虚拟机,用以解决 `invokeinterface` 带来的动态分发瓶颈。 2008 年前后,浏览器性能大战全面爆发: - Mozilla 方面,Brendan 与 Andreas Gal 快速构建了基于跟踪的 JIT 引擎 TraceMonkey; - 苹果 WebKit 团队推出了 SquirrelFish Extreme; - Google 则启动了搭载 V8 引擎的 Chrome 项目。 Mozilla 早在 2006 年便获悉 Google 正在研发浏览器。随后 Brendan 与 V8 团队接触,发现领衔该项目的正是当年 Animorphic 的核心工程师 Lars Bak——一位深谙动态语言 JIT 优化的顶尖专家,Lars 当时也向 Brendan 深入请教了 JavaScript 的内核语义细节。 > “在 1990 年代我就知道所有那些了不起的技术,只是我当时根本没有时间在 JavaScript 里去实现它们。” —— Brendan Eich (01:20:48) ### [01:21:56](https://www.youtube.com/watch?v=krB0enBeSiE&t=4916s) V8 的诞生与 JIT 引擎的军备竞赛 Brendan Eich 回忆起 2006 年在 Google 园区吃午餐时的情景,当时 Google 正在秘密推进 Chrome 与其核心 JavaScript 引擎 V8 的开发。到了 2007 年秋季走向 2008 年期间,一位在 Chrome 团队担任开发者布道师(DevRel)的朋友向 Brendan Eich 透露,他们甚至不清楚在丹麦奥胡斯(Aarhus)闭关的 V8 团队到底在折腾什么:“我们正努力让 Chrome 面世,根本不知道 V8 团队在干什么,他们跑到丹麦奥胡斯,把整个引擎重写了四遍。”在 Eich 看来,多次推倒重写正是做这类底层系统研发最正确的方法。Lars Bak 率领的团队在此过程中一点点摸透了 JavaScript 的所有怪异之处(quirks),甚至一度“厌恶至极,恨之入骨(hated with the fire of a thousand suns)”,而这也成为 Lars Bak 等人后来另起炉灶设计 Dart 语言的原因之一。然而不可否认的是,他们确实把 JavaScript 的执行速度推向了极致。 面对 Google 的暗中发力,Mozilla 绝非蒙在鼓里,而是迅速行动,打造出基于追踪式的 JIT 编译器 TraceMonkey;与此同时,Apple 同样有所察觉,并在内部展开了自研引擎的提速工程。2008 年迎来的“快速 JIT 化 JavaScript 时代”,其技术血脉甚至可以一路回溯到早期的 Smalltalk 以及 Lars Bak 曾效力过的 Animorphic 虚拟机团队。Lex Fridman 感叹,正是这套兼具爱与恨的丰富辩证关系,造就了今天这门不可思议的飞速语言。 ```mermaid flowchart TD accTitle: JavaScript JIT 革命的技术演进与竞争格局 accDescr: 展示从 Smalltalk 和 Animorphic 技术积累,到 2008 年各大浏览器厂商竞相研发 JIT 引擎的历程。 subgraph Heritage["历史渊源与技术积淀"] ST["Smalltalk 虚拟机"] --> AM["Animorphic 团队<br/>(Lars Bak 等人)"] end subgraph BrowserWar2008["2008 年 JIT 军备竞赛"] AM -->|"加盟 Google 闭关丹麦重写四次"| V8["Google: V8 引擎<br/>(极致性能,诞生后催生 Dart)"] Moz["Mozilla: TraceMonkey<br/>(Tracing JIT 架构)"] App["Apple: WebKit / SquirrelFish<br/>(JSC 提速工程)"] end subgraph Outcome["最终结果"] V8 --> FastJS["JavaScript 步入现代化高速时代"] Moz --> FastJS App --> FastJS end ``` ### [01:23:15](https://www.youtube.com/watch?v=krB0enBeSiE&t=4995s) JavaScript 为何成为全球最流行的编程语言 当 Lex Fridman 询问 JavaScript 究竟凭什么在多项指标中稳居全球最流行编程语言的宝座时,Brendan Eich 剖析了其内在的核心理念与历史机缘。Eich 认为,自己最初赋予 JavaScript 一等公民函数(first-class functions),保留 C 语言清晰的运算符优先级,并竭力保持核心精简,虽然迫于 Netscape 商业要求必须在语法表面披上仿 Java 的外衣,但它骨子里蕴含着一种亚里士多德式的“内在良好品质(aristotelian quality)”。开发者能够穿透语言表层的瑕疵与怪癖,感受到这一内核的强大。 更关键的因素在于随后的社区演进与对一线开发者的持续倾听。正如 Nick Thompson 在 Hacker News 上发表的一篇令 Eich 颇感欣慰的长文所言:Java 是属于象牙塔专家的,要求繁复的类型声明,Sun 并不真正关心那些只想构建动态真实 Web 应用的普通工程师;而 Eich 则在 JavaScript 命悬一线的最初几年里,一人身兼数职为其保驾护航。当时 JavaScript 被主流视作登不上大雅之堂的“米老鼠语言(mickey mouse language)”,仅用于让浏览器状态栏跑滚动字幕等令人厌烦的把戏,但 Eich 坚持倾听一线开发者的需求,打磨单线程事件循环机制,最终在千锤百炼中赢得了人心。 谈及对这门充满缺陷却不可替代的语言的情感,Eich 借用了莎士比亚关于爱人的第 130 首十四行诗(“My mistress' eyes are nothing like the sun”),以及乔斯·韦登(Joss Whedon)电影《萤火虫》(Serenity)片尾的经典桥段:Mal 船长教超级天才 River Tam 开飞船时,背景配乐正是 David Newman 的《Love》,船长告诫她必须深爱这艘飞船,否则它就会要了你的命,而话音刚落飞船的一块零件就当场崩落脱落。Eich 直言: > “他们之所以爱它,是因为如今人们常说‘我们被绑定在它身上了,因为它占据了优先先机’,但在这种无可奈何的底层,其实是有爱在支撑的。” - **批判 ES6 Class 的误区**:部分纯粹主义者抨击 ES6 引入 Class 摧毁了语言的原型本质,但 Eich 指出 Smalltalk、Python 以及众多的 Lisp 方言(如 Common Lisp)同样具备类机制,动态语言引入类语法绝非倒退。 - **民主化的生态结构**:不同于 C++ 委员会往往由少数白发苍苍的老派专家(gray hairs)主导,ECMA TC39 委员会汇聚了竞争对手浏览器厂商,以及 PayPal、Salesforce 等深度依赖 Web 的大型企业,它们必须迎合庞大而年轻的开发者群体的实际工程诉求。 ### [01:27:07](https://www.youtube.com/watch?v=krB0enBeSiE&t=5227s) 庶民力量的觉醒:从技术平民化到 WallStreetBets 与金融博弈 Lex Fridman 提出了一个尖锐的比喻:如果说 C++ 象征着戒备森严的传统华尔街,那么 JavaScript 就像充斥着草根狂欢与混乱力量的 WallStreetBets 散户社区。Brendan Eich 赞同这一观点,指出 JavaScript 最大的特质就是“平民化(demotic)”,它绝不要求森严的高级证书作为门槛。Eich 回忆起 20 世纪 90 年代末无数人扎堆考取 Java 认证,其中许多人其实更适合去当大自然导游或飞行员,他们极度厌恶编程,纯粹为了赚钱而强行考证;而 JavaScript 从一开始就是人人可触达的。 作为时代转折点的见证者,Eich 进而剖析了当时轰动全网的 WallStreetBets 散户逼空华尔街对冲基金事件。他直言经济学这种“沉闷的科学(dismal science)”在与政治经济学和道德哲学脱节后,蜕变成了冷血的准牛顿力学式自洽模型,根本无法解释 WSB 社区散户通过协同挤压空头(short squeeze)的涌现行为。散户们凭借 600 美元的疫情纾困金(stimulus check),借助 Robinhood 这种免佣金交易工具集结,如同网络模因中手持微薄资金的终结者机器人,将高高在上的对冲基金打得落花流水、蜷缩在桌子底下。 Eich 进一步从制度层面反思了垄断与政治献金的恶果。在微软反垄断案之后,反垄断法案长期未能有效执行,资本利益直接购买政治控制权,滑向柏拉图所描述的“寡头政体(oligarchy)”。而 WSB 的反抗正带有强烈的黑客精神(hacker ethos)。谈到历史的发展规律,Eich 引用了黑格尔在耶拿战役中看到拿破仑骑马巡街时提出的“理性的狡计(cunning of reason)”: > “存在着这样一种百密一疏的差错,这样一种不可预料的意外后果,足以摧毁当权统治者自以为最周密的算计。” ### [01:30:35](https://www.youtube.com/watch?v=krB0enBeSiE&t=5435s) JavaScript 是否会统治未来:从软实力竞争到“母体”模拟 谈及科技巨头之间的竞争与博弈,Brendan Eich 庆幸这只是一种“软实力”竞争,而不是过去的街头流血冲突或机械化战争。Lex Fridman 借此展开了一个充满科幻色彩的设想:JavaScript 最初只是运行在浏览器前端的轻量级脚本,如今不仅在 Node.js 等后端环境中大行其道,更借助 TensorFlow.js 等前沿框架直接在浏览器内跑起了重量级的深度神经网络和机器学习任务。他发问:在未来的十到三十年里,整个世界会不会完全运行在 JavaScript 之上? Brendan Eich 笑称,对很多人来说这简直是一场“反乌托邦式的噩梦”。当年他和团队研发 asm.js 以及推动 WebAssembly 时,他就经常在技术社区里做表情包调侃:“这就像《黑客帝国》(The Matrix)里的 Neo 从营养仓中醒来,浑身瘦弱、无力且没有毛发,然后你意识到未来的整个现实模拟系统竟然全都是用 JavaScript 写的,你只能永远绝望地尖叫。” ```mermaid flowchart TD accTitle: 软件故障隔离演进与 JS 接管计算假说 accDescr: 展现传统 Unix 系统调用开销与现代轻量级隔离技术如何促成 JavaScript 接管一切的设想。 subgraph TRAD["传统 Unix 模型"] U["用户态程序"] -->|"高昂内核跨越开销<br>(System Call)"| K["特权内核 (Monolithic Kernel)"] end subgraph MODERN["现代隔离与轻量化架构"] JS["JavaScript / Wasm 应用"] -->|"极低开销边界"| SFI["软件故障隔离 (SFI)"] SFI --> VM["Unikernel / 极轻量运行时"] end TRAD -.->|"性能与隔离范式转移"| MODERN ``` Brendan Eich 进一步提到了技术演讲者 Gary Bernhardt 著名的幽默演讲《Wat》和《JavaScript 的生死存亡》(*The Life and Death of JavaScript*)。Gary Bernhardt 提出了一个极具逻辑自洽性且发人深省的技术假说: - 早期计算架构(如 Unix 单体监控核心)将特权内核与用户空间分离,用户进程崩溃不会拖垮整个操作系统,但系统调用(system calls)跨越内核边界的成本极为昂贵。 - 随着轻量级虚拟机、Unikernel、外核(Exokernel)以及硬件虚拟化技术的发展,软件故障隔离(Software Fault Isolation, SFI)可以在不频繁陷入传统操作系统内核的情况下以极低开销完成。 - Gary Bernhardt 的推理结论是:因为传统的操作系统调用边界代价过高,计算架构最终会演变成由 JavaScript 以及 WebAssembly 配合超轻量级的隔离机制来接管所有的计算负载。Brendan Eich 评价道:“这并非完全天方夜谭(It's not totally beyond belief)。” --- ### [01:33:22](https://www.youtube.com/watch?v=krB0enBeSiE&t=5602s) 编程语言的选择:从线性代数到 Rust 的所有权革命 当 Lex Fridman 询问初学者或想要深入计算机世界的开发者应该学习哪 3 到 5 门编程语言时,Brendan Eich 从计算机体系结构与不同应用场景切入,强调要根据解决的问题来配置自己的“工具箱”: 1. **数值计算与机器学习核心**:JavaScript 是一门通用语言,如果不借助特定底层扩展或魔法库,它并不适合做矩阵运算或并行编程。如果想深挖机器学习底层的线性代数核心,可以关注 APL 语言家族(如 J 语言,以及 Arthur Whitney 研发的 K 语言及其衍生版本)。 2. **胶水层与快速原型开发**:Python 长期主导机器学习领域。虽然 PyPy 等项目尝试过 JIT 编译器,但 Python 的哲学一向是“如果需要提速,就写 C 扩展下沉到底层”。动态语言非常适合做胶水监督和快速原型试验。 3. **系统级开发与安全变革(Rust 与 Go)**: - 作为 Mozilla 曾经的高管赞助人,Brendan Eich 亲自扶持了 Rust 语言的孵化。当时的核心诉求是彻底终结由 C/C++ 内存管理漏洞引起的远程代码执行(RCE)安全漏洞。“我们都受够了 C 和 C++ 引发的那些远程代码执行漏洞,”Brendan Eich 指出。Rust 引入的类型与效果系统(Type and Effect System)以及所有权系统(Ownership System)不仅实现了内存安全,还附带带来了一个“免费的定理”——在编译期消除数据竞争(Data Races)。目前 Rust 已经脱离 Mozilla 达到“逃逸速度”,获得了各大巨头的支持并成立了独立基金会。 - Brendan Eich 对 Go 语言也给予了极高评价。由 Unix 传奇人物 Ken Thompson、Rob Pike 等人打造的 Go 语言在服务器端网络编程中极其成功,务实且带有 C 语言的精髓。作为一名骨灰级 C 语言黑客,他开玩笑说唯一让他不习惯的只是 Go 把类型和变量名的声明顺序调换了。 - 语言长寿的林迪效应(Lindy Effect):JavaScript 已经发展了 25 年以上,历经多次标准重塑,“它已经是个成年人了,本该自立门户搬出去了,但它完全可能再存在 25 年”,而年轻的 Rust 同样展现出了极强的生命力。 --- ### [01:37:10](https://www.youtube.com/watch?v=krB0enBeSiE&t=5830s) 初学者的抉择:Python 的语法严谨 vs. JavaScript 的即时正反馈 针对 Lex Fridman 纠结于该推荐 Python 还是 JavaScript 作为初学者的第一门语言,两人对比了两种完全不同的学习体验与心智模型: - **JavaScript 的即时正反馈**:Lex Fridman 认为 JavaScript 的最大优势在于能让初学者立刻在浏览器中画出东西、看到界面发生交互,这种直观的视觉反馈能迅速唤起人们对编程的热爱。相比之下,用 C++ 可能要写上几年才能做出一个像样的完整程序。但 JavaScript 的危险在于初学者太容易写出糟糕的代码。 - **Python 的教学血统与语法约束**:Brendan Eich 指出,Python 继承自荷兰的教学语言 ABC,天生具备严密的教学特质。在 Python 中拼错标识符通常会在语法检查阶段直接报错中断,但在 JavaScript 中,拼写错误可能一路滑向运行时,悄悄演变成一个意料之外的 `undefined`。 ```mermaid flowchart LR accTitle: JS 原始值自动装箱与产生 undefined 流程 accDescr: 解释 JavaScript 对数字等基本类型隐式包装成对象,导致访问不存在的属性时静默返回 undefined。 A["原始类型数值 (如 42)"] -->|"引擎隐式包装 (Auto-boxing)"| B["Number 临时包装对象"] B -->|"属性寻址 (如 42['foo'])"| C{"属性是否存在?"} C -->|否| D["静默返回 undefined (不抛出类型错误)"] ``` Brendan Eich 分享了一个最近在 Twitter 上遇到的新手困惑案例:有用户向他抱怨,为什么在 JavaScript 里可以对一个数字进行索引寻址并返回 `undefined`,数字明明不是对象! Brendan Eich 解释说,这与 Java 的设计一脉相承:为了兼顾性能,原始类型并非对象,但系统支持自动装箱(Auto-boxing)将原始类型包裹为对象。在 Java 中由于有严格的类型声明,许多不合法的操作会在编译时被类型系统拦截;但在 JavaScript 里,装箱是完全隐式的,引擎静默完成了包装与属性查询,未找到对应属性便直接返回 `undefined`。 > “在 JavaScript 中这会静默发生。一旦我解释清楚,他们就会恍然大悟:‘原来是这样!’但这同时也意味着你可能会犯下一个大错,却完全没有受到系统的报错惩罚,甚至根本无法察觉,凭空冒出一个 `undefined` 值而你完全不知道它到底是从哪里来的。” —— Brendan Eich 正当讨论完语言细节,Lex Fridman 将话锋一转,提到自己近期阅读了大量军事史书籍,而观察 Web 发展历程最波澜壮阔的视角之一,正是贯穿始终的“浏览器大战”(Browser Wars)。 ### [01:39:33](https://www.youtube.com/watch?v=krB0enBeSiE&t=5973s) 第一次浏览器大战:Netscape 的疲态与 IE4 的崛起 Brendan Eich 回忆了 1990 年代网景(Netscape)与微软(Microsoft)之间的第一次浏览器大战。虽然微软因滥用操作系统垄断地位最终被判定违规,但 Eich 客观指出,到了开发 Internet Explorer 4(IE4)的阶段,微软已经组建起了一支实力非常强劲的工程团队。反观网景,负责前端与 JavaScript 事件机制的初创团队已经极度倦怠(burnout)。在网景 IPO 上市之后,高管层试图通过激进收购一系列公司来正面对抗微软,但这步棋走得并不理想。Eich 认为收购往往会失败,除非像 Mark Zuckerberg 早期管理 Instagram 或 WhatsApp 那样,让收购团队保持距离、独立运作;一旦强行将收购对象硬塞进公司体系,就会引发内部动荡与团队流失。 ```mermaid flowchart LR accTitle: Netscape decline and IE4 ascent accDescr: Diagram showing how acquisitions and burnout hurt Netscape 4 while Microsoft's engineering momentum drove IE4's dominance. subgraph Netscape["网景内部危机"] A["早期核心团队倦怠"] --> C["Netscape 4 延期与混乱"] B["收购导致新人夺权"] --> C end subgraph Microsoft["微软技术崛起"] D["组建强力团队"] --> F["IE4 凭借 DHTML/VML 胜出"] E["Windows 系统预装绑定"] --> F end C --> G["失去市场主导权"] F --> G ``` 网景收购后,许多新加入的工程师急于证明自己,想要接管浏览器的核心开发,但他们根本没有真正做过浏览器,也不理解其复杂底层。这直接导致了 Netscape 4 的延期——该版本原本规划为 Netscape 3,由于严重拖期,团队只能在 Jamie Zawinski 等人向内置邮件客户端临时补充 S/MIME(Secure MIME)安全加密等功能后,将原有半成品先以版本 3 发布,Netscape 4 则一拖再拖且首发仅支持 Windows 平台。 与网景的内部失控相对,微软在浏览器上展现了其一贯的产品进化飞轮:第一版往往是垃圾(trash),第二版让人感到隐约的威胁,第三版便能看出未来的赢面,到了第四版就彻底演变为优质产品。微软不仅将 IE 作为 Windows 的默认浏览器进行绑定销售,而且在 IE4 上投入了顶尖人才,甚至引领了动态 HTML(Dynamic HTML / DHTML)创新。 - **微软的项目经理机制**:Eich 提到了他的老友 Scott Isaacs,一位曾用 BASIC 编程的前会计师,后来成为了微软的“项目经理(Program Manager)”。在微软内部,该岗位地位非常高,可以由技术工程师转任,负责主导大量产品设计与标准工作,Isaacs 当时主导设计了大量前卫的 DHTML API。 - **震撼与绝望的历史时刻**:1997 年,Scott Isaacs 邀请 Brendan Eich 和 Scott Furman 在圣何塞的 Gordon Biersch 餐厅私下预览 IE4。Isaacs 展示了类似网景 Layers 的新技术、基于矢量的矢量标记语言(VML),甚至还能渲染虚拟现实效果。Eich 与 Furman 当时面面相觑,心中暗想:“我们完蛋了(we're doomed)。” - **Brendan Eich 谈微软的技术实力与垄断**:“微软当时确实在全速运转,我必须承认这一点。尽管他们滥用了市场垄断权力,或许我不该夸赞他们‘有钱招揽天才’,但他们在 IE4 上的确交出了一份无可指摘的答卷。” --- ### [01:42:49](https://www.youtube.com/watch?v=krB0enBeSiE&t=6169s) 垄断后的荒废与多标签浏览的破晓 在赢得第一次浏览器大战并确立绝对垄断后,微软迅速放缓了浏览器的更新脚步。由于反垄断诉讼、欧洲监管审查的压力,以及对处理国际标准化工作的厌恶,微软几乎对 IE 放任不管(let it rot)。随后推出的 IE 5.5 和 IE 6 维护极差,不仅漏洞百出,在功能上也迅速与时代脱节。 在微软停滞不前的几年里,外部浏览器阵营正孕育着关键性的体验革命。Mozilla、Firefox 以及早期的 Opera 率先普及了多标签浏览(Tabbed Browsing),并加入了弹窗拦截功能(Popup Blocking)。Eich 坦言,弹窗拦截本该是自己在 JavaScript 诞生之初就设计好的底层机制:如果页面弹窗由用户的直接点击行为通过事件调用栈(call stack)触发,浏览器才放行;而如果网页加载脚本自动静默打开新窗口,则属于典型的垃圾推广手法,理应直接被拦截屏蔽。 Lex 谈到自己当年成为网页设计初学者的体验,回忆起第一次在 Firefox 中接触标签页时的震撼。刚开始用的前几分钟他觉得极其不适应,但一旦找到了那种连贯的节奏,就再也回不去了。与此同时,网页构建方式也经历了巨大转变:早期的网页排版极度依赖繁复的 HTML `<table>` 表格和“透明占位图(spacer GIFs)”来强行挤出布局空隙;随着微软在 IE4 中率先拥抱并在业界逐步确立 CSS(层叠样式表)标准,更整洁的前端架构逐步取代了旧式排版。虽然 Web 在高级字体排版上依然不及 PDF 精细,但整体表现力已跨越了一个时代。 - **多标签页的交互认知**:“你得找到那个节奏。一旦你找到了节奏,你就彻底明白了这种设计的妙处。” - **弹窗拦截的技术逻辑**:检查 JavaScript 调用栈,确认打开窗口的操作是否溯源于真实的用户点击行为,以此将正常用户交互与垃圾弹窗脚本区分开来。 --- ### [01:44:54](https://www.youtube.com/watch?v=krB0enBeSiE&t=6294s) 凤凰涅槃:Firefox 的诞生与重命名风波 随着网景的技术遗产转入开源,全新的独立浏览器项目在 2002 年启动,最初项目代号为“Phoenix”(凤凰)。然而,Phoenix Technologies(一家知名的 BIOS 厂商,其产品内置过简易版 IE)随即发出版权抗议,要求项目改名。 团队退而求其次,将浏览器命名为“Firebird”(火鸟)。未料,一个位于澳大利亚的知名开源数据库项目 Firebird 瞬间被激怒。Eich 戏称对方以“真正的《疯狂的麦克斯》(Mad Max)狂暴风格”冲着团队狂轰滥炸,痛骂“绝不能盗用这个名字,我们恨你们”。Eich 不得不出面充当公关大使,安抚社区并承诺更名。最终,团队将名称定为“Firefox”(火狐)——这既保留了团队执着的“火焰(Fire)”意象,又是小熊猫(Red Panda)的别称,具备强烈的独特性。更名之后,抗议的数据库团队迅速态度大变转为赞赏,这场风波才告一段落。Firefox 于 2004 年正式发布,凭借现代化的多标签页体验和轻量高效的内核迅速风靡。 --- ### [01:46:00](https://www.youtube.com/watch?v=krB0enBeSiE&t=6360s) 开源逃生舱:Mozilla 创立与早期密码学走私 随着微软凭借 Windows 捆绑 IE 锁死了商业浏览器的收费路径,网景彻底丧失了造血能力。1998 年底,网景被美国在线(AOL)收购。在 Eich 看来,这个结局对大部分员工来说已经是合理的体面收场,否则网景只有破产一条路。 ```mermaid flowchart TD accTitle: The Mozilla open-source escape pod accDescr: Evolution of Mozilla from an open-source escape pod bypassing US crypto export laws to an autonomous pirate ship inside Netscape. A["网景面临灭顶之灾"] --> B["1998年启动开源逃生舱方案: Mozilla"] B --> C{"遭遇出口管制难题"} C -->|"美国法规限制"| D["禁止出口 1024-bit 强加密模块"] C -->|"澳大利亚黑客协助"| E["Tim Hudson 与 Eric A. Young 移植 SSLeay"] E --> F["绕过 NSA 与商务部审查成功集成安全通信"] B --> G{"内部政治阻力"} G -->|"收购团队保留私有代码"| H["扣押邮件与群件程序源码"] G -->|"内部自治"| I["以海盗船模式在网景内部独立运作"] F --> J["Mozilla 成为真正可用的开源浏览器"] I --> J ``` 在此之前,网景管理层于 1998 年初做出了一项历史性决断:启动开源“逃生舱(Escape Pod)”计划。正如电影《星球大战:新希望》开场帝国炮手不向没有生命迹象的逃生舱开火一样,网景高管希望把核心技术开源以逃离微软的全面绞杀,Mozilla 由此诞生。 然而,早期开源过程异常艰险。网景积累了四年的老旧代码极其混乱盘根错节,极难吸引外部人员协助开发。更严峻的挑战在于冷战遗留的法律红线:当时的传输层安全协议(SSL/TLS)强加密模块被美国政府归类为“电子军火(electronic munitions)”,受美国商务部与国家安全局(NSA)的严密监管,美国法律严禁网景将完整的 1024 位密钥强度的加密模块开源导出。 就在陷入死局之际,远在澳大利亚布里斯班的两位黑客破除了封锁——Tim Hudson(Eich 早期在 SGI 担任技术支持时结识的熟人)与 Eric A. Young。两人在海外独立实现了开源 SSL 库(最初以 Young 的名字命名为 SSLeay,即 OpenSSL 的前身)。由于地处澳大利亚,他们不受美国 NSA 和商务部管制。他们将开源加密模块巧妙地缝合进了 Mozilla 的源码库中。Eich 盛赞这是 Mozilla 开源后前几个月里“最不可思议、最伟大的一次代码黑客壮举(the best hack)”。 与此同时,网景内部被收购后的团队山头林立。此前主导了 Netscape 4 开发的收购团队拒绝交出专有的邮件和群件代码,导致 Jamie Zawinski 最初打造的轻量级邮件客户端被扣留,开源的 Mozilla 最初只能包含纯浏览器部分。在此背景下,Tom Paquin 等人带领核心团队将 Mozilla 运作成了网景体系内的一艘“法律实体之外的海盗船(a pirate ship without a legal entity)”,在 AOL 长时间未予干涉的真空期内,勉力维系着开放 Web 技术的独立火种。 - **历史逸闻与关键行动**: - **电子军火出口管制**:1990 年代末,美国对 1024-bit 加密算法施加严格出口审查,本土科技公司无法直接公开其安全通信代码。 - **OpenSSL 的前身**:Eric A. Young 与 Tim Hudson 开发的 SSLeay 成为现代互联网安全基石 OpenSSL 的雏形,他们的海外技术“走私”挽救了开源 Mozilla 的安全网络功能。 - **Brendan Eich 论开源逃生舱**:“网景高管当时说,咱们做个开源逃生舱吧。就像在《星球大战:新希望》里那样,帝国炮手不会朝没有生命体征的逃生舱开炮,因为觉得它毫无威胁。” ### [01:48:16](https://www.youtube.com/watch?v=krB0enBeSiE&t=6496s) Mozilla的架构重构、XUL与Mitchell Baker的开源领导 Mozilla成立之初,Netscape原定的人选担任管理职务,但他很快离职,留下Brendan Eich担任代理经理——Brendan调侃道:“那更像是我在上演体验派表演(method acting)。”不久后,曾为Netscape撰写开源许可证的律师Mitchell Baker休完产假回归。Mitchell一手操刀了Netscape Public License(NPL)以及纯粹开源的Mozilla Public License(MPL)。她主动提出接任Mozilla经理一职,Brendan和Jamie Zawinski欣然同意。然而,Jamie在一年后选择离开,他认为Mozilla是个彻底的失败,因为它没能立刻重启浏览器市场的竞争格局。但Brendan指出,当时Netscape仍在发布基于陈旧代码库的Netscape 4衍生版,Mozilla根本不可能在短时间内逆风翻盘。 Mozilla当时的核心任务不是技术上的单点突破,而是一个宏大的“社交目标”:开发者迫切需要一个基于标准、摆脱由前研究生四年前随手拼凑而成的“代码毛线球(hairball)”。为了构建一个全新的干净架构,团队推行了一整套现代系统设计: - 采用微软Component Object Model(COM)的开源变体(XPCOM),引入引用计数与标准化的C++虚函数表(vtable)虚拟调用; - 打造XPConnect桥接层,使JavaScript能够像操纵Java组件一样直接调用并脚本化这些C++底层组件; - 弃用传统的HTML表格渲染UI,开发专门的XML界面标记语言——XUL(XML User Interface Language),用于构建跨平台菜单、下拉列表与工具栏。 这套体系凝聚了一批顶尖极客,包括Dave Hyatt、Chris Waterson、Joe Hewitt以及当时还在读高中的实习生Blake Ross。 ```mermaid flowchart TD accTitle: Mozilla新架构概览 accDescr: 展示Mozilla通过XPCOM、XPConnect和XUL实现的模块化前端与后端架构 subgraph UI ["用户界面层 (XUL)"] A["XUL 标记语言"] -->|"跨平台定义"| B["原生界面控件 (菜单/工具栏/标签)"] end subgraph Script ["脚本抽象层 (JavaScript)"] C["JavaScript 逻辑"] end subgraph Engine ["核心底层 (XPCOM / C++)"] D["XPConnect 桥接层"] E["XPCOM 组件 (引用计数 / 统一虚函数表)"] F["Gecko 渲染引擎与网络层"] end A --> C C --> D D --> E E --> F ``` --- ### [01:50:20](https://www.youtube.com/watch?v=krB0enBeSiE&t=6620s) 跨越企业边界的开源共同体与Mozilla 1.0 在Mozilla阵营快速创新的同时,母公司Netscape却深陷多重收购后的管理泥潭,内部人心惶惶,时刻担心AOL会降下大裁员的断头台。AOL曾妄图把Netscape引擎直接硬塞进日薄西山的拨号客户端(AOL dial-up client),最终因改动量过大而流产。2001年,Mitchell致电Brendan,告知自己被Netscape裁撤。讽刺的是,在裁员次周面向全社区的Mozilla周会上,Mitchell照常现身主持大局。 Brendan强调,这次风波印证了一个深刻的开源法则:只要一个项目凝聚了足够高的忠诚度,它就能“超越企业开源的边界(transcend your boundaries of corporate open source)”。Mozilla社区的贡献者不仅涵盖Red Hat等外部厂商,很多原本就是社区高手后被招进Netscape的精锐,他们比Netscape内部的普通在职工程师更为出色。厌恶Mozilla并排斥开源公开竞争的,反而是Netscape那些水平偏弱的技术人员。 到了2002年,团队通过类似现代Chrome、Firefox的五至六周发布周期推进路线图,推出了Mozilla 1.0。Brendan回顾道:“我们走到了一个节点并宣布:‘你知道吗,它不烂了,这就是你想发布的1.0版本,因为如果为了打磨而继续拖延,你就是在剥夺别人使用它的权利。’”(“You know what, it doesn't suck. This is like the 1.0 that you want to release, because if you hold it back any longer to polish it, you're denying others the ability to use it.”)当时诸如Pro/ENGINEER等工业三维CAD软件甚至直接嵌入了该布局引擎。然而,Mozilla 1.0仍像一个臃肿的90年代套件软件(Suite),塞满了邮件新闻客户端和HTML编辑器。Netscape在其商业版中强行挂载AOL Instant Messenger和ICQ图标,搞得像贴满商业标签的“NASCAR赛车”,这反而促使纯净的Mozilla在极客中更具号召力。 --- ### [01:53:50](https://www.youtube.com/watch?v=krB0enBeSiE&t=6830s) Phoenix的诞生、Dave Hyatt与现代多标签浏览器的萌芽 为了摆脱套件的臃肿,团队决定回归本源,打造一款专注于做好单一职责的轻量浏览器,并将多余功能剥离至扩展机制中。最初这个内部项目被命名为`mozilla/browser`,核心研发团队极其精炼,仅有Brendan Eich、Dave Hyatt、Blake Ross、Ian Hickson、Asa Dotzler和Joe Hewitt等人。 高级工程师Dave Hyatt在其中起到了决定性作用。他精通XUL跨平台菜单设计,并在Mac OS平台的Camino(最初名为Chimera)上通过原生方式实现过标签页浏览(Tabbed Browsing)。Hyatt信奉通过反复实战迭代重写来逼近卓越。Hyatt的妻子Rebecca曾向Brendan讲述过Hyatt在伊利诺伊大学厄巴纳-香槟分校(UIUC)读研时的趣事:期末大作业中,Hyatt的朋友试图构思出一个“柏拉图式完美的程序模型”,计划到最后时刻一气呵成,而Hyatt从开学就卷起袖子疯狂编码重写;学期末朋友未能完成交差,而Hyatt迭代到第五版的代码质量惊艳全场。 这套理念直接注入了代号为Phoenix的浏览器中(该项目历经两次更名最终定名Firefox)。但人才流失紧随其后: - Blake Ross考入斯坦福大学,无法全力投入开发; - Dave Hyatt于2001年被苹果公司挖走,成为Safari浏览器的创始核心元老(此前Netscape的工程主管Don Melton也跳槽加盟苹果)。 即便加盟苹果后,Hyatt仍在个人博客撰文阐述如何正确实现标签页,苹果甚至一度警告他停止发帖、不得泄露“苹果专有标签技术”,Hyatt回击称这技术早在Opera就已出现,自己只是加以完善。随着人才分散,来自新西兰的工程师Ben Goodger接替Hyatt,成为Firefox项目的总负责人。与此同时,AOL终于意识到Netscape已成为毫无战略价值的负资产(albatross),而Brendan作为公司主任工程师(Principal Engineer),也不得不卷入东海岸复杂的办公室政治旋涡中。 ### [01:56:40](https://www.youtube.com/watch?v=krB0enBeSiE&t=7000s) AOL 与时代华纳的荒唐合并与封闭生态的落幕 Brendan Eich 回忆起当年 Netscape 被收购后,不得不前往弗吉尼亚州杜勒斯(Dulles)的 AOL 总部参加各种“花架子展示会(dog and pony shows)”。当时的 AOL 高管层充斥着浓重的美东上流阶层风气,正赶上 AOL 与时代华纳(Time Warner)轰动一时的大合并。现场充斥着自命不凡的市场营销人员——有人系着花罗领带(cravat),其中一个叫 Reggie,浑身上下散发着常春藤预科学校(preppy)式、 Whit Stillman 电影《大都会》(Metropolitan)里那种“虚荣且无用”的优越感。然而第二年再去时,Reggie 已经卷铺盖走人了,因为时代华纳迅速发现这场合并毫无利益可言,公司内部随即掀起刺刀见红的权力争斗。90 年代末企业界盲目鼓吹的“协同效应(synergy)”彻底破灭,无论是 AOL 收购 Netscape 还是合并时代华纳,根本没有产生任何真正的协同。 ```mermaid flowchart TD accTitle: AOL's Ecological Isolation accDescr: AOL dominates dial-up access but forms an isolated walled garden, eventually eclipsed by the modern web and browsers like Firefox. subgraph DialupEra ["拨号上网黄金时代"] A["AOL 软盘/光盘地毯式轰炸"] --> B["击败 CompuServe 与 Prodigy"] end subgraph WebEra ["开放 Web 崛起时代"] B --> C["AOL 封闭生态<br/>(澳大利亚有袋类孤岛)"] C --> D["用户群体老龄化、脱节"] E["现代 Web 爆发<br/>(Firefox / Craigslist / Gmail)"] --> F["开放 Web 取代封闭花园"] end ``` 谈及 AOL 当年是否曾像后来的 Firefox 那样激荡人心,Eich 指出,AOL 的本质是在正确的时间踩中了拨号上网的风口,靠着像发传单一样向全美地毯式邮寄安装光盘(compact disks)抢占了分发渠道,从而干掉了 CompuServe 和 Prodigy。但随着开放万维网的崛起,AOL 变成了一块与世隔绝的大陆,就像进化生物学家嘲笑的澳大利亚有袋类哺乳动物一样荒谬且封闭。它的用户群逐渐固化为上了年纪、有孙辈、具备一定社会经济地位但根本玩不转通用浏览器的老人。这块“孤岛”在 21 世纪头十年的末尾不可避免地走向消亡。 - 90 年代末企业并购盲目寄托于虚幻的“协同效应”,AOL 先后吞下 Netscape 和时代华纳均以闹剧收场。 - AOL 的早期霸权建立在简单粗暴的物理光盘分发渠道之上,而非现代开放的 Web 技术实力。 --- ### [01:58:49](https://www.youtube.com/watch?v=krB0enBeSiE&t=7129s) Web 2.0 浪潮与浏览器的搜索引擎盈利命脉 随着 2004 年 Firefox 横空出世,它迅速成为了代表最前沿科技的酷炫代名词。那一年,Tim O'Reilly 与 John Battelle 举办了第一届 Web 2.0 大会;Craigslist 正在重创传统报纸的分类广告收入;Wikipedia 崭露头角;Google 推出的 Gmail(2003-2004 年左右)和 Google Maps 彻底震撼了业界。人们惊叹于地图居然可以直接在网页上拖拽平移,而这背后依靠的正是纯粹的 JavaScript 和动态图像切片技术。 就在这种互联网新浪潮的酝酿期,Mozilla 迎来了一笔决定其生死的关键商业交易。2004 年初,Sergey Brin 最器重的工程师之一 Fred Schneider 主动联系了 Eich,双方开启了关于搜索合作的谈判。这促成了 Mozilla 史上最重要的收入来源——将 Google 设为 Firefox 的默认搜索引擎。Lex Fridman 对此感叹,浏览器的最大营收来源居然是默认搜索引擎,细想之下既不可思议又略带悲凉。Eich 直言: > “Search and browser need each other, and this is deeply true, right? This is still true. This is why a lot of the search engines have their own browsers.”(“搜索与浏览器互为依存,这是极其深刻的事实,对吧?时至今日依然如此。这就是为什么很多搜索引擎都要打造自己的浏览器。”) 这种共生关系也催生了残酷的“通吃或绞杀(capture or kill)”效应:搜索引擎若自建浏览器,其他独立浏览器就会在分发渠道上被掐死并举步维艰。 - 2004 年 Firefox 伴随 Web 2.0、Gmail、Google Maps 的浪潮成为先锋技术的代表。 - 浏览器厂商的核心商业模式高度依赖默认搜索引擎分成,这一模式直接导致各大搜索巨头自研浏览器的野心。 --- ### [02:00:22](https://www.youtube.com/watch?v=krB0enBeSiE&t=7222s) 微软的迟钝与 Chrome 的秘密萌芽 2006 年前后,Eich 已经确切察觉到 Google 正在秘密自研浏览器。此前微软在打赢第一次浏览器大战后彻底解散了解析团队,面对 Firefox 的崛起反应极度迟缓,直到 IE7 才仓促应战。Eich 讲了一个生动的机舱见闻:一次参加完雷德蒙德的 JavaScript 标准会议返程时,他恰巧坐在一位微软大胡子员工的后排(那人甚至碰巧认识 Eich 的妻子)。那名员工一路愤愤不平地抱怨: > “We should have just killed Firefox in the cradle. All we needed to do was add pop-up blocking and tabs, and we could have made it interesting. Kill Firefox.”(“我们当初就应该把它掐死在摇篮里。我们其实只需要加上弹窗拦截和标签页功能,就能把它扼杀掉。”) Eich 听着后排暗自冷笑:“本该如此、能够如此、如果当初如此,可惜晚了,老兄(Shoulda, coulda, woulda, pal)。”微软的傲慢与迟钝让 IE7 毫无竞争力,真正让浏览器战争全面升级的导火索其实是 Google Chrome 的诞生。 早在 2005 年与 Larry Page 会面时,Page 就向 Eich 询问对 WebKit 的看法。WebKit 源自 Linux KDE 桌面生态下的 KHTML 引擎(此前用于 Konqueror 浏览器),苹果将其 Fork 后由 Dave Hyatt 和 Maciej Stachowiak 等人进行深度改造,并于 2005 年建立了正式的开源项目 Webkit.org。Eich 当时就直率地告诉 Larry Page:WebKit 非常棒,自己也有很多朋友在维护它;如果 Google 想做自己的浏览器,尽管基于 WebKit 去做,完全不必顾虑 Firefox。 - 微软员工后悔未在 Firefox 萌芽期通过加入标签页与弹窗拦截将其扼杀,但最终因行动迟缓丧失先机。 - 苹果将 Linux 阵营的 KHTML 代码库改造为 WebKit,为 Google 后续打造 Chrome 奠定了引擎底座。 --- ### [02:02:18](https://www.youtube.com/watch?v=krB0enBeSiE&t=7338s) Chrome 的多进程架构、弹药库准备与 Sundar Pichai 的崛起 2006 年,Google 内部由多名前 Netscape 和 AOL 工程师操刀,秘密做出了 Chrome 的早期演示原型。那个演示版本尚未集成 Lars Bak 后来在丹麦农场闭门研发的 V8 极速 JavaScript 引擎,但已经具备了现代标签页设计和革命性的“基于操作系统进程隔离的软件故障隔离(process isolation)”。 ```mermaid flowchart LR accTitle: Chrome Process Isolation accDescr: Chrome isolates browser tabs into separate OS processes to prevent Flash and plugin crashes from taking down the entire browser window. subgraph ChromeArchitecture ["Chrome 架构创新"] A["标签页 Tab A<br/>(独立 OS 进程)"] B["崩溃源:Flash 插件漏洞"] C["标签页 Tab B<br/>(独立 OS 进程)"] D["主浏览器框架 UI"] end B -->|"崩溃"| A A -->|"展现"| E["'伤心标签页' (Sad Tab)<br/>仅当前标签挂掉,主程序完好"] D -.->|"持续正常运行"| C ``` 当时各大网站(尤其是餐厅官网)充斥着极易崩溃的 Adobe Flash。传统的单进程浏览器只要遇到一个网页崩溃,整个浏览器窗口就会闪退。在 Google 的内部演示中,工程师故意加载了一个包含已知 Flash 漏洞的网页,Flash 崩溃后,整个浏览器并未瘫痪,而是首次露出了经典的“伤心标签页(Sad Tab)”笑脸图标,用户只需刷新该标签即可复原。这种源自 GreenBorder 收购案与安全专家 Úlfar Erlingsson 的沙箱隔离技术,给尚在艰难修复安全漏洞的 Firefox 带来了巨大降维打击。 2008 年 9 月,由于一本介绍研发团队(包括 Lars Bak 等人)的官方宣传漫画意外提前泄露,Google Chrome 展开了一场低调的“软启动”。彼时 Firefox 的市场份额仍一路高歌猛进,直到 2011 年才达到顶峰,但随后便在 Chrome 的猛烈攻势下步步失守。 Google 之所以不遗余力研制 Chrome,背后有极强的战略危机感:微软自 2007 年起发力搜索引擎必应(Bing),Google 极其恐惧微软会凭借 Windows 的绝对统治地位,以强盗逻辑将所有 IE 甚至 Windows 上 Firefox 的默认引擎强行篡改成 Bing。为了构筑分发护城河,时任副总裁、日后升任 Google CEO 的 Sundar Pichai 凭借力推 Google Toolbar(工具栏)以及类似 macOS Spotlight 的 Google Desktop Search(桌面本地搜索)分发渠道立下了汗马功劳,在 Chrome 问世前为 Google 搜索筑起了坚不可摧的分发防线。 - **多进程隔离(Process Isolation)**:Chrome 彻底改变了浏览器的容错机制,将插件与网页崩溃限制在单一标签页内,诞生了经典的“Sad Tab”体验。 - **Firefox 顶峰与转折**:Firefox 在 Google 搜索分成的输血下持续增长至 2011 年见顶,随后被 Chrome 逐步蚕食。 - **分发防御战**:面对微软 Bing 的潜在截流威胁,Sundar Pichai 凭借推广 Google Toolbar 等桌面插件夺取分发掌控权,为 Chrome 的最终铺开争取了时间。 ### [02:05:07](https://www.youtube.com/watch?v=krB0enBeSiE&t=7507s) 搜索引擎与浏览器的深度绑定与默认值之争 谈及早期浏览器生态与商业博弈,Brendan Eich 深入剖析了 Sundar Pichai 在 Google 早期通过 OEM 预装 Google 工具栏(Google Toolbar)奠定的战略壁垒。大约在 2007 至 2008 年间,Google 达成了一系列 OEM 协议,确保即使微软在 Windows 中强推自家的 Bing 搜索,Google 也能够凭借这些终端驻留点(Point of Presence)迅速反制并重置默认搜索引擎。不过,由于微软当时反应迟缓,这一防御反击并未真正演变为正面决战。直到 Chrome 发布后,微软才如梦初醒,推出了 Internet Explorer 9,并配备了名为 Chakra(后演变为 ChakraCore)的快速 JavaScript 引擎,走上了多进程隔离和多标签页架构的道路。 Lex Fridman 随即指出,浏览器与搜索引擎之间似乎存在着一种极为深刻的底层耦合。Firefox 本身没有自研搜索引擎,只能依赖商业合作。Brendan 回忆了 Firefox 尝试与 Yahoo 合作的一段弯路:当时 Marissa Mayer 掌舵 Yahoo,但在此之前的前任 CEO Carol Bartz 曾因缩减高昂开支而裁撤了核心搜索团队,导致大量顶尖研发人员流向 Google 与微软,Yahoo 搜索的技术实力已不可逆转地被掏空。2014 年 12 月中旬,Firefox 将默认搜索引擎从 Google 切换至 Yahoo,大量用户立刻感到体验断崖式下跌,并在接下来的一年里纷纷手动将默认设置切回 Google。尽管根据 Danny Sullivan 等人披露的协议细节,Mozilla 拿到了高额的保底分成,但 Yahoo 期望的持续搜索流量却彻底落空。这一案例深刻印证了默认配置(Defaults)的商业价值与脆弱性:“默认设置至关重要,但前提是它的体验必须足够好,好到用户没有动力去手动覆盖它。” - **预装战略**:Sundar Pichai 借由 OEM 预装 Google Toolbar 形成防守阵地,直接铺垫了 Chrome 的顺理成章登场及其个人在 Google 的崛起。 - **Chakra 引擎**:微软在 IE9 中引入自主研发的 Chakra JavaScript 引擎,标志着主流浏览器全面进入多进程与高速 JIT 时代。 - **默认搜索引擎的价值**:绝大多数主流商业应用的变现基石在于对默认搜索引擎及核心配置的控制权,但这完全依赖于产品底层的可用性。 --- ### [02:07:32](https://www.youtube.com/watch?v=krB0enBeSiE&t=7652s) 隐私浪潮的兴起与本地痕迹的局限 随着 Chrome、Firefox、Edge 以及 Brave 形成新一轮的竞争格局,各大浏览器又开始了相互借鉴与特性迭代。Brendan 强调,当前最核心的技术与体验分水岭正是**追踪保护**(Tracking Protection)。他将隐私称为一场“正在掀起的全球性浪潮”,并解释说:“我喜欢把它称作浪潮,因为这是一个规模庞大且在某种程度上呈现混沌态的结构;它不是一个单一明码标价的商品,你不能说‘我花三块钱就能买来三块钱的隐私’。”许多人误以为买个 VPN 就能高枕无忧,但 VPN 本质上往往只被拿来绕过地理限制(比如跨区看 Netflix),根本无法彻底解决追踪问题。 在这一浪潮中,Apple 最早通过 Safari 建立了注重隐私的品牌形象,甚至可能早在 Steve Jobs 时期就已经奠定了这一定调。Safari 很早就推出了私密浏览窗口(Private Browsing),但 Brendan 指出,大众对“无痕/私密浏览”存在巨大误区:其标准模型仅仅是“在关闭窗口后不在本地硬盘留下历史记录或访问痕迹”,既防不住网络层面的 ISP 与网络嗅探,更阻挡不了来自服务器端的跨站追踪。 ```mermaid flowchart TD accTitle: "本地私密浏览与网络追踪的对比" accDescr: "展示私密浏览仅能清除本地历史,无法阻挡网络层追踪与跨站追踪" subgraph LocalDevice["用户本地设备"] PrivateTab["私密标签页 (Private Window)"] LocalData["本地存储 / 缓存 / 历史记录"] PrivateTab -- "窗口关闭时销毁" --> LocalData end subgraph NetworkEnv["网络与追踪层"] ISP["ISP / 网络运营商"] ThirdParty["第三方追踪服务器 (AdTech)"] PrivateTab -. "明文/相同 IP 通信".-> ISP PrivateTab -. "携带标识符/网络指纹".-> ThirdParty end ``` --- ### [02:09:23](https://www.youtube.com/watch?v=krB0enBeSiE&t=7763s) Cookie 的起源、透明像素与追踪经济学的诞生 Brendan 详细回溯了现代网络追踪的底层技术是如何在 90 年代作为意外副作用诞生的。1994 年,在他加入 Netscape 之前,Lou Montulli 为了解决 Web 协议(HTTP)无状态(Stateless)的缺陷,仓促设计了 Cookie。在没有 Cookie 的年代,用户在网银系统每一次跳转页面,都必须重新输入密码认证;Cookie 允许浏览器在本地存储经过加密的时戳凭证,每次向同一站点发起请求时自动附带该凭据,从而实现了无缝的会话保持。 然而,这一机制迅速引发了无法收场的连锁反应: 1. **第三方资源的引入**:网页中开始允许通过 `<img>` 标签嵌入来自第三方服务器的内容。 2. **追踪像素(Tracking Pixel)**:第三方广告服务器只需在不同网站(如 The New York Times 和 ESPN)上嵌入一个肉眼不可见的 1×1 透明像素图片。 3. **状态建立与画像拼合**:当用户的浏览器向第三方服务器请求该像素时,请求头会附带该域下的 Cookie;服务器首次发现 Cookie 为空,便会分配一个唯一 ID(如用户 1234),并在数据库中记录下该 ID 刚刚访问了纽时,随后又访问了 ESPN。 ```mermaid flowchart LR accTitle: "基于第三方像素与 Cookie 的跨站追踪机制" accDescr: "展示用户访问不同站点时,第三方图片服务器如何利用 Cookie 建立统一的用户行为画像" User["用户浏览器"] SiteA["网站 A (如 The New York Times)"] SiteB["网站 B (如 ESPN)"] Tracker["第三方广告服务器 (AdTech Pixel)"] User -->|"1. 访问网页 A"| SiteA SiteA -.->|"包含第三方像素链接"| User User -->|"2. 请求 1x1 像素 (携带/生成 Cookie ID)"| Tracker Tracker -->|"记录用户画像: 访问了网站 A"| Tracker User -->|"3. 访问网页 B"| SiteB SiteB -.->|"包含相同第三方像素链接"| User User -->|"4. 请求像素 (携带相同的 Cookie ID)"| Tracker Tracker -->|"更新用户画像: 访问了网站 B"| Tracker ``` Lou Montulli 后来曾试图设计一种名为“Twinkies”的改良方案,希望扩大存储上限并解决第三方滥用问题,但 Netscape 的工程管理人员 Tom Paquin 斩钉截铁地予以驳回,表示:“不行,不要搞什么 Twinkies,就用现有的 Cookie,这事到此为止。”随后在 Netscape 3 中,Brendan 进一步让 JavaScript 支持了动态嵌入与网络请求,使得追踪脚本不仅不需要图片,还能隐秘执行更加复杂的指纹嗅探。整个数十亿美元规模的广告监控经济(AdTech Surveillance Economy),完全建立在 90 年代这些技术妥协与未曾预料的副作用之上。面对 Lex 调侃这些漏洞催生了世界上最富有的几家巨头公司,Brendan 笑着自嘲道:“而我得到的只是一件烂 T 恤。” - **无状态协议的困境**:早期 HTTP 每次请求完全独立,若无 Cookie,用户在同一网站内的每次点击跳转都需要重新鉴权登录。 - **第三方 Cookie 滥用**:利用跨域资源(图片像素、外链 JS 脚本)在第三方服务器间回传标识符,成为无感追踪用户浏览轨迹的行业通用解法。 - **Brave 的出发点**:眼看 Firefox 依赖用户自行安装第三方扩展来阻断追踪,Brendan 意识到既然这些机制在设计初衷上就不具备正当性、且极易引发数据泄露危险,就应该从浏览器内核层面**默认全面阻断**,这也直接成为了 Brave Browser 的立足基石。 ### [02:13:41](https://www.youtube.com/watch?v=krB0enBeSiE&t=8021s) 区分第一方与第三方:浏览器防护的“弗兰肯斯坦”困境 Brendan Eich 将自己比作创造了怪物的弗兰肯斯坦博士(Dr. Frankenstein):他当年发明了 JavaScript,如今却必须设法阻止那些被用于恶意软件分发、网络欺凌和心理战攻击(psyops)的脚本代码。问题在于,区分恶意脚本和良性脚本极其困难。当用户打开 Gmail 时,页面中充斥着用于构建流畅 Web 客户端的脚本,这些属于完全合理的第一方 JavaScript。然而,辨别第一方与第三方脚本并不像检查脚本是否来自不同服务器那么简单,许多网站发布商本身就会依赖看似毫不相干的独立域名来加载完全合法的良性功能。 ```mermaid flowchart TD accTitle: 传统第三方 Cookie 漏洞与追踪重定向 accDescr: 展示广告商 AppNexus 如何利用重定向漏洞绕过早期 Safari 的第三方 Cookie 拦截策略 subgraph UserInteraction["用户操作"] Click["用户在网站上点击广告"] end subgraph AppNexusExploit["AppNexus 漏洞绕过机制"] Redirect1["广告脚本拦截点击并先重定向至 appnexus.com"] SetCookie["appnexus.com 写入第一方 Cookie 并将自身加入白名单"] Redirect2["再次重定向至广告主的最终落地页 (Landing Page)"] end Click --> Redirect1 Redirect1 --> SetCookie SetCookie --> Redirect2 ``` 为了解决这一难题,Brave 从创立之初就组建了专门的研究团队,结合人工分析与机器学习来实现自动化拦截。2017年春季,Brendan Eich 与苹果团队交流时发现双方英雄所见略同:苹果在 Safari 中推出了智能防跟踪功能(Intelligent Tracking Prevention,简称 ITP),同样是在浏览器本地运行机器学习模型,用以封堵早年第三方 Cookie 拦截策略留下的巨大漏洞。 - 早在2003年 Safari 诞生时,乔布斯时代的苹果就推出了针对未访问过的第三方嵌入域名的 Cookie 拦截功能,堪称早期的隐私保护壮举。 - 广告平台 AppNexus(后被 AT&T 收购)发现并利用了一个漏洞:用户如果从未主动访问过 `appnexus.com`,其第三方 Cookie 就会被拦截;但如果用户访问过该域名,浏览器便认为该域名可信。 - AppNexus 于是要求合作广告主在可点击广告中注入重定向脚本:当用户点击广告时,先快速跳往 `appnexus.com` 设置第一方 Cookie 并将其洗白,随后再重定向至广告主的落地页,从而合法地绕过了浏览器的隐私防线。 ### [02:15:51](https://www.youtube.com/watch?v=krB0enBeSiE&t=8151s) 指纹追踪、超级 Cookie 与 Web 标准的暗战 随着防跟踪技术的发展,对抗手段延伸到了“浏览器指纹”(Fingerprinting)与“超级 Cookie”(Super Cookie)。Brendan Eich 解释了超级 Cookie 的机制:只要恶意攻击者能在32个不同的网站中各找到1比特的本地存储空间,就可以通过置开(1)或关(0)拼凑出一个32位的二进制数值。这足以生成超过40亿个独立编号,从而在不依赖传统 Cookie 的情况下唯一标识并追踪用户。对于无法写入存储的情况,跟踪者则转向统计学意义上的指纹收集。为了从根源上消除隐患,浏览器厂商不仅需要自动化拦截工具,还必须深入 Web 标准组织(W3C 等),推动在规范设计之初就融入默认隐私机制,防止新 API 引入过多的本地存储或指纹攻击面。 然而,在标准组织内部推动隐私标准举步维艰,因为 Google 已经接替了当年微软的角色,成为标准制定的新垄断巨头。Google 并不支持将隐私置于首位,只有在面临巨大的市场压力时,才会按自己的意图推行隐私方案。与此相对,Brave 和苹果 Safari 坚持无条件全面拦截第三方 Cookie。为了防止网站功能因此崩溃(例如嵌入网页的 YouTube 视频无法播放),Brave 采取了与苹果 ITP 类似的“存储分区”(Storage Partitioning)技术:它为每个站点及其加载的第三方资源划定专属的“隔离 Cookie 罐”(Cookie Jar),既模拟了功能完备的 Cookie 环境,又彻底隔绝了跨站追踪能力。 - Brendan Eich 谈及当前 Web 标准竞争格局时直言:“现在的标准组织里谁是当年的新微软?是 Google;他们根本不支持隐私优先,他们只想按自己的方式来定义隐私,而且只有在面临市场压力时才会妥协。”(“And that's been a struggle too because guess who's the new Microsoft in the standards body? It's Google, and they're not in favor of privacy first. They want to do privacy their way only under, I would say, market pressure.”) ### [02:17:46](https://www.youtube.com/watch?v=krB0enBeSiE&t=8266s) 广告拦截浪潮与“Google 种植园”的吸血生态 从2015年 Brave 成立至今,广告拦截格局经历了翻天覆地的巨变。早年自2006年 Firefox 上 Adblock Plus 流行起,再到亚洲市场 UC 浏览器默认集成广告拦截,拦截工具的普及让出版商惊慌失措。创业公司 PageFair 曾调研发现,像 Condé Nast 旗下的 Wired 或 Pitchfork 等网站,有高达30%的访客开启了广告拦截器。PageFair 和 Sourcepoint 等公司试图通过劝说用户解除拦截,或者使用反拦截技术偷偷塞入广告,甚至声称能帮出版商挽回43%的收入损失,但这套软磨硬泡的策略最终被证明收效甚微。 随着 Safari 在2017年引入 ITP、Brave 自2016年起默认开启强力 Cookie 拦截,广告拦截的趋势已不可逆转。起初,出版商对 Brave 极度敌视,将其视作砸人饭碗的掠夺者。然而到了2017至2018年前后,出版商猛然发现真正的剥削者并非拦截软件,而是自身深陷由 Google 主导的“Google 种植园”(Google's plantation): | 行业核心病症 | 运行机制与负面后果 | |:--- |:--- | | **AMP 垄断绑定** | Google 推行 Accelerated Mobile Pages (AMP),将发布商内容牢牢锁定在其自家生态与服务器内。 | | **广告分成抽成过重** | 出版商被迫严重依赖 Google 广告中介系统,后者在流转链条中抽取了绝大部分的广告价值。 | | **虚假广告欺诈 (Ad Fraud)** | 广告主买单的广告被黑产机器人点击在假冒的《纽约时报》克隆站上,正牌出版商分文未得,而 Google 作为全球最大的 Ad Exchange 却从中稳收交易中介费。 | | **恶意广告分发 (Malvertising)** | 虚假广告主将包含漏洞利用载荷(Exploit Kit)的恶意 JavaScript 伪装成正常广告投放至正规大站,广告交易所同样照单全收并抽取手续费。 | 面对这套充斥欺诈、恶意软件与利益盘剥的系统,Brendan Eich 犀利地质疑:虽然自己不是律师、不能直接指控其构成诈骗集团犯罪(RICO predicate),但广告交易平台一边纵容甚至促成网络欺诈与恶意软件分发,一边堂而皇之地按次抽成,这套机制在道义与经济学逻辑上显然已经彻底崩坏。 ### [02:20:32](https://www.youtube.com/watch?v=krB0enBeSiE&t=8432s) Basic Attention Token 的诞生:重构注意力经济 Lex Fridman 指出,Brave 最迷人的地方不在于它仅仅作为一个对抗性的广告拦截器,而在于它尝试用 Basic Attention Token(BAT)提出一种全新的哲学理念,试图从根基上改变互联网的价值分配逻辑。Brendan Eich 随后回顾了这一方案的演进历程与最初的思考契机。 在掌舵 Firefox 期间,Brendan 就对 Mozilla 长期极度依赖 Google 搜索分成协议深感不安。随着 Google 自家 Chrome 浏览器的强势崛起,这种依附关系变得极其危险。Google 随时可能像对待小说中的忠犬《老黄狗》(Old Yeller)一样,在猎犬帮主人咬死狂犬病野兽之后,毫不留情地一枪将其射杀。Mozilla 对此束手无策,而 Brendan 开始深入反思一个底层问题:为什么浏览器一定要沦为大型科技巨头的被动仆从?为什么浏览器只能充当各大广告技术系统(包括 Google)运行 JavaScript 的盲目运行时环境? ```mermaid flowchart LR accTitle: Brave 与 BAT 的注意力经济直连模型 accDescr: 展示 Brave 浏览器如何在客户端切断恶意广告,并通过 BAT 重建用户与创作者之间的经济直连 subgraph LegacyModel["传统 Web 广告模式"] Site["网站 / 创作者"] --> ThirdParty["第三方广告脚本 / Ad Exchange"] ThirdParty --> Fraud["欺诈、追踪与抽成"] Fraud --> Browser["浏览器盲目渲染"] end subgraph BraveModel["Brave 与 BAT 创新模式"] LocalEngine["本地隐私分析与广告匹配"] --> UserReward["用户获得注意力分成"] LocalEngine --> DirectPay["直连打赏 / 订阅分成"] DirectPay --> Creator["内容发布商 / 创作者"] end ``` 许多人对网页广告存在一种误解,以为广告是服务端预先烘焙在 Flash 组件或整张大图里直接下发给客户端的。但实际上,网络上的所有广告都是浏览器在解析 HTML 时,通过调用各个第三方广告技术伙伴的脚本在本地组装并绘制出来的。既然浏览器掌控着代码执行与内容呈现的咽喉,它就可以果断切断那些流氓监控脚本,并以浏览器本身为枢纽,直接为用户、读者、粉丝与创作者、发布商之间重建透明、直接的经济桥梁。这正是 Brave 从最初结合比特币实验、再到最终创立 BAT 代币的战略起点。 - Brendan Eich 回顾在 Mozilla 时对 Google 威胁的预判,直言不讳地打了个残酷的比喻:“就像《老黄狗》里的情节一样,你救了我免受疯狗撕咬,但现在你的利用价值已经结束了,我得朝你的脑袋开一枪。”(“Like Old Yeller: you saved me from the rabid beast, now you have to shoot you in the head. Sad but true, goodbye.”) - Brendan Eich 总结其创立 BAT 的核心反思:“为什么浏览器偏要是这些大型科技公司的被动仆从?为什么它非得充当 Google 等广告技术 JavaScript 脚本的盲目运行时环境?”(“Why is the browser the sort of passive servant of these big tech companies? Why is it a blind run time for ad tech JavaScripts including from Google?”) ### [02:22:17](https://www.youtube.com/watch?v=krB0enBeSiE&t=8537s) 订阅制的困境与微支付的早期尝试 当浏览器切断品牌和广告代理商流向内容发布商的资金链时,如果试图将这笔资金直接与用户重新连接,可供选择的路径其实非常有限。普通用户通常不愿意在每个网站都绑定自己的 ACH 银行账户或信用卡;而发布商为了弥补成本,往往只提供全额订阅服务,通过交叉补贴将大量用户根本不看的内容打包捆绑并过度收费。像《纽约时报》或《华盛顿邮报》这样的大牌媒体固然表现优异,但面对全网无数的网站,用户究竟能承受多少份独立订阅?这正是托尼·黑尔(Tony Haile)创立 Scroll 这类初创公司的原因,他们试图打造一种通用的便携式订阅系统。 ```mermaid flowchart TD accTitle: 传统订阅与广告断裂的困境 accDescr: 展示传统广告断裂后,出版商订阅与早期微支付遇到的用户阻力。 subgraph BrokenModel["断裂的传统变现"] A["广告主 / 品牌代理"] -.->|"广告拦截切断流量"| B["内容发布商"] B -->|"高昂订阅捆绑销售"| C["终端用户"] end subgraph Friction["支付阻力"] C -->|"阻力:ACH / 信用卡绑定繁琐"| D["单站订阅壁垒"] C -->|"尝试:微支付 (如 Blendle)"| E["规模化受阻"] end ``` Lex Fridman 补充了一个亲身体验的细节:即便像《纽约时报》这样的大机构,其订阅流程也极其繁琐反人类,点击步骤过多;几年前甚至有朋友订阅了实体报纸,上线阅读时却还要被加价收取数字版费用,纸质与数字之间完全脱节。Brendan Eich 指出,绝大多数发布商缺乏深厚的技术能力,不可能让每个人都去逐一开通订阅,“你不可能拥有上千个订阅”。行业内长期探讨的微支付方案——例如发源于荷兰并曾尝试进军美国的 Blendle——最终也未能成功做大。因此 Brendan 认为,如果能够依托一个能拦截广告追踪垃圾的浏览器,内置一种基于加密货币的选项,让用户直接资助自己喜爱的网站甚至 YouTube 频道,便是一条可行的出路。 - 传统订阅制试图让用户过度购买以交叉补贴所有内容,但普通用户的订阅预算和精力极其有限。 - 早期微支付平台(如荷兰的 Blendle)由于拓展受限,未能成为全网通用的通用方案。 ### [02:23:28](https://www.youtube.com/watch?v=krB0enBeSiE&t=8608s) 比特币原型的局限与以太坊智能合约的转向 Brave 在 2016 年至 2017 年间首先使用比特币搭建了打赏资助的原型。这种方式要求用户既有经济能力又愿意主动出资。虽然借助比特币区块链确实能够完成结算,但恰逢那段时间比特币网络极度拥堵、确认缓慢,链上交易手续费(Gas/Fee)急剧飙升。为了降低使用门槛,Brave 在浏览器中内嵌了 Coinbase 的购买组件,但即使是有经济能力购买的用户也陷入了尴尬算计:如果一个月只想打赏 5 美元,手续费却要高达 4.50 美元,用户就必须大额批量购买;然而他们又不想持有那么多承受价格波动风险的比特币。这种体验变得极其痛苦,Brendan 所构想的“通过隐私广告给用户分红”的模式根本无法单纯依靠早期的比特币网络落地。 此外,比特币脚本并非图灵完备,能够实现的逻辑相对受限。Brave 随后将目光转向了以太坊,因为以太坊支持图灵完备的智能合约,能实现更为精细和复杂的资金分配机制。 ### [02:24:46](https://www.youtube.com/watch?v=krB0enBeSiE&t=8686s) 畸形的中介抽成与三方共赢生态的构想 Brendan Eich 设想的核心是一个由“用户”、“创作者/发布商”和“广告主”构成的三方生态系统。广告主像以往一样注入资金,但整个过程绕过 Google、AppNexus 等庞大的广告技术(Ad Tech)中介公司。在传统数字广告体系中,中介抽走了极其夸张的份额。英国《卫报》(The Guardian)曾做过一个为期一个月的实验:他们自己出资 1 英镑购买自家网站上的广告位,最终流回自己账户的竟然只有 30 便士,整整 70% 的资金全被中间各级技术供应商吞噬。 > “在超大型电视台 TBS 的旧时代,媒体所有者能拿到 85% 的分成。现在的分成比例已经彻底失衡,中间环节的广告技术供应商拿走了太多资金。” —— Brendan Eich 更恶劣的是,这些广告技术网络不仅滋生了恶意软件(Malware),还催生了虚假流量造假以及点击诱饵(Clickbait)商贩。投资人 Jason Calacanis 曾告诉 Brendan,当他在运营科技媒体(如 Engadget 等)时发现,一旦接入在多个网站间共享受众信息的数据伙伴,竞争对手和粗制滥造的低成本点击诱饵网站便能轻易利用这些数据精准收割属于他的受众流量。这种机制本质上在助长虚假新闻和流量欺诈。Brave 的做法是从根本上切断这一链条,并在以太坊上发明了注意力代币(Basic Attention Token, BAT),实现收益在生态三方之间的重新分配,甚至允许用户将自己注意力换来的分红提现。 ```mermaid flowchart LR accTitle: 广告行业中介抽成对比 accDescr: 对比卫报实验中的传统广告技术中介抽成与苹果应用商店分成。 subgraph GuardianTest["英国卫报广告实验"] direction TB G1["广告支出: 1 英镑"] --> G2["中介供应商抽取: 70%"] G1 --> G3["卫报实收: 30%"] end subgraph Comparison["分成比例对比"] direction TB A1["Apple App Store: 开发者拿 70% / 平台 30%"] A2["传统电视 TBS 时代: 媒体方拿 85%"] end ``` - 广告欺诈网络利用跨站受众追踪,将高价值媒体的原生读者引流至廉价的点击诱饵农场。 - BAT 的核心目标是将原本流向黑箱中介的巨额利润,重新分配给真正贡献注意力的用户和生产内容的创作者。 ### [02:26:35](https://www.youtube.com/watch?v=krB0enBeSiE&t=8795s) 监管合规风暴与浏览器混合架构 随着区块链技术的发展,监管机构的审查日益严苛。美国财政部旗下的金融犯罪执法局(FinCEN)、外国资产控制办公室(OFAC)以及其他联邦机构,对反洗钱(AML)以及向受制裁个人转移资金等行为实施严厉打击。监管风向甚至开始威胁到纯粹的非托管/自托管钱包(Self-custodial wallets)——即使某人使用的是拥有硬件私钥的匿名地址,联邦政府也在探讨设定一个门槛,要求服务商在达到该交易阈值时必须掌握接收方的真实身份。 面对这种现实,Brave 采取了务实的折中策略。在免许可点对点转账的理想与金融牌照的合规现实之间,Brave 默认模式下完全不去刺探用户的真实身份,而是将部分收益在客户端直接计算并归属于该用户的“浏览器端”,再由浏览器在本地决定如何将打赏分配给创作者(创作者在提现端需要进行身份验证)。Brendan 强调,今天的底层公链速度依然不够快,且随着时间推移用户的链上行为容易被指纹识别而丧失匿名性,因此单一的区块链并不是万灵丹。BAT 的真正架构是一种“浏览器 + 区块链”的混合系统: > “注意力代币(BAT)的核心构想之一,就是打造一个比单纯区块链更强大的混合系统。它是浏览器与区块链的结合,而浏览器正是那个值得信赖的终端软件。” —— Brendan Eich ### [02:28:36](https://www.youtube.com/watch?v=krB0enBeSiE&t=8916s) 浏览器作为终极数据中枢与端侧本地机器学习 在桌面和大屏设备上,屏幕越大,用户使用浏览器的频率就越高,而安装笨重客户端(Fat clients)的意愿就越低。Brendan 吐槽了自己在 macOS 上使用的 Slack 桌面客户端——它基于早期的 Electron 框架,体验臃肿迟缓,而很多 Brave 团队成员甚至直接在 Brave 浏览器标签页里使用网页版 Slack。尽管移动端(如 iPad 和 Android 手机)上浏览器受到操作系统权限和 UI 交互的刻意限制,但在原则上,只要获得合适的权限接口,浏览器完全有潜力成为涵盖一切体验的超级应用(Super App)。 ```mermaid flowchart TD accTitle: Brave 客户端本地机器学习架构 accDescr: 展示 Brave 如何在完全不泄露数据的前提下,在本地利用完整搜索与历史记录进行广告匹配。 subgraph BrowserCore["用户设备端 (Brave 浏览器)"] H["完整浏览历史"] S["全引擎搜索查询 (Google / DuckDuckGo / Bing)"] ML["端侧轻量机器学习模型"] H --> ML S --> ML ML --> Match["本地精准广告匹配"] end subgraph ExternalWorld["外部网络 (零数据上传)"] AdCatalog["通用广告目录 (无追踪)"] -->|"下发本地"| BrowserCore Match --> Reward["BAT 代币激励"] end ``` Brave 致力于将科技巨头通过追踪和社交网络垄断的商业利益重新夺回,并将其保护在安全的本地沙盒内。在数据层面上,浏览器才是所有数据源的“终极母体”(the mother of all data feeds):任何单个搜索引擎(如 Google)只能看到用户输入给它的关键词,但浏览器却能俯瞰用户跨越所有搜索引擎的全部查询与完整的历史记录。Brave 让经过用户许可的端侧机器学习模型在本地直接分析这些完整数据,无需将任何个人隐私外传。这种运行在终端本地的模型甚至无需复杂的深度学习算法,就能够在彻底捍卫隐私的前提下,实现比 Google 跨站追踪更全面、更精准的广告匹配。 ### [02:30:27](https://www.youtube.com/watch?v=krB0enBeSiE&t=9027s) 本地机器学习匹配广告与保护用户隐私机制 Brendan Eich 详细拆解了 Brave 浏览器的本地广告匹配机制。该系统放弃了庞大而臃肿的 TensorFlow,转而采用支持向量机(SVM)和朴素贝叶斯(Naive Bayes)这类极为紧凑高效的经典算法。浏览器通过监视用户的意图信号——如搜索查询词、浏览历史、页面滚动的幅度、搜索重试的频率等——在本地直接建立画像。所有这些数据计算完全发生在浏览器本地的“盲盒”算法中,Brave 服务器根本无法窥探,更不会上传这些个人行踪。随后,算法会根据计算出的兴趣标签,从一个预先下载好的固定本地目录(catalog)中挑选最佳广告。 这个目录每天由 Brave 的直接销售团队统一定价并推送更新,全网大批量设备共用同一份目录,且一天仅更新一次,用以剔除过期 Offer 并加入新赞助商。目录本身并不包含庞大的广告媒体(如视频或完整网页),而仅包含指向边缘缓存(edge cache)的 URL 链接及相关关键词元数据。虽然直接从边缘缓存拉取资源在理论上可能泄露 IP 地址(目前尚未引入 Tor 路由对其进行彻底混淆),但整个匹配和决策完全由本地客户端自主完成。这就从源头上杜绝了广告追踪网络向服务器报告个人特征的行为,让广告主能够接触到高价值的目标受众,却无法逆向追踪具体个体。 ```mermaid flowchart TD accTitle: Brave 本地广告匹配架构 accDescr: 展示用户本地行为数据如何通过轻量算法匹配本地广告目录,同时完全隔离外部跟踪 subgraph Client["用户本地设备 (浏览器盲盒计算)"] A["用户意图信号<br/>(搜索词 / 历史记录 / 滚动深度)"] --> B["轻量本地 ML 模型<br/>(SVM & 朴素贝叶斯)"] C["每日广告目录<br/>(元数据 + 边缘缓存链接)"] --> D["本地广告挑选与展示"] B --> D end subgraph Cloud["外部服务器 / 广告网络"] E["Brave 销售团队与广告主"] -->|"每日单向同步"| C D -.->|"直接拉取媒体资源<br/>(不传输画像数据)"| F["边缘缓存 (Edge Cache)"] end ``` - 本地算法类型:采用支持向量机(SVM)和朴素贝叶斯(Naive Bayes),避免引入沉重的深度学习框架。 - 意图信号来源:包括搜索关键词、浏览历史、页面滚动行为及重新搜索频率。 - 广告目录结构:每日下发一次,内容仅为广告元数据与边缘缓存链接,不包含重型媒体文件。 - 隐私保障:“it's all blind browser algorithm we don't see that data”,Brendan Eich 强调所有个人原始数据均不离开用户设备。 ### [02:31:44](https://www.youtube.com/watch?v=krB0enBeSiE&t=9104s) 重新设计互联网经济:70% 广告收益返还与创作者经济 Lex Fridman 惊叹这套方案背后蕴含着重构千亿级广告产业的野心,并提出一个假设性问题:如果 Brave 的这套哲学最终取胜,占据互联网 95% 的份额,网络生态、社交媒体与 YouTube 创作者群体将发生何种巨变?Brendan 幽默地回应称,如果 Brave 真的拿下 95% 的市场份额,他自己都会“要求重新计票”(demand a recount),因为这难以置信。他强调,Brave 的目标不是垄断,而是将这些理念推动成为整个 Web 开放标准。 Brave 模式的核心颠覆在于利益分配格局:Brave 将总广告收入的 70% 直接返还给用户,用户完成 KYC 验证后即可提现为法定货币或加密货币;用户也可以选择将 BAT 留在系统内打赏支持内容创作者。一些完全不想看广告的用户(如 Zcash 创始人 Zooko Wilcox-O'Hearn)则选择每月主动充值 20 美元,浏览器会在后台根据浏览行为与停留时长,匿名按比例将资金分账给经过身份验证的内容站点。Brendan Eich 指出,传统独立创作者高度依赖 Patreon 或赞助商,但 Patreon 这类中心化平台不仅收取 5% 的手续费,还存在审查和封禁风险。若将此功能沉淀为去中心化的 Web 标准,浏览器仅收取如 3% 的微额通道费,便能从根本上消除中间商抽成与言论审查。 - 收益分配比例:Brave 将广告总收入的 70% 直接分给用户,平台自身提取 30%(对标应用商店标准,未来有望进一步降低)。 - 匿名赞助实践:如 Zcash 的 Zooko 每月主动注入 20 美元,由浏览器完全根据注意力匿名分配给经过域名证书校验的网站。 - 消除对手方风险:去中心化打赏标准能绕过类似 Patreon 平台 5% 的手续费与中心化内容审查。 - “If brave gets 95% I'm going to demand a recount because I won't believe it”,Brendan Eich 借这句玩笑阐明他不追求浏览器霸权,而是追求标准的普及。 ### [02:34:20](https://www.youtube.com/watch?v=krB0enBeSiE&t=9260s) 反垄断浪潮、巨头的创新者窘境与隐私沙盒 针对标准是否会被微软或谷歌复制并碾压原作者的隐忧,Brendan Eich 承认协议本质上是易于复制的,大厂商的渠道分发优势确实随时可能将小团队践踏出局。但他认为,如今欧美监管态势已大为不同,美国重燃反垄断诉讼火种,欧盟 DG COMP 亦在积极执法,这为创新者撕开了生存空间。此外,谷歌自身陷入了典型的“创新者窘境”(Innovator's Dilemma):其核心利润严重捆绑在由成千上万非技术类出版商和第三方 AdTech 供应商组成的复杂技术链条上,根本无法壮士断腕推翻现有广告追踪模式。 谈及谷歌推出的“隐私沙盒”(Privacy Sandbox)及 FLoC(Federated Learning of Cohorts)、TURTLEDOVE、FLEDGE 等一系列以鸟类为代号的项目,Brendan 直言这些方案属于典型的“Googly”式过度工程。这些方案依赖差分隐私(Differential Privacy),即通过向数据中注入噪声来让个体隐匿在人群中,但从密码学上看,攻击者假以时日完全有能力通过多维关联将个体重新剥离识别。Apple、Mozilla 与 Brave 绝不会全盘接受并将其奉为救世主标准。相反,Brave 所采用的基于大卫·乔姆(David Chaum)盲签名密码学来确认广告展示的技术(如类似 Trust Tokens 的机制),才代表着未来更清晰的标准走向。 - 创新者窘境根源:谷歌若彻底废除第三方追踪脚本,自身基于 DoubleClick 及复杂 AdTech 供应商链条的商业模式将遭遇严重破坏。 - 差分隐私的漏洞:长期观察下,注入的噪声难以阻挡拥有强算力的对抗节点将特定用户从群体中重新筛选出来。 - 密码学底座:Brave 采用源自 David Chaum 的盲签名密码学技术进行无追踪的广告展示确认(Ad Confirmation)。 - “Google might be smart enough to see they should do something more than just put privacy perfume on Chrome”,Brendan Eich 辛辣地批评谷歌只是在 Chrome 上喷洒“隐私香水”做表面文章。 ### [02:36:47](https://www.youtube.com/watch?v=krB0enBeSiE&t=9407s) 臃肿的 JavaScript 广告链与 AMP 的本质 讨论到浏览器性能时,Lex 称赞 Brave 带来了令人震撼的流畅度,速度甚至明显超过了当年以快著称的 Chrome。Brendan 揭示了背后的根本原因:如今网页充斥着粗制滥造的 AdTech JavaScript 脚本,这些脚本构成所谓的“程序化瀑布流”(Programmatic Waterfall),为了展示一个广告,往往会在毫秒级时间内串联发起数十个级联网络请求。这些乱七八糟的脚本不仅阻塞主线程渲染,还会迫使用户设备的无线电模块(Radio)持续处于高耗电工作状态,疯狂吞噬手机电量和数据流量套餐。 Brave 简单粗暴地从底层切断了这种广告追踪链条,从而释放出惊人的性能与续航红利。Brendan 驳斥了谷歌工程师“那只是少数垃圾网站的问题”的说法,指出全网绝大多数内容发布商的现状皆是如此。针对该问题,谷歌曾推出加速移动页面(AMP)项目,声称帮助发布商提升页面速度,并以搜索轮播位(Carousel)的前排曝光权作为诱饵。Brendan 痛批 AMP 不仅引发了反垄断审查,更遭到发布商的集体厌恶。它强行套上谷歌域名的框架(google.com/amp/...),剥夺了媒体的品牌独立性,将其降级为类似零工经济写手发布的廉价内容。Brendan 将这种强行整合形象地比喻为《星际迷航》中的“博格同化”(Borgifying),而 Brave 的主张则是赋予用户权利,让用户直接保护并支持独立出版商与创作者的小阵地。 - 性能损耗真相:程序化广告瀑布流链式触发大量并发请求,长时间唤醒移动设备的蜂窝射频芯片,严重消耗电池与数据流量。 - AMP 的本质争议:谷歌通过给予移动搜索排名优待,诱导发布商使用 AMP,但剥夺了媒体的独立域名与品牌调性。 - “It just looks like Google's borgifying all these publishers and they don't want to be plugged into the Borg cube”,Brendan Eich 形象地指出出版商绝不希望被强行同化进谷歌的“博格方块”之中。 ### [02:38:37](https://www.youtube.com/watch?v=krB0enBeSiE&t=9517s) 掌握自己的社交图谱与抗审查工具 布兰登·艾克(Brendan Eich)提出了一个构想:互联网用户应当真正拥有自己的社交关系图谱(Social Graph)和公开发布的内容,而不是将这些资产拱手让给随时可能删帖、封号的中心化巨头。他设想浏览器可以作为一个跨平台聚合器,在本地端替用户维护社交关系。如果用户在 Twitter 或 Facebook 上结识了朋友,浏览器能将这些联系人打通;即便某一天某个平台封禁了该账号,用户依然可以通过浏览器保留的综合视图在另一个网络中重新找回好友。针对这一思路,莱克斯·弗里德曼(Lex Fridman)提出了近期频发的中心化审查事件——例如 Robinhood 限制散户交易 GameStop、亚马逊 AWS 联合多家巨头将社交网络 Parler 强制下线等现象,询问技术工具是否有可能帮助普通人抵御中心化权力的过度扩张。 艾克承认,当中心化寡头与国家机器的征税权、警察权和军事力量结合时,其破坏力极其惊人,例如“防火长城”以及因言获罪入狱的现实案例。然而,艾克坚信技术演进中存在着“理性的狡计”(cunning of reason),人们总会找到绕过封锁的路径。他同时指出,单纯高喊绝对“言论自由”的平台往往会陷入被极端恶意群体殖民的泥潭,从而摧毁产品声誉与商业模式。因此,核心解决方案在于实现“用户优先的辅助性机制”(user-first subsidiarity)与主观控制权:构建一个多社交网络界面的本地聚合层,由用户自己掌控联系人索引,让平台无法轻易抹杀人与人之间的连接。 ```mermaid flowchart TD accTitle: 浏览器端去中心化社交图谱模型 accDescr: 对比中心化平台对社交关系的掌控与浏览器本地统一社交视图对用户的赋权 subgraph Centralized["中心化平台(围墙花园)"] TW["Twitter / X 平台"] FB["Facebook 平台"] Other["其他新兴网络"] end subgraph BrowserClient["浏览器本地聚合层(Brave 构想)"] LocalGraph["本地所有权图谱 (用户自主控制)"] UI["多社交统一界面 (Multi-social UI)"] end Centralized -->|"面临单点审查与封禁"| TW Centralized -->|"服务条款限制 / 锁定数据"| FB TW -.->|"双向映射好友关系"| LocalGraph FB -.->|"双向映射好友关系"| LocalGraph Other -.->|"双向映射好友关系"| LocalGraph LocalGraph --> UI UI -->|"一个平台被封禁时跨网络找回好友"| User["终端用户"] ``` - 布兰登·艾克强调用户自主权的核心逻辑:“You should own your friend relation, you should own your posts; they shouldn't be owned by somebody else who can take them down or censor them.”(你应该拥有你的好友关系,你应该拥有你发布的内容;它们不应该属于能够随时将其下架或审查的其他任何人。) - 艾克对技术抗审查潜力的精辟定性:“The internet routes around censorship.”(互联网会绕开审查自动寻路。) --- ### [02:41:05](https://www.youtube.com/watch?v=krB0enBeSiE&t=9665s) 搜索的陷阱、垄断资本与选择性审查 艾克指出,浏览器之所以逐渐被中心化巨头俘获,根源在于搜索算法天然具有中心化的规模效应。拉里·佩奇(Larry Page)多年前就公开坦承,用户使用搜索引擎是以出让一部分隐私为代价,换取系统纠正输入错误;前谷歌工程副总裁艾伦·尤斯塔斯(Alan Eustis)也曾嘲讽用户经常输入错误拼写的关键词,必须依赖谷歌的中心化算法来纠偏。艾克回顾道,在 2004 年火狐(Firefox)与谷歌达成默认搜索合作协议时,谷歌的搜索质量确实无可匹敌。但随着搜索引擎优化(SEO)演变成一场对抗性的流量博弈,加上谷歌大肆并购并在搜索结果页充斥自家的 YouTube 等产品,原本开放的入口彻底变成了垄断资本的围墙。 这种垄断卡特尔不仅出现在科技领域,也同样出现在金融界限制散户对冲基金的事件中。在谈到新兴社交网络 Parler 被 AWS 断供时,艾克指出尽管 Parler 自身设计拙劣、自己也并未使用,但主流科技巨头对其“缺乏内容审核”的指控是赤裸裸的虚伪与选择性执法。在 Twitter 等主流平台上,充斥着更加骇人的暴力威胁却毫发无损。艾克认为这纯粹是掌权的既得利益集团合谋绞杀新兴竞争者。他还提到《时代》(Time)杂志同期刊登的长篇报道,洋洋得意地将商界大亨与工会联盟联手干预大选、压制特定言论标榜为“拯救民主”的英雄壮举,这种双重标准表明制度已经出现严重扭曲。 - 艾克对既得利益集团选择性清除异己的严厉批评:“So it was very selective: it was the insiders who have the power are going to take out the newcomer, and it looked bad, sort of like the hedge funds shorting GameStop looked bad.”(所以这是非常具有选择性的:拥有权力的圈内人合谋消灭新来者,这看起来非常丑陋,就像对冲基金做空 GameStop 一样难看。) - 艾克提到创办新产品寻找物理或虚拟新空间的必然要求:必须依赖不随意驱逐用户的 IDC 机房托管(colo center)、云服务商以及中立的域名注册商(registrar)。 --- ### [02:43:35](https://www.youtube.com/watch?v=krB0enBeSiE&t=9815s) 反垄断诉讼的局限与用户自决权 谈及美国司法部(DOJ)和各州总检察长针对科技巨头发起的反垄断调查,艾克回顾了 20 世纪末微软反垄断案的历史教训。当时负责该案的联邦法官托马斯·彭菲尔德·杰克逊(Thomas Penfield Jackson)急于求成,在未举行任何救济措施听证会的情况下就直接下达拆分微软的裁决(将其拆分为操作系统公司 OpsCo 与应用程序公司 AppsCo)。上诉法院最终以程序越权为由驳回了拆分命令并要求重新审理,微软趁机达成和解。然而,反垄断诉讼程序极其漫长,等最终裁决落地时,网景(Netscape)早已在市场上消亡并被 AOL 收购;真正让浏览器生态重获新生的,是自下而上重建的 Mozilla 与 Firefox。 尽管反垄断处罚未能直接拯救网景,但它迫使微软退缩并陷入了创新的泥潭。微软畏惧法律制裁并对参与 Web 标准化感到厌烦,转而退守专有锁定的 Windows Vista(即 Longhorn 架构),最终导致该系统臃肿延期而惨败。面对当下的谷歌垄断诉讼,艾克断定谷歌远比当年的微软更精明,他们绝不会坐以待毙被强行拆解,而是会主动剥离部分边缘业务以求脱身。弗里德曼与艾克达成共识:寄希望于监管和反垄断法拯救市场过于迟缓,唯有通过类似 Brave 浏览器赋予用户数据所有权、或者 Reddit 的 r/wallstreetbets 社区集结散户力量这类底层自发组织形态,才是普通人抗衡中心化垄断集团最切实可行的武器。 - 艾克对谷歌规避反垄断分拆策略的准确预测:“Google's smart enough, they won't get split up; they'll split something out to get off the hook, I think.”(谷歌足够聪明,他们不会被分拆;我认为他们会主动剥离某些业务来脱身。) - 微软反垄断案中杰克逊法官的激进方案:曾计划强制将微软拆分为负责 Windows 系统的 OpsCo(操作系统公司)和负责 Word、Excel 的 AppsCo(应用软件公司)。 --- ### [02:45:35](https://www.youtube.com/watch?v=krB0enBeSiE&t=9935s) 加州出走潮与硅谷创投格局的变迁 对话转向了现实地理中的创业环境。弗里德曼谈到自己做出的重要人生抉择:他决定告别在麻省理工学院(MIT)的纯学术研究生活,投身创业浪潮。他原本坚信硅谷依然是创业者的圣地,但身边的许多成功创业的朋友却一致告诫他“绝对不要去硅谷”。鉴于艾克曾数次在硅谷组建世界顶尖的工程团队并连续成功创业,弗里德曼向他请教:加州究竟出了什么问题促使大批人才外流?当前硅谷的低潮究竟是疫情期间的暂时过度反应,还是长期衰退的开端? 艾克证实了科技人才外逃的普遍现实。他观察到不仅许多普通员工和亲友在近几个月内纷纷搬迁至得克萨斯州,就连科技资本圈的风云人物也在加速撤离加州。然而艾克也客观指出,热门承接地如奥斯汀(Austin)近期已经出现了过度拥挤和发展过热的迹象,不过广袤的得克萨斯州依然有巨大的承载空间。与此同时,以彼得·蒂尔(Peter Thiel)和基思·拉博伊斯(Keith Rabois)为代表的硅谷资深投资人,正在掀起一股大举南迁佛罗里达州、集聚迈阿密(Miami)的全新创投迁徙浪潮。 - 弗里德曼向艾克求教的核心困惑:“I wanted to come to Silicon Valley to do so, it's the land of the entrepreneur, and there's a lot of my friends, a lot of them are successfully have been entrepreneurs themselves, have said do not come to Silicon Valley.”(我本来想去硅谷创业,那里是创业者的乐土,但我很多本身创业非常成功的朋友都跟我说:千万不要去硅谷。) - 艾克对迁徙目的地的实地观察:“I think, you know, even Austin's getting overheated, I hear... people are moving to Florida, there's a big movement toward Miami.”(据我所知,甚至连奥斯汀现在都有些过热了……人们正在搬去佛罗里达,出现了一股涌向迈阿密的庞大迁徙潮。) ### [02:46:52](https://www.youtube.com/watch?v=krB0enBeSiE&t=10012s) 加州的困境、基础设施短板与硅谷神话的消退 布兰登·艾克(Brendan Eich)谈到了地方政客对待科技和商业的态度,例如迈阿密市长展现出非常亲商的姿态,艾克认为这纯粹是“高明的政治手腕”。美国在本质上是一个商业共和国,吸引工商业本应是理所当然的事情。然而,作为曾经的“黄金之州”,加州的情况却令人担忧。艾克早在1976年底还是个青少年时就搬到了加利福尼亚,如今这里却因为严苛的疫情封锁而背负着沉重的债务,并承受着全美最高的税负。人们面对高税收必然会选择逃离。此外,加州每年都饱受山火肆虐之苦,艾克直言这并非全球变暖造成的,而是因为森林管理未能延续20世纪初期的清林与死木清理措施。 艾克进一步指责加州各级政府充斥着腐败,甚至一路蔓延至州长层面。他特别提到了纽森州长(Gavin Newsom)闹得沸沸扬扬的“法国洗衣店(The French Laundry)”高档餐厅丑闻——州长在对公众颁布严厉居家禁令的同时,自己却不戴口罩在半封闭的豪华包厢聚餐。“这就是‘按我说的做,别学我做的’,或者说是‘只许州官放火,不许百姓点灯’;当你看到领导层出现这种行径时,人们要么用脚投票逃跑,要么就推翻现有的领导层”,艾克指出,正因如此针对州长的罢免签名运动迅速达到了法定门槛。 雷克斯·弗里德曼(Lex Fridman)插话反驳称,尽管税收和天价房价令人窒息,但硅谷之所以非同寻常,是因为它为年轻人、创业者和勇敢的头脑提供了敢想敢试的自由。艾克对此表示,旧金山半岛的地理环境极其狭窄,而道路交通规划也彻底失败。当年洛杉矶原本拥有发达的电车系统(如同电影《谁陷害了兔子罗杰》所描绘的那样),但石油巨头和国防部门勾结,合谋大建高速公路并强制普及汽车,彻底废弃了公共轨道交通的通行权。如今哪怕像埃隆·马斯克(Elon Musk)试图转入地下挖隧道建通勤网络,也正是因为地面的路权早已被消耗殆尽。 面对雷克斯关于“硅谷是否仍能诞生下一个谷歌或下一个Brave”的提问,艾克给出了悲观的判断:硅谷的鼎盛期正在走向终结。他回顾了硅谷的起步并非纯粹的自由市场奇迹,早期的ARPANET是冷战时期的美国联邦政府投资项目;学术界肖克利(William Shockley)以及后来的“八叛逆(Traitorous Eight)”创立了仙童半导体(Fairchild Semiconductor)和英特尔(Intel)。然而,如今整个山谷早已不再建造芯片制造工厂(晶圆厂),艾克在1990年代初加入MicroUnity时在森尼韦尔(Sunnyvale)建了晶圆厂,或许是当地最后一批本土晶圆厂,如今所有制造环节都被外包到了海外。 - 艾克总结道:“‘按我说的做,别学我做的’,或者说是‘只许州官放火,不许百姓点灯’;当你看到领导层出现这种行径时,人们要么逃跑,要么推翻领导层。”(“Rules for thee but not for me. When you see that in leadership, people either run or they get rid of the leadership.”) - 艾克对硅谷未来的衰落给出了明确预判:“我认为天下没有不散的筵席,硅谷的问题在于它过去依靠斯坦福大学、天使投资网络以及财富效应建立了强大的网络效应。”(“I think all good things come to an end. I think the problem is Silicon Valley had strong network effects through Stanford, through the angel investor networks and the wealth effect.”) ### [02:49:36](https://www.youtube.com/watch?v=krB0enBeSiE&t=10176s) 离岸外包、名校幻象与远程办公对科技生态的重构 艾克直言,两党政客和寡头们在过去几十年中联手推行了一场精心设计的“劳工与环保法律套利”:他们将制造业转移到劳动力极度廉价且环境法规宽松的国家。这一举措虽然严重污染了发展中国家(例如中国的部分地区),却让西方企业得以源源不断地生产廉价商品。在制造外包后,硅谷剩下的唯一价值就是人脉网络、熟人圈子、斯坦福校友圈以及高层聚会。然而,艾克认为斯坦福的学术光环如今也显得非常脆弱。斯坦福的教授往往根据社会经济地位筛选学生,学校甚至变成了“躺平学校(skate school)”。艾克讲起二十年前网景公司招录的一名哈佛毕业生,当那位新员工得知哈佛某些教授还在坚持严格的打分曲线、给不及格的学生打C和D导致学生痛哭时,艾克调侃道在斯坦福绝对不会发生这种事,因为斯坦福的“天之骄子们”承受不住低分打击,所以人人都能轻松拿到A和B。相比之下,中国和俄罗斯正在向学生进行密集的数学、科学和工程学硬核训练。 谈及国家认同,艾克自豪地指出自己出生于7月4日美国独立日。美国宪法和《联邦党人文集》原本构想的是高度去中心化、倡导辅助性原则(Subsidiarity)的13个殖民地邦联,但这些原则早已被不断侵蚀。新冠疫情带来的远程工作潮则戏剧性地打破了硅谷对顶级人才的地理绑架。过去谷歌等公司有着极其死板的坐班文化,一旦员工转去慕尼黑的V8团队(该团队在Lars Bak对JavaScript感到厌倦后由德国顶尖PhD重建),就必须全家搬迁。 疫情爆发后,全员居家办公一开始让人大松一口气,但硅谷科技巨头的算盘随之而来:当员工向马克·扎克伯格(Mark Zuckerberg)申请搬回中西部老家并希望能保留硅谷的高薪时,扎克伯格直接拒绝,明确表示将根据员工所在地的生活成本重新核减薪资。 雷克斯表示,尽管如此,他依然相信美国的自我修复能力;即便旧金山硅谷衰落,在奥斯汀或其他新兴城市也会诞生出更多创新的小硅谷。艾克同意人口流动的加速是大势所趋,旧金山早在疫情前就陷入了扭曲。在1980年代,旧金山更像是电影《警探哈里》(Dirty Harry)里那种带着污垢与生活气息的旧城市;但到了90年代,科技新贵涌入市场南区(South of Market)大肆建起豪华联排别墅,将城市推向了极端的贫富分化。艾克借用南非导演尼尔·布洛姆坎普(Neill Blomkamp)执导的科幻电影《极乐空间》(Elysium,朱迪·福斯特与马特·达蒙主演)来形容旧金山当前的惨状:少数住在太空站的权贵享有能治愈一切癌症的顶级医疗设备,而留在地表的穷人却在污泥中挣扎受苦。狭窄半岛的房价被推高到了荒谬的地步,即便有谷歌员工呼吁推行“在我后院建造”(YIMBY)政策来增加普通住房供应,也遭到了既得利益地主和政府层面的顽固阻挠。 ```mermaid flowchart TD accTitle: 硅谷创新生态的演变与分散过程 accDescr: 展示硅谷从早期的硬科技起家、资本与名校加持,到生活成本激增与外包导致人才扩散至全美新中心的过程。 subgraph Phase1["历史积累阶段 (1950s - 1990s)"] A["冷战与政府项目<br>(ARPANET / 国防投资)"] --> B["半导体与硬件诞生<br>(肖克利 / 仙童 / 晶圆厂)"] B --> C["斯坦福大学科研与精英网络"] end subgraph Phase2["鼎盛与异化阶段 (2000s - 2020)"] C --> D["软件与资本泡沫<br>(高税收 / 极致贫富差距)"] D --> E["制造业与低端外包<br>(环保与劳工套利)"] D --> F["地缘承载极限<br>(交通瘫痪 / 天价住房 / 政策僵化)"] end subgraph Phase3["解构与分散阶段 (2020s 以后)"] F --> G["疫情推动远程办公普及"] G --> H["跨州人才外流<br>(德克萨斯州奥斯汀、佛罗里达州迈阿密等)"] H --> I["多极化小创新中心崛起"] end ``` ### [02:54:47](https://www.youtube.com/watch?v=krB0enBeSiE&t=10487s) 面对死亡与终极信仰 在探讨完技术格局与社会的变迁后,雷克斯将对话转入更私人、更具终极意义的哲学层面。他向艾克感慨道,艾克亲身创造以及参与缔造的技术(从JavaScript到Firefox再到Brave与区块链生态),对现代世界的改变程度超过了绝大多数同时代的人。然而归根结底,每个人都只是一具凡人之躯,生命的这趟旅程终将迎来终点。雷克斯询问艾克是否会经常思考属于自己的死亡与终结。 艾克平静地回答,自己平时并不会过多受困于对死亡的恐惧。他明确表示自己是一名罗马天主教徒,深厚的宗教信仰让他能够坦然面对肉体的消亡。艾克进一步分析指出,很多对死亡充满极度焦虑和恐惧的人,归根结底往往是因为他们缺乏某种能够超越死亡本身的信仰,或者没有留下属于自己的血脉与后代来延续生命。 - 艾克直面死亡坦言:“我是一个罗马天主教徒,所以我不害怕死亡;我认为很多对死亡感到困扰的人,要么是因为缺乏能够超越死亡的信仰,要么是因为没有孩子。”(“I'm a Roman Catholic, so I am not afraid of death. I think a lot of people who have problems with death are suffering from some lack of either faith in their transcending death or maybe they don't have children...”) ### [02:55:34](https://www.youtube.com/watch?v=krB0enBeSiE&t=10534s) 死亡、家庭与留下的精神遗产 当被问及对死亡的感受和对人生遗憾的理解时,Brendan Eich 表达了深切的共情。他提到许多人到了晚年,会感到自己错过了创造持久事物的机会,而他自己年纪很大才结婚,对这种心理状态非常理解,并引用了古罗马剧作家泰伦提乌斯(Terence)的名言:“我是人,人类的一切对我都不陌生(Nothing human is alien to me)。”对于死亡本身,他坦然表示自己并不畏惧。 谈到自己希望留下的真正遗产(Legacy),Brendan Eich 直言大众可能会认为那必须是 JavaScript,但在他心目中,最重要的遗产始终是自己的孩子与未来的子孙后代。除此之外,才是 Web 标准(Web standards)、Firefox 和 Brave 浏览器等技术事业。他不打算过分夸大 Brave,但他坚信 Brave 极其重要,且未来数十年将继续证明其价值;而当年 Firefox 的创举则证明了一点——即使市场被垄断者把持,你依然可以打破坚冰,重启整个浏览器市场的竞争。 - 面对衰老与死亡,Brendan Eich 保持务实和平和的心态,并不为生命终结感到恐惧。 - 对个人遗产的排序中,家庭与后代放在首位,技术维度的贡献(Web 标准、Firefox、Brave、JavaScript)紧随其后。 ### [02:56:23](https://www.youtube.com/watch?v=krB0enBeSiE&t=10583s) 少数派力量与美利坚精神的重塑 Brendan Eich 阐述了市场颠覆与社会变革的核心动力:要实现绕过垄断体制(Routing around)并不需要所有人的参与。他引用了纳西姆·塔勒布(Nassim Taleb)关于“顽固少数派”(Stubborn minorities)的理论,以及埃里克·冯·希佩尔(Eric von Hippel)提出的“领先用户”(Lead users)概念,指出只要有几个百分点的核心先驱群体,就足以撬动整个市场,即便这违背了拥有既得利益的巨头们的意志。他将这种现象与区块链生态的发展,以及当时 r/WallStreetBets 散户借助 Robinhood 平台对抗华尔街对冲基金的事件相提并论,认为这类精神具有强烈的相通性。 在 Eich 看来,这种反抗寡头垄断、坚持自主权的做法深深植根于美国文化之中。它并非要焚毁过往、摧毁一切的激进革命,而是一种由托克维尔(Alexis de Tocqueville)在著作中所描述的实用主义性格:当社会运转正常时,人们恪尽职守;但当体制变得极度失衡、寡头垄断且充斥着剥削压迫时,少数人就会站出来维护权利。就像美国独立战争时期,真正以身家性命与神圣荣誉为代价去战斗的也是少数人,其余不少人则逃往了上加拿大(安大略省)。 Lex Fridman 总结认为,这种几个人凭借少许激进想法、几行代码就能改变社会的赋能感,正是 Eich 作品的核心魅力所在。Eich 亦表示赞同,认为即使不过度浪漫化美国,这种向来到这片土地的人们敞开、鼓励打破权威与重塑规则的精神,确实孕育了许多非凡的奇迹。 > “It's more like Taleb's stubborn minorities that do that. It's the lead users, Eric von Hippel's lead users. You can be a few percent, you can tilt the market, and that can be done in spite of the incumbents, the moneyed interests, not being in favor of what you're doing.” —— Brendan Eich ```mermaid flowchart TD accTitle: 少数派撬动市场变革的模型 accDescr: 展示顽固少数派与领先用户如何打破既得利益垄断并重塑规则的流程 subgraph Catalyst["先锋力量"] A["少数核心用户<br/>(Stubborn Minorities / Lead Users)"] B["激进创新与代码实践<br/>(Radical Ideas & Code)"] end subgraph Friction["既有结构对抗"] C["既得利益集团与巨头<br/>(Incumbents & Moneyed Interests)"] end subgraph Impact["市场与社会结果"] D["撬动市场天平<br/>(Tilt the Market)"] E["重塑规则与打破垄断<br/>(Firefox / Brave / Blockchain)"] end A --> B B -->|抵抗阻力| C B --> D D --> E ``` ### [02:58:25](https://www.youtube.com/watch?v=krB0enBeSiE&t=10705s) 尾声与阿特伍德定律 访谈临近尾声,Lex Fridman 对能与 Brendan Eich 展开长谈表达了由衷的敬佩与感谢,称这是自己最喜欢的对话之一;Eich 则幽默而亲切地回应这几个小时过得轻松愉快、仿若微风拂面("seems like a breeze")。 在节目结语中,Fridman 引用了 Jeff Atwood(Stack Overflow 联合创始人)著名的“阿特伍德定律”(Atwood's Law)为全篇画上句号: > “Any app that can be written in JavaScript will eventually be written in JavaScript.” —— Jeff Atwood(由 Lex Fridman 引用) ## Video description Brendan Eich is the creator of JavaScript and co-founder of Mozilla and Brave. Please support this podcast by checking out our sponsors: - The Jordan Harbinger Show: https://jordanharbinger.com/lex/ - Sun Basket: https://sunbasket.com/lex and use code LEX to get $35 off - BetterHelp: https://betterhelp.com/lex to get 10% off - Eight Sleep: https://www.eightsleep.com/lex and use code LEX to get special savings EPISODE LINKS: Brendan's Twitter: https://twitter.com/BrendanEich Brendan's Website: https://brendaneich.com Brave browser: https://brave.com PODCAST INFO: Podcast website: https://lexfridman.com/podcast Apple Podcasts: https://apple.co/2lwqZIr Spotify: https://open.spotify.com/episode/5vLJaVnHrT6uWrgZdRaAkO RSS: https://lexfridman.com/feed/podcast/ Full episodes playlist: https://www.youtube.com/playlist?list=PLrAXtmErZgOdP_8GztsuKi9nrraNbKKp4 Clips playlist: https://www.youtube.com/playlist?list=PLrAXtmErZgOeciFP3CBCIEElOJeitOr41 OUTLINE: 0:00 - Introduction 1:53 - History of early programming languages 6:46 - Physics needs more experiments and less theory 11:23 - JavaScript origin story 36:16 - JavaScript was created in 10 days 45:56 - Marc Andreessen 49:13 - Internet Explorer 52:57 - Evolution of JavaScript 58:43 - Javascript standardization 1:04:33 - TypeScript 1:07:04 - JavaScript ecosystem 1:10:14 - HTML5 1:13:46 - Making JavaScript fast 1:22:56 - JavaScript is the most popular language in the world 1:33:22 - Advice for programmers 1:39:19 - Browser wars 1:45:49 - Firefox 2:07:32 - Brave 2:20:32 - Basic Attention Token 2:45:35 - California 2:54:47 - Mortality 2:55:53 - Legacy SOCIAL: - Twitter: https://twitter.com/lexfridman - LinkedIn: https://www.linkedin.com/in/lexfridman - Facebook: https://www.facebook.com/LexFridmanPage - Instagram: https://www.instagram.com/lexfridman - Medium: https://medium.com/@lexfridman - Reddit: https://reddit.com/r/lexfridman - Support on Patreon: https://www.patreon.com/lexfridman [Source](https://www.youtube.com/watch?v=krB0enBeSiE)

Original transcript

[0:00] the following is a conversation with [0:01] brendan ike creator [0:03] of the javascript programming language [0:05] co-founder of mozilla which created the [0:07] firefox browser [0:09] and now co-founder and ceo of brave [0:12] software [0:12] which has created the brave browser each [0:15] of these [0:16] are revolutionary technologies [0:18] javascript [0:19] is one of the most widely used and [0:21] impactful programming languages [0:23] in the world firefox pioneered many [0:26] browser ideas [0:27] that we love today or even take for [0:29] granted today [0:31] and brave is looking to revolutionize [0:33] not only the browser [0:34] but content creation online and the [0:36] nature of the internet [0:38] to make it fundamentally about [0:39] respecting people's control [0:41] over their data quick mention of our [0:44] sponsors [0:45] the jordan harbinger show some basket [0:48] meal delivery service [0:49] better help online therapy and eight [0:51] sleep self cooling mattress [0:53] click the sponsor links to get a [0:55] discount and to support this podcast [0:58] as a side note let me say that there's a [1:00] tension between [1:01] theory and engineering that i've been [1:03] thinking a lot about [1:05] i tweeted something like good execution [1:07] is more important than a good idea [1:09] but one helps the other i think the [1:12] wording of that [1:13] sucks but what i mean is a a good idea [1:15] is a must [1:16] but in my experience good ideas are in [1:19] abundance [1:20] good execution on the other hand is rare [1:23] i think some mix of good timing good [1:25] idea and good execution is essential [1:28] getting that mix right is tough and [1:30] brendan somehow [1:31] multiple times in his career did just [1:33] that i'm starting to believe it's more [1:35] art than science [1:36] like most interesting things in life if [1:39] you enjoy this thing [1:40] subscribe on youtube review an apple [1:42] podcast [1:43] follow on spotify support her on patreon [1:45] or connect with me on twitter [1:47] at lex friedman and now here's my [1:49] conversation [1:50] with brandon ike when did you first fall [1:54] in love with programming [1:56] i didn't program a lot when i was in [1:57] high school but i had a friend who had a [1:59] commodore [2:00] pet and after we saw star wars he said [2:03] hey let's make a basic [2:04] uh program that does the death star [2:06] trench run and it was just you know [2:08] simple [2:09] 2d graphics and i didn't know what i was [2:11] doing so i just helped him out [2:12] uh on the math and stuff like that i was [2:14] a math and science kid [2:16] i was really into uh the hp calculators [2:18] of the early mid 70s these were the rpn [2:21] they were really strongly built and as [2:24] alright goldfinger [2:25] instead of gold divinely heavy there's [2:27] probably some gold in them too [2:28] gold metallization but they were awesome [2:30] calculators and they had all the [2:32] scientific functions so i was really [2:33] into that [2:34] um so i aimed towards physics um [2:38] i was a little late for the i think the [2:40] you know the 20th century golden age [2:42] and i read a lot of science fiction so i [2:43] was like yeah it's onto hyperdrives and [2:46] warp drives and [2:47] physics was not going to get there [2:49] quickly and i [2:50] started hacking on computers while i was [2:52] studying physics as an undergraduate [2:54] at santa clara university and you know [2:58] i dodged the fortran bullet because i [3:00] was in the science department instead of [3:02] the engineering department where they [3:03] still did fortran [3:04] card decks i think they had an auto [3:06] collator but [3:07] we were using pascal and uh i got one of [3:10] the first [3:12] portable c compilers uh ports to the [3:15] deck mini computers were using and i i [3:18] fell in love with programming [3:19] just based on um [3:22] you know procedural abstraction uh [3:24] pascal [3:25] just what now would be considered old [3:28] school like structured programming from [3:30] the 70s [3:31] um nikolas vert the creator of pascal [3:33] was a good writer and [3:34] a good pedagogue right he always at eth [3:37] would do these courses where it's like [3:38] build your own computer [3:40] build your own compiler build your own [3:41] operating system from scratch [3:43] yeah kind of and uh i know some people [3:46] who are grad students under the study [3:47] was [3:48] um he would torture the students with [3:50] things like this custom email system [3:52] that had 25 word limit [3:53] [Laughter] [3:55] and uh things like that i unfortunately [3:57] dodged both the pascal and the fortran [3:59] bullets uh could you uh [4:01] maybe uh linger on the pascal like what [4:04] kind of programming language was it [4:06] what is it reminiscent of of today [4:08] because it sounds like [4:09] it may have had uh an impact on your own [4:12] trajectory yeah [4:12] it was in the algol family and algol was [4:15] um [4:16] you know the big uh successful uh [4:20] language design and compiler project in [4:21] the 60s it had a successor called algol [4:24] 68 which is ambitious but not as [4:26] successful [4:27] but pascal was kind of wordy procedures [4:30] and functions language [4:32] it distinguished between functions which [4:34] return of value and procedures which [4:35] don't which just compute [4:37] and you could say that whole algol [4:40] family went into ada [4:42] pascal had a second life thanks to [4:44] borland with turbo pascal [4:46] which was hugely successful uh i think [4:49] in large part due to anders helzberg who [4:50] then went to microsoft and did [4:52] you know c sharp and done that with his [4:54] team there has done really well doing [4:55] typescript type javascript [4:57] so yeah there's there's a lineage here [5:00] uh but [5:01] i was also interested in c in unix by [5:03] the time i was an undergrad [5:05] because uh people were bringing unix up [5:07] on all sorts of hardware i [5:09] had some friends who were doing their [5:10] own wire wrapped computers 68 [5:13] 20 maybe and i was wire wrapping for my [5:17] engineering course um 1609 or something [5:20] simpler [5:20] building a computer on a board and i [5:22] wanted to build a more ambitious one and [5:24] port unix to it but i picked the wrong [5:26] processor i picked the national [5:27] semiconductor [5:29] ns16032 which was this amazing [5:32] you know cisc complex instructions that [5:36] computer [5:37] and not the reduced instructions that [5:38] computers that were just [5:40] being contemplated into the mid-80s um [5:43] and risk ultimately went out risk one in [5:45] some ways it it [5:47] dissolved into that you have both now [5:49] you have these super scalar [5:50] architectures where [5:51] like intel has kept probably too much [5:54] backward compatibility at the [5:55] instruction level [5:56] but that's just a there's a front end [5:58] that parses that into these you know [5:59] these wide internal instructions so [6:01] you know the very long instruction word [6:03] research that um [6:05] was also interesting at the time kind of [6:07] became the micro architecture inside the [6:09] backward compatible intel but i picked a [6:11] national semi chip and it [6:13] never got made successfully it was full [6:15] of bugs and i never could have brought [6:16] it up [6:17] but i went on uh out of physics after [6:20] three years into math computer science [6:23] and like i said i did it because i saw [6:25] um i was being sort of [6:26] childlike and naive about physics and i [6:28] thought meanwhile the valley is go go [6:31] for computers the apple [6:32] ii right the the pc the intel [6:35] um 8086 uh [6:39] 8088 based pc the ibm you know gave [6:42] microsoft the future [6:43] for in a somewhat fishy deal so it's [6:47] wide open in the computing space but in [6:48] physics [6:49] you you were as optimistic about physics [6:52] no [6:52] i mean i was one of three brothers who [6:54] were all in the same grade i have a twin [6:57] and a younger brother who um skipped [7:00] second grade was with us the whole time [7:01] after that [7:02] and you know he went on he actually [7:04] studied under kip thorne at caltech [7:06] wow but he also didn't he ended up in [7:09] software [7:10] physics does it make you sad [7:13] that uh theoretical physics even with [7:16] strength theory hasn't really [7:18] had any foundational breakthroughs in [7:20] the latter part of the 20th century and [7:22] uh [7:23] yeah in fact i'd say the problem is [7:24] theory over over [7:26] experiment i would say you know we need [7:28] more aristotle unless plato [7:31] you know mathematics it's not all [7:33] physical there are lots of [7:34] mathematics that cannot be realized as [7:36] far as i know in this world [7:38] so to understand the world you need to [7:40] do experiments you need to [7:42] not just dream up uh inductive theories [7:45] that could have [7:45] lots of alternative theories competing [7:48] with them with no way to decide between [7:49] them except [7:50] aesthetics which is not a good guide in [7:52] my opinion i don't know if you [7:53] uh are friends with have a relationship [7:55] with elon musk [7:56] where's the in terms of like what you [7:59] would love to see our society investing [8:01] in [8:02] building up is it closer to elon or is [8:04] it closer to [8:06] feynman and einstein and those well [8:09] those gentlemen are no longer with us [8:10] and [8:10] i think that's noticed so like i said [8:12] the real glory days of physics the [8:14] famous pictures from germany [8:16] before the second war were uh just a [8:19] fantastic [8:19] assembly of brains um you know [8:21] schrodinger and einstein [8:23] and physics i think took a wrong turn [8:26] that maybe all [8:27] of um i would say western science took [8:30] in going for models over reality right [8:33] you see this in all sorts of fields now [8:35] we can build models that are very [8:37] predictive and generative and then we [8:38] build [8:39] actual devices or you know [8:40] semiconductors things like that that's [8:42] that's good i'm not dismissing that [8:44] uh we need good models we need to [8:46] experiment and [8:47] prove them and and test them but the [8:49] problem i've seen [8:50] in physics which you see certainly in [8:52] economics [8:54] the dismal science and you see [8:56] surprisingly [8:57] in other so-called hard sciences is [8:59] models that [9:01] don't really have to be tested against [9:04] reality they can instead become [9:06] policy tools or they can become like i [9:09] said uh [9:09] one of a large family of alternate [9:12] theories that [9:13] could be as predictive but nobody's [9:15] doing the winnowing out that's such an [9:17] interesting tension in society [9:18] you see this in even the software [9:20] sciences which have a [9:22] deep love for like psychology you see [9:24] this in epidemiology not with the virus [9:27] absolutely it's this tension of you know [9:30] how much of the world can we understand [9:32] through just [9:32] a beautifully fit model and then at the [9:35] same time [9:36] my main work is in machine learning [9:39] where [9:39] it's like there is no provable [9:42] thing usually it's just it's kind of you [9:45] it's all about just getting the right [9:47] data set and getting tricks and so on [9:49] and if there's this tension even in my [9:51] own soul of like i grew up [9:52] i grew up on theoretical computer [9:54] science like i loved [9:57] approximation algorithms like all of [9:59] that like [10:00] different complexity classes just those [10:02] little puzzles i mean i don't know do [10:04] you [10:05] to you as somebody who was in math and [10:07] computer science [10:08] and then ended up going into places [10:11] where you [10:11] engineered some of the most impactful [10:13] things in this world [10:15] do you see the p versus np [10:18] all that whole space is interesting at [10:20] all yeah [10:21] uh it's it's not that useful in practice [10:24] right people are using it [10:25] uh with sort of crypto analysis or [10:28] asymptotic arguments about you know can [10:31] can we have a quantum resistant [10:33] crypto algorithm things like that which [10:35] may not be practical right if you [10:36] if you follow mikhail diakanov or gil [10:39] collide [10:40] there are big questions about how health [10:42] quantum computing will scale up [10:44] um how practical it will be is that [10:46] something that you think about quantum [10:48] computing and [10:49] not except for spare time like you said [10:51] i'm not using this kind of computer [10:53] science in practice because [10:54] almost everything now is engineering and [10:59] finding ways to get um computers to be [11:02] more useful for people [11:03] which goes from you know design problems [11:06] which are really kind of an art like [11:07] you've said anything you can't automate [11:08] as an art yeah well [11:10] we can have you know machine learning [11:12] compose music and it can imitate [11:14] you can train it it can sound kind of [11:15] decent but maybe lacking [11:17] that genus aqua but you know user [11:19] interface still i think requires uh [11:22] human art so speaking of things that [11:25] didn't follow a perfect theory and model [11:28] uh javascript so there's two things one [11:31] had an impact on the world [11:32] a huge scale obviously and it also still [11:36] is one of probably the most popular [11:39] programming language in the world [11:41] so can we go back to the origin story [11:44] uh can you tell the story of how [11:46] javascript was created [11:47] yeah i was at talking graphics after [11:50] graduate school [11:51] for seven years and it got to be big and [11:54] successful and divisionalized and [11:55] political [11:56] and i thought um kind of boring [12:00] and a friend who'd been there went to [12:03] one of the last of the super companies [12:04] the [12:05] super startups in in the early 90s there [12:07] were several [12:08] i suppose general magic was a little [12:10] after that around the same time [12:11] but micro unity was that company that i [12:13] went to and [12:14] it was because my friend uh jeff [12:16] weinstein had gone there from silicon [12:17] graphics he recruited me [12:19] and michael unity was doing everything [12:21] so [12:22] this was like the ultimate sort of [12:25] pretend grad school it was doing a new [12:26] fab [12:27] new semiconductor process it was doing [12:29] new um [12:30] analog and digital circuits on the same [12:33] very large but not wafer scale chip [12:35] originally it was um five centimeters on [12:39] the side [12:40] it was really hot too so i needed a [12:42] water cooler [12:43] it was a cray killer and then they [12:45] shrunk it and they tried to do a [12:47] home sort of media processor that was [12:50] essentially a barrel processor but you [12:52] could think of um [12:54] trying to do all the things that we now [12:56] see in modern architectures [12:57] uh with short vector instructions and [13:01] um sort of wide instructions or multiple [13:03] issue [13:04] uh and and doing a lot of the stuff in [13:07] software because [13:07] the second iteration the set-top box was [13:10] really for [13:11] avoiding the cost to the cable company [13:12] of rolling the trucks out [13:14] to replace your garbage general atlantic [13:16] set-top box with a [13:18] slightly newer less less uh garbagey one [13:20] so if you could have software upgradable [13:22] um [13:23] set-top boxes the cable companies uh [13:24] thought they could save a lot of money [13:26] and add features [13:27] is this assembly or was it it was which [13:29] level of design it was like [13:30] we were writing in um we were using gcc [13:33] we're writing c plus plus and c [13:35] uh somebody i i worked with there um [13:38] really [13:38] very smart guy hired from a sort of wall [13:41] street [13:42] um hotshot programming consultancy [13:45] did his own hardware design as well as [13:46] software and we were working on how to [13:48] make uh not only [13:49] short vector units but general bit [13:51] shufflers and permuters [13:53] so you could do things like um you know [13:55] crypto algorithms efficiently and you [13:57] could do [13:58] uh demodulation of the cable you know [14:01] complex uh quadrature amplitude [14:03] modulated signal [14:05] so you're basically taking a to d [14:07] converters dumping things in buffers and [14:08] then doing the rest in software [14:10] all the framing and the reed solomon and [14:12] viterbi and all that error correction so [14:14] that was really great learning [14:15] experience but it was not going to work [14:16] it was doing too many risky things at [14:18] once right if you [14:19] as jim clark said to me when i hopped to [14:21] netscape after three years at micro unit [14:23] he said oh yeah [14:23] you do 10 things each one in 10 odds [14:26] it's going to be 1 in 10 billion [14:29] the multiplication principle so you know [14:32] netscape was already a rocket and i [14:33] passed the chance to go there in 1994. i [14:36] knew the founders [14:37] because i worked at sgi clark's company [14:39] could you pause for a second and escape [14:42] when was the launch of this rocket what [14:44] uh 94 [14:45] 94 was the launch of the escape and i [14:47] went there in early 95 in april [14:49] okay but uh so you said you missed the [14:51] launch well i missed the the [14:53] end the first floor employment [14:54] opportunity but the ipo was was august [14:57] 1995. [14:58] so i was there for that how obvious was [14:59] it the netscape was like world changing [15:01] uh [15:02] what was the layout was netsk one of the [15:04] first big browsers [15:06] yes so when i was at micro unity still [15:08] in 93 we saw [15:09] a browser called mosaic and up till then [15:12] we'd used email and we'd used [15:14] usenet the nntv protocol we'd use news [15:16] readers [15:17] we used ftp we used all these old [15:19] internet protocols [15:20] all relying on the dns and tcpip and udp [15:23] for that matter when i was at silicon [15:26] graphics we brought up the whole stack [15:27] right we had to you know discover how [15:29] how to find the ethernet addresses on [15:31] your network and then [15:32] find ip addresses for them our protocol [15:35] all that stuff and it was [15:36] great because nobody knew in the 80s [15:38] what was going to win all the [15:40] proprietary stacks like ibm sna and [15:43] decnet and all these other protocols [15:44] were [15:45] saying it's we're going to do it or it's [15:46] going to be heterogeneous future and [15:48] instead it was you know berkeley unix [15:50] and the tcpip stack that [15:52] dated back to the arpanet that won and i [15:55] think we knew it we all knew it at sga [15:57] but the sales people didn't [15:59] and so they kept trying to get multiple [16:01] network stacks interoperating but in the [16:02] end [16:03] uh it won and so it that was the [16:05] internet and it was email and [16:07] texty and it was used very texty and [16:09] then [16:11] tim berners-lee did his thing but i [16:12] don't think i was paying attention and i [16:14] think the date [16:15] when he first did it or when he wrote [16:17] the famous email has been pushed back to [16:18] 89 [16:19] but i noticed mosaic in 93 because [16:22] one of the things that mark andreasen [16:24] and eric biena did [16:25] at ncsa was they innovated on on the [16:29] html early html standard they in [16:31] particular mark sent this email saying [16:32] hey everybody we think you should be [16:34] able to put an image in a page [16:36] and you know when he sent that eric bean [16:37] had already written the code and [16:39] you know i talked to tim berners-lee [16:41] more recently just a few years ago and [16:42] he was like oh we had another way of [16:43] doing it [16:44] yeah didn't work out because mark [16:46] shipped his in mosaic [16:48] and this convinced me of several things [16:50] one the internet meant [16:52] there was a huge first mover advantage [16:54] and being fast [16:56] getting on first mattered a lot and so [16:58] you know richard gabriel [16:59] of scheme and poetry fame has written [17:02] about this [17:03] what's poetry uh well he's a poet uh [17:06] actual poetry [17:07] he's like he talked about some kind of [17:08] song no no i mean he's the founder of [17:09] lucid which is where jamie zawinski [17:11] worked before netscape and lucid was [17:13] doing you know compilers [17:15] and lucid emacs which was a fork of [17:17] emacs [17:18] famously jamie fighting against richard [17:20] stallman stall max [17:22] and so richard gabriel you know very [17:24] very brainy computer guy but also a poet [17:26] but he wrote a nice essay that gets [17:27] abused all the time in fact jamie's put [17:29] a kind of warning in front of his [17:30] version of it on his site [17:32] jwc.org called worse is better and this [17:34] is about [17:35] survival advantage of software in the [17:38] network world in my opinion it's about [17:40] unix it started out being framed as unix [17:43] and lisp good news bad news because all [17:44] the list people the mit people were like [17:46] oh [17:47] you know this is the crown jewel right [17:49] uh scheme this [17:50] is faberge egg or common list this giant [17:53] cathedral of course we're going to win [17:54] this is civilization [17:55] and those you know those farmers in new [17:57] jersey to borrow from the sopranos those [17:59] those kicks down to bell labs they're [18:01] just you know there's nothing sound [18:03] there it's all hacking [18:04] yeah um well guess what one wow so [18:07] you're saying this is a fundamental like [18:10] principle [18:11] of the internet is moving fast [18:14] wins you could say in in almost any [18:16] network system like in biological [18:17] evolution you see [18:18] successful alleles sweet populations and [18:20] they don't always have [18:22] um you know they are free of flaws the [18:24] heterozygous advantage right you can get [18:27] both parents give you the gene variant [18:30] and you get sickle cell anemia right but [18:32] but if one of them does you're more [18:33] resistant to malaria [18:34] and so this isn't um a beautiful process [18:38] except at large scale and then you [18:39] realize that because it moves fast and [18:41] can adapt it [18:43] it can win and people still struggle [18:46] with this i i used to struggle with this [18:47] because javascript was done in such a [18:49] hurry [18:50] and the force of web compatibility meant [18:52] early mistakes couldn't be [18:54] fixed and even the standards process [18:56] injected new mistakes as it will [18:58] but often standards bodies go back and [19:00] making compatible changes you can't do [19:02] that with the web it's more like [19:03] again like biology you you preserve what [19:06] still works you don't want to break [19:08] atp metabolism or whatever so um you [19:11] have to kind of resign yourself to [19:14] the reality of um worse is better [19:17] being enshrined in actual [19:21] design points you might not like and [19:23] that happened with javascript [19:24] and i'm way over it but it also i think [19:27] was a huge advantage why javascript has [19:29] kind of swept [19:31] a lot of programming domains um people [19:33] will say oh it's not because of merit [19:34] well you're right but we also improved [19:36] it over time in the standards body i [19:37] spent [19:38] 20 years doing that and you don't get [19:41] that choice it's like [19:42] i'm not saying that that was the best [19:44] language i'm just saying that was the [19:46] right time to do it [19:47] and i like to say the alternative was [19:49] not to do it i could have [19:50] told netscape i can't do this it's too [19:52] rushed and it would have been [19:54] visual basic script it would have been [19:56] bad [19:57] uh so that's a good way to present the [19:59] alternative but so you're it was a [20:01] netscape and [20:01] you were you have written in how many [20:03] days and why was it only that many days [20:05] and what was the [20:06] the goal and the underlying principles [20:08] in your mind so the whole [20:10] i'm sort of describing worse is better [20:11] in a frenetic way because it fit the [20:13] the model of netscape when when um it [20:16] was known that jim clark [20:18] and mark andreas were founding netscape [20:19] and they did the first release in 1994. [20:22] that browser took over from mosaic in [20:24] fact that's why [20:26] mozilla is called that it's the mosaic [20:27] killer it's like the giant monster that [20:29] kills mosaic that's awesome [20:30] and they knew they could you know it [20:32] wasn't that [20:33] again it's not like you're doing [20:34] advanced scientific research that is [20:36] changing the world you're more like [20:38] taking down uh the last iteration in the [20:41] browser mark did which had images [20:43] and you know other importances before [20:45] you stopped working on it and you're [20:46] making [20:46] netscape the new thing that has images [20:48] plugins which was the way to do video [20:50] back in the day [20:51] it had something that's kind of died now [20:53] for tiled windows called frames and [20:54] frame sets [20:57] html tables that was new eric bina did [21:00] tables in escape 101 [21:01] so when i got there they were heading [21:03] toward ipo [21:04] clark wanted the ipo early i think his [21:06] instinct was right and that kicked off [21:08] the whole [21:08] dot-com era right there was a recession [21:11] in the us in [21:11] 91 you can see old law and order reruns [21:14] where they talk about the recession how [21:16] hard it's hitting new yorkers [21:17] and after that greenspan really goose [21:20] things at the federal reserve and [21:21] and technology had been sort of [21:23] fermenting in a way that came [21:25] together with the internet and netscape [21:27] made it you know possible to do pets.com [21:30] to do ebay to get people to recognize a [21:33] url on a billboard and then type it in [21:34] when they get home [21:35] and that was huge um that that was so [21:39] fast moving a rocket that uh mark and [21:42] um the engineering team there thought we [21:45] we need to [21:46] make this a programmable browser not [21:48] just a a document viewer [21:49] not just a video it's all html with [21:52] images and tables and also like you said [21:54] frames [21:55] really plug-ins there's no dynamic [21:56] element at all yeah the most dynamism [21:58] you get was from a plug-in which [22:00] there were a few of them then flash [22:01] didn't exist at that point [22:03] uh it was i think um java applets [22:06] yet or no well that's the thing we did [22:08] the deal with sun in fact [22:09] i was recruited to go do scheme in the [22:12] browser remember [22:13] guys stealing gerald sussman's beautiful [22:15] lisp variant [22:16] i was going to do it in the browser [22:17] because my friends from sgi thought hey [22:19] we like scheme you like scheme and i'm [22:20] like i hardly ever use scheme it's not [22:22] really used in industry except in [22:23] sort of silos but i like it [22:26] okay i'll come do scheme in the browser [22:29] i have a slide from my [22:31] 2017 uh talk where i have bruce wallace [22:33] crawling through the duct and die hard [22:35] he's like [22:35] come out to the coast have a lot of fun [22:38] come on do scheme in the browser um [22:40] but when i got there there was no scheme [22:41] in the browser because they'd started a [22:42] deal with sun microsystems [22:45] and my best contact there was bill joy [22:46] who i admired as a berkeley unix founder [22:48] and [22:49] son founder uh and bill got the idea of [22:52] making the browser programmable too and [22:53] so the [22:54] idea main idea was to put the java vm [22:57] which at that point was [22:58] not really easy to embed into netscape [23:02] including the netscape version on [23:03] windows that was still most popular [23:05] which was the 16-bit [23:07] windows 3-1 which was going away [23:09] microsoft was coming out with windows 95 [23:11] and everyone was afraid they were going [23:12] to do you know internet explorer [23:14] i guess two at that point three the next [23:16] year they already bought [23:18] uh or invested in somehow spy glass this [23:21] other company that shot out from [23:23] ncsa at the university of illinois [23:26] and in fact microsoft had tried to buy [23:29] netscape in late 94 before i got there [23:31] and i heard about this later i heard [23:33] they offered way too little money and so [23:35] you know [23:36] jim barksdale and jim clark said get out [23:37] of here pound sand [23:39] but then they realized oh this is going [23:42] to hurt us because now they're going to [23:44] copy us [23:45] didn't happen right away i'm not sure [23:46] when gates internet title wave memo was [23:49] written that's the famous memo he wrote [23:51] when bill gates realized that microsoft [23:53] was going down this [23:54] old copy aol path or copy compuserve [23:57] path [23:58] a project called blackbird presumably [24:01] after the sr-71 i don't know [24:03] but they were going to make a you know [24:04] dial-up service with a custom [24:06] content language stack and custom [24:08] rendering it wasn't the web [24:09] um you know they could have content [24:11] partners uh [24:13] they have a lot of money but it still [24:14] wasn't to scale the web it wasn't going [24:16] to be compelling and [24:17] gates realized this and he turned the [24:19] company on a dime and they [24:20] couldn't buy that escape again i'm not [24:22] sure the timing so they decided to copy [24:24] it and [24:25] once we realized that everybody inside [24:26] that escape felt even more urgency and [24:28] more of a frenetic mood [24:30] and so my chance to do scheme [24:33] disappeared when [24:34] the java deal started brewing but there [24:36] was still a chance to do [24:37] a companion language to java because [24:39] java was a compiled is a compiled [24:41] language [24:42] it's evolved and improved quite a lot [24:44] since then too but it was [24:46] for sort of serious advanced programmers [24:48] that cost a certain [24:49] salary or hourly rate and people [24:52] observed bill bill joy observed and i [24:54] mark and jason and i observed that in a [24:56] mature stack like microsoft you really [24:58] benefit from having a scripting language [24:59] like visual basic [25:01] which became visual basic script in ie3 [25:03] but didn't take on didn't take over [25:05] uh kill javascript that you need two [25:07] languages one is for the [25:09] component writers who are higher priced [25:11] and more expert [25:12] and the other is for uh scripters [25:16] certified public accountants uh [25:18] designers graphic designers with some [25:20] programming inclination [25:21] anybody amateurs doesn't matter there's [25:24] a much more demotic [25:25] approach there for programming the [25:27] components together gluing them together [25:29] some people say duct tape language which [25:31] i don't really like but [25:33] we saw that bill joy and mark and jason [25:35] and i we saw the need for companion [25:37] language [25:37] and the gleaming r i was to call it [25:39] javascript i didn't like it that was [25:41] marketing's [25:41] plan mark called it moca which i liked [25:44] and netscape marketing i think didn't [25:46] like that so they said oh there's some [25:48] trademark and some software [25:49] somewhere that uses mocha so we can't [25:51] use that and they tried live script in [25:53] august and that didn't last and then [25:55] finally we got the trademark license in [25:56] december [25:57] 1995. but the work i did to prove that [26:00] it could be done [26:01] was important because i i came in in [26:04] april [26:05] and even then netscape was growing so [26:07] fast that they couldn't find [26:09] an open hiring requisition in the client [26:11] team for me so they hired me into the [26:13] server team [26:14] and i worked for a month on server team [26:16] on what became [26:17] http one one so i was actually i had [26:19] done protocol work at silicon graphics [26:21] with greg chesson uh former [26:23] bell labs intern grad student intern who [26:25] knew all the unix founders and [26:27] greg was very interested in taking um [26:30] protocols to the next level with vlsi [26:32] because he thought that cpus wouldn't [26:34] wouldn't scale up he was [26:36] mistaken in that unfortunately moore's [26:37] law more than kept up and you have you [26:39] know gigabit ethernet running [26:41] with conventional processors but i [26:43] worked on protocols at [26:44] sgi as well as unix kernel hacking and [26:47] nfs and things like that so i [26:50] i came into netscape to work on the [26:52] server side for a month but i was i was [26:54] thinking the whole time [26:55] what should this language be like should [26:56] it be easy to use [26:58] might it syntax even be more like [26:59] natural language like um [27:01] hyper talk which is bill atkinson's [27:04] language in hypercard [27:05] if you have ever used hypercard on early [27:07] mac uh and i thought [27:10] uh well i'd like to do that but my [27:12] management is saying make it look like [27:13] java [27:15] which looks like c from a distance what [27:17] does that mean is it braces we're [27:19] talking about visually yeah i mean like [27:21] what management do they understand what [27:24] they don't marketing didn't know but but [27:25] management did like [27:26] rickshaw vp of engineering knew and we [27:29] had a plan even [27:31] that was if you have this companion [27:32] language you're going to glue things [27:34] together between java and javascript so [27:35] you're going to have commerce [27:37] in memory in the heap with data types so [27:40] you're going to want some of the data [27:41] types in [27:42] java to reflect into javascript you're [27:43] going to want the primitive types that [27:45] java unfortunately separated from [27:47] objects so at least [27:48] some of them number double let's call it [27:50] in java's terms [27:51] from the c term for double precision [27:53] floating point [27:54] um or strings or booleans [27:58] um and objects and so [28:02] right away there was this constraint [28:04] looking like java meant [28:06] kind of the c curly brace syntax but [28:08] also some of the data types and objects [28:09] like objects and so on all that kind of [28:11] stuff [28:11] comparison operator garbage collection [28:14] yeah [28:15] uh even the bitwise operators and the [28:16] shift operators including the unsigned [28:19] right shift which [28:20] java had because it didn't have unsigned [28:21] integer types it's it said if you want [28:23] to do unsigned operations use an [28:24] operator [28:25] and that turned out to be important much [28:26] later i'll tell that story five time but [28:30] javascript inherited a set of [28:34] operators the expression grammar the [28:36] statement grammar up to a point [28:38] from java but i wanted a functional [28:40] language i wanted scheme [28:41] a little bit of scheme even though it [28:43] wasn't as clean as scheme i wanted you [28:45] to love sergeants and drops you had a [28:46] love for scheme and lisp but [28:47] that that that functional language yes i [28:50] wanted first class functions [28:51] because i i saw the need for callbacks [28:53] in the browser where [28:54] it's a single threaded program all the [28:56] early browsers were single threaded and [28:57] it's the right model for users most [28:58] users weren't ready for mutual exclusion [29:00] and [29:00] threading so in a single threaded world [29:03] you cannot block the user interface so [29:05] you have to use a callback and run later [29:07] and the without getting too fancy and [29:09] trying to capture the continuation like [29:11] call [29:12] cc does in scheme i thought i'll just [29:14] make it easy to have [29:16] fun arcs first class functions you pass [29:17] you know downward and they can call back [29:19] and be called back and java didn't have [29:22] that at the time [29:23] it had it took forever to get proper [29:25] first-class functions [29:26] uh lambda is now into into java java [29:29] seven or eight i think [29:30] it did have concurrency right from the [29:32] from the very beginning but you were [29:34] thinking that the [29:35] javascript in the browser would not have [29:37] the luxury of being [29:38] concurrent that's right and the reason [29:40] was java was going to run into plug-ins [29:42] so it could [29:42] fork threads and go go to town but the [29:45] main action in the browser was in the [29:47] single threaded program the single unix [29:48] process on on unix [29:50] or windows and it was where you had to [29:53] service the event loop and then go [29:54] you know do things respond to the [29:56] network lay out some html [29:58] render it turn you know widths into [30:00] heights by filling containers boxes [30:02] uh the early what became the css box [30:04] model uh [30:06] and run scripts to you know make the [30:08] thing livelier respond to user input [30:11] uh and all that event driven programming [30:14] was in part like hypercard because [30:16] hypercard had this on [30:17] event name syntax and so that's why you [30:19] have in javascript on click [30:21] run together as the name of the event [30:23] handler and there's some funny ones on [30:25] mouse over and on mouse out [30:26] people still complain about those but [30:28] you know um there are many more events [30:30] now [30:30] over the years standardized but it was a [30:32] mix of event-driven single-threaded [30:34] programming because it had to run [30:36] in the main thread of the browser where [30:38] the action is and [30:39] java never got there which meant java [30:41] could not interact easily or [30:43] quickly or in a nested way with the [30:46] document with the objects [30:47] reflected from the html document with [30:49] the tables and forms and so on [30:51] and that that is one of the reasons i [30:52] think javascript survived and java kind [30:54] of died java was in this plug-in prison [30:56] it essentially was confined to a [30:58] rectangle the apple rectangle [31:00] and while we even built next year nick [31:02] thompson [31:03] a friend from sgi who was an intern grad [31:06] student [31:07] at cmu at the time built the first [31:09] version of live connect to glue [31:10] java and javascript together to deliver [31:12] on that vision where you do have [31:14] commerce between the data types and the [31:16] heap um [31:17] did it work it worked but you were java [31:20] was in charge [31:21] javascript was in charge and java was [31:22] just these components these helpers [31:24] you might as well do everything in [31:25] javascript and what happened over time [31:26] it's like an evolutionary filter it just [31:28] kind of [31:28] who needs the plugin and in fact sun [31:31] mismanaged java as a plug-in they they [31:33] thought well netscape [31:34] is giving us the distribution vehicle [31:36] and we don't care about the browser it's [31:38] just about getting java out there and [31:39] that was a big miscalculation they then [31:41] tried because microsoft was killing [31:43] netscape after [31:44] years they tried getting into microsoft [31:46] and you may remember there was a sun [31:47] microsoft deal [31:48] which famously blew up and and [31:51] microsoft kicked java out of windows and [31:54] that's when they really pulled the [31:56] trigger i think they already evaluated [31:57] it and liked it [31:58] on anders helsbergs.net and you know c [32:00] sharp [32:01] and decided we're going to just not have [32:03] java we don't want [32:05] you know any of that sun stuff we don't [32:06] want the patent risk we don't want [32:08] i'm not sure what the fights were about [32:10] there was some patent angle to it i [32:11] think [32:12] and up till then microsoft had been [32:15] using [32:15] java components like in outlook web [32:18] access [32:19] which had a lot of javascript to be a [32:20] web mail like hotmail like user [32:22] interface they had to call [32:24] the the mail server drew htp [32:27] and they they used a a java object to do [32:30] this [32:31] and when they gave the boot to sun they [32:34] suddenly other [32:35] you know the left hand gave the boot and [32:37] the right hand said we better do [32:38] something else in outlook web access [32:40] what are we going to do [32:40] and they said let's just add an activex [32:42] component which is their own [32:44] native way of embedding things in [32:46] languages and [32:47] we'll make it it'll be what became xml [32:50] http request which is now a web standard [32:53] for calling [32:53] asynchronously and it's been replaced by [32:55] the fetch api in html5 or html living [32:59] document but [32:59] this whole lineage goes back to java [33:02] being successfully the loser and getting [33:04] kicked out [33:05] and after microsoft kicked it out it was [33:07] a plug-in and you would find it required [33:08] for like [33:09] smart card banking in in the nordic [33:12] countries where [33:13] that was mandated by law but really [33:14] didn't get used much or you know there [33:16] were pilots who used it for [33:18] um flight information but [33:21] flash which netscape could have bought [33:24] but unfortunately didn't [33:25] they really definitely did yeah we would [33:27] have screwed it up i mean what year are [33:28] we talking about with flash [33:29] i think after the ipo so it was probably [33:31] late 95 and flash was wrong [33:33] was it adobe no it wasn't no it was it [33:35] was called future splash and it was [33:36] these brothers jonathan gay i think his [33:38] name was he [33:40] he uh came knocking and the marketing [33:42] guy at [33:43] netscape who was screening the [33:44] technology partners or want to be [33:46] acquisitions was brutal and just [33:48] everybody wanted to get on the netscape [33:50] you know stock gravy train and he [33:51] sent them packing and they they ended up [33:53] selling the macro media and macromedia [33:55] was where [33:56] flash was created and the good thing [33:57] about macro media was it was a [34:00] um tool company so it invested in [34:03] you know the best ideas i think which [34:05] are still somewhat lost to us of flash [34:08] the timeline uh animation is sort of an [34:10] immutable function [34:12] over time they had the tooling around [34:14] that too like that dreamweaver [34:16] there's a flash flash a director there [34:18] were a bunch of them yeah [34:19] i mean yeah they that was a flash [34:20] builder was one of the last ones [34:22] these tools were used by real artists [34:25] and you know special effects people and [34:26] designers [34:27] all the restaurant websites around 2005 [34:29] were done in flash which was [34:31] you know we were trying to do html5 at [34:33] the same time that was the firefox era [34:34] we were trying to make [34:35] the web capable enough you didn't need [34:38] flash but if you recall you go to a [34:39] restaurant it's like [34:40] this is kind of like a game or something [34:42] it's like a flash all the font looks [34:43] small [34:44] you didn't like flash from the beginning [34:45] you're like this is this doesn't feel [34:47] right [34:47] not really i actually admire flash's [34:49] technology and i'm pretty pragmatic [34:51] about these things and i i [34:52] realized that you know it doesn't matter [34:54] if you're [34:55] dealt a bad hand like javascript was a [34:57] rush job or if you have flash as a [34:59] plug-in [35:00] and you can invest in the tools and make [35:02] it pretty good uh you should you should [35:04] make it better for your users and grow [35:05] it as best you can [35:07] and what happened with the browser due [35:08] to microsoft's monopoly abuse [35:10] for which they were convicted and you [35:13] know um [35:14] even after that until i think firefox [35:16] and then chrome [35:17] was people kept saying oh the web can't [35:19] do x i can't do y [35:21] we'll have to have a plug-in we'll have [35:22] to have a new approach we'll [35:24] we'll clean the slate and have a new web [35:26] and everyone who said that [35:28] failed and the reason they failed is [35:29] because there's too much value [35:31] in the web this huge network and the [35:34] worst is better principle [35:35] means that you can not only start bad [35:37] which they all sneer at [35:39] but get on first and get wide [35:41] distribution get sort of evolutionary [35:43] advantage [35:44] in the priority of place but you can [35:47] also improve it over time [35:48] yes and so if you're going to improve [35:50] flash and for some reason flash is now [35:52] out of favor steve jobs said you can't [35:53] have flash on the iphone that was [35:55] probably the death knell [35:56] put your energy into javascript and that [35:58] happened right so we we did things [36:00] at mozilla with adobe to improve which [36:02] bought my macro media [36:03] to improve flash and to improve the [36:05] version of javascript that was in flash [36:07] we tried to standardize that oh that's [36:09] right i'm getting ahead of myself [36:10] yes yeah that's it that's right can we [36:13] just rewind yeah it's a magical like [36:15] you know it's a special moment in the [36:18] history of all of computing it's [36:19] uh we'll talk about it later but it's [36:21] arguable it's possible that the entirety [36:24] of the world will run in javascript at [36:26] some point [36:27] so like it's like those are those days [36:29] it would be [36:30] it would be interesting if you could [36:31] just describe actually zooming in [36:34] on the how the cake was baked [36:37] uh from the you know the the several [36:40] days that you were working on it [36:41] what was in your mind uh how much coffee [36:44] were you drinking [36:45] were you nervous why you're freaking out [36:47] i'll try to remember it i mean you're [36:48] right [36:49] there are these pregnant moments you see [36:50] in hindsight maybe they're overrated but [36:52] like [36:52] hegel sees napoleon on horseback right [36:55] yana and says there's the world spirit [36:57] uh on on horse and [37:00] uh i knew that there was a chance to do [37:03] it mark knew [37:04] and he was my you know executive sponsor [37:07] and [37:08] he was the one you know sort of [37:10] brainstorming how the javascript should [37:12] be right there in the page that was [37:13] important for him to say that because i [37:15] i thought so too but a lot of people [37:16] were like well you can't write [37:17] programming language in the middle of [37:19] the markup [37:20] and indeed there are problems if you did [37:21] it naively you'd see the code [37:23] laid out as like random gibberish so i [37:25] had to figure out how to hide that that [37:26] was a [37:27] challenge is that is it a breakthrough [37:29] idea i mean [37:30] so you mark thinking about this idea [37:32] that you just inject code [37:34] in the middle of the market the web page [37:36] yeah it was considered kind of heretical [37:37] there was an sgml guru i forget his name [37:40] but he corresponded with me and at first [37:41] he was angry he's like [37:43] you should have used a marked section [37:44] why didn't you use a marked section and [37:45] i said well [37:46] html marked sections are not part of [37:48] html by the way and they're not [37:49] supported in the browser [37:50] and so i did some hack that was [37:51] equivalent and over time you could do [37:53] the proper sgml thing but it eventually [37:56] came around [37:57] and it was again sort of of evolutionary [37:59] necessity it was almost like [38:00] introgression like like [38:01] you know the idea um which liam [38:04] arguelles i think [38:06] helped get across that uh we have to [38:08] consider [38:09] mutualism biology that maybe you know [38:11] mitochondria were ancient [38:12] uh prokaryotes that got into the cell [38:15] and became beneficial [38:16] um somehow uh the same sort of thinking [38:20] applies uh you have to embed javascript [38:22] in html it's gonna be a good virus [38:24] it won't so the code the code becomes [38:26] data in the sense it just gets carried [38:28] it's very carried along but is there is [38:30] there's [38:31] the side of the so you were focusing on [38:33] the netscape at that time [38:34] doesn't the browser have to support [38:37] interpret correctly this [38:39] mix of html yeah and whatever code i had [38:41] to hide it from old browsers including [38:42] netscape one one which was predominant [38:44] then [38:45] so i used an html comment but the [38:48] inside the container that comment lived [38:50] in the script tag which is a new element [38:51] i could make [38:52] different semantics in netscape 2 where [38:54] those [38:55] html comment delimiters instead of being [38:57] multi-line brackets became one line [38:59] or essentially one line so you wrote the [39:01] javascript was written the programming [39:03] language was written as a comment [39:04] a comment for all browsers and a set of [39:07] uh brackets that were ignored with real [39:09] code for new [39:10] and it was this two-way comment hiding [39:12] hack as i called it [39:13] that was absolutely necessary for us to [39:15] get off the ground we couldn't have [39:16] bootstrapped javascript without it [39:17] we didn't have scripts that were loaded [39:19] from a separate file the only scripts in [39:20] netscape 2 were inline in the document [39:22] what were the challenges here what what [39:24] like what uh [39:26] you know typing uh uh what were the [39:29] choices you were thinking about garbage [39:30] classified because garbage color i [39:31] didn't have time to write a garbage [39:32] collector so [39:33] i just i didn't at first so the thing [39:35] was using essentially arenas or what [39:37] gnu calls obj pools and just would run [39:40] out of memory eventually [39:41] and i added reference counting in a [39:43] hurry after the 10 days in which i [39:44] hacked [39:45] so after i was in the server team doing [39:47] http 101 and thinking about the language [39:49] i finally got transferred to the client [39:51] team in early may and that's when i [39:53] you know i got the go sign from mark and [39:55] it was like we can't wait because people [39:57] inside netscape are doubting [39:59] even people inside sun are definitely [40:01] doubting bill joy was the champion but [40:03] he was like [40:03] alone in that in seeing there was a role [40:06] for javascript as the [40:08] as i call it the sidekick language robin [40:10] the boy hostage [40:12] frank miller put it in the dark knight [40:15] returns um [40:16] that uh there was a silly little [40:18] language that would be the glue language [40:19] it could become important over time and [40:21] you were better off having that [40:22] complementarity that pairing of [40:24] languages just like microsoft stacked it [40:26] with visual c [40:27] plus and visual basic so what was the [40:29] big moment [40:31] of uh i'm done so i had to do a demo i [40:34] i forget the dates i think i for a [40:37] history of programming languages paper [40:38] that alan where's brock [40:40] did with my health he did a lot of the [40:41] writing um i think it was the [40:44] 10 days from like thursday evening [40:47] through to the following [40:49] weeks you know whole that week and then [40:51] into the monday [40:52] sleep not not enough and i was really uh [40:55] going fast because i had already used a [40:57] lot of [40:58] um c compiler and front-end compiler [41:01] knowledge that i'd gained from [41:03] undergraduate school when i started [41:05] getting into computing [41:07] as a renegade physics major uh people [41:10] were formalizing [41:11] more efficient bottom-up grammars [41:14] parsers for bottom [41:15] languages uh really lalr 1 was the big [41:19] thing [41:19] and i studied all this and learned how [41:21] to parse them and [41:22] in the end uh if you're doing c [41:24] languages you often do what um [41:26] what what dennis richie did anyway which [41:28] is a recursive descent [41:30] parser you can hand code it and i did [41:33] that for javascript [41:34] in a blazing hurry mostly got it right i [41:37] didn't you know have precedence in [41:38] version problems or other bugs but i [41:40] copied a lot [41:41] from java and c and i tried to keep [41:44] things simple like the equality operator [41:46] in those 10 days sprint between [41:49] two objects of different dynamic type [41:52] said no they're not equal their types [41:53] are different [41:54] and then after that i had internal early [41:56] adopters and they were using javascript [41:59] to [41:59] like match a number against a database [42:02] field that had been string eyes and they [42:03] said oh can we just have implicit [42:05] conversion and [42:06] like an idiot i agreed i gave them what [42:08] they wanted i was trying to please them [42:09] and get adoption [42:10] and that you know broke what what [42:13] equivalence relation [42:15] um nature there was to the double equal [42:19] you know there are some four edge cases [42:21] with not a number [42:22] that break that of two but it really [42:24] broke it um having implicit conversions [42:26] in the operator is something that people [42:27] still [42:28] roast me over so let's let's talk about [42:31] two things one [42:32] it sounds like the comparison operator [42:34] the equality operator [42:36] is the thing that you regret so maybe [42:39] making it sloppy making it sloppy so [42:42] what is the biggest [42:43] thing you regret in those 10 days and [42:45] what is the biggest thing you're proud [42:46] of [42:47] so that that making it sloppy came after [42:49] the 10 days and my lesson there which [42:50] i've tweeted is [42:51] when people come to you saying can you [42:53] please make it sloppier add this cute [42:55] feature [42:55] the answer should be no and i should [42:57] have known that because i think [42:59] nicolas vere one of my heroes said the [43:01] essence of design is leaving things [43:03] out um but during the 10 days i also [43:05] like i said i was in such a hurry i left [43:07] out garbage collection [43:08] came back to haunt me but i got [43:09] reference counting in in time that [43:11] people [43:12] weren't running out of memory right away [43:14] on on long-lived jobs [43:16] what happens when you don't have garbage [43:17] collection you have objects well you [43:18] just run out of memory [43:20] and you know i love it at first you [43:23] write a short script and the page [43:24] doesn't last long longer it doesn't do a [43:25] lot and it's okay oh i see yeah yeah but [43:27] if you're writing a game or something [43:28] and you're [43:28] doing event based allocation you run out [43:30] of memory and this was noticed [43:32] in the summer of 1995 and people were [43:34] like what's going on oh yeah i gotta get [43:36] i better go back and do reference [43:37] counting [43:38] and then the problem with reference [43:39] counting is you're writing the language [43:41] in [43:41] the runtime in c an unsafe language and [43:44] if you're reference counting and you [43:46] overflow the counter you mismanage it so [43:48] it goes high it gets stuck high you leak [43:49] memory again and you run out [43:51] if you underflow it you pre-memory [43:54] that's still in use [43:56] and even then we knew what all the [43:58] security hackers [44:00] came to know that you therefore have a [44:02] potentially a remote [44:03] code execution vulnerability because [44:05] this was before things like [44:08] non-executable heap memory and [44:12] stack defenses against taking over [44:14] memory so if you can [44:16] from the the remote side write some html [44:18] and javascript that just happens to [44:20] exploit a bug in memory safety like it [44:22] causes javascript to underflow a [44:23] reference counter and the script still [44:25] has its hands [44:26] on that object and it's trying to call a [44:28] method on it and there's some kind of [44:29] lookup function table in the object [44:31] but you've managed to stuff the heap [44:34] with strings that [44:35] forge their own lookalike for the [44:37] function [44:38] table you can call some other code and [44:41] this was a problem [44:42] right away so security you know [44:45] javascript upped the ante java had this [44:46] problem too but in its own vm [44:48] and it just was you know a separate [44:51] headache for [44:52] sun to worry about we had this problem [44:54] in netscape right away so netscape 2 [44:56] came out [44:57] after my 10 days and after these you [44:59] know follow-on work to embed [45:01] javascript better in the browser and to [45:03] add garbage or collection through [45:05] reference counting really [45:06] i'd call it reference counting and get [45:08] it shipped [45:09] we had a bunch of dot releases where we [45:11] fixed security bugs like maniacs [45:13] but what is the thing you're you know [45:16] when you sit back [45:17] on a porch and just look out into the [45:19] sunset what are you most proud of from [45:21] those 10 days [45:21] i think the first class function shines [45:23] i think especially since java didn't [45:25] have it and it was [45:26] somewhat unusual ski made it in somehow [45:28] uh [45:29] at the end of the day in spirit i mean [45:31] people complain because scheme has [45:33] you know minimalism it has you know six [45:35] or seven special forms it has [45:37] hygienic macros it has call cc it has [45:40] sort of [45:40] a beautiful uh complete um [45:44] set of forms to make the land of [45:46] calculus pleasant to use in in practice [45:48] um and javascript is you know kind of [45:52] a multi-paradigm or shambolic [45:56] just a small tangent you mentioned mark [45:58] andreessen [45:59] it sounds like in bill joy but staying [46:02] on mark [46:03] it sounds like he had an impact on you [46:06] in that he sort of believed in what you [46:08] were doing there can you can you talk [46:09] about like what role mark had in your [46:11] life [46:11] yeah we would meet at the um the [46:14] peninsula creamery in downtown palo alto [46:17] and mark was just fresh out of you know [46:19] grad school or whatever he was doing and [46:20] he was [46:21] a big dude and he got fitter later [46:24] uh he had hair he he would order giant [46:27] milkshakes and burgers [46:28] and we would meet there and brainstorm [46:30] about what to do and it was very direct [46:32] because [46:32] we didn't have much time the the sort of [46:35] we didn't talk about it but the [46:36] implication was microsoft's coming after [46:38] us [46:39] mark was saying things boldly a pre-ipo [46:41] like netscape plus java kills windows [46:44] right this is [46:44] ambitious makeup browser programmable it [46:46] becomes the new runtime for programs [46:49] it's the meta os or it's the replacement [46:51] os um but he still [46:52] saw value in javascript yes even though [46:55] he was saying that and java was the big [46:56] name [46:57] hence the trademark license uh he saw [47:00] javascript is important [47:01] and he even thought what if we got i [47:03] told this another interview second state [47:04] he thought what if we had [47:06] my friend kip hickman who'd been at [47:08] netscape from the beginning and who was [47:10] a kernel hacker at sgi when i joined [47:13] he started writing his own jvm before we [47:15] consummated the sun deal and got our [47:16] hands on their code [47:17] and the java compiler java c which [47:20] arthur van hoff had written very nice [47:22] code was all written in java it was [47:24] self-hosted or [47:25] so called bootstrap and so we could use [47:27] that as soon as kip's [47:28] java vm could run the byte code from the [47:31] the sun [47:33] jvm running the self-hosted compiler to [47:36] emit the bike [47:37] so once we could bootstrap in the kip's [47:39] vm we wouldn't need sun and [47:40] mark was like well maybe we can just you [47:43] know ditch sun [47:44] or java vm or if you're a javascript vm [47:46] we [47:47] now we need graphics so mark was [47:48] thinking far ahead because he knew [47:51] you could do things with html and images [47:53] but at some point you really want like [47:55] cinema graphics or yeah [47:56] three-dimensional like even sgi had [47:58] already started its downfall because [48:00] the first four vlsi team there had gone [48:03] off to do 3dfx and all these other [48:04] companies that made the graphics card on [48:06] your pc right [48:07] doom was was big and quake and so you [48:09] were we were all playing quake i was old [48:11] so i was terrible um [48:12] but why not put that graphics capability [48:15] on the web and in fact it finally [48:17] happened [48:17] uh at mozilla with firefox era with vlad [48:20] vukichevic [48:21] taking opengles and reflecting it as [48:23] webgl but opengles [48:25] is the mobile version of opengl which is [48:28] a standard based on sgi gl so this whole [48:30] lineage of graphics libraries [48:32] or really graphics languages for what [48:34] became the gpu [48:36] and mark was thinking ahead it's like we [48:37] need graphics too and i thought okay i [48:39] could try to get somebody i knew at sgi [48:40] but he's a grad student at mit he was [48:42] studying under barbara liskoff [48:44] he laughed when he heard about this [48:45] later andrew myers he's at cornell a [48:47] long time i think he's a full professor [48:49] and mark said great we'll get him i'm [48:52] not sure he's going to come [48:53] we'll throw money you know stock options [48:55] we never did it and [48:56] they did the sun deal so kip nobly put [48:59] aside his own jbm and we used the sun [49:01] jvm [49:02] so that was an ambitious period and mark [49:04] was very generative because he was [49:05] pushing hard [49:06] he was ambitious and he wanted to have [49:09] netscape [49:11] possibly be in control of the ball maybe [49:13] you could speak to the [49:14] this dance of uh [49:18] netscape versus internet explorer you've [49:20] uh [49:22] you've thrown some loving words towards [49:24] microsoft [49:25] throughout this conversation but that's [49:26] the theme with uh i mean steve jobs had [49:29] a similar sort of commentary [49:31] from a big sort of philosophical [49:33] principle perspective [49:34] can you comment on like the approach [49:36] that microsoft has taken with internet [49:38] explorer [49:39] from ie1 to edge today is there [49:43] something that you see as valuable that [49:45] they're doing [49:46] in the in the occasional copying and [49:48] this kind of stuff or is it [49:50] um is the world worse off because [49:53] internet explorer exists [49:55] so i'm going to segment this into [49:56] historical eras because i think [49:58] microsoft is today with [49:59] quite a different company and what [50:00] they're doing with edge is different but [50:02] back then [50:03] um gates you know aggressive character [50:06] not really original in my view [50:08] not an originator steve jobs famously [50:10] said once he doesn't have any taste and [50:12] i don't mean this in a small way [50:13] there's no taste you can see this apple [50:16] at the time [50:17] had beautiful typography and ligatures [50:20] and kerning and the fonts looked great [50:22] and windows had this sort of ugly system [50:24] font that was carefully aligned with [50:26] pixels so it [50:27] didn't get anything what is it i'm sorry [50:29] to keep interrupting but why did why was [50:30] internet explorer winning [50:32] throughout the history of these [50:33] competitions distribution distribution [50:35] matters more than anything and this is [50:36] why [50:37] um you know even now we're seeing in the [50:39] browser wars edge [50:41] doing better because it's being fostered [50:42] on people of windows we have windows 10 [50:44] boxes at home [50:45] we have some windows 7 boxes we or [50:46] laptops we keep running too because we [50:49] we don't connect them to the internet [50:50] generally but um [50:52] but but uh once you have that operating [50:54] system [50:56] you can you can force you know edge and [50:58] apple did it with safari too [50:59] it's not unique to microsoft that's sad [51:01] but [51:02] uh distribution matters and that's why [51:04] uh i think ie was going to win that's [51:07] why [51:07] everybody at netscape felt were doomed [51:09] this was something michael toy and jamie [51:10] would say were doomed [51:11] um but for a while there we had a chance [51:14] and we innovated in netscape too we [51:16] did a big platform push java and [51:17] javascript and [51:20] plugins more plug-ins and um [51:23] you know more html table features and [51:25] and really started making [51:26] a printable stack out of what were [51:29] pretty static web languages and [51:31] even in the beta releases in netscape [51:33] two people were using javascript to [51:34] build what you would call single page [51:35] applications like gmail [51:37] and they were using javascript locally [51:39] to compute things and to call the server [51:41] on a hidden frame in the background [51:43] so it was prefiguring a lot of what came [51:45] later as ajax or dynamic javascript [51:47] dynamic html so people saw that i mean [51:49] even when they saw it that's kind of i [51:52] don't know [51:52] from my perspective that seems quite [51:54] brilliant this it seems like really [51:56] innovative that you would have code run [51:57] in the browser [51:59] it did impress me with something um [52:01] which i learned later about from [52:02] eric von hippel of mit which is user [52:04] innovation networks lead user effects [52:07] that throwing out javascript even though [52:09] we weren't doing open source we were [52:10] doing beta releases early and [52:12] permissively with netscape [52:14] getting early developer feedback [52:16] absolutely critical i loved it i did [52:18] some of that with sgi with some of the [52:19] products i worked on but it really came [52:20] to the foreign netscape and that [52:22] you know culminated in mozilla where [52:23] you're dealing with developers all the [52:25] time and early adopters lead users but [52:27] the lead users helped improve javascript [52:29] even in those [52:30] last few betas where i could hardly [52:32] change things i was under pretty rigid [52:33] change control [52:34] so we're talking about just a small [52:35] collection of individuals that are just [52:37] like [52:37] up front guy named bill dortch you can [52:39] find his work in the web archive still [52:40] from 1996. it's a single page [52:42] application it's an [52:43] artist's gallery of mountain art [52:46] javascript doesn't quite work he uses [52:47] javascript locally uses a local [52:49] database what you would think of now is [52:51] json but it's all [52:53] pure javascript code a bunch of objects [52:54] being constructed that's so cool [52:57] so how is uh if you can do sort of a big [53:00] sweeping progress of javascript how has [53:03] javascript changed over the years any of [53:05] you from those early 10 days [53:07] with a quick addition of garbage [53:08] collection and fixes around security [53:11] how is this evolution that now it's [53:12] taking over the world [53:14] in this it's been a bumpy ride because [53:16] the standards body got shut down after [53:18] microsoft i think um took over the web [53:21] and then felt punished by the usb [53:23] microsoft [53:24] antitrust case can you speak to the [53:26] santa body like [53:27] that was a fun ride too because netscape [53:29] had uh taken the lead [53:30] with the web and html innovations like [53:34] um [53:35] frames and frame sets tables and the w3c [53:37] was sort of off even then sort of in [53:39] sgml land heading toward xml [53:42] la la land i'm going to be a little [53:43] harsh on it because it's html i'm sorry [53:45] html was the precursor markup language [53:48] to html [53:48] it was sort of the more extensible um [53:52] standard generalized markup language it [53:54] was it was a xml like 20 brackets but it [53:56] had [53:57] all sorts of elaborate syntax for doing [53:59] uh different semantics [54:00] and this is why i think you know tbl and [54:03] others who wanted to do the semantic web [54:05] then took xml um forward but they had [54:08] this [54:09] uh or some of them anyway had this [54:10] strange idea they could replace the web [54:12] with xml or that they would upgrade the [54:14] web [54:14] to be xml and it couldn't be done worse [54:17] is better had [54:18] concrete meaning the web was very [54:20] forgiving of html [54:22] including sort of minor syntax errors [54:25] that could be error corrected like error [54:26] correction [54:27] isn't generally done in programming [54:28] languages because that's another amazing [54:30] thing about html is like [54:32] it's more like biology than programming [54:34] yeah exactly [54:35] and so uh xml was in its standard form [54:40] super strict and could never have [54:41] admitted you know the kind of users who [54:43] were committing these errors [54:44] and the funniest part was microsoft said [54:46] hey we're doing xml but the way they put [54:48] it in internet explorer under the [54:49] default media type [54:51] put it through the html error corrector [54:53] oh wow [54:54] so they kind of bastardized it to make [54:56] it popular and usable and accessible [54:58] and so xml as a pure um [55:02] you know thing was never going to take [55:03] over and the w3c was kind of [55:06] not fully functional because netscape [55:07] wasn't cooperating with them [55:09] we thought about where to take [55:10] javascript and we realized our standards [55:12] guru carl [55:13] cargill realized there was a european [55:16] standards body that had already given [55:17] microsoft fits by standardizing parts of [55:19] the windows [55:21] 3-1 api which european governments [55:23] insist on they said microsoft we can't [55:25] use your operating system without [55:26] some standards and microsoft said you [55:28] know here's our docs and [55:30] and the government said no we need a [55:31] european standard so this body called [55:33] the european computer manufacturers [55:35] association [55:36] ecma which eventually became global and [55:38] became a proper noun instead of an [55:40] acronym [55:40] right it's uh it's just one capital e [55:42] now with a lowercase cma [55:44] right and as uh one of the early [55:46] microsoft guys i met when we first [55:48] convened a working group to talk about [55:50] javascript said it sounds like a skin [55:52] disease [55:53] but it gave i mean maybe you'll speak to [55:55] that but it gave the name to javascript [55:57] of ecmascript [55:58] that was the standard name because java [56:01] was a trademark of sons they were so [56:03] aggressive they were [56:04] sending cease and desist letters to [56:06] people whose middle european heritage [56:08] meant their [56:09] their surname was javonko and they [56:10] called their website javanco.com [56:12] and son was sent them a letter saying [56:14] you're using java at the start of your [56:16] domain name you must cease and desist [56:18] i love marketing more than anything else [56:20] in this world uh [56:22] so so ecmascript and now is popularly [56:24] named as es [56:26] plus version i would say people use js [56:29] more than anything people still say [56:30] javascript javascript [56:32] books sorry i mean when you're referring [56:33] to it's usually javascript and when you [56:35] want to refer to a version of javascript [56:37] you'll say es6 es5 [56:39] yes or now they've gone to years which [56:40] is kind of confusing because it's an [56:42] offset [56:42] of 2009 es6 [56:46] is yes 2016. uh [56:50] yeah it doesn't match the years [56:51] perfectly yeah yeah so so what [56:53] uh what what were the choices made and [56:55] how did javascript evolve here so [56:58] we took this this this new standards [57:00] body which had we thought [57:02] a sort of a proven record of standing up [57:04] to microsoft but microsoft [57:06] sent a lot of people they sent some some [57:08] people who were [57:09] pretty good and then when they realized [57:11] that i was there and netscape was not [57:13] going to [57:14] you know just bend over and do whatever [57:15] they wanted they sent somebody really [57:16] good he was a smart guy he did a lot of [57:18] the work on the first draft of the spec [57:20] sean katzenberger he's left microsoft he [57:23] even [57:24] did what i sort of did he told his [57:25] bosses i stopped bugging me to do other [57:27] things i'm focused on this because it [57:29] took a lot of focused work to create the [57:30] first draft of the spec [57:32] and i was still holding i was spending [57:34] almost all the plates i had like [57:35] part-time help in certain areas and on [57:37] the front end integrations i had the [57:39] front-end guys [57:40] but i i couldn't take as much time as [57:41] sean was to write the draft spec but i [57:43] had to participate because [57:45] i was essentially helping write down [57:46] what the language did in areas where we [57:49] didn't like what it did and [57:50] microsoft didn't agree we sometimes got [57:53] away with slight [57:54] changes and that's the story of [57:55] standards you have different [57:56] implementations [57:57] and depending on their market power they [57:59] interoperate where you have agreement [58:01] and where they don't the dominant one [58:03] usually sets this [58:04] de facto standard and then you should [58:06] probably reflect that into the jury [58:08] standard [58:09] and this happened with javascript over [58:11] time as netscape went down and microsoft [58:13] went up [58:14] we did the first edition of the standard [58:16] codified in 1997 [58:18] in france we had a trip to nice which [58:20] was very memorable [58:22] for any interesting reason or just [58:23] because it's nice and and ecmas european [58:26] and ibm and others were you know there [58:28] uh mike kalashaw an ibm fellow was a [58:30] britisher and we [58:32] the the the guy who ran active at the [58:34] time john vandenbelt was quite a [58:36] a raconteur and a very fun guy and he [58:39] had us out for you know the great [58:41] you know frida mayer the boy bays and [58:43] was the standardization process [58:45] beautiful or painful that those early [58:46] days you as a designer of the world it [58:48] was painful because it was rushed now [58:50] guy steel was contributed by sun so even [58:52] more than sean you had this giant brain [58:54] guy steel helping bringing some of that [58:56] scheme magic and he even brought richard [58:58] gabriel for fun and richard wrote the [59:00] fourth clause of the [59:02] standard which is kind of an intro to [59:03] what javascript's all about [59:05] so we had some really good people and we [59:08] didn't fight too much there was some [59:09] tension where i was [59:10] fixing bugs and i was late to a meeting [59:12] and sean katzenberger microsoft was [59:14] actually mad [59:14] like where is he we need him and when i [59:17] got there [59:18] i saw that only he saw this sort of off [59:21] by one bug in somewhere in the spec and [59:22] then i saw it too and i said there's a [59:24] fence post bug there and then [59:25] we kind of locked eyes and we realized [59:27] we were on the same page and we kind of [59:28] he wasn't mad anymore [59:30] what were the features that are being [59:31] like struggled over and debated and [59:33] thought about and [59:34] it was mainly writing down what worked [59:36] and what we thought should work in the [59:37] edge cases that didn't interoperate or [59:39] that [59:40] seemed wrong uh but we were already [59:42] laying the groundwork for the future [59:43] editions that [59:44] i was already implementing i was still [59:46] trying to lead the standard [59:48] by using the dominant market power to [59:50] write the code that actually shipped [59:52] so the de facto standard would lead the [59:53] de jure standard and i was putting in [59:55] the the missing you know function forms [59:58] that i didn't have time for in the 10 [59:59] days [60:00] so this is the engineering mindset [60:02] versus the theoretician so you didn't [60:03] want to create the perfect language but [60:05] one that was the popular and [60:06] shipped and all that kind of and you [60:07] could say there was i was standing on [60:09] the shoulders of giants so there was a [60:10] staged process where i had to hold back [60:12] things that were well designed by others [60:15] in other languages and i could [60:16] imitate but i couldn't do them all in [60:18] the 10 days so they came in [60:19] 1996 in 97 [60:22] and they came into the third edition of [60:24] the standard which was finally finalized [60:26] in 1999 [60:27] but at that point netscape had been sold [60:29] to aol and was [60:31] which was a decent exit considering and [60:33] uh [60:34] you know had previously been mercilessly [60:36] crushed that netscape was selling the [60:38] browser along with [60:39] server software that it acquired after [60:41] its ipo [60:42] and microsoft was just under pricing it [60:44] so there was no way [60:46] to compete with that microsoft was also [60:49] you know [60:49] making internet explorer the default [60:51] browser in windows [60:53] which is called tying and antitrust law [60:55] and they were doing even more brutal [60:56] things there's a famous [60:57] uh investor he did very well on google [61:00] so he's a billionaire rahm sri ram and [61:01] he was [61:02] sales guy or head of sales at netscape [61:04] and [61:05] he got off the phone looking ashen faced [61:07] after compact called and said [61:10] microsoft just told us they're going to [61:11] pull our windows license if we ship [61:13] netscape as the default browser [61:15] wow this is so there is some bullying [61:16] going on there was totally [61:18] material in the anti-trust case but but [61:20] javascript escaped into the standard [61:22] setting where there was fairly good [61:24] cooperation microsoft [61:25] had a really good guy on it and you know [61:27] guy steele was there for a time and and [61:29] there was some good work [61:30] but after the anti-trust case and [61:34] you know netscape kind of dissolving [61:36] into aol and not really going anywhere [61:38] quickly mozilla [61:39] took years to really bring up um the [61:42] standard froze and [61:43] by 2003 even though they've been sort of [61:45] noodling around with advanced versions [61:47] javascript 2 [61:48] i'd given the keys to the kingdom to [61:50] another mit grad baltimore horowat [61:52] very big brain still google i think he [61:54] won the putnam in 86 so he's [61:57] yeah very mathematician um he he [62:00] designed this [62:01] successor language javascript too but it [62:03] it only showed up in [62:05] mutated form in microsoft's asp.net [62:08] server side and it [62:10] didn't last there and it showed up in [62:11] flash and that's what became action [62:13] script three [62:14] with the action script interesting and [62:16] then and then flash of course declined [62:18] and so [62:19] how do we arrive at es6 where it's it's [62:22] like [62:22] there's so many where everyone okay [62:25] there's this history of javascript [62:27] that people were it was just like cool [62:29] when you're like having beers to talk [62:30] crap about javascript [62:32] everyone loves to hate like people who [62:34] are married say ah marriage sucks [62:36] is they just want to get let off some [62:38] steam even though everyone uses the [62:40] language yeah [62:40] but es6 ever it's become this like [62:44] uh reputable like it fixed major pain [62:48] points i think it added things to the [62:49] language and added something [62:51] that was already es5 strict mode but [62:54] made it implicit in class bodies and [62:56] module bodies it was a big jump but it [62:58] accumulated some of the es4 designs [63:01] that we've done with adobe for [63:04] what we hoped would be the fourth [63:05] edition of ecmascript [63:07] that were supposed to fold in some of [63:09] these old javascript two ideas that had [63:11] come into actions or three [63:12] so you look at the family tree and you [63:14] see these forks and the main ones [63:16] are the the ones that go into adobe [63:20] flash acquired from macromedia and the [63:22] one that went into the server side of [63:23] microsoft's [63:24] stack which kind of died and then trying [63:27] to bring them back into the standard and [63:29] not quite succeeding es4 was was [63:31] mothballed [63:32] but all the good parts that everyone [63:33] liked made it into es6 [63:35] and so that that was a success and i i [63:37] said earlier i had the wrong year i [63:38] think it's 2015 so it's off by [63:40] four yes yeah it was done finalized in [63:43] 2015 it took a little longer than we [63:45] hoped but [63:46] um because es5 was 2009 and that was a [63:48] smaller increment from [63:50] es3 we skipped four again we mothballed [63:52] it and [63:54] we had a split in the committee where [63:55] some people said you know es4 is too big [63:57] we're going to work on incremental [63:58] improvements [63:59] no new syntax in particular they they [64:01] promised [64:02] not quite true but uh they they added a [64:05] bunch of interesting apis alan where [64:06] sprock my [64:07] co-author of that hobble paper and he [64:10] was at microsoft at the time i ended up [64:11] hiring mozilla he wanted to [64:13] get to mozilla and keep doing the [64:16] sort of editoring editor job of the [64:18] javascript standard ecmascript um [64:21] and when we got es6 done it was it was a [64:24] little late [64:24] 2015 and we switched to year numbers so [64:27] people still call it es6 i call it es6 [64:29] yeah but if you remember you know off by [64:31] nine [64:32] plus two thousand yeah i mean esx is [64:33] such a big [64:35] job i mean like you said there's a [64:37] thread that connects all of it but es6 [64:38] is when it's like became this language [64:41] that [64:41] it almost feels ready to take over the [64:43] world completely [64:45] we're programming in the large features [64:46] more yeah features you need for larger [64:48] teams [64:49] and software engineering microsoft did [64:50] something smart too they [64:52] anderson company um luke hoban who's [64:55] left microsoft also did typescript [64:57] and they realized uh something i think [65:00] that gilad brock has also popularized [65:02] and [65:02] and uh he was involved in darted google [65:05] if you [65:06] don't worry about soundness in the type [65:08] system you don't try to enforce [65:10] the type checks at runtime in particular [65:11] just use it as sort of a warning system [65:13] a tool time [65:14] type system you can still have a lot of [65:15] value for developers [65:17] especially in large projects so [65:19] typescript has been a roaring success [65:20] for microsoft [65:21] what do you think about type what do you [65:22] think about typescript is it uh [65:24] adding confusion or is it ultimately [65:26] beneficial i think it's beneficial [65:28] now it's technically a superset of [65:30] javascript so of course i love it [65:32] the the shortest javascript program is [65:35] still a typescript program any [65:36] javascript program is a typescript [65:38] program which is brilliant because then [65:39] you can start [65:40] incrementally adding type annotations [65:41] getting warnings yes learning how to use [65:43] them [65:44] microsoft's had to kind of look around [65:46] corners at the standards body and guess [65:48] how [65:49] their version of modules or decorators [65:51] should work and and the standards body [65:53] then may [65:54] change things a bit so i think they're [65:56] obligated with typescript either to [65:58] carry their own version or to [66:00] bring it back with incompatible changes [66:01] towards the standard over time [66:03] and i think they've played generally [66:04] fair there there's some sentiment that [66:06] why don't they standardize typescript [66:07] well [66:08] they've been clear they don't want to [66:09] they have a proprietary investment it's [66:11] valuable they've controlled the ball [66:13] and in some ways you can say the same [66:15] thing to any of the other big companies [66:17] in the standards body why doesn't google [66:18] standardize its stuff um [66:20] so you you think it'll continue being [66:22] like a kind of a dance partner [66:23] to javascript to the base javascript [66:25] there's a hope that at some point [66:27] if they keep reconverging it and the [66:29] standard doesn't break them and [66:30] goes in a good direction we will get at [66:33] least the annotation syntax and some [66:36] semantics around them because when [66:37] you're talking about type annotations [66:38] they're generally on [66:40] you know parameters and return values [66:42] and variable declarations there are cast [66:44] operators [66:45] you want that syntax to be reserved and [66:47] you want it to work the same in all [66:49] engines [66:49] and this is where ideas like go odds [66:51] plugable type systems might [66:53] might be good though then you could [66:54] create the same problem you have with [66:56] lisp and scheme where there's a bunch of [66:57] macro libraries and they don't agree and [66:59] you you have conflicts between them [67:01] but but pluggable type systems could be [67:03] one way to standardize this [67:04] what do you think about the giant [67:06] ecosystem of frameworks [67:08] uh in javascript it feels like [67:11] because i mean this is a side effect of [67:13] how many people use javascript yes [67:16] a lot of uh entrepreneurial spirit like [67:19] create their own javascript uh [67:21] frameworks [67:22] and they're actually awesome uh [67:25] in our own different ways and that [67:29] this is an interesting question about [67:31] almost like philosophically about [67:33] biological system and evolution all that [67:35] kind of stuff [67:36] do you see that as good or should it [67:37] like should some of them die out quicker [67:40] i think that maybe they should now [67:42] jquery was a very clever [67:44] uh thing john resigned this library that [67:46] was sort of query and do [67:47] and blended sort of css selector syntax [67:49] with [67:50] javascript sort of object graph or dom [67:52] querying and made it very easy for [67:54] people to do things almost like they [67:55] were learning jquery as its own language [67:57] yes domain-specific language [67:58] and uh that i think reflected in part [68:02] the [68:02] difficulty of using the document object [68:04] model these apis that were originally [68:06] designed in the 90s for java as well as [68:07] javascript they're very [68:09] object-oriented or even procedural [68:11] they're very kind of verbose [68:13] and it took like a constructor call on [68:15] three different you know [68:16] okey-pokey dances to do something [68:18] whereas in jquery it's just one line [68:20] right so that fed back finally into the [68:23] standards it didn't [68:24] it didn't mean we standardized jquery it [68:25] wasn't quite that concise but [68:28] you find now with the modern standards [68:29] that we were working on [68:31] in the html5 sort of um effort [68:34] that things became simpler the fetch api [68:37] and the query selector api [68:38] document.queryselector [68:40] a lot of things can be done now in raw [68:41] javascript that you would [68:43] make more concise in terse in jquery [68:46] but it's it's not bad it's pretty good [68:48] whereas in the old dom of [68:50] 15 years ago it was just too provost so [68:52] maybe the frameworks were born [68:54] kind of uh because javascript lacks some [68:57] of the features of [68:58] jquery and so like uh now that [69:00] javascript is [69:01] swallowing what jquery was then the [69:04] frameworks will [69:05] only the ones that truly add value will [69:07] stick around and the other ones will die [69:08] out and that highlights this [69:09] also this division between the core [69:11] language javascript which can show up in [69:13] other places like node.js on the server [69:14] side [69:15] and the browser-specific apis or the [69:17] document object model apis [69:19] which are even managed by the w3c the [69:21] standards body [69:22] that was off in xml la la land when we [69:24] were doing real javascript standards in [69:26] ecma [69:27] and you you you have this division of [69:29] labor division of responsibility and [69:31] division of style [69:33] and sort of aesthetics and [69:36] also speed so the document object model [69:38] really stagnated [69:39] after um microsoft kind of de-invested [69:43] in the web and microsoft did something [69:44] in [69:45] their haste in the spirit of netscape [69:46] doing things quickly and getting on [69:48] first [69:48] called dhtml and some of their [69:50] innovations that were like an [69:51] alternative document object model [69:53] didn't really get standardized until [69:56] html5 when [69:57] we pragmatists said opera at the time uh [69:59] ian hickson who went to google [70:01] apple and mozilla said let's let's [70:05] xml is not going to replace html html4 [70:07] is too old [70:08] let's standardize html5 based on all [70:11] this good stuff including that dhtml [70:13] variant [70:14] dynamic html5 it feels like to me maybe [70:17] you can correct me like a beautiful [70:19] piece of design work it was uh it's not [70:22] often with web stuff [70:24] i you have this breadth of just like oh [70:27] whoever did this is did they fix it this [70:30] just feels good [70:31] uh is that what what are your thoughts [70:32] about html is the am i being too [70:35] romantic a little bit a little bit are [70:36] there flaws fundamental flaws to it that [70:38] i'm just not aware of [70:40] my i'm you know my old friend hicksy did [70:42] a great job he was a [70:43] a renegade physics student uh and he was [70:46] a [70:46] basically a qa guy at opera but he [70:48] obviously the [70:49] trained physics you know student and uh [70:52] someone who could write [70:54] a british or he he developed test suites [70:57] and he started thinking about them [70:59] more axiomatically now this is this can [71:02] be good because you can sort of [71:03] systematize in a way that makes a better [71:04] html [71:05] or you can get caught in the pragmatism [71:07] of saying well we have to handle these [71:09] edge cases so we're just going to have [71:10] sort of a [71:11] test matrix and if the matrix is large [71:13] it will not be beautiful by many [71:15] people's lights everyone likes to [71:16] minimize along [71:17] their preferred dimensions the seven [71:19] special forms and scheme or whatever [71:21] but but reality is [71:24] html needs uh to be big it's kind of [71:27] symbolic [71:28] it's a creative multi-paradigm and hixi [71:31] did a good job i would say [71:32] with a bunch of it uh other people came [71:35] in [71:35] in the spirit of ian hickson to do html5 [71:38] work and [71:38] they've carried on that effort and it's [71:40] a so it's a mix of pragmatism [71:42] de facto standards from the past being [71:44] sort of combined or [71:46] written down for the first time and then [71:47] rethought in a way that has a simpler [71:49] syntax like the fetch api instead of [71:52] xml http request um video too as well [71:55] it's ultimately it feels like maybe you [71:57] can correct me it feels like it was the [71:59] nail in the coffin a flash steve jobs [72:01] saying no flash on the iphone in my [72:03] opinion was the actual [72:04] stick to the heart but but well and i'm [72:07] not sure what trope you want to use this [72:09] flash was a zombie for [72:10] until just this year right or last year [72:12] i think last year was the end of flash [72:13] in main browsers [72:15] um but jobs really did the death blow [72:18] and [72:19] uh yeah you're right we had to make [72:21] html5 competitive [72:22] i still don't think we got that [72:24] beautiful timeline [72:26] animation the timeline thing yeah you [72:27] like the time i mean me from uh [72:29] i you know i used to animate all kinds [72:31] of stuff inside flash plus there's a [72:33] programming element [72:34] yes it was a little bit i don't know if [72:37] you can [72:37] comment on that but to me it was a [72:39] little bit like go-to statement like [72:41] in a sense that it was a little bit too [72:43] chaotic [72:44] like it didn't uh that ocd part of me as [72:47] a programmer [72:48] wasn't satisfied by flash it feels like [72:50] there was bugs [72:51] that were introduced through the [72:52] animation process that i couldn't debug [72:54] easily yes [72:55] i heard that too i i didn't use it so [72:57] i'm doing the grass's greener thing here [72:59] yeah the thing i [73:00] like i liked about the animation model [73:02] was that it was this immutable function [73:03] of time so you could [73:04] time warp and you could if you dodged [73:06] these bugs or worked carefully [73:08] you could really make it sing in ways [73:09] that i think still a little challenging [73:11] with [73:12] the web animation standards but [73:15] or just using raw canvas and webgl um [73:18] but there's so many tools now that maybe [73:19] it doesn't matter [73:20] and and yet we had to you know do video [73:23] we had to do [73:24] uh webgl and then evolve it we had to do [73:28] web audio [73:29] um but once we did all these things that [73:32] helped flash uh die thanks to steve gubs [73:35] we had something that um people didn't [73:39] realize we had that vision that mark and [73:40] jason have this this graphics capable [73:43] to the metal uh portable runtime and [73:48] we at mozilla realized this and we we [73:49] saw [73:51] javascript was something that you could [73:52] compile to use adobe had somebody in the [73:54] adobe labs doing this too he had a [73:55] project called alchemy [73:57] we had somebody who's now google alone [74:00] zakai who did his own [74:02] llvm-based compiler that would take c or [74:04] c plus plus and it would emit javascript [74:06] and you would think this is crazy [74:07] you're going from this sort of machine [74:09] types low-level [74:11] you know controlled memory allocation [74:12] language to this garbage collected [74:14] dynamically typed [74:15] uh high level higher level language but [74:19] alone sort of just phenomenologically [74:21] carved nature the joint [74:22] found the forms that were fast in [74:24] javascript and then [74:26] with dave herman who i'd recruited from [74:28] northeastern university who [74:30] was a type theorist and um luke wagner [74:32] was still at mozilla [74:33] who was the compiler guy and and the jet [74:36] guy [74:36] they figured out how to codify what [74:39] aolong had done [74:40] into a typed subset of javascript called [74:43] asm.js and this is a strange thing to [74:45] think about because it doesn't have new [74:46] syntax [74:47] the types are casts that [74:50] occur in dominator positions in the [74:52] control flow graph [74:54] so it's like a hack on javascript and [74:56] it's a subset and it uses those bitwise [74:57] operators that i talked about copying [74:59] from java [75:00] to basically cast [75:03] numeric types which are double precision [75:05] floating point into integers [75:07] and so inside javascript in the kernel [75:09] semantics [75:10] are integers and if you use these [75:12] operators if a compiler emits them in [75:14] the right places [75:15] you can then treat them as typed values [75:18] typed memory [75:19] locations and you can type check your [75:21] program [75:22] you can not only type check it you can [75:23] compile it this is all in sort of linear [75:26] time oh and [75:27] you can compile it to have deterministic [75:29] performance it doesn't touch the garbage [75:31] collector [75:32] it calls a bunch of functions that come [75:34] from the c functions or c plus plus code [75:36] that you're compiling [75:37] and you can make the epic unreal engine [75:40] go in 30 frames a second yeah and when [75:44] we did this in 2013 in the fall [75:46] you know tim sweeney i met um didn't [75:48] think it could be done [75:49] quickly i thought it would take years [75:51] and the team went to raleigh [75:53] to epic and in four days they had unreal [75:56] engine [75:56] ported by pressing a compile button [75:59] right they had but they had to have [76:00] webgl [76:01] which came from opengl es came to opengl [76:04] which came from silicon graphics jail [76:05] they had to have web [76:06] audio so they could map open al which [76:09] was another audio library standard to [76:11] web audio which was kind of a chrome [76:12] idiosyncratic thing [76:13] um but they could make it work and they [76:16] had to have [76:17] asm.js for fast c plus plus to [76:20] javascript [76:20] and uh if you didn't have that fast [76:23] compiler step [76:25] the javascript you'd write by hand [76:27] trying to do an unreal game would be too [76:28] big and too slow it would touch the [76:30] garbage collector it would not [76:31] keep up with 30 frames a second on the [76:33] hardware 2013 hardware [76:35] so we demoed that at um uh this was in [76:38] fall 2012 now to think about it because [76:40] we demoed it at [76:41] gdc game developer conference 2013 and [76:44] people were stunned it's like [76:45] unreal engine unreal tournament running [76:47] in my browser window no plugin [76:50] no flash no java no so where does the [76:53] early days of because javascript now [76:55] is able to run basically on par with [76:58] a lot of the like c plus yeah and even [77:02] before then you had the fast javascript [77:03] vms in 2008 [77:05] when chrome came out just before it came [77:07] out mozilla [77:08] my friend andreas gal and i uh and [77:11] others hacked out trace monkey our [77:13] trace-based jet the squirrel fish [77:15] extreme [77:16] team at apple did their jit and we were [77:19] all competing on these [77:20] these crazy performance benchmarks it [77:21] was a little bit too much tuning in the [77:22] benchmark but [77:23] javascript started getting fast and [77:25] developers started noticing it but it [77:26] was still [77:27] kind of this its own high-level language [77:29] with garbage collection [77:30] the asm.js step helped us go further [77:33] because [77:33] until we really proved the concept [77:36] people were still saying well [77:38] javascript's okay it's getting faster [77:40] thanks to v8 everybody gave google [77:41] credit especially google [77:43] but we need something to kill flash [77:44] let's use the portable native client [77:46] code that google had acquired native [77:48] client [77:49] um which is a separate lineage we're [77:51] taking basically c [77:52] code compiling it into a software fault [77:55] isolated container of some sort [77:56] using some kind of virtualization [77:58] technique and [78:00] maybe it can even be in process and [78:01] still be memory say that would be [78:02] awesome but they ended up using process [78:04] isolation too and that kind of [78:05] weakened it and in the end it was like [78:07] portable native client okay [78:09] you know meet new boss same as zeal boss [78:10] this is the google flash right [78:12] yeah but but when we did asm.js and we [78:15] showed unreal engine working [78:17] i think it was only a matter of time [78:18] before google threw in the towel and in [78:19] fact [78:20] everybody agreed in spring of 2015 we're [78:23] going to take [78:23] what was proven by asthma js and make a [78:26] new syntax a binary syntax that's [78:28] efficient [78:29] that loads into the same javascript vm [78:31] that javascript loads into so there'll [78:32] be two source languages one vm [78:34] very important one garbage collector one [78:36] memory manager one [78:38] set of compiler stages uh and that's [78:41] called web assembly [78:42] and that's the successor to asm.js and [78:44] it's important that it have binary [78:45] syntax because [78:47] at the end of the day especially on [78:48] mobile if you're downloading javascript [78:50] even if you're using lz compression on [78:51] the wire that's cool but you've got to [78:52] blow it out into memory and then parse [78:54] the silly [78:55] eight character function keyword that i [78:57] picked [78:58] when i could have used something shorter [79:00] i picked it because of awk the [79:02] unix tool um so anyways i'm not [79:05] following i want to but i'm not [79:06] following [79:07] the awk thread is it surprising to you [79:11] that uh how damn fast javascript is [79:14] these days i mean like cause you've been [79:15] through the whole journey yeah i know [79:17] every [79:17] every step of the way but is it like i [79:19] mean it's [79:21] it feels incredible it does but i knew [79:23] so the funny thing is computer science [79:24] is this big [79:25] karmic wheel right wheel of fortuna um [79:29] and uh in the most in 97 [79:32] i was loaned by netscape to do due [79:35] diligence for [79:36] sun in their acquisition of anamorphic [79:39] which was [79:40] david unger uh come and and friends [79:43] people uh craig i'm forgetting his name [79:46] he went to microsoft [79:47] these stanford language buffs who'd [79:50] taken small talk [79:51] and then david created itself as a [79:53] simpler sort of [79:54] small talk language and made really fast [79:58] just in time compiling vms for them and [80:00] they [80:01] you know well ahead of java hotspot or [80:04] javascript v8 or any of these [80:06] modern vms figured out how to make [80:08] dynamic [80:09] code fast because small talk is a [80:12] dynamic language right it has classes [80:13] that has [80:14] i think more lockdown declarative syntax [80:16] than javascript but it's fundamentally [80:18] dynamic you don't declare the types [80:20] but you could in further types as the [80:23] program runs and you start to form these [80:25] ideas about what types are actually [80:27] flowing through key operations and you [80:29] form little [80:30] so-called polymorphic inline caches that [80:33] are optimized machine code [80:35] the cache is the machine code that [80:37] assumes it does a quick check to make [80:39] sure the type is right and if it's not [80:40] right it bails to the interpreter [80:42] if it is right you go pretty fast and [80:44] that short [80:45] test is a predicted branch so things are [80:47] things are pretty quick [80:48] all that amazing stuff i knew about the [80:50] 90s and i [80:52] i didn't have time to do it and [80:54] anamorphic got bought by [80:55] sun and they did hotspot and you needed [80:57] that even in java because at scale [81:00] java has some dynamic aspects due to [81:02] invoke [81:03] interface you can have basically [81:05] collections of java code where [81:07] you don't know at the time each each [81:10] module or package is compiled [81:12] exactly what's being called what what [81:14] subclass or what [81:15] implementation of an interface is being [81:17] called and so you want to optimize using [81:19] this sort of dynamic polymorphic caching [81:20] there too [81:21] and they did that and hotspot it's [81:22] amazing amazing beast i've met like 13 [81:25] people who all claim they created it [81:27] i think i think one of them may deserve [81:29] credit more than others [81:31] but uh i didn't get to do that in [81:33] javascript [81:34] and when we knew that that google uh was [81:37] going to do their own browser which we [81:38] knew at mozilla around 2006 [81:42] i also met the team that did v8 and it [81:45] turns out it was lars bach who was one [81:46] of the young engineers from anamorphic [81:49] got acquired by son and so lars is like [81:51] the one the world's expert on these [81:53] kinds of virtual machines [81:54] and he picked my brains about javascript [81:56] i could tell he didn't like it at the [81:57] time but [81:58] he had to do it and oh really [82:00] interesting yeah in 2006 lunch at [82:02] google's campus um and and [82:04] then i had another friend who was [82:06] deverell at chrome and he said yeah we [82:07] don't know what they're doing this is [82:08] getting 2007 to fall getting toward [82:10] 2008. [82:11] we're trying to get chrome out and we [82:13] don't know what's going with the v8 team [82:14] they're often all who's [82:15] denmark you know rewriting their engine [82:17] four times which is good that's the [82:19] right way to do this kind of development [82:21] you know they were learning javascript [82:23] including all its quirks which they came [82:24] to hate [82:25] the fire of a thousand suns which is one [82:27] of the reasons that lars and company did [82:29] dart [82:29] their own language but they also made [82:31] the language fast and [82:33] meanwhile we knew this was happening so [82:35] we got our act together with [82:37] trace monkey our tracing jet at mozilla [82:40] and apple i think was also aware so they [82:42] were doing their own [82:42] so the era of jitted fast javascript in [82:45] 2008 [82:46] had this pre-history going back to small [82:48] talk itself [82:49] and anamorphic and the again the lineage [82:52] is interesting because you had lars and [82:53] anamorphic and then he ends up at google [82:55] yeah and today we have an incredibly [82:58] fast [82:59] language that like you said still [83:02] you know without hate you can't have [83:04] love so uh i i [83:06] think there's both love and hate for [83:08] this dance [83:09] uh this rich complex dance of javascript [83:11] throughout his history there's a [83:13] dialectic of sure for sure [83:15] today javascript is the most popular [83:18] language in the world [83:20] why by many measures why do you think [83:23] that is [83:24] is it is there some fundamental ideas [83:28] that you've already spoke to a little [83:29] bit sort of broader that you think it's [83:31] the most popular language in the world [83:32] so i think i did you know by doing first [83:35] class functions [83:36] and taking the the good parts of the c [83:39] operator hierarchy and just keeping [83:42] things um [83:43] simple enough maybe it could have been [83:44] simpler but i had had to make it look [83:46] like java and interoperate with java [83:48] that there was uh you know inherent [83:52] goodness and aristotelian quality there [83:54] and people [83:54] perceive that even through all the [83:56] quirks and warts and then over time [83:58] working on it with the standards body [83:59] working on it [84:00] not only in it as a core language but in [84:03] the context of [84:04] html5 making the browser better [84:06] listening to developers [84:08] thinking about this is something that [84:09] nick thompson wrote nicely about [84:11] on hacker news i was very flattered he [84:12] said java was this thing where [84:14] the experts were writing the code and it [84:16] was compiling you had to declare all [84:17] your types and [84:18] some didn't really give a damn about you [84:20] know the [84:21] average programmer who wanted to build [84:22] real web apps dynamic things [84:24] and i was in there meanwhile doing you [84:27] know a bunch of people's jobs making [84:28] javascript [84:30] survive those early years when it was [84:32] kind of touch and go right [84:33] javascript was considered mickey mouse [84:35] language it was for annoyances like the [84:37] scrolling [84:38] text at the bottom of the browser in the [84:39] status bar but i [84:41] kept listening to developers working [84:42] with them and trying to make [84:44] the it run in that single threaded event [84:46] loop in a useful way and i think that [84:48] forged something that people have come [84:50] to love now you don't [84:51] always love you know the best thing [84:53] right i talked about [84:54] shakespeare sonnet about um [84:58] uh my mr size or nothing like the sun or [85:00] you know the scene from uh [85:02] josh whedon's film uh serenity at the [85:04] end where the [85:05] actual piece and the score by david [85:07] newman is called love where [85:09] uh captain mal is teaching uh river tam [85:12] about how to pilot the ship and she's a [85:14] super genius super soldier she knows how [85:15] to do it already [85:16] and he's he's basically talking about [85:18] how you have to love the ship because if [85:20] you don't it's going to kill you [85:21] and then the piece falls off the ship [85:23] it's kind of like javascript yeah i love [85:26] it yeah [85:26] they love it because now people say [85:29] we're stuck with it because it got this [85:30] priority in place but there's love [85:32] underpinning that and actually the [85:34] listening to developers [85:35] that's kind of beautiful there's uh most [85:38] successful products [85:39] in this world with all the messes with [85:42] all the flaws perhaps the flaws [85:43] themselves are actual features but [85:45] that's a whole other [85:46] that's a discussion about love but [85:48] underneath it there's something that [85:50] just [85:50] connects with people and it has to keep [85:52] connecting if javascript [85:54] kind of went off in this people [85:55] sometimes complain about es6 oh you put [85:57] classes in javascript i hate classes you [85:59] know you've ruined it [86:00] but it's it's not true it's a dynamic [86:01] language small talk had [86:03] classes um python has classes um [86:07] there are lots of lisp variants that [86:08] have classy systems um [86:11] comment list um so you know people [86:14] who don't reject it based on some sort [86:16] of [86:17] fashion judgment do use it and do [86:21] interact with the standards body the [86:23] standards body is competing browser [86:25] vendors mainly but also [86:26] now big companies that use javascript [86:28] heavily the pay pals and the [86:30] other such companies uh salesforce and [86:34] they have to cater to web developers [86:36] they have to hire [86:37] developers who know javascript they have [86:39] to keep [86:41] their engines up to the latest standard [86:42] and this creates all this sort of [86:44] social structure around javascript that [86:47] is unusual i mean [86:48] you get c plus plus buffs that follow [86:49] the inner workings of you know c [86:52] plus plus what is it now 21 something i [86:55] don't know i've lost track but it's it's [86:58] a more rarified group it's more like the [86:59] old language [87:00] you know gray hairs whereas javascript [87:03] is a younger and [87:04] more you know vibrant large crowd [87:07] there's a community feel to it [87:09] there's a echoes perhaps i don't want to [87:11] draw too many [87:13] similarities maybe you can comment on it [87:15] there's a [87:16] c plus is like wall street and the [87:19] javascript is like wall street bets [87:21] from the recent events it's like there's [87:23] a chaotic community of all [87:24] and there's some power from that [87:27] distributed [87:28] crowd of people it's more demotic it's [87:31] more of the people [87:32] uh it lets people in without requiring [87:35] these credentials i remember [87:36] in the late 90s into the 90s people were [87:38] all getting java credentials and i knew [87:40] people [87:40] um and friends knew people who became [87:43] jealous programmers and you knew they [87:44] really should have been like [87:45] nature guides or pilots they hated [87:47] programming but they thought [87:48] i got to make money i'm going to become [87:50] a java programmer do you have some uh [87:52] because it's such a monumental moment in [87:55] our current history [87:56] as a quick aside do you have thoughts [87:59] about this [88:00] huge distributed crowdsourced [88:03] financial happenings uh with wall street [88:05] bets [88:06] that's like nobody could have well you [88:08] could have predicted but the scale and [88:10] the impact [88:11] of this kind of emergent behavior from [88:13] independent parties that could happen [88:15] like i said my own um [88:17] experience with the dismal science as [88:19] with physics led me to reject a lot of [88:21] bad models and [88:22] you know economics was always [88:24] compromised by politics [88:26] political economy um you could also [88:28] argue that it was it used to be a branch [88:30] of moral philosophy so it was concerned [88:31] with the good and [88:32] it became divorced and became sort of in [88:34] this quasi-newtonian way just about [88:37] everything's just running by itself [88:39] don't worry about it you know this is [88:40] not least crushing your netscape company [88:41] but that's just [88:42] nature and economics couldn't or doesn't [88:45] really have good models for [88:46] the wall street bets subreddit you know [88:49] they [88:50] they know how to uh squeeze a short [88:52] right so um [88:53] the amazing thing is you have robinhood [88:56] app which was again [88:58] supposedly for the demos for the people [89:00] yeah and [89:01] eliminated the fee through various kinds [89:03] of [89:04] um you know straddles or some kind of [89:07] spread operation that helped them [89:09] eliminate the fee and or eat the fee [89:11] and in fact you know as a broker in [89:13] these days because it takes two days to [89:15] settle there's counterparty risk as they [89:17] found out [89:18] and um so the wall street bets [89:21] uh people you know the the memes are [89:24] like the terminator robot with [89:26] six hundred dollar stemi check and the [89:29] hedge funds the the anime [89:30] little girl hiding under the desk um [89:34] there there is a problem which i talked [89:35] about in the recent podcast which [89:37] i'm conscious of from the history of the [89:38] web and that is you could say it's [89:40] monopoly which [89:41] antitrust wasn't enforced after using [89:43] microsoft for a long time [89:45] and um a lot of this was due to the [89:47] money interest spying [89:48] control of politicians and you know [89:52] in plato's five regimes that's oligarchy [89:54] that's that's [89:55] that's where we are and now we're seeing [89:57] the fight against the old arcs i don't [89:58] know if it'll work but you're definitely [90:00] seeing it [90:00] and it's also kind of hackerish right [90:02] it's got a hacker ethos [90:03] you know hey robin hood no fees oh [90:05] interesting hey you know um [90:07] i could buy a fraction of a share in [90:09] this thing or i can keep buying with my [90:11] stimulus check [90:12] so uh i mentioned hegel seeing napoleon [90:15] on the horse [90:16] right hegel also talked about the the [90:18] cunning of reason that you have [90:20] the sort of you know god sees history in [90:22] full and if you believe in god or you [90:24] know [90:24] we don't know the future but there's [90:26] always this sort of fly in the ointment [90:28] this [90:28] uh unintended consequence uh that [90:31] confounds the best [90:32] um plans of the powers that be and we're [90:35] living through it that's [90:36] i'm glad it's not you know street [90:39] warfare or [90:39] or mechanized warfare because it has [90:42] been in the past um [90:44] uh it's it's more like soft power yes [90:47] and uh people are fighting back do you [90:50] think it's possible so the javascript [90:53] used to be uh for the front end of the [90:56] web [90:57] it's now increasingly so being used for [91:00] back end like running stuff that's [91:04] like behind the scenes and it's also [91:07] starting to be used uh quite a bit for [91:10] things like tensorflow.js [91:12] so starting to actually use like these [91:14] heavy duty applications that are using [91:16] neural networks machine learning and so [91:17] on in the browser [91:19] is it possible in 10 20 30 years [91:24] that basically most of the world runs on [91:26] javascript [91:28] this is a dystopian a nightmare to some [91:30] people [91:31] um when i when we did ask them jason web [91:34] assembly i would joke and meme people [91:35] with scenes like [91:37] neo waking up in his pod in the matrix [91:39] and he's all skinny and [91:40] weak and hairless um and you know [91:44] you realize in the future that you're [91:46] living in some simulation and it's all [91:48] running on javascript and you just [91:49] scream forever [91:50] um it's possible gary bernhard uh [91:53] does these funny talks he did wat js and [91:55] then he did this [91:57] uh the life and death of javascript i [91:58] think it's called where he [92:00] he took some clever ideas that actually [92:02] have a a thread of [92:04] uh credibility to them but i mentioned [92:06] software [92:07] fault isolation in the old days when we [92:09] were using computers we [92:10] we said we're going to use the unix you [92:12] know monolithic monitor and it's the [92:14] privilege program [92:15] this is before you even had hardware [92:17] rings of protection those some of the [92:18] early 60s operating systems used [92:20] hardware [92:21] protection zones but unix is privileged [92:24] and the [92:25] program that runs user code in a process [92:27] is [92:29] is hosted it's the guest in the host and [92:31] and you get to [92:32] suspend it you get to kill it if it [92:35] crashes it doesn't take down the whole [92:36] os it's a wonderful idea [92:39] but the call into the kernel is [92:42] expensive the system calls so-called and [92:43] this has even been optimized now for [92:45] things like getting the time of day so [92:46] it doesn't actually [92:47] enter the kernel and meanwhile [92:51] hardware architectures and [92:52] virtualization techniques have gone in a [92:54] different direction [92:55] even to the point where you can do [92:56] software fault isolation very cheaply [92:58] without entering the operating system [93:00] kernels you get unicorns and exokernels [93:02] and [93:03] very lightweight vms and so gary took [93:05] this idea and said [93:07] javascript will take over computing [93:09] because the system call boundaries too [93:11] expensive so everything ends up in [93:12] javascript with these lighter weight [93:14] isolation enforcement mechanisms it's [93:17] not totally beyond belief [93:18] yeah um webassembly too [93:22] it's nice to ask you sort of for advice [93:24] to uh [93:25] there's so many people that are [93:26] interested in starting to learning about [93:28] programming getting into this world [93:31] is there um some number of languages [93:34] three to five programming languages that [93:36] you would recommend people learn [93:38] or maybe uh a broader [93:41] advice on how to get started in [93:42] programming well so you asked about [93:44] machine learning and you know javascript [93:46] is a general purpose language and it's a [93:49] language that's not um [93:52] not that great for doing you know matrix [93:54] operations [93:56] or doing parallel programming i would [93:58] say [93:59] without using some extensions or some [94:01] libraries that have some magic in them [94:03] so if someone wanted to you know learn [94:06] um of the there are amazing languages in [94:09] sort of the apl family that are very [94:11] useful for [94:12] i would say linear algebra which gets to [94:14] a lot of the kernels in machine learning [94:16] and so apl had like j and then k [94:20] and their k variants because the guy [94:22] that did k is still [94:24] going and he's they're proprietary but [94:26] he's still innovating there [94:27] um there are you know python is used so [94:30] people talk about [94:31] vlog js well it's not that's surprising [94:33] because python was heavily used for [94:35] machine learning and python was always [94:38] you know they didn't have this fast [94:39] just-in-time compiler [94:40] tradition there were some projects that [94:42] tried this and some of them were [94:43] interesting um [94:45] pi pi was interesting but um [94:48] the philosophy with python was oh you [94:50] need to go faster write a c plug-in and [94:52] drop into c code so i think people [94:55] should look [94:55] at multiple languages because they're [94:58] different tools in the belt if you're [95:00] trying to do supervision or rapid [95:02] prototyping you want a dynamic language [95:03] you want to throw things together and [95:05] see what works if you're trying to go [95:07] down to the metal very fast well [95:09] i'm an old sea hacker but i was also the [95:11] sponsor executive sponsor of rust at [95:13] mozilla and rust has now escaped [95:15] you know from that sort of nest where it [95:18] was born to be [95:19] adopted by a bunch of companies that [95:21] have a foundation in the works [95:23] some of the key core team members are [95:24] working now at amazon [95:26] and other places so it looks like rust [95:28] has reached escape velocity and rust is [95:30] an interesting language because [95:32] one of our goals there one of the [95:33] reasons i sponsored it was we were all [95:34] tired of seeing those [95:36] remote code execution vulnerabilities [95:38] due to cnc plus plus [95:40] and we thought can we have a sort of [95:42] safety property through [95:44] a type and effect system or an ownership [95:46] system and rust has that [95:48] and that ownership system is interesting [95:49] because it doesn't just give you memory [95:51] safety [95:51] there's a sort of theorem for free a [95:53] dual that falls out for [95:55] protection against data races so rust is [95:57] better for [95:58] low-level programming you limit your [96:00] unsafe code where you do have to be [96:01] unsafe [96:02] and you can prove certain facts about [96:04] memory safety and race [96:06] condition uh avoidance and so [96:09] i think people should learn these new [96:10] languages i think go is [96:12] a great language i admire you know the [96:14] eunuchs uh [96:15] people who did that ken still was [96:17] involved rob pike of course [96:18] um dave uh what's his name and other [96:22] people um [96:23] go is a huge success um really on the [96:26] server side anywhere you have [96:27] um you know a lot of networking to do [96:30] and it's garbage collected [96:32] but it's also very pragmatic it has that [96:34] sort of c flavor as an overseas hacker i [96:36] can't get used to the fact that they [96:37] swapped the [96:38] type and declarator in the declaration [96:40] order [96:41] i haven't used rust but this is one of [96:43] the most respected and loved languages [96:45] currently so it's [96:46] yes and it's still young you look at [96:47] these things javascript is now [96:48] considered old [96:50] that's gone through so many versions [96:52] that you can fall in love with it all [96:54] over again [96:54] 25 plus years you know it's it's it's an [96:57] adult [96:58] uh should be out of the house but um it [97:01] could be around another 25 years [97:03] cannot rule it out so rest will be [97:05] around for a long time the longer you're [97:06] around the more likely you're [97:08] lindy and you're around a lot of people [97:10] ask me like uh [97:12] i i'm i'm often torn between [97:14] recommending either python or javascript [97:16] is the first language to play with [97:18] because [97:19] i mean it's difficult because it's so [97:21] easy to do [97:23] javascript incorrectly it's much [97:26] uh it's much easier to do it correctly [97:28] these days [97:29] or like well like learn about [97:30] programming but the the cool thing about [97:32] javascript is that you can create stuff [97:36] that will put a smile on your face like [97:38] as a as a developer [97:40] you can create stuff and it'll visually [97:42] look like something and it'll do stuff [97:44] and it makes you feel good it makes you [97:45] fall in love with programming [97:47] with python you could do the same it's a [97:48] little slower and with c plus it takes [97:50] five to ten years to write a program [97:52] that actually does something [97:53] yeah so like there's that tension [97:56] between [97:56] is javascript the right first step or is [97:58] it python and [98:00] i've been going back and forth on those [98:01] two i had my python right it came from [98:03] a lineage of abc which was a pedagogical [98:06] language [98:07] in in the netherlands um and um [98:11] it uh you know um it [98:14] it it was a good teaching language too i [98:16] think it is a good teaching language and [98:18] it's a little more restrictive in [98:19] that if you misspell something in a way [98:22] that [98:22] javascript might let run let reach [98:25] runtime it'll [98:26] get stopped at a syntax check [98:29] in python that's good for beginners i [98:31] think the the sloppiness that some [98:33] people object to [98:34] like people were just tweeting at me uh [98:37] having just learned javascript they said [98:39] i can take a number and i can index into [98:40] it and get undefined out of it as a [98:42] property and [98:43] why is that a number is not an object [98:44] and i explained why it is because like [98:46] in java [98:47] the primitive types which unfortunately [98:48] are not objects can be automatically [98:51] boxed or wrapped by an object and i made [98:53] that implicit [98:55] in in java it's it's typed and you have [98:57] to declare things and you'll get [98:58] type errors um but there are cases in [99:01] java where you get auto boxing or auto [99:03] wrapping because you've declared that [99:04] you want it [99:05] in javascript it just happens and so [99:08] once i explain it like oh wow i get it [99:10] but it also means that you can commit a [99:12] blunder that right just [99:13] you don't get punished for you don't [99:14] detect and there's an undefined value [99:16] and you don't know where it came from [99:17] right i've been reading a lot about [99:20] military history recently [99:23] and one way to paint the the picture of [99:25] browsers [99:26] internet browsers is through the various [99:28] wars throughout its history [99:30] i don't know if that's a useful way to [99:31] look at it but we've already talked a [99:33] little bit about netscape and [99:34] internet explorer uh in the early days [99:38] can you tell the story of the different [99:40] wars if that's at all an interesting way [99:42] to look at it [99:43] of the 90s and to today yeah [99:46] so i mentioned that microsoft you know [99:48] which was convicted for it [99:50] did abuse its monopoly but they had a [99:52] pretty good team by the time they did [99:53] ie4 [99:55] and netscape unfortunately i was like [99:57] second floor and i was friends with all [99:58] the first floor people [99:59] the front end guys who did the [100:00] javascript event hookup and things like [100:03] that [100:04] that that team was fairly burnt out and [100:08] i think having gone public uh the man [100:11] upper management wanted to buy a bunch [100:12] of companies to try to go head-to-head [100:14] with microsoft [100:15] it didn't work but buying a bunch of [100:17] companies usually [100:18] doesn't work i think the modern sort of [100:21] approach it [100:22] roughly is like mark zuckerberg uh took [100:25] which is to keep them at arm's length [100:26] and let them do their thing [100:28] and now that he's pulling whatsapp in [100:29] and people are fleeing it [100:31] because it's tied into the ad [100:32] surveillance but um [100:35] you know for a while they're keeping it [100:36] separate really does work because you [100:38] bought it for its value it's [100:39] complementary and you're not messing [100:40] with it [100:41] with netscape when they bought a bunch [100:42] of companies they had [100:44] some of the first four people or the [100:45] founders burned out they had [100:47] um newcomers who wanted their turn to do [100:50] the browser [100:51] and they hadn't really done browsers or [100:53] understood them and so netscape 4 was [100:55] originally supposed to be 3 [100:57] and it was so late they renumbered it [100:58] when we did a 3 release [101:00] jamie and a few others put some extra [101:01] effort into secure mime was supported in [101:04] the mail [101:05] built-in mail program and sk4 [101:09] was late and it was only on windows at [101:11] first and microsoft had really started [101:13] doing better [101:14] like they do they copy and the first [101:16] version is trash and the second one [101:17] you're starting to feel all threatened [101:18] the third one [101:20] you can tell what's going to happen and [101:21] the fourth one's good and plus there's [101:22] the benefit like you said that it comes [101:24] as a default browser yes and and yet [101:27] netscape screwing it up and [101:29] microsoft really putting some quality [101:31] people on it [101:32] ie4 was good on windows it was good and [101:34] they did the dynamic html innovations [101:36] they uh scott isaacs my old buddy a [101:39] former [101:40] accountant who programmed in basic and [101:43] became [101:43] what microsoft calls a program manager [101:45] which is kind of an elevated position [101:46] it's [101:47] um you can be a programmer or an [101:49] engineer track but you switch to it and [101:51] you sort of [101:52] lead a lot of design and standards [101:53] efforts and so scott isaac put in a lot [101:56] of those [101:57] funky dhtml apis that didn't quite have [102:00] the same flavor as the stuff that i did [102:02] and neither of them was like the later [102:04] sort of verbose java like [102:05] dom w3c standardized but ie4 was pretty [102:09] darn good we [102:10] i remember a friend scott fuhrman and i [102:12] got invited by scott isaacs ii [102:14] uh gordon bierisch in san jose they were [102:16] doing a [102:17] preview of ie4 this must been 1997. [102:21] and scott said yeah we've got here's the [102:24] new graphics stuff we're doing we've got [102:25] something like your netscape layers [102:27] um we've got vml a vector markup [102:30] language [102:31] you know we can do like virtual reality [102:33] and scott and i looked to each other and [102:34] said we're doomed [102:36] right microsoft was starting to fire on [102:38] all cylinders so i have to give them [102:39] credit for that [102:40] even though they abused their market [102:41] power and maybe you know i shouldn't [102:43] give them credit for having the [102:44] resources to hire talented people but [102:46] they did [102:46] a credible job on ie4 what really was [102:49] bad was [102:50] that phase of the browser wars ended [102:52] with monopoly and [102:54] perhaps due to the antitrust case [102:56] perhaps due to regulation in europe [102:58] um perhaps just due to microsoft not [103:00] liking dealing with standardization [103:03] they they let it rot they just abandoned [103:06] it i [103:06] five five five um i6 [103:10] later but these were not well maintained [103:12] they had a lot of security bugs [103:14] and files really closed and outdated too [103:16] even though it's getting updated [103:18] it's just weird browsers like in mozilla [103:20] and then firefox were adding tabs [103:22] opera had a version of tabs and uh they [103:25] didn't add tabs and they [103:26] pop-up blocking something i should have [103:28] done from the start people realized that [103:29] you can tell when the user clicks [103:30] something [103:31] and it goes in javascript to open a [103:32] little window that [103:34] you can sort of inspect the stack and [103:36] see that the click originated that [103:38] and it's probably okay whereas if you're [103:39] just loading a script and it [103:41] opens a new window that's a spam [103:43] technique and you should block it [103:45] tabs were brilliant innovation like you [103:47] said opera had it but like i remember [103:49] i fully switched to firefox the moment [103:52] it was i [103:52] i remember like the moments of first [103:55] using tabs in firefox [103:57] and like not liking it like for the [103:59] first few minutes [104:00] and then like wait a minute you get the [104:02] groove yeah you get the groove and you [104:04] understand [104:05] so that timing what year was this uh so [104:08] because uh [104:09] also as a aspiring web designer i [104:12] used table so we didn't mention layout [104:14] or css much [104:16] there's also a change in the way like [104:18] the frames were going away [104:20] yeah so there's a change in the way [104:22] websites looked and behaved [104:24] and all that kind of stuff css finally [104:26] which microsoft embraced with ie4 and [104:28] netscape never really did right [104:30] css became a better standard over time [104:33] for doing table layout that [104:35] relieved you of the need to use what are [104:37] called spacer gifs [104:39] spacer gifs right images yeah you would [104:41] throw into space out tables [104:43] um you know the the typographic [104:46] power of the web has gotten better but [104:47] it's still not on the level of pdf [104:49] and you can't do advanced typography but [104:51] um it's gotten really better and even [104:53] then tables were getting better [104:54] if you were using firefox that would [104:56] have been 2004 because it was called [104:57] firebird until [104:59] earlier that year five no yeah i think [105:00] uh it wasn't three [105:02] i don't remember it was a fiber which [105:04] had tabs [105:05] uh we had tabs the whole way so yeah [105:08] mozilla slash browser [105:09] in 2002 became phoenix there's a bios [105:13] that has an embedded version of ie and [105:14] they said we're called phoenix [105:15] technologies you can't use phoenix [105:17] and so we said okay we'll call it [105:18] firebird and then this [105:19] australian-centered [105:21] open source database project started [105:23] really like [105:24] in the true mad max style just screaming [105:26] at us saying you can't use firebird and [105:28] i had to sort of be the ambassador and [105:30] say okay we're going to rename and like [105:31] we don't believe you shouldn't use that [105:32] we hate you [105:33] and then we renamed it to firefox and [105:36] they're like ah [105:36] we love you and then i don't haven't [105:38] heard of them ever since [105:40] but firefox was a clever name we had to [105:42] think of something distinctive we wanted [105:43] to keep the fire going [105:45] and it turns out there's a red panda [105:47] right it's a nickname for [105:49] so so that's the second set of problems [105:51] second browser so [105:52] how did you how was firefox [105:56] born how's mozilla born is there a [105:59] there's a long story there too so [106:01] netscape got acquired by aol which as [106:03] i say was a reasonable happy ending for [106:05] a lot of people because netscape [106:07] otherwise was going to go out of [106:08] business because microsoft was just [106:09] killing its market there was no way to [106:11] charge for a browser windows came with [106:13] ie [106:14] ia4 was pretty good and netscape 4 [106:16] wasn't that good it took a while to get [106:18] better [106:20] but the netgame executive said let's do [106:23] an open source [106:23] escape pod you know and like in star [106:26] wars a new hope the [106:27] gunner won't shoot it because there's no [106:28] life forms on board right it's not a [106:30] threat [106:31] uh and so we did mozilla in 1998 and it [106:34] looked [106:35] like it was going to you know initially [106:37] just give the world of open source [106:39] browser [106:40] but it's really hard to get people to [106:41] work on this sort of hairball that had [106:43] been hacked up over [106:44] by that point four years uh it also [106:47] couldn't have the crypto module for [106:49] secure sockets [106:50] so called or now transport layer [106:52] security that was an electronic munition [106:54] we're not allowed to release that [106:56] in the full 1024-bit [106:59] key strength and yet [107:02] people one of whom i happened to meet [107:04] previously at sgi when i went on a sales [107:06] support [107:07] engineering trip tim hudson in brisbane [107:10] australia [107:11] and um eric a young [107:14] did what became open ssl it was called [107:16] ssl ea y [107:17] after eric's initials and tim and eric [107:21] took their open ssl outside of the [107:24] purview of the nsa and the [107:26] department of commerce and they stuck it [107:27] into mozilla's code and that was perhaps [107:29] the best hack that was done [107:30] in the first few months after we open [107:32] sourced the browser [107:34] we had other problems the politics [107:35] inside netscape were driven by these [107:37] acquisitions so the one acquisition that [107:39] kind of [107:40] messed up netscape 4 also wanted to keep [107:42] doing a proprietary mail [107:44] and groupware program not jamie [107:47] zielinski's mail program that was [107:48] netscape 2 and 3 and they held it back [107:50] from open source [107:51] we didn't have a mail program it was [107:52] just a browser we [107:55] didn't know what aol will do to us turns [107:56] out they didn't interfere with us for a [107:58] long time [107:59] but netscape wasn't the best steward of [108:02] mozilla we were operating mozilla [108:04] as a pirate ship without a legal entity [108:06] so [108:07] most of us worked for netscape under a [108:09] separate organization [108:10] and um initially uh [108:14] the first engineering manager tom paquin [108:16] of netscape was the mozilla founding [108:18] manager [108:19] but he he left pretty quickly and he [108:20] left me as the acting manager [108:22] which is more like method acting in my [108:24] case [108:26] and i i did that was my first management [108:28] stint but then [108:29] um someone who'd written the licenses [108:32] mitchell baker she was a lawyer in [108:33] netscape she was involved in the open [108:35] source [108:36] license decision making and the actual [108:38] writing and construction of those [108:39] licenses that was mitchell's job [108:41] netscape public license and the truly [108:43] open mozilla public license [108:45] and there were two because netscape [108:46] needed because of some uncovered code [108:48] needed some special rights but that went [108:49] away over time [108:51] mitchell was almost interested in [108:52] mozilla and she came back from maternity [108:53] leave and she said [108:54] i'll be the manager if you want and [108:56] jamie and i said sure and then jamie [108:58] quit he quit after a year he said [109:00] this didn't work i'm sorry you know he [109:02] acted like it was a total failure [109:04] because mozilla didn't [109:06] restart the browser market but there's [109:08] no way it could have right netscape was [109:09] still [109:11] shipping variants of netscape 4 which [109:13] was based on the old code [109:15] mozilla was trying to react to the code [109:18] to make green field for developers so it [109:19] was one of my big goals it wasn't a [109:21] technical goal so much as [109:22] again a social goal people wanted a more [109:24] standard space browser they wanted a [109:27] less of a hairball that had been hacked [109:28] on [109:29] by ex-grad students starting four years [109:31] prior so [109:32] we said we're going to make a modular [109:34] code base we're going to use a variant [109:36] or an open source version of microsoft's [109:38] component object model [109:39] as reference counting and standardized v [109:42] tables virtual [109:43] calls and c plus and we're going to use [109:46] javascript we're going to have a bridge [109:48] between those two so you can script [109:49] those components just like java [109:50] components [109:52] we're going to make a portable front end [109:54] with a markup language for the user [109:56] user interface not tables not html but [109:58] custom you know menus [110:00] and drop downs and toolbars and and that [110:03] was called [110:03] zuul xml user interface language and [110:06] some real talent on an escape site [110:07] delivered that dave hyatt [110:09] who was instrumental in zul chris [110:11] waterson [110:12] joe hewitt blake ross and [110:16] blake was an intern he was like a high [110:18] school-aged intern in that [110:20] and at some point we were innovating [110:23] rapidly in the mozilla world [110:25] and netscape was still caught up in this [110:27] management mess from these acquisitions [110:29] and it wasn't delivering and [110:30] every year they were wondering if aol [110:32] was going to come and start beheading [110:33] the executive because it didn't do [110:34] anything useful [110:35] and there was a thought you should take [110:37] the netscape browser engine and put it [110:39] in the windows aol client which was the [110:41] dial-up client that all the [110:42] increasingly aging users of aol were [110:44] using never happened it would have been [110:47] too big a change so it wasn't clear why [110:48] it all bought netscape but as i said [110:50] they left it alone but netscape didn't [110:51] leave mozilla alone [110:53] and so um in 2001 [110:57] mitchell called me up and said i'm no [110:58] longer employed and i'm saying what you [111:00] quit [111:00] no no this wasn't my choice and there [111:02] was a layoff [111:03] which maybe accidentally or on purpose [111:05] got rid of mitchell but the funny thing [111:07] was we had an open source project we had [111:08] a lot of the engineers on staff [111:10] on our side and we had um people we'd [111:13] hired for the mosul community [111:15] were top-notch they'd risen you know [111:17] they came in high quality they knew the [111:18] code and they actually were [111:20] better than the average or median higher [111:22] of netscape [111:23] and so the funny thing was the [111:26] executive who thought they'd gotten rid [111:28] of mitchell in the layoff [111:29] on the next week's community call around [111:32] mozilla and what to do [111:33] there's mitchell and so this show you [111:35] can kind of transcend your [111:37] uh you know boundaries of corporate open [111:39] source if you get a project that has [111:41] enough [111:42] loyalty even among the paid staff [111:43] because we had outside people [111:44] contributing [111:45] with people at red hat and a few other [111:47] places but the majority of the hackers [111:49] were employed by netscape [111:50] but a lot of them at that point had had [111:52] come from the community and others got [111:54] the community and wanted to work with it [111:55] it was really the weakest engineers at [111:57] netscape who didn't like mozilla and [111:59] didn't like the the crucible of [112:01] competing with the the better [112:02] uh the programmers so if the project is [112:04] good enough it will rise the phoenix [112:06] will rise out of the [112:08] that's exactly right and so we had this [112:09] this mozilla code base that was getting [112:11] better in fact [112:12] i think at some point in 2002 when we [112:13] declared mozilla 1-0 we i [112:16] engineered a road map that successively [112:18] through similar sort of six-week [112:20] five-week releases [112:21] like we all do with browser releases [112:22] nowadays chrome does and firefox [112:25] um braved us three weeks we we we got to [112:28] a point where we said you know what [112:29] it doesn't suck this is like the 1-0 [112:31] that you want [112:32] to release because if you hold it back [112:34] any longer to polish it you're denying [112:35] others the ability to use it so like pro [112:37] engineer the mechanical cad tool [112:39] embedded the code they embedded the [112:41] layout engine [112:43] and mozilla 1 0 was like a netscape [112:46] communication suite we at that point [112:47] gotten male people to reintegrate mail [112:50] and news and we had [112:51] an editor for html and it felt like a [112:54] 90s [112:55] suite sweetware and it felt kind of [112:58] bloated and the people [112:59] who were taking that mozilla open source [113:02] and then adding netscape [113:03] flavor to it were not calling the shots [113:06] right and they were also under al's [113:07] thumb a little bit and that they said [113:09] we should probably put the aol instant [113:11] messenger chiclet on the toolbar we [113:13] should put the icq [113:14] the other messages that aol acquired we [113:17] should put the icq [113:18] you know button on the toolbar and [113:19] pretty soon netscape looked like a [113:21] bit of a nascar badged version of [113:24] mozilla [113:24] and that also made mozilla more popular [113:27] and and yet [113:28] um they they had you know contrived to [113:32] um fire or lay off the leader and [113:35] and and we carried on with an open [113:37] source structure where muslim [113:39] was still you know mitchell was calling [113:40] sort of management or [113:42] project level shots and i was calling [113:44] technical shots [113:46] and we we had a popular suite but we [113:50] thought [113:51] why not make it just a browser because [113:53] it'll be simpler it'll do one job well [113:55] and even then we can strip it down by [113:57] having extensions [113:58] so dave hyatt and blake ross the high [114:02] school-aged intern [114:03] did the first version which was called [114:05] mozilla slash browser it was very [114:07] the small group of us ian hicks and asa [114:09] dotzler me and uh [114:11] joe hewitt and hyatt and blake and and [114:14] they [114:14] and hyatt was really the senior hacker [114:16] he'd done all these things like amazing [114:18] uh cross-platform menus through the user [114:21] interface markup language [114:23] and he knew how to do tab browsing he [114:24] implemented it natively on [114:26] mac os at the time in camino [114:29] um originally called chimera he he'd [114:32] written [114:33] multiple implementations which was i [114:35] think programmers should do it's like [114:36] the va team did for those missing years [114:38] when the rest of the chrome team's like [114:39] where's v8 [114:40] um in fact dave's wife rebecca told me a [114:44] story about when they were [114:45] at uiuc they were also universal [114:46] illinois uh grad students [114:49] there was an assignment it was a [114:50] programming assignment supposed to do [114:51] the end of the semester [114:53] and dave's friend was this i'm going to [114:56] go [114:56] think and i'm going to design and i'm [114:58] going to make this you know platonic [115:00] perfect form of the program and then i'm [115:01] going to write it at the end when it's [115:02] due [115:03] and hyatt just went there and started [115:04] hacking you wrote one version you wrote [115:06] a second version a third version [115:07] the end of the semester comes around the [115:09] friend's not doing too well [115:11] it wasn't perfect and it wasn't written [115:12] i'm not sure how that story ended but [115:14] for him but [115:15] dave's version was the fifth iteration [115:17] was great and [115:18] so he done that with everything you need [115:20] in a tabbed browser and this really [115:22] showed well in phoenix what we called [115:24] phoenix and had to rename [115:26] two more times and you know [115:29] blake went to stanford he became a [115:31] stanford student and couldn't work on it [115:33] um dave hyatt went to apple in 2001 he [115:36] was one of the founding [115:37] safari team members um interesting wow [115:40] but he was [115:40] still here vlogging about tabbed [115:42] browsing i think apple at some point [115:44] said yes [115:44] sorry already have to have browsing yeah [115:46] but it was because of hyatt yeah [115:48] i was quite a feather in their cap don [115:49] melton at uh who had been the [115:51] engineering manager at [115:53] for safari from the beginning uh had [115:55] been in netscape also [115:56] and so this is diaspora of talent and [115:59] and yet [115:59] hyatt was still kind of writing blog [116:01] posts about how to do tabs right [116:03] and at some point apple said don't don't [116:04] blog about that that's our proprietary [116:06] tab technology you know it's like no [116:08] it's not it was an opera and i've [116:09] refined it [116:10] um so we had to replace people and we [116:12] had ben goodyear [116:16] new zealander we hired at netscape and [116:18] he stepped in to be the [116:19] firefox lead and we also had this weird [116:22] circumstance where [116:24] aol finally did notice that netscape was [116:26] kind of a [116:27] albatross they bought it for no [116:29] particular benefit [116:30] and even then the aol politics were also [116:33] heinous sort of [116:34] east coast politics i remember taking [116:36] two trips there because i was a [116:36] principal engineer and so us principal [116:38] engineers got trotted out to do [116:40] dog and pony shows in dulles virginia [116:42] and the uh [116:43] the aol upper management was very east [116:45] coast in flavor and they were at that [116:47] time [116:47] merging with time warner which would not [116:49] go well so one of these years we went [116:51] out there and we were all doing dog and [116:52] pony shows and there were [116:54] these characters that were sort of like [116:55] marketing guys one of the most wearing a [116:57] cravat and they were [116:58] one was named reggie and they were they [117:00] were they were [117:01] very um you rather than non-you or they [117:06] were like what's what stoneman's [117:07] metropolitan film uhb [117:09] um urban [117:13] um they were uh they were um [117:16] funny and they were kind of useless and [117:19] kind of preppy [117:20] and then the next year we went back and [117:21] i said where's reggie and it's like oh [117:22] richie's not here anymore [117:24] because time warner realized that the [117:25] merger wasn't in their interest either [117:27] and then [117:27] the sort of knives came out and this was [117:30] these mergers really work right this is [117:31] very difficult you get these giant [117:33] companies and they think there's going [117:34] to be synergy that was the 90s late 90s [117:36] watchword and there wasn't synergy with [117:38] aol by netscape and there wasn't synergy [117:40] with time warner [117:41] but did aol ever really work was it ever [117:43] really cool like [117:44] the same kind of fire and excitement [117:46] that uh firefox eventually created [117:48] was that ever there in aol aol was [117:52] the right time to do a dial-up service [117:54] that got distribution by basically [117:56] leaflet bombing compact disks right on [117:59] the country [118:00] and they beat out compuserve and the [118:03] other ones [118:04] prodigy and then the web happened and so [118:07] you had [118:08] almost like this um isolated continent [118:10] like [118:11] some of the evolutionary biologists i [118:13] follow make fun of the [118:15] the funny large mammal you know [118:17] marsupial mammals of australia how [118:20] how silly they are and so aol is like [118:22] australia [118:23] and you saw it over time because they [118:25] kept aging and they were using aol to [118:27] get online and [118:28] they couldn't really use a web browser [118:30] and it became sort of a [118:32] a valued cohort because they're still [118:34] have relatively high socioeconomic [118:35] status and they have grandchildren but [118:37] it's going away it's dying at some point [118:39] towards the end of the arts [118:41] that decade and then to the decade [118:44] 2010 plus that firefox became [118:47] it's incredible i forget when chrome [118:49] came out but 2008 september 2008 but [118:51] firefox was the sexy cool [118:54] thing that represented a lot of the [118:56] cutting-edge technologies and all that [118:57] kind of stuff [118:59] it was amazing tim o'reilly and john [119:01] patel did the first web 2 [119:02] conference which eventually became huge [119:04] and they split it but that was in 2004 [119:06] right when firefox was out craigslist [119:09] was it was huge it was killing [119:10] classified revenue for newspapers but [119:12] um there was just this ferment people [119:14] starting wikipedia along there somewhere [119:16] gmail was already done [119:17] and it was an impressive webmail there [119:19] were others before like hotmail but [119:21] gmail was really impressive from google [119:22] and google maps people started seeing [119:25] what could be done [119:25] they thought how can you drag the map [119:27] around and you know how does that work [119:29] and it was all javascript and images and [119:31] and [119:31] um so gmail was 2003 for so yeah [119:34] it actually started quite early it might [119:36] have been 2002 or three but by the time [119:38] we started dealing with google and [119:39] firefox to get the search deal which [119:41] was the main revenue source for mozilla [119:43] and still is um [119:45] 2004 early sergey brin's one of his [119:48] trusted engineer guys fred schneider [119:50] made contact with me at mozilla and [119:52] we started talking and we realized [119:54] search and [119:55] browser need each other and this is [119:57] deeply true right this is still true [119:59] this is why a lot of the search engines [120:01] have their own browsers yeah so in case [120:02] people don't know the the main revenue [120:04] source for the browser [120:05] is the default search engine which is [120:07] kind of incredible to think about [120:09] that the that is a revenue source it's a [120:11] little bit sad [120:12] yeah it leads to this capture or kill [120:14] effect where you have the search engine [120:16] on its own browser and [120:17] other browsers may struggle to just get [120:20] this distribution we talked about [120:21] earlier yeah [120:22] so where and you said uh you've [120:26] figured out that uh google is working on [120:28] its own browser at some point [120:29] 2006 yeah 2006. so would you say firefox [120:32] versus [120:33] was internet explorer part of the war [120:34] here or was the firefox versus chrome [120:37] so firefox didn't quite cause microsoft [120:39] to reconvene [120:40] i.e they did do ie7 and i remember being [120:43] on a plane [120:44] back from the standards meeting [120:46] javascript standards meeting from [120:47] seattle from redmond and there was some [120:50] microsoft [120:51] guy in front of me it turns out my wife [120:53] knew him from her [120:54] past life before we married and he was [120:56] just this bearded big guy and he was [120:58] like [120:58] we should have just killed firefox in [121:00] the cradle all we needed to do was add [121:02] pop-up blocking in [121:03] tabs and we could have made it [121:04] interesting kill firefox and it's like [121:06] shoulda coulda woulda pal and i was [121:07] right behind him hearing this [121:09] um but they didn't they were slow and [121:11] they ie7 wasn't that great [121:13] and what really got them started i think [121:16] was [121:16] um chrome and you know i talked to larry [121:20] page in 2005 i think i said [121:22] you know we're talking about the firefox [121:23] relationship but he was also saying what [121:25] about webkit this was [121:26] apple's version of the old khtml [121:30] engine from from linux the kde side of [121:32] linux [121:34] that was used in the conqueror browser [121:35] also with kays that [121:37] apple had forked and and in 2005 was [121:40] when [121:40] apple's principals including dave hyatt [121:42] matches takovic some of my friends were [121:43] still there said [121:45] we must stop patch bombing this poor kd [121:47] html project we should make a proper [121:49] mozilla-like organization webkit.org now [121:51] it wasn't a separate non-profit or [121:53] anything it was still apple it was apple [121:54] controlled but [121:56] they made their fork first class and [121:58] they made it be [121:59] something that they all worked in and [122:00] lived in and that was before chrome [122:02] and then chrome larry page said what [122:05] about webcam i said yeah it's nice i [122:06] have friends who work on it [122:07] you might use that if you do your own [122:09] browser why don't you do your own browse [122:10] don't worry about firefox [122:11] you should do your own browser you can [122:13] have your own you know opinion of how it [122:14] should work and [122:15] and sure enough they did so by 2006 we [122:18] knew they'd been working on it some of [122:19] the some of my friends who'd been at [122:20] netscape [122:21] did the original demo and the demo [122:23] wasn't what you thought it didn't have [122:24] the fast javascript yet that was still [122:26] off in denmark in the farm um [122:29] did i have tabs it had tabs because all [122:31] browsers had tabs at this point [122:32] and it had this [122:35] software fault isolation i mentioned it [122:37] was through process isolation so [122:40] in theory each tab has its own operating [122:42] system process and so [122:44] what's going to take your tab down well [122:46] webkit has [122:47] bugs that can crash it but flash was [122:49] still big then all the restaurants sites [122:50] remember [122:51] and flash crashed a lot so the demo that [122:54] i heard about [122:54] my friends x netscape x as all people [122:57] did inside google was [122:59] the sad tab they showed an early version [123:01] of chrome which is just this bare-bones [123:03] tab browser [123:04] they loaded a site with a known flash [123:05] volume and then suddenly [123:07] flash crashes and everyone expected the [123:09] whole browser to go down [123:10] but instead you got this little sad face [123:12] in the tab and you could reload it and [123:13] there it is again [123:14] so this was this was a an improvement it [123:16] was a real move for security [123:18] it was based on you know a company that [123:21] acquired called green border [123:22] they had some really big brains like [123:23] olfar erlingston i think was involved [123:25] and they had done some exotic [123:28] security stuff but they ended up [123:29] simplifying it to this process isolation [123:32] and um it was good and firefox didn't [123:35] have it at the time so we were still [123:37] struggling with you know [123:38] security bugs so we knew chrome was [123:42] coming but it took two more years to [123:44] come out [123:44] and at the time we were still getting [123:46] you know the google search revenue and [123:48] we were still [123:48] um making google the default engine and [123:51] firefox was still growing firefox [123:53] grew i think until 2011. that was when [123:55] it peaked [123:56] and as it started falling it was because [123:59] of chrome chrome came out in 2008 and it [124:01] was [124:01] a comic book that leaked accidentally [124:03] that showed some of the people who [124:04] worked on it lars bach was in there and [124:06] so on [124:07] it was kind of soft launch because they [124:09] didn't market it heavily they didn't [124:10] push distribution [124:12] but google had reason to worry about [124:14] distribution because microsoft [124:15] was you know doing a search engine bing [124:19] since 2007. [124:20] in fact when they came out with bing [124:21] google was worried that microsoft would [124:23] just [124:24] brute force switch the default browser [124:26] in everyone's internet explorer or even [124:29] firefox [124:29] on windows to bing from google and [124:32] uh microsoft wasn't i think ready to [124:35] dare the anti-trust cops that way [124:37] even though they'd gone to sleep and i [124:39] don't think bing was ready either [124:42] but just in case it happened sundar [124:44] pichai [124:45] who rose very well based on this work [124:47] was sort of [124:49] in charge of getting distribution deals [124:50] and he got google toolbar [124:52] and google desktop search distribution [124:55] and remember those pieces of software [124:56] those were like [124:57] desktop extensions toolbars [125:00] or operating system extensions for doing [125:02] desktops searching your local files kind [125:03] of like [125:04] that's right mac os spotlight right [125:05] sadly died doubted [125:07] and there were some features that we [125:08] still missed that didn't make it into [125:09] chrome but [125:11] sundar got oems to bundle those and then [125:14] he got enough of those deals that by [125:15] 2007 or eight [125:17] google felt well if bing microsoft does [125:19] the worst and tries to force bing [125:21] we can reach in and reset it with that [125:24] point of presence [125:25] so that was you know good for sundara's [125:26] career and it was good for google but it [125:28] never came to pass that they had to [125:30] defend microsoft was still you know slow [125:32] and by the time they saw [125:34] chrome come out then they did what would [125:36] have been ie9 [125:37] and then they said we're going to have a [125:38] fast javascript engine to chakra chakra [125:40] core [125:41] and uh they did okay they were another [125:44] process isolated fast javascript browser [125:47] tab browser [125:48] so it sounds like there's a deep [125:51] fundamental coupling of search engine [125:52] and browser that's [125:54] mixing this whole thing up and obviously [125:56] firefox doesn't have a [125:58] a search engine that's like i mean [126:01] you're [126:01] you're partnering with one with somebody [126:03] with a search engine yeah [126:04] with with yahoo or with uh yeah uh with [126:07] google or so on they tried yahoo that [126:09] was [126:10] unfortunate because i think um even [126:12] though marissa [126:13] mayer talked about it she never pulled [126:15] it off and never restored the search [126:17] uh team that had been laid off i believe [126:19] carol bartz was running yahoo when [126:21] carol said i've got to get rid of one of [126:23] three expensive things i'm going to get [126:24] rid of search [126:25] and those researchers went to google and [126:28] microsoft and [126:30] there was no way to put yahoo search [126:31] back together so when firefox tried [126:34] switching [126:34] all their users who'd stuck with a [126:36] default from google to yahoo [126:38] like mid-december 2014 a bunch of users [126:41] said what [126:42] just happened to my firefox and others [126:44] didn't notice right away but over time [126:45] they did [126:46] and so over the next year the the [126:48] traffic just [126:49] went away for yahoo and and yet they [126:52] were obliged i understand it i [126:54] i don't have inside knowledge but this [126:56] is leaked out and danny sullivan's [126:57] written about it search engine lin [126:59] i think the deal was like fixed payments [127:00] to mozilla so mozilla was getting a [127:02] bunch of money for traffic that wasn't [127:03] staying because users were [127:05] resetting their default and this shows [127:07] how defaults are important [127:09] but they have to be good enough that the [127:10] user doesn't override them [127:12] and you know a lot of the commercial [127:14] value in [127:15] popular apps is what are the default [127:17] settings what is the default search [127:19] but oftentimes there's something just [127:21] like you said i mean [127:22] if there's something compelling that's [127:25] also can beat out the default [127:27] like tab browsing and so on yes and [127:29] that's where i mean [127:30] we'll talk about brave browser it feels [127:32] like now we're in this [127:33] third stage where there's [127:37] uh chrome firefox [127:40] edge i guess it's called and [127:43] brave and these are all seem like really [127:47] exciting [127:48] i don't know innovative browsers they're [127:50] all kind of copying off of each other [127:52] picking up the good stuff [127:53] there's evolution again especially on [127:55] tracking protection so privacy [127:57] is this sort of global um [128:01] wave that's rising i like to call it a [128:03] wave because it's a large [128:04] somewhat chaotic structure it's not a [128:07] unitary good you can't say [128:09] i'm buying privacy for you know three [128:11] dollars i'm paying three dollars privacy [128:12] some people think a vpn does this and [128:14] are disappointed when it fails them but [128:16] often people use vpns for [128:18] region unlocking video or getting the us [128:20] netflix exactly [128:22] but privacy is is not a unitary good [128:24] it's complex and people are [128:26] understanding it only [128:27] over time and as they get burned but [128:29] there's a genie that's not going back in [128:31] the bottle there people are fed up [128:33] apple has responded to this apple was [128:35] always making safari i think more [128:37] of a privacy branded browser from the [128:39] very beginning i think this was probably [128:41] steve jobs [128:42] safari had private windows private tabs [128:45] before firefox did and [128:48] these are only private in the sense that [128:50] they don't leave local [128:51] traces uh if you don't want them to it [128:53] turns out safari does keep them around [128:56] between shut down but the canonical [128:58] model is no local traces after you close [129:00] the private window [129:01] no no leftover traces that you went to [129:03] you know some site that you were [129:05] embarrassed by or bought a gift for [129:07] somebody you wanted to keep secret [129:08] um but there's still some level of [129:11] tracking there's network [129:12] uh tracking there's network privacy is [129:15] not guaranteed at all because you're [129:17] using the same internet and isp [129:18] as a public window a non-private window [129:21] but sorry had that early on they also [129:23] had [129:23] a cookie blocking policy that [129:26] might take a little explaining when you [129:28] if you know what a cookie is it's a [129:29] little bit of storage in the browser [129:31] indexed by the name of the site [129:33] and it's really only the main name of [129:34] the site like bfa.com [129:36] or you know something like [129:40] npr.org every site can store some [129:44] information in a cookie every time [129:46] it's contacted by the browser the [129:48] previous version is sent back [129:50] and in the response from the server the [129:52] cookie's updated [129:54] so it's this little bit of storage in [129:56] the browser that the site can keep [129:57] updating and it can store an encrypted [130:01] version of your login credentials with a [130:03] timestamp so you can [130:04] stay logged in without having to re-type [130:07] your password every time you navigate [130:08] which is how [130:09] it would be if you didn't have cookies [130:11] the web protocols [130:13] especially in the 90s are so-called [130:14] stateless protocols so [130:16] you go to your bank you log in you go [130:18] from your login [130:20] confirmed page to your account view if [130:22] you didn't have a cookie you'd be [130:23] logging in again [130:24] everything every time you type in so [130:26] that was a great thing about cookies [130:27] lumon truly did it in a hurry in 1994 [130:29] before i joined escape and he did it for [130:31] really [130:32] holding that kind of credential but [130:35] even then there was the image element [130:37] embedded in the page and the image gets [130:39] fetched [130:40] possibly from a different server and [130:42] that request carries the last cookie [130:44] which could be empty at first [130:45] and the response carries the updated [130:47] cookie so just by having images and [130:49] cookies you have tracking because that [130:50] image server can be [130:51] serving a little one by one pixel and [130:54] they still use the word pixel on adtech [130:56] and that pixel can be served from the [130:58] same server embedded differently with [131:00] different [131:01] url spellings in the new york times and [131:03] espn and as you go from one to the other [131:05] the image server can say i haven't got a [131:07] cookie for you it's empty initially i'm [131:08] gonna [131:09] assign you user number one two three [131:10] four i'm gonna put a database entry in [131:12] and i see by the way i always fetch the [131:14] name of the path part of the url that i [131:16] was in the new york times [131:17] so you're a new york times reader and [131:19] then you hit espn [131:20] same thing and the database gets updated [131:22] and the number user one two three four [131:24] indexes in the database [131:25] to a profile of you you've been tracked [131:28] this was not intended [131:29] and it was too late to undo by the time [131:31] i got the netscape um [131:32] i think lou wanted to do twinkies he [131:34] called them and he was trying to solve [131:36] several problems [131:37] he wanted them to be bigger because [131:38] initially cookies had a short size limit [131:40] i think he wanted to solve the third [131:41] party problem but tom pake when the [131:44] engineer manager said [131:45] nope no twinkies just cookies we're done [131:48] you're done son [131:48] and um that's how a lot of that stuff [131:51] was that's how javascript you know [131:53] um got frozen like a flying amber in [131:55] some ways with that sloppy equality [131:56] operator that i made because of the [131:58] early adopters [131:59] and the cookie got stuck with this [132:00] tracking hazard and then [132:02] because javascripts can be like images [132:04] they're embedded in the page [132:05] by the time netscape 3 i made that work [132:08] you can get a request with the last [132:10] cookie value and the response updates it [132:11] that's a tracking mechanism and that's [132:13] why you don't even need images to track [132:14] now you just use scripts [132:16] so this whole tracking economy evolved [132:19] and it it [132:20] it depended on these accidents of the [132:23] 90s these unintended consequences well [132:25] it created [132:26] some of the richest companies in the [132:27] world right i mean it's the social media [132:28] all i got was t-shirts [132:30] all i got is this crappy t-shirt yeah [132:34] i mean uh so that's that's the [132:37] fundamental problem the world is facing [132:39] now they're looking at [132:40] what social media has created and [132:42] they're looking [132:43] at and like a world is looking at itself [132:45] in the mirror [132:47] and seeing that privacy is actually [132:49] something [132:50] supposed to like a nice thing to have [132:53] it's something that is [132:55] actually should be fundamental to the [132:57] way we interact with the world [132:59] as part of our tooling and that's where [133:01] the [133:02] brave browser comes in and i suppose [133:04] others as well are playing with this [133:05] idea but brave is at the forefront of [133:07] that so [133:08] maybe can you like describe what brave [133:10] is yes and what are its key principles [133:13] and uh what's broken and what is it [133:15] brave trying to fix so when i [133:17] realized that these accidents like the [133:18] third party cookie [133:20] the image or script that's tracking you [133:21] or the um [133:23] this javascripts that can do it [133:24] invisibly now that all this stuff wasn't [133:27] intended and that firefox had supported [133:31] extensions that blocked some of these [133:32] things i thought [133:33] probably we should have browsers just [133:34] block some of these things by default [133:37] these were not intended and they're now [133:39] unsafe they're tracking you there could [133:40] be data breaches [133:41] malware distribution um you know [133:44] bullying and psyops and other attacks on [133:47] people [133:48] um block that stuff block that [133:50] javascript i've i'm dr frankenstein [133:53] with the monster here but obviously you [133:55] go to gmail there's a bunch of script [133:57] there to make that amazing web client [133:59] that's okay that's first party [134:01] javascript so how do you tell the first [134:03] from the third party and it's not easy [134:04] it's not a matter of just [134:05] what's embedded from a different server [134:07] because a lot of [134:09] publishers use benign scripts from [134:12] unrelated domains or apparently [134:13] unrelated domains [134:14] so you end up having to develop a sort [134:15] of human and machine learning practice [134:18] around blocking and at brave we did that [134:21] from the start and built a research team [134:23] to help [134:23] drive it and automate it we realized [134:26] that protecting people [134:27] needed machine learning and around 2017 [134:30] spring i talked to my friends at [134:31] apple about this too and they were also [134:33] doing what they call intelligent [134:35] tracking prevention [134:36] which uses local machine learning in the [134:38] browser and [134:40] the funny thing is we you know great [134:41] great minds think like we were they were [134:43] taking their third-party cookie blocker [134:44] that was in safari from the old days [134:46] and making it not have a big loophole [134:48] because what they did was in [134:50] 2003 when sorry came out they said we're [134:52] going to block cookies that [134:54] are from those third-party embedded [134:56] elements [134:57] where you've never visited that site [134:58] before so i'm going to pick an [135:00] ad company that got sold to att so i'm [135:02] not picking on anybody unfairly [135:03] appnexus.com have you ever been to [135:05] appnexus.com no i've never been there [135:07] but i guarantee you 10 years ago you [135:09] probably had if you were using firefox [135:11] you had a cookie third-party cookie [135:12] because you're being tracked by them [135:14] and they were using that cookie to build [135:16] up a profile of you in safari [135:18] as long as the user never went to app [135:20] nexus that cookie would not be set [135:22] and that was a real move for privacy [135:24] early on uh when jobs were still around [135:26] in safari [135:27] but it had this loophole that if you do [135:29] go to app nexus then why it's okay to be [135:31] a third-party cookie and [135:32] so app next just did something very [135:34] naughty they took their ad partners to [135:36] put the actual [135:37] ad you click on and they said hey add a [135:39] little script so that [135:41] when somebody clicks on the ad before it [135:42] goes to your landing page [135:44] redirect to app nexus and will redirect [135:46] to the landing page and by doing that [135:48] they set a first party cookie and they [135:49] got white-listed so as a loophole they [135:50] exploited [135:51] intelligent tracking prevention in [135:53] safari was sophisticated enough to [135:55] counteract this and it did other things [135:57] and it's evolved since they did it [135:59] and we've evolved brave too and so when [136:01] i say machine and human learning there's [136:02] a real [136:03] um set of techniques here they have to [136:05] fight fascinating problems [136:07] fingerprinting right anytime you have a [136:08] little bit of storage in the browser [136:10] associated with a website if the bad guy [136:14] can get 32 websites [136:15] each one has a bit of storage that's 32 [136:17] bits you can [136:18] turn the bit on or off you can make 4 [136:20] billion numbers you can make an [136:21] identifier it's called a [136:23] super cookie sometimes it's a [136:26] there are there are weaker ways that are [136:27] statistical they're called [136:29] fingerprinting you have to block all of [136:30] them and you have to not only automate [136:32] you want to work in the web standards [136:34] body to [136:36] put privacy in by default by design from [136:38] the get go not add it as an afterthought [136:40] or [136:41] you know go hog wild with new web apis [136:43] add a bunch more [136:44] local storage or fingerprint surface [136:46] area [136:47] and that's been a struggle too because [136:49] guess who's the new microsoft in the [136:51] standards body it's google [136:52] and they're not in favor of privacy [136:55] first they [136:56] they want to do privacy their way only [136:58] under [136:59] i would say market pressure but with [137:01] apple uh and with brave leading the way [137:03] we we block third-party cookies almost [137:05] without exception so [137:06] we've just blocked them and that gives [137:08] us a very strong privacy uh [137:10] benefit but it also means some sites [137:12] just don't work right embedded youtube [137:14] videos might work right so we're [137:16] adapting in similar way to apple's done [137:18] with itp [137:19] to make third-party cookies blocked [137:22] but to sort of simulate [137:25] what looks like a working third-party [137:27] cookie for the site it essentially [137:29] tries to i partition each site and its [137:32] third parties into its own [137:33] sort of cookie jar got it and so and [137:35] like like you said is this both like a [137:38] human [137:39] uh fine-tuning issue and the machine [137:41] learning problem so [137:43] humans learn then they train the machine [137:45] learning but [137:46] you know uh maybe google side or [137:49] including google [137:50] there's millions of dollars if not b [137:53] billions of dollars to be made [137:54] from fighting the ways of brave that's [137:57] right and it's been uh [137:59] an interesting change from when we [138:00] started 2015 when we started [138:02] you know ad blocking extensions abloc [138:04] plus was one of the big ones that [138:06] started on firefox in 2006 i believe [138:08] had gotten to a certain level of use [138:10] around the world and browsers like uc [138:12] web uc browser in [138:13] asia had some amount of ad blocking [138:15] built in and on by default [138:17] so a page fair was a startup [138:20] and they measured ad blocking adoption [138:23] and they tried to say hey publishers [138:25] you're you know 30 of the visitors to [138:28] uh pitchfork or wired to kind of nas [138:30] properties are using ad blockers [138:32] if we can somehow convince them to lower [138:34] their ad blocking [138:35] for your site that could be like a 43 [138:38] lift right [138:39] um and three sevenths well [138:42] that's easier said than done and page [138:44] fair and others source point [138:46] many others tried to either smuggle ads [138:47] through or cajole the user into [138:49] letting you know ads appear and it [138:52] didn't really work and meanwhile the ad [138:53] blocking adoptions just continued [138:55] intelligent tracking prevention in [138:56] safari in 2017 [138:59] brave from 2016 on with very strong [139:02] cookie blocking and other productions [139:04] and this this is not going away the [139:06] publishers used to rage against it like [139:08] we would try to say we can help you [139:10] you're dealing with users who are [139:12] already blocking all your ads [139:14] we can try to put back uh some economics [139:16] that help the user and you [139:18] that led to the basic attention token [139:19] that we started with bitcoin [139:21] we can be your friend don't don't just [139:23] fingerprint us as an ad blocker and [139:24] treat us as an enemy [139:26] but in 2015 or 16 it was like ah you're [139:28] an ad blocker get out of here i hate you [139:30] and by 2017 or 18 it's like something's [139:32] happening the app walking is not [139:34] stopping and [139:35] we're all getting sort of pulled onto [139:37] google's plantation [139:39] through amp amp or you know we're [139:42] getting killed by the google ad system [139:44] we use because it's taking all the [139:45] revenue [139:46] or you know it's permitting or some [139:48] other vendors we use are permitting ad [139:49] fraud and so [139:50] a fake new york times is getting paid by [139:52] the marketer running an ad [139:54] that a a bot clicks on and the real new [139:57] york times it's supposed to get that [139:58] doesn't get it [140:00] and there's something really broken [140:01] about that kind of system and that that [140:03] fraud is mediated through google's ad [140:06] exchange which is the biggest of them [140:07] all [140:07] and google takes a fee there's a flip [140:10] side of that which is malware [140:11] distribution advertising where [140:14] fake advertisers put malware payloads in [140:16] or look [140:17] exploit kit loaders in javascript and [140:19] they smuggle them in ads onto real [140:21] publisher pages [140:22] the ad exchange takes the fee now i'm [140:24] not a lawyer i'm not going to say this [140:26] is a ricoh predicate but [140:27] why is the ad exchange facilitating [140:29] fraud and malware distribution and [140:31] taking a fee [140:32] it's not right as opposed to just [140:33] fighting this is the really interesting [140:34] thing about brave is [140:36] as opposed to just fighting in and being [140:38] treated like an ad blocker [140:39] you're providing an alternate there's a [140:43] there's a philosophical idea here that [140:45] might change the nature of the internet [140:47] with the basic attention token [140:49] yes well maybe what is basic attention [140:52] token bat [140:54] and how does it work okay i'll tell the [140:55] story first by saying [140:57] how i came to it i realized for a long [140:59] time at firefox we were [141:01] dependent on this google search deal and [141:02] i thought you know [141:04] now that chrome's out maybe that's going [141:06] to go away and they just [141:07] at some point google will say you know [141:10] firefox [141:11] you know like old yeller you saved me [141:13] from the rabid beast now you have to [141:14] shoot you in the head [141:15] yeah done your job sad but true goodbye [141:19] and what could we do and i think this [141:22] mozilla doesn't know what to do this is [141:24] something that i couldn't solve there [141:25] and i don't think they can solve [141:27] but i thought why is the browser the [141:29] sort of passive servant of these big [141:31] tech companies why is it [141:32] a blind run time for ad tech javascripts [141:36] including from google why doesn't it [141:38] block some and if it blocks some [141:40] why can't it reconnect users [141:43] readers fans with publishers creators [141:46] websites [141:48] why can't it help people make direct [141:50] payments or [141:51] even possibly get an ad revenue share [141:53] for private ads that are placed in the [141:55] browser [141:56] the ads are all placed in the browser [141:57] some people have this sort of model that [141:58] the server is painting the ad into some [142:01] you know flash uh combined [142:04] package or into some giant image and [142:06] then it all gets sent down that's not [142:07] how it works [142:08] all the ads you see on the web are [142:09] placed in your browser by [142:11] calling out to various ad tech partners [142:13] and [142:14] google's among them and and so if you [142:16] block those scripts you [142:17] you break the the advertising [142:21] flow of money from the brands and their [142:23] agencies [142:24] to the publishers and if you want to [142:27] reconnect it [142:28] directly with the user you have limited [142:29] choices the user generally isn't going [142:31] to sign up with a [142:32] ach bank connection or a credit card the [142:35] the publisher isn't going to [142:36] sign up the user except just a [142:37] subscriber and then they're going to [142:38] overcharge you [142:39] because they want you to cross-subsidize [142:41] all the content and buy more than you [142:42] read and all that stuff and how many [142:44] you know people are doing great who are [142:46] big names like new york times in [142:47] washington post but how many [142:49] subscriptions are you as a user going to [142:50] pay for [142:51] this is why startups like tony hale's [142:53] scroll are trying to do a portable [142:55] subscription system but by the way just [142:57] a small attention there even the new [142:59] york times is really [143:00] annoying how difficult it is to [143:02] subscribe there's way too many [143:04] clicks they don't make it easy i had [143:05] friends a few years ago i think they [143:06] fixed this who would pay for the paper [143:08] and then they'd go online and they get [143:10] up charged for the digital and they [143:12] there was no break there was no [143:13] connection between them yeah um [143:15] but publishers are not that technical [143:17] and they're they can't all get you to [143:19] subscribe you can't have a thousand [143:20] subscriptions [143:21] so for a long time people talked about [143:22] micro payments there was glendale and [143:24] netherlands which came to the us but [143:26] didn't grow and i thought if you have [143:28] just a browser [143:29] and it's protecting you by blocking all [143:31] this ad tech tracking junk [143:33] it can provide you an option that uses [143:35] cryptocurrency to let you support your [143:38] your favorite sites and even youtube [143:40] channels and that way prototype with [143:41] bitcoin [143:42] and that meant the user had to be of [143:44] means to contribute and willing to [143:46] contribute [143:47] but it could be done on the bitcoin [143:48] blockchain and it could be fairly [143:50] efficient even though bitcoin went [143:51] through a period [143:52] when we had this prototype running in [143:53] 2016 into 2017 where bitcoin was very [143:56] congested and [143:57] very slow to confirm and the fees got [143:59] very high um [144:00] and a lot of users who were not bitcoin [144:02] maximalist or even experienced [144:05] we helped them out by embedding a [144:06] coinbase buy widget and they had the [144:08] income to buy but it was hard it was [144:10] like [144:10] do i buy five dollars a month but the [144:12] fee is like 450 [144:14] i better buy in larger batches right [144:16] then they're like i don't want to own [144:17] that much bitcoin so it became this this [144:19] painful [144:20] thing and the real idea that i had of [144:23] private ads that pay the user a rev [144:25] share couldn't be realized [144:27] alone in that kind of system in [144:31] these cryptocurrency systems especially [144:33] with the blockchain we switch to [144:34] ethereum you can have smart contracts [144:36] the bitcoin system is not turned [144:38] complete so what you can do with the [144:39] script is more limited [144:41] but you can still do sort of clever [144:43] things um [144:44] even with bitcoin script what we wanted [144:46] to do was sort of a [144:48] three-sided ecosystem we wanted users [144:51] creators or publishers and advertisers [144:53] and we wanted the advertisers to put [144:55] money in just like they do today [144:56] but without going through the googles [144:58] and the app nexuses and all these other [145:00] ad tech companies [145:01] because those companies take out a huge [145:03] cut the guardian in the uk once did an [145:06] experiment for a month they bought out [145:07] their own ad space [145:08] they put in a pound and they were paid [145:10] 30 pence 70 [145:12] was coming out to the intermediary [145:14] vendors they were using [145:16] wow um and that's like the opposite of [145:18] what the app store does the app store [145:19] takes 30 [145:20] and gives the publisher 70 so pretty [145:23] broken in the old [145:24] days of the superstation tbs the media [145:27] um owner would get 85 so [145:30] these splits have become really [145:32] unbalanced and the middle players the [145:34] the ad tech vendors are taking out way [145:36] too much money and they're they're doing [145:38] something worse which has been noticed [145:39] they're [145:40] they're letting um not just the malware [145:43] vendors [145:44] but also the ad fraud side which fakes [145:45] the publishers [145:47] and click bait merchants [145:50] come in and steal traffic from good [145:52] sites because once you have a certain [145:54] audience identified at one site jason [145:56] calcon has told me this about his [145:57] experience with [145:58] i guess it was in gadget uh which site [146:01] he was running but [146:02] once he started using an ad partner that [146:04] was sharing his audience information [146:06] across multiple sites he saw his [146:07] competitors stealing all his traffic [146:09] and then what's worse is the clickbait [146:11] sites that just have [146:12] much cheaper rates steal all that [146:14] traffic and that facilitates [146:16] you know fraud facilitates um fake news [146:20] all sorts of problems so brave blocks it [146:23] and then we give users the ability to [146:25] give back and because we invented the [146:27] basic attention token and ethereum we [146:29] can do this three-way split [146:30] and we can give users a share of the [146:32] revenue and if they want to take it out [146:34] they can [146:35] now unfortunately for us and for all [146:37] blockchain the regulators are saying [146:39] we're going to have to know who you are [146:41] there's there's the [146:43] treasury department's uh fincen [146:46] agency there's the office of foreign [146:48] asset controls ofac [146:50] uh there's the um you know [146:53] other regulators in the federal [146:54] government that take a very dark look at [146:56] things like money laundering [146:58] and sending money to someone named osama [147:00] bin laden so [147:02] compliance starts to come in and even [147:03] now they're threatening for pure bitcoin [147:06] sending to some address [147:07] if you're a coinbase you're gonna have [147:09] to know who who's at that address you're [147:11] gonna take the actual identities of [147:12] people involved yeah now with coinbase [147:14] members you sign up and they know you [147:15] and they comply with regulations they're [147:16] a regulated [147:18] money services business uh and um [147:21] but if somebody's using their own [147:24] self-custody [147:25] so-called self-custodial wallet where [147:27] they have the hardware private key [147:29] and they're not named and they want to [147:31] send to that address [147:33] our friends in the federal government [147:34] are talking about requiring at some [147:36] threshold knowing who that is [147:37] so some threshold that's unreasonable [147:40] it's not that big [147:41] um yeah yeah i don't know how this will [147:43] play out i think crypto's here to stay i [147:44] think [147:45] the beauty of being able to send [147:46] peer-to-peer without any bank in the [147:48] middle without any [147:49] you know huge wire charge and two-day [147:51] delay and all that nonsense it's [147:52] beautiful and i've used it i love it [147:54] but we're pragmatists to brave about [147:55] crypto and we realized that anything [147:58] like a revenue split [147:59] we can't facilitate without being [148:01] licensed in a certain way and it [148:02] requires knowing who the user is [148:03] so our default mode doesn't know who the [148:05] user is it instead [148:07] imputes to the user's browser some of [148:09] the revenue [148:10] and allows that browser to steer it back [148:13] to [148:14] the creators and we do have to identify [148:15] the creators but [148:17] as things improve and you know who knows [148:19] how it'll play out [148:20] there should become a day when this this [148:22] full vision can be done more [148:23] uh fully on a blockchain but regulations [148:26] and the practicalities of [148:28] today's blockchains which are not that [148:29] fast and not anonymous over time you [148:32] fingerprint yourself over time [148:34] we do some of this with the browser so [148:36] one of the ideas of the basic attention [148:38] token [148:39] is to make a hybrid system that's [148:42] stronger than blockchain alone it's the [148:43] browser [148:44] and the blockchain and the browser is [148:46] this trusted endpoint [148:47] software it's this universal app [148:49] everyone uses browsers the bigger the [148:51] screen the more you're in the browser [148:52] and the less you install [148:54] you know fat clients for things um i use [148:56] slack on [148:57] on mac os and it's it's like a browser [149:00] it's based on an electron framework we [149:01] used to use and it's just [149:03] it's not that great i some people at [149:05] brave use slack [149:06] in brave as a in the browser browser [149:08] yeah i use that often yeah [149:10] and i noticed on the ipad i use apps [149:12] less um the smaller the screen [149:14] you know the browser got handicapped by [149:16] apple and android both and it [149:18] also uh you know can be slower or not [149:21] have the right you know affordances the [149:22] user interface for the the [149:24] security uh limited apis but in [149:27] principle with the right permissioning [149:28] you can make the web [149:30] browser just as good as any app you make [149:31] it be a super app [149:33] and that's part of our mission at brave [149:35] so we want to have the economics that [149:36] got captured by these big tech companies [149:38] through tracking [149:39] and through social networks we want to [149:41] block that for your own safety and then [149:43] let you opt into a cleaner world [149:45] where you keep your data defended in [149:47] your browser and you can actually [149:48] realize value from it [149:49] so the way our ad system works i [149:51] mentioned it being private but how does [149:52] that work [149:53] we don't see your data at all all [149:55] browsers are sort of the mother of all [149:57] data feeds your history [149:58] all your searches at all engines each [150:00] engine sees the queries you send to it [150:02] but it doesn't see the others but the [150:03] browser [150:04] sees them all machine learning in the [150:06] browser that you can opt into can study [150:08] all that in a very complete way [150:10] and do a better job than google this [150:11] google has you know cookie [150:13] and scripts across the web from [150:15] acquiring doubleclick they have [150:17] youtube they have android they have [150:19] search which is still their big revenue [150:20] link [150:21] but they don't see everything the [150:22] browser sees everything and if it can do [150:24] a good job locally and this is not [150:25] advanced machine learning this is [150:27] not tensorflow this is like svms now and [150:29] naive bayes [150:31] then you can match intense signals [150:34] intent signals from those data feeds [150:37] searches the queries [150:38] the history how much you're scrolling [150:40] down a page [150:41] how much you redid a search it's all [150:44] blind browser algorithm we don't see [150:46] that data [150:46] and then pick the best ad from a fixed [150:49] catalog [150:50] per day and the catalog is fixed across [150:52] a large population per day and it only [150:53] updates the date once a day because new [150:55] offers come in and old ones expire [150:57] sometimes every week or every month and [151:00] that [151:00] catalog and there can be many such [151:02] catalogs is sold by our direct sales [151:05] team [151:06] and so we're making an anonymous [151:08] audience available to advertisers [151:10] without the advertisers tracking them [151:11] instead each browser is a little machine [151:14] learning system that's picking the best [151:16] catalog entry now the catalog is not the [151:18] ads those are big right it's a video or [151:19] a web page [151:20] it's just the link to an edge cache and [151:22] there are many such edge caches we're [151:23] not trying to [151:24] protect them from seeing your ip address [151:26] it's not really feasible we could use [151:28] tor but we don't yet [151:29] um and some keywords about the ad so [151:32] it's basically like [151:33] metadata and a link and that's what the [151:35] catalog consists of and that's what the [151:36] machine learning picks [151:37] and the machine learning is learning [151:38] about you specifically [151:40] locally in order to choose from the [151:42] catalog of different ads [151:44] couldn't this possibly be like a [151:46] multi-billion dollar [151:47] is this taking on the google ad [151:51] so like what i mean one question to ask [151:54] there seems to be some really profound [151:56] ideas here that that are [151:57] different than what the internet has [152:00] grown up to be [152:01] if brave or something like brave [152:05] the ideas the fundamental philosophical [152:07] ideas underlying brave [152:08] win out and runs 95 of the internet [152:13] how does that change uh the [152:17] what what are the major things these [152:18] changes about the internet so social [152:20] networks and then the creatives like [152:21] youtube creators and all that kind of [152:23] stuff so let's talk about that [152:24] first of all if brave gets 95 i'm going [152:26] to demand a recount because i [152:27] i won't believe it uh i don't know i i [152:30] think uh [152:31] we're trying to put things into web [152:32] standards that can be standardized [152:34] across browsers so [152:35] the main value of brave will be the [152:37] trust users have in us and our ability [152:39] to [152:39] give the best deal to users so 70 of the [152:42] gross ad revenue we give to the user and [152:45] if they [152:46] go through that kyc process i mentioned [152:47] they can take it out they can also give [152:49] it back they could take some out give [152:50] the rest back they can [152:51] add basic attention tokens to give back [152:54] some of them turn off the ads because [152:56] you just don't like ads but they put in [152:57] twenty dollars a month [152:58] so i believe zuko of zcashframe does [153:00] that and that's very generous because [153:02] the browser is just anonymously based on [153:04] his browsing [153:05] sort of keeping score on how much time [153:06] he spent on this video on that website [153:09] and if those sites verify in sort of a [153:13] like getting a domain certificate [153:14] fashion they can get paid [153:16] they can get part of his 20 a month [153:19] so that vision could go big and if it [153:21] does i hope it's across multiple [153:22] browsers i don't [153:23] know that uh they'll all compete well on [153:26] the quality of the ads [153:27] the quality of the ad blocking and [153:28] tracking protection those those are [153:30] subject to competition it'll take a [153:32] while to standardize them [153:33] but i think that would be a better world [153:35] it would have less counterparty risk [153:38] fewer fee takers in the middle really [153:39] just the browser we're taking 30 percent [153:42] um sort of the app app store split and [153:44] if we get bigger maybe we can take even [153:46] less [153:47] social networks creators if you look at [153:50] youtubers a lot of them [153:51] the indies that are getting some size [153:53] are getting sponsorship deals [153:56] uh they're using patreon they're [153:59] encouraging people to subscribe and give [154:01] them regular money through patreon [154:04] but that's centralized your patreon so [154:06] there's censorship hazards there's a [154:07] five percent fee [154:09] what if that were web standard what if [154:11] brave pioneered it first and we took [154:13] three percent and we did it in a way [154:15] that was [154:16] through your browser so we couldn't [154:17] censor it um yeah that's brilliant yeah [154:20] do you think it could be standardized [154:21] across browsers can like uh [154:23] internet explorer come in again and and [154:25] uh yeah protocols are easy to copy and [154:27] that they're meant to be interoperable [154:29] so [154:30] it's there's a risk there and the loyal [154:32] users might be tricked into leaving you [154:33] or they might [154:34] because of that distribution power you [154:36] might end up getting stomped [154:37] um i don't know i can't predict the [154:39] future i think antitrust is back on the [154:41] case finally in the u.s and [154:42] and certainly in europe gg comp is doing [154:44] its thing so i'm hopeful that we'll have [154:46] a period of innovation [154:48] uh you know people were talking like [154:49] elizabeth warren was talking about [154:50] breaking up the tech [154:51] tech companies very clearly um now she [154:53] didn't win [154:55] and i suspect that won't happen but i [154:56] also suspect that google might be smart [154:58] enough to see [154:59] they should do something more than just [155:01] put privacy perfume on chrome they [155:03] should maybe get rid of doubleclick or [155:04] something divest something [155:06] i don't know it might happen so so brave [155:08] might inspire google to completely [155:10] change the way they're doing things [155:11] they're already doing something you may [155:13] have read about called the privacy [155:14] sandbox or [155:15] um flock which they have this bird [155:18] metaphor going um [155:20] turtledove um fledge but these [155:23] these these systems have been very [155:24] googly kind of over engineered and yet [155:27] depending on differential privacy which [155:29] has weakness over time if you know how [155:30] that works kind of injecting [155:32] noise to hide you in a crowd but over [155:34] time an adversary can pull you out of [155:36] the crowd [155:37] that this doesn't look like it's going [155:38] to become a standard like apple [155:40] brave mozilla we're not going to just [155:42] say oh google you saved us [155:44] you've invented the privacy sandbox so [155:46] we'll all just adopt it [155:47] not going to be that easy it's going to [155:48] be more like pieces of what we do in [155:51] brave the synonymous ad matching or the [155:53] blind signature cryptography we use to [155:55] confirm the ad [155:56] impressions that's david chum's [155:58] invention that could get standardized in [156:00] fact some of that is being standardized [156:02] even google's in favor of so-called [156:03] trust tokens which are xiaomi and [156:05] blind signature certs but they're not [156:07] using them for ad confirmations because [156:09] they don't want to blow up their own [156:10] business [156:11] and they need to let some of the [156:12] publishers they serve [156:14] have other ad tech scripts on the page [156:17] and so they're kind of caught and this [156:18] is something i realized doing brave i [156:19] thought [156:20] what's you know google's innovator's [156:22] dilemma apart from just you know getting [156:23] being mature and having trouble [156:25] innovating it's that they have come to [156:27] depend on [156:28] this ad tech system that has all these [156:31] these [156:32] vendors that are publishers rely on [156:34] because publishers aren't technical [156:36] enough and i feel for the publishers but [156:38] i realize the users have to come first [156:39] and if you give the users [156:41] a better browser that's faster then [156:44] you'll get enough users to to give back [156:46] or support publishers [156:47] the speed and the battery savings and [156:49] data plan savings are significant [156:51] there's so much bad javascript involved [156:52] in ad tech [156:53] if you block it and you sort of chop off [156:55] the what's called the programmatic [156:56] waterfall which [156:57] chains a bunch of requests yeah that's [156:59] one of the incredible things about brave [157:01] i guess you're saying you should [157:02] attribute to the fact that the the the [157:04] messy javascript [157:05] no offense [157:09] uh is uh i mean brave just feels [157:13] faster even then i mean chrome was fast [157:16] and one of the things that it was like [157:17] impressive is [157:18] it it showed that browsers could be [157:20] really fast and brave is even faster [157:22] than that which is blocked so much and [157:24] it saves [157:25] the network it's it which means data [157:26] plan it saves battery because the radio [157:28] consumes your battery when it's running [157:29] more to do those requests [157:31] and it's just stunning how many there [157:32] are like some of my google friends were [157:34] like oh that's just that bad site [157:35] they'll fix it [157:36] and you actually do a survey of web [157:38] pages mostly like that [157:40] i know google or google engineers could [157:41] make everything super efficient but they [157:43] can't [157:44] especially an anti-fresh court do it [157:45] they cannot take over [157:47] all the publishers and do that they're [157:48] trying with accelerated mobile [157:50] profile amp they're trying to pull [157:52] publishers they're like oh you poor [157:54] publishers don't know how to make your [157:55] pages fast [157:56] put them on our amp system we'll give [157:58] you extra placement in the search [157:59] carousel [158:00] that's an antitrust problem for one but [158:02] it's also publishers we talk to hate it [158:04] because it degrades their brand [158:05] now they look like a gig writer wrote a [158:07] piece that's got [158:09] google's framing an amp url on top of it [158:12] and they're trying to fix that too but [158:13] it just looks like a google's borgifying [158:16] all these publishers and they don't want [158:17] to be plugged into the board cube they [158:19] want to [158:19] build their own brand and have loyal [158:21] readers so you know i'm in favor of [158:24] giving the users power to help all the [158:27] publishers and the little platoons and [158:28] the creators [158:29] and so we talked about patreon what [158:30] about social networks well [158:32] they're inherently like search a global [158:34] algorithm you're trying to find friends [158:36] of friends you're doing the transitive [158:37] closure of a graph [158:39] induced by this friend of relation but [158:43] you should own your friend relation you [158:45] should own your posts [158:46] they shouldn't be owned by somebody else [158:48] who can take them down [158:49] or sense them and your friend relations [158:51] you should be able to find those friends [158:53] on other networks and so i've tweeted [158:54] about this i haven't built it yet [158:56] what if the browser could keep track of [158:59] those for you what if the browser could [159:01] maybe combine facebook and twitter and [159:03] you could find your friends on both and [159:05] you could [159:05] have a so that relationship is not owned [159:08] by facebook or twitter it's [159:10] owned by you they they throw their [159:11] brother they still have terms of use and [159:12] they'll say they own it [159:13] but if they zap you on one and you're [159:15] still on the other your friends find you [159:17] and the browser could [159:19] preserve a combined view you could [159:21] resurrect almost [159:22] across networks it's something i want to [159:24] maybe quickly ask you about [159:26] on that front there's been a quite a lot [159:28] of [159:29] um centralized we talked about wall [159:32] street bets [159:32] and then uh robin hood has been [159:35] centralized [159:36] banning of different accounts and [159:39] removing like parlor for example from [159:41] aws and this kind of [159:43] overreach of centralized control [159:46] is your hope that it's possible to like [159:49] what are your thoughts about that in [159:50] general is it [159:51] and is it possible to create tools [159:54] that give individual people the power to [159:56] fight back against [159:58] overreach of such control so we're [160:00] talking about [160:01] oligarchy i do think and that if it [160:03] controls a nation state that's [160:04] formidable it's the tax [160:06] and the police power the military power [160:08] it means that you may have the great [160:09] firewall of china you may have people in [160:11] china who are [160:12] jailed because of their tweets right [160:14] this is a serious threat i can't [160:16] minimize it or say that [160:17] we'll win i don't know how it's going to [160:19] go but i do think [160:20] like i said earlier about the cutting of [160:22] reason people find ways around things [160:23] the internet routes around censorship [160:25] and this is not to endorse any [160:27] particular bad faction one of the things [160:29] that happens when you try to [160:30] wave the free speech flag too much you [160:33] say i'm not going to censor anything and [160:34] you get colonized by [160:36] terrible terrible people right yes i [160:37] don't care if you call them neo-nazis [160:39] some of them could be doing [160:40] illegal things right and you don't want [160:43] them colonizing because it'll ruin your [160:44] reputation and destroy your business [160:46] so what you really want is that kind of [160:48] user first [160:49] subsidiary that subjectivity i want my [160:52] social [160:53] networks to be composited in some [160:55] multi-social user interface where i [160:57] don't lose track of people across [160:58] networks [160:59] and if they leave one or they get banned [161:01] from one i can find them on another i [161:02] can still sort of thread them together [161:04] yeah that's brilliant [161:05] and and this didn't happen because [161:07] browsers got captured by the central [161:09] powers [161:09] why did they get captured mostly because [161:11] of search and search is a central [161:13] algorithm [161:13] so you know larry page said this too [161:15] many years ago he said with search [161:16] you're giving up a little privacy by [161:18] handing the query over to us [161:19] and we'll error correct that alan eustis [161:22] used to be a google and google executive [161:24] he said oh yeah we used to laugh they'd [161:25] all be doing typos and they'd be typing [161:27] the wrong word [161:28] like no dummy type that query and it's [161:29] like okay google [161:31] you might want to dial back that ego a [161:32] little bit but yeah yes you do see [161:34] all the queries and you can improve them [161:36] and you can find the best results and [161:37] that was google's [161:38] forte when we did the firefox deal in [161:40] 2004 google was really good [161:42] and over time you know seo which is an [161:44] adversarial game [161:45] yeah and google itself buying all these [161:48] companies and crowding its own results [161:49] page with its own [161:51] tied in yeah stuff the youtube the [161:53] slipper slope that happens when you when [161:56] yeah when you have control over these [161:58] kinds of really important mechanisms [162:00] yeah monopoly capitalism or cartel you [162:02] get this with the robin hoods and the [162:03] the [162:04] hedge funds you get uh sort of the money [162:06] interests take over and kind of abuse [162:08] their power and wear out their welcome [162:10] so what how do you get around that [162:11] you have to have either new land to go [162:15] to which you know [162:16] some people's ancestors not mine i did [162:18] to found the country [162:19] um um mostly irish german um [162:22] you have uh new virtual space people go [162:25] to [162:26] and that requires you know an isp to or [162:29] a [162:29] colo center or amazon to host you it [162:32] requires [162:32] domain name registrar who will not [162:35] strike you [162:36] and so when parlor was taken down you [162:38] know [162:39] i thought that was egregious parlor i i [162:41] it was not well designed and i i tried [162:43] it out because i tried all these things [162:44] yeah [162:45] um but i didn't use it and i i also felt [162:48] they were being unfairly scored for not [162:49] moderating because you can find tweets [162:51] to this day that [162:52] are horrendous and threaten all sorts of [162:53] violence where's twitter why isn't [162:55] twitter being taken down [162:56] but so it was very selective it was the [162:58] insiders who have the power [162:59] are going to take out the newcomer and [163:01] it it looked bad sort of like the [163:03] the hedge funds um sorting gamestop [163:06] looked bad [163:07] you know you're seeing a piece in time [163:09] magazine this week that's like [163:10] basically saying yeah we interfere with [163:12] the election but it was great aren't we [163:13] good [163:14] i don't know if you've seen this piece [163:15] yet no i haven't if you tried to say [163:17] that [163:17] as a trump supporter in in november [163:20] after the election you get banned from [163:22] twitter [163:22] but now time in its twitter account is [163:24] saying you know [163:25] we saved the day we we it's afl-cio and [163:29] big business [163:30] the better business bureau got together [163:32] and kept trump from [163:33] you know spreading fake news so the [163:35] country's kind of broken i don't know [163:37] how to fix that the oligarchs have [163:38] run wild in my opinion and big tech is [163:41] in the antitrust stock [163:42] what's going to happen i don't think [163:44] they get out i think some of the doj and [163:45] certainly the state [163:47] cases because they're separate cases are [163:49] not going to go away just because [163:50] somebody got elected differently and [163:52] these are career prosecutors and they [163:53] have a strong case [163:55] and google smart microsoft almost got [163:57] split up right [163:59] the judge thomas penfield jackson he [164:02] overreached he didn't hold a hearing [164:04] about the remedy he just said i'm going [164:05] to break you up and microsoft appealed [164:07] and the [164:08] higher level court said go back and [164:10] figure this out you're not breaking them [164:12] off you didn't even hold a hearing [164:13] and when they got back microsoft said [164:15] let's settle let's settle we want to get [164:16] broken up [164:17] because jackson was going to make the [164:19] opsco the operating system company and [164:21] the appsco [164:22] office you know word in excel and uh [164:25] that would have been a huge blow to [164:26] microsoft so [164:28] but ultimately i don't know you i don't [164:30] know if you're optimistic or cynical [164:31] about [164:32] the possibility of breaking out big tech [164:34] to me [164:35] uh i'm optimistic that tools like brave [164:39] i love the idea of owning your [164:41] friendships and like yes users more and [164:43] more owning [164:44] stuff is the only real way unfortunately [164:46] it's like the wall street bet subreddit [164:48] is the only real way to fight the [164:50] centralized power you can't break them [164:51] up the regulation is very difficult [164:53] certainly i want to wait for the law [164:55] netscape was long dead or acquired by [164:57] aol and effectively dead it was only [164:58] mozilla that [164:59] returned firefox to the market uh by the [165:02] time that the usb microsoft case was [165:04] finally [165:04] settled and the penalties were put in [165:06] place and [165:08] uh and yet ana trust has a role to play [165:10] those penalties caused microsoft to kind [165:12] of [165:13] turn away from the web they did windows [165:14] vista and they thought the web's too [165:16] painful we got [165:17] punished in court and we got we had to [165:18] standardize things with those iggy [165:20] standards people [165:21] so they ran back to proprietary lock-in [165:23] and windows vista flopped it was late it [165:25] was bloated [165:26] longhorn remember now what google i was [165:29] going to say but google's smart enough [165:30] they won't get split up [165:31] they'll split something out to get off [165:33] the hook i think [165:35] this is a complicated subject but i [165:38] myself was so [165:39] i i decided to journey out from the [165:42] world of being a researcher at mit and [165:46] potentially doing a startup myself and [165:48] i've been [165:49] thinking of you know i wanted to come to [165:52] silicon valley to do so [165:53] it's the land of the entrepreneur and [165:56] there's a lot of my friends [165:57] a lot of them are successfully have been [165:59] entrepreneurs themselves [166:01] have said do not come to silicon valley [166:04] it'd be you've you've started you you [166:06] ran amazing [166:08] teams of engineers you started a lot of [166:10] successful businesses [166:11] i i wondered if you could comment on [166:14] why a lot of people are leaving [166:16] california is there something that could [166:18] be fixed about california [166:19] if you were starting a business today [166:22] would you consider [166:24] somewhere else like austin or some other [166:26] place [166:27] or is silicon valley still is it just a [166:29] little lull [166:30] everybody's being overdramatic during uh [166:32] this particular year of the coronavirus [166:34] and so on [166:35] i think you know even austin's getting [166:37] overheated i hear [166:38] um yes and i've had relatives and [166:41] friends moved to texas within the last [166:42] few months so [166:44] uh texas as a whole is a big place and [166:46] uh you know [166:47] people are moving to florida there's a [166:48] big movement toward miami um [166:50] peter thiel keith where will all these [166:52] people um the mayor has been very [166:54] uh business friendly about it which i [166:56] think is just good politics [166:57] um america is fundamentally a commercial [167:00] republic so you would think this would [167:01] be what's happening [167:02] for a long time california was the [167:03] golden state i came here in late 76 when [167:05] i was a teenager [167:08] it's in crushing debt due to the [167:10] lockdowns it's [167:11] got the highest taxes that's gotta [167:14] matter people will do fleet [167:15] high taxes um it's got uh [167:18] likely fires every year because of the [167:20] deadfall it's not global warming [167:22] it's because the forests weren't managed [167:24] like they had been in the first part of [167:25] the 20th century [167:26] um just i would say corruption [167:30] at all levels especially up to the [167:31] governor who you know famously was [167:33] eating at the french laundry and [167:34] yes claimed the outside it was inside [167:36] and they were masks off and it was great [167:38] uh do what i say not what i do [167:41] uh rules for thee but not for me [167:45] when you see that in leadership people [167:47] either run or they [167:49] they get rid of the leadership so [167:50] there's a recall drive which is about to [167:52] reach the threshold [167:53] or in the old days they get their guns [167:55] right you don't put up with this junk [167:57] but ultimately the thing that made [167:59] silicon valley a special place [168:01] it gave freedom to like young kids [168:04] entrepreneurs [168:05] young minds brave minds to think bold to [168:09] try [168:09] different stuff i mean even if the taxes [168:11] are high so [168:13] outside of financial stuff outside of [168:14] all of that housing super expensive [168:16] housing yeah so it's hard okay [168:19] everything about this [168:20] was narrow and they didn't plan the [168:21] roads right yeah [168:23] they got rid of public transportation in [168:25] l.a like the who framed roger rabbit [168:27] cartoon show they used to have trolley [168:28] cars [168:29] in portland too yeah the oil companies [168:31] and the dod conspired to build highways [168:34] and make cars dominant [168:35] and the rights of way are long gone like [168:37] elon's going to go underground [168:39] and rush him well that's probably the [168:41] only way to do it now yeah [168:42] but it still a place do you think it's [168:45] possible that silicon valley is still a [168:46] place where magic happens where the next [168:48] google is built or the next [168:50] i mean brave is built where uh [168:53] i think all good things come to an end i [168:54] think the problem is silicon valley had [168:56] strong network effects through [168:58] stanford through uh the angel investor [169:00] networks and the wealth effect [169:02] and originally you have to give the [169:04] federal government credit like the [169:05] arpanet was a government [169:06] project that's not kid ourselves this [169:08] wasn't wild free market you know [169:09] libertarian capitalism this was all cold [169:11] war stuff [169:12] um you had uh out of the academia you [169:16] had shockley and then the the traitorous [169:18] aid and fairchild and intel and [169:20] but now you know when's the last fab [169:23] that was built in the valley [169:24] micro unity might have been the last i [169:26] don't know i haven't followed but we [169:27] built a fab in sunnyvale [169:29] and uh in microunity in starting [169:32] early 90s and now the fabs are overseas [169:35] um [169:36] and the one thing that i would say the [169:38] oligarchs have intentionally done [169:40] in both parties is sort of [169:43] labor and environmental protection law [169:45] arbitrage by going where the labor is [169:47] cheaper and the environmental laws [169:48] aren't [169:48] strict and you know that's polluted the [169:50] hell out of parts of china [169:51] but it's made things you can make [169:53] cheaper junk [169:55] and uh this this is not uh this is not a [169:57] story that's over yet [169:58] so what is silicon valley for now it's [170:00] for the network effect the [170:02] the brain trust of who you know the [170:04] parties [170:05] the stanford um sort of network [170:09] that's fragile too over time i'm afraid [170:11] right stanford [170:13] a lot of good professors i like they [170:16] still filter [170:16] you know mainly based on socioeconomic [170:18] status but it's kind of a skate school [170:22] i had a friend uh hired out of harvard [170:24] 20 years ago at [170:25] netscape and we talked about harvard and [170:28] he said yeah they're still professors [170:29] are great on the curve and i said oh [170:31] yeah i don't think they're any doing [170:32] that at stanford [170:33] and he said oh it was shocking some of [170:35] the students got c's and d's and they [170:36] were crying [170:37] it's like yes that's right the the [170:38] precious deers can't take that at [170:40] stanford so they get a's and b's [170:42] yeah now you look at china and people [170:44] say what you all about china [170:46] they improve russia too a lot of math [170:48] science training a lot of [170:50] engineering a lot of people who are [170:52] doing their [170:53] course work to get the a's and b's so um [170:57] i'm an american i'm born in the fourth [170:58] of july i'm early [171:00] fourth of july yeah wow and america as i [171:03] say fundamentally is a commercial [171:04] republic you can try to make it [171:05] something else you can say it's the new [171:07] atlantis and mystify it [171:08] you could you could talk about it in a [171:10] more i think correct way which is 13 [171:11] colonies that grew and then [171:13] there's a lot of local or written [171:15] original design anyway the federal [171:17] federalist papers talk about this [171:18] there's a lot of subsidiarity [171:20] but that's that's been eroded over time [171:23] and [171:24] like i say a lot of the offshoring has [171:26] hurt so what happened with coronavirus [171:28] people working from home and at first it [171:30] was funny because i have friends at [171:31] google [171:32] who used to grumble that not only did [171:34] they have to come into the office [171:35] if they joined a different team that was [171:36] centered in a different office they had [171:38] to move [171:38] or you know if if the v8 team was [171:41] reconstituted in munich which it was [171:43] after lars bach just got tired of [171:45] javascript that they hired in munich or [171:47] they hired phds in germany and moved [171:49] them to munich [171:50] um with chronovirus everyone's working [171:51] from home and it's like what a relief i [171:53] can work for google from home [171:54] but then the next few dropped and people [171:56] started asking mark zuckerberg hey can i [171:58] move to [171:59] my hometown in the midwest yeah and he [172:01] said okay and they said oh can i keep [172:03] getting my silicon valley pay [172:05] no we're going to figure out what your [172:07] cost of living there is and we're going [172:08] to adjust your pay accordingly [172:10] and and these colonies and these little [172:12] mini experiments that all combine to the [172:13] big giant experiment i [172:15] have a i don't know i have this uh [172:19] vision of america which that country i [172:20] was born in russia like i said here and [172:22] this is [172:22] truly a wonderful country i'm i wasn't [172:25] born in the fourth of july people still [172:28] i still and i'm uh red-blooded american [172:31] at this point and i [172:32] have a sense that we figured it out [172:34] somehow if silicon valley burns another [172:37] place will come up in this place [172:38] that even more innovation and people [172:40] will move and [172:42] the remote work might change [172:44] fundamentally how we work [172:46] or might not it might just give you the [172:48] freedom to then create [172:49] many other small silicon valleys [172:51] throughout the place like austin [172:52] included but other places as well [172:54] and we somehow figure it figure it out [172:57] and uh [172:58] i think that's that's true that there [173:00] will be more mobility and maybe new [173:02] places that come up [173:03] i don't know if silicon valley has you [173:05] know [173:06] passed some sell-by date because [173:09] it did hurt the the chronovirus hurt the [173:11] lockdowns hurt and the fact in the sense [173:13] that [173:13] part of what keeps things going is [173:15] social and so a lot of young people [173:17] even before coronavirus moved to san [173:18] francisco it was very strange to watch [173:20] because in the 80s we all lived in the [173:22] valley and [173:23] it was less populated in san francisco [173:25] it was grungier it was more like [173:26] dirty harry in the 70s yes but but by [173:29] the 90s [173:30] uh and jamie runs a nightclub there and [173:31] he's talked about this you had sort of [173:33] wealthy tech people moving in south of [173:35] market fancy townhouses being built [173:37] and uh that's continued and such a point [173:39] that it's almost like [173:40] what's the movie by the south african [173:42] director nell's jody foster up in the [173:44] space [173:44] colony uh matt damon is the guy on the [173:47] earth who has to go up and [173:48] anyway it's about the stratification [173:50] it's about the great inequality the [173:51] people in the space station have [173:53] like amazing medical auto docs that can [173:55] extend their life or save them cure [173:57] cancer [173:57] people on earth are all suffering ground [173:59] down in poverty [174:01] um and uh you know that sort of happened [174:05] while i was here you saw a lot of money [174:08] drive prices up along the narrow [174:11] peninsula and the single people wanted [174:12] nightlife so they were in the city [174:14] and the condos in the city got super [174:15] expensive and you i know [174:17] even google friends who are you know [174:19] socially responsible say we should have [174:21] more [174:22] housing built we should have yes in my [174:23] backyard not not in my backyard [174:25] but that's not happening as far as i can [174:28] tell and [174:29] from the government to the incumbent you [174:31] know landowners and renters [174:33] it's just not happening and that has to [174:36] drive people away i [174:37] i i appreciate that people come here and [174:39] you should wait for the prices to [174:41] monitor yeah [174:41] they will but um but a lot of people are [174:44] going to go where the [174:45] prices are lower you uh and [174:48] sorry facility questions here but just [174:50] looking back you have [174:52] created things have been part of [174:55] creating things [174:56] that have transformed this world the [174:58] world of technology [175:00] perhaps more than almost anything else [175:03] um [175:04] but you're still a human being and uh [175:08] unfortunately this ride ends do you ever [175:11] think about your own mortality [175:13] not too much i mean i'm i'm a roman [175:16] catholic so i [175:18] am not afraid of death i think a lot of [175:19] people who [175:21] um have problems with death [175:25] are suffering from some [175:29] lack of either faith in their [175:31] transcending death or [175:32] maybe they don't have children or they [175:34] feel like you know [175:36] they get later in life and they feel [175:37] like they they've missed opportunities [175:39] to do something that endures [175:40] and i i sympathize a lot because i i'm [175:43] old i got married fairly old so i [175:44] i understand all that i nothing human is [175:47] alien to me as [175:48] terence said uh but um [175:52] i don't fear it no what do you hope your [175:54] legacy is [175:56] it's gonna be javascript i think no i [175:59] think you know [175:59] my legacy has more to do with my [176:01] children and and their children i think [176:03] it also has to do with [176:05] um web standards it has to do with [176:06] things like brave [176:08] the things we did with firefox when we [176:10] did um [176:11] you know i'm not going to oversolve rape [176:12] but i think brave is important and we [176:14] will continue to prove this in a way [176:15] that [176:16] counts for many decades to come but even [176:18] firefox [176:19] whatever it's future fortune showed you [176:21] can restart the browser market this [176:23] thing you said about [176:24] people opting out and routing around you [176:26] don't need everybody to do that it's [176:28] more like telus stubborn minorities that [176:30] do that it's the lead users eric [176:32] hipple's lead users you can be a few [176:34] percent you can tilt the market [176:36] and that can be done in spite of the [176:38] incumbents the moneyed interests not [176:40] being in favor of what you're doing so [176:42] i think what we do with firefox won't be [176:44] forgotten and it needs to be done more [176:46] and we're doing it brave and you could [176:47] argue that other projects are doing in [176:48] some ways blockchain is doing it [176:50] the robinhood uh takedown uh [176:54] the use of uh robin hood by the the wall [176:56] street vets kids [176:58] yeah similar so yeah that that kind of [177:00] spirit endures and i think it [177:01] um in some ways it's american right it's [177:04] uh it's not hard revolutionary it's not [177:06] trying to burn the past and [177:08] destroy everything it's more like we [177:11] have these certain let's say um [177:14] rights we have duties too so there's [177:16] some debate about which comes first in [177:17] american [177:18] jurisprudence and the founding documents [177:20] but as long as things are working [177:22] we'll we'll we'll be like pragmatic [177:25] americans like um [177:26] de tocqueville described in his writings [177:29] but if if things get too out of whack [177:30] for one reason or another [177:32] uh too unequal too oligarchic and [177:34] abusive [177:35] we're going to start our rights and even [177:37] a few of us can do it and even in the [177:39] american revolution it was a minority [177:41] who fought and put their [177:42] you know lives treasure and sacred honor [177:45] at stake it was [177:46] a bunch of people went to you know upper [177:48] canada i think it was called uh [177:50] ontario yeah that's the beautiful i mean [177:52] that's that is [177:53] at the core where your work stands for [177:54] is that a few people can have [177:57] the power to transform society with just [178:00] a few radical ideas with just a little [178:02] bit of code [178:03] yeah change the world got to do it and [178:05] that's empowering and that is the [178:06] american way that's why this country is [178:08] i believe the greatest country on earth [178:10] that's not over [178:11] rometz says it too much but uh i think [178:13] some special things [178:15] have already happened in this country [178:17] and will continue to happen and that's [178:19] and that spirit can continue no matter [178:20] you know who comes here [178:22] they can they can adopt those folk ways [178:24] and that spirit [178:25] brandon i said i can't tell you how much [178:27] i was freaking out how much of an honor [178:29] just to talk to you you're an incredible [178:30] human being it's one of my favorite [178:32] conversations ever [178:33] thank you so much for wasting all this [178:34] time with me i really appreciate it oh [178:36] it seems like a breeze [178:37] my pleasure thank you for listening to [178:40] this conversation with brandon nike [178:42] and thank you to our sponsors jordan [178:44] harbinger's show sun basket meal [178:46] delivery service [178:48] better help online therapy and eight [178:50] sleep self-cooling mattress [178:52] click the sponsor links to get a [178:54] discount and to support this podcast [178:56] and now let me leave you with some words [178:58] from jeff atwood [179:00] any app that can be written in [179:02] javascript will eventually [179:04] be written in javascript thank you for [179:07] listening [179:07] and hope to see you next time [179:18] you