keynote, lambdaconf 2015 - ipecac for the ouroboros
TRANSCRIPT
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