00:00:01  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:00:09  * gwenbelljoined
00:05:24  * gwenbellquit (Quit: Lost terminal)
00:10:17  * mikealquit (Quit: Leaving.)
00:11:39  * mikealjoined
00:20:05  * maksimlinjoined
00:21:49  * mikealquit (Quit: Leaving.)
00:25:45  * mikealjoined
00:36:22  * yorickquit (Remote host closed the connection)
00:36:23  * mcollinajoined
01:02:38  * evboguequit (Read error: Connection reset by peer)
01:10:07  * st_lukequit (Remote host closed the connection)
01:29:02  * stagasjoined
01:36:03  * tmcwjoined
01:46:20  * jibayquit (Remote host closed the connection)
01:52:54  * tmcwquit (Remote host closed the connection)
01:58:37  * kumavisquit (Quit: kumavis)
01:59:27  <mbalho>substack: ooh https://github.com/rvagg/workshopper
01:59:40  <mbalho>rvagg: substack was working on genericisizing stream-adventure, not sure how far he got
02:07:27  * ins0mniaquit (Ping timeout: 276 seconds)
02:07:50  <juliangruber>mbalho: put your sublevel multilevel test gist into requirebin, exchange level with memdb, try to run it -> you get errors
02:08:18  <juliangruber>mbalho: http://requirebin.com/?gist=6207818
02:11:39  <mbalho>weird
02:12:20  * mikolalysenkojoined
02:16:23  * mikolalysenkoquit (Ping timeout: 240 seconds)
02:26:13  * mcollinaquit (Ping timeout: 248 seconds)
02:26:52  * mcollinajoined
02:34:50  * shamajoined
02:42:10  * kumavisjoined
03:04:20  * calvinfojoined
03:13:11  * st_lukejoined
03:23:30  * mikealquit (Quit: Leaving.)
03:28:57  * thlorenzquit (Remote host closed the connection)
03:33:35  * mikealjoined
03:39:33  * jergasonjoined
04:21:46  * mikealquit (Quit: Leaving.)
04:22:29  * mikealjoined
04:23:52  * mcollinaquit (Ping timeout: 264 seconds)
04:29:12  * mikealquit (Quit: Leaving.)
04:29:54  * mikealjoined
04:32:47  * mcollinajoined
04:32:53  * mcollinaquit (Remote host closed the connection)
04:34:08  * mcollinajoined
04:38:20  * mikealquit (Quit: Leaving.)
04:40:31  * mikealjoined
04:41:17  * calvinfoquit (Quit: Leaving.)
04:49:32  * AvianFluquit (Remote host closed the connection)
04:51:39  * mikealquit (Quit: Leaving.)
04:59:11  * wolfeidaujoined
05:00:45  * wolfeidauquit (Remote host closed the connection)
05:05:06  * mikealjoined
05:05:27  * mikealquit (Client Quit)
05:06:01  * mikealjoined
05:12:39  * kumavisquit (Quit: kumavis)
05:14:05  * st_lukequit (Remote host closed the connection)
05:20:37  * mcollinaquit (Ping timeout: 248 seconds)
05:22:02  * nk109joined
05:26:24  * mcollinajoined
05:29:14  * jergasonquit (Remote host closed the connection)
05:37:19  * mcollinaquit (Remote host closed the connection)
06:06:58  * shamaquit (Remote host closed the connection)
06:09:30  * st_lukejoined
06:10:21  * st_lukequit (Remote host closed the connection)
06:15:21  * djcoinjoined
06:17:53  <mbalho>interesting https://github.com/inh3/nPool
06:28:20  * stagas_joined
06:28:45  * stagasquit (Ping timeout: 276 seconds)
06:28:51  * stagas_changed nick to stagas
06:29:12  * mcollinajoined
06:36:52  * dominictarrjoined
06:38:38  * mcollinaquit (Ping timeout: 264 seconds)
06:39:13  * Kesslerjoined
06:39:14  * mikealquit (Quit: Leaving.)
07:03:52  * maksimlinquit (Quit: ChatZilla 0.9.90.1 [Firefox 23.0/20130803215302])
07:05:41  * stagasquit (Remote host closed the connection)
07:06:13  * stagasjoined
07:06:45  * jcrugzzquit (Ping timeout: 248 seconds)
07:09:23  * mikealjoined
07:14:32  * damonoehlmanquit (Quit: WeeChat 0.4.1)
07:25:03  * timoxleyjoined
07:29:55  * mcollinajoined
07:30:21  * thlorenzjoined
07:35:07  * thlorenzquit (Ping timeout: 260 seconds)
07:36:18  * dominictarrquit (Quit: dominictarr)
07:37:17  * dominictarrjoined
07:38:13  * mcollinaquit (Ping timeout: 248 seconds)
07:44:14  * wolfeidaujoined
07:52:23  <dominictarr>substack: mbalho what are your travel dates for nodeconf & lxjs?
07:53:09  * wolfeidauquit (Remote host closed the connection)
07:54:18  * wolfeidaujoined
07:55:35  * wolfeida_joined
07:59:52  * wolfeidauquit (Ping timeout: 264 seconds)
08:01:45  * wolfeida_quit (Remote host closed the connection)
08:13:35  * dominictarrquit (Quit: dominictarr)
08:14:32  * dominictarrjoined
08:16:51  * dominictarrquit (Client Quit)
08:22:20  * dominictarrjoined
08:41:52  * defunctzombiechanged nick to defunctzombie_zz
09:01:05  * jibayjoined
09:25:17  * frankblizzardjoined
09:30:30  * dominictarrquit (Quit: dominictarr)
09:30:57  * thlorenzjoined
09:35:52  * thlorenzquit (Ping timeout: 264 seconds)
09:36:13  * Kessler_joined
09:39:02  * Kesslerquit (Ping timeout: 240 seconds)
09:41:24  * defunctzombie_zzquit (Ping timeout: 240 seconds)
09:44:48  * timoxleyquit (Remote host closed the connection)
09:45:02  * defunctzombie_zzjoined
09:52:21  * dominictarrjoined
09:55:34  * jibayquit (Remote host closed the connection)
10:09:08  * Kessler__joined
10:10:18  * Kessler_quit (Ping timeout: 264 seconds)
10:11:34  * mirkokieferjoined
10:17:01  * nicholasfjoined
10:52:26  * Kessler__quit (Ping timeout: 264 seconds)
10:59:33  * ins0mniajoined
11:19:31  * wolfeidaujoined
11:31:36  * thlorenzjoined
11:32:28  * mcollinajoined
11:36:06  * thlorenzquit (Ping timeout: 264 seconds)
11:38:30  * mcollinaquit (Ping timeout: 264 seconds)
11:47:13  * mirkokieferquit (Quit: mirkokiefer)
11:47:19  * mikolalysenkojoined
12:16:16  * mikolalysenkoquit (Ping timeout: 256 seconds)
12:32:28  * mcollinajoined
12:36:53  * mcollinaquit (Ping timeout: 248 seconds)
12:38:45  * mirkokieferjoined
12:40:02  * jibayjoined
12:43:23  * kevino80joined
12:52:36  * wolfeidauquit (Remote host closed the connection)
12:58:51  * ednapiranhajoined
13:04:18  * mikealquit (Read error: Connection reset by peer)
13:33:06  * mcollinajoined
13:37:54  * mcollinaquit (Ping timeout: 264 seconds)
13:45:11  * thlorenzjoined
13:50:51  * Kesslerjoined
13:53:20  * kenperkinsquit (Quit: Textual IRC Client: http://www.textualapp.com/)
13:59:02  * calvinfojoined
14:07:21  * calvinfoquit (Ping timeout: 256 seconds)
14:09:13  * Kessler_joined
14:10:45  * Kesslerquit (Quit: No Ping reply in 180 seconds.)
14:10:45  * johnkpaulquit (Ping timeout: 240 seconds)
14:10:46  * chapelquit (Ping timeout: 240 seconds)
14:11:19  * ins0mniaquit (Ping timeout: 260 seconds)
14:12:07  * johnkpauljoined
14:12:38  * chapeljoined
14:26:03  * Kessler_quit (Ping timeout: 256 seconds)
14:26:59  * jibayquit (Remote host closed the connection)
14:30:59  * ins0mniajoined
14:33:31  * mcollinajoined
14:35:50  * tmcwjoined
14:39:30  * ins0mniaquit (Ping timeout: 276 seconds)
14:42:06  * mcollinaquit (Ping timeout: 264 seconds)
14:48:56  * kenperkinsjoined
14:59:10  * mcollinajoined
15:11:32  * kevino80quit (Remote host closed the connection)
15:13:08  * jergasonjoined
15:15:19  * kumavisjoined
15:15:30  * AvianFlujoined
15:22:37  * Kesslerjoined
15:25:18  * kenperkinsquit (Quit: Textual IRC Client: http://www.textualapp.com/)
15:27:55  * Kessler_joined
15:28:15  * Kesslerquit (Ping timeout: 276 seconds)
15:31:58  * mikealjoined
15:32:20  * mikealquit (Client Quit)
15:35:56  * mikealjoined
15:40:42  * mirkokiefer_joined
15:42:38  * mirkokieferquit (Ping timeout: 240 seconds)
15:42:39  * mirkokiefer_changed nick to mirkokiefer
15:45:23  * Kessler_quit (Ping timeout: 256 seconds)
15:56:39  * kevino80joined
15:59:34  * frankblizzardquit (Remote host closed the connection)
16:02:09  * kumavisquit (Quit: kumavis)
16:02:58  * mikolalysenkojoined
16:06:09  <creationix>substack, do you have a list of test cases for code that scans for requires
16:06:23  <creationix>I'm hardening my scanner
16:07:44  <dominictarr>creationix: look at http://npm.im/detective
16:12:05  <creationix>dominictarr, cool, looks like I pass all those
16:12:56  <creationix>no ast or anything fancy, just a simple, but proper state machine parser https://gist.github.com/creationix/6212379
16:13:26  <dominictarr>hmm, are there negative tests?
16:13:47  <creationix>for my js-git code base I had false-positives I had to filter out
16:13:56  <creationix>platform.require('foo'), for example
16:14:11  <dominictarr>yeah
16:14:13  <creationix>the state machine ignores all string and comment contents
16:15:27  <dominictarr>hmm, this looks very simple
16:15:28  <creationix>hmm, I guess it might blow up if you put require inside a regular expression
16:15:41  <creationix>like /require('foo')/
16:15:46  <dominictarr>doesn't look like it will take much more to add AST generation
16:15:47  * mikealquit (Quit: Leaving.)
16:15:58  <creationix>wouldn't be much of an ast
16:16:00  <creationix>I ignore so much
16:16:14  <dominictarr>ha! that means it might have difficulty parsing another require scanner...
16:16:29  <creationix>if that require scanner uses regular expressions to find require, that's fine
16:16:45  <creationix>also it only matches if the contents inside the require call is a simple string
16:16:57  <creationix>sure it's possible, but does code that looks like that even exist?
16:17:19  <dominictarr>browserify uses regexps and then double checks with esprima
16:17:22  <creationix>I'd rather not add a regular expression parser, they are considerably harder than strings and comments
16:17:47  <dominictarr>could you just parse the escape sequences?
16:18:02  <creationix>browserify could just use this and not need esprima or regular expressions
16:18:03  <creationix>:)
16:18:17  <creationix>should make things faster for stuff like compiling voxel
16:18:22  <dominictarr>yes
16:18:36  <dominictarr>also would make the download much smaller
16:18:40  * dguttmanjoined
16:18:55  <creationix>but no, regular expressions are deceptively difficult to parse correctly. It's a lot more than just escape codes
16:18:57  <dominictarr>not normally a problem, but would make it more usable on browser or rpi or suchlike
16:19:19  <creationix>the js grammar is slightly ambiguous around that part.
16:19:52  <creationix>I know when I last showed this code to substack, he was very interested
16:19:56  <dominictarr>can you unambigiously find the contents of the RegExp?
16:20:06  <creationix>but back then it would have failed on a couple of the test cases
16:20:40  <creationix>dominictarr, obviously you *can* parse a regexp properly. It's just a lot harder than it first appears
16:20:47  <dominictarr>oh: stuff like this /[/]/
16:20:55  <creationix>nah, that's easy
16:21:23  <dominictarr>what is a hard one?
16:22:43  <creationix>function(..){..} /foo/
16:23:33  <creationix>because parsers don't usually remember all past state
16:24:08  <creationix> { .. } /foo/ could be expression divided foo divided by the next thing
16:24:35  * calvinfojoined
16:24:50  <creationix>the problem is "/" is rather overloaded and context sensitive
16:25:38  <dominictarr>right.
16:25:43  <dominictarr>y = x/x/x
16:25:54  <Domenic_>there were some regexes floating around
16:25:58  <Domenic_>i would be curious if they failed any tests
16:26:01  <dominictarr>or rather
16:26:05  <dominictarr>r = g/g
16:26:12  <dominictarr>r = /g/g
16:26:25  <Domenic_>https://github.com/NobleJS/Noble-Modules/blob/master/nobleModules.js#L620-L623
16:26:30  <Domenic_>someone test that
16:26:33  <creationix>if anyone using my parser hits a bug in actual code I'll fix it
16:26:35  <Domenic_>might provide browserify with a nice speed boost
16:27:09  <creationix>Domenic_, my parser will quickly ignore it
16:27:53  <Domenic_>creationix: it'll take more than that to convince me :P. namely, benchmarks.
16:28:10  <creationix>it will pick up the "require" in the middle, but since it's not followed by "(" whitespace* string whitespace* ")" it won't match
16:28:25  <creationix>Domenic_, then benchmark it
16:28:39  <creationix>but I can't imagine it being any slower than the esprima pass
16:28:42  <Domenic_>creationix: nah i'm just popping into this conversation to offer an alternative, no actual investment in the outcome.
16:28:55  <Domenic_>right we have esprima vs. creationix's custom thing vs. regex
16:29:08  <creationix>well regex isn't accurate
16:29:11  <creationix>so I don't count that one
16:29:25  <dominictarr>Domenic_: its creationix vs (esprima + regexp)
16:29:33  <Domenic_>creationix: what does the regex fail on?
16:29:51  <Domenic_>it accounts for strings and comments
16:30:06  <dominictarr>regexp is fast but can only be used to rule out negative tests
16:30:14  <dominictarr>it can get false positives
16:30:19  <Domenic_>dominictarr: i am not convinced that is true
16:30:38  <Domenic_>i believe we may be interested in a regular language which is a subset of javascript
16:30:47  <Domenic_>in any case it's easy to shut me up with a failing test
16:30:59  <creationix>where is said regexp
16:31:01  <creationix>I'll break it
16:31:03  <dominictarr>that wouldn't be very useful, a language about nesting
16:31:08  <Domenic_>https://github.com/NobleJS/Noble-Modules/blob/master/nobleModules.js#L620-L623
16:31:13  <dominictarr>COBOLScript
16:34:27  <creationix>Domenic_, "/*\nrequire('foo')\"\n*/\nrequire('bar')"
16:35:00  * jcrugzzjoined
16:35:03  <creationix>regexps generally fail as nested stuff
16:35:43  * kenperkinsjoined
16:36:02  <Domenic_>nice, thanks for taking the time to prove me wrong :)
16:36:22  <dominictarr>if they are really regular (perl regexp arn't) then they can't represent that
16:36:53  <dominictarr>Domenic_ they are strictly lower on the chompsky heirachy
16:37:01  <Domenic_>dominictarr: yes, I am aware
16:37:01  <creationix>lua patterns can handle some nesting
16:37:19  <creationix>they don't even call them regular expressions
16:37:28  <creationix>but that's not here or there
16:37:39  <dominictarr>you can probably tokenize js with regular expression, though
16:37:49  <creationix>Domenic_, but I can also break mine with something like "/require('foo')/"
16:38:07  <creationix>because I haven't yet implemented ignoring the contents of regular expressions
16:38:17  <dominictarr>right
16:38:26  <Domenic_>dominictarr: pretty sure you can't, due to ambiguities involving // for regexes vs. // for comments
16:38:52  <dominictarr>/ is not a valid regular expression
16:38:57  <dominictarr>sorry //
16:39:11  <Domenic_>https://gist.github.com/dherman/4871805
16:40:11  <creationix>Domenic_, the way I broke yours is fairly common. I've seen many people use block comments that contain an odd number of single quotes
16:40:22  * tmcwquit (Remote host closed the connection)
16:41:24  <dominictarr>Domenic_: could you just accept regular expressions before division?
16:41:33  <creationix>"/*Let's require stuff*/require('stuff')"
16:41:37  <dominictarr>no.
16:42:16  <dominictarr>yeah, you'd have to tokenize regular expressions too
16:44:46  * tmcwjoined
16:45:06  <dominictarr>and that opens a whole can of worms
16:45:20  <creationix>I'm going to ignore that can for now
16:45:31  <creationix>you can break my parser using tricks with regular expressions
16:45:39  <creationix>but I doubt it will happen in real code very often
16:45:44  <creationix>if at all
16:46:05  <dominictarr>maybe minified code, though
16:46:19  <creationix>why would that make a difference?
16:47:20  <creationix>how often to regular expressions contain "require(" whitespace* string whitespace* ")"?
16:47:49  <dominictarr>no, not often
16:48:05  <dominictarr>I meant the ambigious regexp case
16:48:19  <creationix>oh yeah, people writing minifiers have trouble with that
16:48:56  <dominictarr>hmm, so I suppose you should use a semicolon before a literal regexp
16:49:03  <dominictarr>like you do on a [] or ()
16:49:11  <dominictarr>;[1,2,3].forEach(…)
16:49:20  <dominictarr>;/literal/.test(string)
16:49:35  <dominictarr>although nearly always it's gonna be
16:49:45  <dominictarr>x = /rx/.test(s)
16:50:38  <dominictarr>because otherwise the regular expression result is thrown away
16:54:07  * whit537joined
16:56:27  <creationix>hmm, should require("foo",require("zap")) match both or just "zap"?
16:56:43  <creationix>I guess both
16:56:48  <creationix>though who would do that?
16:57:27  <dominictarr>also, what about (require)('foo')
16:57:56  <creationix>nope, don't match that
16:58:04  <creationix>and I'm ok with that
16:58:06  <dominictarr>browserify used ignored that, and it became a defacto standard that you could use to make browserify skip that require
16:58:27  <dominictarr>creationix: so maybe just ignore requrie('f', X)
16:59:35  <creationix>the difference is the comma is easy
16:59:45  <creationix>I just look for a "," or ")" at the end of the require
17:00:01  <creationix>but simplifying arbitrary expressions is a whole 'nother ballpark
17:00:18  <creationix>I really don't care either way
17:00:25  * jibayjoined
17:00:41  <creationix>I just want my code simple, fast, and work for real code, not made up situations
17:03:03  * kevino80quit (Remote host closed the connection)
17:05:34  * mirkokieferquit (Quit: mirkokiefer)
17:06:18  * dominictarrquit (Quit: dominictarr)
17:09:53  * soldairjoined
17:18:40  * defunctzombie_zzchanged nick to defunctzombie
17:18:54  * mcollinaquit (Remote host closed the connection)
17:19:30  * djcoinquit (Quit: WeeChat 0.4.0)
17:20:24  * defunctzombiequit (Changing host)
17:20:24  * defunctzombiejoined
17:20:43  * soldairquit (Ping timeout: 250 seconds)
17:28:24  * keslajoined
17:29:18  * kumavisjoined
17:38:10  * mikealjoined
17:38:28  * mikealquit (Client Quit)
17:48:43  * mirkokieferjoined
17:48:53  * mikolalysenkoquit (Ping timeout: 248 seconds)
17:49:55  * mirkokieferquit (Client Quit)
17:54:24  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
17:54:24  <rowbit>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
17:57:24  * mirkokieferjoined
17:58:38  * mirkokieferquit (Client Quit)
18:07:02  * yorickjoined
18:08:38  * keslaquit (Ping timeout: 240 seconds)
18:11:07  * mirkokieferjoined
18:14:59  * mikolalysenkojoined
18:20:48  * ednapiranhaquit (Remote host closed the connection)
18:23:47  * mikolalysenkoquit (Ping timeout: 260 seconds)
18:27:46  * ednapiranhajoined
18:37:37  * ins0mniajoined
18:39:09  * mikealjoined
18:41:00  * keslajoined
18:42:20  * tilgovijoined
18:43:48  * evboguejoined
18:46:54  * mikolalysenkojoined
18:47:40  * mikealquit (Ping timeout: 246 seconds)
18:49:04  * jaz303quit (Quit: leaving)
18:49:25  * jaz303joined
19:06:30  * kevino80joined
19:10:29  * evboguequit (Ping timeout: 248 seconds)
19:12:42  * mikolalysenkoquit (Ping timeout: 264 seconds)
19:13:15  * mikolalysenkojoined
19:14:27  * keslaquit (Ping timeout: 276 seconds)
19:14:39  * mikealjoined
19:25:20  * evboguejoined
19:28:14  * jxsonjoined
19:50:57  * coderzachjoined
19:51:26  * dominictarrjoined
19:58:24  <dominictarr>juliangruber: Raynos crazy idea for mux-demux2
20:02:06  * defunctzombiechanged nick to defunctzombie_zz
20:05:45  * tmcwquit (Remote host closed the connection)
20:09:52  * mikealquit (Quit: Leaving.)
20:15:27  * tmcwjoined
20:17:25  <ins0mnia>dominictarr: I would love to contribute to that I was planning to spend some time on mdm next week
20:18:00  <dominictarr>aha, well this idea is really crazy!
20:18:19  <ins0mnia>I'm excited to hear about it!!
20:18:40  <ins0mnia>by the way you were right about binary and XHR
20:19:06  <Raynos>Hello.
20:19:10  <dominictarr>oh, very good
20:19:20  <ins0mnia>msg-stream didn't work in the browser though
20:19:35  <ins0mnia>I'm still obsessed with getting binary transport to work
20:19:38  <ins0mnia>it has to work
20:19:46  <ins0mnia>for principle reasons
20:19:59  <dominictarr>ins0mnia: I think max is using it, but he only cares about chrome
20:20:25  <dominictarr>and websockets
20:20:36  <ins0mnia>yeah
20:20:37  <dominictarr>it only works with websockets?
20:20:47  <ins0mnia>this won't be good enough for mdm (and my use case)
20:20:49  <dominictarr>mbalho: ^ connect?
20:21:03  <dominictarr>(correct, i meant)
20:21:04  <ins0mnia>also IE doesn't have supported for TypeArrays
20:21:06  <ins0mnia>BUT
20:21:21  <ins0mnia>I found a shim for that
20:21:31  <ins0mnia>TypedArrays
20:21:46  <dominictarr>aha, polyfils all the way down
20:21:51  <ins0mnia>yup
20:22:02  <dominictarr>okay - so here is the idea:
20:22:18  <dominictarr>two parts -
20:22:31  <dominictarr>part 1: nested scopes
20:22:44  <dominictarr>all good things have nested scopes
20:23:02  <dominictarr>js functions
20:23:09  <mbalho>dominictarr: whats the question?
20:23:12  <dominictarr>directories (with ../)
20:23:27  <dominictarr>mbalho: you use msgpack in the browser right?
20:23:34  <dominictarr>but only with websockets?
20:23:59  <mbalho>dominictarr: no i couldnt get any of it work in the browser, only that works is require('multilevel'), the base64 one
20:24:07  <mbalho>only one*
20:24:12  <dominictarr>oh
20:24:24  <ins0mnia>mbalho: had the same experience
20:24:50  <dominictarr>mbalho: hmm, msgpack-stream tests pass in the browser...
20:25:33  <dominictarr>which is the thing that doesn't work?
20:25:47  <dominictarr>juliangruber: have you had problems with this^
20:26:21  <mbalho>i think i wrote an integration test... i forget
20:26:41  <ins0mnia>dominictarr: if I remember correct bops fails on the data type
20:26:51  <mbalho>testling isnt enough, you also need an integration test between an actual server and a client
20:27:16  * kevino80quit (Remote host closed the connection)
20:27:17  <dominictarr>I thought testling could do that? substack ?
20:27:26  <mbalho>you can start a websocket server inside testling?
20:27:54  <pkrumins>yes you can do that through testling.server field!
20:28:14  <pkrumins>"testling" : { "server" : "node server.js args", ... }
20:28:19  <mbalho>oh cool
20:28:28  <pkrumins>and then the "node server.js args" gets started through `timeout 300`
20:28:41  <pkrumins>so you've 6 minutes :)
20:29:00  <dominictarr>sweet
20:29:31  <pkrumins>you can just listen on some high port which will probably not be in use
20:29:46  <pkrumins>and then connect back to git.testling.com:port
20:30:09  <pkrumins>or maybe it was ci.testling.com:port to avoid cross domain security issues
20:30:35  <dominictarr>pkrumins: should pass in PORT env var
20:30:55  * kevino80joined
20:30:57  <pkrumins>good idea!
20:31:07  <dominictarr>and then put ?port=PORT in the browser too
20:31:32  <pkrumins>oh cool, then you don't need to hard code the port in your tests at all
20:31:37  <pkrumins>as it's all dynamically allocated
20:31:39  <pkrumins>sweet we can do that
20:31:55  <dominictarr>\o/
20:32:14  <pkrumins> |
20:32:18  <pkrumins>bah.
20:32:49  <dominictarr>ins0mnia: mbalho okay, looks like we just need a test for this then.
20:34:09  <mbalho>ahh yea i have one almost done
20:35:22  <dominictarr>ins0mnia: Raynos so, mux-demux2
20:35:32  <dominictarr>& nested scopes
20:35:55  <dominictarr>so, also, level-sublevel is just like a nested scope thing, but for your leveldb.
20:36:58  <dominictarr>the way node_modules works, too, also nested scopes.
20:36:58  <Raynos>dominictarr, pkrumins: if you pass in PORT as env var you need to expose it as global in browser as well
20:37:09  <Raynos>dominictarr: actually your querystring is a better idea
20:37:26  <mbalho>https://github.com/maxogden/level-replication-tests need to tape-ify it and get it using the testling.server field
20:37:38  <Raynos>dominictarr: yes nested scopes for mdm is good I started using nested mdms and it got messy
20:38:14  <dominictarr>Raynos: yeah, and sometimes you put a mux-demux inside a mux-demux
20:38:29  <pkrumins>Raynos: it's querystring + PORT as env
20:38:34  <dominictarr>or there is one thing that needs multiple streams to do it's thing
20:38:51  <pkrumins>Raynos: PORT as env used on the server side to run server.js, and querystring used in the browsers for the connection
20:39:09  <ins0mnia>dominictarr: yeah that makes perfect sense!
20:39:21  <Raynos>pkrumins: this is a great idea, the hard coupled port made it iffy for me to use it
20:39:24  <dominictarr>so, here is part two
20:39:55  <dominictarr>The Actor Pattern (+extended with nested scopes)
20:40:06  <jcrugzz>ins0mnia: does binarypack not work for your usecase?
20:40:08  * mikealjoined
20:40:28  <dominictarr>now, you don't really need to implement the actor pattern - you are already using it
20:40:47  <dominictarr>it's just a formal model for a distributed system
20:41:23  <ins0mnia>jcrugzz: never heard of it will look it up on npm (my use case is basically streaming image binary from S3, pipe into an mdm stream all the way to the browser)
20:41:32  <dominictarr>but, it can be beneficial bringing constructions inline with the "true" formal models.
20:41:50  <Raynos>dominictarr: you should show me how it is the actor pattern
20:41:57  <jcrugzz>ins0mnia: https://github.com/binaryjs/js-binarypack and https://github.com/binaryjs/node-binarypack
20:42:31  <dominictarr>Raynos: well, actor pattern is just compute nodes that send messages to each other
20:42:37  <jcrugzz>ive been trying to implement a binary parser in primus with itbut ran into some hiccups with how primus generates the client library
20:42:44  <dominictarr>so, a stream is just a bunch of messages
20:42:58  <jcrugzz>but it should work since its what binaryjs used.
20:43:58  <dominictarr>jcrugzz: sounds like creationix's msgpack fork
20:44:08  <dominictarr>which is also extended to have binary
20:44:41  <dominictarr>Raynos: the thing that is different about the actor model
20:44:48  <dominictarr>is that every node is addressable
20:45:06  * mikealquit (Ping timeout: 264 seconds)
20:45:11  <dominictarr>where as in mux-demux you have a stream, and it's only between two ends
20:45:13  <Raynos>so the actor pattern & model are two different things?
20:45:31  <jcrugzz>dominictarr: yea sounds about right,
20:46:06  <dominictarr>Raynos: taliking about this http://en.wikipedia.org/wiki/Actor_model
20:46:42  <Raynos>That wikipedia page has a limit so :+1:
20:47:17  <dominictarr>Raynos: a limit?
20:47:42  <jcrugzz>dominictarr: hmm this may work better, thanks for pointing that out
20:47:54  <dominictarr>as far as I can tell, actor pattern == actor model
20:47:55  <Raynos>http://en.wikipedia.org/wiki/Actor_model#Computational_Representation_Theorem
20:48:01  <Raynos>dominictarr: a mathematical limit
20:48:58  <dominictarr>Raynos: oh right. yeah the actor model was invented to make theroems about distributed systems etc
20:49:59  <dominictarr>Raynos: so in the actor model, each node (Actor) has an address
20:50:04  <dominictarr>that you send messages to
20:50:12  <dominictarr>just like ip:port
20:50:21  <Raynos>I see
20:50:28  <dominictarr>in practice, we use tcp mostly
20:50:33  <dominictarr>and streams
20:50:43  <dominictarr>but underneath it's still messages
20:51:26  <dominictarr>anyway - when people actually implement the actor model - they make it alot more fine grained than ip:port
20:51:41  <dominictarr>there may be thousands of actors on a machine
20:51:48  <dominictarr>like objects in OO
20:51:49  <Raynos>jden: ping
20:52:08  <Raynos>dominictarr: that makes sense
20:52:11  <dominictarr>so -- they invent a routing system
20:52:25  <dominictarr>so that each actor gets a name
20:52:29  <dominictarr>might be something like
20:52:36  <dominictarr>ip:port/a/b/c
20:52:46  <Raynos>ip:port/java/namespace/class/instanceId
20:52:47  <Raynos>:D
20:52:53  <dominictarr>yeah
20:53:18  <dominictarr>so, this is kinda like the fs!
20:53:25  <dominictarr>we could use nested scopes here!
20:54:02  <dominictarr>or, some kind of "router"
20:54:41  <dominictarr>maybe, if the router doesn't know an address, it falls back to it's router
20:55:00  <dominictarr>like a prototype chain - which amount to the same thing
20:55:58  <dominictarr>so, mux-demux with routers at each end
20:56:06  <dominictarr>actually mux-demux could be hidden
20:56:16  * defunctzombie_zzchanged nick to defunctzombie
20:56:29  <dominictarr>you'd just have routers and create a stream to some other node via a router
20:57:10  <chapel>creationix: you see this? https://github.com/ryanackley/git-html5.js
20:57:13  <dominictarr>and it would do it in whatever way made the most sense to connect between those nodes
21:00:20  <dominictarr>Raynos: you could make the "actors" as fine grained as Ui elements, if you wanted
21:01:32  * mikolalysenkoquit (Ping timeout: 260 seconds)
21:02:25  * mirkokieferquit (Quit: mirkokiefer)
21:02:42  <Raynos>interesting
21:03:59  <pkrumins>oh guys, i don't know if substack told you this but he went on a hike and will be back on wednesday
21:04:14  * evboguequit (Ping timeout: 240 seconds)
21:06:36  <ins0mnia>dominictarr: if each end acted as both client and server then we could build crazy routes in a bigger system...
21:07:01  <dominictarr>ins0mnia: that is possible
21:07:12  <ins0mnia>dominictarr: like a telephone network
21:07:20  <dominictarr>BUT BETTER!
21:07:20  <LOUDBOT>PERHAPS I'M JUST NOT THINKING FOURTH-DIMENSIONALLY
21:07:29  * coderzachquit (Quit: coderzach)
21:07:34  <ins0mnia>dominictarr: this is really awesome
21:07:50  <ins0mnia>dominictarr: could also have regex based-routes
21:08:04  <ins0mnia>dominictarr: all matches X go there
21:08:11  <ins0mnia>dominictarr: and all matches Y go there
21:08:13  <ins0mnia>:)
21:08:20  <dominictarr>if the router is just a service then you could have anything
21:08:37  <dominictarr>you just ask your hey: where should this go?
21:08:48  * kevino80quit (Remote host closed the connection)
21:08:51  <dominictarr>you could have dns style look up routers
21:09:13  <dominictarr>and proxy style rounters that you pass the message to, and they pass it on
21:09:17  <creationix>chapel, yep
21:09:25  <creationix>chapel, you're like the 30th person to link me to it
21:09:33  <chapel>creationix: lol figured, sorry :P
21:09:49  <chapel>creationix: you're a popular guy
21:09:52  <creationix>I talked to him the day before he announced it
21:10:03  <creationix>pretty impressive, but cuts a lot or corners
21:10:19  <chapel>yeah, seems very focused on his specific use case
21:10:21  <creationix>his goal was to get a working prototype as fast as possible and it still took two years of his free time
21:10:27  <chapel>not a complete git client like you're going for
21:10:40  <creationix>the biggest difference is I support a much wider range of platforms
21:10:55  <creationix>I support around 10 different js platforms
21:11:01  <chapel>nice
21:11:06  <creationix>via pluggable backend system
21:11:18  <creationix>right now I'm working on chromeos and firfoxos
21:11:30  <creationix>they both have tcp primitives and run offlile
21:11:37  <creationix>*offline
21:14:23  <ins0mnia>dominictarr: yeah!
21:20:54  * ednapiranhaquit (Remote host closed the connection)
21:27:40  <mbalho>level-upsert does this exist?
21:28:44  <dominictarr>mbalho: level-update?
21:29:33  <mbalho>ahh yes
21:29:55  <mbalho>well what i really want is
21:30:18  <mbalho>db.createIfNotExistsOtherwiseMerge('foo', {'bar': 'baz'})
21:30:21  <mbalho>e.g. json specific
21:30:35  <mbalho>where merge means _.extend(old, new)
21:31:54  * st_lukejoined
21:34:34  <dominictarr>right - or you provide a merge function
21:35:02  <mbalho>yea but default merge function should be json specific
21:35:13  <mbalho>e.g. thats what mongo upsert does, also theres a similar thing in lots of couch libraries
21:36:38  <dominictarr>sure
21:39:24  <mbalho>so i dont see that module yet, but i was asking in case it might be under a different name
21:39:56  <mbalho>it could just decoreate a db instance with .upsert in the same way sublevel does
21:40:11  <mbalho>(though without changing stream semantics :P)
21:40:18  <mbalho>decorate*
21:40:41  * mikealjoined
21:42:34  <mbalho>dominictarr: so should my replicate test be using level-replicate/msgpack ?
21:42:49  <mbalho>dominictarr: e.g. is that one expected to work or just multilevel/msgpack
21:43:34  <dominictarr>well, those should all work
21:43:36  <mbalho>k
21:43:51  <mbalho>im not just up to speed on the state of all the implementations and expecatations
21:43:59  <dominictarr>I suspect the problem here is msgpack it self though
21:45:54  * mikealquit (Ping timeout: 276 seconds)
21:47:46  * nicholasfquit (Remote host closed the connection)
21:48:20  * nicholasfjoined
21:50:39  * jxsonquit (Remote host closed the connection)
21:54:18  <mbalho>dominictarr: can you tell me what i'm doing wrong here? https://github.com/maxogden/level-replication-tests
21:54:24  <mbalho>dominictarr: just run npm install && npm start
21:54:30  <mbalho>dominictarr: i get a feedback loop
21:54:33  * misterinterruptjoined
21:54:45  * misterinterruptquit (Remote host closed the connection)
21:57:38  * mikolalysenkojoined
21:57:53  <dominictarr>mbalho: hmm
22:00:27  * thlorenzquit (Remote host closed the connection)
22:01:49  * thlorenzjoined
22:01:50  * nicholasfquit (Read error: Connection reset by peer)
22:02:13  * mikolalysenkoquit (Ping timeout: 248 seconds)
22:02:23  * nicholasfjoined
22:04:03  * whit537quit (Read error: Connection reset by peer)
22:04:17  * whit537joined
22:04:21  * farnsworthquit (Ping timeout: 248 seconds)
22:04:52  * yorick_joined
22:06:22  * coderzachjoined
22:06:33  * AvianFlu_joined
22:06:55  * farnsworthjoined
22:07:14  * AvianFlu_quit (Remote host closed the connection)
22:08:27  * yorickquit (Ping timeout: 256 seconds)
22:09:40  <mbalho>pkrumins: what is the host i can use to test testling test servers?
22:10:42  * AvianFluquit (Ping timeout: 276 seconds)
22:11:29  <mbalho>oh its just ci.testling.com
22:11:35  <dominictarr>mbalho: that is an encoding problem
22:15:32  <dominictarr>hmm, or is it?
22:16:11  <pkrumins>mbalho: yes!
22:16:45  <dominictarr>mbalho: pkrumins you should just be able to do window.location.hostn
22:17:02  <dominictarr>window.location.hostname
22:17:54  <mbalho>https://github.com/substack/testling-server-example/blob/master/test/xhr.js
22:18:54  * mikealjoined
22:20:58  * jxsonjoined
22:23:14  <st_luke>mikeal: really only $30 for uber to oakland?
22:23:33  <mikeal>UberX prices in SF are less than a cab
22:23:46  <mikeal>it's usually under 30 for me to get home
22:24:07  <st_luke>gonna start doing that. i hate having to take public transportation after 9pm
22:24:47  * dominictarrquit (Quit: dominictarr)
22:26:03  <st_luke>http://i.imgur.com/7Na4XmH.gif
22:26:41  <mikeal>where are you livin?
22:26:47  <st_luke>hackistan
22:26:52  * jxsonquit (Ping timeout: 264 seconds)
22:26:55  <mikeal>might be like 35 to get there
22:26:59  <mikeal>that's a bit further out
22:27:25  <st_luke>thats fine, its not like $200
22:27:38  <st_luke>I remember someone saying it was like that much to get to the east bay if you miss the trains
22:27:50  <mikeal>that's bullshit
22:27:56  <st_luke>back in nyc when it got late i would take a cab like 4 nights a week out of laziness
22:27:56  <mikeal>a cab is like 40-50
22:28:01  <mikeal>a fuckin black car is only 80
22:28:07  <st_luke>oh thats fine
22:28:55  <st_luke>its the worst when someone walks by and you're sitting in reception laughing at goat videos
22:29:01  <st_luke>really makes it look like you're not getting much work done
22:30:16  <mikeal>that's one of those things that looks exactly like what it is :)
22:30:37  * stagas_joined
22:31:22  <pkrumins>i paid $100 from SFO to mountain view
22:33:04  * stagasquit (Ping timeout: 246 seconds)
22:33:13  * stagas_changed nick to stagas
22:33:49  <mbalho>whoa there kanye
22:36:50  <st_luke>that's a good goat gif https://i.chzbgr.com/maxW500/5467208704/hF5B014C9/a.gif
22:39:05  * st_lukequit (Read error: Connection reset by peer)
22:39:15  * st_lukejoined
22:48:02  * mk30_joined
22:48:41  * mk30_quit (Client Quit)
22:51:00  * mk30_joined
22:54:08  * evboguejoined
22:58:00  * mikolalysenkojoined
22:59:30  <mbalho>chrisdickinson: bops will only work with Uint8Array?
22:59:51  * jxsonjoined
23:00:58  <mbalho>chrisdickinson: cause i ran into an error where i tried to put a Int8Array into levelup in the browser and it failed this check https://github.com/rvagg/node-levelup/blob/master/lib/util.js?source=c#L37
23:01:18  <mbalho>chrisdickinson: but im wondering if i should expect to be able to put typed arrays that arent Uint8Arrays into it
23:02:51  * mikolalysenkoquit (Ping timeout: 256 seconds)
23:05:54  <chrisdickinson>mbalho: it expects to be in terms of uint8arrays yes
23:06:05  <chrisdickinson>it provides bops.readInt8(buf, at)
23:06:46  <chrisdickinson>the idea is that bops takes the place of buffer (or `unsigned char*`)
23:07:16  <mbalho>chrisdickinson: i think this means that you cant store non Uint8Array typed arrays in levelup, right?
23:07:48  * jergasonquit (Remote host closed the connection)
23:08:12  <chrisdickinson>mbalho: not directly -- but you can re-wrap the internal arraybuffer
23:08:20  <mbalho>ahh god point
23:09:57  * jibayquit (Quit: Leaving)
23:10:09  * mikolalysenkojoined
23:12:11  <st_luke>mikeal: as a CTO, how do you feel about the approach of "when something gets deployed to production and there is a bug in a feature, the responsibility of taking ownership of the bug goes to the person who wrote the feature"
23:12:20  * calvinfoquit (Quit: Leaving.)
23:12:40  <mikeal>the responsibility is on whoever is available right at this moment to fix it
23:13:26  <st_luke>mikeal: what determines availability?
23:13:37  <mikeal>how important is this bug?
23:13:43  * AvianFlujoined
23:14:08  <st_luke>mikeal: important enough to roll back production to an earlier release
23:14:30  <st_luke>but lets say the person who wrote the bug is available, just working on a different feature at the time
23:14:31  <mikeal>yeah, whoever knows that the most stops whatever they are doing to fix that bug
23:14:36  * calvinfojoined
23:14:48  <mikeal>if the person who wrote it still knows it better than everyone else
23:15:11  * maksimlinjoined
23:15:20  <mikeal>all that matters is that it is fixed as fast as possible with the least impact to the product and org as a whole
23:15:33  * timoxleyjoined
23:16:00  <mikeal>that *probably* means the person who wrote it needs to drop what they are doing and fix it, but that isn't always the case, sometimes a new person has been in that code and can fix it faster now
23:17:28  <st_luke>mikeal: yeah, but in cases where no one else has the context to fix it, seems dumb to prioritize the person who wrote it working on something else
23:17:55  <mikeal>yeah, that seems weird
23:18:03  <mikeal>maybe this person is hard to direct
23:23:01  * coderzachquit (Quit: coderzach)
23:23:34  * evboguequit (Quit: leaving)
23:26:05  * mikolalysenkoquit (Ping timeout: 256 seconds)
23:30:25  * kumavisquit (Quit: kumavis)
23:32:02  * kumavisjoined
23:32:38  * ins0mniaquit (Read error: Operation timed out)
23:33:25  * tmcwquit (Remote host closed the connection)
23:40:51  * yorick_changed nick to yorick
23:47:30  * jdenquit (Ping timeout: 245 seconds)
23:49:07  * jdenjoined
23:49:33  * jdenchanged nick to Guest91167