00:18:51  * mikealquit (Read error: Connection reset by peer)
00:18:54  * mikeal1joined
00:24:09  * st_lukejoined
00:24:10  <tanepiper>heh, i wonder with shoe if I even need dnode now ? :D
00:24:31  <tanepiper>i could justs set up shoe channels and stream requests to and from
00:24:53  <SubStack>the number of channels you can set up is limited
00:24:55  <SubStack>by browsers
00:25:14  <SubStack>but you could use a mux/demux to fix that
00:25:17  <tanepiper>maxogden: that video streaming is awesome :D
00:25:48  <tanepiper>yea i saw that module SubStack
00:26:48  <SubStack>I need to take a close look at the api
00:26:57  <SubStack>I might have something simpler that could work
00:31:30  <Raynos>SubStack: Thanks for ap.
00:31:32  <SubStack>I also want something that can do QoS at some point
00:31:58  <Raynos>I dont know whether it's a good or bad thing when I have "I need a small module with two functions to do two specific useful things. Oh wait substack already wrote that"
00:32:52  <SubStack>there are so many tiny orthogonal modules in the space of all possible modules!
00:32:56  <SubStack>so many more to be written
00:32:58  <SubStack>all very tiny
00:33:26  <SubStack>tiny modules are however finitely bounded if we establish an upper bound for size
00:33:45  <SubStack>that might explain why you report a lack of sparseness!
00:34:39  <SubStack>dominictarr: no fair using undocumented es.stringify() :p
00:35:46  * tilgoviquit (Remote host closed the connection)
00:36:30  <SubStack>in mux-demux
00:37:58  <Raynos>SubStack: Do you have a toArray utility or just call [].slice.call(arguments) everywhere?
00:39:12  <SubStack>the latter
00:54:44  <Raynos>SubStack: https://github.com/substack/node-ap/pull/1
00:54:50  <Raynos>accept and bump version please
00:54:57  <SubStack>k
00:55:19  <SubStack>it sucks in javascript how you can't .call or .apply the .call and .apply functions
00:55:26  <SubStack>not very meta!
00:58:47  <rowbit>Hourly usage stats: []
01:00:02  <Raynos>you can't ?
01:04:04  * blakmatrixquit (Ping timeout: 272 seconds)
01:07:39  <st_luke>not very metal
01:07:49  <st_luke>SubStack: that music video is awesome
01:14:37  <SubStack>st_luke: dominictarr is in it!
01:15:23  <st_luke>shit really
01:15:24  <st_luke>badass
01:18:10  <SubStack>free wifi / hack the planet
01:18:13  <SubStack>is him
01:25:36  * blakmatrixjoined
01:33:02  <tanepiper>SubStack: could you not just do some kind of recursive bind?
01:33:30  <SubStack>tanepiper: I just wanted to do a sweet array concat one-liner
01:33:37  <SubStack>but javascript wouldn't have it
01:38:11  <SubStack>dominictarr: oh sweet maybe I can use the extra options hash in create{Read,Write}Stream to pass along QoS
01:58:47  <rowbit>Hourly usage stats: []
02:02:11  <maxogden>tanepiper: thanks, its pretty slow though cause browser video capture is slow
02:09:48  <SubStack>woot, browser output comes back to the terminal in the new testling
02:09:54  <SubStack>using shoe and JSONStream
02:10:21  <SubStack>and the readable source stream is tap :D
02:12:20  * zz_shykeschanged nick to shykes
02:12:24  <st_luke>I had an excuse to use jsonstream the other day, it was awesome
02:12:27  <st_luke>super fun
02:18:02  * ryan_stevensjoined
02:22:47  * st_luke_joined
02:29:51  * st_luke_quit (Remote host closed the connection)
02:30:39  * st_lukequit
02:30:54  * st_lukejoined
02:41:53  * e1venjoined
02:44:01  * e1venquit (Changing host)
02:44:01  * e1venjoined
02:58:47  <rowbit>Hourly usage stats: []
03:57:27  * shykeschanged nick to zz_shykes
03:58:47  <rowbit>Hourly usage stats: []
04:12:17  * e1venquit (Quit: Textual IRC Client: http://www.textualapp.com/)
04:20:23  <dominictarr>Raynos, I bet you can call .call.call if you assing .call.call = Function.prototype.call
04:21:28  <dominictarr>SubStack, yeah, mux-demux just wraps remote-events and browser-stream
04:22:20  <dominictarr>I'm contemplating ID|LENGTH|PACKET
04:23:07  <dominictarr>but I did it that way because if I did it that way I would be finished that evening
04:23:12  <dominictarr>which I was
04:23:38  <dominictarr>pull request welcome
04:47:20  <dominictarr>SubStack, you removed crypto-browserify ?
04:49:06  <dominictarr>from browserify
04:58:47  <rowbit>Hourly usage stats: []
05:08:21  <maxogden>IM HACKIN ON WEB AUDIO STUFF it is fun
05:20:30  <maxogden>funklet.com is amazing
05:26:46  * ryan_stevensquit (Quit: Leaving.)
05:58:47  <rowbit>Hourly usage stats: []
06:13:09  * stlsaintquit (Quit: leaving)
06:33:34  <st_luke>holy shit
06:42:10  <rowbit>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
06:45:51  <maxogden>WEWT
06:48:22  * blakmatrixquit (Read error: Connection reset by peer)
06:58:47  <rowbit>Hourly usage stats: []
07:12:15  <dominictarr>maxogden, I have an idea I want to do for audio: a computer drum circle.
07:12:39  <dominictarr>basically, you all have little sequencer things, and can make patterns
07:13:10  <dominictarr>but you can also hear other people's patterns, which play in time with yours
07:13:25  <dominictarr>but here is the best part: you can mute the people you don't like!
07:15:06  <maxogden>haha
07:15:10  <maxogden>im kind of building that
07:15:20  <maxogden>mute is a good idea
07:15:33  <maxogden>im trying to figure out how streams can be useful for the web audio api
07:58:47  <rowbit>Hourly usage stats: []
08:10:27  <SubStack>uh oh, didn't upgrade
08:10:34  <SubStack>dominictarr: did I!!
08:11:47  <SubStack>dominictarr: looks like it's still in the package.json
08:11:55  <SubStack>does it not work anymore?
08:16:42  <SubStack>fixed that account manually
08:29:39  <tanepiper>maxogden: would you mind if I used your code to demo streams?
08:45:11  * sveisveiquit (Quit: Connection closed for inactivity)
08:58:47  <rowbit>Hourly usage stats: []
09:58:47  <rowbit>Hourly usage stats: []
10:34:51  <tanepiper>dominictarr: should i be able to pipe a es.map stream or not?
10:35:14  <tanepiper>or only a es.streamable >
10:35:16  <tanepiper>?
10:36:02  <tanepiper>eh, .pipeable
10:41:44  <SubStack>es.map is readable/writable
10:42:15  <SubStack>NOTE: I shall use the term "through stream" to refer to a stream that is writable and readable.
10:42:33  <SubStack>map (asyncFunction) Create a through stream from an asyncronous function.
10:52:14  * AvianFluquit (Ping timeout: 244 seconds)
10:55:28  * AvianFlujoined
10:58:47  <rowbit>Hourly usage stats: []
11:17:10  * st_lukequit (Remote host closed the connection)
11:39:12  * AvianFluquit (Ping timeout: 244 seconds)
11:44:37  <SubStack>https://github.com/substack/node-brake
11:44:52  <SubStack>all the other throttling libs I looked at didn't implement backpressure
11:45:03  <SubStack>now I can experiment with QoS :D
11:45:13  <SubStack>on top of mux-demux
11:48:41  <tanepiper>another new module!
11:48:47  <tanepiper>i just saw it pop up on my twitter stream
11:58:47  <rowbit>Hourly usage stats: []
12:55:31  <dominictarr>tanepiper, yes you should be able to pipe map. maybe you arn't calling a callback?
12:55:43  <dominictarr>what is happening?
12:55:50  <SubStack>beep boop
12:56:13  <dominictarr>hey
12:58:27  <SubStack>thinking about how QoS could be implemented on top of a mux/demux
12:58:36  <dominictarr>SubStack, builtins/crypto had been renamed to bulitins/_crypto on master
12:58:47  <rowbit>Hourly usage stats: []
12:59:06  <dominictarr>yeah, there are a few options.
12:59:21  <SubStack>dominictarr: browserify doesn't use builtins/ it tries to require.resolve(name + '-browserify')
12:59:37  <SubStack>and crypto is a dependency so that would normally work
12:59:45  <SubStack>crypto-browserify I mean
13:02:49  <dominictarr>hmm, if I run ./bin/cmd.js it works
13:02:58  <dominictarr>but if I npm install -g
13:03:08  <dominictarr>and then browserify it doesn't
13:05:30  <SubStack>oh I see why
13:05:35  <SubStack>it has to do with how paths get normalized
13:05:36  <SubStack>require.define("/home/substack/projects/node-browserify/node_modules/crypto-browserify/package.json",function(require,module,exports,__dirname,__filename,process){module.exports = {}});
13:05:42  <SubStack>I see that in the bundle output
13:06:03  <SubStack>so I need to add a check in bundle()'s re-targetting logic
13:07:58  <dominictarr>cool
13:15:01  <dominictarr>SubStack, you might want to throttle mux-demux overall. and pause the busyiest stream.
13:15:23  <dominictarr>but you would want to keep it fair.
13:16:10  <dominictarr>another approach would be to use a tcp like standoff.
13:16:38  <SubStack>I was thinking that you give every stream a QoS quota
13:16:55  <dominictarr>where it slows down (exponentially) on pause, then speeds up (linearly) on resume.
13:17:07  <SubStack>and the algorithm allots according to the total allotted quota
13:17:40  <SubStack>md.createWriteStream('bulk', 1)
13:17:48  <SubStack>md.createWriteStream('priority', 100)
13:17:51  <SubStack>something like that
13:18:09  <dominictarr>oh, so it pauses who is using more than their share, once everyone goes over?
13:18:21  <SubStack>yep
13:18:41  <dominictarr>thats good.
13:18:49  <dominictarr>you could also use pauses another way.
13:19:02  <dominictarr>consider a infinite scroll based on a stream.
13:19:34  <dominictarr>it would pipe from some serverside query through websockets, then to the dom.
13:20:05  <dominictarr>but you could have the dom stream pause if the element last drawn is below the bottom of the screen.
13:20:22  <dominictarr>and then resume when it becomes visible
13:21:59  <dominictarr>this would require sending the pause events, which mux-demux does.
13:22:41  <SubStack>hah totally
13:30:05  <dominictarr>so there are multiple use-cases.
13:46:25  <tanepiper>dominictarr: https://gist.github.com/3ea063c0f3b74c25bc44
13:47:05  <tanepiper>this is how I am using map, i was testing it by doing fs.createWriteStream().pipe(process_tweet), with process_tweet being the instance
13:47:29  <tanepiper>(although i wonder if there is a better way to do it)
13:48:09  <tanepiper>at the moment, I am using callbacks to pass this too, ideally it would be a stream i'd pipe over shoe so something like incoming.pipe(process_tweet).pipe(shoe)
13:52:44  <tanepiper>(then i'm thinking something like maxogden's domnode to stream directly to the dom, since i;m pre-rendering the template on the server side)
13:58:47  <rowbit>Hourly usage stats: []
14:02:34  <rowbit>SubStack, pkrumins: Encoders down:
14:06:04  <rowbit>SubStack, pkrumins: Encoders down:
14:11:57  <SubStack>dominictarr: npm install -g [email protected]
14:28:15  <dominictarr>IT WORKS!
14:28:24  <dominictarr>THANKS
14:28:37  <tanepiper>i just wrote a horrible, horrible bit of code :|
14:30:20  <dominictarr>tanepiper, you mean fs.createReadStream().pipe(process_tweet) ?
14:30:37  <tanepiper>no
14:31:11  <tanepiper>https://gist.github.com/7759d14b58963e46fe2e
14:31:23  <tanepiper>this is why i need to get up and running with mux/demux
14:31:32  <tanepiper>so i have have incoming stream channels
14:33:59  <dominictarr>yeah, the trouble is that some of the other apis you are using arn't streams
14:34:27  <tanepiper>yea, i have to mix restful and streaming apis
14:35:27  <dominictarr>I have an idea for that: but never got around to implementing it.
14:35:32  <dominictarr>PageStream
14:36:02  <dominictarr>you'd just define the pagination scheme, and then it would work like a streaming read.
14:36:16  <tanepiper>could be interesting
14:36:28  <SubStack>it'd be sweet if MuxDemux instances were themselves streams
14:36:59  <tanepiper>http://memegenerator.net/instance/22453504
14:37:41  <dominictarr>so, var m = new MuxDemux() ; m.pipe(con).pipe(m)
14:38:14  <SubStack>yeah
14:38:37  <dominictarr>I think thats doable.
14:39:32  <dominictarr>it wouldn't make too many problems, since all the streams die on a disconnect anyway.
14:42:36  * stlsaintjoined
14:54:00  <dominictarr>hmm, maybe it's gonna require some refactor of remote-events
14:55:47  <dominictarr>trouble is that remote events thinks it's connected when it pipes. and stops buffering...
14:55:59  <dominictarr>aha I know. it just needs a buffer stream at the end.
14:58:15  <dominictarr>hmm. that would take more refacters in es.duplex
14:58:47  <rowbit>Hourly usage stats: []
15:02:59  <dominictarr>oh no. previously, I was allowing to call createStream, before the getMuxDemuxStream() was called (and the stream was created) which was buffering the createStream messages.
15:03:15  <dominictarr>but I could reasonably remove that feature.
15:04:55  <dominictarr>but, later. need sleep.
15:06:54  * dominictarrchanged nick to dominic_is_sleep
15:58:47  <rowbit>Hourly usage stats: []
16:02:48  <maxogden>tanepiper: use whateva you want. bonus points if you record your presentation and put it on youtube
16:15:14  <tanepiper>the conference should be recording it
16:15:31  <tanepiper>but i thought the video example would be a good "LOOK AT FUCKING STREAMS!" demo
16:21:51  <maxogden>im working on a web audio api streams demo
16:22:19  <maxogden>i wish there was a decent way of capturing microphone input tough
16:22:21  <maxogden>though*
16:22:52  <tanepiper>isn't there and <input type="speech"> tag or something, that google use?
16:23:43  <maxogden>yea the audio goes to googles servers
16:26:59  <tanepiper>mehh
16:32:39  <chapel>tanepiper: you should screen record before or during
16:46:28  * mikeal1quit (Quit: Leaving.)
16:58:47  <rowbit>Hourly usage stats: []
17:04:20  <tanepiper>chapel: any recommendations for the mac?
17:06:19  <tanepiper>Anyone want the domain hackno.de ? - I was going to take it but *too much effort*
17:14:24  <chapel>tanepiper: quicktime
17:14:28  <chapel>screenflow I think
17:46:11  * tilgovijoined
17:52:29  * AvianFlujoined
17:55:34  <rowbit>SubStack, pkrumins: Encoders down:
17:58:47  <rowbit>Hourly usage stats: []
18:01:59  * saijanai_joined
18:23:52  * mikealjoined
18:52:40  * mikealquit (Quit: Leaving.)
18:53:01  <tanepiper>woo compiling node 0.8 is making my air hot
18:58:47  <rowbit>Hourly usage stats: []
19:12:41  <yorick>SubStack: do you think it's possible to see what is going on at https://github.com/substack/fleet/issues/6 , I think fleet is amazing and I'm looking forward to using it, but this issue currently makes it unusable :/
19:17:32  * zz_shykeschanged nick to shykes
19:18:35  * AvianFluquit (Ping timeout: 250 seconds)
19:53:03  * AvianFlujoined
19:58:47  <rowbit>Daily usage stats: []
19:58:48  <rowbit>Hourly usage stats: []
20:03:31  * AvianFluquit (Ping timeout: 244 seconds)
20:10:49  * AvianFlujoined
20:19:26  * AvianFluquit (Ping timeout: 240 seconds)
20:25:42  * shykeschanged nick to zz_shykes
20:29:07  * zz_shykeschanged nick to shykes
20:30:25  * shykeschanged nick to zz_shykes
20:43:52  * AvianFlujoined
20:58:47  <rowbit>Hourly usage stats: []
20:59:44  * ryan_stevensjoined
21:24:01  * dominic_is_sleepquit (Remote host closed the connection)
21:26:18  * mikealjoined
21:58:47  <rowbit>Hourly usage stats: []
22:01:23  <jesusabdullah>SubStack: Can you do me a favor and feed Bird?
22:01:57  <jesusabdullah>SubStack: He'll be pretty hungry so you'll probably want to distract him with a millet spray on top of his cage
22:02:07  <jesusabdullah>SubStack: Then you can pour some birdseed into his feeder
22:31:19  <SubStack>k
22:35:48  * tilgoviquit (Ping timeout: 260 seconds)
22:46:39  * tilgovijoined
22:56:05  * tilgoviquit (Ping timeout: 248 seconds)
22:58:47  <rowbit>Hourly usage stats: []
23:27:45  * mikealquit (Quit: Leaving.)
23:28:44  * mikealjoined
23:56:49  <chapel>tanepiper: ping
23:58:47  <rowbit>Hourly usage stats: []