The Literate Programmer Cargo Cult Open Source Wes

  • Slides: 30
Download presentation
The Literate Programmer: Cargo Cult Open Source Wes Chow Cortico @ MIT Media Lab

The Literate Programmer: Cargo Cult Open Source Wes Chow Cortico @ MIT Media Lab @weschow

Poul-Henning Kamp

Poul-Henning Kamp

1. Free. BSD Jails (2000)

1. Free. BSD Jails (2000)

2. Bikeshedding

2. Bikeshedding

3. Varnish

3. Varnish

Web Proxy

Web Proxy

Reverse Proxy

Reverse Proxy

Squid

Squid

1975 Programming

1975 Programming

Language Memory Allocation Hierarchy 1. By instance / object (Python, Ruby, Java, …) 2.

Language Memory Allocation Hierarchy 1. By instance / object (Python, Ruby, Java, …) 2. By array (C) 3. By page (we’ll get to this…)

The Allocation Dance 1. 2. 3. 4. 5. 6. Program A: “I want 800

The Allocation Dance 1. 2. 3. 4. 5. 6. Program A: “I want 800 bytes. ” OS: Take [0 - 799] Program B: “I want 1000 bytes. ” OS: Take [800 - 1799] Program A: “I want 30 bytes. ” OS: Take [1800 - 1829] A owns [0 - 799], [1800 - 1829] B owns [800 -1799]

Virtual Addressing

Virtual Addressing

Numbers You Should Know

Numbers You Should Know

Memory Fragmentation

Memory Fragmentation

1975 Programming

1975 Programming

Document Store

Document Store

Least Recently Used Discards the least recently used items first. In other words, keep

Least Recently Used Discards the least recently used items first. In other words, keep what you last accessed.

Stonebraker, 1981

Stonebraker, 1981

Intuition: documents not ordered by time { { { … { _id: 1000, username:

Intuition: documents not ordered by time { { { … { _id: 1000, username: ‘carol’, phone: ‘ 917 -123 -1000’ } _id: 1001, username: ‘alice’, phone: ‘ 917 -123 -1001’ } _id: 1002, username: ‘zed’, phone: ‘ 917 -123 -1002’ } _id: 9999, username: ‘bob’, phone: ‘ 917 -123 -9999’ }

Foursquare Outage

Foursquare Outage

Swiss Cheese { { { … _id: 1000, username: ‘carol’, phone: ‘ 917 -123

Swiss Cheese { { { … _id: 1000, username: ‘carol’, phone: ‘ 917 -123 -1000’ } _id: 1001, username: ‘alice’, phone: ‘ 917 -123 -1001’ } _id: 1002, username: ‘zed’, phone: ‘ 917 -123 -1002’ } _id: 9999, username: ‘bob’, phone: ‘ 917 -123 -9999’ } { _id: 1000, username: ‘carol’, phone: ‘ 917 -123 -1000’ { [deleted] { _id: 1002, username: ‘zed’, phone: ‘ 917 -123 -1002’ … { _id: 9999, username: ‘bob’, phone: ‘ 917 -123 -9999’ … } }

Mongo. DB is Web Scale

Mongo. DB is Web Scale

What’s Going On? 1. Mongo. DB transitioned from a dogfooded database into a VC

What’s Going On? 1. Mongo. DB transitioned from a dogfooded database into a VC backed venture. 2. Data is inertia. 3. 10 gen didn’t have any big data use cases.

Kafka Design

Kafka Design

Ethics of. . . 1. Vendors & Marketers (and problem statement alignment) 2. Consumers

Ethics of. . . 1. Vendors & Marketers (and problem statement alignment) 2. Consumers 3. Developers

The Cargo Cult

The Cargo Cult

Principles 1. Don’t fool yourself. 2. Don’t fool others.

Principles 1. Don’t fool yourself. 2. Don’t fool others.

Principles 1. Don’t fool yourself. 2. Don’t fool others. 3. Debate ideas and code,

Principles 1. Don’t fool yourself. 2. Don’t fool others. 3. Debate ideas and code, not people.

“I wish to you the good luck to be somewhere you are free to

“I wish to you the good luck to be somewhere you are free to maintain the kind of integrity I have described, and where you do not feel forced by a need to maintain your position in the organization, or financial support, or so on, to lose your integrity. May you have that freedom. ” - Richard Feynman, 1974