Browse files

slides mostly fleshed out

  • Loading branch information...
0 parents commit 276ae9f5008677d73d924c7c9afc1ef53250e73f @substack committed Sep 25, 2012
24 abstract.txt
@@ -0,0 +1,24 @@
+composibility
+
+realtime is just full duplex.
+the original flow control.
+
+Node already has lots of abtractions for handling full duplex streams.
+Let's just use those.
+
+What should we look for in abstractions to handle streams?
+
+* shoe
+* mux-demux
+* pipe-able dnode
+* emit-stream
+* through
+* JSONStream
+* pause-stream
+* concat-stream
+
+and all of these just work with browserify so you can use the same streaming
+abstractions browser-side
+
+http streams too!
+* dnode over http
11 example/order.txt
@@ -0,0 +1,11 @@
+readable
+writable
+through
+pause
+JSONStream
+duplexer
+scuttlebutt
+emit-stream
+mux-demux
+shoe
+freestyle
BIN images/a_pipe_b_pipe_a.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN images/dnode.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN images/duplex_streams.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN images/duplexer.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN images/emit_stream_0.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN images/emit_stream_1.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN images/garden_hose.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN images/gossip_protocol.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN images/harnessing_streams.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN images/mux_demux.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN images/pause_stream.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN images/scuttlebutt.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN images/shoe.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
141 slides.markdown
@@ -0,0 +1,141 @@
+# harnessing streams
+
+![harnessing streams](images/harnessing_streams.png)
+
+# the way of IO
+
+"We should have some ways of connecting programs like garden hose--screw in
+another segment when it becomes when it becomes necessary to massage data in
+another way. This is the way of IO also."
+
+Doug McIlroy. October 11, 1964
+http://cm.bell-labs.com/who/dmr/mdmpipe.html
+
+![garden hose](images/garden_hose.png)
+
+# readable
+
+* fs.createReadStream()
+
+`example/readable`
+
+# writable
+
+* fs.createWriteStream()
+* concat-stream
+* delta-stream
+
+`example/writable`
+
+# through streams
+
+input to output
+
+filters, buffering
+
+* zlib.createGzip()
+* through
+
+`example/through`
+
+## buffering
+
+* pause-stream
+
+![pause-stream](images/pause_stream.png)
+
+`example/buffering`
+
+## throttling
+
+* (throttling lib)
+
+## parser/serialization streams
+
+* JSONStream
+* stream-serializer
+* trumpet
+* tap
+
+`example/JSONStream`
+
+# duplex streams
+
+Back and forth, like a telephone.
+
+![duplex streams](images/duplex_streams.png)
+
+When you see `a.pipe(b).pipe(a)` you've probably got a duplex stream.
+
+![a.pipe(b).pipe(a)](images/a_pipe_b_pipe_a.png)
+
+* duplexer
+
+`example/duplexer`
+
+![duplexer](images/duplexer.png)
+
+* http-duplexer
+
+## rpc
+
+* dnode
+
+![dnode](images/dnode.png)
+
+`example/dnode`
+
+## state synchronization
+
+* scuttlebutt
+
+![scuttlebutt](images/scuttlebutt.png)
+
+![gossip protocol](images/gossip_protocol.png)
+
+`example/scuttlebutt`
+
+# event streams
+
+* emit-stream
+
+![emit-stream 0](images/emit_stream_0.png)
+
+![emit-stream 1](images/emit_stream_1.png)
+
+`example/emit-stream`
+
+# streams inside streams
+
+* mux-demux
+
+![mux-demux](images/mux-demux.png)
+
+`example/mux-demux`
+
+# streams in the browser
+
+* browserify
+* shoe
+* domnode
+* sorta
+* graph-stream
+
+`example/shoe`
+
+# freestyle stream livecoding demo
+
+let's build a streaming webapp that:
+* synchronizes state across all users
+* listens on a server-side event emitter
+* has an rpc control interface
+
+FROM SCRATCH. OK GO.
+
+`example/freestyle`
+
+1. npm install all the things
+
+2. write the code
+
+3. the third step is you're done

0 comments on commit 276ae9f

Please sign in to comment.