Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

Post on 14-Aug-2015

1.832 views 0 download

Tags:

Transcript of Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

Suffuse: Ipecac for the

Ouroboros

Paul PhillipsLambdaConf 2015,

Boulder CO

1

Compatibility means deliberately repeating

other people's mistakes.— David Wheeler

2

Suffuse is snake oil• not oil from snakes - oil for snakes

• snake is compatibility, syrup of ipecac induces vomiting

• imagine life in a pure functional environment

• simpler, more secure, more convenient, more power

• yet 100% compatible with dysfunctional environments

3

..... who am was I? .....

4

30 minutes!?

• I was failing to whittle down to 90 minutes

• ...when I found out I had 30

• For much more join me in Room 206 right after this

• "The Virtual Filesystem: This Changes Everything"

5

Pervasive file virtualization• applications span a staggering variety of issues

• renders obsolete entire classes of software

• could transform software development practice

• the best idea I've ever had

6

7

Intentionally vague definitions• A path is a restricted form of string

• A file is what you find in a filesystem

• A filesystem maps paths to files

• Metadata is what a filesystem knows about its files

• Critical that data is lazier than metadata

8

Unassume: the position

• it can be hard to see past one's familiar assumptions

• a regular file is not an array of bytes

• a directory is not a list of its contents

• a symbolic link is not a pointer to a path

• Each is a program!

9

The universal API

• Files are hooks into every program

• No modifications to programs are needed

• a directory is a virtual filesystem

• a link is a virtual reference

• a file is a virtual data channel

10

Dataflow

• values recomputed automatically on-demand

• canonical example is a spreadsheet

• virtual files also offer this property

• call them reactive files

11

Continuous consistency

• how to ensure fresh derived files?

• status quo is imperative/push

• A := A' ; B := f(A)

• suffuse is functional/pull

• B = f(A)

• B cached, updated only if A dirty

12

What is being described?

• Immutable

• Statically typed (with inference)

• Lazily computed

• Unbounded size

• Safe for concurrent access

13

What is being described?

• Immutable

• Statically typed (with inference)

• Lazily computed

• Unbounded size

• Safe for concurrent access

14

Sources of inspiration• maybe you expect to hear plan9, fuse, ...

• we live in perpetual ignorance of previous work

• has everyone studied the writings of Mary Ann Hoberman?

• her magnum opus is "A House is a House For Me!"

15

16

17

18

19

A json's a house for a map of mapsA map is a house for its keysEach key/value pairis a newly built lairThis continues as long as you please

A var is a house for a bug, a bugA thread is a house for deadlockAnd it's a safe betthat your technical debthas the nicest house on the whole block

20

M.A. Hoberman on the art of programming

1. How Do I Go? (1958)

2. Bugs (1976)

3. Mr. and Mrs. Muddle (1988)

4. One of Each (1997)

5. All Kinds of Families! (2009)

21

Coming up next in "This Changes Everything"

• container transparency

• typed files, immutable files, metafiles

• lazy files, implicit files, reactive files

• virtual (data/metadata-driven) paths

• process persistence/portability

• and much much more

22