keynote, lambdaconf 2015 - ipecac for the ouroboros
TRANSCRIPT
![Page 1: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/1.jpg)
Suffuse: Ipecac for the
Ouroboros
Paul PhillipsLambdaConf 2015,
Boulder CO
1
![Page 2: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/2.jpg)
Compatibility means deliberately repeating
other people's mistakes.— David Wheeler
2
![Page 3: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/4.jpg)
..... who am was I? .....
4
![Page 5: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/7.jpg)
7
![Page 8: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/16.jpg)
16
![Page 17: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/17.jpg)
17
![Page 18: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/18.jpg)
18
![Page 19: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/19.jpg)
19
![Page 20: Keynote, LambdaConf 2015 - Ipecac for the Ouroboros](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/20.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042608/55cdb897bb61eb8e158b4729/html5/thumbnails/22.jpg)
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