00:02:30  * st_lukequit (Remote host closed the connection)
00:12:58  * defunctzombie_joined
00:13:35  * defunctzombiequit
00:13:35  * defunctzombie_changed nick to defunctzombie
00:16:17  * ralphtheninjaquit (Read error: Operation timed out)
00:19:01  * ralphtheninjajoined
00:19:43  <substack>mbalho: oh sweet, webappery!
00:19:46  <substack>for gather.at
00:23:12  * yorickquit (Remote host closed the connection)
00:23:13  <rowbit>Hourly usage stats: [developer: 2, free: 11]
00:23:16  * defunctzombiechanged nick to defunctzombie_id
00:23:25  * defunctzombie_idchanged nick to defunctzombie
00:24:45  * defunctzombiechanged nick to defunctzombie_zz
00:28:16  * defunctzombie_zzchanged nick to defunctzombie
00:32:30  <CoverSlide>mbalho: did you go full native for iphone/ios or did you use some html framework?
00:33:13  <CoverSlide>i mean android/ios
00:36:57  * defunctzombiequit (Changing host)
00:36:57  * defunctzombiejoined
00:38:05  * defunctzombiechanged nick to defunctzombie_zz
00:39:59  * defunctzombie_zzchanged nick to defunctzombie
00:40:33  * defunctzombiechanged nick to defunctzombie_zz
00:57:43  * chapelquit (Ping timeout: 246 seconds)
00:58:25  * sorensenquit (Ping timeout: 246 seconds)
01:04:55  * jibayquit (Quit: Leaving)
01:06:14  * _sorensenjoined
01:09:11  * sorensenjoined
01:10:33  * mikealquit (Quit: Leaving.)
01:10:43  * defunctzombie_zzchanged nick to defunctzombie
01:10:52  * mikealjoined
01:12:41  * chapeljoined
01:14:10  * jden|zzzchanged nick to jden
01:23:13  <rowbit>Hourly usage stats: [developer: 0, free: 18]
01:24:10  * defunctzombiechanged nick to defunctzombie_zz
01:37:44  * shykeschanged nick to zz_shykes
01:39:04  * zz_shykeschanged nick to shykes
02:01:03  * shykeschanged nick to zz_shykes
02:01:41  * defunctzombie_zzchanged nick to defunctzombie
02:10:14  * tilgoviquit (Remote host closed the connection)
02:12:20  * ryan_stevensquit (Quit: Leaving.)
02:23:13  <rowbit>Hourly usage stats: [developer: 1, free: 14]
02:36:20  * saijanai_quit (Quit: saijanai_)
02:42:49  * ryan_stevensjoined
02:50:38  * _sorensenquit (Quit: _sorensen)
02:57:32  * zz_shykeschanged nick to shykes
03:13:11  * ryan_stevensquit (Quit: Leaving.)
03:19:30  * ryan_stevensjoined
03:23:14  <rowbit>Hourly usage stats: [developer: 0, free: 10]
03:56:22  * tphummelquit (Quit: tphummel)
03:59:49  * ryan_stevensquit (Quit: Leaving.)
04:05:01  * ryan_stevensjoined
04:13:46  * ryan_stevensquit (Quit: Leaving.)
04:23:13  <rowbit>Hourly usage stats: [developer: 0, free: 34]
04:37:32  * ryan_stevensjoined
04:39:01  * ryan_stevensquit (Client Quit)
04:58:22  * AvianFluquit (Remote host closed the connection)
05:14:41  * AvianFlujoined
05:16:37  * shykeschanged nick to zz_shykes
05:23:13  <rowbit>Hourly usage stats: [developer: 0, free: 18]
05:35:53  * AvianFluquit (Remote host closed the connection)
05:58:43  * ryan_stevensjoined
06:07:53  * zz_shykeschanged nick to shykes
06:23:13  <rowbit>Hourly usage stats: [developer: 0, free: 10]
06:43:17  * ryan_stevensquit (Quit: Leaving.)
06:44:31  <rvagg>hij1nx: "Oqulr" has to be something to do with vision/eyes... any other clues?
07:00:12  <substack>isaacs: why is the 1..N always towards the bottom in tap tests?
07:00:39  <substack>http://search.cpan.org/~petdance/Test-Harness-2.64/lib/Test/Harness/TAP.pod shows it at the top
07:03:39  <substack>if the plan had to be on the first tick, tap could just buffer writes until after the first tick in order to put the 1..N at the top
07:08:41  <isaacs>substack: you can emit the plan either at the start or at the end.
07:08:52  <isaacs>substack: i typically do it at the end, because i don't know how many tests i will have run until i run them
07:09:15  <substack>it seems like where possible it would be best to put it at the start
07:09:41  <isaacs>substack: disagree. i enjoy having a list of similarly-shaped test cases in an array, and then iterate over it, and then call t.end(). then adding new tests for new bugs is easy.
07:10:08  <isaacs>substack: actually, the whole "plan" thing is kind of weird and stupid, i think
07:10:24  <substack>isaacs: I mean that the library could output the 1..N part first
07:10:28  <substack>if possible
07:10:36  <isaacs>substack: but it's not possible first.
07:10:50  <substack>it would be if writes were buffered and plans came in on the first tick
07:10:51  <isaacs>substack: how do i know how many tests you will run until you run them, if you don't call t.plan() and tell me?
07:11:25  <isaacs>substack: oic, so IF you call t.plan() on first tick, it could put 1..N first?
07:11:28  <substack>yes
07:11:31  * isaacsnever calls t.plan()
07:11:33  <substack>it seems like this is possible
07:11:35  * isaacshates t.plan()
07:11:40  * substacklikes t.plan()
07:11:42  <isaacs>substack: sure, go for it
07:11:53  <substack>ok I will implement this in tape first to test the feasibility
07:11:54  <isaacs>for me, i like just calling t.end() when i'm done
07:12:05  <isaacs>but really, it makes no differences
07:12:06  <substack>it's easier to tap to get away with not doing t.plan()
07:12:16  <substack>since it's node so you can hook into the process exit codes
07:12:23  <substack>but browsers don't have exit codes :(
07:12:37  <isaacs>substack: well, only the global handler can do that,or the test runner
07:12:42  <isaacs>substack: but that's not where plan() goes anyway
07:13:22  <isaacs>substack: consider this: test(function(t){t.ok(true);t.end()}); test(function(t){t.pass('ok');t.end()});
07:13:35  <isaacs>substack: in this case, you have 2 tests in the overall set.
07:13:39  <substack>yep
07:13:43  <isaacs>substack: but you don't know that unti lyou run those functions
07:13:46  <substack>but both on the first tick
07:14:00  <isaacs>substack: if one of them does a setTimeout() though, and didn't set a plan, then you don't know
07:14:05  <substack>yes
07:14:11  <substack>but then the plan would be at the end
07:14:37  <isaacs>substack: so you have to buffer *all* output, and count tests, and check if all tests ended on the first tick, and for what? just so that 1..N is at the start rather than at the end?
07:14:41  <isaacs>seems silly.
07:14:49  <isaacs>substack: you can just call tap.plan(2) if you knwo there will be 2 tests.
07:14:52  <isaacs>and then it'll be at the top
07:14:53  <isaacs>but who cares?
07:14:57  <isaacs>it's the same semantics
07:15:03  <substack>not in browsers
07:15:24  <substack>which could crash in a strange way or get stuck and stop responding and the output could *look* correct but be incorrect
07:16:06  <substack>since you've not got error codes to fall back on for secondary confirmation
07:16:39  <isaacs>if you don't get a 1..N at the end, then it is incorrect
07:16:52  <isaacs>if you get a 1..N and then (count of tests) !== N, then it is incorrect
07:16:55  <substack>ah
07:17:01  <substack>ok that is a bit different then
07:17:03  <isaacs>in the tap output, there MUST be a plan
07:17:13  <isaacs>but you might not *know* the plan ahead of time
07:17:14  <substack>do all tap parsers work that way?
07:17:20  <isaacs>correct ones do :)
07:17:24  <substack>if so then nevermind!
07:17:26  <substack>this is good
07:18:07  <isaacs>:D
07:18:28  <mbalho>haha
07:18:42  <substack>tap is pretty great
07:18:52  <fotoverite>tape is also pretty great
07:18:57  <substack>also I learned that perl has been doing TAP output since 1987
07:19:24  <substack>the perl test suite just did it a simple text way and then modules built up around it
07:19:33  <mbalho>guys i have node controlling a robot claw
07:19:37  <substack>\o/
07:19:50  <mbalho>and in the morning im gonna mount it on a helicopter MUAHAHAH
07:19:56  <mbalho>substack: are you gonna be at groupon at 10?
07:20:00  <substack>yep
07:20:04  <mbalho>sweet
07:20:15  <substack>I'll write my demo on-site
07:20:21  <mbalho>lol
07:20:21  <substack>and if it doesn't work I have fallbacks I can show
07:20:33  <substack>my demo sort of needs other helicopters to test
07:21:07  <substack>it's just iwconfig + iwlist parsing mostly
07:22:17  <substack>isaacs: I had another idea prompted by dominictarr asking a question about tape returning the `t` object in test()
07:22:59  <substack>if you don't pass test() a callback it could switch into parallel mode but then reconstructing the output could be tricky
07:23:13  <rowbit>Hourly usage stats: [developer: 0, free: 31]
07:23:14  <substack>unless you've just got a single test object
07:23:43  <substack>var t = test('blarg')
07:25:27  <isaacs>substack: that sucks if you have more than one test in the file
07:25:43  <isaacs>substack: the point of having a callback is that each test() call might not finish synchronously
07:38:46  <mbalho>why are require('repl') commands formatted as (command\n)
07:41:31  <mbalho>like require('repl').start({eval: function(cmd){ console.log(cmd) }}) logs out whatever you type in wrapped in (\n)
07:41:34  <mbalho>its weird
07:42:20  <isaacs>mbalho: {foo: 'bar' }
07:42:30  <isaacs>.. { foo: 'bar' }
07:42:37  <isaacs>>> { foo:'bar }
07:42:37  <purr>isaacs: SyntaxError: Unexpected token ILLEGAL
07:42:41  <isaacs>>> { foo:'bar' }
07:42:41  <purr>isaacs: (string) 'bar'
07:42:47  <isaacs>mbalho: because that's weird^
07:42:57  <isaacs>>> ({ foo:'bar' })
07:42:57  <purr>isaacs: (object) {foo: 'bar'}
07:43:05  <isaacs>mbalho: that's what you expect {foo:'bar'} to be
07:43:15  <isaacs>mbalho: not a code block with a labelled expression statement
07:43:51  <mbalho>wait why does the computer need to print out the object type in parens?
07:44:11  <isaacs>mbalho: MEDITATE ON THIS AND GROK THE TRUE DEPTH OF JAVASCRIPT WTFERY!
07:44:22  <mbalho>lol
07:44:34  <isaacs>mbalho: oh, the object type in parense like (string) 'bar'?
07:44:42  <isaacs>mbalho: i duno, that's just a purr thing i guess. ask elliottcable
07:44:52  <isaacs>mbalho: but the point is, { foo: 'bar' }
07:45:00  <isaacs>is not an object unless you coerce it into an expression
07:45:27  <isaacs>if that's the whole program, then it's a code block, with a line labeled 'foo', which contains a string expression
07:45:42  <mbalho>isaacs: http://bit.ly/Swpbr4
07:46:21  * substackis sleepy at a normal hour despite drinking a lot of coffee
07:46:35  <isaacs>mbalho: it's similar to how 'function(){'nope'}()' is a syntax error
07:46:46  <isaacs>mbalho: but '!function(){return yup}()' is fine
07:46:56  <isaacs>because the ! forces it to be an expression
07:47:06  <isaacs>and you can't call function statements
07:48:37  <fotoverite>I'm trying to follow foo: 'bar'
07:49:35  <isaacs>fotoverite: js has code blocks
07:49:40  <fotoverite>I mean I know it's wrong are you trying to explain why it's wrong more fully.
07:49:40  <isaacs>fotoverite: even though they do nothing
07:49:44  <fotoverite>Ah
07:49:52  <isaacs>so: {} is a code block
07:50:08  <isaacs>{ console.log("ok") } <-- totall valid js program
07:50:26  <isaacs>foo: console.log("ok") <-- labeled line
07:50:35  <isaacs>"bar" <-- valid expression statement
07:50:45  <isaacs>foo: "bar" <-- labeled expression statement
07:50:54  <isaacs>{ foo: "bar" } <-- labeled expression statement in a block
07:51:09  <isaacs>({foo: "bar"}) <-- object literal!!
07:52:41  <fotoverite>why do we like js again. :D
07:54:25  <defunctzombie>because all of those make sense?
07:55:10  <fotoverite>code blocks that do nothing make sense?
07:55:26  <fotoverite>:P
07:55:34  <defunctzombie>sure, why not?
07:55:52  <Raynos>isaacs: is read() -> null, read() -> "" and read() -> empty buffer all the same?
07:56:16  <defunctzombie>if you wrote it differently you might not think anything of it
07:56:56  <defunctzombie>this is why semicolons help clear up intent :/
07:58:56  * defunctzombiechanged nick to defunctzombie_zz
08:02:28  <fotoverite>Agreed
08:02:54  <isaacs>defunctzombie_zz: stockholm syndrome
08:03:11  <isaacs>Raynos: read() should not return empty non-null values
08:03:26  <Raynos>docs says its allowed to return empty buffer
08:03:38  <Raynos>and empty buffer and empty string are the same based off streams setEncoding
08:05:01  <fotoverite>semicolons are not hurting me!
08:05:14  <fotoverite>We have a very healthy relationship. :P
08:05:50  <isaacs>Raynos: yeah, that's fine
08:05:54  <isaacs>Raynos: but why do that?
08:06:19  * isaacszzzZZzzz
08:06:37  <Raynos>isaacs: I wouldn't. I just want to do if (stream.read() === null) { stream.on('readable'. ...) }
08:06:46  <Raynos>I dont want to have to check for null || "" || empty buffer
08:23:13  <rowbit>Hourly usage stats: [developer: 0, free: 35]
08:29:54  <substack>this is a sweet algorithm for drawing graphs http://www.youtube.com/watch?v=Cn3ogzLzxuM
08:48:25  * mikealquit (Quit: Leaving.)
08:56:30  * mikealjoined
08:58:44  * defunctzombie_zzchanged nick to defunctzombie
09:04:57  * shykeschanged nick to zz_shykes
09:08:19  * defunctzombiechanged nick to defunctzombie_zz
09:23:13  <rowbit>Hourly usage stats: [developer: 0, free: 16]
09:45:32  * brianloveswordsquit (*.net *.split)
09:45:32  * LOUDBOTquit (*.net *.split)
09:45:33  * niftylettucequit (*.net *.split)
09:45:33  * owenbquit (*.net *.split)
09:45:33  * tanepiperquit (*.net *.split)
09:45:33  * guybrushquit (*.net *.split)
09:45:33  * munroquit (*.net *.split)
09:47:52  * brianloveswordsjoined
09:47:52  * LOUDBOTjoined
09:47:52  * niftylettucejoined
09:47:52  * owenbjoined
09:47:52  * tanepiperjoined
09:47:52  * guybrushjoined
09:47:52  * munrojoined
09:57:12  * fotoveritequit (Read error: Connection timed out)
09:57:38  * fotoveritejoined
09:59:11  * defunctzombie_zzchanged nick to defunctzombie
10:08:39  * defunctzombiechanged nick to defunctzombie_zz
10:14:50  * zz_shykeschanged nick to shykes
10:19:35  * shykeschanged nick to zz_shykes
10:23:13  <rowbit>Hourly usage stats: [developer: 0, free: 19]
10:41:21  * mikealquit (Read error: Connection reset by peer)
10:41:53  * mikealjoined
10:59:32  * defunctzombie_zzchanged nick to defunctzombie
11:09:08  * defunctzombiechanged nick to defunctzombie_zz
11:23:13  <rowbit>Hourly usage stats: [developer: 0, free: 16]
12:00:00  * defunctzombie_zzchanged nick to defunctzombie
12:09:40  * defunctzombiechanged nick to defunctzombie_zz
12:23:13  <rowbit>Hourly usage stats: [developer: 0, free: 26]
13:00:32  * defunctzombie_zzchanged nick to defunctzombie
13:10:03  * defunctzombiechanged nick to defunctzombie_zz
13:23:13  <rowbit>Hourly usage stats: [developer: 1, free: 6]
13:28:30  * yorickjoined
13:28:30  * yorickquit (Changing host)
13:28:30  * yorickjoined
13:50:19  * yorickquit (Remote host closed the connection)
14:23:15  <rowbit>Hourly usage stats: [developer: 1, free: 14]
15:01:28  * defunctzombie_zzchanged nick to defunctzombie
15:11:09  * defunctzombiechanged nick to defunctzombie_zz
15:16:49  * AvianFlujoined
15:23:13  <rowbit>Hourly usage stats: [developer: 0, free: 33]
15:51:49  * devaholicjoined
16:02:01  * defunctzombie_zzchanged nick to defunctzombie
16:11:29  * Nexxyquit (Ping timeout: 244 seconds)
16:11:33  * LOUDBOTquit (Ping timeout: 246 seconds)
16:11:33  * munroquit (Ping timeout: 246 seconds)
16:11:39  * ikquit (Ping timeout: 255 seconds)
16:11:39  * Nexxyjoined
16:11:42  * defunctzombiechanged nick to defunctzombie_zz
16:11:46  * ikjoined
16:12:31  * munrojoined
16:23:13  <rowbit>Hourly usage stats: [developer: 0, free: 16]
16:32:49  * defunctzombie_zzchanged nick to defunctzombie
16:35:20  <defunctzombie>isaacs: maybe, but also that once you know it, you just deal with it and stop thinking about it cause it doesn't prevent you from getting the job done
16:47:21  * defunctzombiechanged nick to defunctzombie_zz
16:55:49  * _ritchquit (Ping timeout: 248 seconds)
16:58:40  * _ritchjoined
17:10:59  * saijanai_joined
17:23:11  * jesusabdullahquit (Ping timeout: 260 seconds)
17:23:13  <rowbit>Hourly usage stats: [developer: 0, free: 19]
17:28:41  * jesusabdullahjoined
17:32:34  * zz_shykeschanged nick to shykes
17:46:30  * _sorensenjoined
18:10:26  * jez0990joined
18:23:13  <rowbit>Hourly usage stats: [developer: 0, free: 18]
19:14:56  <isaacs>Raynos: New readable-streams updaet pushed
19:23:13  <rowbit>Hourly usage stats: [developer: 0, free: 31]
19:43:31  * lyaunzbequit (Ping timeout: 256 seconds)
19:48:33  * mikealquit (Quit: Leaving.)
19:49:20  * mikealjoined
19:55:21  * defunctzombie_zzchanged nick to defunctzombie
19:57:32  * dominictarrjoined
19:58:19  <dominictarr>jesusabdullah, ping?
20:06:48  * lyaunzbejoined
20:18:30  <isaacs>HTTP.JS IS SO CONFUSING
20:18:38  <isaacs>LOUDBOT: COME AT ME, BRO
20:18:44  <isaacs>wut? where's loudbot?
20:19:33  <isaacs>ik: ^?
20:23:14  <rowbit>Hourly usage stats: [developer: 0, free: 34]
20:51:44  * _sorensenquit (Quit: _sorensen)
20:52:22  <jesusabdullah>dominictarr: pong
20:52:51  <dominictarr>jesusabdullah, I've had a terrible idea for making hoarders more usable
20:55:25  <dominictarr>so, there is a terrible hack to cause node to block while a child process is running
20:56:03  <dominictarr>involving passing a fd to the child process and then doing fs.readSync on it
20:57:34  <dominictarr>... so you could hook into the global thing you setup, but instead of just running require(thing) your could run cmd('npm install '+thing); require(thing)
20:58:50  <jesusabdullah>hahaha
20:58:55  <dominictarr>of course... this isn't really hoarders anymore, it's a whole new bad idea
20:58:57  <jesusabdullah>that's an interesting hack for sure
20:59:04  <jesusabdullah>yeah, this sounds like a cli helper tool
20:59:09  <jesusabdullah>or some such
20:59:16  <jesusabdullah>amusing for sure :)
20:59:48  <dominictarr>The thing I like most about hoarders is how it appears on every depends on list
21:02:20  <defunctzombie>isaacs: that statement about http.js an understatement
21:23:14  <rowbit>Daily usage stats: [developer: 8, free: 500]
21:37:01  * AvianFlu_joined
21:37:23  * AvianFluquit (Disconnected by services)
21:37:27  * AvianFlu_changed nick to AvianFlu
21:55:12  * AvianFluquit (Remote host closed the connection)
22:02:57  * shuaibjoined
22:04:10  * lyaunzbequit (Ping timeout: 250 seconds)
22:14:47  * fentjoined
22:22:07  <ik>isaacs: what have you done
22:23:13  <rowbit>Hourly usage stats: [developer: 7, free: 45]
22:24:06  * LOUDBOTjoined
22:33:24  * AvianFlujoined
22:35:01  * lyaunzbejoined
22:54:47  * defunctzombiechanged nick to defunctzombie_zz
22:59:28  * shuaibquit (Quit: Textual IRC Client: http://www.textualapp.com/)
23:05:37  <dominictarr>Raynos, you there?
23:13:19  <dominictarr>Raynos, pull request for you on Raynos/append-only
23:23:14  <rowbit>Hourly usage stats: [developer: 1, free: 12]