00:00:36  * genediazjrjoined
00:00:39  * RyanDeveloperquit (Remote host closed the connection)
00:07:31  * diaswrdjoined
00:08:58  * genediazjrquit
00:13:19  * crueberquit (Quit: Be back later ...)
00:13:46  * crueberjoined
00:14:31  * diaswrdquit (Ping timeout: 255 seconds)
00:17:57  * crueberquit (Ping timeout: 240 seconds)
00:23:16  * jportelajoined
00:26:59  * skiftjoined
00:28:05  * jportelaquit (Ping timeout: 264 seconds)
00:29:08  * sehropequit (Remote host closed the connection)
00:32:31  * Fishrock123quit (Remote host closed the connection)
00:33:17  <muricula>Hey, I'm interested in getting involved. What's a good bug for dipping my toes in the water?
00:36:16  <chiper>muricula: https://nodebug.me
00:39:25  <muricula>oh awesome
00:39:38  <chrisdickinson>muricula: what are you interested in working on? C++, JS, a specific core module (like fs, buffer, url, or the like)?
00:40:36  <muricula>Either or both
00:41:07  <muricula>I'm not terribly familiar with core modules, JS might be easier to start with
00:45:28  <chrisdickinson>cool -- off the top of my head; adding a `getAllHeaders` method to outgoing http messages on the v0.12 branch might be a good place to start -- which should live in `lib/_http_outgoing.js`.
00:46:13  <muricula>Oh excellent, thanks chrisdickinson. Is there an associated bug I can claim?
00:46:50  <chrisdickinson>I think so, I'll have to go through and check really quickly
00:47:54  <chrisdickinson>https://github.com/joyent/node/issues/3992
00:48:12  <chrisdickinson>(we don't actually have a "getHeaders" yet -- just a single "getHeader")
00:49:02  * quijotejoined
00:50:03  * iojs-ghjoined
00:50:03  * iojs-ghpart
00:53:34  * quijotequit (Ping timeout: 245 seconds)
00:57:46  * fourqquit (Quit: leaving)
01:02:55  <trevnorris>bnoordhuis: ping
01:03:10  * i0rnquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
01:04:00  * bnoordhuisquit (Ping timeout: 264 seconds)
01:04:35  <rootslab>hi @trevnorris
01:04:49  <rootslab>can you review my PR?
01:04:52  <rootslab>it sounds good?
01:06:32  <trevnorris>rootslab: no idea what pr that is.
01:06:39  <trevnorris>sorry, i'm in the middle of merging v0.10 to v0.12.
01:06:46  <trevnorris>just a little tedious. :P
01:07:47  <rootslab>sorry
01:07:53  <rootslab>http://git.io/AiLDvA
01:08:08  <rootslab>have a good coding
01:19:09  <jesusabdullah>trevnorris: that sounds hairy
01:20:48  <rootslab>?
01:23:58  * s34nquit (Read error: Connection timed out)
01:25:12  * stagasquit (Ping timeout: 250 seconds)
01:26:19  * s34njoined
01:28:25  * TheAceOfHeartsquit (Quit: Leaving.)
01:35:33  * lholmquist_joined
01:35:53  * lholmquistquit (Ping timeout: 264 seconds)
01:50:01  * dshaw_joined
01:50:20  * quijotejoined
01:51:55  * dshaw_quit (Client Quit)
01:54:46  * sintaxiquit (Quit: sintaxi)
01:55:09  * quijotequit (Ping timeout: 260 seconds)
01:55:16  * therebelrobotquit (Remote host closed the connection)
01:59:29  * RLaquit (Quit: Leaving)
02:01:04  * thealphanerdquit (Quit: thealphanerd)
02:04:36  * mauricebutlerquit (Ping timeout: 264 seconds)
02:04:56  * Fishrock123joined
02:04:57  * eh_eff_quit (Ping timeout: 260 seconds)
02:10:29  * bnoordhuisjoined
02:12:05  * jportelajoined
02:15:21  * bnoordhuisquit (Ping timeout: 258 seconds)
02:16:17  * jportelaquit (Ping timeout: 240 seconds)
02:16:58  * mauricebutlerjoined
02:23:12  * j201quit (Ping timeout: 245 seconds)
02:27:10  * iojs-ghjoined
02:27:11  * iojs-ghpart
02:27:30  <muricula>chrisdickinson: thank you for the pointer to the bug. I just made a PR
02:27:57  <muricula>Later this evening I might come around and bother the channel for a C++ issue/bug to fix
02:30:09  * rossk_joined
02:32:48  * rosskquit (Ping timeout: 250 seconds)
02:38:23  * iojs-ghjoined
02:38:23  * iojs-ghpart
02:39:59  * j201joined
02:40:12  * j201quit (Changing host)
02:40:12  * j201joined
02:42:43  * TheAceOfHeartsjoined
02:45:32  * thealphanerdjoined
02:50:50  * quijotejoined
02:52:01  <trevnorris>rootslab: did you @mention me in the PR?
02:52:22  <trevnorris>that way it appears in my mentions list, which is the first things I check
02:52:59  * thealphanerdquit (Quit: thealphanerd)
02:55:49  * quijotequit (Ping timeout: 260 seconds)
02:56:39  * morficusjoined
03:00:09  <rootslab>yes
03:00:10  * s34nquit (Read error: Connection reset by peer)
03:00:20  <rootslab>yes @trevnorris
03:00:25  <rootslab>I mention you
03:00:46  <rootslab>and ben
03:00:50  <rootslab>noordhius
03:01:32  <rootslab>I have added a little PR also for updating io.js links in the Readme..
03:06:30  <rootslab>bye to all, its early morning here! Have a good day/night !
03:08:45  * skiftquit (Remote host closed the connection)
03:09:28  * rootslabpart
03:12:44  * TheAceOfHeartsquit (Quit: Leaving.)
03:13:11  * sintaxijoined
03:20:42  * i0rnjoined
03:23:03  * jkhjhjjoined
03:23:28  * jkhjhjpart
03:28:39  * TheAceOfHeartsjoined
03:32:00  * sintaxiquit (Quit: sintaxi)
03:43:37  * sintaxijoined
03:43:39  * TheAceOfHeartsquit (Quit: Leaving.)
03:43:39  * sintaxiquit (Client Quit)
03:51:36  * quijotejoined
03:54:27  * rossk_quit
03:55:10  * TheAceOfHeartsjoined
03:56:22  * quijotequit (Ping timeout: 255 seconds)
03:58:13  * blakehallchanged nick to [blakehall]
03:58:39  * michaelrhodesjoined
03:58:46  * sindresorhus_changed nick to sindresorhus
03:59:16  * sindresorhuschanged nick to Guest31951
04:00:13  * _pid__quit (Ping timeout: 260 seconds)
04:00:49  * jportelajoined
04:05:14  * jportelaquit (Ping timeout: 245 seconds)
04:12:37  * _pid_joined
04:16:40  * dshaw_joined
04:18:33  * felipefdljoined
04:19:55  * dshaw_1joined
04:21:34  * AbeEstradaquit (Ping timeout: 250 seconds)
04:23:48  * dshaw_quit (Ping timeout: 264 seconds)
04:30:15  * herbymejoined
04:32:46  * eh_eff_joined
04:35:02  * karissaquit (Ping timeout: 244 seconds)
04:35:02  * hipsterslapfightquit (Ping timeout: 244 seconds)
04:35:02  * bretquit (Ping timeout: 244 seconds)
04:35:26  * karissajoined
04:35:33  * Sorellaquit (Ping timeout: 244 seconds)
04:35:33  * mikaelbquit (Ping timeout: 244 seconds)
04:35:33  * hackygoluckyquit (Ping timeout: 244 seconds)
04:36:05  * ljharbquit (Ping timeout: 244 seconds)
04:37:54  * mikaelb_joined
04:38:01  * Sorellajoined
04:38:05  * ljharbjoined
04:38:05  * hackygolucky__joined
04:38:27  * bretjoined
04:39:10  * hipsterslapfightjoined
04:43:28  * DaveMethvinchanged nick to DaveMethvin|away
04:52:07  * dshaw_1quit (Read error: Connection reset by peer)
04:52:26  * quijotejoined
04:52:30  * dshaw_joined
04:56:24  * herbymequit (Quit: My Mac has gone to sleep. ZZZzzz…)
04:56:57  * quijotequit (Ping timeout: 245 seconds)
04:57:58  * dshaw_quit (Quit: Leaving.)
05:00:40  * herbymejoined
05:08:41  * j201quit (Quit: Leaving)
05:12:39  * herbymequit (Quit: My Mac has gone to sleep. ZZZzzz…)
05:22:02  * rmgquit (Read error: Connection reset by peer)
05:22:27  * rmgjoined
05:24:00  * knownasilyaquit (Quit: Connection closed for inactivity)
05:25:30  * Nicolabjoined
05:27:15  * hodlquit (Ping timeout: 272 seconds)
05:35:52  <muricula>Hey, are there any contributions I can make on the C++ front?
05:38:05  <Wraithan>muricula: as daunting as it is, the more you contribute the more you'll likely be asked to just go through the issue tracker and find stuff instead of being handed things. Might be good to try your hand at that
05:39:31  <muricula>700+ issues is pretty daunting.
05:40:15  <Aria>Indeed. Pick randomly! Roll a 700-sided die!
05:42:14  <muricula>Yeah, then you get 'it doesn't compile on my raspberry pi'. And you go 'I don't have one, sorry'.
05:42:44  <chrisdickinson>muricula: I typically leaf through https://nodebug.me/api/v1/issues
05:43:01  * eh_eff_quit (Ping timeout: 255 seconds)
05:43:05  <chrisdickinson>those are issues that have been triaged -- the most interesting ones will say "isFeatureRequest": true.
05:43:10  <chrisdickinson>or rather,
05:43:15  <chrisdickinson>"the most applicable ones"
05:44:53  <muricula>What's the best way to indicate duplicates to you guys? Does commenting on the issue help?
05:44:59  * r04rchanged nick to r04r|away
05:46:02  <chrisdickinson>muricula: feel free to add a comment linking to the issue being duplicated in a comment, and cc me ("/cc @chrisdickinson") in that comment and I can take a look
05:46:16  <muricula>thanks
05:46:27  <chrisdickinson>the best way to catalog duplicates is to go through nodebug.me though
05:48:55  * thealphanerdjoined
05:49:32  * jportelajoined
05:49:50  * seishunjoined
05:53:09  * quijotejoined
05:54:29  * jportelaquit (Ping timeout: 272 seconds)
05:54:43  * herbymejoined
05:57:49  * quijotequit (Ping timeout: 260 seconds)
05:58:53  * bajtosjoined
06:02:08  * bajtosquit (Client Quit)
06:04:07  * bajtosjoined
06:05:59  * Fishrock123quit (Quit: Leaving...)
06:08:41  <indutny>ohai
06:10:32  <konobi>indutny: run away! things are too real! there's electromagnetisim in the wind!
06:10:43  <indutny>bye bye
06:11:19  <konobi>?
06:11:27  <konobi>=0P
06:18:34  * herbyme_joined
06:19:11  * eh_eff_joined
06:20:42  * herbymequit (Ping timeout: 245 seconds)
06:28:37  * octetcloudquit (Ping timeout: 260 seconds)
06:30:13  * octetcloudjoined
06:31:50  * topwobblequit (Quit: topwobble)
06:38:58  * iojs-ghjoined
06:38:58  * iojs-ghpart
06:40:41  * eh_eff_quit (Ping timeout: 264 seconds)
06:44:53  * i0rnquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
06:44:54  * chetandhembrejoined
06:45:09  * AbeEstradajoined
06:51:48  * herbyme_quit (Quit: Textual IRC Client: www.textualapp.com)
06:52:22  * herbymejoined
06:53:02  <indutny>chrisdickinson: heya!
06:53:10  <chrisdickinson>hey, what's up?
06:53:24  <indutny>chrisdickinson: may I ask you to review https://github.com/iojs/io.js/pull/172 ?
06:53:32  <chrisdickinson>sure!
06:53:56  * quijotejoined
06:54:29  <indutny>chrisdickinson: thanks!
06:54:43  <indutny>interesting things are in .py files
06:55:01  <indutny>oh gosh
06:55:03  <indutny>one sec man
06:55:09  <indutny>let me return it back to 3 commits
06:56:29  <indutny>chrisdickinson: force pushed
06:56:41  <chrisdickinson>hah, thanks :)
06:57:31  <indutny>though, first commit's log it borked :)
06:57:35  <indutny>it doesn't run stuff in parallel
06:57:41  <indutny>only moves it around
06:57:59  <indutny>chrisdickinson: force pushed again
06:58:37  * quijotequit (Ping timeout: 265 seconds)
06:59:25  * herbymequit (Quit: Textual IRC Client: www.textualapp.com)
06:59:47  * herbymejoined
07:07:50  <chrisdickinson>it's kind of nostaglic to be reviewing python again
07:15:54  * felipefdlquit (Quit: (null))
07:17:58  * Sam-Tquit (Remote host closed the connection)
07:20:43  * i0rnjoined
07:20:55  * Sam-Tjoined
07:21:49  * i0rnquit (Client Quit)
07:22:43  <chrisdickinson>indutny: thus far this LGTM; re: io tests, is there any way we could (ab)use common.PORT to parallelize those?
07:23:17  * Wirewraithquit (Ping timeout: 264 seconds)
07:26:57  * seishunquit (Ping timeout: 272 seconds)
07:31:20  * AbeEstradaquit (Quit: Adios)
07:32:32  * Wirewraithjoined
07:37:08  * KicStartquit (Quit: Leaving.)
07:38:17  * jportelajoined
07:39:31  * felipefdljoined
07:39:57  * chetandhembrequit (Read error: No route to host)
07:42:38  * jportelaquit (Ping timeout: 250 seconds)
07:44:41  * felipefdlquit (Ping timeout: 272 seconds)
07:54:41  * quijotejoined
07:54:52  * Wirewraithquit (Ping timeout: 245 seconds)
07:59:48  * quijotequit (Ping timeout: 264 seconds)
08:02:11  * chetandhembrejoined
08:02:33  <indutny>chrisdickinson: this is what I was thinking about
08:02:38  <indutny>chrisdickinson: I think it could be even better
08:02:54  <indutny>chrisdickinson: most of stuff that relies on 'fs' should work just fine in parallel too
08:05:13  * Iskarlar_joined
08:08:07  * chetandhembrequit (Ping timeout: 250 seconds)
08:11:49  * thealphanerdquit (Quit: thealphanerd)
08:12:31  * chetandhembrejoined
08:14:09  * bajtosquit (Quit: bajtos)
08:15:23  * bajtosjoined
08:16:25  * skeuomorfquit (Quit: leaving)
08:18:21  * quijotejoined
08:18:54  * Sam-Tquit (Remote host closed the connection)
08:19:58  * Sam-Tjoined
08:20:13  * Sam-Tquit (Changing host)
08:20:13  * Sam-Tjoined
08:21:40  * chetandhembrequit (Quit: This computer has gone to sleep)
08:29:45  * Sam-Tquit (Remote host closed the connection)
08:32:57  * timburquit (Read error: Connection reset by peer)
08:33:14  * timburjoined
08:35:51  * Sam-Tjoined
08:36:46  * Wirewraithjoined
08:43:05  * jdowellquit (Read error: Connection reset by peer)
08:49:18  * Wirewraithquit (Ping timeout: 265 seconds)
08:49:48  * Sam-Tquit (Remote host closed the connection)
08:50:55  * chetandhembrejoined
08:54:04  * jportelajoined
08:55:28  * nekiniequit (Remote host closed the connection)
08:57:31  * renekooiquit (Ping timeout: 250 seconds)
08:58:47  * jportelaquit (Ping timeout: 272 seconds)
09:01:06  * Sam-Tjoined
09:02:45  * felipefdljoined
09:03:57  * Wirewraithjoined
09:04:05  <indutny>chrisdickinson: gosh man
09:04:07  <indutny>this makes me crazy
09:04:20  <indutny>somehow one child-process test refuse to run in parallel
09:06:07  * octetcloudquit (Ping timeout: 245 seconds)
09:06:36  <indutny>there are no other child process tests there
09:08:13  * felipefdlquit (Ping timeout: 255 seconds)
09:09:39  <indutny>aaah
09:09:40  <indutny>I have an idea
09:14:39  * jportelajoined
09:16:21  <indutny>figured it out
09:16:24  <indutny>it was a tmpdir :)
09:18:52  * s34njoined
09:20:04  * michaelrhodesquit (Quit: Leaving.)
09:22:11  <indutny>hm...
09:22:19  <indutny>I wonder if test-child-process-fork-get-connections is racey
09:23:58  * quijotequit (Ping timeout: 255 seconds)
09:26:51  * Sam-Tquit (Remote host closed the connection)
09:29:15  * stagasjoined
09:30:57  * Sam-Tjoined
09:33:29  * sintaxijoined
09:38:01  * sintaxiquit (Client Quit)
09:39:02  * TheAceOfHeartsquit (Quit: Leaving.)
09:45:20  * thealphanerdjoined
09:47:23  * Sam-Tquit (Remote host closed the connection)
09:54:38  * sintaxijoined
09:56:01  * chetandhembrequit (Quit: This computer has gone to sleep)
09:57:07  * skeuomorfjoined
09:58:08  * drorhjoined
10:13:43  * chetandhembrejoined
10:17:56  * Sam-Tjoined
10:19:13  * rmgquit (Remote host closed the connection)
10:21:19  * quijotejoined
10:22:53  * Sam-Tquit (Ping timeout: 260 seconds)
10:25:41  * quijotequit (Ping timeout: 260 seconds)
10:28:46  * jportelaquit (Remote host closed the connection)
10:29:25  * edyjoined
10:29:40  * chetandhembrequit (Quit: This computer has gone to sleep)
10:36:20  * bajtosquit (Quit: bajtos)
10:41:47  * bajtosjoined
10:41:47  * jportelajoined
10:43:24  * chetandhembrejoined
10:44:14  * yosuke_furukawajoined
10:46:19  * bajtosquit (Client Quit)
10:46:55  * quijotejoined
10:47:17  * bajtosjoined
10:50:44  * bajtosquit (Client Quit)
10:52:38  * skeuomorfquit (Quit: leaving)
10:52:55  * felipefdljoined
10:56:12  * chetandhembrequit (Quit: This computer has gone to sleep)
10:57:34  * felipefdlquit (Ping timeout: 255 seconds)
11:08:07  * chetandhembre_joined
11:09:04  * chetandhembre_quit (Client Quit)
11:13:17  * quijotequit (Ping timeout: 260 seconds)
11:19:06  * Sam-Tjoined
11:19:44  * rmgjoined
11:22:35  * bajtosjoined
11:23:49  * Sam-Tquit (Ping timeout: 272 seconds)
11:25:00  * rmgquit (Ping timeout: 264 seconds)
11:27:11  * stagasquit (Quit: Bye)
11:27:50  * chetandhembre_joined
11:33:58  * hayesquit (Ping timeout: 256 seconds)
11:34:27  * yosuke_furukawaquit (Remote host closed the connection)
11:35:53  * yosuke_furukawajoined
11:38:27  * thealphanerdquit (Quit: thealphanerd)
11:38:37  * chetandhembre_quit (Quit: This computer has gone to sleep)
11:38:42  * hayesjoined
11:39:14  * quijotejoined
11:41:32  * chetandhembrejoined
11:41:54  * nodweberjoined
11:43:34  * quijotequit (Ping timeout: 250 seconds)
11:43:55  * bnoordhuisjoined
11:44:59  * chetandhembrequit (Client Quit)
11:46:01  * chetandhembrejoined
11:50:56  * chetandhembrequit (Quit: This computer has gone to sleep)
11:53:15  * yosuke_furukawaquit (Remote host closed the connection)
11:53:40  * felipefdljoined
11:53:42  * chetandhembrejoined
11:57:49  * felipefdlquit (Ping timeout: 244 seconds)
11:59:24  * playjaxjoined
12:08:07  * Iskarlarjoined
12:09:08  * renekooijoined
12:12:48  * iojs-ghjoined
12:12:48  * iojs-ghpart
12:13:05  * xbuzz__joined
12:13:28  * Iskarla__joined
12:13:36  * Iskarla__quit (Client Quit)
12:14:27  * Iskarlar_quit (Max SendQ exceeded)
12:14:27  * bretquit (Ping timeout: 260 seconds)
12:14:27  * kriswillquit (Ping timeout: 260 seconds)
12:14:53  * ImBcmDth_joined
12:15:14  * ImBcmDthquit (Disconnected by services)
12:15:25  * owenb____quit (Ping timeout: 260 seconds)
12:15:43  * bretjoined
12:16:51  * trevnorrisquit (Ping timeout: 260 seconds)
12:16:51  * Guest31951quit (Ping timeout: 260 seconds)
12:16:51  * clarlequit (Ping timeout: 260 seconds)
12:16:55  * _pid__joined
12:17:18  * Iskarlarquit (Remote host closed the connection)
12:18:00  * slikts_quit (Ping timeout: 260 seconds)
12:18:01  * jtwquit (Ping timeout: 260 seconds)
12:18:06  * sindresorhusjoined
12:18:18  * owenb____joined
12:18:46  * clarlejoined
12:18:48  * sliktsjoined
12:18:48  * sliktsquit (Changing host)
12:18:48  * sliktsjoined
12:18:59  * trevnorrisjoined
12:19:56  * karissa_joined
12:20:06  * ljharb_joined
12:20:11  * ljharbquit (Ping timeout: 260 seconds)
12:20:11  * karissaquit (Ping timeout: 260 seconds)
12:20:11  * morficusquit (Ping timeout: 260 seconds)
12:20:16  * karissa_changed nick to karissa
12:20:30  * _pid_quit (Ping timeout: 260 seconds)
12:20:30  * Imdsmquit (Ping timeout: 260 seconds)
12:20:31  * insertcoffeequit (Ping timeout: 260 seconds)
12:20:37  * jtw_joined
12:20:45  * jtw_quit (Changing host)
12:20:45  * jtw_joined
12:20:48  * morficusjoined
12:20:58  * ljharb_changed nick to ljharb
12:21:05  * Imdsmjoined
12:21:18  * insertcoffeejoined
12:21:28  * ljharbchanged nick to Guest128
12:22:21  * rvaggquit (Ping timeout: 260 seconds)
12:23:11  * xbuzz__quit (Quit: Be back later ...)
12:24:25  * Exadyne_joined
12:24:58  * Iskarlarjoined
12:25:35  * rvaggjoined
12:28:03  <indutny>bnoordhuis: ohai
12:31:15  * bonuspunktquit (*.net *.split)
12:31:15  * Exadynequit (*.net *.split)
12:31:40  * jportelaquit (Remote host closed the connection)
12:33:53  * iojs-ghjoined
12:33:53  * iojs-ghpart
12:37:26  <bnoordhuis>indutny: hola
12:37:34  <indutny>bnoordhuis: how are you?
12:37:49  <indutny>bnoordhuis: I'm working on parallelizing tests
12:37:55  <indutny>this is a messy business I say ya
12:38:00  <bnoordhuis>indutny: if taxes didn't exist, i'd be great. alas...
12:38:07  <indutny>bnoordhuis: oh well
12:38:28  <bnoordhuis>are you working on running io tests in parallel?
12:38:59  <bnoordhuis>what chrisdickinson said could probably work with relative ease for net tests. fs tests are probably a little trickir
12:39:42  * Iskarlar1joined
12:41:37  * chetandhembrequit (Quit: This computer has gone to sleep)
12:42:15  * bonuspunktjoined
12:43:30  * sintaxiquit (Quit: sintaxi)
12:44:00  * chetandhembrejoined
12:52:57  * sintaxijoined
12:53:02  <indutny>bnoordhuis: fs are not tricky :)
12:53:04  <indutny>bnoordhuis: net is
12:53:05  <indutny>and http
12:56:56  * sintaxiquit (Client Quit)
13:00:46  * bajtosquit (Quit: bajtos)
13:02:04  * xbuzz__joined
13:02:53  <indutny>bnoordhuis: On the call now
13:02:58  <indutny>bnoordhuis: will talk to you in a bit
13:04:12  * bajtosjoined
13:06:17  * bmacjoined
13:09:17  * hswolffquit (Ping timeout: 250 seconds)
13:10:33  * hswolffjoined
13:15:13  * FunnyLookinHatjoined
13:21:52  * lholmquist_changed nick to lholmquist
13:34:08  * bajtosquit (Quit: bajtos)
13:34:44  * chetandhembrequit (Quit: This computer has gone to sleep)
13:42:24  * felipefdljoined
13:43:12  * KicStartjoined
13:47:08  * felipefdlquit (Ping timeout: 256 seconds)
13:48:37  * [blakehall]changed nick to blakehall
13:50:19  * knownasilyajoined
13:52:11  * bnoordhuisquit (Ping timeout: 250 seconds)
13:54:19  * chetandhembre_joined
13:59:38  * bmacquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
14:00:48  * jportelajoined
14:00:51  * bmacjoined
14:05:42  * drorhquit (Ping timeout: 245 seconds)
14:06:30  * FunnyLookinHatquit (Ping timeout: 264 seconds)
14:11:44  * chetandhembre_quit (Quit: This computer has gone to sleep)
14:12:07  * KicStartquit (Ping timeout: 250 seconds)
14:17:36  * chetandhembrejoined
14:20:16  * bberry_joined
14:21:22  * Sam-Tjoined
14:25:55  * Sam-Tquit (Ping timeout: 255 seconds)
14:26:14  * FunnyLookinHatjoined
14:27:25  * chetandhembrequit (Quit: This computer has gone to sleep)
14:27:49  * chetandhembrejoined
14:29:10  * playjax_joined
14:30:13  * playjaxquit (*.net *.split)
14:30:13  * mauricebutlerquit (*.net *.split)
14:30:14  * RGiskardquit (*.net *.split)
14:30:14  * zeroware_quit (*.net *.split)
14:30:14  * bberryquit (*.net *.split)
14:30:20  * playjax_changed nick to playjax
14:30:42  * RGiskardjoined
14:30:50  * chetandhembrequit (Client Quit)
14:31:14  * Iskarlar_joined
14:31:29  * chetandhembrejoined
14:32:15  * mauricebutlerjoined
14:33:38  * chetandhembrequit (Client Quit)
14:34:10  * Iskarlarquit (Ping timeout: 256 seconds)
14:40:26  * jvrousseaujoined
14:40:39  * lance|afkchanged nick to lanceball
14:42:09  * DaveMethvin|awaychanged nick to DaveMethvin
14:47:27  * Iskarlar_quit (Ping timeout: 258 seconds)
14:48:22  * Iskarlarjoined
14:49:35  * bnoordhuisjoined
14:53:50  * yosuke_furukawajoined
14:56:07  * Iskarlar_joined
14:56:45  * Fishrock123joined
14:57:55  * rmgjoined
14:58:00  <Fishrock123>o/
14:58:08  * yosuke_furukawaquit (Ping timeout: 250 seconds)
14:58:29  * playjaxquit (Read error: No route to host)
14:59:00  * Iskarlarquit (Ping timeout: 250 seconds)
15:01:06  * piscisaureusjoined
15:02:17  * rmgquit (Ping timeout: 240 seconds)
15:02:43  * i0rnjoined
15:04:11  <indutny>bnoordhuis: https://github.com/iojs/io.js/pull/172
15:04:14  <indutny>bnoordhuis: 30 seconds for all tests
15:04:15  <indutny>:)
15:04:16  <indutny>chrisdickinson: ^
15:04:34  <indutny>bnoordhuis: we may want to run it a couple of times
15:04:38  <indutny>to filter out flaky tests
15:04:44  <indutny>and move them to sequential for now
15:08:04  * fourqjoined
15:08:13  <fourq>morning
15:08:18  <Aria>Morning!
15:09:08  <indutny>morning
15:15:02  * r04r|awaychanged nick to r04r
15:15:27  * cloudbenderjoined
15:15:29  * bnoordhuisquit (Ping timeout: 265 seconds)
15:17:30  <cloudbender>are there a cases when an item on the loop will be called much later than expected ? Does node reschedule calls it necessary ?
15:17:47  <cloudbender>*if necessary
15:18:17  <cloudbender>oh sorry wrong room
15:20:45  <fourq>chan*
15:23:15  <fourq>Aria: what's new?
15:24:24  <Aria>Not too much!
15:24:29  <Aria>Still working on i18n for Kraken at work.
15:24:57  <jesusabdullah>paypal, Aria ?
15:25:06  <jesusabdullah>or just happening to be using their stack?
15:25:28  <Aria>Yeah, PayPal. Been here 6 months.
15:25:53  <indutny>nice!
15:26:49  <Aria>Yeah. They're decent to work for.
15:28:16  <jesusabdullah>still on the right coast?
15:29:05  <indutny>piscisaureus: mind taking a look at https://github.com/iojs/io.js/pull/172 ?
15:29:33  * KicStartjoined
15:31:08  * felipefdljoined
15:35:56  * felipefdlquit (Ping timeout: 256 seconds)
15:39:25  <Aria>Yeah, still in Boston.
15:40:38  * Exadyne_changed nick to Exadyne
15:43:31  * FunnyLookinHatquit (Ping timeout: 265 seconds)
15:47:32  * crueberjoined
15:49:10  * yosuke_furukawajoined
15:51:15  * therebelrobotjoined
15:53:02  * seishunjoined
15:55:31  * bmacquit (Ping timeout: 272 seconds)
15:57:18  * FunnyLookinHatjoined
15:59:53  * i0rnquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
16:00:14  <piscisaureus>indutny: I did and it looks okay. But I haven't had time to actually run the tests, have to go afk for 2 hours now
16:00:21  * bmacjoined
16:00:22  <indutny>thanks!
16:00:23  <piscisaureus>indutny: I'll let you know
16:01:22  <jesusabdullah>cool that they let you work remote Aria
16:04:25  <Aria>Hehe. It's not. There's an office here.
16:04:31  <Aria>(though my team would totally be down with that)
16:04:34  <jesusabdullah>oh no way
16:04:41  <jesusabdullah>I'm legitimately surprised
16:04:42  <Aria>Yeah. They bought where.com a couple years ago.
16:04:56  <Aria>Moved that office into one of the financial towers, and lease two floors.
16:05:10  <jesusabdullah>word
16:05:12  <Aria>We've got StubHub, some of PayPal's mobile app stuff, and some other teams here.
16:06:48  <jesusabdullah>stubhub?
16:07:03  <Aria>eBay's ticket sales subsidiary.
16:07:05  <jesusabdullah>oh, tickets
16:08:07  * dshaw_1joined
16:09:39  * Sam-Tjoined
16:09:53  <seishun>in what environment is one supposed to run tests on windows? half my failures are due to missing curl, and I'm not comfortable installing an unofficial curl for windows /cc piscisaureus
16:11:56  <jesusabdullah>fucking windows 98
16:14:27  * Sam-Tquit (Ping timeout: 265 seconds)
16:14:52  * chetandhembre_joined
16:16:00  * dshaw_1quit (Quit: Leaving.)
16:21:58  * bnoordhuisjoined
16:25:38  * i0rnjoined
16:26:29  * bnoordhuisquit (Ping timeout: 244 seconds)
16:28:28  * iojs-ghjoined
16:28:28  * iojs-ghpart
16:28:53  * eh_eff_joined
16:30:31  * yosuke_furukawaquit (Remote host closed the connection)
16:31:11  * yosuke_furukawajoined
16:31:52  * felipefdljoined
16:33:28  * Iskarlar_quit (Read error: Connection reset by peer)
16:34:09  * eh_eff_quit (Ping timeout: 272 seconds)
16:35:53  * yosuke_furukawaquit (Ping timeout: 264 seconds)
16:36:12  * i0rnquit (Quit: Textual IRC Client: www.textualapp.com)
16:36:25  * felipefdlquit (Ping timeout: 255 seconds)
16:39:31  * Iskarlarjoined
16:40:21  * thealphanerdjoined
16:40:49  * a0viedojoined
16:41:07  * dshaw_joined
16:44:55  * chetandhembre_quit (Quit: This computer has gone to sleep)
16:47:42  * bmacquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
16:54:20  * chetandhembrejoined
16:55:13  * herbymequit (Quit: My Mac has gone to sleep. ZZZzzz…)
16:55:57  * rmgjoined
16:58:24  * Iskarlarquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
16:58:24  * Guest128changed nick to ljharb
16:58:48  * ljharbquit (Changing host)
16:58:48  * ljharbjoined
17:01:42  * sycomjoined
17:01:49  * thealphanerdquit (Quit: thealphanerd)
17:01:53  * KicStartquit (Remote host closed the connection)
17:02:28  * KicStartjoined
17:02:46  * sycomquit (Client Quit)
17:03:15  * thealphanerdjoined
17:04:00  * thealphanerdquit (Client Quit)
17:07:33  * yosuke_furukawajoined
17:10:13  * bajtosjoined
17:10:25  * Sam-Tjoined
17:12:10  * bnoordhuisjoined
17:15:03  * Sam-Tquit (Ping timeout: 244 seconds)
17:18:08  * edyquit (Quit: (null))
17:18:50  * TheAceOfHeartsjoined
17:22:43  * RLajoined
17:25:34  * bajtosquit (Read error: Connection reset by peer)
17:25:42  * bajtos_joined
17:26:29  * cloudbenderquit (Quit: ChatZilla 0.9.91 [Firefox 34.0.5/20141126041045])
17:33:07  * piscisaureusquit (Ping timeout: 255 seconds)
17:37:42  * thealphanerdjoined
17:40:34  * quijotejoined
17:42:08  * jtw_changed nick to jtw
17:43:01  <Sorella>seishun: doesn't curl have official Windows executables though?
17:43:14  <RLa>i think it has
17:43:35  <RLa>i used to have a build system that did automatic file uploads with it
17:44:08  * yosuke_furukawaquit (Remote host closed the connection)
17:44:55  * rosskjoined
18:03:11  * blakehallchanged nick to [blakehall]
18:04:25  * eh_eff_joined
18:05:34  * Sam-Tjoined
18:05:34  * Sam-Tquit (Changing host)
18:05:34  * Sam-Tjoined
18:07:38  * octetcloudjoined
18:09:26  <RLa>wow, they have binaries for lots of platforms: http://curl.haxx.se/download.html
18:11:37  * i0rnjoined
18:14:27  * bajtos_quit (Quit: bajtos_)
18:20:38  * felipefdljoined
18:22:44  * nodweberquit (Remote host closed the connection)
18:23:19  * nodweberjoined
18:24:45  * _pid__changed nick to _pid_
18:24:48  * chetandhembrequit (Quit: This computer has gone to sleep)
18:25:11  * felipefdlquit (Ping timeout: 250 seconds)
18:27:36  * jportelaquit (Remote host closed the connection)
18:28:00  * nodweberquit (Ping timeout: 264 seconds)
18:31:01  * nodweberjoined
18:34:06  * insertcoffeequit (Ping timeout: 244 seconds)
18:41:58  * bmacjoined
18:45:44  * quijotequit (Ping timeout: 265 seconds)
18:59:21  * dshaw_quit (Quit: Leaving.)
18:59:43  * nodweberquit (Remote host closed the connection)
19:05:34  * felipefdljoined
19:05:52  * jdowelljoined
19:06:11  * bmacquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
19:06:52  * yosuke_furukawajoined
19:09:45  * felipefdlquit (Ping timeout: 244 seconds)
19:10:33  * qardquit (Quit: leaving)
19:10:45  * TheAceOfHeartsquit (Quit: Leaving.)
19:13:10  <muricula>Hey, I'm looking at 8830
19:13:11  <muricula>https://github.com/joyent/node/issues/8830
19:14:08  <muricula>Is it reasonable? If so, where in the codebase does node actually search for dependencies?
19:17:01  * qardjoined
19:21:18  * bmacjoined
19:21:25  * felipefdljoined
19:26:44  * [blakehall]changed nick to blakehall
19:27:41  * quijotejoined
19:29:47  <muricula>Oh is it in lib/module.js?
19:32:16  * quijotequit (Ping timeout: 258 seconds)
19:34:07  * marco____joined
19:36:32  * marco____quit (Client Quit)
19:38:25  * Nicolabquit (Ping timeout: 265 seconds)
19:47:55  * fourqchanged nick to salesforce
19:48:02  * salesforcechanged nick to fourq
19:48:18  * vweeversjoined
19:49:06  * fourqchanged nick to salesforce
19:49:10  * salesforcechanged nick to fourq
19:52:19  * vweeversquit (Client Quit)
19:53:19  * xbuzz__quit (Quit: Be back later ...)
19:55:19  * springmeyer_joined
19:55:49  * springmeyerquit (Ping timeout: 265 seconds)
19:55:49  * springmeyer_changed nick to springmeyer
19:56:08  * bmacquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
20:03:26  * sehropejoined
20:05:58  * piscisaureusjoined
20:20:23  <chrisdickinson>muricula: I don't think that would be accepted, offhand
20:20:33  <chrisdickinson>it looks like it got a soft -1 from isaac on the mailing list when it came up
20:21:10  <muricula>Well... I just did it. Should I make the PR anyway, or move on to something more substantive?
20:21:13  * bmacjoined
20:24:18  * bmac_joined
20:26:16  * bmacquit (Ping timeout: 265 seconds)
20:28:07  * iojs-ghjoined
20:28:07  * iojs-ghpart
20:28:21  * quijotejoined
20:28:24  <chrisdickinson>muricula: commented on the issue.
20:29:13  <chrisdickinson>in short, if they have that kind of access, there are a lot of ways they could escalate privilege, and one's code would have to be broken at the outset to allow them to take advantage of putting node_modules at a higher level
20:30:48  <muricula>Such are the troubles with picking issues at random-some of them aren't issues or should be closed.
20:31:33  * bmac_quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
20:32:56  * quijotequit (Ping timeout: 244 seconds)
20:34:05  <Aria>That's useful information to have!
20:36:01  * TheAceOfHeartsjoined
20:41:08  * quijotejoined
20:43:34  * therebelrobotchanged nick to therebelrobot_
20:45:45  * therebelrobot_changed nick to therebelrobot
20:46:05  * quijotequit (Ping timeout: 264 seconds)
20:46:24  * rhalff_joined
20:46:35  * rhalff_quit (Client Quit)
20:46:35  * rhalffquit (Quit: Leaving)
20:47:04  * rhalff_joined
20:48:12  * topwobblejoined
20:58:24  * rhalff_part ("Leaving")
21:01:47  * dshaw_joined
21:07:37  * TheAceOfHeartsquit (Quit: Leaving.)
21:08:14  * andrew9183joined
21:08:51  * Neablisjoined
21:16:29  * kriswilljoined
21:16:39  * TheAceOfHeartsjoined
21:20:53  * springmeyerquit (Read error: Connection reset by peer)
21:21:29  * springmeyerjoined
21:21:33  * topwobblequit (Quit: topwobble)
21:21:51  * bmacjoined
21:24:47  * felipefdl_joined
21:27:42  * felipefdlquit (Ping timeout: 250 seconds)
21:33:30  * hackygolucky__changed nick to hackygolucky
21:34:33  * bmacquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
21:41:11  * springmeyerquit (Quit: springmeyer)
21:41:53  * quijotejoined
21:42:37  * lanceballchanged nick to lance|afk
21:46:26  * quijotequit (Ping timeout: 258 seconds)
21:49:21  * nodweberjoined
21:49:37  * eh_eff_quit (Ping timeout: 255 seconds)
21:54:29  * nodweberquit (Ping timeout: 264 seconds)
21:54:39  * topwobblejoined
21:57:57  * sehropequit (Remote host closed the connection)
22:02:24  * rhalffjoined
22:02:36  <trevnorris>Domenic: ping
22:03:05  * rhalffquit (Client Quit)
22:04:00  <Domenic>trevnorris: pong
22:04:54  * rhalffjoined
22:06:02  <trevnorris>Domenic: just a couple questions if you don't mind. :)
22:06:02  <trevnorris>are Promises after some existing design paradigm? What's a good example of a Promise-ified API of something like net.Server()?
22:07:08  <chrisdickinson>I think something like server would be better represented as a stream of streams in the promise case, as I understand it
22:07:30  <trevnorris>however. i'm just curious what that API would look like if net.Server() returned a Promise.
22:07:33  <trevnorris>or the like.
22:08:25  <chrisdickinson>it wouldn't make sense, I don't think
22:08:42  <trevnorris>then what would it return?
22:08:47  <chrisdickinson>the litmus I use is that promises and node-style error-first callbacks are strictly interchangable
22:08:49  <RLa>yeah, i think it's not a single eventual value that promises represent
22:09:02  <chrisdickinson>they don't get rid of the event emitter paradigm, or streams
22:09:15  <chrisdickinson>they strictly sit in for error-first callbacks
22:09:32  <jesusabdullah>trevnorris: what does net.Server return *now*?
22:09:49  <trevnorris>jesusabdullah: a constructed object containing the state of the server.
22:09:51  <RLa>btw, for things like fs.readFile, can't we return a promise when callback is not provided?
22:10:00  <jesusabdullah>trevnorris: generally, obj.asyncThing(function(err, result) { turns into obj.asyncThing.then(function(result) {
22:10:11  <jesusabdullah>trevnorris: and there isn't much beyong that
22:10:14  <jesusabdullah>beyond*
22:10:44  <trevnorris>what i'm wondering is how people would Promise-ify Node's APIs that have many events.
22:10:58  <chrisdickinson>those events would remain, and likely remain callbacks
22:11:10  <jesusabdullah>yeah, if anything you'd make it something like
22:11:15  <chrisdickinson>things like fs.readFile(...) would change
22:11:25  <jesusabdullah>ee.on('foo').then(
22:11:28  <Domenic>trevnorris: promises are after the existing paradigm of return values/thrown exceptions, just async
22:11:29  <jesusabdullah>but it wouldn't be useful
22:11:40  * piscisaureusquit (Ping timeout: 255 seconds)
22:11:55  <Domenic>indeed they are <-> err-first callbacks, but events and streams stay separate
22:12:16  <trevnorris>Domenic: guess what i'm trying to determine is where they fit into in the list here: http://en.wikipedia.org/wiki/Event-driven_programming
22:12:17  <jesusabdullah>promises are cool and all but they're just one of many abstractions, and not fit for everything. fs is a good candidate for promise-ifying (if that's something one wants to do) but EventEmitter less so and streams not at all
22:12:30  <trevnorris>sorry, here: http://en.wikipedia.org/wiki/Programming_paradigm
22:12:35  <Domenic>a simple paradigm: a 2x2 grid. one axis: singular, plural. second access: sync, async.
22:12:46  * seishunquit (Ping timeout: 250 seconds)
22:13:02  <Domenic>sync singular = values/exceptions. sync plural = iterable. async singular = promise. async plural = observable/streams/events/etc
22:13:10  <jesusabdullah>I'd say functional trevnorris they're monadic (monad-ish?)
22:13:23  <jesusabdullah>but they're also clearly objects
22:13:35  <jesusabdullah>so multi-paradigm? lol?
22:13:37  <Domenic>I'd say they're kind of too basic to say what paradigm they go with. In the same way return values/thrown exceptions are too basic.
22:13:46  <Domenic>Like, they're functional since you return them from functions
22:13:49  <Domenic>They're OO since they have methods
22:14:10  <jesusabdullah>I don't think basic and bin-ability have anything to do with each other
22:14:11  <Domenic>They're procedural since they mimic sync statement-by-statement control flow (with exceptions bubbling)
22:14:23  <jesusabdullah>for instance, for loops are pretty basicl but also clearly procedural in nature
22:14:28  <Domenic>jesusabdullah: well, in the extreme, what paradigm does the + operator go in
22:14:33  <trevnorris>yeah. node is the same way. using event-driven but encapsulating state within a constructed object (so OOP-ish).
22:14:41  <jesusabdullah>see, again, I don't think they're anywhere near 1:1
22:14:43  <chrisdickinson>I've been calling them "primitives" which is an abuse of the term
22:14:47  <jesusabdullah>some things are bin-able, some aren't
22:14:57  <jesusabdullah>and its primitivity has nothing to do with it
22:15:25  * eh_eff_joined
22:15:31  <Domenic>that article is kind of interesting. I don't think e.g. functional and event-driven are the same kind of thing.
22:15:50  <Domenic>event-driven is more an architectural thing. compared to concurrent for example.
22:16:06  <Domenic>but you can program functionally, or imperatively, in both event-driven and concurrent systems
22:17:09  * yosuke_furukawaquit (Read error: Connection reset by peer)
22:17:20  <trevnorris>true. after you clarified Promises/generators it made me think about how Node does it. (i.e. event-driven with state-ful objects).
22:18:10  <trevnorris>so my quest is two fold. understand where all these different paradigms fit, and how people are going to use promises.
22:18:25  <jesusabdullah>hah
22:18:29  <jesusabdullah>I still don't use promises
22:18:37  <bnoordhuis>i think of promises as discrete deferred computations that can fail and can be chained
22:18:41  <jesusabdullah>some of that is because I tend to work on existing codebases
22:18:53  <jesusabdullah>but often I just don't have a problem where I think promises would help solve it
22:18:59  <bnoordhuis>they make sense for discrete operations like fs.stat() because that function does one thing and then either succeeds or fails
22:19:06  <trevnorris>chrisdickinson: fs.readFile() is a bad example. under the hood it does several things. technically we could be event-ing on open,stat,read,close. the API just hides all that.
22:19:25  <chrisdickinson>that's actually why I picked that example :)
22:19:39  <bnoordhuis>streams and eventemitters are more continuous than discrete
22:19:46  <chrisdickinson>each operation internally is represented as a single operation, pass or fail -- which then gets glommed up into an outer "pass-or-fail" callback
22:20:23  <trevnorris>bnoordhuis: okay. that makes sense.
22:20:27  <chrisdickinson>so, pass-or-fail operations can encompass multiple individual pass-or-fail operations, and the lowest level pass-or-fail operations would themselves return promises
22:20:38  <trevnorris>so only a subset of Node's API would be Promise-ify-able.
22:20:46  <chrisdickinson>yep! streams would still exist.
22:21:05  <chrisdickinson>and event emitters would likely look the same as they do today, unless we take steps to change them
22:21:08  * springmeyerjoined
22:21:13  <chrisdickinson>simlarl
22:21:28  <chrisdickinson>err, whoops: similarly:
22:22:00  <chrisdickinson>a singular async thing like promises or callbacks can encompass the entirety of a async plural, like streams
22:22:25  <trevnorris>bnoordhuis: so I assume you'd also consider something like connection.write() to have the same criterion?
22:22:33  <chrisdickinson>(but then you lose information about the individual states of the async plural, and the result has to be buffered)
22:23:29  <RLa>i think the reverse is also doable, you can have EE/stream with a single event
22:23:39  <RLa>but is it useful?
22:23:57  <jesusabdullah>I put promises in the same bin as EEs and streams, I see them as having similar levels of abstraction
22:24:08  <chrisdickinson>RLa: I don't think it's generalizable in that direction -- a stream is zero or more data events terminated by end or error
22:24:36  <bnoordhuis>trevnorris: that's a tricky one. conn.write() doesn't operate in a vacuum, it interacts e.g. with previous writes. it's probably promise-ifably but i'd have to think through the ramifications
22:24:37  <chrisdickinson>it's the "or more" that invalidates it, I think.
22:25:04  <RLa>conn.write takes a callback?
22:25:07  <chrisdickinson>re: conn.write(), that's kind of in the realm of the whatwg/streams, if i'm not mistaken
22:25:22  <trevnorris>bnoordhuis: kernel support aside, also what about writing out a large file to the file system. couldn't it be possible to do more than succeed/fail? (e.g. cancel a large write to disk)
22:25:28  <jesusabdullah>confession: I pronounce whatwg as "what wag"
22:25:36  <chrisdickinson>jesusabdullah: I rhyme it with "luigi"
22:26:13  <bnoordhuis>trevnorris: yes. some promise implementations have a .cancel() method but that's not part of the spec
22:27:05  <trevnorris>bnoordhuis: again kernel support aside, but seems like using Promises greatly limit extending stuff in the future. e.g. a method to see how much has been written to disk.
22:27:43  <jesusabdullah>so like, I don't see the problem with extending a promise api
22:27:54  <jesusabdullah>the promise api is like a minimum contract
22:28:05  * Fishrock123quit (Remote host closed the connection)
22:28:07  <jesusabdullah>an interface if you will
22:28:09  <RLa>btw, what was the reason to not include promises last time?
22:28:15  <bnoordhuis>trevnorris: i guess so. with a strictly conforming promise api, you'd have to devise some out-of-band mechanism to get updates out (eventemitters!)
22:28:21  <RLa>standardization issues?
22:28:25  <jesusabdullah>something can implement the promise interface but also a bunch of other stuff
22:28:38  <bnoordhuis>RLa: you mean in node
22:28:41  <jesusabdullah>ehh, I don't think promises were always a clear winner RLa
22:28:53  <RLa>yes, in node
22:28:54  * rosskquit
22:29:12  * Meinalexockjoined
22:29:12  <RLa>they were not, otherwise they would be in node already
22:29:14  <bnoordhuis>the promises in node 0.2 were really crappy, ad hoc and non-conforming (not that there was a spec back then)
22:29:16  <jesusabdullah>In fact I'd say they're not even now a clear winner, they're just guaranteed to exist in es6 implementation
22:29:52  <chrisdickinson>bnoordhuis: promises would fit in for a single chunk being flushed to disk (by `write`) -- those sideband events imply to me that there's some streaming going on
22:29:53  <trevnorris>though, say I create an API that uses Promises to retrieve files from a server. later, for example sake, I want to extend the API to let me know when the connection to the remote server's been made, when the file transfer starts, and when the connection has been closed. seems difficult if I started off with Promises.
22:29:54  <jesusabdullah>in the past there was a large group of people that hated the idea of promises, that group is just weaker now
22:30:08  <jesusabdullah>trevnorris: not at all. why would that be difficult?
22:30:24  <jesusabdullah>trevnorris: if you wanted to change the semantics of then, sure. but you don't necessarily have to
22:30:43  <chrisdickinson>trevnorris: replace "promises" with "error first callback" in that example -- the challenges would be the same, I think.
22:30:44  <bnoordhuis>chrisdickinson: yes, that sound about right. a single chunk would be a discrete event
22:31:03  <trevnorris>jesusabdullah: the difficulty lies in the fact there's no standard way of extending Promises to deal w/ more than the succeed/fail cases.
22:31:22  <chrisdickinson>(just like error first callbacks)
22:31:25  <trevnorris>chrisdickinson: sure. i'm not saying starting w/ err-back style would be any better. ;)
22:31:28  <RLa>trevnorris, isn't it also impossible when the operation took a single callback that is called when error happens or operation completes?
22:31:40  * Meinalexockquit (Client Quit)
22:32:13  <RLa>although you can return an EE and take a callback at the same time
22:32:24  <jesusabdullah>trevnorris: so you may want a different abstraction if that's the case, such as an eventemitter. I still say you can add whatever methods you want to an instance of Promise and as long as then acts the same you're more or less golden
22:32:25  <chrisdickinson>trevnorris: hah, yes -- what I'm trying to get at is that they aren't meant to solve sideband events -- you need something like streams or event emitters to handle that case
22:32:54  <trevnorris>RLa: well, passing a callback is just sugar for adding an event. like net.createServer(fn). that just adds the fn to the 'connection' event.
22:32:56  <jesusabdullah>trevnorris: and I agree with chrisdickinson in that a callback isn't extensible either---in fact, less extensible than a promise cause at least a promise is a thing you can hold
22:34:07  <chrisdickinson>that's one thing that node conflates a bit with the term callback -- `net.createServer(fn)` and `fs.open(path, fn)`
22:34:20  <chrisdickinson>one stands in for an event emitter, one stands in for a err-first callback / promise
22:34:27  <chrisdickinson>s/event emitter/event listener/g
22:34:37  * sintaxijoined
22:34:50  * yosuke_furukawajoined
22:35:05  <chrisdickinson>(sidenote: I would argue that `net.createServer` *should* be a readable stream of stream objects representing connections)
22:36:24  <Domenic>trevnorris: there's no problem extending promises any more than there is extending callbacks
22:36:33  <jesusabdullah>a stream of stream objects? why?
22:36:42  <jesusabdullah>I usually don't like object streams
22:36:47  <RLa>btw, one offtopic question, when you travel filesystem recursively to collect some files, can you run out of the file descriptor limit or node has some internal queue for avoiding that?
22:37:00  <chrisdickinson>jesusabdullah: a server will have one or more connections over time, terminating with the closure of the listening socket or an error
22:37:23  <jesusabdullah>so you'd want an event emitter that emits new connections
22:37:26  <chrisdickinson>object streams got kind of a bad rap in streams2
22:37:37  <jesusabdullah>that's not why I dislike them
22:37:54  <bnoordhuis>RLa: core does not, graceful-fs does. core is fairly wysiwyg
22:37:55  <jesusabdullah>I got soured against them in streams1 as well
22:38:03  <RLa>thanks
22:38:27  <chrisdickinson>this might turn into a bit of a bikeshed, but event emitters allow you to emit on infinite topics -- with streams, there are three key topics, only one of which repeats
22:38:40  <jesusabdullah>which is fine
22:39:34  <jesusabdullah>but there are a lot of things which people try to represent as streams, where I don't think it's actually clear that streams give you any real benefit over eventemitters
22:40:03  <jesusabdullah>not everything is a (time)series of chunks
22:40:21  <bnoordhuis>apropos net.createServer, i suppose a promisified version would look something like server.accept().then(...)
22:40:42  <chrisdickinson>a lot of things are, though. agreed, it seems like applying a hammer to a screw because they look the same when blurring ones eyes,
22:41:17  <jesusabdullah>yeah that
22:41:20  * herbymejoined
22:41:37  <RLa>bnoordhuis, but then you have to call .accept() for each request/connection?
22:41:42  * Agamemnusjoined
22:41:43  <RLa>before it is made!
22:41:43  <chrisdickinson>but streams give you finer control over "when" things happen (through backpressure strategies) and makes the state machine of how items come in, when they stop coming in, and in what manner explicit
22:41:44  <Domenic>server.accept().then(...) seems bad.
22:41:47  * Agamemnuspart
22:42:03  <bnoordhuis>RLa: yes. that's actually the direction libuv is moving in so it'd be a pretty natural fit :)
22:42:40  * quijotejoined
22:42:50  <bnoordhuis>Domenic: bad why?
22:43:35  <Domenic>bnoordhuis: well, if you are going to call it for every connection, i guess it works... but how do you know when there are new connections? seems user-unfriendly.
22:44:03  <chrisdickinson>something like server.accept().then(() => { server.pipeTo(socketConsumer) { }) }) ?
22:44:24  <chrisdickinson>where the accept() promise represents the "listening" event's completion?
22:44:30  <bnoordhuis>Domenic: you'd always have at least one promise queued up
22:44:36  <RLa>chrisdickinson, Domenic, afaik, callback for then() is only called once
22:44:46  <chrisdickinson>aah
22:44:46  <chrisdickinson>sorry
22:44:59  <Domenic>bnoordhuis: how do you get this promise?
22:45:00  <chrisdickinson>server.listen().then(() => { server.pipe() })
22:45:14  <chrisdickinson>the listen event is a one-time only event that passes or fails,
22:45:20  <Domenic>oh
22:45:25  <Domenic>accept() => listen() clarifies a lot
22:45:32  <RLa>there is already one system that uses .then() which has completely different semantics than promises
22:45:34  <chrisdickinson>but new connections come in over time, and would be handled by a stream mechanism
22:45:38  <bnoordhuis>ah, sorry. i was thinkin in libuv nomenclature
22:45:42  <chrisdickinson>(or event emitters)
22:46:05  <chrisdickinson>RLa: the server is a stream, `accept()` is a promise-returning api
22:46:17  * Fishrock123joined
22:46:19  <chrisdickinson>(in this example)
22:46:29  * Agamemnusjoined
22:46:36  <Agamemnus>should i use node.js or io.js
22:46:42  <trevnorris>chrisdickinson: are individual connections Promises?
22:46:46  <RLa>still, feels like you have to call it per connection/request
22:46:49  <Agamemnus>the node.js channel is indecisive
22:47:13  * quijotequit (Ping timeout: 255 seconds)
22:47:19  <bnoordhuis>Agamemnus: there haven't been any iojs releases so far. if you don't want to build from source, use node.js
22:47:22  <chrisdickinson>trevnorris: individual connections would themselves be duplex streams
22:47:26  <chrisdickinson>or readable/writable pairs
22:47:30  <chrisdickinson>of buffer data
22:47:52  <Agamemnus>ok thanks
22:48:03  <ljharb>Agamemnus: you haven't asked about one or the other in the node channel. there's been no decision to make
22:48:23  <Agamemnus>i did ask you just missed it somehow
22:48:30  <Agamemnus>so i guess i should start with node.js
22:48:45  <Agamemnus>i hate fragmentation btw
22:48:51  <Agamemnus>:(
22:48:52  <Fishrock123>Agamemnus: wait what
22:48:59  <RLa>while (true) { pool.handle(server.accept()) } <- possibly seen it in threaded systems :)
22:48:59  <Fishrock123>what is happening
22:49:02  <jesusabdullah>sometimes it's necessary
22:49:05  <Agamemnus>i have no idea
22:49:06  <jesusabdullah>I'll just say that
22:49:30  <chrisdickinson>IOW: setTimeout is a promise, setInterval is a stream
22:49:56  * Sebmasterjoined
22:50:04  <RLa>but there is while loop that makes sure .accept is called before each connection, and accept blocks
22:50:12  <chrisdickinson>(anything that happens 1 time -> promise, N times, where N is 0+ -> stream)
22:50:32  <bnoordhuis>you forget about monads, chris :)
22:51:01  <jesusabdullah>process.previousTick
22:51:02  <bnoordhuis>think of a promise that gives you a new connection and a new server object to call .accept() on
22:51:29  * jvrousseauquit (Quit: (null))
22:52:07  * eh_effjoined
22:53:22  <RLa>can someone actually make a shim on top of existing libs for that?
22:53:30  <jesusabdullah>didn't somebody?
22:53:34  <RLa>it still looks undoable
22:53:39  <RLa>links please :)
22:54:40  * eh_eff_quit (Ping timeout: 258 seconds)
22:56:32  <chrisdickinson>bnoordhuis: sort of a "linked list" of promises?
22:56:49  <jesusabdullah>it's thens all the way down
22:57:27  <bnoordhuis>chrisdickinson: yes, chaining them together
22:57:30  <RLa>does that not assume you handle only a single connection/request at a time?
22:58:32  <bnoordhuis>chrisdickinson: i was initially going to write something like 'threading the computation through discrete units of work' but i was afraid that was too fluffy/CS-y
22:58:42  <chrisdickinson>my first reaction would be to contend that at that point you're building a stream abstraction that's based on promises
22:59:12  <chrisdickinson>(since you're handling zero or more events over time, backpressure, etc)
23:00:11  <bnoordhuis>you say that like it's a bad thing
23:00:13  <chrisdickinson>which is sort of a silly contention, but I guess points at how I'm conceptualizing streams -- sort of like how lists are representable by a number of different types, streams are representable by a number of different mechanisms
23:00:45  <chrisdickinson>s/types/data structures/g
23:01:30  * dshaw_quit (Quit: Leaving.)
23:02:42  <chrisdickinson>(akin to how a list can be represented by a linked list or a vector, a stream can be represented by a mechanism like what you're describing, or the more familiar ".write(.read()) until one side blocks" mechanism inside of node)
23:03:14  <chrisdickinson>or how the concept of an asynchronous single event is representable by a promise *or* an error first callback
23:03:42  <chrisdickinson>anyway, sorry for carrying on a bit there :)
23:04:15  <bnoordhuis>quite so. streams are of course implemented as an abstraction on top of callbacks now. no reason that couldn't be promises
23:04:59  <chrisdickinson>tangentially I've been poking at a stripped-down version of streams to scratch an itch: https://github.com/chrisdickinson/flows
23:05:14  <chrisdickinson>(currently incomplete)
23:06:02  <bnoordhuis>they're pull-based streams?
23:06:04  <chrisdickinson>it borrows (or "rips off" if you're feeling less charitable) a bunch of ideas from Domenic's whatwg/streams
23:07:21  <chrisdickinson>the inner mechanism is still "try to write() synchronously until the writable fills up, resume when drained"
23:07:46  <chrisdickinson>so roughly push-based, like streams{2,3}
23:07:57  <chrisdickinson>they pull the buffering out into a strategy (like whatwg/streams)
23:08:08  <chrisdickinson>so the default behavior is a bit more like `through`
23:08:13  <KicStart>bnoordhuis: The more precise you can be the better, CS-y is ok, leave it to consumers to dumb it down in examples. ;)
23:08:49  <chrisdickinson>the idea is to restrict the API to *just* "pipe
23:08:53  <chrisdickinson>err,
23:09:04  <chrisdickinson>just "readable.pipe" and "writable.start()"
23:09:23  <chrisdickinson>and build other features as specializations
23:10:18  <bnoordhuis>ah, i read that as if the writable had to call .start() on the readable, hence pull-based
23:11:45  * j201joined
23:11:45  * j201quit (Changing host)
23:11:45  * j201joined
23:14:39  <chrisdickinson>one nice thing: writing this implementation shed a lot of light on why things are the way they are in the node implementation
23:15:51  * chovyjoined
23:15:56  <chovy>oh. will iojs have es6 support?
23:17:08  <RLa>as soon as v8 has it
23:17:48  <ljharb>as i told you, "has es6 support" isn't a useful target :-)
23:18:42  <trevnorris>bnoordhuis: is there an advantage to using "static"? i see in src/uv-common.c almost no functions are labeled static whereas in src/fs-poll.c there are many.
23:20:25  <bnoordhuis>trevnorris: that's because the ones in uv-common.c are shared/public. static is for making a function available only in the current compilation unit. it's good for hiding your private parts, avoiding symbol clashes, compiler optimizations
23:21:01  <trevnorris>ah, okay. so don't make public functions static. noted, thanks.
23:21:27  <chovy>when will v8 have it?
23:21:36  * FunnyLookinHatquit (Quit: Leaving)
23:22:49  <bnoordhuis>chovy: full es6 support? probably some time in 2015
23:23:07  <chovy>bnoordhuis: cool.
23:23:52  <chovy>so iojs will likely have that in 2015 sometime?
23:25:16  <bnoordhuis>yes. bits and pieces of es6 are already in iojs, but not everything
23:25:21  <Wraithan>chovy: iojs plans to integrate v8 as fast as reasonably possible
23:25:48  <Wraithan>chovy: state of the es6 game right now: http://kangax.github.io/compat-table/es6/
23:26:08  * topwobblequit (Quit: topwobble)
23:28:15  * dshaw_joined
23:36:34  * crueberquit (Quit: Be back later ...)
23:37:01  * crueberjoined
23:37:44  <chovy>Wraithan: thanks
23:38:06  * nodweberjoined
23:41:24  * i0rnquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
23:41:34  * crueberquit (Ping timeout: 256 seconds)
23:43:05  * nodweberquit (Ping timeout: 264 seconds)
23:43:25  * quijotejoined
23:48:37  * quijotequit (Ping timeout: 272 seconds)
23:50:01  * Iskarlarjoined
23:50:51  * therebelrobotquit (Read error: Connection reset by peer)
23:51:51  * bnoordhuisquit (Ping timeout: 244 seconds)
23:52:15  * Iskarlarquit (Client Quit)
23:53:28  * Iskarlarjoined