keynote, lambdaconf 2015 - ipecac for the ouroboros

22
Suffuse: Ipecac for the Ouroboros Paul Phillips LambdaConf 2015, Boulder CO 1

Upload: paul-phillips

Post on 14-Aug-2015

1.832 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

Suffuse: Ipecac for the

Ouroboros

Paul PhillipsLambdaConf 2015,

Boulder CO

1

Page 2: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

Compatibility means deliberately repeating

other people's mistakes.— David Wheeler

2

Page 3: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

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

Page 4: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

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

4

Page 5: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

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

Page 6: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

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

Page 7: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

7

Page 8: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

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

Page 9: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

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

Page 10: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

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

Page 11: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

Dataflow

• values recomputed automatically on-demand

• canonical example is a spreadsheet

• virtual files also offer this property

• call them reactive files

11

Page 12: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

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

Page 13: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

What is being described?

• Immutable

• Statically typed (with inference)

• Lazily computed

• Unbounded size

• Safe for concurrent access

13

Page 14: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

What is being described?

• Immutable

• Statically typed (with inference)

• Lazily computed

• Unbounded size

• Safe for concurrent access

14

Page 15: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

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

Page 16: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

16

Page 17: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

17

Page 18: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

18

Page 19: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

19

Page 20: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

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

Page 21: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

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

Page 22: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros

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