00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:01:21  * groundwaterquit (Quit: groundwater)
00:03:46  <MI6>joyent/node: Timothy J Fontaine v0.10 * 180f987 : blog: Post for v0.10.15 (+3 more commits) - http://git.io/cjI--g
00:12:17  <tjfontaine>isaacs: ping
00:12:43  * st_lukejoined
00:13:01  * dscapejoined
00:18:46  * qardquit (Quit: Leaving.)
00:19:08  * indexzeroquit (Quit: indexzero)
00:20:28  * dshaw_quit (Quit: Leaving.)
00:21:40  * indexzerojoined
00:21:42  * st_lukequit (Read error: Connection reset by peer)
00:21:48  * st_luke_joined
00:27:20  * dshaw_joined
00:27:40  * Chip_Zerojoined
00:32:24  * TooTallNatequit (Quit: Computer has gone to sleep.)
00:39:09  * kazuponjoined
00:43:58  * kazuponquit (Ping timeout: 276 seconds)
00:44:59  * amartensquit (Quit: Leaving.)
00:45:53  * c4milojoined
00:49:26  * TooTallNatejoined
00:51:25  * st_luke_quit (Remote host closed the connection)
00:55:15  * st_lukejoined
01:01:28  * jmar777joined
01:02:40  * jmar777quit (Remote host closed the connection)
01:06:19  * c4miloquit (Remote host closed the connection)
01:06:46  * c4milojoined
01:07:59  * kazuponjoined
01:11:35  * c4miloquit (Ping timeout: 268 seconds)
01:13:52  * kazuponquit (Ping timeout: 276 seconds)
01:17:35  * abraxasjoined
01:20:09  * st_lukequit (Remote host closed the connection)
01:24:34  * jmar777joined
01:27:30  * TooTallNatequit (Quit: Computer has gone to sleep.)
01:39:02  * kazuponjoined
01:39:20  * jmar777quit (Remote host closed the connection)
01:42:24  * jmar777joined
01:47:17  <isaacs>pong
01:47:18  <isaacs>tjfontaine: pong
01:47:59  * paddybyersquit (Ping timeout: 260 seconds)
01:48:28  * dshaw_quit (Quit: Leaving.)
01:49:05  * mikealquit (Quit: Leaving.)
01:51:42  * kazuponquit (Remote host closed the connection)
01:56:13  <isaacs>oh, that was for the 0.10.15 tweet
01:57:48  * defunctzombiechanged nick to defunctzombie_zz
02:04:08  * amartensjoined
02:14:50  * amartensquit (Quit: Leaving.)
02:17:49  * mikealjoined
02:21:14  * kazuponjoined
02:23:47  * kazuponquit (Remote host closed the connection)
02:27:25  * st_lukejoined
02:43:20  * amartensjoined
02:43:38  * dshaw_joined
02:43:45  * defunctzombie_zzchanged nick to defunctzombie
02:48:49  * jmar777quit (Remote host closed the connection)
03:01:53  * st_lukequit (Remote host closed the connection)
03:14:22  * dap1joined
03:29:57  * dshaw_quit (Quit: Leaving.)
03:35:57  * dap1quit (Quit: Leaving.)
03:36:49  * AvianFluquit (Remote host closed the connection)
03:40:54  * kazuponjoined
03:42:55  * amartensquit (Quit: Leaving.)
03:55:50  * LOUDBOTquit (Remote host closed the connection)
03:56:04  * LOUDBOTjoined
04:07:45  * bradleymeckjoined
04:25:19  * indexzeroquit (Quit: indexzero)
04:28:03  * indexzerojoined
04:28:56  * Benvie_joined
04:30:29  * Benviequit (Ping timeout: 248 seconds)
04:43:16  * amartensjoined
04:45:26  * indexzeroquit (Quit: indexzero)
04:48:06  * amartensquit (Ping timeout: 264 seconds)
04:50:40  * indexzerojoined
04:52:52  * indexzeroquit (Client Quit)
04:54:41  <tjfontaine>heh ya you could ignore it :)
04:56:00  * st_lukejoined
05:03:40  * bradleymeck_joined
05:04:37  * bradleymeckquit (Ping timeout: 276 seconds)
05:04:37  * bradleymeck_changed nick to bradleymeck
05:09:25  * kazuponquit (Remote host closed the connection)
05:23:00  * bradleymeckquit (Quit: bradleymeck)
05:23:21  * mikealquit (Quit: Leaving.)
05:30:34  * mikealjoined
05:43:33  * amartensjoined
05:56:54  * mikealquit (Quit: Leaving.)
06:00:39  * inolenquit (Quit: Leaving.)
06:03:48  * mikealjoined
06:04:38  * mikealquit (Client Quit)
06:06:46  * mikealjoined
06:14:10  * inolenjoined
06:39:17  * defunctzombiechanged nick to defunctzombie_zz
06:41:07  * mikealquit (Quit: Leaving.)
06:57:41  * inolenquit (Quit: Leaving.)
07:00:21  * inolenjoined
07:03:40  * raffikijoined
07:06:47  * amartensquit (Quit: Leaving.)
07:11:19  * mikealjoined
07:20:30  * mikealquit (Ping timeout: 256 seconds)
07:20:33  * rendarjoined
07:36:47  * bnoordhuisjoined
07:40:14  * hzjoined
07:53:26  * wmiljoined
07:53:57  * wmilquit (Remote host closed the connection)
08:01:11  * mikealjoined
08:05:19  * hzquit (Ping timeout: 276 seconds)
08:06:09  * mikealquit (Ping timeout: 264 seconds)
08:07:06  * amartensjoined
08:11:07  <MI6>joyent/node: Ben Noordhuis v0.10 * e436314 : test: fix simple/test-setproctitle - http://git.io/VuR4sg
08:11:17  * amartensquit (Ping timeout: 248 seconds)
08:16:27  * hzjoined
08:31:40  * mikealjoined
08:35:50  * mikealquit (Ping timeout: 240 seconds)
08:41:48  * billjoined
08:41:55  * billchanged nick to Guest74999
08:42:00  <Guest74999>hi, everyone
08:42:54  * Guest74999changed nick to bill1024
08:43:10  <bill1024>libuv is awesome!
08:43:22  <bnoordhuis>we try, we try
08:44:10  <bill1024>much better than libevent2
08:45:25  <bnoordhuis>what are you building with libuv?
08:45:49  <bill1024>tcp server.
08:46:48  <bill1024>C1000k is so easy with libuv, and cross platform.
08:48:05  <bill1024>but I am confused, libuv doesn't read write file with iocp.
08:49:01  <bnoordhuis>no, because you can't
08:49:11  <bill1024>why not.
08:49:11  <bnoordhuis>at least, not without serious restrictions
08:49:26  <bnoordhuis>you have to open the file in the windows equivalent of direct mode
08:49:35  <bnoordhuis>i.e. 'skip the file cache' mode
08:49:47  <bill1024>we can cache in user mode.
08:49:49  <bnoordhuis>you also have to make sure your read buffers are suitably aligned and so on
08:50:23  <bnoordhuis>trust me on this, it's something we've looked into in considerable detail
08:50:40  <bill1024>must be direct mode?
08:50:51  <bnoordhuis>yeah, else it won't work
08:50:56  <bnoordhuis>the unices have the same restriction
08:51:13  <bill1024>I know linux's native aio must be direct.
08:52:21  <bill1024>does msdn says it must be direct?
08:52:44  <bnoordhuis>i think so. you should ask piscisaureus when he's around, he's our main windows guy
08:53:09  <bnoordhuis>(i'm the unix guy in case you're wondering)
08:54:05  <bill1024>you guys are awesome, great job!
08:55:20  * paddybyersjoined
08:55:28  <bnoordhuis>thanks :)
08:56:42  * abraxasquit (Remote host closed the connection)
09:03:10  * qmxquit (Ping timeout: 276 seconds)
09:05:33  * qmxjoined
09:05:43  * bill1024quit
09:07:27  * amartensjoined
09:12:05  * amartensquit (Ping timeout: 248 seconds)
09:23:55  * qmxquit (Ping timeout: 260 seconds)
09:26:05  * qmxjoined
09:30:37  * st_lukequit (Remote host closed the connection)
09:52:38  * qmxquit (Ping timeout: 240 seconds)
09:54:37  * qmxjoined
10:07:45  * amartensjoined
10:11:39  * dominictarrjoined
10:12:42  * amartensquit (Ping timeout: 264 seconds)
10:39:14  * bajtosjoined
10:39:20  * mikealjoined
10:48:14  * mikealquit (Ping timeout: 240 seconds)
11:08:05  * amartensjoined
11:12:42  * amartensquit (Ping timeout: 264 seconds)
11:16:09  * mikealjoined
11:22:21  * mikealquit (Ping timeout: 264 seconds)
11:27:55  * dominictarrquit (Quit: dominictarr)
11:36:59  <roxlu>hi guys, I'm porting my app to winodws which uses libuv; when I try to compile I with vs2010 I get: "uv-win.h(47) fatal error ..: Cannot open include file 'tree.h', is tree.h now part of libuv?
11:37:28  * roxluthinkgs uv-tree.h would make more sense
11:46:39  <bnoordhuis>roxlu: well, we stole it from the bsds
11:47:26  <bnoordhuis>if it creates conflicts, we can rename it, no problem, but i don't think that's the issue, right?
11:48:03  <roxlu>no it doesn't give any conflicts
11:48:29  <roxlu>but I copied all "uv-*.h" files to my project.. didn't see that tree.h was part of it as all other dependencies are nicely called uv-*.h
11:49:32  * mikealjoined
11:50:07  <bnoordhuis>i might remove it from the include/ dir someday, it's an implementation detail that shouldn't be exposed, really
11:50:24  <bnoordhuis>uv-unix actually doesn't expose it, uv-win however...
11:51:54  <bnoordhuis>okay, lunch - biab
11:54:11  * mikealquit (Ping timeout: 260 seconds)
11:56:14  * bnoordhuisquit (Ping timeout: 240 seconds)
12:08:25  * amartensjoined
12:12:49  * amartensquit (Ping timeout: 246 seconds)
12:28:27  * jmar777joined
12:31:26  * mikealjoined
12:36:09  * mikealquit (Ping timeout: 264 seconds)
12:37:36  * `3E|AFQZZchanged nick to `3E
12:50:50  * bradleymeckjoined
12:51:53  * AvianFlujoined
13:08:46  * amartensjoined
13:08:49  * bradleymeckquit (Quit: bradleymeck)
13:13:09  * amartensquit (Ping timeout: 248 seconds)
13:15:00  * bnoordhuisjoined
13:20:03  * bajtosquit (Quit: bajtos)
13:25:40  * c4milojoined
13:40:32  * mikealjoined
13:45:09  * mikealquit (Ping timeout: 264 seconds)
13:48:39  * c4miloquit (Remote host closed the connection)
13:49:06  * c4milojoined
13:54:09  * c4miloquit (Ping timeout: 264 seconds)
14:09:07  * amartensjoined
14:13:36  * amartensquit (Ping timeout: 256 seconds)
14:20:07  * mikealjoined
14:24:42  * mikealquit (Ping timeout: 264 seconds)
14:25:35  * indexzerojoined
14:30:15  * bajtosjoined
14:31:06  * raffikiquit (Remote host closed the connection)
14:33:06  * kazuponjoined
14:37:36  <indutny>isaacs: hey man
14:37:37  <indutny>yt?
14:43:08  * c4milojoined
14:43:57  <isaacs>hola
14:44:08  <isaacs>indutny: hey, actually i wanted to mention something interesting to you
14:44:18  <isaacs>indutny: you remember that pull req to remove the ondata/onend garbage?
14:44:19  <indutny>I've something interesting too :)
14:44:22  <indutny>yes
14:44:27  <indutny>what's up with it?
14:44:32  <isaacs>well, it doesn't merge into master any more (changes in net, in streams3, etc.)
14:44:36  <isaacs>but, it's a lot easier to do now
14:44:44  <indutny>ah
14:44:50  <indutny>ok, I can re-do it
14:44:53  <isaacs>so i whipped it up last night, on master, and WOW, it's weird!
14:45:01  <indutny>?
14:45:17  <isaacs>the performance is mostly the same, except on a few http benchmarks, vs master: https://gist.github.com/isaacs/6089411
14:46:01  <isaacs>indutny: that was the worst one
14:46:04  <indutny>ah
14:46:05  <indutny>well
14:46:08  <isaacs>the others are all basically +- 1-5%
14:46:15  <isaacs>but! here's the weird part!
14:46:19  <isaacs>this is vs v0.10: https://gist.github.com/isaacs/6089421
14:46:31  <indutny>wut?
14:46:38  <indutny>wtf
14:46:41  <isaacs>when the chunks are small, it's 46% slower. when they're big, it's 1900% faster!
14:47:02  <indutny>gosh
14:47:07  <isaacs>well, i guess, it's mostly ascii vs utf8/buf
14:47:12  <isaacs>buffers are WAY faster
14:47:17  <isaacs>utf8 is quite a bit faster
14:47:22  <isaacs>ascii is quite a bit slower, though
14:47:37  <indutny>ok
14:47:49  <isaacs>what was your interesting thing?
14:48:02  <indutny>fetch failed https://npm.internal:5984/graceful-fs/-/graceful-fs-1.1.14.tgz
14:48:14  <isaacs>ok..
14:48:17  <indutny>somehow npm has started trying to access https version of my internal npm repo
14:48:20  <indutny>but
14:48:24  <indutny>I don't have https interface :)
14:48:28  <indutny>it was always http-only
14:48:32  <isaacs>oh.. that's weird
14:48:41  <isaacs>what's the registry url set to?
14:48:42  <indutny>yeah, and was working for almost half-year until today
14:48:48  <indutny>http://npm.internal/
14:48:52  <isaacs>huh...
14:48:53  <isaacs>ok
14:49:04  <indutny>any idea why this could be happening?
14:49:10  <isaacs>can you gist http://npm.internal/graceful-fs/ response?
14:49:28  <isaacs>or, with the :5984
14:49:32  <indutny>sure, one sec
14:49:34  <isaacs>$registry/graceful-fs/
14:50:17  <indutny>https://gist.github.com/indutny/15ef4e5403cee22366b2
14:50:52  <indutny>heh, I spoiled internal domain name
14:50:58  <isaacs>oh well :)
14:51:05  <indutny>whatever, its not important
14:51:44  <isaacs>ok, so it's not the https in the dist.tarball url
14:51:51  <indutny>yeah
14:52:31  <isaacs>indutny: can you (private gist, pls) `npm config ls`?
14:52:46  <isaacs>indutny: don't worry, it won't dump any passwords, but just to keep from sharing the private registry some more :)
14:52:52  <indutny>yeah, I know
14:53:02  <indutny>well, its a bit harder than it sounds
14:53:10  <indutny>that happens on CI machine
14:53:12  <indutny>one sec
14:53:46  <indutny>also
14:53:56  <indutny>sometimes it fetches packets from https://registry.npmjs.org/bem/0.5.31
14:54:14  <indutny>I believe it could be related to it
14:54:44  <isaacs>huh.
14:55:07  <isaacs>it sounds to me like there's a config getting mixed up somewhere
14:55:20  <isaacs>specifically, i think there's some overly-clever logic around how always-auth is handled
14:55:48  <isaacs>and it might not be getting the registry url set soon enough, or someone might have a weird explicit url as a dependency
14:57:41  <indutny>hm...
14:57:55  <indutny>ok
14:57:57  <indutny>thank you
14:58:05  <indutny>I'll try to obtain output of `npm config ls`
14:59:03  <isaacs>kk
15:01:49  <indutny>thanks
15:04:02  * mikealjoined
15:09:26  * amartensjoined
15:09:47  <indutny>isaacs: https://gist.github.com/indutny/71bbd2a375d8ed33dc03
15:09:50  <indutny>very interesting
15:10:24  <isaacs>indutny: so, it's not *actually* set on the cli, probably
15:10:31  <indutny>well
15:10:39  <isaacs>indutny: because npm does a bit of logic to figure out the registry, and then sets it at the cli-level
15:10:39  <indutny>it should be set in `npm install --registry`
15:10:52  <isaacs>indutny: but, yeah, it's not getting set *at all*, probably
15:10:53  <indutny>interesting
15:11:10  <indutny>I'll try to convince them to put internal registry into config file
15:11:20  <isaacs>indutny: if you do `npm config ls --registry=blerg` then it would show blerg
15:11:52  <indutny>yeah
15:12:00  <indutny>idk
15:13:50  * amartensquit (Ping timeout: 240 seconds)
15:15:06  <bnoordhuis>i wonder... if i mmap() a file in read-only mode, then write() the memory to a fd, is the kernel smart enough to realize it can do a zero-copy operation?
15:15:33  <bnoordhuis>i hope the answer is 'yes' but i'm afraid the answer is 'no'
15:18:50  <indutny>:)
15:18:52  * mikealquit (Quit: Leaving.)
15:19:44  * mikealjoined
15:22:42  * mikealquit (Client Quit)
15:33:57  * qmxquit (Ping timeout: 248 seconds)
15:35:11  * qmxjoined
15:40:44  * dominictarrjoined
15:40:51  * kazuponquit (Remote host closed the connection)
15:42:37  * dominictarr_joined
15:44:46  <bajtos>bnoordhuis: could you do me a favour and run my TLS benchmark on your machine? I can't get my MBP+OSX behaving reasonably :(
15:45:09  * dominictarrquit (Ping timeout: 264 seconds)
15:45:33  * dominictarr_changed nick to dominictarr
15:46:59  <bnoordhuis>bajtos: i'm on my laptop right now (i.e. not a machine for proper benchmarking)
15:47:37  <bnoordhuis>btw, you shouldn't benchmark on os x :)
15:47:56  <bajtos>bnoordhuis: yeah, I am starting to learn it the hard way :-(
15:48:46  * qmxquit (Ping timeout: 276 seconds)
15:48:50  <bajtos>bnoordhuis: will it help if I setup multi-boot on my MBP and run Linux for benchmarks? or is it a problem of HW?
15:49:13  <bnoordhuis>well, there's a lot of factors involved when it comes to doing benchmarks
15:49:16  <bnoordhuis>in no particular order
15:49:32  <bnoordhuis>disable turboboost and hyperthreading (you already knew that :)
15:49:42  <bnoordhuis>don't use os x, use linux
15:49:54  <bnoordhuis>boot in single user mode
15:50:12  * qmxjoined
15:50:18  <bnoordhuis>preferably avoid ssh - it has a tendency to renegotiate the session at inopportune times
15:50:47  <bnoordhuis>kill as many daemons / processes as possible so you don't get schedulere interference
15:50:57  <bnoordhuis>*scheduler
15:51:03  <bnoordhuis>should i go on? :)
15:52:23  <bnoordhuis>there was this freebsd kernel hacker that wrote a pretty good blog post on how to do benchmarking but i can't find it anymore :-/
15:53:24  <bnoordhuis>oh, let's not forget ethernet / wifi - preferably disable that when benchmarking
15:55:29  <bajtos>hmm. seems that we *someone* could start selling "benchmarking platform as a service"
15:55:46  <bajtos>* seem that someone …
15:55:50  <tjfontaine>good luck with that. :)
15:57:03  <bajtos>bnoordhuis: can you disable turboboost and hyperthreading from Linux? AFAIK there is not BIOS in rMBP to disable it there...
15:59:04  <bnoordhuis>bajtos: i don't think so. afaik it's enabled/disabled when the cpu's microcode loads, i.e. before the OS gets booted
15:59:32  <bnoordhuis>well, maybe hyperthreading could be disabled afterwards - but not turboboost probably
15:59:45  <bajtos>bnoordhuis: internet claims that OSX and Windows is able to disable it at runtime
16:00:11  <bajtos>bnoordhuis: https://github.com/nanoant/DisableTurboBoost.kext
16:00:28  <bnoordhuis>yeah, google tells me the same
16:01:32  <bnoordhuis>bajtos: wrmsr -pi 0x1a0 0x4000850089
16:01:41  <bnoordhuis>that's on a per-core basis, apparently
16:01:45  <bnoordhuis>http://luisjdominguezp.tumblr.com/post/19610447111/disabling-turbo-boost-in-linux
16:02:03  <bnoordhuis>needs the msr kernel module though
16:02:28  * mikealjoined
16:03:31  <bnoordhuis>apparently you can disable hyperthreading by booting the kernel with maxcpus=<n> where n is the number of physical cores
16:03:52  <bnoordhuis>can you tell i always do it through the bios? :)
16:07:45  * qardjoined
16:09:45  * amartensjoined
16:14:30  * amartensquit (Ping timeout: 264 seconds)
16:16:12  <bajtos>bnoordhuis: yes, I can tell that. And also that you are not benchmarking on your MBA ;-)
16:23:34  * defunctzombie_zzchanged nick to defunctzombie
16:32:21  * piscisaureus_joined
16:32:25  <piscisaureus_>isaacs: hey
16:32:38  <piscisaureus_>isaacs: I'm alive, just disconnecting myself a bit
16:35:32  * austojoined
16:38:40  * c4miloquit (Remote host closed the connection)
16:39:07  * c4milojoined
16:44:01  * c4miloquit (Ping timeout: 276 seconds)
16:46:56  * groundwaterjoined
16:48:52  * bill1024joined
16:51:18  * kazuponjoined
16:52:38  * qmxquit (Ping timeout: 240 seconds)
16:54:47  * qmxjoined
16:56:19  * kazuponquit (Ping timeout: 268 seconds)
16:56:31  * mikealquit (Quit: Leaving.)
16:57:17  * bill1024part
17:00:18  * qmxquit (Excess Flood)
17:00:44  * qmxjoined
17:01:41  * julianduquequit (Quit: :))
17:02:35  <trevnorris>isaacs: ping
17:03:19  * hzquit (Disconnected by services)
17:03:22  * hzjoined
17:10:06  * amartensjoined
17:12:36  * qmxquit (Quit: ZNC - http://znc.in)
17:13:40  * qmxjoined
17:14:33  * amartensquit (Ping timeout: 264 seconds)
17:16:40  * kazuponjoined
17:19:34  * c4milojoined
17:19:38  * c4miloquit (Remote host closed the connection)
17:20:04  * c4milojoined
17:24:21  * c4miloquit (Ping timeout: 248 seconds)
17:26:59  * kazuponquit (Remote host closed the connection)
17:30:30  * mikealjoined
17:32:11  * amartensjoined
17:34:12  * AvianFluquit (Ping timeout: 256 seconds)
17:34:36  * AvianFlujoined
17:36:39  * bill1024joined
17:38:26  <bill1024>how i can communicate with other thread via queue?
17:38:59  <bill1024>if something want to send message to the queue, how can libuv thread wakup?
17:39:28  <mmalecki>bill1024: check this out: http://nikhilm.github.io/uvbook/threads.html#inter-thread-communication
17:41:11  <roxlu>hi guys, I'm trying to port my app to windows which is using uv_pipe*, when I try to create the pipe I'm getting a "Permission denied" error (even when I execute it as administrator)
17:41:28  <bill1024>thanks
17:42:20  <LeftWing>bill1024: I did some cross-thread method-calling stuff in v8plus -- https://github.com/wesolows/v8plus/blob/master/v8plus_csup.c#L158
17:43:01  * AvianFluquit (Ping timeout: 248 seconds)
17:43:03  <roxlu>uv_pipe_bind(..) is the one which failes
17:43:05  <roxlu>-e
17:43:20  * AvianFlujoined
17:43:50  * piscisaureus_quit (Ping timeout: 240 seconds)
17:45:48  * bill1024quit
17:46:38  * AvianFluquit (Remote host closed the connection)
17:47:18  * AvianFlujoined
17:49:06  * AvianFluquit (Remote host closed the connection)
17:49:33  * AvianFlujoined
17:49:41  * piscisaureus_joined
17:50:03  * perezdjoined
17:53:31  <roxlu>ah ... it was the name of the pipe : )
17:53:46  <roxlu>of course windows want to -not follow any standard- : )
17:56:01  * defunctzombiechanged nick to defunctzombie_zz
17:56:33  * piscisaureus_quit (Ping timeout: 264 seconds)
17:58:39  * dominictarrquit (Quit: dominictarr)
18:01:54  * AvianFluquit (Ping timeout: 264 seconds)
18:07:55  * Damn3dquit (Ping timeout: 245 seconds)
18:12:04  * dshaw_joined
18:14:21  * Damn3djoined
18:14:41  * hzquit
18:26:14  * defunctzombie_zzchanged nick to defunctzombie
18:37:22  * kazuponjoined
18:41:02  <indutny>hey hey hey
18:41:07  <indutny>bnoordhuis: how are you, man?
18:42:42  * kazuponquit (Ping timeout: 264 seconds)
18:51:09  * bnoordhuisquit (Ping timeout: 264 seconds)
18:59:10  * c4milojoined
19:15:53  * dominictarrjoined
19:16:34  * swajquit (Remote host closed the connection)
19:18:57  * jmar777quit (Read error: Connection reset by peer)
19:19:22  * jmar777joined
19:22:37  <trevnorris>tjfontaine: ping
19:23:56  * swajjoined
19:25:31  * indexzeroquit (Quit: indexzero)
19:33:39  <indutny>isaacs: do you remember a problem with v8 heap on smartos?
19:33:45  <indutny>was it something related to sbrk?
19:40:41  * mikealquit (Quit: Leaving.)
19:41:03  <tjfontaine>trevnorris: pong
19:42:47  * mikealjoined
19:46:49  * bajtosquit (Quit: bajtos)
19:47:55  * bnoordhuisjoined
19:48:23  <trevnorris>tjfontaine: it would be helpful if issues/PR's where we've requested action, would automatically receive a message after N days that if they don't respond in M days the issue would be closed.
19:48:29  <trevnorris>tjfontaine: think something like that is possible?
19:49:39  <tjfontaine>trevnorris: it's all just software, so anything is possible :) that certainly is something I would expect a Good issue tracker would support without us bolting onto externally
19:49:54  <trevnorris>haha
19:50:14  <tjfontaine>but, yes I can think of ways to do it
19:50:44  <tjfontaine>trevnorris: alternatively, how about this, we setup a triage rotation for every friday :)
19:51:01  <tjfontaine>which is sort of what you already starting doing today
19:51:18  <trevnorris>yeah, just hate seeing issue cound > 500
19:51:23  <trevnorris>*count
19:51:54  <tjfontaine>I would note, that just because we haven't heard anything about an issue doesn't mean it's still not an issue
19:52:25  <tjfontaine>we have a few sentinel issues open that we want to eventually do
19:52:45  <tjfontaine>so filtering around that in the auto-close logic is difficult
19:52:49  <trevnorris>totally, but when we can't reproduce and we're not getting any information back from the user imo no use cluttering up the tracker.
19:53:00  <trevnorris>that's what I thought.
19:53:56  <trevnorris>tjfontaine: oh, and I didn't expect an auto close. more like a message that it'll be flagged.
19:54:00  <trevnorris>we'd still have to close it.
19:54:08  <trevnorris>just make them easier to sort.
19:54:18  <tjfontaine>do we already have a label need-info ?
19:54:35  * indexzerojoined
19:54:57  <trevnorris>nope
19:56:16  <tjfontaine>that seems like step 1, go around and tag issues as need more info, and then we have a quick glance to go around every friday and say, guess we can close it :)
19:56:53  <trevnorris>good idea. I forget those labels are right there :P
19:57:10  <tjfontaine>hehe
20:01:45  * jmar777quit (Remote host closed the connection)
20:06:10  * c4miloquit (Remote host closed the connection)
20:06:37  * c4milojoined
20:08:01  <trevnorris>tjfontaine: think we could add a "no-freakin-idea" tag? seriously don't get what some of these are for. :P
20:08:21  <tjfontaine>hahah, "English language barrier" :P
20:10:53  * c4miloquit (Ping timeout: 240 seconds)
20:13:44  * mikealquit (Quit: Leaving.)
20:15:26  * dshaw_quit (Ping timeout: 240 seconds)
20:15:58  <trevnorris>yeah, that might be good. just tag them ELB
20:18:36  <tjfontaine>probably not advisable
20:18:43  <trevnorris>;)
20:19:55  <trevnorris>ugh. these mother ... that post coffee script.
20:20:05  <tjfontaine>ya well
20:20:41  <trevnorris>if I created a BrainFuck to js parser could I post that code as well?
20:20:53  <tjfontaine>not and keep your commit bit :P
20:21:07  <trevnorris>lol
20:21:14  <tjfontaine>or alternatively I could come down there and slap you with a hallibut
20:23:32  <trevnorris>hahaha.
20:24:08  <trevnorris>i'll personally bitch slap the first person to post a PR that has code like this final example: http://ariya.ofilabs.com/2013/01/es6-and-array-comprehension.html
20:24:28  <tjfontaine>yes.
20:24:35  <tjfontaine>comprehensions are bad.
20:24:38  <tjfontaine>:)
20:25:03  <tjfontaine>like those asshole python people who think an 80char wide list comp is helpful
20:25:21  <trevnorris>don't know python, have an example?
20:25:22  <tjfontaine>LOOK MA WHAT I CAN DO ON ONE LINE, ARENT I SO COOL?!
20:25:22  <LOUDBOT>PIG AIDS, PIG AIDS, PIG AIDS, PIG AIDS PIG AIDS
20:25:28  <tjfontaine>exactly.
20:26:31  <tjfontaine>trying to find a good bad example
20:27:07  <tjfontaine>this is starting to get obtuse for example: noprimes = [j for i in range(2, 8) for j in range(i*2, 50, i)]
20:27:36  <trevnorris>aahhh. that makes my eyes bleed!
20:27:58  <tjfontaine>>>> [j for i in range(2, 8) for j in range(i*2, 50, i)]
20:27:58  <tjfontaine>[4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 10, 15, 20, 25, 30, 35, 40, 45, 12, 18, 24, 30, 36, 42, 48, 14, 21, 28, 35, 42, 49]
20:28:56  <tjfontaine>then they went and made it worse, and added dict comprehensions
20:28:58  <tjfontaine>http://infohost.nmt.edu/tcc/help/pubs/python/web/dict-comprehensions.html
20:29:18  <trevnorris>yes because: noprimes = [], i = 1; while (++i <= 25) noprimes.push(i * 2); is sooo much harder and longer.....
20:29:46  <tjfontaine>trevnorris: but I can look like i'm doing MATHS and ARENT I SMART
20:29:57  * julianduquejoined
20:30:01  <tjfontaine>underneath they
20:30:05  <tjfontaine>are just generators as well
20:30:57  <trevnorris>oh dude. those should be renamed dick-comprehensions, because if you're using one, you are one.
20:31:25  <tjfontaine>so, as you can tell, I'm already against comprehensions in core :P
20:31:57  <trevnorris>yeah. if we start accepting crap like that i'll seriously consider moving on.
20:32:14  <trevnorris>i'll be fine with generators, as soon as their performance is on par.
20:32:42  <tjfontaine>I'm not sure how much we'd need generators in core
20:33:00  <tjfontaine>it's a different story if v8 ships with it enabled by default
20:33:20  * c4milojoined
20:36:44  * jmar777joined
20:37:31  <trevnorris>tjfontaine: good label name for not-touched-in-forever-and-probably-not-applicable-anymore?
20:37:40  <Domenic_>i don't understand people who dislike comprehensions but use .map and .filter.
20:38:09  <tjfontaine>I don't use map and filter often
20:38:14  <tjfontaine>if that makes you feel better
20:38:43  <trevnorris>yeah. hate those too.
20:38:54  <trevnorris>basically anything that makes an unnecessary function call.
20:39:09  <isaacs>indutny: yes, we float a patch about that
20:39:19  <indutny>isaacs: ok
20:39:24  <indutny>I've found the solution to my problem :)
20:39:30  <indutny>it was just a terrible fragmentation in umem
20:39:36  <isaacs>indutny: e3bb6e1
20:39:36  <indutny>which was fixed in latest JPC smartos builds
20:39:38  <tjfontaine>trevnorris: hm, maybe-close anything that we can all quickly peruse and decide if they should be closed
20:39:39  <isaacs>kewl
20:39:44  <indutny>yeah
20:40:05  <trevnorris>tjfontaine: cool. thanks.
20:41:47  * dshaw_joined
20:42:25  <trevnorris>isaacs: fyi, there's now a maybe-close label. doing a little house cleaning now.
20:42:59  <tjfontaine>indutny: btw that v8 patch that we currently float was merged upstream
20:43:06  <indutny>great
20:43:07  <isaacs>tjfontaine: orly?? nice
20:43:18  <tjfontaine>isaacs: yup, yesterday
20:43:21  <isaacs>sweet!
20:43:22  * piscisaureus_joined
20:44:07  * mikealjoined
20:44:44  <trevnorris>tjfontaine: know if there's a way to filter un-labeled issues? that would be nice.
20:45:57  <tjfontaine>trevnorris: not without using the api, might I suggest filing an issue about that on isaacs/github/issues and then emailing [email protected] :)
20:46:19  <trevnorris>heh ok
20:47:42  <isaacs>trevnorris: i think there's already an issue on that.
20:47:48  <trevnorris>coolio
20:47:50  <isaacs>trevnorris: but you should also email github, adn reference it :)
20:48:37  * mikealquit (Ping timeout: 248 seconds)
20:50:50  * c4miloquit (Remote host closed the connection)
20:51:17  * c4milojoined
20:53:30  * piscisaureus_quit (Ping timeout: 264 seconds)
20:53:57  * c4miloquit (Read error: No route to host)
20:54:14  * c4milojoined
20:59:21  * Benvie_quit
20:59:34  <trevnorris>isaacs: thoughts, remove deprecation warning on binary encoding? again, technically it's latin1, but still, it now has kick ass support from v8.
21:00:56  * Benviejoined
21:02:23  <tjfontaine>trevnorris: don't forget to try and comment with a sha if you can track down when it was added
21:02:32  <trevnorris>tjfontaine: will do. thanks.
21:02:47  <trevnorris>tjfontaine: crap, you reading everything that's going through?
21:02:49  <tjfontaine>trevnorris: also, thanks so much for doing this, I was going to do this while watching tv tonight :)
21:02:55  <tjfontaine>trevnorris: I always read it all
21:03:20  <tjfontaine>I wish I got notifications on labels and assignments, but whatever
21:03:28  <trevnorris>tjfontaine: wow, impressive. right now just visiting issues that have no labels.
21:07:17  <tjfontaine>trevnorris: heh, I guess I thought it's what we were all already doing :)
21:07:35  * c4miloquit (Remote host closed the connection)
21:07:57  <trevnorris>tjfontaine: done 13-21. going to call it quits at 10.
21:08:02  * c4milojoined
21:08:03  * pquernaquit (Read error: Operation timed out)
21:08:15  * pquernajoined
21:08:16  <tjfontaine>trevnorris: took me a second, but you mean pages :)
21:08:23  <trevnorris>hah, yeah.
21:08:36  * LOUDBOTquit (Ping timeout: 256 seconds)
21:09:15  <tjfontaine>trevnorris: I've been playing around with doing an issues command line interface, not entirely unlike https://npmjs.org/package/gh but maybe something using https://npmjs.org/package/blessed for it be browsable
21:09:22  <tjfontaine>playing around with the idea
21:09:40  <trevnorris>tjfontaine: that would be awesome. then i'd never have to leave my terminal!
21:09:58  <tjfontaine>I never like to leave my keyboard :)
21:10:06  <trevnorris>ditto
21:11:58  * LOUDBOTjoined
21:12:15  * jmar777quit (Remote host closed the connection)
21:13:07  * c4miloquit (Ping timeout: 276 seconds)
21:16:42  * rendarquit
21:19:54  * dshaw_quit (Ping timeout: 264 seconds)
21:21:24  <trevnorris>tjfontaine: other than JIRA, have any issue trackers you like?
21:21:42  <tjfontaine>I'm not really a fan of jira
21:21:51  <tjfontaine>but it's better than github issues
21:21:54  <trevnorris>oh, I hate JIRA with the burning of 1000 suns.
21:22:03  <tjfontaine>that's how I feel about bugzilla :)
21:22:13  <trevnorris>hahaha. yeah, I hate bugzilla too. :P
21:22:40  <trevnorris>it's just so deeply integrated into the build process that it'd be difficult to use something else.
21:22:50  <tjfontaine>they all suck, some suck less, but it's being generous to call github issues and issue tracker
21:23:07  <trevnorris>heh
21:23:10  * brsonjoined
21:23:15  <tjfontaine>as some very basic functionality is missing
21:23:21  <trevnorris>we should just write our own. :)
21:23:38  <tjfontaine>heh, I'm not that motivated to do that :)
21:23:51  <trevnorris>yeah.
21:23:53  <tjfontaine>github issues are better than a spreadsheet, though at work some argue differently :)
21:24:22  <trevnorris>lol
21:24:43  <LeftWing>Github Issues is basically the "Facebook Wall" with a "Comment" and "Close" button.
21:24:46  <trevnorris>for large projects I liked using fogbugz, but it's expensive.
21:24:49  * dshaw_joined
21:25:12  * dshaw_quit (Client Quit)
21:25:37  <trevnorris>LeftWing: you're a genius! let's move the issue tracker to Google+ and use + tags to link things together :P
21:26:08  <LeftWing>Google wouldn't let us create G+ accounts for Releases, though, because they're not real names.
21:26:16  * julianduquequit (Ping timeout: 264 seconds)
21:26:47  <trevnorris>tjfontaine: think joyent would ever shell out some dough for a better issue tracker?
21:26:51  <tjfontaine>I would prefer if issues were files in a branch on the repo, and we shipped tools with the repo to interact with them, and then just used github as a pretty front end
21:26:56  <trevnorris>LeftWing: ah, true that.
21:27:02  * philipsquit (Excess Flood)
21:27:28  <tjfontaine>trevnorris: if node felt like it was no longer being served well enough by github's issue tracking we could certainly find something that would accomodate us
21:27:48  * julianduquejoined
21:28:46  * philipsjoined
21:29:07  <trevnorris>tjfontaine: well, best I've used is fogbugz, but it costs $3k/mo. :P
21:29:48  <trevnorris>bnoordhuis: if you ever have some free time, mind giving me some feedback on the node.c api I'm trying to make?
21:30:07  <trevnorris>bnoordhuis: this is more for educational purposes, but would like it to not look too ugly :)
21:30:11  <tjfontaine>trevnorris: that's priced per user, does it have an anonymous submission mechanism?
21:30:27  <trevnorris>bnoordhuis: oh, and the "have some free time" thing was a joke :P
21:31:18  <trevnorris>tjfontaine: that's for unlimited users. just in case they don't support anonymous bug submissions.
21:32:09  <tjfontaine>trevnorris: well right I mean, it's not too expensive if we can let anonymous submissions happen
21:32:23  <tjfontaine>anyway
21:32:29  <trevnorris>tjfontaine: yeah. can't find that. for fun i'm going to email them about it.
21:32:50  <trevnorris>man, anything is more interesting than triaging issues. :/
21:32:55  <tjfontaine>heh
21:35:20  * piscisaureus_joined
21:39:14  * dshaw_joined
21:41:00  * julian_duquejoined
21:42:28  * julianduquequit (Ping timeout: 264 seconds)
21:44:32  * mikealjoined
21:45:59  * julian_duquechanged nick to julianduque
21:48:55  * mikealquit (Ping timeout: 246 seconds)
21:54:53  <tjfontaine>mmalecki got spanked by the bot
21:55:34  <mmalecki>yeah, well
21:55:49  <mmalecki>to be fair, my CLA probably did say 'Maciej Malecki'
21:55:51  <mmalecki>not Małecki
21:56:02  <mmalecki>maybe teach it to ignore special chars?
21:56:47  <tjfontaine>your email from the commit probably doesn't match
21:57:10  <mmalecki>ah, right. [email protected] is my current email address
21:58:09  <tjfontaine>ok updated, it shant yell at you anymore :)
21:59:03  * dshaw_quit (Quit: Leaving.)
22:01:21  * dshaw_joined
22:01:46  <trevnorris>tjfontaine: ok, pages 10-21 have been labeled.
22:02:16  <tjfontaine>trevnorris: excellent thanks, I'll try and do 11-21 tonight/tomorrow
22:02:17  <tjfontaine>:)
22:02:32  <trevnorris>you mean 1-9 :)
22:02:36  <tjfontaine>er
22:02:40  <tjfontaine>ya, "last half"
22:03:12  <tjfontaine>hrm OI DTrace
22:03:18  <trevnorris>i started at the end and worked my way back.
22:03:53  <tjfontaine>I'll start at the head and work my way towards the middle
22:04:12  <trevnorris>coolio. having everything labeled will help.
22:04:22  <tjfontaine>theoretically
22:05:03  * crabdude1joined
22:05:05  <trevnorris>well, for me. like to keep track of my areas of interest (e.g. buffers)
22:06:07  <tjfontaine>heh sure
22:07:04  * crabdude1part
22:08:28  * dshaw_quit (Ping timeout: 256 seconds)
22:13:03  <trevnorris>tjfontaine: think I got this wording right? https://github.com/joyent/node/issues/5852#issuecomment-21651369
22:14:28  <tjfontaine>trevnorris: yes you're right, but the second issue here is that we have no mechanism to let a cluster child bind to a port on its own, they all go through the master
22:15:14  <tjfontaine>it's not so much that random port functionality, but a mechanism that lets a cluster child listen without having to "share" among everyone else is nice
22:15:22  <trevnorris>tjfontaine: ok. so it's just a feature request to say i want my cluster child to bind to it's own random port. makes sense I guess.
22:16:10  <tjfontaine>right: "I like my clustering mechanism for handling my port 80 load, but I really want to talk to a specific child and inspect some state, and it'd be great if I could do that over a socket"
22:16:22  <tjfontaine>is how I expect it to be used
22:16:41  <trevnorris>why do that instead of using ipc?
22:16:58  <tjfontaine>depends on the rest of your infra
22:17:09  <tjfontaine>and how disjoint you want things to be
22:17:28  <trevnorris>oy.
22:17:38  <tjfontaine>anyway, I think it's a reasonable feature request
22:18:24  <trevnorris>coolio.
22:19:01  <tjfontaine>not sure it'd make 0.12, but maybe if someone gets motivated
22:19:09  * dshaw_joined
22:19:59  * mikealjoined
22:20:36  <trevnorris>tjfontaine: feel like giving me some api feedback?
22:20:44  <tjfontaine>sure
22:21:57  <tjfontaine>on node.c or on a pr?
22:22:06  <trevnorris>tjfontaine: thanks, node.c.
22:22:12  * indexzeroquit (Quit: indexzero)
22:22:14  <trevnorris>tjfontaine: http://git.io/_Ho-7A
22:22:50  <trevnorris>tjfontaine: the idea is everything that could keep the event loop open is an event.
22:23:01  <trevnorris>tjfontaine: and everything that requires IO is a stream.
22:23:50  * piscisaureus_quit (Ping timeout: 240 seconds)
22:24:49  <trevnorris>tjfontaine: oh, and i'm not even sure the syntax is correct. :P
22:26:52  <tjfontaine>it's not, but it's ok, this is a reasonable pattern, it's not uncommon
22:27:54  <tjfontaine>trevnorris: nc_event_on needs to take the stream though
22:28:39  <trevnorris>tjfontaine: maybe add nc_stream_on? you can't overload functions in C, right?
22:29:10  <tjfontaine>you cannot, no
22:29:14  <tjfontaine>but
22:29:19  <tjfontaine>you can have an "object" model
22:29:39  <tjfontaine>like how libuv handles its uv_stream_t stuff, basically a common struct layout
22:29:45  <tjfontaine>so you can store your event handlers there
22:30:22  <trevnorris>tried to do something like that. basically nc_stream_t first inherits all the struct fields in nc_event_t
22:30:42  <trevnorris>and like nc_tcp_server_t first inherets nc_event_t then nc_stream_t...
22:31:09  <tjfontaine>right, that's the idea
22:31:34  <trevnorris>hah, wtf. ok. see some obvious things I missed after 2am. :)
22:32:10  <tjfontaine>trevnorris: you probably want to split, or at least provide a different function for init&connect
22:32:23  * brsonquit (Ping timeout: 240 seconds)
22:32:25  <tjfontaine>maybe
22:32:27  * tjfontaineshrugs
22:32:33  <trevnorris>tjfontaine: i'd like to keep it down to nc_event_on, but you think it'd be better to add nc_stream_on and nc_tcp_server_on, etc?
22:33:02  <tjfontaine>the name I don't care about, but you need to pass it something :)
22:33:16  <trevnorris>tjfontaine: init/connect for the server?
22:33:44  <tjfontaine>s/connect/listen/ my fault
22:34:09  <trevnorris>well, i'm not even passing the server there. it just magically knows what to listen on. :P
22:34:12  <trevnorris>fixing that now.
22:34:35  <tjfontaine>also not sure what nc_tcp_server_run even does
22:34:54  <tjfontaine>why not nc_run() that maps to what uv_run() does?
22:35:49  * brsonjoined
22:35:54  <trevnorris>tjfontaine: um. wanted to see if I could stay away from that. instead the user creates something that is an event, which is automatically uv_ref'd
22:36:00  <trevnorris>which would keep uv_run open.
22:36:13  <trevnorris>think that's possible/good idea?
22:37:17  <tjfontaine>I'm just not sure what it does really
22:38:04  <tjfontaine>trevnorris: also, in your nc_event_on it would be nice to pass an arbitrary pointer
22:38:21  <trevnorris>ok, just a void*
22:38:27  <tjfontaine>yup
22:38:47  <trevnorris>cool, an that would be passed to the listener I assume.
22:39:24  <tjfontaine>yes, the in your on's you get it in addition to the stream
22:39:42  <trevnorris>i have that for nc_event_emit, but it's a good idea to have it in both places.
22:39:44  <trevnorris>coolio.
22:42:34  <trevnorris>tjfontaine: i've honestly never had to deal with threads before. is libuv single threaded (well, unless you explicitly spawn a thread)?
22:44:10  <tjfontaine>trevnorris: except for uv_async_send, you can only interact with libuv on one thread, and except for uv_queue_work libuv only interacts with you on one thread
22:44:36  <tjfontaine>trevnorris: that is to say all functions except uv_async_send aren't reentrant
22:45:00  <tjfontaine>trevnorris: however, libuv itself uses threads underneath, and lets you create threads with it
22:45:52  <trevnorris>tjfontaine: cool. but it won't, say, call two event listeners at the same time.
22:46:40  <tjfontaine>trevnorris: no it won't fire events on something that's not the main thread
22:46:43  * bnoordhuisquit (Ping timeout: 276 seconds)
22:47:00  <trevnorris>tjfontaine: coolio.
22:47:37  * julianduquequit (Quit: leaving)
22:59:45  * indexzerojoined
23:05:53  * TooTallNatejoined
23:11:57  <trevnorris>tjfontaine: was thinking, say you end a socket so it would emit a drain event to get rid of the rest of the data. but there's no listener. would it be ok to just free that memory automatically?
23:14:42  <tjfontaine>trevnorris: not sure what oyu mean
23:14:43  <tjfontaine>*you
23:15:28  <tjfontaine>your emission is always synchronous, so when it's returned you can cleanup
23:16:14  <tjfontaine>something else you might consider for your event pattern, event handlers should return true/false, where false interrupts the rest of the listeners
23:16:42  <trevnorris>can you explain that in a little more detail?
23:16:48  <tjfontaine>which part?
23:18:15  * wolfeidauquit (Remote host closed the connection)
23:18:43  <trevnorris>tjfontaine: what you meant by interrupting the rest of the listeners
23:18:47  * wolfeidaujoined
23:18:47  * wolfeidauquit (Remote host closed the connection)
23:18:53  * wolfeidaujoined
23:20:06  <tjfontaine>ah, well I was assuming that nc_event_on(type, stream, fptr, data) would list_append(stream->events[type], fptr, data)
23:20:31  * wolfeidauquit (Remote host closed the connection)
23:20:46  <trevnorris>basically what I was thinking of.
23:21:29  <tjfontaine>then nc_event_emit(stream, type) would list_foreach(stream->events[type], fptr, data) if(!fptr(stream, data)) nc_event_emit(stream, ERROR) else next
23:22:53  <trevnorris>ah. got it. ok. right now it's void nc_event_cb(...), but you're saying bool nc_event_cb(...).
23:23:16  <tjfontaine>yes
23:23:20  <tjfontaine>I think
23:23:26  <trevnorris>awesome, making a note.
23:23:31  <tjfontaine>presuming you after you hit an error you want to stop doing stuff
23:24:46  <trevnorris>alright. so in the cb you can: if (check_for_error) { stream->status = <set_error_status>; return false; }
23:25:04  <trevnorris>and that will tell the event emitter to stop execution and call the ERROR event and pass that stream.
23:25:59  <tjfontaine>if you want to be more fancy and be able to set an error in the handler, you'll want to probably to make a nc_event_t have a mechanism that allows that
23:26:38  <tjfontaine>so nc_event_set_error(event, foo); then later in on_error(event) { nc_event_get_error(event) ... }
23:27:05  <trevnorris>interesting, ok.
23:27:42  <tjfontaine>I mean, they're all ideas, not sure what's necessary and what's not
23:27:45  * indexzeroquit (Quit: indexzero)
23:27:58  <tjfontaine>maybe error codes are all that's needed, but those will need to be set in advance
23:28:55  <trevnorris>i was thinking on sort of replicating uv_err_name
23:29:28  <trevnorris>so uv_event_t->status is int, and it just provides a lookup of what actually happened.
23:29:59  <trevnorris>except this would also contain things for all events (e.g. CONNECTION, etc.)
23:30:45  <tjfontaine>that list could get large and unweidly, and doesn't necessarily let users define their own error cases
23:31:07  <trevnorris>true, I just wanted to stay away from strcmp :)
23:31:11  <tjfontaine>dunno if that matters or not
23:31:35  <trevnorris>i have a note that it may not work out, and will replace if it doesn't.
23:31:58  <tjfontaine>also strcmp isn't strictly necessary, you can hash
23:32:12  <trevnorris>oh, duh.
23:33:10  <trevnorris>and that'll allow users to define their own events at runtime.
23:33:35  <tjfontaine>right
23:33:51  <trevnorris>awesome, much better.
23:36:54  <trevnorris>tjfontaine: ok, was also thinking about having users explicitly use nc_buf_init/destroy/..., was thinking of some features like nc_buf_visit where they could visit all active buffers.
23:37:19  <trevnorris>don't know why, but sounded like it might be a nice debugging tool.
23:38:45  <tjfontaine>maybe
23:39:00  <tjfontaine>I would need to see how you planned on using it
23:39:49  <trevnorris>basically you'd create a void nc_buf_cb and pass it to nc_buf_visit. and it would be called for every buf registered internally.
23:40:04  <trevnorris>so it'd keep track of all buffers the user creates.
23:41:02  <trevnorris>then they'd have like nc_buf_dispose(uv_buf_t) that would free the memory and nc_buf_neuter(uv_buf_t, char*) that would unregister the buffer and hand you back the memory.
23:42:07  <trevnorris>but that's all definitely not initial implementation material.
23:45:18  * indexzerojoined
23:45:36  <tjfontaine>I'm not sure how helpful something like that is, vs likely to hold onto pointers and make it difficult for you to notice something has gone terribly wrong :
23:45:40  <tjfontaine>er :)
23:45:52  <trevnorris>yeah. it was a long shot.
23:46:04  <trevnorris>was just thinking of v8's PersistentVisitor api
23:46:31  <tjfontaine>ya, there are reasons to do it, and uv_walk has something similar for handles and requests
23:46:58  <trevnorris>oh cool. i'll look at how they did that for some ideas. thanks.
23:47:34  <tjfontaine>beyond that though, you're not really going to get much visibility for who is holding onto memory in C unless you start doing something like http://en.wikipedia.org/wiki/Boehm_garbage_collector
23:48:24  <trevnorris>oooh. i'll try to stay away from that at all costs.
23:49:17  <tjfontaine>it has its place :P
23:50:22  <trevnorris>tjfontaine: say a user doesn't setup a listener for incoming data, but they close the connection. do I just hold the data waiting for the listener or should I just free the data internally assuming they don't want it?
23:51:02  <tjfontaine>oh a listener isn't for incoming connections?
23:51:47  <trevnorris>well, there is a listner for the incoming connection, but then the connection can send data.
23:51:55  <trevnorris>that would be a seperate event.
23:52:13  <tjfontaine>right, if there's no listener handler there's no one there to set a listener for data
23:52:42  <tjfontaine>so the connection goes away
23:52:42  * bnoordhuisjoined
23:53:23  * qardquit (Quit: Leaving.)
23:53:23  <trevnorris>should I have a different event for when a connection is received and when the connection actually sends data?
23:53:32  <tjfontaine>absolutely.
23:53:48  <trevnorris>ok. so I can listen for the connection w/o handling the incoming data.
23:54:08  <trevnorris>and if I close the connection there'll be data hanging around unless I clear it for them.
23:54:29  <tjfontaine>you have a event_emit(close); and then after that returns you clean it all up
23:54:47  <trevnorris>ok cool. thanks.
23:55:22  <trevnorris>you think I should add some kind of warning event if, say, the data isn't being consumed from a connection and it's filling up memory?
23:55:42  <tjfontaine>or alternatively you have an event that only takes at most one listener, that is really-really-closed and the user is responsible for cleaning the rest up
23:55:59  <trevnorris>ok, yeah. that's an idea. cool.
23:56:01  <tjfontaine>trevnorris: how would it fill up memory? who would trigger the read start?
23:56:36  <trevnorris>there's a READABLE event you listen for, then there's an int nc_stream_read(nc_stream_t*, char*) that you call.
23:57:07  <trevnorris>basically patterened after how streams2 works.
23:57:25  * bnoordhuisquit (Ping timeout: 248 seconds)
23:57:44  <tjfontaine>ya, so data doesn't start though unless someone adds an nc_event_on(DATA, connection)
23:57:48  <tjfontaine>or
23:57:56  <tjfontaine>nc_pipe(connection, dest)
23:58:26  <tjfontaine>that's how you know to start reading, if someone adds a listener
23:58:31  <tjfontaine>if they don't, don't start reading
23:58:44  <trevnorris>yeah, basically.
23:59:05  <tjfontaine>so there's no warning to issue, because there's nothing for them to worry about :)
23:59:15  <trevnorris>ok :)
23:59:30  <tjfontaine>at least in my estimation