00:18:51
| * mikeal | quit (Read error: Connection reset by peer) |
00:18:54
| * mikeal1 | joined |
00:24:09
| * st_luke | joined |
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
| * tilgovi | quit (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
| * blakmatrix | quit (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
| * blakmatrix | joined |
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_shykes | changed 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_stevens | joined |
02:22:47
| * st_luke_ | joined |
02:29:51
| * st_luke_ | quit (Remote host closed the connection) |
02:30:39
| * st_luke | quit |
02:30:54
| * st_luke | joined |
02:41:53
| * e1ven | joined |
02:44:01
| * e1ven | quit (Changing host) |
02:44:01
| * e1ven | joined |
02:58:47
| <rowbit> | Hourly usage stats: [] |
03:57:27
| * shykes | changed nick to zz_shykes |
03:58:47
| <rowbit> | Hourly usage stats: [] |
04:12:17
| * e1ven | quit (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_stevens | quit (Quit: Leaving.) |
05:58:47
| <rowbit> | Hourly usage stats: [] |
06:13:09
| * stlsaint | quit (Quit: leaving) |
06:33:34
| <st_luke> | holy shit |
06:42:10
| <rowbit> | /!\ ATTENTION: (default-local) dkords@... successfully signed up for developer browserling plan ($20). Cash money! /!\ |
06:45:51
| <maxogden> | WEWT |
06:48:22
| * blakmatrix | quit (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
| * sveisvei | quit (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
| * AvianFlu | quit (Ping timeout: 244 seconds) |
10:55:28
| * AvianFlu | joined |
10:58:47
| <rowbit> | Hourly usage stats: [] |
11:17:10
| * st_luke | quit (Remote host closed the connection) |
11:39:12
| * AvianFlu | quit (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: 50.57.174.109(free2) |
14:06:04
| <rowbit> | SubStack, pkrumins: Encoders down: 50.57.174.109(free2) |
14:11:57
| <SubStack> | dominictarr: npm install -g browserify@1.13.3 |
14:28:15
| <dominictarr> | IT WORKS! |
14:28:17
| <LOUDBOT> | I HOPE YOUR HAPPY, FACEBOOK JERKS |
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
| * stlsaint | joined |
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
| * dominictarr | changed 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
| * mikeal1 | quit (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
| * tilgovi | joined |
17:52:29
| * AvianFlu | joined |
17:55:34
| <rowbit> | SubStack, pkrumins: Encoders down: 50.57.174.109(free2) |
17:58:47
| <rowbit> | Hourly usage stats: [] |
18:01:59
| * saijanai_ | joined |
18:23:52
| * mikeal | joined |
18:52:40
| * mikeal | quit (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_shykes | changed nick to shykes |
19:18:35
| * AvianFlu | quit (Ping timeout: 250 seconds) |
19:53:03
| * AvianFlu | joined |
19:58:47
| <rowbit> | Daily usage stats: [] |
19:58:48
| <rowbit> | Hourly usage stats: [] |
20:03:31
| * AvianFlu | quit (Ping timeout: 244 seconds) |
20:10:49
| * AvianFlu | joined |
20:19:26
| * AvianFlu | quit (Ping timeout: 240 seconds) |
20:25:42
| * shykes | changed nick to zz_shykes |
20:29:07
| * zz_shykes | changed nick to shykes |
20:30:25
| * shykes | changed nick to zz_shykes |
20:43:52
| * AvianFlu | joined |
20:58:47
| <rowbit> | Hourly usage stats: [] |
20:59:44
| * ryan_stevens | joined |
21:24:01
| * dominic_is_sleep | quit (Remote host closed the connection) |
21:26:18
| * mikeal | joined |
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
| * tilgovi | quit (Ping timeout: 260 seconds) |
22:46:39
| * tilgovi | joined |
22:56:05
| * tilgovi | quit (Ping timeout: 248 seconds) |
22:58:47
| <rowbit> | Hourly usage stats: [] |
23:27:45
| * mikeal | quit (Quit: Leaving.) |
23:28:44
| * mikeal | joined |
23:56:49
| <chapel> | tanepiper: ping |
23:58:47
| <rowbit> | Hourly usage stats: [] |