00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:09:22  * contrahaxjoined
00:17:26  * phatedquit (Remote host closed the connection)
00:23:49  * toddselfjoined
00:25:42  * phatedjoined
00:27:20  * thealphanerdquit (Quit: thealphanerd)
00:28:21  * toddselfquit (Ping timeout: 252 seconds)
00:30:13  * thlorenzjoined
00:34:05  * contrahaxquit (Quit: Sleeping)
00:35:17  * contrahaxjoined
00:35:32  * ednapiranhajoined
00:55:24  * thealphanerdjoined
00:58:47  <rowbit>Hourly usage stats: [developer: 0, free: 23]
01:00:34  * kriskowalquit (Quit: kriskowal)
01:05:02  * calvinfoquit (Quit: Leaving.)
01:11:45  * collypopsjoined
01:19:17  * toddselfjoined
01:19:25  * jxsonquit (Remote host closed the connection)
01:22:55  <Raynos>ogd: let me know what you think about mercury btw, havn't had a chance to do any docs other then examples & some docs in the direct dependencies
01:25:42  * toddselfquit (Ping timeout: 265 seconds)
01:29:06  * calvinfojoined
01:34:18  * AvianFluquit (Remote host closed the connection)
01:37:16  <rowbit>substack, pkrumins: testling server iphone6, ipad6 (osx, browserling1 user) is down!
01:37:16  <rowbit>substack, pkrumins: testling server safari6 (osx, browserling1 user) is down!
01:37:16  <rowbit>substack, pkrumins: testling server android (osx, browserling1 user) is down!
01:38:13  * phatedquit (Remote host closed the connection)
01:40:32  * thealphanerdquit (Quit: thealphanerd)
01:41:49  * dguttman_quit (Quit: dguttman_)
01:56:41  * andrewdeandradequit (Ping timeout: 264 seconds)
01:56:46  * thealphanerdjoined
01:58:47  <rowbit>Hourly usage stats: [developer: 0, free: 12]
01:59:24  * ednapiranhaquit (Quit: Leaving...)
01:59:32  * pfrazequit (Ping timeout: 265 seconds)
02:06:48  * contrahaxchanged nick to _contrahax
02:13:53  * phatedjoined
02:25:00  * thealphanerdquit (Quit: thealphanerd)
02:25:06  * dguttmanquit (Quit: dguttman)
02:27:06  * toddselfjoined
02:30:31  * thlorenzquit (Remote host closed the connection)
02:36:28  * thealphanerdjoined
02:38:41  * toddselfquit (Ping timeout: 264 seconds)
02:38:45  * calvinfoquit (Quit: Leaving.)
02:44:43  * brianloveswordsquit (Quit: Computer has gone to sleep.)
02:46:40  * toddselfjoined
02:58:47  <rowbit>Hourly usage stats: [developer: 0, free: 18]
03:03:34  * calvinfojoined
03:09:05  * tilgoviquit (Quit: No Ping reply in 180 seconds.)
03:10:53  * tilgovijoined
03:19:44  * calvinfoquit (Quit: Leaving.)
03:21:03  * calvinfojoined
03:23:32  * shamaquit
03:30:05  * rxgxquit (Quit: Connection closed for inactivity)
03:40:17  * rxgxjoined
03:42:32  * gozalaquit (Quit: Connection closed for inactivity)
03:58:46  <rowbit>Hourly usage stats: [developer: 0, free: 28]
04:04:19  * maksimlinquit (Ping timeout: 240 seconds)
04:08:14  * calvinmetcalfquit (Quit: Connection closed for inactivity)
04:10:29  * phatedquit (Remote host closed the connection)
04:12:33  * ednapiranhajoined
04:12:36  * ednapiranhaquit (Remote host closed the connection)
04:25:24  * maksimlinjoined
04:25:33  * dguttmanjoined
04:34:52  * jxsonjoined
04:36:48  * dguttmanquit (Quit: dguttman)
04:37:10  * defunctzombiechanged nick to defunctzombie_zz
04:38:36  * thlorenzjoined
04:50:05  * ELLIOTTCABLEchanged nick to notELLIOTTCABLE
04:50:34  * notELLIOTTCABLEchanged nick to ELLIOTTCABLE
04:53:58  * thealphanerdquit (Quit: thealphanerd)
04:58:46  <rowbit>Hourly usage stats: [developer: 0, free: 25]
05:24:55  * contrahaxjoined
05:28:27  * _contrahaxquit (Ping timeout: 258 seconds)
05:39:14  * quijotejoined
05:39:54  * thlorenzquit (Remote host closed the connection)
05:43:25  * Maciek416quit (Remote host closed the connection)
05:49:03  * calvinfoquit (Quit: Leaving.)
05:53:51  * quijote_joined
05:54:34  * quijotequit (Ping timeout: 240 seconds)
05:58:46  <rowbit>Hourly usage stats: [developer: 0, free: 28]
06:02:27  * kumavisjoined
06:17:44  * djcoinjoined
06:19:44  * jan____quit (Quit: Terminated with extreme prejudice - dircproxy 1.0.5)
06:23:45  * contrahaxquit (Quit: Sleeping)
06:26:26  * tilgoviquit (Remote host closed the connection)
06:33:49  * contrahaxjoined
06:33:49  * contrahaxchanged nick to _contrahax
06:34:50  * _contrahaxchanged nick to contrahax
06:37:27  * quijote_quit (Ping timeout: 265 seconds)
06:44:36  * maksimlinquit (Quit: ChatZilla 0.9.90.1 [Firefox 29.0/20140428193838])
06:49:34  * calvinfojoined
06:49:45  * cianomaidinjoined
06:50:25  * calvinfo1joined
06:50:25  * calvinfoquit (Read error: Connection reset by peer)
06:51:25  * calvinfojoined
06:51:25  * calvinfo1quit (Read error: Connection reset by peer)
06:51:28  * cianomaidinquit (Client Quit)
06:52:16  * calvinfo1joined
06:52:16  * calvinfoquit (Read error: Connection reset by peer)
06:53:14  * calvinfojoined
06:53:14  * calvinfo1quit (Read error: Connection reset by peer)
06:54:06  * calvinfo1joined
06:54:06  * calvinfoquit (Read error: Connection reset by peer)
06:55:00  * calvinfojoined
06:55:00  * calvinfo1quit (Read error: Connection reset by peer)
06:55:55  * calvinfo1joined
06:55:55  * calvinfoquit (Read error: Connection reset by peer)
06:56:55  * calvinfojoined
06:56:55  * calvinfo1quit (Read error: Connection reset by peer)
06:57:49  * calvinfo1joined
06:58:29  * calvinfo1quit (Read error: Connection reset by peer)
06:58:44  * calvinfo1joined
06:58:47  <rowbit>Hourly usage stats: [developer: 0, free: 45]
06:59:07  * cianomaidinjoined
06:59:19  * cianomaidinquit (Client Quit)
06:59:40  * calvinfo2joined
07:00:22  * calvinfoquit (Read error: Connection reset by peer)
07:00:23  * calvinfo2quit (Read error: Connection reset by peer)
07:00:35  * calvinfojoined
07:03:07  * calvinfo1quit (Ping timeout: 240 seconds)
07:04:20  * calvinfo1joined
07:04:53  * calvinfoquit (Read error: Connection reset by peer)
07:05:13  * calvinfojoined
07:06:01  * calvinfo1quit (Read error: Connection reset by peer)
07:06:13  * calvinfo1joined
07:07:05  * calvinfo2joined
07:07:05  * calvinfo1quit (Read error: Connection reset by peer)
07:07:57  * calvinfo1joined
07:07:57  * calvinfo2quit (Read error: Connection reset by peer)
07:09:39  * calvinfoquit (Ping timeout: 258 seconds)
07:10:29  * py1honquit (Ping timeout: 264 seconds)
07:10:29  * jjjohnnyquit (Ping timeout: 264 seconds)
07:10:36  * py1honjoined
07:10:36  * jjjohnnyjoined
07:13:34  * nfroidurequit (Ping timeout: 276 seconds)
07:14:20  * feross__joined
07:26:29  * jxsonquit (Remote host closed the connection)
07:26:46  * cianomaidinjoined
07:31:07  * cianomaidinquit (Ping timeout: 252 seconds)
07:31:37  * contrahaxquit (Quit: Sleeping)
07:32:08  * contrahaxjoined
07:33:16  * fotoveritequit (Quit: fotoverite)
07:33:45  * cianomaidinjoined
07:40:56  * feross__quit (Quit: feross__)
07:43:09  * contrahaxquit (Quit: Sleeping)
07:51:08  * cianomaidinquit (Quit: cianomaidin)
07:51:29  * feross__joined
07:58:46  <rowbit>Hourly usage stats: [developer: 0, free: 29]
08:02:33  * kumavisquit (Quit: Textual IRC Client: www.textualapp.com)
08:10:47  * addisonjquit (Quit: Connection closed for inactivity)
08:14:26  * feross__quit (Quit: feross__)
08:22:49  * quijotejoined
08:23:07  * calvinfo1quit (Quit: Leaving.)
08:40:05  * rxgxquit (Quit: Connection closed for inactivity)
08:41:53  * cpup_joined
08:42:28  * CoderPuppyquit (Ping timeout: 245 seconds)
08:48:17  * cianomaidinjoined
08:51:20  * stagasjoined
08:56:06  * domanicjoined
08:58:47  <rowbit>Hourly usage stats: [developer: 0, free: 19]
09:02:04  * quijotequit
09:23:40  * calvinfojoined
09:24:23  * calvinfoquit (Read error: Connection reset by peer)
09:24:35  * calvinfojoined
09:25:28  * calvinfo1joined
09:25:28  * calvinfoquit (Read error: Connection reset by peer)
09:26:24  * calvinfojoined
09:27:21  * calvinfo2joined
09:27:21  * calvinfoquit (Read error: Connection reset by peer)
09:28:14  * calvinfojoined
09:28:14  * calvinfo2quit (Read error: Connection reset by peer)
09:29:05  * calvinfoquit (Read error: Connection reset by peer)
09:29:11  * calvinfo2joined
09:30:43  * calvinfo1quit (Ping timeout: 276 seconds)
09:33:47  * calvinfo2quit (Ping timeout: 258 seconds)
09:55:23  * wolfeidauquit
09:58:47  <rowbit>Hourly usage stats: [developer: 0, free: 17]
10:02:03  * wolfeidaujoined
10:04:28  * calvinfojoined
10:05:23  * calvinfo1joined
10:05:23  * calvinfoquit (Read error: Connection reset by peer)
10:09:38  * calvinfo1quit (Ping timeout: 240 seconds)
10:10:44  * domanicquit (Ping timeout: 255 seconds)
10:17:22  * Jan____joined
10:17:36  * Jan____quit (Changing host)
10:17:36  * Jan____joined
10:19:55  * stagasquit (Remote host closed the connection)
10:54:23  * domanicjoined
10:58:47  <rowbit>Hourly usage stats: [developer: 0, free: 21]
11:01:21  <domanic>ogd, hey - I'm thinking about writing another mux-demux that supports binary - It could maybe be a pr to multiplex, but it would be a breaking change
11:01:43  <substack>domanic: that would be really great!
11:02:04  <substack>either way
11:02:16  <substack>multiplex also has some bugs that mux-demux doesn't have
11:02:23  <domanic>I have been learning a lot about binary encoding lately.p
11:02:27  <domanic>substack, like what?
11:02:45  <domanic>It also looks like it doesn't handle backpressure.
11:02:46  <substack>like I ran into an issue where streams wouldn't start
11:03:01  <substack>and if you try to create a duplex stream symmetrically from both sides the stream event doesn't fire
11:03:02  <domanic>Although, backpressure isn't ideal in mux-demux either
11:03:21  <substack>mux-demux/multiplexer whishlist:
11:03:27  <domanic>substack, hmm, yeah, sometimes you want that.
11:03:45  <substack>* ability to pass in an opts.qos to control the priority of sending
11:04:05  <substack>qos would be a function (name, buf) {} or some such
11:04:22  <substack>or opts.priority is perhaps a better name
11:04:26  <domanic>right. finegrained control of flows.
11:04:51  <substack>* opts.encoding would be really good too
11:05:30  <substack>or actually, that wouldn't be necessary if the protocol is straight binary
11:05:31  <domanic>so you can write strings/objects in?
11:05:51  * contrahaxjoined
11:06:06  * calvinfojoined
11:06:10  <substack>oh yeah actually that would be really handy
11:06:19  <domanic>it would be nice to be able to fallback to JSON for when you have a thing that doesn't do binary well (like sock.js)
11:06:20  <substack>it could be leveldb style
11:07:04  * calvinfo1joined
11:07:09  * calvinmetcalfjoined
11:07:54  * calvinfoquit (Read error: Connection reset by peer)
11:07:58  * calvinfo2joined
11:08:02  <domanic>okay I certainly want better flowcontrol, non binary is lower priority currently.
11:08:42  <domanic>one way would be to do it the way that tcp does it.
11:08:42  * calvinfo2quit (Read error: Connection reset by peer)
11:08:52  * calvinfojoined
11:09:04  <domanic>send a little, then wait for ack, then maybe speedup, but if you get a pause, slow down.
11:09:23  <domanic>speedup linearly but slow down exponentially.
11:10:15  <substack>for non-binary you can just base64 encode on each side with separate modules
11:10:17  <domanic>the other option would be to make the qos pull based. you would send a request saying what rate you wanted it.
11:11:05  <substack>or what about asking for a certain priority rank?
11:11:20  <domanic>rank the priorities of each stream?
11:11:25  <substack>yes
11:11:29  * calvinfo1quit (Ping timeout: 252 seconds)
11:11:36  <substack>then you could do scheduling kernel style
11:11:49  <substack>one problem is how equitable you want to be
11:12:10  <domanic>the real question: how do you measure bestness of qos?
11:12:17  <substack>it's probably a good idea to have both high and low marks for priority
11:12:22  * cianomaidin_joined
11:12:34  <domanic>I'm very suspucious about having static rules.
11:12:53  <domanic>then you need to do manual tuning
11:13:08  <substack>good point
11:13:11  <domanic>that is what is better about tcp, it's selfadjusting.
11:13:34  * cianomaidinquit (Ping timeout: 240 seconds)
11:13:34  * cianomaidin_changed nick to cianomaidin
11:13:35  * calvinfoquit (Ping timeout: 252 seconds)
11:14:00  <substack>ok so
11:14:13  <substack>what if A is really spammy and B sends messages just once every 10 seconds
11:14:39  <substack>if a bunch of As get backed up and B sends a message, B's should go through before the backed up As
11:15:26  <domanic>what is a real world context for that?
11:16:12  <domanic>I can see priorites working there, but it's highly dependent on application. I can imagine situations where B being occasional doesn't mean it's important.
11:16:25  <substack>metrics where some machines are spewing a ton of data but others aren't emitting very much data at all
11:16:43  <substack>but you don't want the noisy machines to monopolize the signal, destroying latency for everyone
11:16:46  <domanic>maybe that would be better if priorites are set in another layer that is a wrapper around mux-demux
11:17:24  <domanic>hmm, you need all the streams to have a chance to go.
11:17:35  <substack>well you could just pass in an opts.priority function to pick the winning stream
11:17:49  <substack>because programmers know more about their unique domains than mux-demux does
11:17:52  <substack>priority-wise
11:18:06  <substack>but a reasonable default would not have starvation
11:18:28  <domanic>yeah. okay how would you write a test suit to detect starvation?
11:19:43  <domanic>hey, I don't think this would be too hard actually.
11:19:49  <domanic>you just have a write buffer per stream.
11:20:38  <domanic>so Noisy writes lots into the buffer, Quite writes one thing, and then MX takes the next packet from one of the buffers randomly.
11:21:07  <domanic>pretty good chance it will be from Q. but then that is drained, so the next one will come from N.
11:21:15  <substack>might be better to round-robin
11:21:31  <domanic>sure, similar
11:22:01  <domanic>but it will allow each to their needs, according to their ability
11:22:40  <domanic>the tricy part, is that you have both substream flows, and super stream flow.
11:22:58  <domanic>the tcp connection may pause, then you pause all incoming streams
11:23:36  <domanic>but the consumer of a single substream may pause - so you want to send a nak to the other substream that will make that consumer slow down.
11:24:04  <substack>doesn't a pull model simplify this a ton?
11:24:35  <substack>so you don't need to explicitly pause, you just pull and your buffer gets scheduled for delivery
11:24:48  <substack>or you don't pull with read() and nothing gets scheduled
11:25:09  <domanic>yeah - I don't think this really works in streams2 though
11:25:13  <substack>also check out this article, the part about streams http://jongleberry.com/why-you-should-and-shouldnt-use-koa.html
11:25:22  <substack>"Don't ever use .pipe() unless you know what you're doing. It's broken. Let Koa handle streams for you."
11:25:32  <Altreus>does this mean my t-shirt is deprecated
11:25:36  <Altreus>I'm wearing it right now
11:25:38  <Altreus>:/
11:25:47  <substack>Altreus: it just means that koa knows best!
11:26:04  <Altreus>I'm promulgating bad behaviour!
11:26:10  <Altreus>Think of all the people who will see it
11:26:30  * brianloveswordsjoined
11:27:13  <domanic>yeah if node streams propagated errors, etc then that wouldn't be such a problem.
11:27:22  <substack>agreed
11:27:30  <domanic>there is more to node.js life than rest apps
11:27:54  <domanic>indeed, that is why I mostly use pull-streams now, except I expose normal streams at the edges.
11:28:16  <domanic>because node streams are more familiar, but pull-streams are easier to reason about.
11:28:44  <domanic>you have simplifyed error/end state transitions, and error is propagated.
11:29:20  <substack>I wonder if there isn't a way to bolt on error propagation in a way where you can get that behavior even if the modules you are consuming don't do that
11:29:26  <domanic>BOTH WAYS. if a sink (="writable") errors, it tells the source to abort.
11:30:03  <substack>bash uses pipefail for this mode
11:30:10  <domanic>maybe if you used a pipeline(stream1....streamN) instead of pipe
11:30:52  <domanic>but there are also cases where an intermediate stream is able to handle an error
11:31:24  <domanic>so I think bolting on a new behavior is too hard, but wrapping streams into another stream api is feasible.
11:31:36  <substack>or something like var f = onerror(function (err) {}); f(a).pipe(f(b)).pipe(f(c)) but that can get verbose
11:33:24  <domanic>well, node streams evolved organically for a while, then had a massive yet backwards compatible rewrite
11:33:28  <domanic>so they are really complex now
11:33:38  <domanic>if the outside interface is simpler
11:33:52  <domanic>s/if/even if/
11:35:13  <domanic>but they are pretty okay for most simple things, but when you have streams of streams of streams etc
11:35:21  <domanic>not so easy
11:39:04  <ogd>domanic: cool! im okay with breaking multiplex
11:39:45  <domanic>ogd, how does backpressure work in multiplex?
11:41:11  <ogd>individual channels don't get their own backpressure
11:41:55  <ogd>i havent had to tackle a use case yet where i needed multiplexed backpressure
11:42:03  <ogd>not really sure what the tradeoffs would be...
11:42:10  <domanic>substack, actually I think if I change how the output end of duplex works, I can improve some backpressure stuff in both scuttlebutt and mux-demux
11:43:37  <domanic>ogd, okay. yeah, still figuring this stuff out here too.
11:44:08  <domanic>ogd, substack the other thing that I want is efficient nesting of multiplexed streams.
11:44:37  <ogd>domanic: me and mafintosh are doing lots of protocol buffers stuff right now
11:44:45  <ogd>domanic: there are some interesting properties for nested data there
11:45:03  <domanic>well, each thing is length delemited, right?
11:45:32  <mafintosh>everything except fixed integers
11:45:34  <domanic>so it's nests fine... you just want a small overhead. so framing should be very low bytes.
11:45:36  <domanic>yeah.
11:46:15  <domanic>naturally the message field will be length delimited, and that is where the nested stream will end up.
11:46:42  <substack>ogd: if you haven't seen it there's http://kentonv.github.io/capnproto/ too
11:48:15  <substack>it's by the author of protocol buffers after he left google
11:49:10  * contrahaxquit (Ping timeout: 276 seconds)
11:49:43  <domanic>oh that is really interesting.
11:51:36  <mafintosh>any good node modules for capnproto?
11:52:37  <domanic>mafintosh, if you see a job that needs doing, it's your job.
11:55:28  <mafintosh>domanic: hah yeah - maybe i should publish one at some point
11:56:14  <domanic>mafintosh, an idea I've been considering is like the reverse of capnproto
11:56:31  <domanic>that would efficiently binary encode streams of json
11:56:55  * insertcoffeejoined
11:57:06  <domanic>you'd traverse the object leaf first, and then keys and values would be pointers back to where that value was written in the stream.
11:57:59  <domanic>so if you had thousands of keys that where all "name" or "version" they would just be pointers back to where those where defined.
11:58:16  <domanic>basically, compression optimized for json.
11:58:47  <rowbit>Hourly usage stats: [developer: 0, free: 8]
11:58:56  <mafintosh>whoa - i was hacking on something similar this morning
12:00:18  <domanic>ha!
12:00:19  <mafintosh>i guess you would still duplicte the types in the stream right - for each value
12:00:48  <domanic>hu?
12:01:00  <domanic>I'm not sure what you mean there
12:01:19  <mafintosh>i mean we do not store the type of the value with the key
12:02:00  <mafintosh>like if you write {"foo":1} and then {"foo":"bar"}
12:02:33  <mafintosh>when we write the value "bar" we also write that it should be a string
12:02:52  <domanic>oh I think you'd store the types with the values
12:03:02  <domanic>so {foo:"bar"}
12:03:18  <domanic>would become "foo","bar",{-2:-1}
12:03:33  * cianomaidinquit (Ping timeout: 252 seconds)
12:03:49  <mafintosh>arh yeah
12:04:16  <domanic>maybe inline numbers, or inline the first occurance, so that unique things don't need a pointer.
12:05:27  <domanic>that would make it easy to have a pointer to an object, too.
12:05:53  <domanic>mafintosh, oh yeah - I wrote this this morning: https://github.com/dominictarr/signed-varint
12:06:11  <mafintosh>yeah i saw
12:06:20  <mafintosh>have you looked at zigzag encoding?
12:06:51  <domanic>that is what it uses
12:07:05  <mafintosh>arh haha
12:07:14  <mafintosh>should have read the code
12:09:36  * calvinfojoined
12:10:33  * calvinfo1joined
12:10:33  * calvinfoquit (Read error: Connection reset by peer)
12:11:26  * calvinfojoined
12:11:26  * calvinfo1quit (Read error: Connection reset by peer)
12:12:25  * calvinfo1joined
12:12:25  * calvinfoquit (Read error: Connection reset by peer)
12:15:24  <domanic>hey, we are pretty close to being able to implement snappy is JS now https://en.wikipedia.org/wiki/Snappy_(software)
12:15:37  <domanic>it's just varint, plus some offsets.
12:16:42  * calvinfo1quit (Ping timeout: 240 seconds)
12:39:28  * contrahaxjoined
12:41:04  * AvianFlujoined
12:51:14  * contrahaxquit (Ping timeout: 240 seconds)
12:52:25  * contrahaxjoined
12:56:10  * naneaujoined
12:58:47  <rowbit>Hourly usage stats: [developer: 0, free: 3]
12:59:38  * contrahaxquit (Ping timeout: 258 seconds)
13:00:45  * contrahaxjoined
13:06:47  * AvianFluquit (Remote host closed the connection)
13:13:09  * calvinfojoined
13:14:03  * calvinfo1joined
13:17:14  * calvinfoquit (Ping timeout: 240 seconds)
13:17:43  * yorickjoined
13:18:18  * calvinfo1quit (Ping timeout: 240 seconds)
13:25:23  * contrahaxquit (Ping timeout: 245 seconds)
13:37:18  * thlorenzjoined
13:46:51  <rowbit>substack, pkrumins: Encoders down: 50.57.72.216 (free8)
13:56:00  * brianloveswordsquit (Quit: Computer has gone to sleep.)
14:00:21  * fotoveritejoined
14:01:13  * AvianFlujoined
14:09:23  * brianloveswordsjoined
14:14:47  * calvinfojoined
14:15:43  * calvinfo1joined
14:16:39  * calvinfo2joined
14:16:39  * calvinfo1quit (Read error: Connection reset by peer)
14:17:34  * calvinfo1joined
14:17:34  * calvinfo2quit (Read error: Connection reset by peer)
14:18:28  * calvinfo2joined
14:18:28  * calvinfo1quit (Read error: Connection reset by peer)
14:19:22  * calvinfo1joined
14:19:22  * calvinfo2quit (Read error: Connection reset by peer)
14:19:29  * calvinfoquit (Ping timeout: 252 seconds)
14:20:21  * calvinfojoined
14:21:13  * calvinfo2joined
14:21:31  * calvinfo1quit (Read error: Connection reset by peer)
14:22:06  * calvinfo2quit (Read error: Connection reset by peer)
14:22:08  * calvinfo1joined
14:23:08  * calvinfo2joined
14:23:08  * calvinfo1quit (Read error: Connection reset by peer)
14:23:50  * calvinfo2quit (Read error: Connection reset by peer)
14:24:00  * calvinfo1joined
14:24:44  * calvinfoquit (Ping timeout: 258 seconds)
14:28:18  * calvinfo1quit (Ping timeout: 245 seconds)
14:29:43  * insertcoffeequit (Ping timeout: 276 seconds)
14:32:16  * pfrazejoined
14:37:11  * AvianFluquit (Remote host closed the connection)
14:41:03  * AvianPhonejoined
14:41:32  <rowbit>Hourly usage stats: [free: 78]
14:42:28  * dguttmanjoined
14:45:05  * defunctzombie_zzchanged nick to defunctzombie
14:52:43  * AvianPhonequit (Ping timeout: 258 seconds)
14:54:03  * naneauquit (Quit: Quit.)
14:54:49  * ednapiranhajoined
15:01:06  * addisonjjoined
15:06:08  * thealphanerdjoined
15:23:54  * thealphanerdquit (Quit: thealphanerd)
15:24:46  * calvinfojoined
15:25:42  * calvinfo1joined
15:25:42  * calvinfoquit (Read error: Connection reset by peer)
15:26:19  * Maciek416joined
15:30:14  * calvinfo1quit (Ping timeout: 255 seconds)
15:30:29  * calvinfojoined
15:31:32  * AvianPhonejoined
15:41:31  <rowbit>Hourly usage stats: [free: 62]
15:42:37  * tmcwjoined
15:46:20  * contrahaxjoined
15:46:30  * AvianPhonequit (Quit: Bye)
15:46:31  * dguttmanquit (Quit: dguttman)
15:46:50  * AvianFlujoined
15:48:33  * kenperkins_quit (Remote host closed the connection)
15:49:21  * kenperkinsjoined
16:00:16  * tilgovijoined
16:07:02  * mikolalysenkojoined
16:08:46  * jxsonjoined
16:27:01  * kumavisjoined
16:28:50  * contrahaxquit (Quit: Sleeping)
16:30:23  * djcoinquit (Read error: No route to host)
16:34:54  * naneaujoined
16:41:31  <rowbit>Hourly usage stats: [free: 53]
16:51:33  * thlorenzquit (Remote host closed the connection)
16:53:11  * thlorenzjoined
16:55:16  * dguttmanjoined
17:01:31  * mikolalysenkoquit (Ping timeout: 258 seconds)
17:02:58  * papurrijoined
17:04:37  * thlorenzquit (Remote host closed the connection)
17:05:08  * kenperkins_joined
17:08:41  * kenperkinsquit (Ping timeout: 264 seconds)
17:15:11  * kenperkins_quit (Remote host closed the connection)
17:15:59  * kenperkinsjoined
17:17:40  * papurriquit
17:21:26  * phatedjoined
17:35:08  * gozalajoined
17:39:50  * kenperkins_joined
17:39:56  * kenperkinsquit (Read error: Connection reset by peer)
17:41:30  * mikolalysenkojoined
17:41:31  <rowbit>Hourly usage stats: [developer: 1, free: 48]
17:51:23  * phatedquit (Read error: Connection reset by peer)
17:51:43  * phatedjoined
17:53:48  * Jan____changed nick to jan____
17:54:02  * contrahaxjoined
17:54:59  * thlorenzjoined
18:01:49  * tmcwquit (Remote host closed the connection)
18:07:39  * kriskowaljoined
18:08:07  * contrahaxquit (Read error: Connection reset by peer)
18:08:36  * contrahaxjoined
18:09:27  * contrahaxquit (Read error: Connection reset by peer)
18:10:11  * contrahaxjoined
18:11:56  * contraha_joined
18:11:56  * contrahaxquit (Read error: Connection reset by peer)
18:12:57  * tmcwjoined
18:16:30  * andrewdeandradejoined
18:21:08  * kumavisquit (Quit: Computer has gone to sleep.)
18:26:25  * contrahaxjoined
18:27:57  * contraha_quit (Ping timeout: 265 seconds)
18:31:31  * contrahaxquit (Ping timeout: 276 seconds)
18:35:26  * contrahaxjoined
18:41:31  <rowbit>Hourly usage stats: [developer: 0, free: 41]
18:48:11  * heathquit (Read error: Connection reset by peer)
19:00:49  * shamajoined
19:05:54  * mikolalysenkoquit (Ping timeout: 240 seconds)
19:07:22  * mikolalysenkojoined
19:12:09  <defunctzombie>on OSX the filesystem is case insensitive for operations like fs.exists
19:12:33  <defunctzombie>is there a way to actually make it case sensitive in node.js or check the file?
19:14:22  <kriskowal>defunctzombie: HFS does store the canonical representation. if you canonicalize the path, you can figure out whether it matches.
19:14:36  <defunctzombie>kriskowal: realpath you mean?
19:14:37  <jesusabdullah>to what end though defunctzombie ?
19:14:39  <kriskowal>or if you’re just interested in the final term, you can list() its parent and check for containment
19:14:59  <kriskowal>yeah, realpath is the name
19:15:17  <defunctzombie>jesusabdullah: to the end that I need the actual filename on disk after doing fs.exists checks
19:15:23  <defunctzombie>kriskowal: I will try that, thanks
19:15:48  <jesusabdullah>defunctzombie: but why, if it's case insensitive anyway?
19:16:06  <kriskowal>indeed. going down this road can turn into a wack-a-mole sort of problem.
19:16:19  <defunctzombie>because I need to then shell out to "git add"
19:16:30  <defunctzombie>and that wants the name to be proper case for some reason
19:16:47  <jesusabdullah>wait, git's somehow case sensitive? cray-cray
19:17:06  <kriskowal>git db is case sensitive, for sure.
19:17:13  <defunctzombie>correct
19:17:19  <kriskowal>and it will retain whatever name you give when you add, so that makes sense.
19:17:22  <defunctzombie>and thus I need my exists checks to be sensitive
19:17:33  <defunctzombie>so there you have the "why"
19:17:39  <jesusabdullah>ahhh
19:18:14  <kriskowal>in related news, my weekend project was to adapt js-git to a file system interface https://github.com/montagejs/q-git
19:18:27  <jesusabdullah>what if you just told your users to not be total fuckfaces about it, defunctzombie ?
19:18:28  <defunctzombie>kriskowal: realpath doesn't seem to do the trick
19:18:29  <kriskowal>git db is so very fun
19:18:38  * mikolalysenkoquit (Ping timeout: 240 seconds)
19:18:48  <jesusabdullah>"If you trip this edge case, fuck you"
19:18:49  <defunctzombie>kriskowal: probably have to the use "list" approach
19:19:01  <kriskowal>worth a shot.
19:19:29  <defunctzombie>I just tried realpath on a lowercase filename and got back lowercase haha
19:20:24  <kriskowal>defunctzombie: and meanwhile, you won the free association homage game this weekend https://github.com/montagejs/q-git/blob/master/test/fs-test.js#L54
19:20:25  <defunctzombie>readdir does the trick
19:20:41  <defunctzombie>kriskowal: hahaha
19:21:06  * pfrazequit (Quit: Leaving)
19:21:59  * andrewdeandradequit (Ping timeout: 255 seconds)
19:22:52  <kriskowal>guh. your findings with realpath are disappointing.
19:23:11  <kriskowal>and that probably directly reflects the posix interpretation.
19:23:26  <kriskowal>just following symbolic links.
19:23:49  <defunctzombie>yep
19:25:50  * thealphanerdjoined
19:30:29  * mikolalysenkojoined
19:37:03  * nrwjoined
19:38:27  * pfrazejoined
19:41:22  <rowbit>substack, pkrumins: These encoders are STILL down: 50.57.72.216(free8)
19:41:31  <rowbit>Hourly usage stats: [developer: 3, free: 53]
19:49:07  <domanic>substack, http://www.instructables.com/id/Head-Mouse-Game-controller-or-disability-aid/
19:59:59  <nrw>testling is choking on leveldown (which is getting installed as a dependency of level-test). This is the repo i'm looking at: https://ci.testling.com/nrw/level-objectify. do i need to do something differently to get these tests to run on testling?
20:01:11  <nrw>I see level-test is successfully running its tests on testling https://ci.testling.com/dominictarr/level-test. level-test's build is also crashing at leveldown's `npm rebuild`, but it's tests are getting run.
20:01:16  <nrw>ideas?
20:12:14  <domanic>nrw, hmm, is it an optionalDependency?
20:12:32  <nrw>it's a devDependency
20:13:07  <nrw>domanic: here's the package.json https://github.com/nrw/level-objectify/blob/master/package.json
20:13:18  * mikolalysenkoquit (Ping timeout: 240 seconds)
20:13:30  <nrw>tests run successfully with a local run of `testling`
20:14:27  <domanic>nrw, can you link me to the testling page?
20:14:37  <nrw>https://ci.testling.com/nrw/level-objectify
20:17:01  <domanic>oh no, that isn't it
20:17:12  <nrw>domanic: ?
20:17:24  <domanic>it just needs a browser field.
20:17:39  <domanic>(sorry I meant, it's not optionalDeps - that isn't the problem)
20:17:50  <nrw>ok
20:18:37  <domanic>oh... hmm, it looks a bit like a optiondep thing actually.
20:19:03  <pkrumins>i just looked and it appears to be a python issue
20:19:06  <nrw>pkrumins just got back to me over in #browserling. he's pointing out that it
20:19:07  <nrw>yes
20:19:08  <nrw>that
20:19:08  <nrw>:P
20:19:10  <pkrumins> File "/testling/bin/python-2.7.3/lib/python2.7/multiprocessing/synchronize.py", line 75, in __init__
20:19:13  <pkrumins> sl = self._semlock = _multiprocessing.SemLock(kind, value, maxvalue)
20:19:16  <pkrumins>OSError: [Errno 38] Function not implemented
20:19:26  <pkrumins>when running node-gyp rebuild
20:19:42  <domanic>okay I pushed a new version that has optionalDeps
20:20:04  <domanic>it doesn't need the compiled thing, so it should be like this anyway...
20:20:12  <nrw>ok
20:20:24  <pkrumins>domanic: it failed i think
20:20:28  <pkrumins>your last push
20:21:17  <pkrumins>http://stackoverflow.com/questions/21068535/cannot-install-node-xmpp-or-node-expat-due-to-node-gyp-rebuild-error
20:21:31  <domanic>version 1.6.3?
20:21:34  <pkrumins>i see
20:21:36  <pkrumins>it's a chroot issue
20:21:42  <pkrumins>will be fixed in 5 mins
20:21:51  <nrw>pkrumins: wow. thanks!
20:23:03  <pkrumins>proc wasn't mounted
20:24:09  <pkrumins>nrw: it should work now, try sending a hook
20:24:28  <nrw>ok!
20:24:29  <pkrumins>domanic: you should resend that hook too because your last push failed also
20:27:27  <nrw>pkrumins: it's running! my tests are failing! but that's my problem! :P
20:27:28  <domanic>done
20:27:29  <nrw>Thanks!
20:28:47  <pkrumins>cool
20:35:15  * nrwpart
20:38:45  * naneauquit (Quit: Quit.)
20:41:31  <rowbit>Hourly usage stats: [developer: 0, free: 51]
20:51:06  * natemicquit (Ping timeout: 240 seconds)
20:55:38  <domanic>pkrumins, If I get a time out https://ci.testling.com/dominictarr/crypto-browserify
20:55:48  <domanic>that seems to prevent the rest of the tests from running
20:57:10  * natemicjoined
21:01:38  * contrahaxquit (Quit: Sleeping)
21:02:12  * rannmannquit (Remote host closed the connection)
21:05:48  * tim_smartquit (Ping timeout: 245 seconds)
21:08:34  * domanicquit (Ping timeout: 240 seconds)
21:09:20  * rannmannjoined
21:10:09  * tilgoviquit (Remote host closed the connection)
21:14:56  * natemicquit (Ping timeout: 255 seconds)
21:17:41  * natemicjoined
21:23:31  * tim_smartjoined
21:27:53  * tim_smartquit (Ping timeout: 245 seconds)
21:40:06  * tim_smartjoined
21:40:08  * ELLIOTTCABLEchanged nick to CaptainEC
21:41:31  <rowbit>Hourly usage stats: [developer: 0, free: 34]
21:44:58  * ednapiranhaquit (Quit: Leaving...)
21:49:29  * calvinfoquit (Quit: Leaving.)
21:49:43  * calvinfojoined
21:49:51  * calvinfoquit (Client Quit)
21:50:48  * tim_smartquit (Ping timeout: 245 seconds)
21:52:03  * tim_smartjoined
21:52:08  * CaptainECchanged nick to ELLIOTTCABLE
21:53:02  * tilgovijoined
21:56:38  * stagasjoined
22:10:36  * mikolalysenkojoined
22:15:06  * mikolalysenkoquit (Ping timeout: 240 seconds)
22:15:50  * tmcwquit
22:21:06  * ednapiranhajoined
22:25:18  * wolfeidauquit (Remote host closed the connection)
22:36:11  * wolfeidaujoined
22:41:31  <rowbit>Hourly usage stats: [developer: 0, free: 38]
22:44:54  * rxgxjoined
22:45:47  * brianloveswordsquit (Quit: Computer has gone to sleep.)
22:53:41  * calvinfojoined
23:14:31  * calvinfoquit (Read error: Connection reset by peer)
23:14:41  * calvinfojoined
23:18:52  * maksimlinjoined
23:20:06  * ednapiranhaquit (Quit: Leaving...)
23:22:29  * rannmannquit (Read error: Connection reset by peer)
23:22:52  * rannmannjoined
23:22:52  * rannmannquit (Changing host)
23:22:52  * rannmannjoined
23:25:10  * phatedquit (Remote host closed the connection)
23:27:00  * thlorenzquit (Remote host closed the connection)
23:39:55  * andrewde`joined
23:40:02  * andrewdeandradejoined
23:41:31  <rowbit>Hourly usage stats: [developer: 10, free: 31]
23:42:23  * thlorenzjoined
23:44:30  * calvinfoquit (Quit: Leaving.)
23:44:47  * thlorenzquit (Remote host closed the connection)
23:46:40  * calvinfojoined
23:55:14  * yorickquit (Remote host closed the connection)
23:59:36  * stagasquit (Remote host closed the connection)