12:44:00
| * dominictarr | quit (Quit: dominictarr) |
12:59:06
| * heathjs | changed nick to heath |
13:05:06
| * mikolalysenko | joined |
13:11:07
| * thl0 | quit (Remote host closed the connection) |
13:11:44
| * thl0 | joined |
13:16:18
| * thl0 | quit (Ping timeout: 264 seconds) |
13:24:50
| * yorick | joined |
13:24:51
| * yorick | quit (Changing host) |
13:24:51
| * yorick | joined |
13:34:48
| * spion | joined |
13:42:41
| * thl0 | joined |
13:51:14
| * dominictarr | joined |
13:53:53
| * marcello3d | quit (Remote host closed the connection) |
13:54:16
| * mikolalysenko | quit (Ping timeout: 258 seconds) |
14:06:51
| * dominictarr | quit (Quit: dominictarr) |
14:10:42
| * dominictarr | joined |
14:11:22
| * mikolalysenko | joined |
14:19:59
| * fallsemo | joined |
14:20:14
| * marcello3d | joined |
14:25:03
| * ralphtheninja | quit (Read error: Connection reset by peer) |
14:26:04
| * ralphtheninja | joined |
14:34:57
| * marcello3d | quit (Remote host closed the connection) |
14:34:59
| * fallsemo | quit (Quit: Leaving.) |
14:38:59
| * dguttman | joined |
14:41:30
| * spion | quit (Remote host closed the connection) |
14:47:35
| * defunctzombie_zz | changed nick to defunctzombie |
14:48:27
| * CryptoQuick | joined |
14:48:29
| * CryptoQuick | quit (Client Quit) |
14:49:36
| * marcello3d | joined |
14:51:40
| * mikeal | quit (Quit: Leaving.) |
14:52:25
| * fallsemo | joined |
14:54:58
| * dguttman_ | joined |
14:55:14
| * dguttman | quit (Ping timeout: 252 seconds) |
14:55:43
| * dguttman_ | changed nick to dguttman |
15:11:49
| * ITpro | joined |
15:12:52
| * mykola | joined |
15:17:58
| * dguttman_ | joined |
15:19:13
| * dguttman | quit (Ping timeout: 246 seconds) |
15:19:14
| * dguttman_ | changed nick to dguttman |
15:27:41
| * mikeal | joined |
15:35:47
| * dominictarr_ | joined |
15:37:56
| * dominictarr | quit (Ping timeout: 245 seconds) |
15:37:56
| * dominictarr_ | changed nick to dominictarr |
15:43:10
| * jcrugzz | joined |
15:47:30
| * mikolalysenko | quit (Ping timeout: 252 seconds) |
15:54:55
| * dominictarr | quit (Ping timeout: 240 seconds) |
15:57:06
| * dguttman | quit (Ping timeout: 264 seconds) |
15:57:16
| * dguttman | joined |
15:57:38
| * mikolalysenko | joined |
15:59:37
| * dominictarr | joined |
16:02:31
| * shama | joined |
16:03:40
| * Benvie | joined |
16:05:42
| * AvianFlu | joined |
16:06:16
| * dominictarr | quit (Ping timeout: 260 seconds) |
16:10:10
| * dominictarr | joined |
16:12:53
| * ins0mnia | quit (Ping timeout: 248 seconds) |
16:17:01
| * mikeal | quit (Quit: Leaving.) |
16:17:44
| * dominictarr | quit (Quit: dominictarr) |
16:25:07
| * dominictarr | joined |
16:30:23
| * mikolalysenko | quit (Ping timeout: 252 seconds) |
16:40:16
| * calvinfo | joined |
16:40:55
| * shuaib | joined |
16:41:41
| * marcello3d | quit (Remote host closed the connection) |
16:54:14
| * dominictarr | quit (Quit: dominictarr) |
16:57:52
| <juliangruber> | substack: can you help me with this one? https://gist.github.com/juliangruber/5303065 |
16:58:03
| <juliangruber> | module-deps piped to through doesn't work |
16:59:33
| * mikeal | joined |
17:02:33
| * shuaib | quit (Quit: Textual IRC Client: http://www.textualapp.com/) |
17:04:25
| * mikolalysenko | joined |
17:06:43
| * AvianFlu | quit (Remote host closed the connection) |
17:10:32
| * marcello3d | joined |
17:22:25
| * ryanseddon | quit (Ping timeout: 256 seconds) |
17:24:41
| * shuaib | joined |
17:38:14
| * ins0mnia | joined |
17:39:19
| <rowbit> | /!\ ATTENTION: (default-local) paid account successfully upgraded /!\ |
17:39:19
| <rowbit> | /!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\ |
17:39:52
| <pkrumins> | \o |
17:39:59
| <pkrumins> | |\ |
17:40:03
| <pkrumins> | / \ |
17:42:58
| * mykola | quit (Ping timeout: 245 seconds) |
17:52:38
| * jxson | joined |
17:52:49
| * jxson | quit (Remote host closed the connection) |
17:52:57
| * jxson | joined |
17:56:56
| * timoxley | quit (Quit: Computer has gone to sleep.) |
17:58:28
| <substack> | juliangruber: what if you through(function (buf) { console.log(buf) }) ? |
17:58:36
| * nicholas_ | quit (Read error: Connection reset by peer) |
17:59:08
| * nicholas_ | joined |
18:03:53
| <juliangruber> | ah I know |
18:04:06
| <juliangruber> | substack: It's because errors are emitted |
18:04:16
| <juliangruber> | wich is wanted, as not all files are present |
18:04:27
| <juliangruber> | but that fucks up the internal state of module-deps |
18:07:08
| <juliangruber> | how can I make module-deps skip files that should be in node_modules? |
18:08:40
| <juliangruber> | fixed it, will make a pr |
18:11:13
| <chrisdickinson> | btw the sha1 built into browserify is broken |
18:11:13
| * nicholas_ | quit (Read error: Connection reset by peer) |
18:11:24
| <chrisdickinson> | ): |
18:11:34
| <chrisdickinson> | http://npm.im/sha1 works though |
18:11:38
| <substack> | chrisdickinson: https://github.com/dominictarr/crypto-browserify |
18:11:44
| * nicholas_ | joined |
18:14:51
| <chrisdickinson> | https://github.com/dominictarr/crypto-browserify/issues/9 |
18:15:04
| <chrisdickinson> | substack: at some point i'd like to try out your buffer-browserify changes on my git stuff |
18:15:37
| <chrisdickinson> | thus far i've found that the biggest (well, second biggest after the incredibly awful way I'm doing inflating) perf problem is the number of times I'm calling `SlowBuffer.copy` |
18:16:03
| <chrisdickinson> | also there are assumptions about how buffers work -- being able to reach into buffer.parent and slice to get the child buffer as an array, etc |
18:25:10
| <defunctzombie> | chrisdickinson: I wouldn't rely on any cryto-browserify stuff |
18:25:19
| <defunctzombie> | check out the crypto lib from google |
18:25:29
| <defunctzombie> | and pick the parts you want from that |
18:27:55
| <defunctzombie> | crypto-js iirc |
18:37:47
| <chrisdickinson> | defunctzombie: yeah. i mostly only need sha1 |
18:37:56
| <chrisdickinson> | well, s/mostly //g |
18:38:00
| * shuaib | quit (Quit: Textual IRC Client: http://www.textualapp.com/) |
18:38:09
| <mikolalysenko> | now that typed arrays are part of node, maybe it is better to try using those instead of buffers where possible... |
18:39:02
| <defunctzombie> | chrisdickinson: https://github.com/bitfloor/bitcoinjs-lib/tree/master/src/crypto-js but I think that is only sha256 |
18:39:23
| <chrisdickinson> | mikolalysenko: that presents difficulties ): |
18:40:19
| <substack> | juliangruber: not sure what https://github.com/substack/module-deps/pull/6 is for |
18:40:40
| <mikolalysenko> | chrisdickinson: I know, for things like character data and working with the default streams, etc. |
18:40:52
| <chrisdickinson> | yeah, mostly the default streams bit ): |
18:40:54
| <juliangruber> | substack: I want to find all files required by a file without having to do npm install |
18:41:03
| <mikolalysenko> | but it seems to me that if you just have binary data, might as well stick it in a typed array and try to avoid buffers at all cost |
18:41:13
| <juliangruber> | substack: so I want to skip those |
18:41:19
| <chrisdickinson> | the other problem is that typed arrays are incredibly slow to instantiate |
18:41:20
| * timoxley | joined |
18:41:27
| <chrisdickinson> | also, being able to concatenate them |
18:41:52
| <chrisdickinson> | and reading different sizes of numbers out of them |
18:42:07
| <mikolalysenko> | instantiation is bad, but not insurmountable |
18:42:11
| <chrisdickinson> | plus, if you create too many, or too big, browsers tend to handle it poorly |
18:42:17
| <mikolalysenko> | and you can get around the size issue using views |
18:42:21
| <chrisdickinson> | i.e. crash |
18:42:42
| <mikolalysenko> | yeah... I've noticed that in chome sometimes, not sure exactly what is going on |
18:42:47
| <chrisdickinson> | i'll probably be looking into it once i've got the other bits working |
18:42:50
| <mikolalysenko> | though it has gotten better recently |
18:43:01
| <mikolalysenko> | I haven't seen a typed array kill chrome in months |
18:43:12
| <mikolalysenko> | but it used to be that all the damn time I was getting segfaults |
18:43:30
| <chrisdickinson> | yeah, i've gotten sadtab'd a lot from trying typed arrays in this git stuff |
18:43:51
| <mikolalysenko> | what I tend to do with typed arrays to avoid the instantiation thing is cache them in my modules... |
18:44:08
| <mikolalysenko> | though this can obviously create problems with memory leaks, I think the performance benefits outweigh the risks |
18:44:36
| <mikolalysenko> | as long as you never share references to the typed array, this behavior is acceptable |
18:44:52
| <chrisdickinson> | i was using weakmap to cache 'em |
18:44:56
| <mikolalysenko> | I've thought about building a generic typed array cache, but it would be so easy to abuse/misuse that I've not done it |
18:45:02
| <chrisdickinson> | which is actually really fast / neat |
18:45:10
| <mikolalysenko> | interesting |
18:45:22
| <chrisdickinson> | but it still crashed, because of the number / size of typed array allocation |
18:45:29
| <mikolalysenko> | that is weird |
18:45:36
| <chrisdickinson> | of course, this is at least partially due to the incredibly stupid way i have to do zlib inflate stuff |
18:45:58
| <mikolalysenko> | yeah |
18:46:15
| <chrisdickinson> | hilariously, it's pretty zippy in chrome, but slow in firefox |
18:46:33
| <chrisdickinson> | which is surprising since i've been getting consistently fast results for most things in FF lately |
18:46:45
| <mikolalysenko> | I wonder why... |
18:47:01
| <mikolalysenko> | it feels a bit like the v8 team has been slacking off, or wasting too much time on dart |
18:47:26
| <chrisdickinson> | yeah |
18:47:33
| <mikolalysenko> | performance has basically flatlined over the last year |
18:47:57
| <mikolalysenko> | and anyone with half a brain knows that dart is completely doomed |
18:48:58
| <mikolalysenko> | one thing I am bit hopeful about is asm.js, even if the current incarnation is a bit flawed |
18:50:25
| <mikolalysenko> | anyway, going back to typed arrays: one way to mitigate some of the costs is to just allocate a single big typed array and do calculations by indexing into it |
18:50:53
| <mikolalysenko> | so you have to wrap up pointers into the array yourself, but the advantage is you don't have to construct so many arrays |
18:51:14
| <mikolalysenko> | this is basically how ndarray works, and it also supports some other features like striding and higher dimensional slicing |
18:51:28
| <mikolalysenko> | https://github.com/mikolalysenko/ndarray |
18:58:40
| * jxson_ | joined |
19:02:26
| * jxson | quit (Ping timeout: 255 seconds) |
19:06:30
| <defunctzombie> | man. I am loving this procfile based launcher |
19:06:35
| <defunctzombie> | I can start al my processes at once |
19:06:40
| <defunctzombie> | and restart any of them |
19:06:42
| <defunctzombie> | this is great |
19:06:52
| <defunctzombie> | so much better than what I had before |
19:18:58
| * pikpik | quit (Ping timeout: 246 seconds) |
19:22:49
| * tilgovi | joined |
19:27:53
| <niftylettuce> | last call before i list it on eBay, anyone want Macbook Air 13"? |
19:29:47
| <marcello3d> | what do people use for long/async stack traces? |
19:30:25
| * ryanseddon | joined |
19:32:14
| <jesusabdullah> | isaacs: is there a way to get node-tap to show useful information on errors when I want to do something like, t.ok(!err, 'no error'); ? Cause right now the stack trace is for the assert error but I want the stack trace for my 'err' |
19:32:22
| <jesusabdullah> | isaacs: advice appreciated |
19:34:21
| * pikpik | joined |
19:34:36
| * ITpro | quit (Ping timeout: 245 seconds) |
19:34:44
| <marcello3d> | longjohn, trycatch, long-stack-traces ? |
19:34:54
| * tilgovi | quit (Ping timeout: 264 seconds) |
19:36:45
| <jesusabdullah> | marcello3d: isaacs: specifically, I'm using https://github.com/visionmedia/supertest to do some testing, if the .end has an error, *that's* the assertion |
19:37:34
| <marcello3d> | I think there's a t.ifError(err) thing |
19:37:40
| <marcello3d> | or similar |
19:39:40
| <jesusabdullah> | oh word, t.error does what I want |
19:40:24
| <jesusabdullah> | bangin' |
19:42:30
| <isaacs> | jesusabdullah: i usually just do `if (err) throw err` |
19:42:39
| <jesusabdullah> | hmmm |
19:42:44
| <jesusabdullah> | I GUESS THAT WOULD WORK |
19:42:44
| <LOUDBOT> | LETS HAVE SOME FUN THIS BEAT IS SICK, I WANNA CHECK THE LOGS ON YOUR CISCO PIX |
19:42:48
| <isaacs> | jesusabdullah: because thta'll just abort the test and print the error. |
19:43:09
| <jesusabdullah> | WELL TOO LATE FOR YOU ISAACS IM USING t.error !! |
19:44:12
| * thl0_ | joined |
19:44:57
| * thl0 | quit (Read error: Connection reset by peer) |
19:48:00
| * ITpro | joined |
19:58:56
| <rowbit> | SubStack, pkrumins: At least 5 people waiting in the queue for free servers! (Waiting: 25) |
20:03:26
| * jxson_ | quit (Remote host closed the connection) |
20:04:00
| * jxson | joined |
20:04:53
| * ITpro | quit (Ping timeout: 240 seconds) |
20:16:15
| * shuaib | joined |
20:20:33
| * shuaib | quit (Ping timeout: 245 seconds) |
20:22:50
| * shuaib | joined |
20:27:17
| * st_luke | joined |
20:27:17
| * shuaib | quit (Ping timeout: 248 seconds) |
20:28:48
| * shuaib | joined |
20:29:54
| * ins0mnia | quit (Ping timeout: 240 seconds) |
20:35:41
| * shuaib | quit (Ping timeout: 252 seconds) |
20:36:49
| * shuaib | joined |
20:37:24
| * jcrugzz | quit (Ping timeout: 240 seconds) |
20:43:54
| * shuaib | quit (Ping timeout: 264 seconds) |
20:45:45
| * shuaib | joined |
20:49:33
| <juliangruber> | new module: https://github.com/juliangruber/code-to-test-ratio |
20:57:45
| * wolfeidau | quit (Remote host closed the connection) |
20:58:15
| * wolfeidau | joined |
20:58:47
| <jesusabdullah> | I should rewrite node-pedant |
21:00:34
| <jesusabdullah> | ahaha, this s/the cloud/my butt/ chrome plugin is awesome |
21:00:37
| * shuaib | quit (Quit: Textual IRC Client: http://www.textualapp.com/) |
21:03:11
| * wolfeidau | quit (Ping timeout: 252 seconds) |
21:14:11
| * timoxley | quit (Ping timeout: 252 seconds) |
21:36:49
| * cianomaidin | joined |
21:39:22
| * jxson_ | joined |
21:41:52
| * nicholas_ | quit (Remote host closed the connection) |
21:42:11
| * jxson | quit (Ping timeout: 255 seconds) |
21:42:26
| * nicholas_ | joined |
21:46:48
| * nicholas_ | quit (Ping timeout: 245 seconds) |
21:49:28
| * timoxley | joined |
21:50:18
| * thl0_ | quit (Remote host closed the connection) |
21:50:53
| * thl0 | joined |
21:52:06
| * thl0 | quit (Remote host closed the connection) |
21:52:44
| * ins0mnia | joined |
22:02:15
| * dominictarr | joined |
22:04:24
| * wolfeidau | joined |
22:13:19
| * defunctzombie | changed nick to defunctzombie_zz |
22:18:39
| <Raynos> | dominictarr: idea! ( https://gist.github.com/Raynos/5279565 0 |
22:19:04
| <Raynos> | the interesting parts are https://gist.github.com/Raynos/5279565#file-callbacks-js-L189 and https://gist.github.com/Raynos/5279565#comment-810477 |
22:19:18
| <Raynos> | i would like if we could make stream interop with pull streams equally trivial by design |
22:21:13
| <dominictarr> | what is future? |
22:26:13
| <jlord> | what IS future? |
22:45:51
| * jxson_ | quit (Remote host closed the connection) |
22:46:26
| * jxson | joined |
22:46:52
| <dominictarr> | Raynos: +1 |
22:47:19
| <Raynos> | oh future is like a callback. Except its a function that takes zero arguments and a callback |
22:47:30
| <dominictarr> | I figured it out eventually |
22:47:44
| <Raynos> | yeah that gist is a really bad explanation of the idea |
22:47:53
| * stlsaint | joined |
22:47:56
| <dominictarr> | no, it's pretty good |
22:47:56
| <Raynos> | the only thing worth pointing out that it happens to be trivial to have backcompat with node callbacks |
22:48:07
| <Raynos> | thats the most important thing! |
22:48:07
| <dominictarr> | yes, absolutely |
22:48:18
| <dominictarr> | I posted a comment |
22:48:38
| <dominictarr> | the point I got confused at was duplex callback |
22:49:05
| <dominictarr> | also… pipe(map(…)).pipe(map(…)) could be dried up |
22:49:26
| <dominictarr> | maybe step away from stream syntax |
22:51:43
| <dominictarr> | this is what people should be directed to when they want to learn about control flow |
22:51:55
| <dominictarr> | … trick them into learning higher order functions … |
22:55:31
| <Raynos> | ;D |
22:55:38
| <Raynos> | well pipe allows for chaining |
22:55:44
| <Raynos> | I guess we can just use compose for that |
22:56:53
| <Raynos> | dominictarr: I may take the name paaf on github for this :P |
22:58:14
| * cianomaidin | quit (Quit: cianomaidin) |
22:58:45
| * crank | quit (Ping timeout: 248 seconds) |
22:59:36
| * dominictarr | quit (Ping timeout: 245 seconds) |
23:00:33
| * marcello3d | quit (Remote host closed the connection) |
23:01:11
| * marcello3d | joined |
23:04:00
| * tilgovi | joined |
23:05:24
| * ins0mnia | quit (Ping timeout: 240 seconds) |
23:05:33
| * marcello3d | quit (Ping timeout: 245 seconds) |
23:06:57
| * dominictarr | joined |
23:08:50
| * ins0mnia | joined |
23:09:26
| <Raynos> | dominictarr: If we were to implement some kind of similar duplex style function for (req, res) would we reinvent middleware? |
23:09:42
| <Raynos> | I want a good name for these "duplex style" functions |
23:10:01
| <substack> | Raynos: https://github.com/substack/http-duplex |
23:10:05
| <substack> | also: https://github.com/substack/response-stream |
23:10:53
| <Raynos> | I'm thinking of https://gist.github.com/Raynos/5279565#file-callbacks-js-L44 |
23:10:57
| <substack> | it's not the same as middleware in an important way since the user is plumbing up how to pipe everything together on each request |
23:11:10
| <substack> | it's not static like the connect middleware stack |
23:11:27
| <dominictarr> | do you mean a partially applied middleware style? |
23:11:37
| * jcrugzz | joined |
23:17:46
| <wolfeidau> | dominictarr: I had a simple question, had you guys tried adding any telemetry to your "streamy" modules? |
23:18:24
| <dominictarr> | telemetry? |
23:19:13
| <wolfeidau> | dominictarr: Counters, Guages that sort of thing |
23:20:18
| <wolfeidau> | dominictarr: I spent a lot of time adding console.log while pulling apart your stuff when mainly because i was unsure of what was getting invoked and when |
23:21:02
| <wolfeidau> | dominictarr: How can you have pipes and stuff without gauges :) |
23:21:05
| <dominictarr> | I wrote this once https://github.com/dominictarr/probe-stream |
23:21:52
| <wolfeidau> | dominictarr: It was only an observation btw, just thinking out loud, how can you have a system of pipes and connectors without a view of what is going in and out of them |
23:22:33
| <wolfeidau> | dominictarr: Just something you may want to consider :) |
23:23:04
| <chrisdickinson> | wolfeidau: every stream is also an event emitter -- it's easy to tap into the data |
23:23:23
| <chrisdickinson> | x.pipe(y).on('data', console.log).pipe(z).on('data', console.log) |
23:23:27
| <dominictarr> | hmm, so you are thinking of a well defined api for grabbing stats, or debugging? |
23:29:52
| <dominictarr> | wolfeidau: I've mostly just used console.log, etc too, but I take that out before I publish :) (usually) |
23:31:43
| * dominictarr | changed nick to dominictarr_zzz |
23:31:48
| * dominictarr_zzz | quit (Quit: dominictarr_zzz) |
23:48:38
| * crank | joined |
23:52:50
| * defunctzombie_zz | changed nick to defunctzombie |
23:56:24
| * fallsemo | quit (Quit: Leaving.) |
23:57:59
| * dguttman_ | joined |