00:02:01  <txdv_>what is streams2 supposed to be?
00:05:39  * deoxxaquit (Quit: ZNC - http://znc.sourceforge.net)
00:05:55  * deoxxajoined
00:16:37  <isaacs>txdv_: new stream api!
00:16:49  <isaacs>just like the old one, but better, and working, and consistent, and with classes you can extend in sane ways.
00:16:57  <isaacs>txdv_: also, the Readable interface is different.
00:17:11  <isaacs>txdv_: instead of on('data'), you do chunk=stream.read(numberOfBytes)
00:17:15  * TooTallNatequit (Quit: Computer has gone to sleep.)
00:17:21  <isaacs>txdv_: https://github.com/isaacs/readable-stream
00:18:28  <isaacs>ok, so, zlib flush is not working properly.
00:18:52  * TooTallNatejoined
00:19:00  <isaacs>but i'm sure that's a minor-ish issue.
00:19:14  <isaacs>aside from that the other tests are passing, which is a bonus
00:20:09  <txdv_> Optional number of bytes to read. If not provided, then return however many bytes are available.
00:20:16  <txdv_>the hower many bytes are available makes this useless imo
00:21:05  <mmalecki>isaacs: +1. great to see this thing finally exist
00:21:31  <txdv_>the node monks haven't figured out streams yet
00:21:41  <isaacs>txdv_: having written a few parsers, i feel i can safely say that it's not useless at all.
00:21:55  <isaacs>txdv_: sometimes you want just a certain amount of data.
00:21:59  <isaacs>sometimes you want ALL the data.
00:22:11  <isaacs>this is a nice way to express both nees.
00:22:13  <isaacs>*needs
00:22:27  <mmalecki>^ very useful for protocol parsers
00:22:29  <isaacs>yes
00:22:39  * lohkeyjoined
00:22:59  <isaacs>and, since it's actually buffered internally, it means that you're not actually calling read syscalls every 4 bytes.
00:23:06  <isaacs>which is not wise.
00:24:10  <isaacs>i need to think about this flush thing, though. there's a simple solution there, i think.
00:24:35  <isaacs>but it's probably not general enough to want to put into the base class, since it's somewhat zlib-specific
00:24:37  <mmalecki>hm. if I rewrote my irc parser in streams2, that'd be the first protocol parser in streams2...
00:24:45  <isaacs>mmalecki: indeed, it would!
00:25:06  <mmalecki>sudden motivation bump.
00:25:12  <isaacs>i can't wait to rewrite node-tar and fstream
00:25:14  <txdv_>being first is always fun
00:25:17  <txdv_>especially during sex
00:25:17  <isaacs>that's gonna be *great*!
00:25:59  * perezdquit (Quit: perezd)
00:26:29  <mmalecki>isaacs: oh man, I spent so much time thinking about buffering those data events. some commands return 1 message, some return more.
00:28:02  <ryah>isaacs: i think the link to the npm registery is too far down on nodejs.org
00:28:08  <ryah>isaacs: it should be above the fold
00:31:24  <isaacs>ryah: good idea.
00:31:31  <isaacs>I'm going to start +1-ing npm bug reports, I swear to god.
00:31:41  <isaacs>why do people do that?
00:33:56  * ericktquit (Ping timeout: 240 seconds)
00:36:44  <isaacs>ryah: https://github.com/joyent/node/issues/4077
00:36:45  * isaacsaway
00:37:45  <ryah>:)
00:41:33  * indexzerojoined
00:41:56  * brsonquit (Ping timeout: 240 seconds)
00:47:45  * stagasquit (Read error: Connection reset by peer)
01:00:28  * loladiroquit (Quit: loladiro)
01:13:23  * piscisaureusquit (Read error: Connection reset by peer)
01:16:39  * brsonjoined
01:17:17  * piscisaureus_joined
01:19:38  * TooTallNatequit (Quit: Computer has gone to sleep.)
01:21:12  * loladirojoined
01:21:40  * loladiroquit (Client Quit)
01:33:42  * ericktjoined
01:38:08  * lohkeypart
01:44:25  * indexzeroquit (Read error: Connection reset by peer)
01:50:38  * travis-cijoined
01:50:38  <travis-ci>[travis-ci] joyent/libuv#762 (master - 01337af : Shigeki Ohtsu): The build passed.
01:50:38  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/d796c3b6f414...01337af65d85
01:50:38  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/2645255
01:50:38  * travis-cipart
01:52:08  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
02:03:47  * erickt_joined
02:26:15  * AvianFluquit (Remote host closed the connection)
02:48:45  * piscisaureus_joined
03:04:36  * piscisaureus_quit (Ping timeout: 256 seconds)
03:31:38  * tomshredsquit (Quit: Leaving...)
03:40:22  * brsonquit (Quit: leaving)
03:44:56  * erickt_quit (Quit: erickt_)
03:52:42  * c4miloquit (Remote host closed the connection)
04:03:55  * c4milojoined
04:06:17  * erickt_joined
04:10:29  * c4miloquit (Remote host closed the connection)
04:16:28  * loladirojoined
04:25:19  * mmaleckichanged nick to mmalecki[zzz]
04:32:08  * mmalecki[zzz]quit (Ping timeout: 252 seconds)
05:06:41  * AvianFlujoined
05:09:45  * AvianFlu_joined
05:12:04  * AvianFluquit (Ping timeout: 244 seconds)
05:13:30  * AvianFlu_changed nick to AvianFlu
05:17:32  * erickt_quit (Quit: erickt_)
06:14:48  * AvianFluquit (Remote host closed the connection)
06:45:53  * rendarjoined
06:46:02  * V1joined
06:48:05  * V1changed nick to `3rdEden
06:49:38  * Raltjoined
07:10:24  * loladiroquit (Quit: loladiro)
08:55:29  * kristatejoined
09:00:11  * mikealquit (Quit: Leaving.)
09:00:57  * mikealjoined
09:12:04  * mikealquit (Quit: Leaving.)
09:46:54  * TheJHjoined
10:04:37  * mikealjoined
10:13:04  * hij1nxjoined
10:39:38  <indutny>hoya
10:43:34  * mmalecki[zzz]joined
10:47:11  * mmalecki[zzz]changed nick to mmalecki
10:48:44  * mikealquit (Quit: Leaving.)
10:52:46  * hzjoined
11:00:36  <txdv_>privet
11:11:05  * bnoordhuisjoined
11:19:13  * piscisaureus_joined
11:20:27  <hij1nx>having interesting problem with crypto in 9.x, does anyone know if verify is borked?
11:23:27  <bnoordhuis>hij1nx: it shouldn't be (obviously)
11:23:32  <bnoordhuis>what's the issue?
11:26:10  * abraxasquit (Remote host closed the connection)
11:38:21  * piscisaureus_quit (Ping timeout: 246 seconds)
11:40:08  <MI6>joyent/node: Ben Noordhuis v0.8 * b0d04ff : doc: stream: clarify meaning of 'drain' some more Courtesy of Lee Coltra - http://git.io/PmEnzw
11:48:16  <indutny>bnoordhuis: ping
11:48:20  <bnoordhuis>indutny: pong
11:52:36  * piscisaureus_joined
11:55:36  <hij1nx>bnoordhuis: yt?
11:55:43  <bnoordhuis>hij1nx: ih
11:56:01  <hij1nx>bnoordhuis: having some issues in crypto
11:56:18  <hij1nx>https://gist.github.com/3826497#comments
11:56:30  <hij1nx>not sure if its 0.9.x or perhaps im doing something wrong.
11:58:58  <bnoordhuis>hij1nx: let me try it
11:59:41  * c4milojoined
12:03:03  <hij1nx>bnoordhuis: awesome thanks ;)
12:04:20  <hij1nx>interesting console.log(Sig); is blank.
12:10:48  <hij1nx>back in < 45m
12:12:40  <bnoordhuis>hij1nx: you need to use a cert, not a pubkey
12:25:35  <indutny>bnoordhuis: so I've a problem :)
12:25:42  <indutny>bnoordhuis: I'm trying to implement lock-less ring buffer
12:25:54  <indutny>bnoordhuis: and hitting the wall of oddness
12:26:13  <bnoordhuis>indutny: what wall of oddness?
12:26:26  <indutny>bnoordhuis: well, I'm memcpy'ing data into buffer
12:26:33  <indutny>bnoordhuis: and then reading data from that buffer
12:26:39  <indutny>bnoordhuis: but data is not the same as I've written
12:26:54  <indutny>of course, I'm doing it from different threads
12:26:58  <bnoordhuis>indutny: using some kind of atomic pointer compare-and-swap?
12:27:27  <indutny>bnoordhuis: nope, I'm using only one atomic thing __sync_fetch_and_add
12:27:28  <indutny>for total size
12:27:37  <bnoordhuis>indutny: can you show me the code?
12:27:40  <indutny>sure
12:28:33  <indutny>bnoordhuis: https://github.com/indutny/tlsnappy/blob/feature-no-locks/src/ring.cc
12:28:44  <indutny>bnoordhuis: you can clone repo, run node-gyp configure && node-gyp build
12:29:00  <indutny>bnoordhuis: and then ./build/Release/ring-test.node
12:29:10  <indutny>it's executable
12:29:52  <bnoordhuis>indutny: how does it work? write to the end of the ring buffer, then update offset and total counters?
12:30:02  <indutny>bnoordhuis: yeah
12:30:10  <indutny>bnoordhuis: each buffer contains two offsets
12:30:19  <indutny>bnoordhuis: one for consumer and one for producer
12:30:28  <bnoordhuis>indutny: you're doing two __sync_fetch_and_adds, that's not atomic
12:30:35  * mmaleckichanged nick to mmalecki[away]
12:30:35  <indutny>bnoordhuis: that's just for debugging
12:30:39  <indutny>only one is really needed
12:30:43  <indutny>incrementing total_
12:33:12  <bnoordhuis>indutny: so how many threads can operate on the same ring buffer? it doesn't look like it's safe with more than two threads
12:33:18  <indutny>bnoordhuis: only two
12:33:21  <bnoordhuis>and even with two threads...
12:33:40  <indutny>bnoordhuis: it's one reader - one writer ring
12:35:04  <indutny>bnoordhuis: from drd output I figured out that there're two conflicting memcpy
12:35:14  <indutny>bnoordhuis: well, may be it's not main reason about it, but anyway
12:35:53  <indutny>bnoordhuis: I can't see how it's possible
12:35:54  <bnoordhuis>indutny: another thing, you use ngx_queue_t but that's two pointers, you can't update the queue concurrently
12:36:34  <bnoordhuis>unless i'm totally misunderstanding what that does
12:37:13  <indutny>bnoordhuis: I'm not updating it from reader
12:37:21  <indutny>bnoordhuis: I'm updating it only from writer
12:37:49  <indutny>bnoordhuis: I suppose changing pointer in memory is atomic, isn't it?
12:37:58  <bnoordhuis>indutny: yes, but you are reading it in the reader, right?
12:37:58  <indutny>bnoordhuis: right
12:38:03  <indutny>bnoordhuis: it's not good, yes?
12:38:18  <bnoordhuis>indutny: okay, so a ngx_queue_t looks like this -> struct { ngx_queue_t *prev, *next }
12:38:29  <bnoordhuis>you can update one pointer atomically but not two :)
12:38:39  <indutny>oooh
12:38:42  <indutny>that thingy dingy
12:38:49  <indutny>ok
12:38:58  <indutny>I think I can do the same with just RingBuffer* next
12:39:04  <bnoordhuis>yes
12:39:10  <indutny>ok, lets see
12:39:19  <bnoordhuis>use volatile casts and make sure it's properly aligned
12:39:57  <indutny>bnoordhuis: ok, thanks
12:40:02  <indutny>bnoordhuis: I'll try and come back to you
12:41:51  * c4miloquit (Remote host closed the connection)
12:42:57  * hij1nxquit (Ping timeout: 255 seconds)
13:01:28  * CoverSlidequit (Ping timeout: 245 seconds)
13:07:31  * CoverSlidejoined
13:09:34  * hij1nxjoined
13:18:08  * hij1nxquit (Ping timeout: 240 seconds)
13:20:12  * c4milojoined
13:44:24  <indutny>bnoordhuis: oh
13:44:30  <indutny>bnoordhuis: I think the error was much simplier :)
13:45:14  <indutny>ok, anyway I've refactored it
13:45:18  <indutny>and it seems to be working no
13:45:19  <indutny>now
13:46:38  <indutny>bnoordhuis: https://github.com/indutny/tlsnappy/blob/feature-no-locks/src/ring.cc#L101
13:46:42  <indutny>see, I'm moving rhead no matter if it was finished or not
13:47:35  <indutny>still it isn't working fine with tls
13:47:37  <indutny>for some reason
13:47:38  <indutny>hm...
13:48:30  <indutny>bnoordhuis: updated file
13:54:45  <indutny>oh
13:54:49  <indutny>I think Peek() is borked
13:58:19  <indutny>oh no
13:58:21  <indutny>it isn't
13:58:53  <piscisaureus_>I'm on support duty today
13:59:10  <indutny>piscisaureus_: huh
13:59:14  <indutny>piscisaureus_: can you help me then?
13:59:23  <piscisaureus_>only if you file a cloud9 ticket
13:59:28  <indutny>piscisaureus_: sure
13:59:59  * AvianFlujoined
14:12:12  * mmalecki[away]changed nick to mmalecki
14:12:33  * loladirojoined
14:14:22  * hij1nxjoined
14:17:51  * loladiroquit (Quit: loladiro)
14:18:47  * hij1nxquit (Ping timeout: 252 seconds)
14:26:17  <bnoordhuis>piscisaureus_: can i steal that node components image from your lxjs talk?
14:26:31  <piscisaureus_>bnoordhuis: sure. I stole it from ryan
14:26:46  <bnoordhuis>piscisaureus_: is it on google somewhere?
14:27:02  <piscisaureus_>bnoordhuis: http://2bs.nl/lxjs2012/
14:27:14  <bnoordhuis>piscisaureus_: thanks
14:28:47  <indutny>bnoordhuis: about ring buffer, now it seems to be working fine (in tests)
14:28:54  <indutny>bnoordhuis: but producing some wrong output in reality :D
14:28:57  <indutny>bnoordhuis: very fu
14:28:58  <indutny>fun
14:32:39  <txdv_>you could added a comment on how libuv is the event loop that rules them all
14:33:29  <bnoordhuis>txdv_: i have a remark to that extent in my talk tomorrow :)
14:38:39  <txdv_>is that talk going to hit youtube too?
14:40:27  <piscisaureus_>bnoordhuis: where are you speaking tomorrow?
14:40:47  <bnoordhuis>piscisaureus_: gent, on arrrconf (i may have missed an r)
14:41:01  <bnoordhuis>txdv_: don't know
14:42:21  <`3rdEden>just record your screen + audio during the presentation ;)
14:45:03  <indutny>bnoordhuis: wow
14:45:06  <indutny>that's a good conference
14:45:19  <bnoordhuis>is it? it's full of rails people apparently
14:45:22  <indutny>how did you get here?
14:45:24  <bnoordhuis>so i'll have to watch my words
14:45:32  <bnoordhuis>indutny: got invited
14:45:37  <indutny>:)
14:45:55  <indutny>you should convince rails people that node si
14:46:03  <indutny> /si/is better
14:46:18  <bnoordhuis>for some things
14:46:25  <indutny>surely not for every
14:46:30  <indutny>C++ is much better for all other things
14:46:38  <bnoordhuis>rails can keep its supremacy in the CRUD domain
14:46:45  <indutny>but it's slow
14:46:47  <indutny>as hell
14:46:57  <indutny>I think it's only good as an abstraction
14:47:02  <indutny>not as a platform
14:47:13  <bnoordhuis>it's slow but most people don't really care about that, i think
14:47:43  <indutny>indeed
14:49:07  <indutny>piscisaureus_: hoya
14:49:18  <indutny>piscisaureus_: want to try my BIO buffer?
14:49:33  <indutny>piscisaureus_: I'm busy benchmarking stuff on my end, but it's definitely worth trying on your end
15:14:41  * hij1nxjoined
15:18:56  * hij1nxquit (Ping timeout: 240 seconds)
15:20:33  * `3rdEdenchanged nick to `3E|DINNER
15:39:20  * mmaleckiquit (Quit: leaving)
15:39:38  * mmaleckijoined
15:42:13  * hij1nxjoined
15:48:02  * hij1nxquit (Ping timeout: 248 seconds)
16:10:15  * TooTallNatejoined
16:11:01  * hij1nxjoined
16:16:07  * tomshredsjoined
16:20:38  * tommybergeronjoined
16:22:58  <tjfontaine>TooTallNate: couldn't that user do a DynamicLibrary(liba); to have the symbols loaded?
16:23:58  <TooTallNate>isaacs: so with the new streams stuff, what would be the best way to write a parser (i.e. i want to make my own read() calls of specific sizes at times), but have it basically be a Transform stream (most of the data passes through untouched, but specific intervals are ripped out)
16:24:18  <TooTallNate>tjfontaine: ya i think maybe RTLD_NOW is needed, i've never really tried
16:24:18  * tomshredsquit (Ping timeout: 248 seconds)
16:24:39  <TooTallNate>oh, RTLD_NOW is the default :p
16:25:30  <tjfontaine>right
16:26:40  <TooTallNate>wtf is "or" in coffeescript?
16:28:53  <creationix>TooTallNate, ||
16:29:07  <creationix>I think, but maybe different operator precadence
16:29:41  <creationix>nah, it compiles directly to "||"
16:30:11  <TooTallNate>ok
16:34:59  <isaacs>TooTallNate: well, the thing about Transform is that you get the chunks as they come in. but you can call output() on just part of them if you want.
16:35:21  <TooTallNate>isaacs: ya nvm, it was a stupid question :p
16:35:32  <isaacs>TooTallNate: i could see maybe using a passthrough internally
16:35:38  <isaacs>this.write = this._passthrough.write
16:35:52  <isaacs>then do something fancy to pull bytes out as you ned them?
16:35:54  <isaacs>i dunno
16:36:14  <TooTallNate>nah, i just need to keep a good 'ol counter and splice when appropriate i think
16:36:22  * `3E|DINNERchanged nick to `3RDEDEN
16:36:26  <isaacs>yep[
16:36:30  * `3RDEDENchanged nick to `3rdEden
16:36:33  <isaacs>most parsers are not passthroughs
16:36:44  <isaacs>most parsers are writable streams that emit objects
16:36:48  <isaacs>or other evetns
16:37:55  <TooTallNate>ya this is true
16:38:12  <isaacs>TooTallNate: it seems like it might be nice to have some control over the reads from the pipe destination, though
16:38:32  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
16:38:46  <isaacs>so you can do socket.pipe(parser).on('fooblz', function (fooblz) { ... }) and the parser can set how to do that.
16:39:20  <isaacs>but you probably just want to write an interruptible parser state machine kind of thing anyway.
16:39:23  <isaacs>it's not that bad
16:40:18  * piscisaureus_joined
16:41:48  <TooTallNate>piscisaureus_: hello
16:44:40  <indutny>hello
16:48:13  * TooTallNatequit (Quit: Computer has gone to sleep.)
17:00:25  * c4miloquit (Remote host closed the connection)
17:04:19  * TooTallNatejoined
17:09:59  * `3rdEdenquit (Quit: brb, switching machines)
17:13:29  <isaacs>hello
17:13:31  <MI6>joyent/node: isaacs streams2 * 075a73c : zlib: Don't flush while writing (+3 more commits) - http://git.io/7V4xMg
17:14:56  <TooTallNate>isaacs: out of curiosity, what's the difference between Z_FINISH and Z_FULL_FLUSH
17:15:18  <isaacs>TooTallNate: Z_FULL_FINISH exists.
17:15:24  <isaacs>er, oh, you said finish, not flush
17:15:39  <isaacs>Z_FINISH says "There will be no more bytes. wrap it up"
17:15:45  <isaacs>Z_FULL_FLUSH says, "there will be more, but i want you to emit whatever you have anyway"
17:15:59  <isaacs>I was using Z_FLUSH, which does not exist
17:16:05  <TooTallNate>isaacs: lol
17:17:55  <CoverSlide>i've always been curious, what was the rationale behind adding zlib to core?
17:18:06  <isaacs>TooTallNate: it's all described in a lot of detail here: http://www.zlib.net/manual.html
17:18:39  <isaacs>TooTallNate: basically, once you pass in Z_FINISH, you are not allowed to write any more, and must continue to call deflate() or inflate() until you get Z_STREAM_END
17:18:49  <isaacs>TooTallNate: in raw terms, Z_FINISH is 4, and Z_FULL_FLUSH is 3
17:18:52  <isaacs>so the difference is 1
17:19:19  <TooTallNate>CoverSlide: it had to do with npm extracting tarballs i think
17:19:27  <CoverSlide>oic
17:19:28  <isaacs>CoverSlide: zlib is a very important systems programming utility. http servers must be able to gzip responses, and npm needs to unpack gzipped tarballs.
17:19:34  <isaacs>CoverSlide: and doing it in JS is too hard.
17:19:56  <isaacs>CoverSlide: zlib is basically a perfect implementation of deflate/gzip at this point.
17:20:18  <isaacs>and OpenSSL requires it anyway, so it's not adding any additional requirements
17:20:25  <CoverSlide>oh ok
17:20:34  <indutny>CoverSlide: spdy
17:20:35  <indutny>:)
17:20:43  <indutny>that's my 5 cents
17:20:47  <isaacs>indutny: yeah, also spdy needs it
17:20:53  <isaacs>compression is very important
17:21:52  <isaacs>bnoordhuis: btw... with streams2.. drain events do happen *only* after write() returns false.
17:21:57  <isaacs>bnoordhuis: many streams already work this way
17:22:39  <CoverSlide>yeah on the surface i would think compression would belong in userland, heck, in most languages cryptography is done in userland as well
17:23:02  <CoverSlide>but since it's all bundled together it makes sense
17:29:50  * lohkeyjoined
17:36:57  * c4milojoined
17:38:02  <isaacs>CoverSlide: yeah, it's kind of weird. node definitely contains some things in core that many other libs don't.
17:38:15  <isaacs>CoverSlide: and yet we don't have stuff that a lot of other platforms include
17:47:56  * piscisaureus_quit (Quit: ~ Trillian Astra - www.trillian.im ~)
17:51:15  * V1joined
17:56:49  * piscisaureus_joined
17:57:24  * V1changed nick to `3rdEden
17:58:41  * piscisaureus_quit (Read error: Connection reset by peer)
17:58:54  <MI6>joyent/node: koichik master * 016afe2 : streams: fix pipe is destructed by 'end' from destination - http://git.io/eh1xNA
17:59:09  * piscisaureus_joined
17:59:13  <MI6>joyent/node: isaacs streams2 * 96b5a05 : zlib: Don't flush while writing (+9 more commits) - http://git.io/4FitMQ
18:04:11  * Ralt_joined
18:06:03  <piscisaureus_>TooTallNate: sup?
18:06:36  <TooTallNate>piscisaureus_: nothing in particular, was just saying hello :)
18:06:45  <piscisaureus_>hello back, nate :-)
18:10:07  * kristat__joined
18:11:32  * kristatequit (Ping timeout: 246 seconds)
18:17:28  <MI6>joyent/node: isaacs streams2 * 69e09de : zlib: Handle invalid input smartly Also, remove the test thing that asse - http://git.io/CI3JXw
18:17:50  * brsonjoined
18:23:23  <MI6>joyent/node: isaacs streams2 * 47f7d0a : lint - http://git.io/8PvoDQ
18:23:23  <isaacs>ok, zlib using streams2, passing all tests.
18:23:25  <indutny>bnoordhuis: uv_wait()?
18:23:32  <isaacs>fs is up next.
18:23:53  <isaacs>also, need to move the readable-stream tests into node's tests.
18:50:37  * mmaleckiquit (Read error: Connection reset by peer)
18:50:56  * kristat__changed nick to kristate
18:51:45  * `3rdEdenquit (Read error: Connection reset by peer)
18:51:57  * mmaleckijoined
18:52:17  * `3rdEdenjoined
18:54:48  * Ralt_quit (Remote host closed the connection)
18:55:24  * Ralt_joined
19:00:02  * Ralt_quit (Ping timeout: 248 seconds)
19:01:51  * `3rdEdenquit (Quit: stoopid wifi)
19:05:44  * lohkeyquit (Quit: lohkey)
19:14:01  * hij1nxquit (Quit: leaving)
19:23:58  * TooTallNatequit (Ping timeout: 245 seconds)
19:25:49  * TooTallNatejoined
19:49:19  <txdv_>what
19:49:24  <txdv_>he pushes directly to node
19:50:24  <CoverSlide>like a boss
19:50:54  * erickt_joined
19:56:37  * TooTallNatequit (Quit: Computer has gone to sleep.)
19:56:55  * Ralt_joined
19:58:13  <txdv_>lol codeproject has 4 news articles on js this day
20:00:16  * Ralt_quit (Remote host closed the connection)
20:00:54  * Ralt_joined
20:05:17  * Ralt_quit (Ping timeout: 246 seconds)
20:05:21  * Ralt__joined
20:07:46  * TooTallNatejoined
20:08:16  * lohkeyjoined
20:10:31  * lohkeyquit (Client Quit)
20:11:20  * lohkeyjoined
20:19:56  <MI6>joyent/node: Alex Kocharin v0.8 * bf0bc35 : doc: better example for process.hrtime() Fixes #3984. - http://git.io/Y500JA
20:27:14  * erickt_quit (Quit: erickt_)
20:31:37  * Ralt__quit (Remote host closed the connection)
20:32:13  * Ralt_joined
20:33:42  * Ralt_quit (Read error: Operation timed out)
20:35:24  <txdv_>what do you guys thing about ts?
20:36:14  <tjfontaine>I suppose you mean typescript?
20:39:02  <txdv_>yes
20:39:23  <txdv_>codeproject had 4 articles about it, I guess the entire js world already knows what ts is
20:46:33  <txdv_>anders did a demonstration of ts
20:46:36  <txdv_>in googles chrome
20:53:48  * mikealjoined
21:07:42  * txdv_quit (Read error: Connection reset by peer)
21:08:08  * txdvquit (Ping timeout: 245 seconds)
21:08:18  * txdvjoined
21:08:33  * txdv_joined
21:09:53  * nrajlichjoined
21:11:39  * TooTallNatequit (Ping timeout: 252 seconds)
21:11:40  * nrajlichchanged nick to TooTallNate
21:13:17  <bnoordhuis>isaacs: npm doesn't like the rejectUnauthorized:true change in master
21:13:18  <bnoordhuis>>npm ERR! publish Failed PUT response undefined
21:13:18  <bnoordhuis>npm ERR! Error: UNABLE_TO_VERIFY_LEAF_SIGNATURE
21:15:21  * mikealquit (Read error: No route to host)
21:15:59  * mikealjoined
21:19:00  * txdvquit (Ping timeout: 246 seconds)
21:19:16  * txdv_quit (Ping timeout: 244 seconds)
21:22:06  * perezdjoined
21:25:14  * kristatequit (Read error: Connection reset by peer)
21:25:31  * kristatejoined
21:30:19  <isaacs>bnoordhuis: what version of npm are you using? and what registry url?
21:30:41  * kristatequit (Ping timeout: 246 seconds)
21:31:03  * rendarquit
21:34:59  <bnoordhuis>isaacs: 1.1.61. how do i get it to show the url?
21:35:03  * txdvjoined
21:35:21  <isaacs>bnoordhuis: npm config ls
21:35:26  <isaacs>bnoordhuis: or npm config get registry
21:35:36  <bnoordhuis>isaacs: https://registry.npmjs.org/
21:36:06  <bnoordhuis>isaacs: curl complains about the cert too btw
21:36:43  <isaacs>well, curl can suck it.
21:36:51  <isaacs>it's signed by the npmCA cert
21:36:56  <isaacs>bnoordhuis: npm config get ca
21:37:05  * txdv_joined
21:37:39  <bnoordhuis>isaacs: https://gist.github.com/e7f9693fbca479c1da3e
21:38:04  <isaacs>yeah, those are all default things... wth
21:39:10  <isaacs>bnoordhuis: it works for me, in master, with all those same settings
21:39:20  <bnoordhuis>isaacs: also publish?
21:39:36  <isaacs>ahh.... weird.
21:39:42  <isaacs>why does GET work, but not PUT?
21:39:46  <isaacs>they're both going over https
21:39:48  <bnoordhuis>you tell me :)
21:40:42  <isaacs>even turnign off strict ssl fails.
21:41:36  <bnoordhuis>isaacs: you know what's odd? it works now...
21:41:50  <bnoordhuis>i did unpublish + publish and now it doesn't complain
21:42:08  <bnoordhuis>is there more than one registry server?
21:48:48  <indutny>bnoordhuis: oh
21:48:51  <indutny>leaf signature
21:48:54  <indutny>I seen that before
21:49:04  <indutny>I was trying to access nodejitsu https pages with latest node
21:49:13  <indutny>it seems to be always happening for quite a long time
21:49:28  <indutny>but it wasn't appearing because rejectUnauthorized was false by default
21:49:32  <indutny>bnoordhuis: isaacs: ^
21:49:52  <indutny>but now
21:49:53  <isaacs>ohhhh.. it's the login
21:49:55  <indutny>it's time to sleep
21:49:56  <indutny>ttyl
21:50:02  <isaacs>couch-login isn't getting the CA arg
21:50:06  <isaacs>so that's failing
21:50:07  <bnoordhuis>ah
21:50:11  <indutny>aaah
21:50:15  <indutny>interesting!
21:50:22  <isaacs>so, yeah, it's a bug in my code.
21:50:39  <isaacs>it would not let you send a package to an unauthorized host.
21:50:40  <indutny>good to know!
21:50:45  <isaacs>but your PASSWORD, now, that's fine.
21:50:55  <isaacs>required, even
21:50:58  <bnoordhuis>haha
21:51:00  <isaacs>:S
21:51:06  * isaacsfixing
21:51:10  <isaacs>bnoordhuis: thanks for finding it
21:51:18  <bnoordhuis>np. thanks for fixing it :)
21:51:32  <isaacs>bnoordhuis: i'm usually logged in, so when i'd switch to master, it still had a valid login token, and wouldn't have to log in again
21:53:25  <isaacs>also, i'm eventually going to move away from doing certification in the "right" way, and instead do it the way that the rest of the world does.
21:53:34  <isaacs>which will break all old npm's :)
21:53:48  <isaacs>but that's why there are 2 extra CA certs provided.
21:53:52  <piscisaureus_>isaacs: noooooo
21:53:59  <piscisaureus_>don't break old npms....
21:54:21  <tjfontaine>only for publishing though?
21:54:29  <tjfontaine>well logging in
21:54:53  <isaacs>tjfontaine: yeah, any write actions
21:55:07  <isaacs>piscisaureus_: i'll push an update for 1.0 and 0.3
21:55:13  <isaacs>piscisaureus_: 0.2 is stone age bullshit.
21:55:23  <isaacs>it probably doesn't work for publishing anyway
21:55:41  <piscisaureus_>isaacs: can we not have a range of "transitional" versions that support both the old and the new way?
21:55:55  <isaacs>piscisaureus_: yes
21:56:01  <isaacs>piscisaureus_: we're in the transitional period already :)
21:56:07  <piscisaureus_>ah, good
21:56:30  <isaacs>piscisaureus_: that's why the globalsign root and intermediate certs are in npm's cert chain by default.
21:56:53  <isaacs>the cert on npmjs.org actually covers registry.npmjs.org as well
21:57:21  <isaacs>then i'll stop getting but reports claiming that JS syntax errors are caused by the red page in chrome when the user visits the registry.
21:57:27  <isaacs>s/but reports/bug reports/
21:59:11  * travis-cijoined
21:59:11  <travis-ci>[travis-ci] joyent/libuv#764 (master - fed718c : Artur Adib): The build passed.
21:59:11  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/01337af65d85...fed718c6cbfb
21:59:11  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/2656593
21:59:11  * travis-cipart
21:59:40  <tjfontaine>heh
22:00:16  * pooyajoined
22:00:18  <piscisaureus_>hmm
22:00:23  <piscisaureus_>still no MI6 ?
22:00:39  <tjfontaine>isaacs: did you get a chance to do the webhook for libuv?
22:01:08  <piscisaureus_>funny, there are people who actually read uv-win and uv-unix
22:01:26  <piscisaureus_>not me and certainly not ben :-)
22:05:35  <isaacs>tjfontaine: no, i didn't, same url?
22:05:46  <tjfontaine>yup
22:05:49  <tjfontaine>please and thank you
22:06:06  <isaacs>boom
22:06:07  <MI6>joyent/libuv: Artur Adib master * fed718c : unix: move queue stuff from fs.c to threadpool.c (+2 more commits) - http://git.io/wi5guw
22:06:18  <MI6>joyent/libuv: Artur Adib master * fed718c : unix: move queue stuff from fs.c to threadpool.c (+2 more commits) - http://git.io/wi5guw
22:06:28  <isaacs>haha, that's me being impatient :)
22:06:29  <tjfontaine>did you hit the button twice on that?
22:06:32  <isaacs>yeah
22:06:32  <tjfontaine>heh ok
22:06:38  <isaacs>i thought it didn't work the first time
22:07:05  <tjfontaine>ya, there is a bit of lag from github occasionally
22:11:29  <isaacs>for all i know it was the lag from my laptop to github
22:11:36  <tjfontaine>fair enough
22:11:45  <isaacs>this coffeeshop is really nice, and close, but their internet leaves something to be desired.
22:15:07  <piscisaureus_>nice
22:15:21  <piscisaureus_>MI6 does not put this stupid "r" in front of the commit hash
22:16:18  <tjfontaine>mi6 does almost whatever you want it to :)
22:16:56  <isaacs>bnoordhuis: https://github.com/isaacs/npm/commit/ef1dcaf0f80c3933bbbc4c3c2f1377f8d13544b3
22:17:17  <isaacs>fixed
22:17:42  <bnoordhuis>isaacs: nice
22:18:54  * TheJHquit (Ping timeout: 256 seconds)
22:20:32  <isaacs>how do you guys feel about setEncoding(enc)
22:20:34  <isaacs>on streams
22:20:40  <isaacs>if we do read(n) it's kind of problematic..
22:20:50  <mmalecki>it's bad and you should feel bad
22:20:51  <isaacs>is n now a number of characters?
22:21:06  <isaacs>mmalecki: yeah, i know, and i do, though i blame ryah for it, so that makes me feel a little better.
22:21:19  <piscisaureus_>isaacs: I think it's very practical :-)
22:21:20  <bnoordhuis>that ryah guy, he's got a lot to answer for...
22:21:24  <mmalecki>I always perceived setEncoding as an antipattern
22:21:24  <TooTallNate>isaacs: i proposed it being removed a while back :D
22:21:25  <piscisaureus_>isaacs: why is it problematic?
22:21:45  <TooTallNate>isaacs: but i guess ya, num chars makes sense
22:21:55  <piscisaureus_>isaacs: just say that n is num of chars if it is a string
22:21:57  <mmalecki>well, it can be number of objects too
22:22:03  <mmalecki>number of arrays
22:22:10  <mmalecki>number of whatever really
22:22:14  <isaacs>piscisaureus_: ok, so, you have a readable stream that emits a whole slew of <Buffer ef a3 bf>
22:22:17  <mmalecki>this is why setEncoding is problematic
22:22:19  <isaacs>piscisaureus_: call it the AppleStream
22:22:24  <TooTallNate>mmalecki: using "data" for anything but Buffers/strings was always an anitpattern to me
22:22:49  <mmalecki>TooTallNate: that's how I wrote all my streaming parsers tho
22:23:08  <isaacs>TooTallNate: from the pov of node-core, using "data" for anything other than buffers or strings is not explicitly prohibited, but it's certainly frowned upon
22:23:21  <isaacs>piscisaureus_: so, you emit these three bytes over and over agani
22:23:22  <TooTallNate>mmalecki: why did you need to use a "data" event vs. some other event?
22:23:31  <isaacs>piscisaureus_: so you setEncoding('utf8')
22:23:36  <isaacs>piscisaureus_: and then do read(4)
22:23:50  <isaacs>piscisaureus_: do you get 4 bytes (1 and 1/3 apples?) or 12
22:24:02  <piscisaureus_>isaacs: a string with length 4
22:24:11  <mmalecki>TooTallNate: to be able to make my parser work as a stream. that is, enable piping, mainly
22:24:13  <isaacs>k
22:24:19  <mmalecki>rr
22:24:21  <isaacs>piscisaureus_: just... ugh. that's a pita.
22:24:30  <isaacs>because all the code i have is very buffer-centric
22:24:36  <TooTallNate>mmalecki: and what are you using these parsed "data" objects with that require back-pressure?
22:24:40  <piscisaureus_>isaacs: you may have to buffer some bytes that are "half" characters. But that's what stream_decoder does also.
22:24:49  <isaacs>piscisaureus_: sure.
22:25:00  <isaacs>it's not hard, it's just a little annoying
22:25:04  <mmalecki>TooTallNate: newline-delimeted JSON parser, for example
22:25:24  <isaacs>piscisaureus_: becasue i need to make a bunch fo buffer-expecting code into buffer-or-string-expecting code
22:25:38  <isaacs>mmalecki: you should use an event other than "data" for that
22:25:43  <mmalecki>which I could transform in a separate stream, then pipe into a different network stream
22:25:52  <mmalecki>(after stringifying)
22:25:56  <isaacs>mmalecki: your parser should be a writable stream, and it should emit 'message' events or something
22:26:02  <TooTallNate>mmalecki: i think my point is that when people try to shove Objects into streams, they're segmenting the stream community, cause now your stream can only be piped to "object-ready" streams
22:26:11  <TooTallNate>there's no benefit
22:26:23  <isaacs>mmalecki: then you should make another readable stream, with "addmessage" method, and emits data events as strings/buffers
22:27:19  * isaacshas written a few object-emitting-data-event style streams
22:27:23  * isaacsregrets it to this day
22:27:32  * isaacslives with the shame as best he can.
22:27:42  <mmalecki>I don't know, streams being generic as to data type is what I really like
22:27:55  <TooTallNate>isaacs: lol
22:28:06  <TooTallNate>isaacs: also, got my first Transform stream implemented :) works great
22:28:07  <isaacs>mmalecki: it's great until it isn't.
22:28:09  <TooTallNate>and much cleaner code
22:28:19  <isaacs>TooTallNate: huzzah!~ the system works!
22:28:27  <isaacs>TooTallNate: it's working for zlib now too
22:28:31  <isaacs>in streams2 branch
22:28:45  <mmalecki>I'll deal with that for when it doesn't :)
22:28:52  <TooTallNate>isaacs: i have a desire to be able to control the size of chunks in the _transform callback, but i'm not sure the best API for that
22:29:36  <TooTallNate>mmalecki: i mean, you can't use your object-streams with any of node-core's streams, so you always need some "transform" layer in between
22:30:26  <mmalecki>yes, I'm aware
22:30:44  <mmalecki>most of my object-emitting streams are parsers
22:31:10  <mmalecki>so I accept any kind of a transform layer, because well, that's why I introduce them into the stack in the first place
22:31:26  <mmalecki>sometimes you have to operate on data you know ;)
22:34:24  <TooTallNate>mmalecki: in any case, the new readable-stream stuff explicitly expects and converts to buffers at times, so idk if you're methodology will be possible soon
22:34:48  <mmalecki>pity.
22:40:31  <isaacs>TooTallNate: hm. that's tricky.
22:40:45  <isaacs>TooTallNate: you'd have to have a passthrough in front of your _transform function
22:40:52  <isaacs>TooTallNate: then call read() on it
22:41:01  <isaacs>but now you have 4 ;buffers instead of 2
22:41:14  <isaacs>er, only 3, i guess
22:41:24  <isaacs>since passthrough doesn't put anything in its write buffer, and just consumes every chunk right away
22:41:40  <TooTallNate>isaacs: hahaha, i mean in my case this time it was easy enough, but the parser was written essentially the same as with "data" events; i haven't been able to use the new api for anything yet :p
22:42:09  <isaacs>TooTallNate: yeah, the benefit really seems to show in the app level
22:42:14  <TooTallNate>i.e. Transform does nice buffering, but the parsers are written the same way
22:42:18  <isaacs>but having base classes is really nice.
22:42:27  <isaacs>if nothing else than for consistency in teh interface
22:42:36  <TooTallNate>isaacs: yes, that part is true :)
22:44:42  <isaacs>so, i'm thinking... maybe just bite the bullet, and put setEncoding on stream.Readable
22:45:06  <isaacs>otherwise we need to re-implement it on http responses and fs and sockets and everywhere
22:45:18  <isaacs>(like we do now, and it's awful)
22:54:48  <TooTallNate>isaacs: meh, personally
22:55:06  <TooTallNate>isaacs: but i don't really get a vote since i don't use setEncoding() :p
22:57:50  * tommybergeronquit (Ping timeout: 246 seconds)
22:59:06  <isaacs>i am backwards compatibility's bitch.
22:59:14  <isaacs>and backwards compatibility does not treat its bitches kindly.
23:01:45  <txdv_>a
23:02:03  <piscisaureus_>isaacs: you can't get rid of encoding. people do text. a lot!
23:02:50  * tomshredsjoined
23:03:01  <isaacs>i knwo
23:03:08  * tomshredsquit (Client Quit)
23:03:19  <isaacs>piscisaureus_: i can whine about it, though :)
23:03:22  <mmalecki>npm i hoarders && grep 'setEncoding' -R node_modules
23:03:33  <TooTallNate>lol
23:03:42  <TooTallNate>mmalecki: how long does hoarders take to install?
23:03:54  <isaacs>piscisaureus_: at least, it should be central in the API, and not scattered all over.
23:04:03  <piscisaureus_>ja sicher
23:04:03  <mmalecki>TooTallNate: my mba ran out of disk space pretty fast
23:04:12  <mmalecki>so can't really tell
23:04:16  <TooTallNate>mmalecki: shhiiiitttttt
23:04:42  <mmalecki>I can try provisioning a joyent dedicated server and installing it there XD
23:04:43  <txdv_>i don't like the license
23:06:02  <isaacs>txdv_: on hoarders?
23:06:06  <txdv_>yeah
23:07:01  <txdv_>WTFPL is better
23:07:08  * hzquit
23:14:16  <bnoordhuis>piscisaureus_: https://github.com/joyent/libuv/pull/567#discussion_r1754728
23:14:50  <bnoordhuis>piscisaureus_: i believe what happens now is that thread.c uses the fallback implementations if you haven't called uv_loop_new() or uv_default_loop()
23:17:51  <piscisaureus_>bnoordhuis: agreed
23:18:17  <bnoordhuis>piscisaureus_: should be easy to fix though
23:18:21  <piscisaureus_>yeah
23:18:27  <piscisaureus_>doing it
23:19:23  <piscisaureus_>where are the rwlock tests...
23:19:50  <piscisaureus_>ah, test-mutexes
23:20:11  <TooTallNate>isaacs: so i should probably be writing against readable-stream rather than streams2 branch right?
23:20:20  <TooTallNate>isaacs: i mean, so that v0.8 and stuff works :)
23:20:48  <TooTallNate>isaacs: is the idea gonna be to keep that maintained for a little while until v0.10 is widespread?
23:23:00  <MI6>joyent/libuv: piscisaureus created branch reviewme2 - http://git.io/5w0jfw
23:23:04  <piscisaureus_>bnoordhuis: ^-- okay ?
23:23:18  <piscisaureus_>bnoordhuis: also, did the reviewme (sendfile emulation) branch get merged yet?
23:23:22  <bnoordhuis>piscisaureus_: yep
23:23:26  <bnoordhuis>and yes
23:23:43  <MI6>joyent/libuv: Bert Belder master * 744dc3e : windows: make uv_rwlock_init initialize libuv Without this patch, the fa - http://git.io/qscmLg
23:23:58  <piscisaureus_>bnoordhuis: ok, deleted your reviewme branch
23:24:37  * travis-cijoined
23:24:37  <travis-ci>[travis-ci] joyent/libuv#765 (reviewme2 - 744dc3e : Bert Belder): The build passed.
23:24:37  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/commit/744dc3e77c9b
23:24:37  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/2657311
23:24:37  * travis-cipart
23:24:51  <piscisaureus_>travis is scary fast....
23:25:13  * travis-cijoined
23:25:13  <travis-ci>[travis-ci] joyent/libuv#766 (master - 744dc3e : Bert Belder): The build passed.
23:25:13  <travis-ci>[travis-ci] Change view : https://github.com/joyent/libuv/compare/fed718c6cbfb...744dc3e77c9b
23:25:13  <travis-ci>[travis-ci] Build details : http://travis-ci.org/joyent/libuv/builds/2657313
23:25:13  * travis-cipart
23:26:43  * dscapejoined
23:51:48  <piscisaureus_>ah, hnakamur is a luvit guy
23:52:47  <txdv_>shoot him
23:53:02  <piscisaureus_>no, I <3 luvit
23:53:25  <txdv_>well you made your choice
23:53:36  <txdv_>why do you <3 luvit?
23:54:22  <txdv_>why simple and nice to use apis if you can have
23:54:24  <txdv_>public class Greeter<T> : IrcBotPlugin<T> where T : IrcClient
23:54:41  <piscisaureus_>good point
23:55:26  <piscisaureus_>actually I don't write any lua
23:55:31  <txdv_>type masturbation is so good
23:55:33  <piscisaureus_>but I like that we have a spinoff
23:55:47  <txdv_>anders thought that javascript lacks types, so he brought some
23:56:10  <piscisaureus_>I think that js needs some angular brackets indeed
23:56:17  <piscisaureus_>I have no specific opninion on ts
23:56:23  <piscisaureus_>but the academics at our company love it
23:56:30  <txdv_>angular brackets?
23:56:37  <piscisaureus_>whatever
23:56:41  <piscisaureus_>< >
23:57:24  <txdv_>and what would these brackets do in js?
23:59:52  <txdv_>i like ts, there are a lot of scenarios where you don't have luxeriosity of test running every bit of code
23:59:55  <piscisaureus_>dunno. function templates? parametrized metaclasses? annotations? InterfaceReferenceAbstractMetaSingletonFactories?