00:00:01  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:01:32  * AvianFluquit (Remote host closed the connection)
00:03:07  <defunctzombie>substack: that is the more complex case https://gist.github.com/4339901
00:03:23  <defunctzombie>the simple case is similar to the browserify field and is easier to implement in current browserify
00:03:31  <defunctzombie>substack: shim what? engine.io?
00:03:41  <defunctzombie>assert?
00:08:30  <Raynos>defunctzombie: oh hi
00:08:49  <Raynos>defunctzombie: done parameter is bullshit. Use assert.end()
00:09:15  <defunctzombie>meh, ties assertions with the testing harness/framework meh
00:09:20  <Raynos>substack: I thought browser is the same as browserify
00:09:45  <Raynos>defunctzombie: the test API is bullshit sugar. The real api is a assert that outputs TAP with an end method
00:10:06  <defunctzombie>Raynos: browserify is a subset of the browser field
00:10:11  * huntertrquit (Ping timeout: 260 seconds)
00:10:13  <Raynos>I see
00:10:15  <defunctzombie>in many cases (small modules) replacing main is enough
00:10:25  <defunctzombie>sometimes it is advantageous to do more
00:10:41  <defunctzombie>all these modules replacing main is what we want
00:11:01  <Raynos>defunctzombie: more is out of scope! OUT OF SCOPE
00:11:20  <defunctzombie>Raynos: I don't think it is out of scope
00:11:27  <defunctzombie>read the gist about why the more exists
00:11:36  <defunctzombie>there is a reason and it can be very helpful
00:12:07  <Raynos>defunctzombie: also `var test = function (name, cb) { require("assert-tap").test(name, function (a) { cb(a, a.end) }) }`
00:12:27  <defunctzombie>nice
00:12:53  <Raynos>defunctzombie: In many cases, there is a large amount of code which is applicable to both client and server. If is easier to just replace some files instead of craeting a completely new entry point. To do this, just specify an object versus a single string.
00:12:55  <Raynos>Bullshit
00:13:05  <Raynos>if there is a large amount of code there is a large amount of modules
00:13:11  <Raynos>if you ahve many modules then you have many main's
00:13:13  <Raynos>problem solved
00:13:26  <defunctzombie>well, some people don't always make modules or will make modules
00:13:32  <defunctzombie>one example I had was with engine.io
00:13:37  <defunctzombie>and their flashget stuff or something
00:13:46  <Raynos>engine.io is bullshit
00:13:47  <defunctzombie>it was like one 3 line function that had to be different
00:13:50  <Raynos>they should fix it to be modular
00:14:08  <defunctzombie>a 3 line module for it is useless because it has no other reuse than inside engine.io
00:14:23  <defunctzombie>just because something is a separate module doesn't make it "modular"
00:14:24  <Raynos>no u
00:14:35  <defunctzombie>if it is only relevant to that single use in that single package
00:14:57  <defunctzombie>engine.io has some issues, but overall I like what it does :) and it does it quickly
00:15:01  <defunctzombie>maybe I will modularize it more
00:15:05  <defunctzombie>and remove the flash stuff
00:15:11  <defunctzombie>which no one cares about anymore anyway
00:15:32  <defunctzombie>I prefer engine io to sockjs because I can't fix coffeescript
00:15:43  <defunctzombie>and engine.io has faster bootup
00:17:12  <substack>is there a streaming wrapper for engine.io?
00:17:18  <substack>I like streams
00:17:43  <defunctzombie>substack: want me to make one?
00:17:50  <defunctzombie>it would be quite easy
00:18:07  <substack>do it!
00:18:15  <defunctzombie>ok
00:18:33  <defunctzombie>you just want it to expose the socket io as a stream? or do you want the shoe style api?
00:18:47  <defunctzombie>I can make something that looks like shoe on top of engine.io if you want
00:18:58  <CoverSlide>do it!
00:18:59  <substack>shoe api might be a good starting point but is by no means some sort of platonic ideal or anything
00:19:04  <defunctzombie>k
00:19:27  <defunctzombie>engine.io api is already very thin, just doesn't expose a "node stream"
00:20:49  <CoverSlide>well the main thing is converting message events to data events
00:21:07  <defunctzombie>yep
00:21:09  <defunctzombie>that is basically it
00:23:18  <substack>I'm getting a hankering to hack in browserify today
00:23:23  <defunctzombie>haha
00:23:32  <substack>but first I need to fix the queue bug in browserling
00:23:51  <defunctzombie>did you guys deploy https badges to testling?
00:23:57  <substack>not yet
00:24:00  <defunctzombie>:'(
00:24:32  <substack>timeout retries are working pretty good but there are some lingering issues still
00:24:33  <defunctzombie>I am gonna go eat.. I will need a name for this stream wrapper for engine.io
00:24:34  * ryan_stevenspart
00:25:02  <defunctzombie>and will take suggestions
00:25:08  <substack>wheel is available
00:25:28  <substack>shoe::sockjs : wheel:engine.io
00:25:43  <substack>tire is also available
00:26:14  <CoverSlide>skate
00:26:19  <CoverSlide>oh engine nvm
00:26:32  <CoverSlide>i like tire
00:29:05  <defunctzombie>haha
00:29:38  * defunctzombiechanged nick to defunctzombie_zz
00:33:24  * ins0mniaquit (Ping timeout: 248 seconds)
00:37:36  <mbalho>substack: is it proper behavior for emit('syntaxError') on syntax errors but request.post({url: "http://localhost:8080", body: "var foo = require'util')"}, function(e,r,b) { console.log(b)
00:37:41  <mbalho>substack: AHH HIT PASTE
00:38:03  <mbalho>substack: meant to say but throw moduleError('Cannot find module'); when it cant find a module
00:38:45  <substack>I think that's what it does now yes
00:39:20  <substack>not necessarily ideal
00:39:46  <mbalho>substack: kewl just checking. i can check if the module is installed first with npm
00:47:35  <guybrush>holy cow im addicted http://labs.dinahmoe.com/plink/
00:47:41  <Raynos>substack: https://github.com/substack/node-parents can I make it polymorphic and make it work for DOMElement
00:47:58  <Raynos>parents(elem) -> all its parents in an array. parents(str) -> all the parents of the path in an array
00:48:05  <guybrush>had SUCH a great session with some random guys right now, incredible :D
00:51:00  <guybrush>but now my mouse-hand hurts lol
00:56:11  <substack>Raynos: it's just for paths, not for dom elements
00:56:23  <Raynos>it could be polymorphic!
00:56:27  <substack>handling dom elements should be a separate thing
00:56:37  <Raynos>agreed but the name parents is nice :3
00:56:49  <substack>polymorphic -> it should be conflated with other unnrelated concepts!
01:08:52  <chrisdickinson>Raynos: see npm.im/ancestors
01:09:29  <Raynos>chrisdickinson: why can't I find it when I do `npm search parents` :D
01:09:42  <chrisdickinson>because somehow the name parents was taken D:
01:09:48  <chrisdickinson>i can add it to the tags?
01:09:50  <Raynos>why you no keywords
01:10:01  <chrisdickinson>i did put in "parentNode", to my credit
01:10:07  <Raynos>o lol
01:10:07  <chrisdickinson>also, "parents"
01:10:10  <Raynos>it did show up :D
01:10:15  <Raynos>I just ignored it
01:10:18  <chrisdickinson>D`:
01:10:19  <Raynos>cause its not called parents xd
01:10:32  <Raynos>ok cool
01:11:10  <chrisdickinson>it's got a filter function so you can do the whole parents(el, function(x) { x.matchesSelector('#bloo') }) thing
01:11:29  <chrisdickinson>(or use cssauron-html, `parents(el, lang('#bloo'))`)
01:20:17  <Raynos>Yeah thats bullshit
01:20:19  <Raynos>I dont need that
01:20:36  <Raynos>I use it ( https://gist.github.com/f1eeacdaf1adb4107840 )
01:23:29  <mbalho>isaacs: programatically with npm is there a way to check if a module installed that doesnt throw an error if it isnt? read-installed returns a tree which i can probably traverse but i was hoping there was a simpler way
01:25:41  * st_lukequit (Remote host closed the connection)
01:30:01  * st_lukejoined
01:45:23  * wiwilliaquit (Ping timeout: 260 seconds)
02:07:22  * yorickquit (Read error: Connection reset by peer)
02:09:08  * defunctzombie_zzchanged nick to defunctzombie
02:26:04  <defunctzombie>Raynos: substack: intake, wheel, radiator, sparkplug
02:31:48  <fotoverite>mbalho: you are a mad genius!
02:32:28  <mbalho>fotoverite: im gonna use this to make a voxeljs game editor
02:38:56  * alunnyquit (Ping timeout: 252 seconds)
02:49:12  * huntertrjoined
02:52:07  * ralphtheninjaquit (Ping timeout: 260 seconds)
03:15:13  <chrisdickinson>Raynos: which part is bs?
03:18:15  * tphummelquit (Quit: tphummel)
03:18:31  * defunctzombiechanged nick to defunctzombie_zz
03:46:37  * jibayquit (Quit: Leaving)
04:14:37  * defunctzombie_zzchanged nick to defunctzombie
04:15:28  * defunctzombiechanged nick to defunctzombie_zz
04:27:23  * AvianFlujoined
04:37:18  * mikolalysenkojoined
05:05:20  * mikolalysenkoquit (Ping timeout: 255 seconds)
05:06:24  * dguttmanquit (Quit: dguttman)
05:29:39  * CoverSlidequit (Ping timeout: 240 seconds)
05:31:26  * CoverSlidejoined
05:40:40  * st_lukequit (Remote host closed the connection)
05:46:20  * mikolalysenkojoined
05:52:57  * mikolalysenkoquit (Ping timeout: 252 seconds)
05:56:36  <Raynos>chrisdickinson: filtering parents by QS
06:05:41  <sorensen>this channel just keeps getting bigger and bigger
06:06:01  * mikolalysenkojoined
06:12:48  * mikolalysenkoquit (Ping timeout: 264 seconds)
06:14:01  * mikolalysenkojoined
06:19:54  * mikolalysenkoquit (Ping timeout: 264 seconds)
06:27:15  * rannmannquit (Ping timeout: 260 seconds)
06:33:07  * mikolalysenkojoined
06:34:43  <fotoverite>anyone here worked with css transitions?
06:34:52  <fotoverite>have a very weird error I'm trying to fix in chrome
06:44:24  * mikolalysenkoquit (Ping timeout: 276 seconds)
06:45:32  * mikolalysenkojoined
06:51:11  * mikolalysenkoquit (Ping timeout: 255 seconds)
06:58:32  * mikolalysenkojoined
07:07:44  * mikolalysenkoquit (Ping timeout: 255 seconds)
07:09:16  * mikolalysenkojoined
07:12:52  * shamaquit (Quit: shama)
07:16:16  * mikolalysenkoquit (Ping timeout: 245 seconds)
07:17:55  * mikolalysenkojoined
07:23:36  * mikolalysenkoquit (Ping timeout: 264 seconds)
07:23:47  <juliangruber>dominictarr: multilevel doesn't have events yet, but all the methods
07:26:28  <juliangruber>dominictarr:
07:26:46  * mikealjoined
07:30:57  * mikolalysenkojoined
07:37:19  <juliangruber>dominictarr: https://github.com/juliangruber/multilevel-http
07:41:30  * mikolalysenkoquit (Ping timeout: 264 seconds)
07:41:55  * mikolalysenkojoined
07:54:00  * mikolalysenkoquit (Ping timeout: 244 seconds)
08:16:06  * mikolalysenkojoined
08:25:07  * mikolalysenkoquit (Ping timeout: 248 seconds)
08:26:42  * mikolalysenkojoined
08:33:43  * mikolalysenkoquit (Ping timeout: 260 seconds)
08:35:08  * mikolalysenkojoined
08:40:26  * mikolalysenkoquit (Ping timeout: 245 seconds)
08:47:40  * mikolalysenkojoined
08:58:13  * tilgovijoined
09:06:51  * mikolalysenkoquit (Ping timeout: 244 seconds)
09:14:51  <chrisdickinson>substack: did you see https://github.com/substack/ever/pull/5 ?
09:15:41  * mikolalysenkojoined
09:24:15  * blobaumjoined
09:29:35  * mikolalysenkoquit (Ping timeout: 244 seconds)
09:32:40  * AvianFluquit (Remote host closed the connection)
09:32:56  * bluntworksquit (Quit: bluntworks)
09:33:32  * doolsquit (Read error: Connection reset by peer)
09:33:42  * doolsjoined
09:37:16  * mikolalysenkojoined
09:45:03  * mikolalysenkoquit (Ping timeout: 252 seconds)
09:46:40  * mikolalysenkojoined
09:52:24  * mikolalysenkoquit (Ping timeout: 264 seconds)
10:05:03  * mikolalysenkojoined
10:10:26  * mikolalysenkoquit (Ping timeout: 255 seconds)
10:18:01  * mikolalysenkojoined
10:28:01  * blobaumquit (Ping timeout: 256 seconds)
10:44:14  <rowbit>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
10:44:14  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
10:44:17  * ins0mniajoined
11:01:30  * ins0mniaquit (Ping timeout: 276 seconds)
11:32:19  * mikolalysenkoquit (Ping timeout: 256 seconds)
11:37:36  * mikolalysenkojoined
11:52:25  * yorickjoined
11:52:25  * yorickquit (Changing host)
11:52:26  * yorickjoined
11:52:32  <elliottcable>substack, pkrumins ⑊ Er. Trying to use Testling-CI for the first time now, after I talked to you guys about it a couple weeks ago. However, I'm having no luck getting my simple example-code Mocha tests to run/pass.
11:52:36  <elliottcable>http://ci.testling.com/elliottcable/ConformingLikeALittleBitch
11:53:10  <elliottcable>Fails in every single browser, no useful output, saying there's zero tests and zero passing. Clicking “debug” simply shows me a white page in the browser in question.
11:53:57  <elliottcable>here's the test-file in question:
11:53:57  <elliottcable>https://github.com/elliottcable/ConformingLikeALittleBitch/blob/Master/test/getting_started.test.coffee
11:54:50  <elliottcable>I'm new to approximately ten different tools in play here (trying to learn to use the idiomatic, “traditional” Node software stack, and do it properly), so I'm not sure where the failing in my understanding is cropping up. This is an amalgamation of Mocha, Chai, Testling-CI, npm, and CoffeeScript (none of which I've used before).
11:55:49  * mirkokjoined
11:59:30  * mikolalysenkoquit (Ping timeout: 264 seconds)
12:02:08  * mikolalysenkojoined
12:09:57  * saijanai__joined
12:12:35  * saijanai_quit (Ping timeout: 252 seconds)
12:12:35  * saijanai__changed nick to saijanai_
12:20:27  * ralphtheninjajoined
12:24:39  * mikolalysenkoquit (Ping timeout: 240 seconds)
12:26:17  * mikolalysenkojoined
12:52:39  * mikolalysenkoquit (Ping timeout: 276 seconds)
12:54:00  * mikolalysenkojoined
12:54:08  * st_lukejoined
12:59:36  * ins0mniajoined
13:00:27  * evboguejoined
13:00:42  * mikolalysenkoquit (Ping timeout: 264 seconds)
13:08:08  * mikolalysenkojoined
13:25:43  * bluntworksjoined
13:26:00  * mikolalysenkoquit (Ping timeout: 264 seconds)
13:33:26  * mikolalysenkojoined
13:52:25  * rook2paw1joined
13:53:13  * sveisvei_joined
13:54:45  * rook2pawnquit (Ping timeout: 240 seconds)
13:54:45  * sveisveiquit (Ping timeout: 240 seconds)
13:55:04  * sveisvei_changed nick to sveisvei
14:03:09  * tilgoviquit (Remote host closed the connection)
14:09:34  * niixjoined
14:10:01  * mikolalysenkoquit (Ping timeout: 245 seconds)
14:11:33  * mikolalysenkojoined
14:17:06  * mikolalysenkoquit (Ping timeout: 245 seconds)
14:23:45  * mikolalysenkojoined
14:39:55  * mikolalysenkoquit (Ping timeout: 246 seconds)
14:40:47  * jdiezquit (Read error: Operation timed out)
14:41:53  * jdiezjoined
14:45:14  * mikolalysenkojoined
14:47:43  * yorickquit (Remote host closed the connection)
14:53:30  * mikolalysenkoquit (Ping timeout: 264 seconds)
14:54:37  * mikolalysenkojoined
15:05:08  * dguttmanjoined
15:06:25  * dguttmanquit (Client Quit)
15:14:00  * mikolalysenkoquit (Ping timeout: 276 seconds)
15:15:17  * mikolalysenkojoined
15:28:15  * mikolalysenkoquit (Ping timeout: 252 seconds)
15:32:56  * rook2paw1quit (Ping timeout: 245 seconds)
15:35:07  * rook2pawnjoined
15:37:44  * dguttmanjoined
15:42:01  <isaacs>mbalho: hm. not sure.
15:42:08  * yorickjoined
15:42:09  * yorickquit (Changing host)
15:42:09  * yorickjoined
15:47:02  * defunctzombie_zzchanged nick to defunctzombie
15:49:12  * rannmannjoined
15:50:21  * dguttmanquit (Quit: dguttman)
15:50:55  * dguttmanjoined
15:53:26  * huntertrquit (Quit: huntertr)
15:59:32  * mirkokquit (Quit: mirkok)
15:59:43  * evboguequit (Ping timeout: 246 seconds)
16:16:42  * evboguejoined
16:18:37  * evboguequit (Read error: No route to host)
16:23:21  <defunctzombie>isaacs: do I need to file an issue about that npm error for shorthand git repos and not existing in npm?
16:26:08  * defunctzombiechanged nick to defunctzombie_zz
16:39:49  * AvianFlujoined
16:52:59  <isaacs>defunctzombie_zz: i think there's on ealready
16:56:31  * AvianFlu_joined
16:57:16  * AvianFluquit (Disconnected by services)
16:57:18  * AvianFlu_changed nick to AvianFlu
17:10:52  <fotoverite>So who's the first to tear this MF down I wonder
17:10:53  <fotoverite>http://engineering.twitter.com/2013/01/introducing-flight-web-application.html?utm_source=dlvr.it&utm_medium=twitter
17:11:03  * dguttmanquit (Quit: dguttman)
17:14:29  <fotoverite>And AvianFlu is a winner
17:14:38  <fotoverite>also you are a bird or a bird disease
17:14:49  <fotoverite>are you an avian who has the flue or the disease itself?
17:14:56  * jibayjoined
17:15:12  <AvianFlu>the disease
17:15:42  <fotoverite>*is scared of loudbot sometimes
17:16:34  <jesusabdullah>nice
17:16:42  <jesusabdullah>ugh can't concentrate tonight
17:17:53  <fotoverite>Just push through at least the internet has lost itself yet
17:25:24  <jesusabdullah>something like that XD
17:25:48  <ins0mnia>substack: How about adding a status field (registered/freed) to the underlying CRDT document in Seaport?
17:29:12  <jesusabdullah>lulz, yc startup offers free beer and fixies to new hires
17:29:13  <jesusabdullah>>_<
17:29:29  <fotoverite>Do they offer them to crush some code?
17:29:35  * mikealquit (Quit: Leaving.)
17:30:26  <jesusabdullah>http://jobs.amicushq.com/ judge for yourself hombre
17:30:57  <jesusabdullah>tbh I'd rather they literally gave me the cow
17:31:08  <jesusabdullah>as much of a white elephant as that is
17:33:13  <jesusabdullah>fotoverite: They *do* use ruby...
17:33:25  <fotoverite>Kiss of death
17:34:52  <fotoverite>Also My god what are the hours for the perks
17:34:57  <fotoverite>do you leave the office?
17:35:25  <jesusabdullah>no idea
17:39:03  <jesusabdullah>http://news.ycombinator.com/item?id=5145294 totally just discovered nodejs brah
17:41:11  <fotoverite>+ And for lulz: A Minecraft mod/voxel.js project for devirtualizing virtualized servers. Basically a minecraft mod that allows you to control AWS instances by putting down/picking up blocks :-)
17:41:25  <fotoverite>That might be the dumbest thing ever
17:41:39  <fotoverite>we all know it should be heroku.
17:43:33  * ins0mniaquit (Ping timeout: 252 seconds)
17:45:58  * shamajoined
17:46:00  <jesusabdullah>I mean
17:46:11  <jesusabdullah>I would aim slightly lower and slightly more fun than that project
17:46:34  <jesusabdullah>that's more of a, "oh hey people like this voxelthing right?"
17:46:35  <fotoverite>yeah
17:46:41  <jesusabdullah>"WE SHOULD NAME DROP THE SHIT OUT OF THAT"
17:46:48  <jesusabdullah>YES
17:46:50  <fotoverite>The whole thing is name droping
17:47:47  <isaacs>Stream Freaks! Assemble!
17:48:01  * dguttmanjoined
17:48:08  <isaacs>Raynos, dominictarr! I summon thee!
17:48:25  <isaacs>so, there are cases where we get _read(n,cb) called.
17:48:31  <isaacs>however, we don't have any data right now.
17:48:33  * mikealjoined
17:48:44  <isaacs>but! we might have data later. so, if you want it later, then ask later.
17:48:46  <isaacs>and it's not EOF
17:49:00  <isaacs>currently, returning an empty buffer or null is interpreted as EOF.
17:59:02  <CoverSlide>I thought return false was the result in that scenario
18:05:36  * wiwilliajoined
18:11:16  <isaacs>CoverSlide: no, the return value of _read is not relevant
18:12:05  * ins0mniajoined
18:12:36  <CoverSlide>right, of _read
18:19:30  * AvianFluquit (Remote host closed the connection)
18:26:48  * tphummeljoined
18:29:54  * alunnyjoined
18:30:53  * mikealquit (Quit: Leaving.)
18:31:55  * mikealjoined
18:58:29  <rowbit>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
18:58:29  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
19:12:05  * jlordjoined
19:21:04  * mikealquit (Quit: Leaving.)
19:25:25  <Raynos>isaacs: oh hi
19:26:02  <Raynos>isaacs: Can't you just have _read logic be like "no data now. Ok ill wait and call you later"
19:26:14  <Raynos>isaacs: The way I see it your source is either pull or push
19:26:22  <Raynos>If pull then you can pull in _read and cb when you have it
19:26:23  <isaacs>Raynos: well, in this case, the src is pull
19:26:28  <Raynos>if push then _read = noop
19:26:37  <isaacs>if push then _read is resume
19:26:39  <Raynos>and you just stream.push(whatever) when you have it
19:26:44  <Raynos>BLARGH
19:26:47  <Raynos>I forgot about that
19:26:52  <isaacs>Raynos: you stream.push(whatever) || src.pause
19:27:00  <isaacs>Raynos: whatever, not the issue right now
19:27:05  <Raynos>isaacs: then _read(n, cb) -> never call cb
19:27:06  <isaacs>Raynos: i'm talking about a pull stream source.
19:27:16  <isaacs>Raynos: now state.reading = true
19:27:17  <isaacs>forever.
19:27:20  <Raynos>oh a pull stream source, well just pull in _read
19:27:23  <isaacs>right.
19:27:25  <isaacs>you pull, and get no data.
19:27:28  <isaacs>but, it's not EOF
19:27:31  <isaacs>it's just empty right now
19:27:53  <Raynos>isaacs: you should document what I'm supposed to do with _read in a push stream because I will literally do stream._read = source.resume
19:28:11  <Raynos>isaacs: oh then you pull again
19:28:13  <isaacs>Raynos: it's documented already. look at teh docs on stream.push. there's even examplecode.
19:28:19  <Raynos>I see
19:28:19  <isaacs>Raynos: when do i pull again?
19:28:25  <Raynos>whenever
19:28:33  <isaacs>right. so... when whenever?
19:28:34  <isaacs>10ms?
19:28:35  <Raynos>I actually expect pull sources to return [data, isEoF]
19:28:42  <Raynos>isaacs: upto the source implementation
19:28:48  <Raynos>it's very pull source specific
19:28:48  <isaacs>no pull sources return that
19:29:05  <isaacs>you mean cb(er, data, isEOF)?
19:29:14  <Raynos>not quite
19:29:23  <isaacs>why not just use data==null as the eof?
19:29:27  <Raynos>I mean if I'm reading from disk I'm going to get some bytes and maybe an eof
19:29:40  <Raynos>isaacs: i can your source is not a string and null is a valid result
19:29:49  <Raynos>but that's a bullshit edgecase
19:30:17  <Raynos>the point is if your underlying source returns [null, not_empty] then you have some very source specific logic of when to check for data again
19:30:26  <Raynos>I dont know of any sources that would do that
19:30:34  <Raynos>other then long polling a HTTP backend
19:30:55  <isaacs>Raynos: if you're reading from disk, you're going to get some bytes, or eof.
19:31:05  <isaacs>Raynos: if yor'e reading form openssl, you're going to get some bytes, or no bytes, or eof.
19:31:09  <Raynos>and in the long polling case if your connection is terminated with [null, not_empty] after the 30s timeout then you make an immediate long poll request again
19:31:12  * mikealjoined
19:31:12  <isaacs>Raynos: the disk is not the problem.
19:31:37  <isaacs>Raynos: again, different thing entirely.
19:32:08  <Raynos>ok so the question is what do you do when openssl returns no bytes
19:32:18  <Raynos>I would default to "dont call cb, try again later then call cb"
19:32:47  <isaacs>Raynos: now the reading flag stays set, and we think that we're waiting for a cb
19:33:16  <Raynos>isaacs: but you are waiting for the cb
19:33:20  <Raynos>because there is no data yet
19:33:31  <Raynos>as in _read tries again later
19:33:36  <Raynos>not _read gets called again later by Readable
19:33:39  <isaacs>i have no way of knowing when there will be data. someone else will have to tell me when to check again later.
19:33:42  <Raynos>the _read implementation details does the retrying
19:33:53  <isaacs>so, the way that i'm proposing is this:
19:33:56  <Raynos>why should someone else tell you
19:33:58  <isaacs>new Buffer(0) = not eof
19:34:07  <isaacs>Raynos: because there's no point checking for enc bytes if you haven't written any new cleartext yet.
19:34:15  <Raynos>oh
19:34:19  <Raynos>there you go
19:34:22  <Raynos>its a duplex thing
19:34:30  <isaacs>it's a double-duplex!
19:34:30  <Raynos>and theres no point calling _read until someone else calls write
19:34:32  <isaacs>a quadplex!
19:34:42  <Raynos>ok so you have a very specific usecase here
19:34:50  <isaacs>another way to do this is to split it into two transform streams.
19:34:58  <Raynos>isaacs: I would prefer a _read(n, cb, empty) instead of Buffer(0)
19:35:01  <isaacs>so instead of an enc side and a clear side, we have a clear-to-enc side and a enc-to-clear side.
19:35:14  <isaacs>then the "cleartextstream" just proxies its reads and writes.
19:35:20  <isaacs>and we proxy the reads and writes on the other side to an actual socket.
19:36:44  <Raynos>THIS IS MADNESS
19:39:38  * mikealquit (Quit: Leaving.)
19:39:40  <isaacs>nvm, the double transform is not workable in this case.
19:49:14  <Raynos>isaacs: give up on streams and build a complex FSM
19:52:10  * defunctzombie_zzchanged nick to defunctzombie
19:54:38  * AvianFlujoined
19:58:29  <isaacs>hahah
19:58:39  <isaacs>it has to expose teh stream interface for https to use it
19:58:43  <isaacs>this is what tls.connect does
20:03:22  <substack>elliottcable: perhaps try not using quite so many new things at once
20:05:13  * st_lukequit (Remote host closed the connection)
20:07:00  <substack>elliottcable: oh I see you got your tests to run at any rate, hooray!
20:07:38  <pkrumins>elliottcable: nice job!
20:09:03  * blakmatrix1joined
20:09:55  * blakmatrix1part
20:10:07  * mikealjoined
20:19:53  * alunnyquit (Ping timeout: 252 seconds)
20:20:52  * mikeal1joined
20:20:52  * mikealquit (Read error: Connection reset by peer)
20:29:44  * mikeal1quit (Ping timeout: 255 seconds)
20:41:02  * dominictarrjoined
20:43:52  * mikealjoined
20:44:17  <defunctzombie>substack: Raynos: https://github.com/shtylman/node-radiator
20:44:33  <defunctzombie>not sold on the API yet, but otherwise it works for some basic tests
20:44:41  <defunctzombie>need to check some of the stream hookup stuff still
20:44:52  <defunctzombie>it uses the browser field for the radiator package
20:45:34  <defunctzombie>and the engine.io and engine.io-client packages used are bundleable
21:10:49  * alunnyjoined
21:17:08  * jlordquit (Quit: jlord)
21:22:30  * jlordjoined
21:23:44  * dominictarrquit (Quit: dominictarr)
21:33:54  * mikolalysenkojoined
21:36:41  * py1honquit (Ping timeout: 245 seconds)
21:40:36  * CoverSlidequit (Remote host closed the connection)
21:43:39  * py1honjoined
22:14:51  <Raynos>defunctzombie: https://github.com/Raynos/engine.io-stream
22:15:39  <defunctzombie>Raynos: why you no share this earlier?
22:15:53  <Raynos>defunctzombie: why you no npm search engine stream
22:16:15  <Raynos>defunctzombie: your server implementation sucks and assumes one client
22:16:30  <defunctzombie>?
22:16:32  * mirkokjoined
22:16:33  <defunctzombie>one client of what
22:16:44  <Raynos>https://github.com/shtylman/node-radiator/blob/master/index.js#L25
22:16:46  <defunctzombie>Raynos: can this be bundled?
22:16:49  <Raynos>every socket that connects to your server
22:16:50  <Raynos>fails
22:16:56  <Raynos>defunctzombie: it can with browserify
22:16:58  <defunctzombie>Raynos: oops :)
22:17:07  <Raynos>defunctzombie: It can if you support the browserify field in node-script
22:17:21  <Raynos>in fact it doesnt matter
22:17:40  <Raynos>just require("engine.io-stream") on the client and require("engine.io-stream/server") on the server
22:17:48  <defunctzombie>I do, but I don't support (require()); bs
22:17:54  <defunctzombie>k, I will check it out!
22:17:56  <defunctzombie>awesome
22:18:07  <Raynos>defunctzombie: also https://github.com/Raynos/engine.io-client/commit/89201c18ea41cbe974a5d281db487ef9d8ab73b5
22:18:38  <defunctzombie>Raynos: yea, that is bullshit
22:18:46  <defunctzombie>I will fork and use my engine.io-client
22:18:53  <defunctzombie>that doesn't have this issue
22:19:02  <defunctzombie>but cool, thanks for pointing this out to me :)
22:21:33  <defunctzombie>Raynos: I patched engine.io to have normal requires (removing the lib-cov crap they have as well)
22:21:42  <defunctzombie>given that the 'ws' module supports the browser field
22:21:56  <defunctzombie>and I have xmlhttprequest that does too
22:21:57  <Raynos>defunctzombie: does xmlhttprequest support the browser field?
22:22:00  <Raynos>xd
22:22:01  <Raynos>I see
22:22:05  <defunctzombie>yea.. I have been trying
22:22:06  <Raynos>thats a different way to solve the problem
22:22:09  <defunctzombie>but the dude is unresponsive
22:22:09  <Raynos>I think the best way to solve it
22:22:14  <Raynos>is rewrite engine.io
22:22:17  <defunctzombie>haha
22:22:19  <Raynos>to not suck
22:22:21  <Raynos>the many balls
22:22:31  <defunctzombie>my latest patchset for bundling support is very small
22:22:41  <defunctzombie>once modules support browser field actually
22:22:49  <defunctzombie>just mostly updating the package.json to latest versions
22:25:27  <defunctzombie>Raynos: https://github.com/shtylman/engine.io-client/commits/v0.4.1-dz1
22:25:38  <defunctzombie>the only "real" commit is "use bundleable version of xmlhttprequest"
22:25:45  <defunctzombie>all the others should just be there in the first place
22:25:59  <defunctzombie>the require emitter-component is bs and they should just do what that commit does
22:26:02  <defunctzombie>same with all the others
22:26:44  <mbalho>chrisdickinson: i have some general feedback for browservefy -- i would like it more if you said 'browservefy foo.js -o bundle.js'
22:26:59  <chrisdickinson>mbalho: ?
22:27:02  <mbalho>chrisdickinson: where foo.js is your source code and bundle.js is what you put in your html
22:27:06  <defunctzombie>Raynos: if you use a "browser" field supporting browserify on that version it will work
22:27:07  <chrisdickinson>ah yeah
22:27:09  <chrisdickinson>aliases!
22:27:13  <mbalho>chrisdickinson: that works now?
22:27:16  <chrisdickinson>not yet
22:27:20  <chrisdickinson>but i think it's a good idea
22:27:37  <chrisdickinson>i was originally going to do browservefy foo.js:bundle.js
22:27:41  <chrisdickinson>but -o might be nicer
22:27:46  <Raynos>defunctzombie: make substack land the browser field :p
22:27:52  <mbalho>chrisdickinson: same syntax as browserify that way
22:27:55  <defunctzombie>haha
22:27:58  <chrisdickinson>+1
22:28:04  <chrisdickinson>i need to add "help"
22:28:16  <Raynos>defuntzombie: lol require("emitter-component") man those guys are trolls
22:28:17  <chrisdickinson>since it's growing useful options
22:28:25  <mbalho>yea
22:29:32  * huntertrjoined
22:32:25  <defunctzombie>Raynos: yea
22:32:38  <defunctzombie>the bigger problem is they also require("emitter")
22:32:43  <defunctzombie>whic his installed via component
22:32:55  <mbalho>963 byte module https://github.com/maxogden/element-class
22:32:56  <defunctzombie>so it is a total clusterfuck for someone figuring out the code
22:42:44  <Raynos>defunctzombie: I think they should either support component or npm
22:42:45  <Raynos>not both
22:51:55  <defunctzombie>haha
22:52:39  * bluntworksquit (Quit: bluntworks)
22:55:51  <defunctzombie>Raynos: reemit, is that really useful over just passing in a bound function?
22:56:02  <Raynos>its sugar
22:56:15  <Raynos>reemit(source, dest, ["error", "data", "end"])
22:56:30  <Raynos>reemit(source, dest, ["error", "data", "end", "readable", "finish", "drain"])
22:56:33  <defunctzombie>I see
22:56:44  <Raynos>fucking complex event emitters :P
22:56:52  <defunctzombie>hah
22:57:00  <defunctzombie>browserify server is a terrible dev dep
22:57:01  <defunctzombie>jesus
22:57:07  <defunctzombie>makes so much install all the time
22:57:49  <substack>servers?
22:59:02  <defunctzombie>browserify-server module
22:59:15  <defunctzombie>sorry substack, don't be worried :)
23:04:25  <defunctzombie>Raynos: what is the purpose of read-write-stream?
23:04:32  <defunctzombie>why not just handle the events?
23:04:39  <Raynos>defunctzombie: duplex vs transform
23:04:47  <Raynos>read-write-stream is a duplex base class
23:05:24  <defunctzombie>don't we have duplex-stream?
23:05:27  <defunctzombie>or something like that?
23:09:00  * mikealquit (Quit: Leaving.)
23:09:21  <defunctzombie>Raynos: the duplex module, isn't that a duplex stream?
23:10:04  <Raynos>i should call it duplex-stream
23:10:05  <Raynos>defunctzombie: yes it is :D
23:10:05  <Raynos>so is testem
23:10:27  <rvagg>isaacs: does node-tap have a `t.after()` or similar? like a `finally` block or a standard XUnit `tearDown`?
23:10:35  * mirkokquit (Quit: mirkok)
23:11:08  <Raynos>defunctzombie: dominictarr/duplex is a duplex stream (old stream)
23:11:22  <Raynos>defunctzombie: Raynos/duplexer is duplex(write, read) -> duplex stream (old stream)
23:11:29  <defunctzombie>wut
23:11:43  <Raynos>read-write-stream is a streams2 stream
23:11:56  <defunctzombie>your dependencies are fucked I can't use this
23:12:08  <Raynos>rvagg: it's called t. after is just another test case `test("teardown", teardown)`
23:12:15  <defunctzombie>read-write-stream depends on 'readable-stream': 'git://github.com/isaacs/readable-stream.git
23:12:20  <Raynos>defunctzombie: Why?
23:12:22  <defunctzombie>which is a floating thing
23:12:31  <Raynos>floating?
23:12:34  <defunctzombie>yes
23:12:40  <defunctzombie>depending on when I clone your code and npm install
23:12:41  <Raynos>then go fix them to not float
23:12:45  <defunctzombie>I will get different codebases
23:12:48  <Raynos>yes
23:12:52  <Raynos>expected behaviour
23:12:52  <defunctzombie>that is fucked up
23:12:58  <Raynos>no it's not
23:13:01  <defunctzombie>yea, it is
23:13:06  <defunctzombie>you are changing history
23:13:07  <Raynos>It means I always wnat whatever is on master on isaacs/readable-stream
23:13:12  <Raynos>its like `~`
23:13:13  <defunctzombie>then you want a lie
23:13:17  <defunctzombie>and I will never use your modules
23:13:21  <defunctzombie>no it is not like ~
23:13:24  <Raynos>...
23:13:29  <Raynos>Ok
23:13:30  <defunctzombie>because your modules will break my code in a month
23:13:32  <defunctzombie>:D
23:13:33  <Raynos>its like `*` :D
23:13:41  <defunctzombie>yea, and '*' should never exist
23:13:43  <Raynos>except it means every commit ever
23:13:48  <Raynos>its convenient
23:13:51  <defunctzombie>ever ever ever
23:13:51  <Raynos>PR welcome :D
23:15:19  <Raynos>i have a bunch of git dependencies all over the place for my forks
23:17:08  * mikealjoined
23:18:18  <guybrush>defunctzombie: the thing is lots of people put semver dependencies in their package.json, and basically everything becomes floating :p
23:18:52  <guybrush>git-dependencies without #git-ref though are the hardcore-floating things
23:19:57  <Raynos>why
23:19:59  <Raynos>its #master
23:20:07  <Raynos>why is #master better then #some-branch
23:20:10  <guybrush>thats hardcore-floating thing
23:21:02  <guybrush>but i guess since you shouldnt role your deployment with npm anyway its all not so important in the end
23:21:12  <rvagg>Raynos: I need to be able to clean up temporary fixtures that won't make it to clean-up in case of test-failure
23:26:24  * mikolalysenkoquit (Ping timeout: 276 seconds)
23:26:31  <defunctzombie>Raynos: I don't do #somebranch
23:26:34  <defunctzombie>I do #commit_id
23:26:59  <defunctzombie>many people are stupid when it comes to dependencies and just don't care about other developers
23:27:16  <Raynos>rvagg: If one test fails the next one still runs so its all good
23:27:28  <rvagg>Raynos: still misses the point
23:27:34  <substack>if I can get these browserling fixes rolled out today I want to spend some time on browserify patches
23:27:34  <Raynos>test("setup", setup) && test("thing", testThing) && test("teardown", teardown)
23:27:56  <Raynos>defunctzombie: publisher convenience ;)
23:28:07  <rvagg>Raynos: ah, I see what you mean, fair enough
23:28:12  <Raynos>i dont want to update 10 modules when I bump read-stream to 0.7 so ill do 0.6.10
23:28:27  <Raynos>fuck the fact its a new feature in a patch version
23:28:59  <rvagg>isaacs: would you consider a PR to add something like `t.after(function (done) { /* ... */; done() })` to node-tap?
23:30:30  <guybrush>defunctzombie: thats not stupid, i have lots of private stuff going on pointing to floating git-branches
23:32:02  <guybrush>i just want to fix one bug, and update a bunch of projects - without pushing new commits to the apps
23:32:06  <defunctzombie>guybrush: private is fine if you also don't care about your sanity and history
23:32:12  <defunctzombie>but if you publish libs
23:32:15  <guybrush>well
23:32:15  <defunctzombie>or modules for others to use
23:32:18  <defunctzombie>this is terrible
23:32:22  <guybrush>its sane :D
23:32:24  <defunctzombie>you tested with a specific version
23:32:26  <defunctzombie>it is not sane
23:32:32  <guybrush>oh boy it is :p
23:32:34  <defunctzombie>you just don't understand the problem
23:32:46  <chrisdickinson>defunctzombie: there are cases for *
23:32:52  <defunctzombie>there are not
23:33:02  <guybrush>well i really know what you want to say, but you dont know what i am doing here
23:33:04  <defunctzombie>there are NO cases for '*' in dependencies
23:33:24  <defunctzombie>guybrush: ;)
23:33:25  * yorickquit (Remote host closed the connection)
23:33:46  <chrisdickinson>if 3 modules all depend on another module, but don't care what version that module is, your code should peg that module and all of the 3 subordinate modules should use that
23:33:57  <defunctzombie>chrisdickinson: what you said is not true
23:34:00  <chrisdickinson>if they're each pegged, it's harder to get that to work with dedupe
23:34:03  <defunctzombie>you never "don't care what version"
23:34:12  <defunctzombie>even the developer tested against an exact version
23:34:25  <defunctzombie>and if you clone your code 1 year from now
23:34:26  <chrisdickinson>the modules don't care, you should -- the end user pegs the version that works
23:34:29  <defunctzombie>it will be a total shitshow
23:34:35  <defunctzombie>no
23:34:37  <defunctzombie>that is incorrect
23:34:47  <defunctzombie>a module's dependencies are NOT MY PROBLEM
23:34:51  <defunctzombie>they should not leak out to me
23:35:03  <defunctzombie>I expect your code to work by your documented api
23:35:08  <defunctzombie>and not some plugin system
23:35:25  <defunctzombie>if something is broken with your module, I don't care if the issue is your dependency
23:35:30  <defunctzombie>it was your module that broke
23:35:40  <defunctzombie>by using a dependency you accepted its bugs as well
23:35:49  <defunctzombie>that is how an end user views it btw :)
23:37:01  <defunctzombie>I expect to have a consistent copy of code when I clone it in a month to track down an issue
23:37:24  <defunctzombie>if I can't do that, then why the fuck did I version control in the first place?
23:37:48  <chrisdickinson>"i want to use cssauron-html, cssauron-falafel, and cssauron-glsl all at once. i add cssauron to deps at a pegged version, then add the subordinate libraries at pegged versions."
23:37:54  <chrisdickinson>"they all end up using the correct cssauron."
23:38:47  <guybrush>im using npm here for apps, that dont be required by anything else
23:38:49  <guybrush>pushing the dependencies for _endpoint_ apps
23:38:49  <guybrush>is lots of work
23:38:49  <guybrush>sure it can be done and would be more.... strict or what ever
23:38:50  <guybrush>but for me it just worked without writing even a single line :D
23:38:50  <guybrush>im running 20 apps and just update 1 package and run 1 command
23:38:50  <guybrush>so for me thats not stupid, but i see your point anyway
23:38:51  <guybrush>i think i am using npm here for a thing its not built for :) but really it works so well
23:38:52  <guybrush>otherwise i could just drop npm and use git-submodules :p
23:39:59  <defunctzombie>chrisdickinson: then you have peer dependencies
23:40:09  <defunctzombie>and you are assuming they will work across the version you installed
23:40:11  <defunctzombie>which may not be true
23:40:18  <defunctzombie>and if those are plugins then that is different
23:40:28  <chrisdickinson>not plugins, but specializations
23:40:33  <defunctzombie>guybrush: I use npm for apps too
23:40:43  <defunctzombie>chrisdickinson: then those need to pin to the version they were tested for
23:40:44  <chrisdickinson>essentially, cssauron exports a function that returns a function.
23:40:47  <guybrush>but without pointing to branches :D
23:41:02  <guybrush>you see, i have 1 module all my apps run with
23:41:08  <defunctzombie>guybrush: I use npm for my app deps and my module deps and I pin, because I need to be able to come back to things and know what was going on
23:41:13  <chrisdickinson>the specializations export just that returned function.
23:41:14  <guybrush>i update that module and all my apps get updated
23:41:31  <guybrush>withouth pushing 20x versionupdates to every app
23:41:55  <chrisdickinson>i could remove all of their deps on cssauron and do `cssauron = require('cssauron'), lang = cssauron(require('cssauron-html'))`
23:41:59  <guybrush>defunctzombie: but i really get your point
23:42:07  <chrisdickinson>if i removed the direct cssauron call inside the module
23:42:11  <chrisdickinson>and it's an api that will not change.
23:42:19  <defunctzombie>chrisdickinson: sounds like your modules actually do depend on specific versions but you refuse to admit that :)
23:42:22  <guybrush>i do it now how i do it, because i didnt talk to you about this before i implemented my deployment :)
23:42:26  <defunctzombie>and because you are the author of al of them
23:42:29  <defunctzombie>you think it is ok ;)
23:42:31  * mikolalysenkojoined
23:42:37  <chrisdickinson>defunctzombie: they don't depend on a specific version :)
23:42:45  <defunctzombie>chrisdickinson: yes they do
23:42:52  <defunctzombie>if you don't realize that make a breaking api change
23:42:55  <defunctzombie>and see how well it goes ;)
23:43:04  <defunctzombie>guybrush: :)
23:43:05  <chrisdickinson>there won't be one, because cssauron is set in stone :)
23:43:13  <defunctzombie>what you just said is a lie
23:43:16  <defunctzombie>:)
23:43:25  <defunctzombie>to me I have no way to verify this
23:43:28  <defunctzombie>I have to trust you
23:43:32  <defunctzombie>and I don't trust you
23:43:36  <defunctzombie>also
23:43:42  <defunctzombie>a missing semicolon
23:43:45  <defunctzombie>in a patch update
23:43:50  <defunctzombie>can bring down your whole app ;)
23:44:09  <chrisdickinson>that's why when you use cssauron, you should peg your version of cssauron.
23:44:26  <chrisdickinson>any of the specializations will just use that one.
23:45:14  <defunctzombie>chrisdickinson: you are talking about a plugin based system
23:45:15  <chrisdickinson>if there's a better way of doing that -- because yeah, i don't particularly like * deps -- let me know, but ideally updating cssauron shouldn't cause an update of all specializations
23:45:19  <defunctzombie>btw those also depend on specific versions
23:45:34  <defunctzombie>you are doing what jquery plugins all do and pay to god that jquery never breaks
23:45:42  <defunctzombie>because none of them specify what version they support
23:45:49  <defunctzombie>chrisdickinson: peer dependencies
23:45:55  <defunctzombie>is made for plugin type stuff
23:46:07  <chrisdickinson>this is all it does: https://github.com/chrisdickinson/cssauron-html/blob/master/index.js
23:46:23  <defunctzombie>chrisdickinson: if you say it will never change
23:46:25  <chrisdickinson>and i could remove `cssauron`, and just export that object, and have the user explicitly pass it to their cssauron
23:46:38  <defunctzombie>then you should have no problem pinning the dependency
23:46:40  <chrisdickinson>and remove the star dep
23:46:45  <defunctzombie>and if you add the same version at the top level
23:46:48  <defunctzombie>npm is smart
23:46:51  <defunctzombie>and installs it only once
23:46:59  <defunctzombie>if that is really what you wanted
23:48:25  <chrisdickinson>npm wouldn't hoist that, though
23:48:32  <chrisdickinson>afaik
23:48:37  <defunctzombie>yes it will
23:48:42  <defunctzombie>if all the versions match
23:48:46  <defunctzombie>and it exists at top level
23:48:48  <defunctzombie>it will hoist it
23:48:49  <chrisdickinson>really? that seems incorrect unless the user specifically asks for it
23:48:50  <chrisdickinson>ah
23:48:52  <chrisdickinson>yeah
23:48:57  <chrisdickinson>okay if the user specifically pegs it.
23:49:00  <chrisdickinson>at top level.
23:49:09  <chrisdickinson>how's that different, exactly?
23:49:17  <chrisdickinson>aside from making more work for me?
23:49:41  <chrisdickinson>i suppose it could be argued that it handles the "i only need one of these child modules" case.
23:49:46  <defunctzombie>again, you guys are complaining about work because you created 20 modules all with 5 lines and now have no good way to manage consistency for them :)
23:50:27  <defunctzombie>in your case I would look at peer deps as it sounds like you have a plugin type system or some such
23:50:47  <guybrush>haha just recently i noticed the new npm i --save doesnt put semver in package.json anymore :p
23:50:48  <guybrush>just before i wanted to start an issue about it
23:50:52  <defunctzombie>or just use the function you meant to and don't make a superfunction :)
23:50:57  <chrisdickinson>it's not so much plugin-y as it is "these modules simply generate the argument necessary to make cssauron work this this particular AST"
23:51:11  <defunctzombie>guybrush: what does it do?
23:51:39  <chrisdickinson>i would argue that cssauron is exactly not a megafunction -- it just understands how to traverse an ast given css selectors
23:51:55  <chrisdickinson>and if you tell it the kinds of traversals you can perform, it can apply it to any given ast
23:52:39  <chrisdickinson>as in, "i need to get to a parent"; in one AST / tree structure, that's `node.parentNode`, in another, it's just `node.parent`.
23:54:12  <defunctzombie>chrisdickinson: agreed, but the functionality of the things that use it depend on a specific working version of it
23:54:25  <defunctzombie>so the fact that you called it cssauron-html is just a byproduct
23:54:34  <defunctzombie>really it became its own indepndent thing
23:54:41  <defunctzombie>that just happens to be a single call to cssauron
23:54:55  <chrisdickinson>i think the best argument for pegging the version is so that people can just add cssauron-html to their package.json without having to peg cssauron as well
23:55:07  <defunctzombie>but from an actual standpoint, it is a completely wrapping function which hides what it uses
23:55:09  <chrisdickinson>that might be the one that wins me over
23:55:43  <defunctzombie>chrisdickinson: it should be possible to add cssauron-html to package.json without adding cssauron as well
23:55:46  <chrisdickinson>the other route being making those modules not require cssauron at all, and simply exporting that object that contains the specifics for forms of traversal
23:56:15  <chrisdickinson>which might be a better idea, because then people can use those outside of cssauron entirely
23:57:02  <defunctzombie>chrisdickinson: or that :)
23:57:16  <chrisdickinson>but then i should probably rename the modules
23:57:17  <guybrush>like connect-middleware-things dont depend on connect
23:57:18  <chrisdickinson>maybe.
23:57:25  <guybrush>i think this is actually quite nice
23:57:33  * mikolalysenkoquit (Remote host closed the connection)
23:58:29  <isaacs>rvagg: what does t.after do?
23:58:39  <isaacs>rvagg: is that anything like tap.tearDown(function() {})?
23:59:02  <rvagg>oh, you have a tearDown? that's what I was aiming for, but for individual tests
23:59:21  <isaacs>meh. just make another test that does the teardown bit.
23:59:36  <rvagg>isaacs: yeah, that's what Raynos is telling me to do...
23:59:45  <isaacs>test('close server', function(t) { server.close(function() { t.pass('closed'); t.end() }) })
23:59:54  <isaacs>that's usually how i do it