00:00:01  * ircretaryquit (Remote host closed the connection)
00:00:10  * ircretaryjoined
00:00:14  <isaacs>Raynos: write/end cb is just a "call when done" kind of thing
00:00:21  <Raynos>true
00:00:31  <isaacs>Raynos: eof = the read(cb) is called wiht null
00:00:34  <Raynos>now that you mention it I dont know where you really need events
00:00:41  <isaacs>you don't need events anywhere.
00:00:44  <Raynos>connection is a good example
00:00:46  <isaacs>they only make things more complicated and slower.
00:00:53  <isaacs>socket.connect(function() { now you're connected })
00:01:03  <Raynos>yes.
00:01:07  <isaacs>where events are nice is passive listening.
00:01:10  <Raynos>does connect handle multiple calls / multiple listeners ?
00:01:21  <isaacs>like, for tracking progress of 'data' events etc.
00:01:28  <isaacs>no, this would not supprot that.
00:01:35  <Raynos>Interesting
00:01:42  <isaacs>but if node had not supported that *from the beginning*, it wouldn't be a big deal.
00:01:45  <isaacs>we would have worked around it
00:02:04  <isaacs>with... (wait for it)...
00:02:06  <isaacs>MONADS!!
00:02:50  <isaacs>socket.read = processUpdateMonad(socket.read)
00:03:05  <Raynos>?
00:03:16  <Raynos>this is true
00:03:23  <Raynos>gozala has a thing for that called hub
00:03:33  <Raynos>socket.read = hub(socket.read) and now it handles multiple listeners
00:03:53  <isaacs>function processUpdateMonad(fn) { var progress = 0; return function(cb) { return fn.call(this, function(socket) { progress += socket.length; cb(socket) }) } }
00:05:11  <Raynos>I was thinking about something like ( https://gist.github.com/Raynos/106852be0ac9d7e10172#file-event-js-L3 )
00:05:41  <dlmanning>way of the future
00:05:57  <Raynos>but maybe you just kill multi pipe & multiple listeners everywhere
00:07:18  <isaacs>dlmanning: i wanna get this done right, so show me all the blueprints
00:08:06  <Raynos>isaacs: but back on topic It would be interesting if there was a node2 list somewhere
00:08:31  <dlmanning>isaacs: Sorry, I'm just quoting Merlin Mann quoting Leonardo DiCaprio
00:13:01  * jxsonquit (Remote host closed the connection)
00:15:18  <isaacs>dlmanning: yes, i am familiar with The Film
00:17:55  <dlmanning>:)
00:20:55  * dominictarrquit (Quit: dominictarr)
00:25:28  * evboguejoined
00:36:57  * dguttman_joined
00:37:47  * chrisdickinsonquit (Read error: Operation timed out)
00:39:10  * chrisdickinsonjoined
00:39:26  * AvianFluquit (Remote host closed the connection)
00:39:36  * dguttmanquit (Ping timeout: 256 seconds)
00:39:36  * dguttman_changed nick to dguttman
00:39:51  * AvianFlujoined
00:41:02  * stagasquit (Ping timeout: 264 seconds)
00:41:24  * AvianFluquit (Remote host closed the connection)
00:41:52  * AvianFlujoined
00:44:20  <Raynos>dominictarr: ping
00:44:49  * gwenbellquit (Quit: Lost terminal)
00:49:46  * evboguequit (Quit: leaving)
00:54:20  * vitorpachecoquit (Quit: Saindo)
00:55:22  * coderzachquit (Quit: coderzach)
00:56:26  * ins0mniaquit (Ping timeout: 256 seconds)
01:07:02  * maksimlinjoined
01:07:20  * defunctzombiechanged nick to defunctzombie_zz
01:13:19  * jxsonjoined
01:15:30  * jergasonjoined
01:17:26  * jxsonquit (Ping timeout: 240 seconds)
01:21:19  * coderzachjoined
01:22:23  * defunctzombie_zzchanged nick to defunctzombie
01:22:38  * vitorpachecojoined
01:26:38  * jcrugzzjoined
01:30:55  * kumavisquit (Quit: kumavis)
01:36:18  * mikolalysenkojoined
01:36:20  * timoxleyjoined
01:37:31  * jibayquit (Remote host closed the connection)
01:49:39  <chrisdickinson>isaacs: i've been playing with simple-streams (due to js-git stuff) and have actually been enjoying the experience a lot
01:50:32  <chrisdickinson>https://github.com/creationix/js-git/blob/master/specs/simple-stream.md
01:54:19  * nicholas_joined
01:55:40  * kumavisjoined
01:58:42  * prettyrobotsjoined
01:58:43  * nicholas_quit (Ping timeout: 264 seconds)
01:59:04  * prettyrobotschanged nick to Guest84080
02:00:24  * Guest84080changed nick to prettyrobots
02:03:40  * mikolalysenkoquit (Ping timeout: 240 seconds)
02:03:44  * timoxleyquit (Remote host closed the connection)
02:14:59  * timoxleyjoined
02:22:57  * i_m_cajoined
02:23:54  <mbalho>ooh
02:24:14  <mbalho>kidna like dominics pullstreams
02:26:30  * whit537quit (Ping timeout: 264 seconds)
02:29:39  <jesusabdullah>Yeah
02:30:05  <jesusabdullah>Tim showed them off yesterday at the thing
02:30:38  * kumavisquit (Quit: kumavis)
02:32:27  * mikolalysenkojoined
02:36:19  * defunctzombiechanged nick to defunctzombie_zz
02:45:14  * mikolalysenkoquit (Ping timeout: 256 seconds)
02:50:41  * defunctzombie_zzchanged nick to defunctzombie
02:53:14  * mikolalysenkojoined
03:00:14  * i_m_caquit (Ping timeout: 264 seconds)
03:00:43  * kumavisjoined
03:01:24  * i_m_cajoined
03:02:58  * jxsonjoined
03:03:18  <chrisdickinson>they're actually fairly nice to write
03:03:36  <chrisdickinson>i did a lil' presentation on them for pdxnode: https://github.com/PDXNode/pdxnode/tree/master/2013-jul/simple-streams
03:18:53  * mikolalysenkoquit (Ping timeout: 245 seconds)
03:19:53  * damonoehlmanjoined
03:24:21  * timoxley_joined
03:24:57  * tilgovijoined
03:26:14  * timoxleyquit (Ping timeout: 240 seconds)
03:43:02  * i_m_caquit (Ping timeout: 240 seconds)
03:43:12  * timoxleyjoined
03:44:16  * st_lukequit (Remote host closed the connection)
03:45:50  * timoxley_quit (Ping timeout: 245 seconds)
03:50:12  * mikolalysenkojoined
03:55:58  * wolfeidauquit (Read error: Connection reset by peer)
03:56:26  * wolfeidaujoined
03:57:59  * timoxley_joined
04:00:36  * timoxleyquit (Ping timeout: 256 seconds)
04:04:46  * jergasonquit (Remote host closed the connection)
04:05:55  * dguttmanquit (Quit: dguttman)
04:07:40  * timoxleyjoined
04:10:00  * timoxley_quit (Ping timeout: 245 seconds)
04:12:52  * dguttmanjoined
04:14:38  * coderzachquit (Quit: coderzach)
04:19:30  * calvinfoquit (Quit: Leaving.)
04:22:43  * timoxley_joined
04:24:26  * timoxle__joined
04:25:08  * timoxleyquit (Ping timeout: 245 seconds)
04:26:27  <chapel>jesusabdullah: is Tim local to you?
04:27:14  * tilgoviquit (Read error: Operation timed out)
04:27:48  * timoxley_quit (Ping timeout: 256 seconds)
04:45:58  * vitorpachecoquit (Quit: Saindo)
04:50:59  <jesusabdullah>chapel: Which Tim?
04:51:15  <chapel>creationix:
04:57:23  * maksimlinquit (Quit: ChatZilla 0.9.90.1 [Firefox 23.0/20130803215302])
05:02:50  * defunctzombiechanged nick to defunctzombie_zz
05:05:16  * AvianFluquit (Ping timeout: 264 seconds)
05:06:09  * timoxleyjoined
05:07:32  * AvianFlujoined
05:09:14  * timoxle__quit (Ping timeout: 264 seconds)
05:11:27  * calvinfojoined
05:12:15  * jergasonjoined
05:12:46  * mikolalysenkoquit (Ping timeout: 240 seconds)
05:17:21  * jergasonquit (Ping timeout: 276 seconds)
05:18:02  * jxsonquit (Remote host closed the connection)
05:20:35  <jesusabdullah>chapel: no he just dropped by to visit
05:21:21  <jesusabdullah>substack: do you know of a thing that will take a non-requirable file and make it requirable by, like, passing module.exports in as the window scope or some BS?
05:24:42  * maksimlinjoined
05:33:13  <jesusabdullah>substack: in other words, suppose I want to do require('angular') but don't want to fork angular.js
05:35:46  <substack>jesusabdullah: probs somebody has done that for angular already
05:36:49  <jesusabdullah>was having issues finding it but maybe I suck
05:37:32  * defunctzombie_zzchanged nick to defunctzombie
05:39:27  <jesusabdullah>ohey had to dig but yeah good call
05:40:23  <jesusabdullah>substack: https://github.com/darvin/angular-browserify/blob/master/build.js daaaang
05:46:18  * shamaquit (Remote host closed the connection)
05:53:04  * dguttmanquit (Quit: dguttman)
05:53:28  * timoxleyquit (Ping timeout: 245 seconds)
06:05:12  * kumavisquit (Quit: kumavis)
06:09:43  * damonoehlmanquit (Ping timeout: 245 seconds)
06:11:14  * jergasonjoined
06:11:40  * calvinfoquit (Quit: Leaving.)
06:18:21  * jxsonjoined
06:23:16  * jxsonquit (Ping timeout: 264 seconds)
06:23:41  * kumavisjoined
06:41:54  * djcoinjoined
06:49:25  * calvinfojoined
06:51:12  * jergasonquit (Remote host closed the connection)
07:05:21  * kumavisquit (Quit: kumavis)
07:05:56  * tilgovijoined
07:09:11  * defunctzombiechanged nick to defunctzombie_zz
07:18:15  * calvinfoquit (Quit: Leaving.)
07:25:25  * mk30_quit (Ping timeout: 250 seconds)
07:32:17  * calvinfojoined
07:35:20  * tilgoviquit (Remote host closed the connection)
07:52:57  <guybrush>node bla "foo" -> process.argv = ['node','bla','foo'] ... why is this not ['node','bla','"foo"'] :/
07:55:48  * nicholasfjoined
07:56:38  <guybrush>like `node spawner -- node -e "setInterval(function(){console.log( 'hello' )},1000)"`
07:57:23  * calvinfoquit (Quit: Leaving.)
07:57:44  * nicholasfquit (Read error: Connection reset by peer)
07:57:55  * nicholasfjoined
08:00:47  * jibayjoined
08:02:58  * dominictarrjoined
08:21:45  * jergasonjoined
08:26:14  * jergasonquit (Ping timeout: 240 seconds)
08:29:05  * damonoehlmanjoined
08:29:30  * jcrugzzquit (Ping timeout: 264 seconds)
08:34:58  <damonoehlman>dominictarr: hey mate saw you added something else on the module-deps thread via email but not visible in github...
08:35:19  <damonoehlman>did you delete the comment? if so, np
08:36:21  <dominictarr>damonoehlman: yeah, decided it's a silly thread - already discussion is 10x what the code was -
08:36:37  <dominictarr>substack didn't want it - so write a module.
08:37:08  <damonoehlman>cool
08:37:14  <damonoehlman>i'm not fussed either way
08:37:26  * timoxleyjoined
08:37:44  <damonoehlman>just figured forbeslindsay was genuine in his request
08:56:01  * jcrugzzjoined
09:04:17  * jcrugzzquit (Ping timeout: 246 seconds)
09:08:41  <dominictarr>damonoehlman: probably, but it wasn't a good discussion - you can't persude someone like substack my talking more
09:09:10  <dominictarr>just give him the idea - and let him come to his own decision
09:13:29  <damonoehlman>dominictarr: yeah no worries, that makes sense. Heck that's the way we all operate :)
09:21:45  * mirkokieferjoined
09:22:27  * mirkokieferquit (Client Quit)
09:32:02  * mirkokieferjoined
10:12:29  * timoxley_joined
10:15:14  * timoxleyquit (Ping timeout: 264 seconds)
10:16:34  * stagasjoined
10:22:12  * timoxleyjoined
10:24:43  * timoxley_quit (Ping timeout: 245 seconds)
10:42:21  * AvianFluquit (Remote host closed the connection)
10:44:24  * mcollinajoined
11:13:23  * mirkokieferquit (Quit: mirkokiefer)
11:36:09  * whit537joined
12:08:30  * frankblizzardjoined
12:08:34  * thlorenzjoined
12:29:43  <dominictarr>great article on programming right here http://tvtropes.org/pmwiki/pmwiki.php/Main/FunctionalMagic
12:37:51  * mirkokieferjoined
12:39:47  * maksimlinquit (Quit: ChatZilla 0.9.90.1 [Firefox 23.0/20130803215302])
12:40:34  * ins0mniajoined
12:45:00  * mcollinaquit (Read error: No route to host)
12:45:09  * mcollina_joined
12:57:32  * AvianFlujoined
13:08:07  * ednapiranhajoined
13:12:40  * thlorenzquit (Remote host closed the connection)
13:31:03  * mikolalysenkojoined
13:37:05  * AvianFluquit (Remote host closed the connection)
13:45:45  <Domenic_>jesusabdullah: sounds like you want thlorenz's browserify-shim
13:46:32  * chapelquit (Ping timeout: 260 seconds)
13:48:21  <dominictarr>jaz303: hey, are you interested in mobile devices?
13:50:16  * yorickjoined
13:53:00  * coderzachjoined
13:53:39  * chapeljoined
14:00:20  * kevino80joined
14:06:57  * fallsemojoined
14:13:00  * whit537quit (Quit: whit537)
14:13:59  * whit537joined
14:15:08  <jez0990_>dominictarr: was it substack's powerful Summon Magic that brought us all here?
14:15:27  * tmcwjoined
14:15:45  <dominictarr>jez0990_: that is quite possible
14:16:02  <dominictarr>jez0990_: https://github.com/dominictarr/vector-touch#rant
14:20:41  <dominictarr>jez0990_: idea: wizard game based on geometry
14:21:10  <dominictarr>could teach geometry in a visual way, and ideas like recursion too
14:21:33  * jxsonjoined
14:25:57  <jez0990_>dominictarr: sounds like the real game would be making the game...
14:26:14  <dominictarr>that is the sort of game I like to play
14:26:16  * jxsonquit (Ping timeout: 264 seconds)
14:26:26  <jez0990_>agree
14:29:55  * mcollina_quit (Ping timeout: 264 seconds)
14:30:21  <dominictarr>plus, you could fill it with that 'sacred geometry' mystical crap that hippies love
14:34:13  * Maciek416quit (Read error: Connection reset by peer)
14:46:22  * AvianFlujoined
14:47:48  * dguttmanjoined
15:02:26  * mcollinajoined
15:02:50  * thlorenzjoined
15:02:55  * mikolalysenkoquit (Ping timeout: 245 seconds)
15:03:38  * jergasonjoined
15:04:27  <thlorenz>substack: what are the chances of adding a --dedupe option to browserify?
15:05:29  <thlorenz>I'm thinking of changing resolve to track which packages it resolved already and if it finds the same package again with version within acceptable range it will redirect to that previously resolved one
15:11:01  * ednapiranhaquit (Remote host closed the connection)
15:11:07  <dominictarr>thlorenz: you could also have a check that checked if it bundled any identical (by hash) files and just reference them
15:11:27  * ednapiranhajoined
15:11:55  <dominictarr>ednapiranha: hey, I tried your ffos app, roller, but I couldn't get it to do anything
15:12:11  <thlorenz>dominictarr: doing that server side https://github.com/thlorenz/dynamic-dedupe but I don't want to have to readjust soure maps, etc.
15:12:30  <dominictarr>oh right - I forgot about that
15:12:55  <thlorenz>dominictarr: also I could have the exact same string in a file i.e. 'require('./foo')' but it coudl mean different things depending on where the file came from
15:13:19  <dominictarr>yeah, you'd need to account for that
15:13:32  <thlorenz>do the cleaner solution is to dedupe while resolving
15:13:35  <thlorenz>imo
15:14:05  <thlorenz>kinda like npm does it (except on the fly vs actually moving files)
15:14:16  <dominictarr>like there is the commit tree, and then the trees and then the blobs
15:14:27  <dominictarr>thlorenz: npmd has a thing: npmd install --greedy
15:14:52  <dominictarr>that installs as flatly as possible, only going deeper than one level when there is a conflict.
15:14:56  <thlorenz>dominictarr: npm dedupe works fine as well - that is until I link stuff during development ;)
15:15:08  <thlorenz>then dedupe breaks
15:15:47  <thlorenz>and I don't want the app to behave differently just b/c I linked something -- in my case I get two backbone instances which breaks the entire app
15:16:39  * ednapiranhaquit (Ping timeout: 276 seconds)
15:30:29  * ednapiranhajoined
15:33:36  * Domenic_quit (Excess Flood)
15:33:55  * Domenic_joined
15:34:14  * calvinfojoined
15:40:55  * jergasonquit (Remote host closed the connection)
15:41:19  * frankblizzardquit (Read error: No route to host)
15:41:50  * frankblizzardjoined
15:43:29  * frankblizzardquit (Remote host closed the connection)
15:44:10  * chapelquit (Ping timeout: 245 seconds)
15:44:51  <dlmanning>http://blog.trevnorris.com/2013/08/long-live-callbacks.html
15:45:27  <dlmanning>No closures makes me sad :(
15:46:45  * calvinfoquit (Quit: Leaving.)
15:50:31  * whit537quit (Quit: whit537)
15:51:24  * chapeljoined
15:53:41  * mikolalysenkojoined
15:55:38  * jergasonjoined
15:56:19  <dominictarr>dlmanning: it's not even about callbacks!
16:00:02  * tmcwquit (Remote host closed the connection)
16:00:17  * tmcwjoined
16:01:10  * kevino80quit (Remote host closed the connection)
16:01:39  <dlmanning>dominictarr: I was really surprised by the performance differential
16:01:51  <dominictarr>it's a contrived example
16:02:22  <dominictarr>you can probably get closures to go faster than that
16:02:29  * ednapiranhaquit (Remote host closed the connection)
16:02:35  * kevino80joined
16:03:13  <dlmanning>I wish JIT stuff weren't all so mystical
16:03:36  <dlmanning>... or course it isn't. I just haven't invested the time to understand what's going on
16:04:47  <dominictarr>dlmanning: this is a much better article http://mrale.ph/blog/2013/08/14/hidden-classes-vs-jsperf.html
16:05:00  * mikolaly1enkojoined
16:05:30  <dominictarr>dlmanning: ask chrisdickinson or creationix about how to make closures fast
16:05:57  <dominictarr>but, if you are doing io, then it probably doesn't matter much, because IO will overshadow everything
16:06:03  <dlmanning>right
16:08:06  * mikolalysenkoquit (Ping timeout: 240 seconds)
16:09:06  * tilgovijoined
16:09:14  <dominictarr>dlmanning: I think closures are optimizable, they just havn't been optimized yet
16:10:37  <dlmanning>dominictarr: So mraleph was asked about this when he did the NodeUp performance show
16:11:16  <dominictarr>I heard that the v8 dev team at google are working on dart at the moment :(
16:11:47  <dlmanning>His replies seemed to indicate that there was that about closures that was fundamentally opaque to optimization
16:13:24  <dominictarr>dlmanning: in one of his other posts he mentions what you could do
16:13:41  <dlmanning>I'm reading through them all now
16:14:11  <dlmanning>dominictarr: btw, do you know of any good books on cyptography?
16:14:18  <dominictarr>dlmanning: by my reckoning, prototype chains and stacks of closures are the same thing
16:14:39  <dominictarr>dlmanning: cryptonomicon, by neal stephenson
16:14:50  <dlmanning>:)
16:14:57  <dominictarr>also, http://cacr.uwaterloo.ca/hac/
16:15:14  <dominictarr>(I havn't read that yet, but everyone seems to recommend it)
16:15:47  * thlorenzquit (Remote host closed the connection)
16:15:49  <dlmanning>Was looking at http://www.amazon.com/Understanding-Cryptography-Textbook-Practitioners-ebook/dp/B00475ARKM/
16:17:59  * timoxley_joined
16:18:00  <dlmanning>I should read cryptonomicon. I really liked Anathem
16:18:21  <dominictarr>and snowcrash and the diamond age
16:18:37  <dominictarr>yeah, anathem was good.
16:20:37  <dlmanning>anyway, thanks for the links!
16:20:43  * kumavisjoined
16:20:55  * timoxleyquit (Ping timeout: 264 seconds)
16:21:05  * dguttmanquit (Quit: dguttman)
16:21:06  <dominictarr>jez0990_: so, how the geometry game could work - you could have a few basic operation - like taking the intersection of two lines
16:21:15  <dominictarr>or to draw a circle
16:21:38  <dominictarr>or to intersect a line and a circle, etc
16:21:56  <jez0990_>as in, point-and-click operations?
16:22:00  * mcollinaquit (Ping timeout: 268 seconds)
16:22:05  <dominictarr>yes, or touch
16:22:22  <dominictarr>so like with 2 points
16:22:25  <dominictarr>you can create a line
16:22:27  * jxsonjoined
16:22:48  * coderzachquit (Quit: coderzach)
16:22:53  * jxsonquit (Read error: Connection reset by peer)
16:23:08  * jxsonjoined
16:23:54  <dominictarr>and given another point you could say, construct a circle that was tangential to the line and centered on the 3rd point
16:23:56  <dominictarr>etc
16:24:10  <jez0990_>and record macros (spells) for building lattice structures
16:24:12  <dominictarr>then abstract out the original 3 points that formed the input
16:24:17  <jesusabdullah>Domenic_: yeah most likely
16:24:26  <dominictarr>turn them into "function arguments"
16:25:06  <dominictarr>see also: http://vimeo.com/64895205
16:27:39  * jxsonquit (Ping timeout: 256 seconds)
16:31:48  * mirkokieferquit (Quit: mirkokiefer)
16:32:13  * mcollinajoined
16:33:35  * ednapiranhajoined
16:34:46  <jez0990_>dominictarr: I love the idea of visualising programs as machines and I think you're right that geometry could provide a highly intuitive interface
16:35:23  <jez0990_>and great video, bret victor is quite the showman
16:35:37  <jez0990_>probably the most epic conclusion to a tech talk ever
16:35:43  * kevino80quit (Remote host closed the connection)
16:36:36  * calvinfojoined
16:36:58  <jez0990_>I guess by comparison the nature of the apps that he builds for doing that stuff is very traditional and very rigid
16:37:17  <jez0990_>this game would have a control interface as dynamic as the things being controlled
16:37:22  <jez0990_>all built of the same stuff
16:38:32  <dominictarr>well, he's adapted the idea into a art medium
16:38:41  <dominictarr>you could use it to build a game too
16:41:40  * defunctzombie_zzchanged nick to defunctzombie
16:41:41  * ednapiranhaquit (Ping timeout: 248 seconds)
16:42:30  * whit537joined
16:43:11  * dominictarrquit (Quit: dominictarr)
16:46:59  * thlorenzjoined
16:52:41  * jcrugzzjoined
16:53:29  * tilgoviquit (Remote host closed the connection)
16:55:07  * thlorenzquit (Ping timeout: 240 seconds)
16:57:56  * tmcwquit (Remote host closed the connection)
17:05:48  <chrisdickinson>dlmanning: far as performance articles go, that's a pretty irksome one
17:06:00  <chrisdickinson>lots of prescription with a lot of handwaving
17:06:08  * tmcwjoined
17:07:34  * dguttmanjoined
17:08:46  * ednapiranhajoined
17:09:55  <chrisdickinson>dlmanning: also the initial example is not an apples to apples comparison showing that closures are slower :)
17:11:42  * mcollinaquit (Read error: Connection reset by peer)
17:11:58  * mcollinajoined
17:13:09  * jez0990_quit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
17:13:59  * jez0990joined
17:20:27  * dominictarrjoined
17:22:23  <dlmanning>chrisdickinson: am still reading through mraleph's posts to better understand the situation
17:26:59  <chrisdickinson>dlmanning: the part that's kind of in error is that the author is testing both allocation *and* runtime
17:27:02  <chrisdickinson>and the first example is allocating twice as much. that's not a downside of closures, that's a downside of writing class constructors poorly
17:27:05  <chrisdickinson>object + function, instead of "just object"
17:28:44  <dlmanning>chrisdickinson: So you're saying there's some confounding
17:29:27  <chrisdickinson>i think so, testing now to see if it's really bad.
17:29:31  <chrisdickinson>apparently not!
17:29:32  <chrisdickinson>hm.
17:30:13  * jxsonjoined
17:30:22  <dlmanning>Placing the function on the class instance would cause a new copy to be created for each instantiation, no?
17:32:38  * chapelquit (Ping timeout: 264 seconds)
17:36:05  * mcollinaquit (Read error: Connection reset by peer)
17:36:10  * mcollina_joined
17:42:54  * mcollina_quit (Remote host closed the connection)
17:44:53  * kevino80joined
17:46:39  <chrisdickinson>dlmanning: yep
17:46:56  <chrisdickinson>interesting, interesting, interesting
17:47:35  * shamajoined
17:49:17  <dlmanning>chrisdickinson: So you're saying that your tests are not showing a large performance change just from putting the methods on the instance?
17:49:41  <chrisdickinson>dlmanning: closure lookup appears to be slow, looking into why
17:50:34  * chapeljoined
17:51:21  * calvinfoquit (Ping timeout: 276 seconds)
17:54:00  * calvinfojoined
17:55:39  <jcrugzz>chrisdickinson dlmanning: could you guys link what you are reading? curious :)
17:57:13  <dlmanning>http://blog.trevnorris.com/2013/08/long-live-callbacks.html
17:57:30  <dlmanning>jcrugzz: ^
17:57:49  <jcrugzz>dlmanning: thanks!
17:58:33  <chrisdickinson>jcrugzz: testing his code and some variants using `node --trace_gc --trace_opt --trace_deopt` et al
18:00:09  <jcrugzz>chrisdickinson: cool, will definitely want to see results
18:02:07  <jcrugzz>chrisdickinson: yea i think this is more, attach methods to the prototype instead of defining them in the constructor
18:04:03  <chrisdickinson>jcrugzz: not quite!
18:04:17  <chrisdickinson>that's what he's arguing for, but not necessarily what's going on perf-wise
18:05:50  <chrisdickinson>the larger problem is what happens on scope lookup -- i.e., when looking up "x" vs. "this.x"
18:06:56  <dlmanning>So looking up 'x' in the closure's Context is a lot slower than this.x?
18:07:06  <chrisdickinson>it seems to be.
18:07:21  * dlmanningwonders why that should be so
18:07:27  <jcrugzz>chrisdickinson: ahh interesting
18:08:06  <jcrugzz>chrisdickinson: so if the variable was attached to `this` the performance evens back out?
18:08:26  <chrisdickinson>testing...
18:08:29  <chrisdickinson>yes
18:08:32  <chrisdickinson>this.
18:10:05  <dlmanning>and his larger argument is that because every callback abstraction device has to rely on a closure somewhere in the mix, they're always gonna be slower
18:10:19  <jcrugzz>chrisdickinson: also gist your testing when you are done if you could :)
18:14:15  * kevino80quit (Remote host closed the connection)
18:19:15  <chrisdickinson>jcrugzz: https://gist.github.com/chrisdickinson/7d344ca7454adfd11a15
18:19:26  <chrisdickinson>cc dlmanning ^^
18:19:38  * calvinfoquit (Read error: Connection reset by peer)
18:19:45  <jcrugzz>chrisdickinson: awesome thanks!
18:19:54  <dlmanning>chrisdickinson: gratzi
18:19:56  * calvinfojoined
18:20:22  * Maciek416joined
18:20:51  <chrisdickinson>oh, weird, weird
18:21:08  <chrisdickinson>dlmanning: jcrugzz: run each of them with `--trace_gc`
18:29:05  <dlmanning>chrisdickinson: I don't see any gc's in any of them
18:29:51  <chrisdickinson>dlmanning: which version of node?
18:30:01  <chrisdickinson>i'm seeing a wad of gc's for ex1
18:30:17  <chrisdickinson>`time WHICH=ex1 node --trace_gc run.js`
18:30:22  <dlmanning>v0.10.15
18:30:25  <mbalho>anyone know a module that can serialize an entire folder structure and create it on the other end of a stream?
18:30:29  <mbalho>e.g. rsync
18:30:40  <mbalho>except i dont care about incremental sync/diffs, just one time bulk copies
18:30:57  <chrisdickinson>mbalho: use tar + tar-parse?
18:31:11  <chrisdickinson>i think isaacs is the most full-featured
18:31:19  <dlmanning>chrisdickinson: Strike that, got a bunch now
18:31:21  <chrisdickinson>there should be an apostrophe in the above sentence
18:32:06  <dlmanning>lol
18:34:03  <dlmanning>chrisdickinson: So using the closure makes the gc go crazy
18:34:12  <chrisdickinson>unclear
18:34:17  <chrisdickinson>it's certainly a surprising result
18:34:24  <chrisdickinson>but i can't tell if it's just because it's alive for longer or not
18:34:25  <jcrugzz>damn v8 magic
18:34:32  <dlmanning>right
18:34:33  <jcrugzz>xD
18:35:18  <dlmanning>Is the gc making it take longer or is gc running because it's running longer
18:35:26  * thlorenzjoined
18:35:47  <mbalho>chrisdickinson: can you just give a folder to tar and it will return a tarball with all the files or do you have to traverse it yourself
18:35:51  <chrisdickinson>running the "fast" examples with 1e12 instead of 1e8
18:37:12  * kevino80joined
18:39:31  <dlmanning>gc runs many fewer times even when the fast examples are drawn out
18:39:37  <mbalho>ooh https://npmjs.org/package/node-archiver
18:41:48  <chrisdickinson>dlmanning: yep!
18:42:07  <chrisdickinson>mbalho: ah, the docs from npm.im/tar disappeared :(
18:42:28  <mbalho>isaacs: ur docs suck
18:43:10  <mbalho>oh also https://github.com/ctalkington/node-archiver
18:43:41  * coderzachjoined
18:43:45  <mbalho>except that doesnt traverse for you
18:44:30  <chrisdickinson>mbalho: http://npm.im/ls-stream
18:44:33  <chrisdickinson>though it lstats
18:45:30  <mbalho>what are the implications of it lstatting
18:45:44  <chrisdickinson>it'll follow symlinks
18:45:52  <mbalho>ah ok thats fine
18:46:17  <chrisdickinson>you can change it with `ls({readdir: fs.readdir, lstat: fs.stat}, 'path/to/dir')`
18:46:29  <mbalho>this is for streaming a leveldb folder as a targz
18:46:34  <chrisdickinson>oh, nice
18:46:58  <mbalho>https://github.com/juliangruber/multilevel/issues/36
18:48:52  <chrisdickinson>dlmanning: yeah, it gc's twice and then… nothing
18:49:37  <dlmanning>So maybe the gc is really aggressive about cleaning up closure contexts
18:52:24  * thlorenz_joined
18:55:36  <chrisdickinson>dlmanning: next most interesting thing, do `--trace_osr --trace_inlining` on ex3.js
18:56:21  <chrisdickinson>dlmanning: a big part of the reason it can be so fast is that it's inlining distance into the loop -- and that's probably a big part of why we're not seeing GC
18:57:04  <chrisdickinson>and on ex1.js, "Did not inline distance called from (target requires context change)."
18:57:06  * thlorenz_quit (Ping timeout: 264 seconds)
18:58:04  * jxsonquit (Remote host closed the connection)
18:58:35  * jxsonjoined
18:58:41  <dlmanning>Yup, interesting
18:58:51  * mikolaly1enkoquit (Ping timeout: 240 seconds)
18:59:30  <dlmanning>And it's not inlining distance because it depends on closure variables
18:59:52  <dlmanning>That sounds very much like what I remember mraleph saying on NodeUp
19:00:08  <chrisdickinson>dlmanning: https://github.com/v8/v8/blob/master/src/hydrogen.cc#L6339-L6345
19:00:20  * mikolalysenkojoined
19:00:21  <thlorenz>chrisdickinson: rvagg: had a question regarding through2 - would that handle 1 to many transforms?
19:00:44  <dlmanning>Well there you go
19:01:10  <thlorenz>and in the second example here - https://github.com/rvagg/through2/blob/master/README.md - wouldn't it fall back to streams1 since on('data' .. ) is called?
19:02:54  <chrisdickinson>dlmanning: well, i feel like i've learned and grown
19:03:22  <dlmanning>chrisdickinson: As do I. Thanks for the investigation!
19:06:10  <dlmanning>chrisdickinson: Would you say the moral of the story is to not call closures in a hot loop?
19:06:42  <chrisdickinson>dlmanning: i think the moral of the story is, as is always the case with these things, "it depends" :)
19:07:04  <chrisdickinson>for example, if the hot loop were within the same context as the function it was calling, that should be okay
19:07:19  <dlmanning>*nod*
19:07:34  <guybrush>also thats only v8 (which changes like every week anyway :D) maybe on spidermonkey its yet another story
19:08:18  <guybrush>just bench critical codepaths, most of the time it doesnt matter anyway i guess
19:11:35  * jergasonquit (Read error: Connection reset by peer)
19:15:31  * jergasonjoined
19:16:08  <dominictarr>does anyone have modules that they recommend for doing canvas animations?
19:19:19  <guybrush>threejs also renders canvas :p
19:21:05  <dominictarr>I don't need 3d stuff
19:21:21  <guybrush>mh i think its pretty good for 2d too
19:21:36  <guybrush>if you dont mind the bloat
19:37:35  * tilgovijoined
19:44:23  * kumavisquit (Quit: kumavis)
19:47:36  * timoxley_quit (Remote host closed the connection)
19:52:33  * thlorenzquit (Ping timeout: 240 seconds)
19:57:21  * no9joined
19:57:46  * nicholasfquit (Read error: Connection reset by peer)
19:58:15  * nicholasfjoined
20:07:48  * kumavis_joined
20:11:50  * whit537quit (Quit: whit537)
20:15:19  * DTrejojoined
20:24:41  * st_lukejoined
20:25:14  * mk30joined
20:25:33  * ednapiranhaquit (Remote host closed the connection)
20:29:44  <dominictarr>mikolalysenko: hey, I don't suppose you've implemented FFT in js?
20:32:53  <mikolalysenko>dominictarr: I did it twice actually
20:33:07  <mikolalysenko>this one is ok, but still room for improvement: https://github.com/mikolalysenko/ndarray-fft
20:33:17  <mikolalysenko>it works well enough though
20:33:25  <mikolalysenko>but could be a lot faster I think
20:34:01  <mbalho>:D http://npmjs.org/dir-tar-stream
20:36:23  <dominictarr>mikolalysenko: aha, right. this is what I should use
20:37:10  <mikolalysenko>dominictarr: I've used it in a few different modules so it is reasonably well tested. for example, https://github.com/mikolalysenko/detect-pitch
20:38:10  <mikolalysenko>or this thing: https://github.com/mikolalysenko/phase-align
20:38:18  <dominictarr>right. I'm playing with mobile ui stuff, and want to detect patterns in the various inputs
20:39:15  <dominictarr>so I want to be able to do stuff like detect rotating swipes
20:39:16  <dominictarr>etc
20:39:35  <dominictarr>but have the ui respond in a natural way
20:39:46  <dominictarr>so it has to respond with real physics
20:40:26  <mikolalysenko>so if you can track the fingers independently, then a rotation should be easy to detect and I don't think you'd need an fft
20:41:03  <dominictarr>I'm just exploring the possibilites for now
20:41:19  <mikolalysenko>gotcha
20:42:49  <dominictarr>so far, I'm just drawing stuff on the screen (touch positions, and differentials) to get a feel for the api and the device abilities.
20:43:09  * Maciek416quit (Remote host closed the connection)
20:43:47  <mikolalysenko>do the devices track the touches over time?
20:44:01  <mikolalysenko>or do you just get a list of independent touch events and it is up to you to match them
20:49:30  <dominictarr>mikolalysenko: they the track the identity of the touch - so you know it's the same finger
20:49:47  <dominictarr>and sometimes you get the pressure or the area of the touch
20:56:40  * ednapiranhajoined
21:01:53  * soldairjoined
21:04:55  * ednapiranhaquit (Ping timeout: 246 seconds)
21:15:40  <mbalho>if i have a fs.createWriteStream open should that block node from exiting
21:15:41  <mbalho>?
21:17:53  <soldair>mbalho: dont think so
21:18:57  <mbalho>hmm can i keep node from calling .exit on itself until a file has finished writing then?
21:19:22  <mbalho>maybe im just running into a bug with the library im using
21:19:38  <soldair>something reading data must not be keeping something in the event loop?
21:20:28  <soldair>mbalho: probably
21:27:15  <mbalho>chrisdickinson: do you know a good module for generating a streaming tar
21:28:02  <chrisdickinson>mbalho: for generation the only one i know of is npm.im/tar
21:28:22  * whit537joined
21:28:37  <mbalho>k
21:28:44  * st_lukequit (Remote host closed the connection)
21:30:43  <mbalho>ahh figured out the bug
21:31:03  <mbalho>the library im using (archiver) expects all input streams to have data, but if you pipe an empty file it gets confused
21:31:30  <mbalho>so intead i just give it an empty buffer, since it accepts file read streams or buffers for each tar entry
21:33:02  * jxsonquit (Remote host closed the connection)
21:33:41  * yorickquit (Read error: Connection reset by peer)
21:48:45  * mmckeggquit (Ping timeout: 245 seconds)
21:51:06  * mmckeggjoined
21:51:51  * jergasonquit (Remote host closed the connection)
21:53:17  * st_lukejoined
21:53:52  <mbalho>can node core untar? or do you have to do the file creation manually
21:56:04  * nicholasfquit (Remote host closed the connection)
21:56:33  <djcoin>mbalho: could you not just pass tar/untar task to some child process running the tar command ?
21:56:56  <mbalho>that wont work on windows
21:57:16  <jcrugzz>windows is overrated :p
21:57:19  <djcoin>ho, did not know that was a requirement
21:57:38  <mbalho>yea im writing a command line tool
21:57:42  <jcrugzz>ahh
21:57:47  <jcrugzz>makes sense then
21:58:18  * kevino80quit (Remote host closed the connection)
21:59:35  <djcoin>mbalho: are you working on your "dat" project where it is very likely that you have to deal with windows ?
21:59:48  <mbalho>yep exactly
22:00:37  <djcoin>interesting :)
22:00:40  * kumavis_quit (Quit: kumavis_)
22:03:21  * jxsonjoined
22:05:05  <djcoin>mbalho: https://npmjs.org/search?q=tar
22:05:13  <djcoin>You already have many things that fits
22:05:20  <mbalho>im using untar now
22:05:28  <mbalho>and it seems to be working
22:05:41  <djcoin>https://github.com/cranic/node-tar.gz for example
22:06:08  <mbalho>that doesnt work with streams though
22:07:39  <djcoin>Underlying node-tar (https://github.com/isaacs/node-tar) does however
22:07:57  <djcoin>Once you have tar, as the zlib is in node, you have won
22:08:20  <djcoin>(to pack whole dirs)
22:11:56  * jxsonquit (Ping timeout: 260 seconds)
22:12:42  * maksimlinjoined
22:13:19  * jxsonjoined
22:15:19  * AvianFluquit (Remote host closed the connection)
22:16:52  * fallsemoquit (Quit: Leaving.)
22:18:42  * mikolalysenkoquit (Ping timeout: 264 seconds)
22:19:19  * djcoinquit (Quit: WeeChat 0.4.0)
22:20:25  * coderzachquit (Quit: coderzach)
22:30:11  * tmcwquit (Remote host closed the connection)
22:32:36  * jergasonjoined
22:35:45  <mbalho>got it workign https://gist.github.com/maxogden/6313646
22:36:33  * kumavis_joined
22:56:27  * sal1191joined
22:57:01  <sal1191>hey yall I'm sick of googling up affiliate pages for updated info so I figured I'd come back here to ask yall...
22:57:09  <sal1191>Any suggestions on web hosting sites? I usually use dreamhost but.. i dunno
22:57:51  <sal1191>I'm tryin to help my buddy get his IT business started and we want to set up a used phone buying and selling service
23:01:38  * sal1191quit (Quit: Page closed)
23:04:29  <st_luke>digital ocean
23:04:40  <st_luke>oh thats a spammer
23:05:00  <st_luke>mbalho: is that guy going to sublet your room
23:05:06  <st_luke>maybe i should look for a subletter also
23:05:24  <mbalho>st_luke: i have a possible sublet, waiting to hear back
23:05:32  * jergasonquit (Remote host closed the connection)
23:05:46  <st_luke>nice
23:05:50  <st_luke>i have to find somewhere i guess
23:06:02  <mbalho>allergies?
23:06:59  <st_luke>yea
23:07:05  <mbalho>ahh that sucks
23:07:50  <st_luke>kinda
23:08:12  <st_luke>i dont really want to live in sf but it might just be easier
23:14:21  * i_m_cajoined
23:14:30  * damonoehlmanquit (Ping timeout: 264 seconds)
23:22:12  * i_m_caquit (Ping timeout: 276 seconds)
23:27:32  * damonoehlmanjoined
23:34:39  * hughskjoined
23:40:37  * tmcwjoined
23:44:24  * DTrejoquit (Remote host closed the connection)
23:45:01  * tmcwquit (Ping timeout: 245 seconds)
23:45:51  <isaacs>substack: what's a lexicographic string key?
23:46:10  <mbalho>isaacs: integers sort 1 10 2
23:46:14  <mbalho>isaacs: but what you want is 1 2 10
23:47:27  <isaacs>ok
23:47:35  <isaacs>so why is that not just zero-padding?
23:47:57  <mbalho>isaacs: zero padding assumes you know the max integer size you want to support
23:48:01  <isaacs>i see
23:48:21  <mbalho>isaacs: for a database auto incrementing id you wouldnt want to store 0000000000000000001
23:48:53  <isaacs>right
23:52:45  * AvianFlujoined
23:52:48  * vitorpachecojoined
23:54:51  * wolfeidauquit (Remote host closed the connection)
23:56:13  * wolfeidaujoined
23:58:57  * whit537_joined