00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:01:34  * dominictarrquit (Quit: dominictarr)
00:06:50  <st_luke>juliangruber: stache stream is like a thing i wrote without a bitstream parser cause i was too lazy at the time
00:06:53  <st_luke>i should fix that i guess
00:06:59  <st_luke>and then we can practically have the same exact thing
00:07:17  * snojjoined
00:07:42  <st_luke>i dont think i still feel streaming templates are a great idea anymore anyway
00:08:34  <st_luke>unless everything else you are working with is a stream and you have the volume to make it worth it
00:08:34  <st_luke>blah
00:08:40  <substack>I've been streaming raw html and it's been working well
00:10:26  <Raynos>st_luke: streaming html is worthwhile as an optimization
00:10:32  <juliangruber>st_luke: the main feature is that you can use streams as template variables
00:10:42  <Raynos>i.e. flush the head, then flush those 10 async components in arbitrary order and then flush the footer
00:11:12  <mbalho>juliangruber: would be cool to see https://github.com/tmcw/stream-statistics hooked up to level also
00:11:23  <juliangruber>i've been using hyperstream, but I wanted something that could determine where it had to insert streams before the map was assigned
00:12:06  <substack>juliangruber: I'm working on some improvements!
00:12:18  * wolfeidaujoined
00:12:22  <juliangruber>substack: nice!
00:12:25  <substack>right now with my dev build of hyperstream I can stream a nested result
00:12:37  <substack>and next I'm working on threading the updates through to nested results
00:12:50  <juliangruber>mbalho: oh yeah, looks like it would be a powerful combi!
00:12:55  <substack>so that you can hook a level-live-stream up to a websocket and it will all update automatically
00:13:04  <substack>including any nested records
00:13:27  <st_luke>substack: are you piping to http.response?
00:13:27  <juliangruber>substack: https://github.com/juliangruber/level-list/blob/master/example/reactive.js
00:13:31  <st_luke>for your streaming html
00:13:32  <juliangruber>doesn't do nesting though
00:13:36  <mikolalysenko>what are some good book recommendations for helping beginners get up to speed on js?
00:13:43  <st_luke>mikolalysenko: eloquent javascript
00:13:48  <mikolalysenko>ok
00:14:00  <st_luke>and if they are already in the know on programming and some js, effective javascript
00:14:07  <mbalho>mikolalysenko: http://jsbooks.revolunet.com/ has a wide variety
00:14:11  <substack>st_luke: yes
00:14:43  <juliangruber>substack: and streamstache doesn't accept an input stream, in production you'd never stream a file to the templating engine anyways
00:15:04  <mikolalysenko>so I can assume that these people will be reasonably competent undergrad programmers with some background in Java
00:15:05  <juliangruber>substack: and it will memoize all the lookups, so it doesn't have to parse every time, or even parse html like trumpet
00:15:29  <mbalho>mikolalysenko: have them to learn you some node.js and stream adventure
00:15:39  <mbalho>mikolalysenko: https://github.com/maxogden/art-of-node#learn-node-interactively
00:15:40  <st_luke>mikolalysenko: i would say effective javascript in that case, it's a pretty great book
00:15:46  <st_luke>but it is not free
00:15:54  <mikolalysenko>effective or eloquent js?
00:16:05  <mbalho>former
00:16:17  <mikolalysenko>ok
00:16:25  <st_luke>mikolalysenko: eloquent js is a newbie book, effective is for people with js and/or programming experience
00:17:21  * meschjoined
00:17:24  * st_lukequit (Remote host closed the connection)
00:19:44  <mbalho>mikolalysenko: have you seen the typed object api? https://twitter.com/BrendanEich/status/369968767305920512
00:20:37  <mikolalysenko>mbalho: no I have not. is this an es6 thing?
00:20:49  <mbalho>mikolalysenko: yep
00:21:35  <mikolalysenko>alright, looks like the latest iteration of binary data
00:21:50  <mikolalysenko>I wonder if it would be feasible for them to shim it in without all the other stuff in es6?
00:21:59  <mikolalysenko>kind of like how they did typedarrays
00:26:10  <mikolalysenko>I also just put this thing together which is my latest attempt at building a simpler mesh rendering system: https://github.com/mikolalysenko/gl-simplicial-complex
00:27:09  <mikolalysenko>I still need to sort out a more modular way to pass camera state around, but for now this approach seems to work
00:30:13  <isaacs>Raynos: WHO IS TEACHING THEM HOW TO USE MOCHA? BECAUSE I CANNOT FIGURE OUT MOCHA.
00:30:52  <Raynos>isaacs: BUT IT IS EASY. JUST DESCRIBE IT. AND RUN `MOCHA` IN $CWD
00:31:21  <isaacs>Raynos: i feel like i might be being trolled right now...
00:31:25  <Raynos>isaacs: ALSO USE CHAI-AS-PROMISED TO WRITE YOUR ASYNC TEST AS IF ITS ENGLISH LANGAUGE. THIS IS BEST WAY TO DO TESTS. TESTS ARE ENGLISH
00:31:35  <isaacs>what's chai-as-promised?
00:31:43  <Raynos>chai is a "better assert"
00:31:54  <Raynos>isaacs: </troll>
00:32:50  * jcrugzzjoined
00:33:54  <mikolalysenko>wow. I just looked up chai-as-promised and that library is kind of wtf looking
00:34:18  <mikolalysenko>I am reminded of COBOL
00:40:06  <rvagg>http://i.imgur.com/nZJAPHx.gif
00:41:37  * i_m_cajoined
00:41:46  * tilgoviquit (Ping timeout: 246 seconds)
00:55:04  * whit537quit (Ping timeout: 264 seconds)
00:57:17  * whit537joined
01:01:43  * ins0mniaquit (Ping timeout: 264 seconds)
01:02:27  * i_m_caquit (Ping timeout: 256 seconds)
01:04:13  * jxsonquit (Remote host closed the connection)
01:13:38  <juliangruber>the readable stream module browserified and compressed is 91kb!!!
01:13:41  <juliangruber>that's insanity
01:17:36  <Raynos>juliangruber: ?
01:17:47  <juliangruber>Raynos: yeah right!
01:18:04  <Raynos>juliangruber: did you require all of it?
01:18:30  <mbalho>juliangruber: we need a module that lists all filenames in a bundle
01:18:36  <Raynos>juliangruber: try http://hughsk.github.io/disc/
01:18:47  <juliangruber>Raynos: require('stream').Readable || require('readable-stream')
01:18:50  <juliangruber>Raynos: require('stream').Readable || require('readable-stream').Readable
01:19:48  <juliangruber>i'm making a lightweight version of Readable now
01:19:50  <juliangruber>using bops
01:20:14  <mbalho>also on this topic you guys can bump https://github.com/substack/http-browserify/pull/23
01:20:21  * mk30_quit (Quit: Page closed)
01:21:21  <Raynos>juliangruber: I wouldn't rewrite Readable if I were you, that's bugs galore
01:21:36  <juliangruber>not rewriting
01:21:42  <juliangruber>just that one file and using bops
01:22:19  <Raynos>juliangruber: 183.7 kB :D
01:23:05  <Raynos>about 15% is Readable itself
01:23:16  <Raynos>60% is Buffer
01:23:32  <Raynos>juliangruber: fix buffer-browserify
01:26:44  * mikolalysenkoquit (Ping timeout: 260 seconds)
01:26:47  * tilgovijoined
01:28:41  <mbalho>the solution is to use bops
01:28:52  <mbalho>since you cant implement buffers on top of arraybuffers
01:32:23  * tmcwjoined
01:39:12  * tmcwquit (Remote host closed the connection)
01:40:23  * tmcwjoined
01:40:29  <juliangruber>meh, you need StringDecoder which user Buffers
01:42:23  <mbalho>bops could be used there
01:43:30  * mikolalysenkojoined
01:54:35  * thlorenzjoined
01:55:43  * timoxleyjoined
01:58:55  <mbalho>jlord: lol http://github.com.com/blog
02:00:56  * dguttmanquit (Quit: dguttman)
02:02:18  <tmcw>so what's the fastest way to encode an object of {integerkey:[list,of,integer]} pairs so that it can be decoded in a jiffy?
02:04:30  * jxsonjoined
02:09:04  * jxsonquit (Ping timeout: 256 seconds)
02:16:44  * evboguejoined
02:18:16  * jergasonjoined
02:23:00  <juliangruber>Raynos mbalho: http://jsfiddle.net/JybqF/embedded/result/ (discified streamstache)
02:23:09  <juliangruber>the only dep is readable-stream
02:24:59  <jjjohnny_>hypothesis: PLT HULK is isaacs
02:28:30  <jjjohnny_>at the risk of being a dork, if anybody wants to read a new nerdy poem and give me feedback pls do https://gist.github.com/NHQ/6289287
02:28:49  <jjjohnny_>its about .9999999999 == 1 sort of but not really
02:29:35  <jjjohnny_>try reading all poetry aloud. love your voice.
02:29:40  <jjjohnny_><3
02:32:47  <jjjohnny_>open source poetry
02:34:23  <dlmanning>jjjohnny_: So I teach math. I've had students get angry with me for trying to convince them of this
02:36:28  <jjjohnny_>dlmanning: the proof is not that difficult to believe IMO, David Foster Wallace does a good rendtion in his book about Infinity
02:36:38  <dlmanning>If the nines are point toward their right, aren't they pointing toward the decimal point?
02:37:37  <mikolalysenko>dlmanning: so, you know the easy proof from solving the equation, x = 0.9 + 0.1 * x
02:38:03  <mikolalysenko>which also works for other continued fractions...
02:38:11  <jjjohnny_>yeah thats kind of wierd thing. i figure the one is on the other side of the decimal, so... but thats where it goes kapoof anyway
02:38:39  * tmcwquit (Remote host closed the connection)
02:38:55  <mikolalysenko>actually this is probably so trivial I don't know why I am bothering bringing it up...
02:39:13  <jjjohnny_>mikolalysenko: that proof is a little less pelucid than the one i [don't] remember
02:39:19  <jjjohnny_>probably because x is on both sides
02:39:26  <dlmanning>mikolalysenko: I'm game. How does it go?
02:39:46  <mikolalysenko>well, let x = 0.9999.....
02:39:46  <jjjohnny_>mikolalysenko: its all good to me trivial or not
02:39:56  <mikolalysenko>then x satisifies the relation x = 0.9 + 0.1 * x
02:40:07  <mikolalysenko>the idea is you take x, shift right 1 decimal place and add a 9 on the left
02:40:12  <mikolalysenko>that is the meaning of repeating after all
02:40:18  <mikolalysenko>so solve for x and you are done
02:41:22  <mikolalysenko>I think that is the most standard proof and you can use it with other repeating numbers
02:41:37  <jjjohnny_>mikolalysenko: you know i had it go "point to your left" originally, but went with "right" so that I could "left to us", as in it "is left to us to understand"
02:41:38  <dlmanning>mikolalysenko: That's great
02:41:39  <mikolalysenko>for example, if you have x = 0.3333...., then solve x = 0.3 + 0.1 * x
02:43:17  <jjjohnny_>.9 + .1 + .999999999. = 1.999999999
02:43:43  <jjjohnny_>luckily I dont fight acknowledging the fact of its truth :D
02:44:37  <jjjohnny_>Everything and More by David Foster Wallace http://www.amazon.com/Everything-More-Compact-History-Infinity/dp/0393339289
02:44:55  <jjjohnny_>with a intro now my Neal Stephenson
02:45:01  <jjjohnny_>my copy doesnt have that
02:45:31  <dlmanning>So sad about DFW
02:45:34  <jjjohnny_>oh wait 1 * .999999999999 = .9999999
02:45:39  <jjjohnny_>:?
02:45:44  <jjjohnny_>dlmanning: true
02:46:21  <jjjohnny_>and his hanging did not hang over the spirit psyche as much as it should have
02:46:51  <dlmanning>mikolalysenko: Have you seen the proof that 64/16 = 4 ?
02:47:36  <jjjohnny_>mikolalysenko: im still not groking that proof, but I wont make you continue
02:47:44  <jjjohnny_>i swear ive been convinced
02:48:34  <dlmanning>jjjohnny_: Honestly the most convincing explanation for me was always that .9 repeating is just another way of writing a limit expression
02:48:56  <jjjohnny_>yeah thats pretty reasonable
02:49:31  <dlmanning>lim (as n -> infinity) sum (9/10^n)
02:50:04  <mikolalysenko>dlmanning: so I wasn't aware that 64/16=4 needed a detailed proof, but if it is interesting I'll hear it out
02:50:20  <jjjohnny_>lol
02:50:24  <dlmanning>mikolalysenko: Write it on a piece of paper as a fraction
02:50:53  <dlmanning>mikolalysenko: Now cancel the 6's
02:50:55  <dlmanning>;)
02:51:07  <jjjohnny_>for that matter if i can be unconvinced by mathematical proofiness that 64/4 = 4, I will also hear it out
02:52:58  <jjjohnny_>can/do the maths come to one via the imagination?
02:53:13  <dlmanning>64/16 = 4/1 = 4
02:55:25  <dlmanning>So I use this as an example to illustrate that getting the correct answer is not necessarily indicative of having done the right thing
02:55:51  <jjjohnny_>dlmanning: he's probably making a :what: face right now
02:56:33  <dlmanning>WAT?
02:57:45  <jjjohnny_>dlmanning: one thing I know I didnt grok back then was that fractions were another way of looking at the same thing. that ratios were another way of looking at numbers
02:57:57  <jjjohnny_>i thought they were stacked numbers
02:58:45  <dlmanning>So Pythagoras thought they were relationships between whole numbers
02:58:58  <mikolalysenko>dlmanning: yeah, one of those funny examples of a mathematical joke
02:59:09  <dlmanning>And that whole numbers were the only real numbers
02:59:21  <jjjohnny_>i was also blind and malnourished and couldnt stay awake
03:00:03  <jjjohnny_>dlmanning: well I was pretty natural with geometry so maybe me a pythagors share something
03:00:32  <dlmanning>He was also kind of a cult leader, and he hated beans
03:00:49  <jjjohnny_>i say feed beans to the chickens and eat eggs
03:00:56  * thlorenzquit (Remote host closed the connection)
03:01:29  <mikolalysenko>actually, one of my favorite examples of a mathematical joke is the over literal interpretation of geometric series
03:01:37  <mikolalysenko>which is just like the .99.... repeating example
03:01:58  <mikolalysenko>if you take 1 + a * x = x, then it is true that x = 1/(1 - a)
03:02:13  <mikolalysenko>so you can use this as a screwy method to calculate inverses
03:02:27  <mikolalysenko>(1 - a)^{-1} = 1 + a + a^2 + a^3 + ...
03:02:40  <mikolalysenko>and that actually works in astounding generality
03:02:47  <mikolalysenko>even for matrices and arbitrary rings
03:02:58  <mikolalysenko>in fact it is the basis for the concept of localization in algebraic geometry
03:04:19  <jjjohnny_>mikolalysenko: im laughing at your math joke to hear the chasm echo twixt your brains and mine
03:04:55  <jjjohnny_>its funny whats funny IFYWIM
03:05:10  * dguttmanjoined
03:05:14  <mikolalysenko>so one application of this idea is solving radiosity in computer graphics
03:05:27  <dlmanning>mikolalysenko: You still getting to the joke?
03:05:35  <jjjohnny_>hey now that is something we've got in common
03:05:45  <mikolalysenko>yeah
03:06:20  <mikolalysenko>basically what you do is you set 1-A = the light transport matrix for the scene
03:06:21  <jjjohnny_>altho my spinning dials are still using my cro-magnon math
03:06:45  <mikolalysenko>the idea is that the rows and columns represent the sampled intensity of the light at each patch
03:07:03  <mikolalysenko>and the matrix 1-A simulates a bounce of light through the whole world
03:07:13  <mikolalysenko>so it takes light on each patch and shoots it out
03:07:24  <jjjohnny_>ooo
03:07:36  <mikolalysenko>and the steady distribution of light boils down to solving the problem (1-A) x = y
03:07:45  <mikolalysenko>so you can simulate this by bouncing the light around a bunch
03:07:52  <jjjohnny_>mikolalysenko: can i somehow use this to make lasers?
03:08:00  <mikolalysenko>not that I'm aware of
03:09:24  <dlmanning>So, really more of a cool observation than a joke? :)
03:09:31  <mikolalysenko>well, it starts as a joke
03:09:41  <mikolalysenko>since you can't in general expect that series to converge
03:09:49  <mikolalysenko>but sometimes it does, and then it is awesome
03:10:14  <mikolalysenko>anyway this method is called southwell iteration
03:10:39  <mikolalysenko>it is a rather inefficient method, but it has a nice physical intuition and is easy to implement: http://luthuli.cs.uiuc.edu/~daf/courses/ComputerGraphics/Week5/Radiosity.pdf
03:11:17  <dlmanning>that
03:11:26  <dlmanning>is really neat
03:14:10  <dlmanning>mikolalysenko: I'm sure you've heard about the fast inverse square root algorithm?
03:14:13  <dlmanning>0x5f3759df
03:14:55  <mikolalysenko>dlmanning: yeah, and it doesn't work so great in js: https://github.com/mikolalysenko/rsqrt
03:15:44  <dlmanning>lol
03:15:45  <jjjohnny_>lols
03:18:19  * prettyrobotsquit (Quit: ZNC - http://znc.in)
03:18:29  * fotoveritequit (Quit: fotoverite)
03:18:56  * fotoveritejoined
03:22:07  * AvianFluquit (Remote host closed the connection)
03:24:21  * AvianFlujoined
03:33:05  <substack>mbalho: merged your http-browserify patch
03:35:02  * evboguequit (Quit: leaving)
03:49:11  <mbalho>w00t
03:57:53  * AvianFluquit (Read error: Connection reset by peer)
03:58:28  * AvianFlujoined
03:59:22  * coderzachquit (Quit: coderzach)
04:00:38  * jergasonquit (Remote host closed the connection)
04:05:28  * jxsonjoined
04:10:03  * jxsonquit (Ping timeout: 260 seconds)
04:11:46  * maksimlinquit (Read error: No route to host)
04:12:37  * jergasonjoined
04:12:50  * maksimlinjoined
04:13:45  * jergasonquit (Remote host closed the connection)
04:15:22  * i_m_cajoined
04:26:37  * calvinfoquit (Quit: Leaving.)
04:28:33  <defunctzombie>isaacs: lockfile module question
04:29:00  <defunctzombie>isaacs: https://github.com/isaacs/lockfile/blob/master/lockfile.js#L35
04:29:06  <defunctzombie>isaacs: what is that supposed to do?
04:29:45  <isaacs>defunctzombie: tests if the node version is <= 0.8
04:29:53  <defunctzombie>isaacs: no, it doesn't ;)
04:29:55  * whit537quit (Ping timeout: 264 seconds)
04:30:11  <isaacs>oh, HAHAHAH
04:30:15  <isaacs>0.1...
04:30:15  <defunctzombie>:p
04:30:17  <defunctzombie>yep
04:31:09  <isaacs>but 0.9! it won't do it in 0.9!
04:31:11  <isaacs>lol
04:31:15  <defunctzombie>right
04:31:33  <defunctzombie>that check is trying to be too fancy heh
04:33:52  * coderzachjoined
04:34:23  <defunctzombie>isaacs: it acutally causes lockfile to kill the app
04:34:32  <defunctzombie>cause exit fires and that handler fires
04:34:37  <defunctzombie>that is how I stumbled upon this
04:35:37  <isaacs>defunctzombie: fixed on 0.4.1
04:35:43  <defunctzombie>nice
04:37:04  * i_m_caquit (Read error: Connection reset by peer)
04:37:28  * i_m_cajoined
04:41:00  * dguttmanquit (Quit: dguttman)
04:41:24  <defunctzombie>isaacs: let me know when published
04:42:51  * AvianFluquit (Remote host closed the connection)
04:48:29  <isaacs>defunctzombie: it was published when i told you about it
04:48:42  <isaacs>oh, nvm
04:48:44  <isaacs>publishign now
04:48:46  <isaacs>done
04:49:43  * dguttmanjoined
04:50:55  * Kesslerquit (Ping timeout: 264 seconds)
05:06:01  * jxsonjoined
05:06:26  * jxsonquit (Read error: Connection reset by peer)
05:06:43  * jxsonjoined
05:11:07  * jxsonquit (Ping timeout: 256 seconds)
05:25:37  * mikolalysenkoquit (Ping timeout: 246 seconds)
05:28:49  * maksimlinquit (Read error: Connection reset by peer)
05:30:22  * maksimlinjoined
05:40:50  <defunctzombie>isaacs: \o/
05:42:51  * i_m_caquit (Ping timeout: 256 seconds)
05:46:10  * mikolalysenkojoined
05:49:37  * coderzachquit (Quit: coderzach)
05:54:14  * coderzachjoined
05:56:38  * snojquit (Ping timeout: 264 seconds)
05:58:30  * snojjoined
06:05:09  * dguttmanquit (Quit: dguttman)
06:09:03  * hotsnojjoined
06:12:19  * snojquit (Ping timeout: 256 seconds)
06:15:08  * coderzachquit (Quit: coderzach)
06:20:33  * ikquit (Ping timeout: 264 seconds)
06:20:53  * ikjoined
06:28:27  * kumavisquit (Quit: kumavis)
06:35:23  * calvinfojoined
06:38:30  * calvinfoquit (Client Quit)
06:42:30  * calvinfojoined
06:44:16  * mirkokieferjoined
06:44:29  * calvinfoquit (Client Quit)
06:50:23  * calvinfojoined
06:50:27  * shamaquit (Remote host closed the connection)
06:52:20  * djcoinjoined
06:58:25  * calvinfoquit (Quit: Leaving.)
07:05:13  <juliangruber>isaacs: what does it mean when I have to do "this.push(''); this.read(0);" in a readable stream to make it work?
07:05:23  <juliangruber>result of trial and error
07:05:32  <isaacs>juliangruber: don't do push('')
07:05:36  <isaacs>juliangruber: why are you doing that?
07:06:11  <juliangruber>oh maybe I'm being stupid
07:06:18  <juliangruber>just got an idea, will try and report
07:06:58  <juliangruber>isaacs: need to do this after an async operation inside ._read to kick it off again
07:15:34  * dominictarrjoined
07:25:46  * mirkokieferquit (Quit: mirkokiefer)
07:27:41  * maksimlinquit (Remote host closed the connection)
07:30:09  * calvinfojoined
07:30:28  <dlmanning>dominictarr: you've seen http://www-cs-students.stanford.edu/~tjw/jsbn/ ?
07:30:52  <dominictarr>no, could be good
07:30:53  <isaacs>juliangruber: but... you're calling read(0) right away after.
07:31:04  <isaacs>juliangruber: why not just push() once you HAVE data, rather than now?
07:31:22  <dlmanning>dominictarr: Looks like it's the core of a bunch of other javascript RSA libs
07:34:29  * mikolalysenkoquit (Ping timeout: 248 seconds)
07:34:59  * tilgoviquit (Remote host closed the connection)
07:35:58  * calvinfoquit (Quit: Leaving.)
07:37:47  * dominictarrquit (Quit: dominictarr)
07:44:58  * hotsnojquit (Quit: Leaving)
07:58:52  * jibayjoined
08:00:16  * mikolalysenkojoined
08:05:16  * dominictarrjoined
08:05:18  * mikolalysenkoquit (Ping timeout: 276 seconds)
08:08:38  * nicholasfjoined
08:10:53  <juliangruber>isaacs: if I don't call this.push('') before this.read(0) the ._read method isn't called once more
08:11:14  <isaacs>juliangruber: because until you push something, you're still in 'reading' mode
08:11:33  <isaacs>juliangruber: the real question is, why do you NEED _read() to be called again right nwo?
08:11:43  <isaacs>juliangruber: why no t just push the data once you hvae it?
08:11:53  * perlbotquit (*.net *.split)
08:11:53  * ryanseddonquit (*.net *.split)
08:11:53  * gozalaquit (*.net *.split)
08:11:53  * ralphtheninjaquit (*.net *.split)
08:11:54  * harrowquit (*.net *.split)
08:11:54  * LOUDBOTquit (*.net *.split)
08:11:59  * ralphtheninjajoined
08:12:15  <isaacs>like, do your async thing, and then push() what you get from it
08:12:21  * harrowjoined
08:12:26  * gozalajoined
08:12:26  <isaacs>juliangruber: how do you know when to call read(0)?
08:12:31  * perlbotjoined
08:12:32  * ryanseddonjoined
08:13:03  <juliangruber>isaacs: I have two data sources: a big string and some streams. I emit <part of string> stream <part of string>
08:13:07  <juliangruber>after I'm done with the stream
08:13:14  <juliangruber>I need to emit the rest of the string
08:13:25  <isaacs>ok, so just push it irght away
08:13:31  <isaacs>you have the string already
08:13:35  <rowbit>/!\ ATTENTION: (default-local) ski@... successfully signed up for developer browserling plan ($20). Cash money! /!\
08:13:35  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
08:13:51  <isaacs>stream.on('end', function() {me.push(otherPartOfString)})
08:15:30  <juliangruber>isaacs: aah, I wanted to use too much of streams' flow control
08:15:40  <isaacs>var me = this; me.push(firstPartOfString) stream.on('data', function(c) { if (!me.push(c)) stream.pause(); }); stream.on('end', function() { me.push(secondPartOfString); me.push(null); }); me._read = function() { stream.resume() };
08:16:05  <isaacs>the point of flow control is to limit your memory usage.
08:16:20  <isaacs>if you already have the string in memory, and you knwo when ti put it in the stream, then just do it
08:16:29  <juliangruber>isaacs: yeah I got that
08:16:31  <isaacs>it's not preventing any memory usage, because it's already in memory
08:16:45  <juliangruber>but I wanted Stream to call my ._read again
08:16:53  <isaacs>what for?
08:16:59  <juliangruber>instead of me calling my internal progress-with-data function
08:17:21  <isaacs>that seems unnecessary
08:17:27  <juliangruber>i'm writing a streaming mustache version, where template variables can be assigned strings
08:17:28  <isaacs>just do it the simpler way :)
08:17:36  <juliangruber>:)
08:17:40  <juliangruber>I was trying
08:20:27  * LOUDBOTjoined
08:27:29  <dominictarr>jaz303: idea: maybe all you really need to get modular ui
08:27:33  <dominictarr>is layout
08:27:48  <dominictarr>just have a thing that allows different layout schemes
08:28:08  <dominictarr>but DON'T bundle that with any UI collection
08:30:13  * mikolalysenkojoined
08:34:19  * defunctzombiechanged nick to defunctzombie_zz
08:38:03  * defunctzombie_zzchanged nick to defunctzombie
08:38:51  * mikolalysenkoquit (Ping timeout: 260 seconds)
08:45:46  <dominictarr>jaz303: like this is a great example https://github.com/desandro/masonry
08:46:11  <dominictarr>but that only does one stil (pinterest style picture board)
08:46:17  <dominictarr>and it's actually really simple!
08:47:36  * defunctzombiechanged nick to defunctzombie_zz
08:48:00  <dominictarr>hmm, it uses a css selector as the input...
08:48:05  <dominictarr>I don't think that works
08:48:26  <substack>dominictarr: I should do a talk about how to key/value
08:48:37  <substack>not even talking about anything level-specific
08:48:46  <dominictarr>substack: oh, how to structure keys?
08:48:53  <substack>yep!
08:49:00  <dominictarr>yes
08:49:06  <substack>how to create indexes, how to use https://npmjs.org/package/bytewise to structure keys for certain kinds of efficient queries
08:49:17  <dominictarr>yes, that would be great
08:49:20  <substack>pretty much how to build something like level-assoc
08:49:49  <dominictarr>yeah, this knowledge people can apply to any database
08:50:15  <dominictarr>or even flat files! (if they are ordered)
08:50:26  <dominictarr>and you can do binary search within them
08:50:52  <dominictarr>…I have a module for that with json lines
08:51:01  <dominictarr>could adapt it for cvs too
08:52:05  <dominictarr>jaz303: I think a simpler model would be to apply a layout to a given element, and it then lays out all of that element's children.
08:56:28  <dominictarr>substack: my talk is gonna be on patterns in leveldb modules, (and plugins/modules in general)
08:58:43  <juliangruber>isaacs: fixed now :) had to introduce some state, as ._read was called when I wasn't yet ready for it
09:05:41  * ins0mniajoined
09:10:28  <rowbit>/!\ ATTENTION: (default-local) fazzi.enrico@... successfully signed up for developer browserling plan ($20). Cash money! /!\
09:10:28  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
09:15:13  <substack>:D
09:16:01  <substack>dominictarr: one pattern I don't like is when modules add properties to the db object
09:19:26  <dominictarr>substack: level-sublevel now returns a new instance
09:20:11  <dominictarr>so, you create an subsection that is for one thing, and then extend that.
09:20:55  <dominictarr>like you can create a new event emitter and then add functions to it.
09:21:37  <substack>great!
09:23:34  <substack>http://www.youtube.com/watch?v=tXoSK4tLxK8 <-- Alan Kay interview, really good
09:30:42  <dominictarr>substack: actually extending those objects, however, is very helpful, because it allows things like multilevel to inspect what is available, and expose that to the user
09:38:31  <substack>that sounds a bit niche though
09:47:04  * ins0mniaquit (Ping timeout: 246 seconds)
09:49:00  * mirkokieferjoined
09:57:32  * defunctzombie_zzchanged nick to defunctzombie
09:59:36  <jaz303>dominictarr: i sketched out some ideas the other night
09:59:55  <jaz303>containment is always where i get "stuck"
10:00:16  <jaz303>but i like that idea - just handle layout
10:02:11  * mcollinajoined
10:07:19  * defunctzombiechanged nick to defunctzombie_zz
10:13:28  * stagasjoined
10:13:46  <dominictarr>jaz303: yeah, it's fairly easy to make a widget via html stuff
10:14:42  <dominictarr>but I think the key is to JUST DO the minimum to enable modularity, nothing more.
10:14:47  * vitorpachecojoined
10:15:54  * frankblizzardjoined
10:16:23  <jaz303>as a minimum i see the need for two features: given a container, identify the children we're interested in laying out and, secondly, perform the layout
10:20:46  <dominictarr>jaz303: sure - for the first part - what could be better than just using element.children?
10:21:51  <dominictarr>s/better/simpler/
10:22:07  <jaz303>yes that would make most sense. still trying to unravel my previous mode of thinking about this problem :)
10:26:13  * mirkokieferquit (Quit: mirkokiefer)
10:27:02  <jaz303>if you rely on element.children you only have each child's position in the list to use as layout "hint"
10:28:17  <jaz303>for example if you had a layout function that handled one main (central) element, and optional border elements in n,s,e,w
10:28:30  <jaz303>(equivalent to Swing's BorderLayout iirc)
10:28:32  <dominictarr>but surely hints depend on the interpretation of the particular layout
10:28:59  <jaz303>you're right
10:29:24  <jaz303>could use data attribs if the layout needs metadata
10:29:30  <dominictarr>yeah
10:30:06  <dominictarr>or if it did tiling or something, it could grab it dimensions of the img (etc)
10:30:16  <jaz303>yep
10:31:43  <dominictarr>of course, you could pass arguments to the layout engine too.
10:32:08  <jaz303>i'd imagined each layout being a single function that captured params in a closure
10:32:55  <dominictarr>hmm, are the params the elements?
10:33:01  <dominictarr>the children?
10:33:10  <jaz303>no, things like constraints, orientation
10:33:21  <dominictarr>oh right, yeah I agree
10:35:04  * mikolalysenkojoined
10:35:22  <dominictarr>sometimes the constraints could change too
10:35:39  <dominictarr>one question, is how do you handle new events?
10:35:48  <jaz303>what do you mean?
10:35:56  <dominictarr>like, a custom event
10:36:07  <dominictarr>that is related to the layout in some way
10:36:15  <dominictarr>like, if an element is added
10:36:16  <jaz303>resize? children added/removed?
10:36:21  <dominictarr>for example
10:36:34  <dominictarr>but I'm sure there are other possibilities/needs too
10:36:54  <dominictarr>so, do you extend the dom elements, with new events
10:37:09  <dominictarr>or do you add some thing like a node EventEmitter?
10:37:21  <jaz303>needs experimentation
10:38:35  <dominictarr>indeed
10:39:43  * mikolalysenkoquit (Ping timeout: 260 seconds)
10:43:35  <dominictarr>substack: pkrumins you should add firefox os to testling
10:50:25  * mcollinaquit (Ping timeout: 246 seconds)
10:53:33  * mirkokieferjoined
10:55:24  * Kesslerjoined
10:59:02  * whit537joined
11:02:54  * yorickjoined
11:05:06  * mikolalysenkojoined
11:06:36  * nicholasfquit (Remote host closed the connection)
11:07:10  * nicholasfjoined
11:09:57  * mikolalysenkoquit (Ping timeout: 248 seconds)
11:17:38  * jcrugzzquit (Ping timeout: 264 seconds)
11:22:43  * whit537quit (Ping timeout: 264 seconds)
11:27:11  <dominictarr>jaz303: data- attributes generate MutationEvents, so they would be a very good choice for layout metadata
11:27:19  * thlorenzjoined
11:27:32  <dominictarr>you could change them and have the layout reposition in response
11:44:08  * jcrugzzjoined
11:45:59  * whit537joined
11:51:45  * nicholasfquit (Ping timeout: 256 seconds)
11:52:40  * jcrugzzquit (Ping timeout: 264 seconds)
11:54:06  * whit537quit (Ping timeout: 276 seconds)
12:01:36  * AvianFlujoined
12:05:26  * mikolalysenkojoined
12:09:52  * mikolalysenkoquit (Ping timeout: 246 seconds)
12:30:49  * timoxley_joined
12:31:55  * itprojoined
12:31:55  * itprochanged nick to ITpro
12:35:03  * timoxleyquit (Ping timeout: 276 seconds)
12:36:49  * AvianFluquit (Remote host closed the connection)
12:41:25  * ednapiranhajoined
12:46:28  * whit537joined
13:10:19  * thlorenzquit (Remote host closed the connection)
13:41:07  * kenperkinsjoined
13:44:21  * tmcwjoined
13:47:05  * Kesslerquit (Ping timeout: 245 seconds)
13:52:31  * Kesslerjoined
13:52:51  * coderzachjoined
13:53:00  * kevino80joined
14:02:03  * mikolalysenkojoined
14:06:49  * AvianFlujoined
14:08:53  * Kesslerquit (Ping timeout: 268 seconds)
14:19:49  * timoxleyjoined
14:22:05  * timoxley_quit (Ping timeout: 245 seconds)
14:22:30  * fallsemojoined
14:27:11  * Kesslerjoined
14:36:46  <djcoin>Does anyone know a good/simple tool to map some tool going both way json <-> dom to edit any json object in the dom and save it back to json (with optionnaly some triggers to other input field), and then to c
14:36:56  <djcoin>s/, and then to c//
14:40:35  <djcoin>hm something like https://github.com/kevinburke/hulk ! Except that I would like to plug some widget eg, an autocomplete
14:48:18  * mikolalysenkoquit (Ping timeout: 276 seconds)
14:49:57  * shamajoined
14:53:21  * timoxleyquit (Read error: Connection reset by peer)
14:55:43  * frankblizzardquit (Remote host closed the connection)
15:06:41  * mikolalysenkojoined
15:14:23  * sorensen_joined
15:14:29  * sorensen_quit (Remote host closed the connection)
15:22:12  * kevino80quit (Remote host closed the connection)
15:27:21  <jaz303>djcoin: i built something similar that mapped JSON structure to templates
15:27:34  <jaz303>recursively
15:32:10  * calvinfojoined
15:32:13  <djcoin>http://stackoverflow.com/questions/998832/gui-based-or-web-based-json-editor-that-works-like-property-explorer
15:32:28  <djcoin>jaz303: I found a pretty interesting list of json/json schema edition
15:32:31  <djcoin>:)
15:32:55  <djcoin>jaz303: any link to your project ?
15:33:15  <jaz303>i'll link you to a screenshot in a minute
15:33:27  <jaz303>never got round to extracting it but it wouldn't take long
15:33:31  * whit537quit (Ping timeout: 264 seconds)
15:34:08  <jaz303>it was more intended for end-users so it didn't look like json that was being edited
15:37:40  * calvinfoquit (Quit: Leaving.)
15:37:55  * evboguejoined
15:39:28  * mirkokieferquit (Quit: mirkokiefer)
15:40:52  * yorickquit (Remote host closed the connection)
15:44:55  * jergasonjoined
15:47:47  * ednapiranhaquit (Remote host closed the connection)
15:48:50  * nicholasfjoined
15:51:01  * kevino80joined
15:53:03  * nicholasfquit (Ping timeout: 245 seconds)
15:53:12  * dguttmanjoined
15:58:07  * evboguequit (Read error: Connection reset by peer)
15:58:16  * yorickjoined
16:02:20  <jaz303>djcoin: it generated interfaces like this http://vm4.magiclamp.co.uk/~jason/uploads/disco.png
16:03:48  <djcoin>jaz303: pretty nice!
16:05:23  * kevino80quit (Remote host closed the connection)
16:06:38  * mikolalysenkoquit (Ping timeout: 240 seconds)
16:08:28  * yorickquit (Remote host closed the connection)
16:09:51  * yorickjoined
16:11:06  * jxsonjoined
16:12:28  * CoverSlidequit (Ping timeout: 260 seconds)
16:13:30  * calvinfojoined
16:13:57  * kumavisjoined
16:15:44  * jxsonquit (Read error: Operation timed out)
16:18:50  * ednapiranhajoined
16:22:14  * mikolalysenkojoined
16:22:54  * yorickquit (Remote host closed the connection)
16:26:34  * dguttmanquit (Quit: dguttman)
16:27:42  * ednapiranhaquit (Ping timeout: 264 seconds)
16:27:59  * dguttmanjoined
16:31:29  * dominictarrquit (Quit: dominictarr)
16:33:13  * jergasonquit (Remote host closed the connection)
16:33:58  * ins0mniajoined
16:44:27  * coderzachquit (Quit: coderzach)
16:53:11  * jergasonjoined
16:55:02  * ednapiranhajoined
17:06:24  * dominictarrjoined
17:14:14  * tmcwquit (Remote host closed the connection)
17:17:11  * niftylettucequit (Ping timeout: 246 seconds)
17:25:18  * AvianFluquit (Remote host closed the connection)
17:27:44  * jxsonjoined
17:28:39  * Kessler_joined
17:29:06  * AvianFlujoined
17:31:17  * st_lukejoined
17:32:02  * Kesslerquit (Ping timeout: 264 seconds)
17:33:09  * st_lukequit (Remote host closed the connection)
17:37:30  * st_lukejoined
17:38:30  * tmcwjoined
17:38:41  <jlord>mbalho: what?
17:40:26  * kevino80joined
17:40:55  * AvianFluquit (Remote host closed the connection)
17:53:56  * yorickjoined
18:02:38  * whit537joined
18:05:58  * mikolalysenkoquit (Ping timeout: 245 seconds)
18:06:24  * AvianFlujoined
18:19:42  * st_lukequit (Remote host closed the connection)
18:20:54  * st_lukejoined
18:24:58  * coderzachjoined
18:26:15  * st_lukequit (Remote host closed the connection)
18:27:38  * jcrugzzjoined
18:30:59  * jergason_joined
18:34:45  * jergasonquit (Ping timeout: 248 seconds)
18:34:54  * st_lukejoined
18:35:28  * st_lukequit (Remote host closed the connection)
18:38:41  * defunctzombie_zzchanged nick to defunctzombie
18:50:32  * mikolalysenkojoined
19:00:43  * mk30_joined
19:02:07  * st_lukejoined
19:02:14  * st_lukequit (Remote host closed the connection)
19:24:15  * calvinfoquit (Quit: Leaving.)
19:24:35  * jcrugzzquit (Ping timeout: 278 seconds)
19:25:13  * Kesslerjoined
19:27:06  <juliangruber>Raynos: what was that module called again that extracts dom elements by class names
19:27:33  * Kessler_quit (Ping timeout: 248 seconds)
19:31:47  * niftylettucejoined
19:32:46  * st_lukejoined
19:35:49  <juliangruber>Raynos: found it
19:40:53  * st_lukequit (Ping timeout: 248 seconds)
19:51:38  * tilgovijoined
19:53:13  * evboguejoined
20:15:19  * Kesslerquit (Ping timeout: 246 seconds)
20:20:53  * gwenbelljoined
20:26:21  * st_lukejoined
20:27:28  * calvinfojoined
20:32:38  * mikolalysenkoquit (Ping timeout: 264 seconds)
20:33:30  * calvinfoquit (Ping timeout: 256 seconds)
20:34:11  * calvinfojoined
20:50:24  * jxsonquit (Remote host closed the connection)
20:51:20  * gwenbellquit (Quit: Lost terminal)
20:53:48  * mikolalysenkojoined
20:59:49  * evboguequit (Ping timeout: 248 seconds)
21:04:43  * jergason_quit (Remote host closed the connection)
21:09:42  <Raynos>juliangruber: by/class
21:12:21  * jergasonjoined
21:15:04  * AvianFluquit (Remote host closed the connection)
21:16:23  * mikolalysenkoquit (Ping timeout: 245 seconds)
21:17:08  <isaacs>Raynos: hey
21:17:17  <Raynos>isaacs: hello
21:17:35  <Raynos>isaacs: how do I fix my git emails?
21:17:41  <isaacs>Raynos: can you do me a favor? update your git configs to say Jake Verbaten and your real email?
21:17:44  <isaacs>yes, please :)
21:17:53  * evboguejoined
21:18:07  <Raynos>user.email is raynos2@gmail.com
21:18:17  <Raynos>does user.name really have to be Jake Verbaten :(
21:18:51  <isaacs>oh, wait, no, nevermind
21:19:28  <mbalho>i was just trying to type 'everything here' and typed 'everythere here' instead lol
21:19:37  * mk30_quit (Ping timeout: 250 seconds)
21:19:57  <isaacs>Raynos: whatever you'd prefer to be in the ChangeLog should be what goes in patches.
21:20:15  <isaacs>Raynos: i'm "isaacs" everywhere, so i'm not one to talk :)
21:20:23  <Raynos>Raynos is fine with me
21:20:43  * jxsonjoined
21:21:45  * nicholasfjoined
21:23:07  <st_luke>are there any agile software teams that only have people in wheelchairs
21:23:11  <st_luke>how do they do a standup
21:23:17  <st_luke>maybe they call it a sitdown
21:23:20  <st_luke>but here's the thing
21:23:25  <st_luke>they are already sitting
21:23:46  <mbalho>LOL DISABILITY
21:23:46  <LOUDBOT>I HURT YOU FEELING FOR A DOLLA!
21:23:53  * mbalhohigh fives loudbot
21:24:19  <st_luke>disability isnt funny
21:28:45  * jxsonquit (Ping timeout: 245 seconds)
21:30:19  * mikolalysenkojoined
21:31:34  * ednapiranhaquit (Remote host closed the connection)
21:34:36  <Raynos>dominictarr, jesusabdullah: what do you recommend for a http proxy ?
21:40:44  * kumavisquit (Quit: kumavis)
21:42:49  * AvianFlujoined
21:45:14  * jcrugzzjoined
21:47:20  <defunctzombie>Raynos: events: EventEmitter = require('events') (Jake Verbaten)
21:47:23  <defunctzombie>Raynos: fucking finally
21:47:29  <Raynos>yes.
21:49:44  * mk30_joined
21:51:13  * jxsonjoined
21:51:46  * djcoinquit (Quit: WeeChat 0.4.0)
21:52:11  <chilts>Raynos++
21:52:58  * nicholasfquit (Remote host closed the connection)
21:57:04  * tilgoviquit (Remote host closed the connection)
21:57:50  * mikolalysenkoquit (Ping timeout: 240 seconds)
22:02:12  <dominictarr>Raynos: but why did this not happen years ago?
22:02:15  * ITproquit
22:02:46  <mbalho>there are lots of stupid little things that people expect isaac to fix
22:02:52  <mbalho>it takes a village
22:02:55  <mbalho>we are one
22:02:57  * mbalhocries
22:03:01  <substack>dominictarr: because platform libs evolve glacially slowly
22:03:04  * kevino80quit (Remote host closed the connection)
22:03:14  <rowbit>/!\ ATTENTION: (default-local) jclark@... successfully signed up for developer browserling plan ($20). Cash money! /!\
22:03:14  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
22:03:17  <substack>see also: python batteries included
22:03:27  <dominictarr>that too, I feel like surely someone had suggested that
22:03:36  <dominictarr>maybe it's the bystander effect
22:04:00  <dominictarr>everyone assumes that someone has already posted that issue or made that pull request
22:04:49  <jaz303>is there any obvious reason why v8::Unlocker constructor would segfault?
22:11:56  * AvianFluquit (Remote host closed the connection)
22:12:38  * yorickquit (Remote host closed the connection)
22:18:19  <Raynos>dominictarr: because no-one made a PR or was anal enough about doing things the "export one function" way
22:18:45  * jcrugzzquit (Ping timeout: 276 seconds)
22:18:53  <Raynos>dominictarr: I only did it because I'm really anal about "export one function"
22:19:36  <dominictarr>you are gonna save so much typing
22:20:04  <dominictarr>it's probably gonna save someone from RSI, if taken cumulatively
22:22:23  <mbalho>also global warming from all the bytes that are being removed from network transmission
22:25:54  * jergasonquit (Remote host closed the connection)
22:26:30  * jergasonjoined
22:26:51  <dominictarr>chrisdickinson: hey, how does beefy work?
22:27:05  <dominictarr>does it reload the app inside an iframe or something?
22:35:43  * kumavisjoined
22:42:09  * evboguequit (Ping timeout: 276 seconds)
22:51:16  * jergasonquit (Remote host closed the connection)
22:55:16  * jergason_joined
23:00:02  * maksimlinjoined
23:04:55  * mikolalysenkojoined
23:06:24  * mirkokieferjoined
23:09:15  * mikolalysenkoquit (Ping timeout: 240 seconds)
23:12:38  * tmcwquit (Remote host closed the connection)
23:17:36  * AvianFlujoined
23:18:57  * fallsemoquit (Quit: Leaving.)
23:21:59  <st_luke>juliangruber: i know where you are coming from but when you have 10 people working on something you can't get too hung up on someone not following ideal commit conventions perfectly
23:23:30  * jergason_quit (Remote host closed the connection)
23:24:00  * jcrugzzjoined
23:25:26  * maksimlinquit (Ping timeout: 264 seconds)
23:26:18  <juliangruber>st_luke: i'm just stating that the way someone commits shows a lot about how they think
23:26:31  <juliangruber>...not wanting to judge anyone
23:26:40  <juliangruber>and there's no "right"
23:28:42  * mirkokieferquit (Quit: mirkokiefer)
23:29:19  * jcrugzzquit (Ping timeout: 264 seconds)
23:29:29  <st_luke>juliangruber: without context I don't think it really shows anything
23:30:29  <juliangruber>st_luke: yeah, totally depends on the situation also
23:30:52  * evboguejoined
23:31:56  <dlmanning>dominictarr: The answer to your question re: beefy: It uses SSE's to tell the the page to reload
23:32:37  <dominictarr>dlmanning: so it injects a reload script?
23:32:45  <dlmanning>yes
23:36:57  <chrisdickinson>dominictarr: belatedly this ^^
23:37:46  <dominictarr>chrisdickinson: aha, I see
23:38:41  * evboguequit (Ping timeout: 268 seconds)
23:53:48  * nicholas_joined
23:56:47  <Raynos>isaacs: do you and core committers maintain a list of "we would fix this shit / do this shit right if not for back compat". Whenever you say no to suggestions / features I cant tell whether it's a bad idea or whether back compat means not in node 1.0
23:57:17  <isaacs>hahah
23:57:30  <isaacs>yes, i have a long list, but it is only etched in the very ether of my soul.
23:57:38  <isaacs>not stored anywhere, like, where you can read it.
23:57:54  <isaacs>Raynos: anywhere you see a function that takes 7 optional args, though, you can be sure that my spirit burns.
23:58:07  <Raynos>;_;
23:58:13  <isaacs>Raynos: the biggest one: EventEmitter is an antipattern.
23:58:14  <Raynos>I dislike some of my (req, res, opts, cb) functions
23:58:20  <Raynos>I wish http was (duplex, opts, cb)
23:58:25  * nicholas_quit (Ping timeout: 268 seconds)
23:58:30  <isaacs>Raynos: rejoice in the luxury of being able to fix them, though
23:58:32  <isaacs>yeah, that'd be nice.
23:58:40  <isaacs>except it gets annoying when you start talking about headers.
23:58:46  <isaacs>because the req and res both have headers.
23:58:51  * gwenbelljoined
23:58:57  <Raynos>isaacs: I've been thinking `EventEmitter` would be better as `Event`. `socket.data(function (chunk) { ... })`
23:59:11  <Raynos>i.e. Event is a like EventEmitter but there's only one Event and there are no magic strings
23:59:13  <isaacs>Raynos: i'd go even further:
23:59:21  <isaacs>Raynos: server.accept(function(connection) {})
23:59:24  <isaacs>do one at a time
23:59:30  <Raynos>yes that
23:59:37  <Raynos>socket.data(cb), socket.end(cb)
23:59:48  <isaacs>and the accept() function sits around and waits until there's a new connection established, and then calls the fn
23:59:59  <isaacs>Raynos: socket.read(function(chunk) {...})