00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:02:41  <st_luke>JS style functional programming
00:04:47  <substack>you've really got to pick and choose fp topics though since there's a ton of garbage
00:06:58  * thl0_zzjoined
00:07:01  * thl0_zzchanged nick to thl0
00:08:25  <mikolalysenko>I tend to avoid a lot of programming language stuff
00:08:40  <mikolalysenko>it is like algorithms and data structures, except it doesn't actually solve real problems
00:08:56  <mikolalysenko>(and I know I will take a lot of flak for that fairl bigoted opinion)
00:08:59  <defunctzombie>http://tryme.jit.su/shtylman/raphael/examples/simple.js
00:09:51  * defunctzombiechanged nick to defunctzombie_zz
00:10:08  <mikolalysenko>I suppose I am being a bit too harsh though, since in moderation it does have its place
00:11:59  <mikolalysenko>but I think that compared to things like new algorithms and techniques, PL and related tools are not that big a deal
00:17:52  <Raynos>substack: I like type annotations
00:17:59  * mikealjoined
00:18:14  <Raynos>i dont like functors, categories & monads, too confusing
00:18:26  <Raynos>i miss the ability to annotate my functions with their types for readablity
00:21:05  * mikeal1joined
00:21:18  * mikealquit (Read error: Connection reset by peer)
00:22:48  <Ralt>Raynos: you can do it with comments... function f /* int */ (arg1 /* string */, arg2 /* User */)
00:22:58  <Ralt>although it's ugly, I guess.
00:22:59  <Raynos>yeah thats ugly
00:23:52  <Raynos>i would prefer type gaurd syntax
00:23:59  <Raynos>function f::int (arg1::string, arg2::User
00:24:13  <Raynos>they dont have to mean anything
00:24:16  <Raynos>just allow me to do it
00:26:35  <Ralt>well, use typescript :P
00:26:46  <Raynos>no u
00:28:54  * wolfeidauquit (Remote host closed the connection)
00:31:00  * Benviejoined
00:35:54  * mikolalysenkoquit (Ping timeout: 256 seconds)
00:36:12  <Raynos>Benvie: how do I transpile ES6 to ES5 today?
00:36:22  <Raynos>and how do I integrate it into browserify :D
00:37:40  <Benvie>Raynos
00:37:52  <Benvie>wow
00:38:30  * mikolalysenkojoined
00:38:47  <Benvie>this conversation needs to happen at a meeting sometime
00:38:52  <Benvie>holy shit
00:39:31  <Benvie>meetup
00:39:43  <substack>how do I `module.exports=` in es6
00:40:04  <Raynos>you do just that
00:40:09  <Raynos>and ignore the entire es6 module system
00:40:14  <Benvie>export function mything(){}
00:40:23  <Raynos>because when I use an es6 to es5 transpiler
00:40:30  <Raynos>im going to fucking whitelist useful es6 features one at a time
00:40:50  <Raynos>Benvie: that exports a named token
00:40:56  <Benvie>wow
00:41:00  <Raynos>substack wants export=function mything() {}
00:41:48  <Benvie>is there a place in SF everybody gets shitfaced togthether? Because I need to be there
00:41:55  <Benvie>holy shit
00:42:15  <Raynos>http://www.meetup.com/beerjs/
00:42:22  <Raynos>Benvie: there aren't that many events I go too
00:42:33  <Benvie>no I mean right now
00:42:34  <substack>I don't go into sf very often
00:42:40  <Raynos>xd
00:43:06  <substack>twice a month maybe
00:43:09  <Raynos>Benvie: but seriously whats a good ES6 transpiler?
00:43:14  <Benvie>oh
00:43:42  <Benvie>uh traceur is the best...but nothing really good exists
00:44:05  <Benvie>I have stated what needs to exist...but have not made it yet
00:44:22  <substack>I really don't see how I can start using es6
00:44:38  <Benvie>without a good transpiler
00:44:55  <substack>also the module system is useless to me
00:45:05  * stlsaintjoined
00:45:12  <substack>I can't export a single function without forcing consumers to use the same name as the export
00:45:27  <Benvie>import { func } from 'func'
00:45:44  <substack>that only works when 'func' exports a function called func
00:45:49  <substack>that is a really bad design decision
00:45:56  * mikolalysenkoquit (Ping timeout: 246 seconds)
00:45:58  <Raynos>Benvie: what is the statement?
00:45:59  <substack>it forces consumers to use the name that the module author chose
00:46:06  <Benvie>well it should if func was made by substack
00:46:12  <Raynos>substack: they are going to fix es6 modules
00:46:16  <Raynos>we shouted hard enough
00:46:20  <substack>Raynos: I'm really skeptical about that.
00:46:26  <substack>all the bad things are still in there
00:46:29  <Benvie>fix in what way?
00:46:40  <Raynos>export token
00:46:43  <Benvie>single export was in for about 37 seconds and now it's not
00:46:48  * mikolalysenkojoined
00:46:49  <Raynos>let myname = import "dependency"
00:46:57  <substack>Benvie: single export is the only thing that matters
00:47:05  <Raynos>Benvie: exporting multiple tokens is stupid :D
00:47:06  <Benvie>unless you have newer information than me
00:47:10  <Benvie>pretty sure you do not
00:47:21  <substack>Benvie: multi-export is useless
00:47:22  * wolfeidaujoined
00:47:29  <substack>the point of modules is that they do a single thing
00:47:36  <Raynos>https://github.com/rwldrn/tc39-notes/blob/master/es6/2013-03/mar-12.md#use-case-single-export-modules
00:47:39  <Benvie>you should be in #jslang on mozlla'sa server btw
00:47:57  <substack>if you don't have a module system already then you'll write code that you go around calling a "module" that does a kitchen-sink's worth of things
00:48:00  <Benvie>no I was saying
00:48:06  <Benvie>it will not be fixed
00:48:06  <substack>but once you have a module system then you end up just doing a single thing at a time
00:48:10  <substack>which is properly modular
00:48:16  <Benvie>single export will not happen in es6
00:48:16  <substack>in node this happened
00:48:19  <Benvie>just saying
00:48:23  <substack>node started with exports.foo = ...
00:48:27  <substack>like es6 is now
00:48:40  <substack>but then everybody realized that was a stupid way to do it
00:48:47  <Raynos>Benvie: then fuck es6 modules
00:48:55  <substack>and now pretty much all the modules worth using just have a single module.exports = ... function
00:49:02  <Benvie>the view is that destructutring is good enough. Not claiming...just the messenger
00:49:23  <substack>destructuring is solving a problem that doesn't even exist if modules can only export a value
00:49:28  <Raynos>substack: and even the complex ones can use module.exports = object
00:49:42  <substack>yep!
00:49:47  <substack>it's properly fundamental and basic
00:49:55  <Raynos>anyway
00:49:57  <substack>instead of the litany of special cases that the current es6 modules has
00:49:58  <Raynos>fuck es6 modules
00:50:01  <Raynos>i want to use other features
00:50:02  <Benvie>I even started to implement exports =...
00:50:04  <Raynos>like =>
00:50:05  <Raynos>and pals
00:50:07  <Benvie>but then they took it out
00:50:18  <Benvie>er export =
00:50:28  <substack>Benvie: and I don't blame them. there are already too many special cases
00:50:34  <Benvie>no idea the reasoning
00:50:54  <Benvie>well the module system is...behind schedule
00:50:59  <substack>they should just get rid of all the special cases and all the destructuring and just return a single value
00:51:15  <Benvie>it's pushing back ES6 from this year to next year
00:51:21  <substack>good
00:51:24  <Benvie>so I guess that's why
00:51:25  <Raynos>then drop the es6 module system
00:51:26  <substack>es6 is *forever*
00:51:28  <Raynos>drop it
00:51:31  <substack>yes drop it
00:51:34  <Raynos>scope creep
00:51:38  <substack>it's not well-conceived
00:51:43  <Benvie>can't happen, not entirely
00:51:50  <substack>it's a hallmark of waterfall anyways to bucket all the features in a single monolithic release
00:52:05  <substack>either drop es6 modules or stop doing waterfall
00:52:11  <Benvie>but I did make a proposal for how it works on the import side
00:52:36  <Raynos>substack: or both :D
00:52:41  <substack>ideally!
00:52:44  <Benvie>basically all the shit in ES6..."Symbol", "Proxy", etc. is supposed to be imported as modules
00:52:48  <Benvie>system modules
00:52:52  <Benvie>Iterator
00:52:56  <substack>and this is why committees are a terrible way to write software
00:53:05  <substack>es6 is the wrong way to iterate on a design
00:53:14  <Benvie>instead of on the global object automatically
00:53:47  <Benvie>says nothing about how to export values....just import them
00:54:04  <Benvie>since the system can do whatever the fuck it wants
00:54:37  <substack>I'm just going to keep writing reusable software and the hell with whatever es6 wants to dictate by fiat
00:55:01  <substack>with no backing in real-world usage
00:55:10  <Benvie>fortunately you can mostly just use what you find reasonable
00:55:11  <substack>upon everybody forever because it's impossible to ever remove any feature
00:55:21  <Benvie>when it's supported anyway
00:55:31  <substack>Benvie: and I find node's module system perfectly adequate
00:55:38  <Benvie>arrow functions just landed in firefox nightly, btw
00:55:42  <substack>I see no reason to adopt yet another module system that has 0 code that I can use written for it
00:55:48  <Raynos>Benvie: anyway how I transpile?
00:56:24  <substack>especially not a module system that is strictly inferior to the one I'm presently using
00:56:34  <Benvie>you need to convert all operators to functions and then implement the lambda between es6 and es3 as js code
00:56:39  <Benvie>or es5 and e6
00:56:57  <substack>Raynos: use my fork of esprima
00:57:07  <substack>to tinker with operators
00:57:11  <Raynos>esprima parses es6?
00:57:11  <Benvie>yeah and esprima
00:57:16  <Benvie>yes
00:57:21  <Benvie>a branch of it does
00:57:31  <Benvie>it's how continuum works
00:57:36  <substack>Raynos: https://github.com/thlorenz/traceurify
00:57:36  <Raynos>anyway i dont want to write one :P
00:57:38  <Raynos>i want to use one
00:57:52  <Benvie>ok well I may make one
00:57:59  <substack>the linkis broken now ;_;
00:58:00  <Benvie>I will let you know sometime soon
00:58:15  <substack>ok it's https://github.com/thlorenz/es6ify now
00:58:20  <Benvie>learning mozilla stuff has drained the fuck out of me
00:58:45  <substack>Raynos: looks like you can just do -t es6ify
00:58:49  <Benvie>I do still want to make an es6 to es3 transpiler
00:59:06  <Raynos>but is traceur any good?
00:59:08  <Benvie>or es6 to es5 at least
00:59:10  <substack>no idea
00:59:11  <substack>ask thl0
00:59:24  <Benvie>yeah if you don't want proxies and shit
00:59:27  <Raynos>does it generate non retarded code
00:59:33  <substack>Benvie: anyways send my regards to es6
00:59:34  <Benvie>but otherwise it's pretty good
00:59:37  <thl0>Raynos: traceur seems to be ok
00:59:38  <Raynos>maybe i should just write my own
00:59:47  <Raynos>i want one that translates to clean js
00:59:54  <Raynos>=> should translate into an anonymous function
00:59:56  <Benvie>it uses the fuck out of try catch throw
01:00:09  <Benvie>that's how it implements block scope
01:00:11  <Benvie>sooooo
01:00:11  <thl0>Raynos: certain features are hard to transpile otherwise
01:00:20  <Benvie>kind of retarded code
01:00:28  <thl0>Benvie: try catch is the only way to express these things in ES5
01:00:32  <Raynos>thl0: then i wont use those features
01:00:34  <thl0>i.e. block scope
01:00:38  <Raynos>well for let
01:00:41  <Raynos>just transpile it into var
01:00:45  <Raynos>and fuck block scoping
01:00:50  <Benvie>without making functions for scope, I know
01:00:54  <Raynos>it doesnt have to be correct :D
01:00:59  <substack>thl0: maybe if enough es6 folks start using es6ify with browserify they will realize what junk es6 modules are compared to node-style
01:01:00  <thl0>Raynos: that'd be confusing
01:01:17  <thl0>substack: not supporting modules ;)
01:01:18  <substack>so I like that this project exists
01:01:20  <thl0>only commonjs
01:01:21  <substack>hahaha
01:01:23  <Benvie>the only other type of scope in ES5 is catch scope, no other option
01:01:38  <Raynos>in that case
01:01:42  <Benvie>well, unless you make a partial or full runtime
01:01:43  <thl0>substack: even traceur can't know what they'll cook up
01:01:44  <Raynos>dont support let
01:01:47  <substack>yeah hopefully they just drop modules and stop doing waterfall
01:01:59  <thl0>substack: there are two options
01:01:59  <Raynos>substack: es6 is another es4
01:02:02  <Benvie>I think it can be done better but I do not currntly have time to proove it
01:02:07  <substack>Raynos: I sure hope so.
01:02:10  <thl0>1: use commonJS only (recommended)
01:02:28  <thl0>2: use es6 modules only, transpile into one file yourself
01:02:47  <thl0>requires won't work for 2nd, so makes no sense for es6ify to support it
01:03:58  <thl0>Raynos: substack: Benvie: destructuring is nice though and default params
01:04:17  * wolfeidauquit (Remote host closed the connection)
01:04:22  <substack>thl0: not really disputing those
01:04:25  <substack>just the module system
01:04:30  <substack>such garbage
01:04:30  * yorickquit (Remote host closed the connection)
01:05:05  <thl0>substack: so es6ify is perfect then \o/
01:05:17  <Benvie>wow my glasses just broke
01:05:28  <Benvie>I am fucked
01:05:34  <thl0>substack: supports only es6 the good parts
01:06:12  <substack>thl0: write a blog post
01:06:16  <substack>"es6: the good parts"
01:06:37  <thl0>substack: ;) should leave that to Domenic_ he is way more involved in it
01:07:28  <substack>I'm pretty pleased with how transforms are working in browserify
01:07:40  <substack>especially with how they tie into the source map pipeline
01:07:48  <thl0>substack: agreed - very powerful yet simple
01:08:05  <Raynos>thl0, Benvie: i want a really nice one to one transpiler of es6
01:08:07  <thl0>substack: kinda like unix tools ;)
01:08:17  <Raynos>i.e. only support features that trivially transpiler cleanly
01:08:36  <Raynos>let { foo: bar, baz: fuuz } = require("./thing")
01:09:14  <Raynos>var thing__ = require("./thing"); \n var foo = thing__.bar; \n var baz = thing__.fuuz
01:09:14  <thl0>Raynos: look at this bundle: http://thlorenz.github.com/es6ify/js/bundle.js
01:09:24  <Raynos>thl0: I did, my eyes bled
01:09:39  <thl0>Raynos: whatever doesn't use the traceur.runtime is probably easily transpiled
01:09:41  <Raynos>$__0
01:09:54  <thl0>Raynos: all the other stuff probably not (i.e. generators)
01:10:01  <Benvie>Raynos: I'll let you know. Use traceur for now
01:10:12  <Raynos>id rather
01:10:13  <thl0>Raynos: look at the bottom (top is the crazy runtime)
01:10:14  <Raynos>use esprima
01:10:16  <Raynos>and do it myself
01:10:24  <Benvie>maybe
01:10:28  <thl0>Raynos: good luck - talk to you in a year ;)
01:10:34  <Raynos> for (var items = [], $__0 = 1; $__0 < arguments.length; $__0++) items[$__0 - 1] = arguments[$__0];
01:10:41  <Raynos>thl0: Ill just implement one feature at a time
01:10:45  <Raynos>=> should be an hours of work
01:10:50  <Benvie>I need to go drink a lot to forget how I just broke the shit out of my glasses
01:11:16  <thl0>Raynos: good idea - one feature == one module
01:11:36  <thl0>Raynos: if people take on just one feature, it could be done
01:11:45  <Raynos>ill do => :D
01:12:11  <Benvie>implement Proxy in ES5 -> cancel all life plans
01:12:32  <thl0>Benvie: not sure why you couldn't implement blockscope by wrapping in anonymous function
01:12:58  <Raynos>Benvie: I wont implement it
01:12:58  <Benvie>you can, except for arguments and performance
01:13:06  <Raynos>thl0: fuck block scope
01:13:10  <Raynos>just dont use let
01:13:19  <Benvie>const is good
01:13:22  <thl0>Raynos: just let let be?
01:13:31  <thl0>Benvie: agreed
01:13:42  <Raynos>only implement things that are trivial
01:13:58  <Benvie>I use const in my runtime stuff every time a value never changes
01:14:04  <thl0>Raynos: sounds like a plan -- GO!
01:14:08  <Benvie>not just for CONSTANTS
01:14:18  <Raynos>later tonight
01:14:27  <thl0>Benvie: const is misleading it should be final or immutable
01:14:48  <Raynos>thl0: its going to be bloody expensive
01:14:50  <Raynos>to write a transform
01:14:56  <Raynos>for each es6 feature
01:15:02  <Raynos>each through stream will have to parse it
01:15:06  <Benvie>ES5 only reserved const, of those three, so it is what it is
01:15:10  <Raynos>substack: ^
01:15:15  <thl0>Raynos: I'll do a kickstarter for each and have the community pay
01:15:16  <Benvie>also those two are way longer
01:15:17  <thl0>;)
01:15:24  <Raynos>I want one es6 feature per transform through stream
01:15:30  <Raynos>but i dont want each transform to parse it
01:15:51  <Benvie>"have the community pay" is a great slogan for....anything
01:16:22  <thl0>Raynos: back to es6ify (caching) for now - tomorrow I'll swap traceur with your implementation ? :P
01:16:48  * ralphtheninjaquit (Ping timeout: 252 seconds)
01:16:50  <Raynos>no I want one transform per es6 feature :P
01:17:19  <thl0>Raynos: okidoki - 'let's see if yours compiles faster than traceur
01:17:20  <Benvie>correct?
01:17:28  <substack>Raynos: implement the transforms to export a second function to take a raw ast
01:17:50  <substack>Raynos: then implement an es6 group transform module that threads the ast through all the transforms
01:17:58  <Benvie>I also have a transpiler
01:18:00  <thl0>Raynos: talking about ast that's probably a good place to start i.e esprima6
01:18:02  <Benvie>I actually do
01:18:16  <Ralt>hm
01:18:21  <Raynos>hean
01:18:29  <Ralt>I see you guys mentioning that try catch creates a new scope
01:18:31  <Raynos>ill use esprima6
01:18:34  <Ralt>which is true --- in most browsers
01:18:40  <Ralt>not in some browsers though.
01:18:51  <Benvie>https://github.com/Benvie/js-astify/blob/master/transformers/es6.js
01:19:32  <thl0>Raynos: you'd have to make esprima6 ;)
01:19:43  <Benvie>kind of outdated...but...
01:20:46  <Raynos>nah substack says
01:20:52  <Raynos>taht esprima already parses es6
01:21:11  <thl0>Raynos: really? wasn't aware of that
01:21:30  <Benvie>yes
01:21:37  <Benvie>it has an es6 branch
01:21:50  <Raynos>substack: does your fork of esprima include the es6 stuff?
01:21:52  <Benvie>it's how continuum parses es6
01:21:54  <thl0>Raynos: well then it should be a simple all-nighter to get a transpiler going
01:22:28  <Raynos>...
01:22:30  <Raynos>its like 1 hour
01:22:34  <Raynos>to implement =>
01:22:36  <Raynos>thats all I want
01:22:42  <Raynos>then ill rewrite all my modules with => xd
01:22:43  <Raynos>Oh fuck
01:22:45  <Raynos>source maps ;_;
01:22:59  <Raynos>thl0: how i sourcemap?
01:23:18  <Benvie>I gave you a link
01:23:20  <thl0>Raynos: traceur uses the source-map module by mozilla
01:23:22  <Benvie>go to it
01:23:38  <substack>Raynos: no just a hack to let you define custom unary keywords
01:23:42  <thl0>Raynos: it has a sourcemap generator - you can use that
01:23:46  <Benvie>oh hah sourcemaps are fitzgen
01:24:05  <substack>it still needs a thing to let n-ary keywords work
01:24:11  <substack>and binary ops
01:24:21  <thl0>Raynos: but to actually keep track of lines and columns - gnerated vs original is the generators (your) job
01:24:24  <Ralt>Raynos: you know, if you want =>, you could use coffeescript...
01:24:34  <Benvie>landing in firefox devtools like as we speak
01:24:44  <Ralt>fitzgen?
01:24:49  <Raynos>Ralt: Im going to hurt you
01:24:52  <substack>Benvie: does sourceContentsURL work in firefox yet?
01:24:59  <Ralt>Raynos: :P
01:25:21  <Benvie>guy who made sourcemaps for firefox devtools. Spent like the last two years on it
01:25:23  <Benvie>cooldude
01:25:55  <Benvie>susbstack: pretty sure it does not yet. But he's working on it
01:25:59  <Ralt>ff devtools are becoming usable?
01:26:10  <Benvie>yeah, this quarter
01:26:12  <thl0>Benvie: substack: think Firefox has them, but simply going to http://thlorenz.github.com/es6ify/ can test that (don't have it installed)
01:26:14  <Benvie>they kind of are now
01:26:20  <Ralt>compared to, say, firebug or chrome dev tools?
01:26:27  <Benvie>but missing some stuff that's in the works
01:26:30  <Benvie>yeah
01:26:36  <Ralt>coo
01:26:37  <Ralt>l
01:26:41  <Ralt>it was time
01:26:50  <Benvie>they will be better than the rest in the next 3-6 months
01:26:57  <Ralt>awesome
01:27:02  <Ralt>maybe I'll get back to ff then
01:27:36  <Benvie>there's a 10 person team working on them now
01:28:26  <substack>that actually makes me less optimistic about their outcome, not more :p
01:29:13  <substack>10 is above dunbar's number
01:29:32  <substack>oh whoops, wrong number
01:29:35  <Benvie>it's also swiching to use the addon sdk's module system...which replicates node's module system closely
01:29:39  <Benvie>hopefully that helps?
01:30:08  * chrisdickinsonquit (Quit: ZNC - http://znc.sourceforge.net)
01:32:33  * chrisdickinsonjoined
01:32:39  <Raynos>_Domenic: how do I tell npm to ignore EPEER errors?
01:35:28  <thl0>tempted to tweet another 'these recruiters' thing
01:35:32  <thl0>-- Integrate UI into design using JS/jQuery and AJAX
01:35:44  <thl0>:)
01:38:14  * defunctzombie_zzchanged nick to defunctzombie
01:38:31  * marcello3djoined
01:40:14  <defunctzombie>everyone working on modules needs to just look at lua and be done with it hahaha
01:41:51  * jcrugzzjoined
01:47:30  * st_lukequit (Remote host closed the connection)
01:48:07  <Ralt>seriously
01:48:13  <Ralt>ff needs autoconf 2.13 to build
01:48:24  <Ralt>I have 2.69 installed...
01:49:09  * sorensen_joined
01:49:10  * sorensen_quit (Client Quit)
01:49:55  <thl0>defunctzombie: if there was a lua to js compiler, luaify would be next ;)
01:50:05  <defunctzombie>thl0: hahaha
01:50:13  <defunctzombie>thl0: I hate lua syntax
01:50:17  <defunctzombie>I want to merge lua and javascript
01:50:26  <defunctzombie>take all the shit away from js
01:50:30  <thl0>defunctzombie: get the worst of both worlds?
01:50:43  <defunctzombie>get the best :)
01:51:12  <thl0>defunctzombie: so take modules from lua and syntax from js ?
01:51:20  <defunctzombie>basically
01:51:24  <defunctzombie>and cut some of the fat from js
01:51:48  <defunctzombie>I just get annoyed with the 'local' and 'end' and some of the other syntax nonsense
01:51:59  <thl0>defunctzombie: maybe you could write a new language that combines all these ideas
01:52:04  <defunctzombie>but I am used to { }
01:52:06  <thl0>defunctzombie: write a to js transpiler for it
01:52:12  <defunctzombie>thl0: one day
01:52:16  <thl0>defunctzombie: call it coffee script :P
01:52:22  <defunctzombie>yes!!
01:52:31  <defunctzombie>actually I think the name will be jscript
01:52:35  <defunctzombie>just to confuse people
01:52:49  <thl0>defunctzombie: you'd run into copyright issues with Microsoft
01:52:54  <defunctzombie>damn
01:52:58  <defunctzombie>I will call it dz
01:53:17  <thl0>defunctzombie: not at all obvious how you came up with that ;)
01:53:22  <defunctzombie>:)
01:53:30  <chrisdickinson>dumb question: is there an easy way to list all of the listeners registered that are keeping node.js from exiting?
01:57:24  <substack>chrisdickinson: process._getActiveHandles()
01:57:58  <thl0>someone needs to leak this information ;)
01:57:58  <chrisdickinson>thanks!
01:59:31  <thl0>leaked!
02:00:00  <chrisdickinson>weird. it didn't list anything.
02:01:37  <thl0>chrisdickinson: shoot I leaked wrong info - that's gotta be confusing
02:02:06  <chrisdickinson>well
02:02:12  <chrisdickinson>it's not wrong info, necessarily
02:02:32  <chrisdickinson>i'm just confused since something is keeping node open, but it's not got an active handle
02:02:34  <thl0>chrisdickinson: actually I do hope (in this case) that you are wrong ;)
02:02:55  * thl0sighs in relief
02:04:49  <chrisdickinson>oh this is bizarre
02:05:35  * Ikeymanjoined
02:06:42  <chrisdickinson>something is continuing to read from fs
02:06:51  <chrisdickinson>long after the fact
02:09:10  * chrisdickinsonis confused
02:10:33  * Ikeymanpart
02:11:37  <chrisdickinson>so it looks like it's caught in a loop of reading 0 length
02:15:25  * ralphtheninjajoined
02:30:17  * mikeal1quit (Quit: Leaving.)
02:39:58  * mikealjoined
02:46:48  * marcello3dquit (Remote host closed the connection)
02:47:19  * mikolalysenkoquit (Ping timeout: 256 seconds)
02:47:26  * marcello3djoined
02:50:58  <Domenic_>Raynos: --force should work
02:51:15  <Raynos>Domenic_: https://gist.github.com/Raynos/73c93fb887ae5e35c066
02:51:51  <Domenic_>woah there is a lot of stuff here
02:51:54  <Domenic_>reading...
02:51:55  * marcello3dquit (Ping timeout: 260 seconds)
02:52:43  <Domenic_>thl0: I like traceurify. I would make the main export an es6 transform, but a sub-export be customizable. E.g. `.transform(traceurify)` vs. `.transform(traceurify.withOptions({ ... }))`
02:53:52  <thl0>Domenic_: way ahead of you :)
02:54:13  <thl0>Domenic_: https://github.com/thlorenz/es6ify/blob/master/index.js#L51-L53
02:54:27  <thl0>Domenic_: and es6ify it is, already published
02:55:34  <Domenic_>simple export IS IN
02:55:41  <Domenic_>(still reading, not scrolled down yet)
02:55:59  <chrisdickinson>Domenic_: simple export as in "export an expression"?
02:55:59  <Domenic_>Benvie is not up to date.
02:56:01  <substack>oh sweet!
02:56:04  * mikolalysenkojoined
02:56:06  <substack>Domenic_: what does it look like?
02:56:29  <thl0>Domenic_: maybe withOptions is better than bry().transform(es6ify.transform(..))
02:56:38  <Benvie>apologies, Domenic_ is probably correct
02:56:51  <Benvie>been a long, tiring two months for me
02:56:52  <Domenic_>ES6 is not waterfall, it is incrementally implemented and prototyped in browsers. Taking snapshots that represent the progress made does not make something waterfall.
02:57:14  <substack>Domenic_: the release cycle very definitely IS waterfall in that there is a monolithic release
02:57:27  * thl0changed nick to thl0_zz
02:57:32  <Benvie>of the spec
02:57:34  <substack>these features aren't trickling out piecemeal
02:57:45  <substack>they are experimenting piecemeal which is great
02:57:48  <Benvie>implementation is what Domenic_ referrs to
02:58:14  * thl0_zzquit (Remote host closed the connection)
03:02:26  <Domenic_>ok I read everything and scrolled down
03:02:41  <Domenic_>substack: they tag their versions less frequently, that doesn't make it waterfall.
03:03:15  <substack>Domenic_: the final outcome of the committee will be a spec
03:03:18  <substack>not code
03:03:19  <substack>a spec
03:03:28  <Domenic_>yes, so that multiple browsers can implement it
03:03:30  <Domenic_>that's not a bad thing
03:04:00  <substack>so all the work cascades downward from the spec to browser vendors
03:04:20  * st_lukejoined
03:04:20  <Domenic_>single export syntax is not nailed down yet... I probably shouldn't tell you guys what it is yet. If you want to know that kind of stuff be nice to TC39 members instead of badmouthing them. It's not my place to say what they're working on just because they share it with me.
03:04:28  <Domenic_>substack: no
03:04:51  <Domenic_>it goes strawman -> proposal -> browser implementation -> spec draft -> refinement -> final spec in tagged version
03:05:27  <Domenic_>re: single export syntax not being nailed down, what I meant, is that they think they know what it is going to be, but aren't confident and so haven't announced it or written it down anywhere.
03:06:09  <hij1nx>Domenic_: LOLOLOLOL.
03:06:15  <substack>this is part of the problem I think
03:06:23  <substack>that has caused so much of a disconnect
03:06:37  <substack>how they need to feel "confident" in order to voice ideas
03:06:43  <substack>very backwards and insular
03:06:45  <Domenic_>they've seen what happens if they don't!
03:06:50  <Domenic_>they get badmouthed from all sides
03:06:56  <Domenic_>you guys are *not* helping them be more open
03:07:01  <substack>they're misinterpreting criticism
03:07:10  <Domenic_>your constant negativity and completely non-constructive behavior is not helping
03:07:17  <Domenic_>"misinterpreting" things like "fuck standards bodies"?
03:07:26  <Domenic_>or "ES6 is the new ES4"?
03:07:31  <Domenic_>That is *not* constructive.
03:07:33  <st_luke>thats me
03:07:35  <substack>I just elaborated why standards bodies are a bad idea
03:07:37  <hij1nx>Domenic_: true though
03:08:02  <hij1nx>"Dominic, keep this a secret, but were planning to announce an idea"
03:08:12  <substack>^^^
03:08:14  <Domenic_>substack: standards bodies composed of implementers are not a bad idea.
03:08:16  <Domenic_>what
03:08:25  <Domenic_>they discuss with community members who don't badmouth them in public
03:08:27  <Domenic_>is that bad?
03:08:35  <substack>that's horrible
03:08:42  <Domenic_>why
03:08:52  <st_luke>it makes literally no difference to anyone if I criticize es6 on the internet. nobody in tc39 has any fucking idea who I am
03:08:55  <substack>because if you only listen to people who you already agree with
03:08:59  <Domenic_>I've shown that i'm willing to work constructively with them
03:09:01  <Domenic_>that is *not* true
03:09:11  <Domenic_>I disagreed strongly with several aspects of ES6 modules *and got them changed*
03:09:16  <Domenic_>Because my criticism was constructive
03:09:32  <Domenic_>And I worked *with* people like Yehuda and Dave, understanding that they want what's best, instead of saying fuck them and the standards bodies they rode in on.
03:09:53  <hij1nx>Domenic_: Yahooda, that guy that raised all that money to make ruby.app?
03:10:14  <Domenic_>sigh
03:10:18  <hij1nx>Dave is awesome though
03:10:31  <hij1nx>He writes great javascript books
03:10:51  <substack>Domenic_: I hate that we even have a committee to decide for everyone by fiat
03:10:54  <hij1nx>and he's a propeller head
03:11:03  <Domenic_>substack: what would your preferred model be
03:11:10  <Domenic_>because literally someone has to implement the features
03:11:14  <substack>within that body there are certainly more and less terrible features in narrow scope
03:11:25  <Domenic_>and those people get together and talk about things and agree on them
03:11:29  <Domenic_>and then poof we call that a committee
03:11:35  <Domenic_>oh wait I forget a step
03:11:45  <Domenic_>they get input from community members who are also on the committee
03:11:50  <hij1nx>committee or club?
03:12:13  <st_luke>are there any women in tc39?
03:12:24  <hij1nx>that's it TC39 is sexist.
03:12:29  <Domenic_>hahah
03:12:30  <hij1nx>#trolol
03:12:43  <hij1nx>clubs are shitty
03:12:55  <substack>Domenic_: first, eliminate how ecma seats are awarded
03:13:00  <Domenic_>I bet with appropriate stirring of the pot you could really get an internet firestorm going over TC39 is sexist.
03:13:17  <hij1nx>Domenic_: stupid.
03:13:25  <substack>there is *some* community representation on tc39 but it is by no means the bulk of the membership
03:13:34  <Domenic_>sure, the bulk is implementers, it's true
03:14:46  <substack>and I really dislike how companies "send a delegate" to tc39
03:14:52  <substack>like some sort of corporate fiefdomism
03:14:57  <substack>which is probably a hold-over from ecma
03:14:59  <st_luke>if I'm going to stir up the internet about tc39 it's not going to be over them being sexist
03:15:02  <substack>get rid of that please
03:15:16  <Domenic_>substack: ???
03:15:22  <Domenic_>is it the terminology you dislike, or...?
03:16:03  <Domenic_>someone within the company volunteers to spend their time involved in this stuff... would "volunteer" make you happier?
03:16:12  <substack>it's how only bodies with sufficient klout can ever "send a delegate"
03:16:38  <Domenic_>any nonprofit can
03:16:42  <substack>bodies with diminishing relevance like the jquery foundation
03:16:47  <Domenic_>and any for-profit that pays like $15k/year
03:17:14  <substack>this doesn't reflect how open source happens anymore
03:17:57  <hij1nx>Domenic_: http://d.pr/i/ORCH
03:18:10  <st_luke>I don't think it's fair to criticize tc39 for not changing as fast as open source has
03:18:41  <substack>st_luke: the very idea of tc39 and standards bodies is steeped in the old model
03:18:43  <st_luke>but they should acknowledge it and possibly change the org structure to keep up
03:18:51  <Domenic_>i'm also not sure open-source is the right model for designing a language. (Not sure though.)
03:18:58  <Domenic_>It doesn't provide a lot of stability
03:19:06  <substack>beautiful chaos!
03:19:19  <Domenic_>I think the stuff we've been doing with the Promises/A+ spec on GitHub is interesting though, kind of a hybrid.
03:19:21  <st_luke>substack: agreed, but they can't change overnight
03:19:28  <st_luke>promises
03:19:29  * wolfeidaujoined
03:19:37  <Domenic_>^_^
03:19:44  <hij1nx>st_luke: i promise to never use promises for anything. ever.
03:19:49  <substack>Domenic_: which is exactly why I find these things so burdensome
03:20:05  <substack>I have only ever worked with open collaborative systems
03:20:11  <substack>where nobody can force anybody to do anything
03:20:37  <st_luke>most of the people on tc39 seem like well intentioned people
03:20:42  <st_luke>except yahooda
03:20:43  <Domenic_>substack: I can understand that mismatch. Although, I'm not sure where the "forcing" comes in.
03:20:44  <substack>and if somebody disagrees they can just fork it
03:20:52  <hij1nx>YAHOODA!
03:20:57  <Domenic_>substack: do people fork the previous languages you've worked in?
03:21:01  <substack>Domenic_: the "forcing" is that there is a canonical source of truth, "the spec"
03:21:04  <Domenic_>st_luke: hij1nx: =(
03:21:15  <Domenic_>substack: does Haskell not have a spec?
03:21:21  <substack>ug I hate haskell
03:21:28  <hij1nx>Domenic_: substack: candor has forks!
03:21:34  <substack>hij1nx: awesome
03:21:40  <Domenic_>candor lol
03:22:09  <hij1nx>Domenic_: what? you dont approve of candor?
03:22:27  <Domenic_>hij1nx: indeed.
03:22:32  <hij1nx>Domenic_: candor is amazing.
03:22:55  <hij1nx>Domenic_: what makes you disapprove?
03:23:23  <hij1nx>Domenic_: the fact that somebody did it in their spare time?
03:23:44  * mikolalysenkoquit (Ping timeout: 255 seconds)
03:24:16  <Domenic_>hij1nx: no, just its language features.
03:24:21  <st_luke>does tc39 only meet every 2 months?
03:24:28  <Domenic_>st_luke: every month I think.
03:24:41  <st_luke>maybe this is wrong then http://www.ecma-international.org/memento/TC39-M.htm
03:24:46  <hij1nx>Domenic_: oh yeah, it has less features than JS.
03:24:52  <Domenic_>st_luke: no I think you're right actually, judging by https://github.com/rwldrn/tc39-notes/tree/master/es6
03:25:01  <st_luke>oh damn
03:25:12  <st_luke>I was going to send them a cake but I'll forget about it if it's 2 months away
03:25:32  <st_luke>a `module.exports = function () {}` cake
03:25:37  <hij1nx>its silly unless it has Proxies! ;)
03:25:39  <Domenic_>that'd be awesome
03:25:51  <st_luke>maybe a cake will change their mind
03:26:14  <substack>anyways I'm actually fine with tc39 doing whatever with the rest of the language since it doesn't matter
03:26:22  <substack>modules are the only place where they can do real, permanent damage
03:26:57  <Domenic_>substack: I am not even sure they can do damage there. I think Node is powerful enough to control the fate of modules.
03:27:16  <Domenic_>Especially because Node is the only environment where people will write true ES6 code, until IE10 dies.
03:27:26  <substack>they can certainly fuck a lot up in the short to mid term
03:28:09  <chrisdickinson>hilariously, it's probably easier to write an es6 module for the browser through browserify + es6ify than it is to publish a working es6 module for node
03:28:30  <substack>tooling hooray!
03:28:50  <hij1nx>Domenic_: i think ES6 should focus on removing stuff.
03:28:55  <Domenic_>chrisdickinson: hah, kind of. but v8 is stepping up the pace in implementation, and once they turn off the flag requirement... node will be in good shape.
03:28:56  <chrisdickinson>(in the sense that if you have an es6 module on npm that someone wants to use, they have to remember to always run node with the --harmony flag.)
03:29:02  <hij1nx>0 new features, -10 things.
03:29:08  <substack>Domenic_: part of why I have been so irritated with tc39 is that everything was going great with node modules and then they show up with some broken thing
03:29:13  <Domenic_>hij1nx: then it will break backward compat and get its lunch eaten by dart.
03:29:18  <substack>a broken thing that needs to be opposed
03:29:26  <hij1nx>Domenic_: dart is pretty cool
03:29:40  <hij1nx>Domenic_: if you like mom-jeans
03:29:43  <substack>I only first heard about what ec6 was even about with their horrible module system
03:29:45  <Domenic_>substack: yep. wish you had opposed it constructively, though. instead I have to do damage control trying to get your concerns taken seriously
03:30:02  <chrisdickinson>i kind of like the idea of pegging node to es5 and introducing browserify-style transform directives in package.json to support es6
03:30:09  <chrisdickinson>well
03:30:13  <chrisdickinson>i like the idea of pegging the syntax.
03:30:30  <chrisdickinson>i'd like the other new es6 apis (maps, weakmaps, sets, et al)
03:30:36  <Domenic_>hij1nx: I don't even know what that means O_o
03:30:57  * wolfeida_joined
03:31:31  <substack>Domenic_: well if they just didn't do modules at all we'd be fine
03:31:51  <Domenic_>substack: meh, getting something that works natively in the browser will be nice, I think.
03:31:53  <substack>it's so much work to take their thing and make it not suck
03:31:57  <chrisdickinson>can you call `new` on shorthand functions?
03:32:11  <Domenic_>chrisdickinson: arrow functions? no. they are just functions, not constructors.
03:32:12  <chrisdickinson>e.g., "new (x, y) -> x + y" ?
03:32:25  <hij1nx>Domenic_: arrows are the worst part of ES6, imo.
03:32:25  <chrisdickinson>so, that'll throw an error?
03:32:34  <Domenic_>chrisdickinson: yes
03:32:39  <chrisdickinson>eep.
03:32:40  <Domenic_>hij1nx: O___o
03:32:41  <hij1nx>Domenic_: they screw up profiling.
03:32:44  <substack>WHAT
03:32:54  <Domenic_>hij1nx: if you assign it to a variable they get a name
03:32:55  <chrisdickinson>yeah, that's the other bit that worried me
03:33:03  <chrisdickinson>introducing yet another "form" of functions
03:33:03  <Domenic_>`let x = (a, b) => a + b` has name `x`
03:33:05  <substack>why doesn't it just not give a fuck if you call an arrow function with new?
03:33:30  <hij1nx>Domenic_: that defeats the whole purpose
03:33:30  <Domenic_>because this way you can declare things that are functions instead of sometimes-functions, sometimes-constructors
03:33:44  <Domenic_>hij1nx: then use longhand functions, it's not that hard.
03:33:53  <hij1nx>Domenic_: you might as well just write function x() {}
03:34:02  <chrisdickinson>Domenic_: what if you're not the one creating the function that you're calling `new` on?
03:34:09  * wolfeidauquit (Ping timeout: 256 seconds)
03:34:15  <hij1nx>Domenic_: my feeling is, if you cant find a compelling argument for it, it doesnt belong.
03:34:34  <substack>arrow function should just be the same as f.bind(self)
03:34:47  <hij1nx>Domenic_: saying, "hey! this cool popular coffee-script-ish thing would be neat" is really just silly.
03:34:55  <substack>but anyways that doesn't even matter, just another thing I can easily ignore
03:35:05  <substack>a shame but whatever
03:35:28  <Domenic_>I think "making the intent of your code clear" is a compelling reason. `foo.map(x => x*x)` is much clearer to me than `foo.map(function (x) { return x * x; })`. Less noise to get lost in, more clearly expressing intent of the code.
03:36:07  <hij1nx>Domenic_: by that line of reasoning, you should just rewrite the entire language.
03:36:20  <chrisdickinson>didn't mean to open a can of worms
03:36:22  <hij1nx>Domenic_: i think ES is fine the way it is. just take away a few things
03:36:29  <hij1nx>Domenic_: and move on.
03:36:40  <chrisdickinson>it just spooks me that neat things like shorthand functions have other, maybe unexpected, implications
03:37:13  <hij1nx>chrisdickinson: like huge blind spots in flamegraphs
03:37:14  <substack>yes if it were just shorthand that would be nice
03:37:23  <Domenic_>hij1nx: I think if we do that the open web as a platform will get its lunch eaten by proprietary solutions like Silverlight, Dart, NaCl, etc.
03:37:25  <chrisdickinson>there's a lot to keep in one's head with JS already, and it seems like with all the new features that'll get a lot worse
03:37:44  <substack>^^^^
03:37:55  <hij1nx>Domenic_: i dont think so, because those are proprietary
03:37:56  <substack>chrisdickinson: it's like in ruby how there are 7 kinds of lambdas
03:38:00  <Domenic_>if proprietary solutions offer a better developer experience, they will win.
03:38:17  <substack>Domenic_: but that's good
03:38:24  <substack>if something is better then it SHOULD win
03:38:36  <chrisdickinson>substack: yep. this is part of the reason i am fond of python
03:38:36  <hij1nx>Domenic_: substack and then someone will create a better open source thing
03:38:52  <hij1nx>better gets upstaged by better.
03:39:01  <chrisdickinson>it's a very "designed" language.
03:39:11  <Domenic_>I would rather our existing open web evolve instead of having a dark period where proprietary takes over.
03:39:24  <Domenic_>Even if eventually an open-source copy of that proprietary solution steps in.
03:39:25  <chrisdickinson>ultimately, i like JS better; but it boils down to valuing different things than python / python's community / python's BDFL
03:39:31  <hij1nx>Domenic_: it is evolving, e.g. nodejs
03:39:41  <hij1nx>Domenic_: its not just about the language, its about the approach
03:39:58  <chrisdickinson>Domenic_: what of the push for ASM.js and friends? wouldn't that be a decent end-run around proprietary solutions?
03:40:01  <substack>Domenic_: open is a big part of being "better"
03:40:09  <substack>it's baked in to the calculus
03:40:22  <Domenic_>substack: that is not true for the vast majority of developers
03:40:24  <defunctzombie>imho all this language debate is silly bikeshedding that happens because everyone keeps thinking that the browser needs to natively support the language they want to use
03:40:26  <chrisdickinson>i mean, that gives proprietary solutions a compilation target, at least :|
03:40:27  <hij1nx>Javascript's good parts are good.
03:40:29  <defunctzombie>which is utter crap
03:40:43  <defunctzombie>the browser just needs to have a minimal jit/vm subset to interface with it
03:40:45  <Domenic_>chrisdickinson: yes, that will be helpful for bringing proprietary C-level stuff into the web, e.g. Shamwow (Flash -> JS)
03:40:52  <hij1nx>defunctzombie: ++
03:40:56  <defunctzombie>and the rest is left as an exercise to the reader
03:41:04  <substack>defunctzombie: they should just compile to javascript instead
03:41:09  <defunctzombie>then everyone can go masterbate over whatever language features they want
03:41:12  <defunctzombie>substack: asm.js
03:41:19  <defunctzombie>substack: not even full JS
03:41:46  <hij1nx>TC39 is just dry humping the internet
03:41:52  <defunctzombie>lol
03:42:10  <chrisdickinson>Domenic_: so, if we've got that end-run -- and it's already getting 2x native speeds -- what do we need to add or change about JS to beat dart/nacl/silverlight?
03:42:32  <Domenic_>chrisdickinson: because we still need scripting languages, not just C-level languages.
03:43:15  <chrisdickinson>right; but it wouldn't be impossibly difficult to compile python or ruby to JS; sans their standard libraries
03:43:26  <chrisdickinson>or python-like or ruby-like things.
03:43:54  <defunctzombie>Domenic_: you don't need scripting languages in the browser
03:43:58  <chrisdickinson>and i'm not aware of anything in es6, syntax-wise, that makes that particularly easier (though i could've missed something!)
03:44:12  <Domenic_>chrisdickinson: not really true. for one, you'd have to re-implement the garbage collector.
03:44:18  <defunctzombie>Domenic_: you need better tools not languages
03:44:38  <chrisdickinson>Domenic_: yes, i suppose, for exact semantics, you would. or their bytecode vms.
03:45:22  <chrisdickinson>but a python-like language wouldn't be too hard to put together, i imagine.
03:45:29  <chrisdickinson>with largely python-like semantics
03:45:38  <chrisdickinson>(or maybe a restricted subset of python)
03:45:39  * shamaquit (Remote host closed the connection)
03:45:47  <Domenic_>also, remember that we're computing against the ease of use of dart natively working in Google Chrome.
03:45:54  <Domenic_>*competing
03:46:11  <substack>st_luke: my continuous deployment thing is working, documenting and pushing in just a little bit
03:46:16  * defunctzombiechanged nick to defunctzombie_zz
03:46:21  <Domenic_>saying "compile your shit using this open-source VM that mostly matches Python" is not as easy as "type this stuff into the console"
03:46:37  <substack>it's bouncy + cicada for branch-based subdomain deploys
03:46:50  <st_luke>substack: we ended up holding off on ours because a joyent library we were going to use has some bugs, don't really have time to figure that out currently
03:47:10  <chrisdickinson>I feel like that's more on the web dev tools than anything else.
03:47:52  <Domenic_>chrisdickinson: sure. but are open-source web dev tools really going to beat google? I think a consortium of browser implementers has a better chance.
03:48:32  <chrisdickinson>of which google is one?
03:48:48  <chrisdickinson>(and probably the one whose browser has the most or second most developer mindshare?)
03:49:01  <chrisdickinson>(competing neck and neck with firefox)
03:49:17  <Domenic_>yep. we're in a precarious position already. it's good that google is a big enough organization to be of two minds.
03:49:33  <Domenic_>I was worried that the V8 team got gutted and moved to Dart, but it looks like they're picking up steam a little bit recently.
03:49:56  <chrisdickinson>and what of mozilla's dartlike internal language, rust?
03:50:05  <Domenic_>lol that is nothing like dart
03:50:15  <Domenic_>it's like some combination of scheme and D, made for writing browsers in.
03:50:27  * mikolalysenkojoined
03:51:15  <substack>how can I check this .git directory into git...
03:51:34  <Domenic_>substack: .gitignore !.git? never tried it but...
03:51:50  <substack>git add -f didn't add it
03:52:29  <substack>doesn't work with .gitignore either
03:52:56  <substack>maybe I can mv {.,}git; git mv {,.}git
03:53:37  <substack>error: Invalid path 'example/test-repo/.git/COMMIT_EDITMSG'
03:53:40  <substack>-_-
03:53:40  <purr>substack: ಠ_ಠ is an IRC client/IRC client framework.
03:54:44  * wolfeida_quit (Remote host closed the connection)
03:54:47  * jibayquit (Remote host closed the connection)
03:56:00  <substack>bah
03:56:16  <substack>I just want this .git directory so I can cd there to run some tests
04:03:41  <guybrush>substack add it with _git and then mv it to .git while testing :D not sure if that works though
04:03:54  <guybrush>had some thoughts about the same problem recently
04:04:48  <guybrush>oh you said the mv thing right before
04:06:27  * mikolalysenkoquit (Ping timeout: 276 seconds)
04:10:46  * ralphtheninjaquit (Quit: Lost terminal)
04:12:34  <hij1nx>Domenic_: dart's VM is really compelling, the language features are awkward and silly, the tools feel like leg braces. Dart will suffer huge from that alone.
04:12:52  * st_lukequit (Remote host closed the connection)
04:13:40  <hij1nx>Domenic_: Dart wont reach critical mass for many obvious reasons, so why is everyone so nervous?
04:15:13  <chrisdickinson>on a non-es6 note: got tree walking streams *and* ref walking streams done
04:15:34  <chrisdickinson>just about ready to put it all together to make a git-fetch-pack module
04:15:53  <hij1nx>chrisdickinson: link?
04:16:21  <hij1nx>chrisdickinson: have you talked to creationx about his js-git project?
04:16:22  <chrisdickinson>hij1nx: https://github.com/chrisdickinson/git-walk-refs
04:16:29  <chrisdickinson>yes i have tweeted at him
04:16:51  <chrisdickinson>if all goes as planned it'll be mostly done and in browserify and npm by the end of the month
04:17:55  <chrisdickinson>and then he's got a lot of time and runway to make the experience great in browser
04:18:13  <chrisdickinson>meanwhile browserify gets a big workout
04:18:32  <hij1nx>chrisdickinson: this is awesome! nice work.
04:18:40  <chrisdickinson>thanks!
04:19:57  <chrisdickinson>walk-tree will be up soon
04:20:00  <chrisdickinson>i just got it done
04:20:22  <chrisdickinson>walk-refs is a prereq for being able to tell the git server what refs one has so that it can generate an appropriate packfile
04:21:26  <chrisdickinson>walk-tree is required for cloning / checking out
04:21:38  <chrisdickinson>also, it would be super easy to write a redis-backed git odb
04:21:46  <chrisdickinson>or riak, or really any kv store
04:21:50  <chrisdickinson>(scuttlebutt?)
04:28:26  * jdiezquit (Quit: No Ping reply in 180 seconds.)
04:28:32  * jdiez_joined
04:29:56  <substack>pow: https://github.com/substack/ploy
04:30:04  <substack>stlsaint: ^^
04:30:33  <substack>wanted to publish that early so I could get the name
04:31:07  <substack>need to give it auth before I'll use it on substack.net though
04:31:18  <substack>npm has a really good incentive baked into it to publish early and often
04:31:55  * mikolalysenkojoined
04:31:56  <guybrush>substack: after hosting some projects with my tools i somehow think the whole restarting-thing shouldnt be solved in the deployment-tool, thoughts?
04:32:31  <substack>restarting?"
04:32:41  <guybrush>like in your ploy here, in scripts.start there could be the apps own solution to restart the app when it goes down
04:32:48  <guybrush>https://github.com/substack/ploy/blob/master/index.js#L44
04:33:11  <substack>if my process crashes I want it to not stay crashed
04:33:39  <substack>I don't want to handle restarting myself in the app
04:34:11  <guybrush>well i was just thinking about some ideas, wanted to hear your thoughts
04:34:19  <guybrush>im running everything with mon now
04:34:46  <substack>another thing is what should happen if ploy itself goes down
04:34:53  <guybrush>right!
04:35:01  <guybrush>thats what i tried to solve with my nexus-thing
04:35:04  <substack>I'll have it write to a json file so it can restore its previous state
04:35:06  <substack>simple
04:35:25  <chrisdickinson>soon you'll be able to have a git server that git talks to directly
04:35:29  <guybrush>right i im storing it in a dirty-db
04:35:36  <chrisdickinson>well, "soon"
04:35:45  <chrisdickinson>i'm not sure what the relative advantage would be
04:35:54  <chrisdickinson>i guess you wouldn't have to ever store anything on the filesystem, which would be cool
04:36:03  <chrisdickinson>store it all in some kv store
04:36:07  <guybrush>substack: but how do you know if the processes are already up or not?
04:36:13  <guybrush>i mean in case the ploy server goes down
04:36:17  <chrisdickinson>and when you check it out you wouldn't have to touch the filesystem either
04:36:21  <guybrush>with pids?
04:36:24  <chrisdickinson>substack: ^^ does that sound worthwhile?
04:37:28  <guybrush>chrisdickinson: so it would be possible to use indexeddb?
04:37:33  <chrisdickinson>yep
04:37:43  <guybrush>like pure awesomeness
04:37:47  <substack>guybrush: if ploy crashes all its children will get killed
04:37:52  <chrisdickinson>any kv store (or really any storage, but git is essentially just a fancy fs based kv store)
04:37:56  <guybrush>substack: you could detach em
04:37:56  <substack>they are not detached
04:38:03  <substack>it's simpler not to detach them I think
04:38:10  <substack>then I don't need to manage pidfiles
04:38:29  <guybrush>the benefit would be that the apps would stay up when ploy goes down
04:38:39  <substack>not too worried about that
04:39:46  <guybrush>i like the name "ploy" :D
04:46:01  <Raynos>https://github.com/alexeypetrushin/miconjs/issues/1
04:46:02  <Raynos>>:(
04:46:25  <Raynos>substack, defunctzombie: https://npmjs.org/package/coveralls have you guys made tap / tape work with code coverage before?
04:47:47  * mikolalysenkoquit (Ping timeout: 260 seconds)
05:05:46  <chrisdickinson>https://www.kernel.org/pub/software/scm/git/docs/v1.7.0.5/technical/pack-heuristics.txt is a really interesting read
05:11:17  * Benviequit (Ping timeout: 255 seconds)
05:13:38  * mikolalysenkojoined
05:18:19  * timoxleyjoined
05:26:22  <rvagg>https://pbs.twimg.com/media/BGGSc9zCIAAfvhs.png:large LevelDB+Windows+Node
05:26:27  <rvagg>= phew...
05:29:11  * mikolalysenkoquit (Ping timeout: 256 seconds)
05:34:32  <Raynos>rvagg: nice!
05:35:46  <rvagg>no, unpleasant actually
05:36:04  <rvagg>but nice that we're nearly at universal support
05:37:20  <Raynos>I see you are a nightly man :D
05:37:30  <Raynos>and use photoshop o_o
05:40:24  <rvagg>nightly?
05:40:37  <Raynos>thats firefox nightly?
05:40:42  <rvagg>ahhh yes
05:40:55  <rvagg>of course, that logo
05:41:38  <rvagg>wanted to PROVE that it was windows so I included the start bar/button
05:44:01  <Raynos>Domenic_: "A HTTP request can return a promise for a stream"
05:46:05  <substack>whaaaa
05:46:20  * mikealquit (Quit: Leaving.)
05:46:38  <substack>Raynos: that is very silly indeed!
05:46:42  <Raynos>Agreed
05:46:58  * mikealjoined
05:47:13  <substack>mikeal: relevant to your interests http://github.com/substack/ploy
05:51:49  <mikeal>very nice
05:52:24  <substack>when I revisit fleet it's just going to be a distrubted multi-server version of ploy
05:58:48  * mikolalysenkojoined
06:01:43  <Raynos>Domenic_: promise abuse is abuse :(
06:12:31  * mikolalysenkoquit (Ping timeout: 264 seconds)
06:14:49  * timoxleyquit (Quit: Computer has gone to sleep.)
06:18:39  <chrisdickinson>woo, successfully grabbed packfile data :D
06:20:05  * defunctzombie_zzchanged nick to defunctzombie
06:22:39  <defunctzombie>substack: I am interested in this deploy stuff you have been playing with (also, side note is you can just edit /etc/hosts for localhost subdomains)
06:23:41  <substack>oh that's true
06:23:54  <substack>with dnsmasq you get wildcards though, which is pretty nice
06:24:05  <defunctzombie>substack: yea, but takes some work to setup
06:24:09  <substack>true
06:24:17  <defunctzombie>anyhow, just was a thought I had
06:24:39  <defunctzombie>cause I use the etc/hosts file all the time for testing courseoff and various other things
06:24:50  <substack>defunctzombie: updated
06:24:54  <defunctzombie>coo
06:25:26  <substack>still need these things https://github.com/substack/ploy#todo
06:26:52  <defunctzombie>yea
06:27:07  <defunctzombie>substack: you might be interested in daemon for the process start/stop stuff
06:27:17  <defunctzombie>substack: not sure what you did for daemonization or whatnot
06:27:43  <defunctzombie>I have another tool on top of daemon which does basic start/stop via signals right now
06:27:49  <defunctzombie>but that isn't published anywhere
06:27:54  <substack>I don't want it to daemonize
06:28:05  <substack>I want the child procs to die when the parent ploy server dies
06:28:08  <substack>much simpler
06:28:17  <defunctzombie>I see
06:28:34  <defunctzombie>then how do you restart parent?
06:28:47  <defunctzombie>so what I do is have a starter which daemonizes itself
06:28:48  <substack>kill it and have it come back
06:28:53  <defunctzombie>and that thing starts the children
06:28:57  <defunctzombie>so when the starter dies
06:29:01  <defunctzombie>the children also die
06:29:37  <defunctzombie>so in your case, it would be the ploy server that daemonizes itself haha
06:29:44  <substack>what?
06:29:47  <substack>nothing gets daemonized
06:29:48  <substack>at all
06:30:02  <substack>while true; do ploy -p[D[D[D[D[D[D[D 80 ./data; done
06:30:05  <substack>fucking lag
06:30:11  <substack>while true; do ploy -p 80 ./data; done
06:30:15  <substack>you would do that
06:30:31  <defunctzombie>well, I would never do that in production, but sure :)
06:30:35  <substack>I do want ploy to spin up the processes that it was running previously when it comes back though
06:31:07  <defunctzombie>substack: in production it is very important to know when things go down and have to be restarted
06:31:12  <defunctzombie>generally a sign of potential problems
06:32:53  <substack>"have to be restarted"?
06:32:59  <substack>as if a person is doing that?
06:34:12  <defunctzombie>substack: sometimes a person is
06:34:18  <defunctzombie>regardless
06:34:32  <defunctzombie>I need to know that something crashed
06:35:11  * jcrugzzquit (Ping timeout: 252 seconds)
06:35:26  <defunctzombie>these are just general ops things, not saying you need to implement them
06:35:35  <defunctzombie>just things to keep in mind with various deployment strategies
06:36:41  * defunctzombiechanged nick to defunctzombie_zz
06:38:45  * mikolalysenkojoined
06:43:16  <substack>defunctzombie_zz: I'm planning on having straggler handle that kind of stuff
06:43:40  <substack>but ploy should just expose a generic stream interface for other tech to hook into
06:55:18  * mikolalysenkoquit (Ping timeout: 258 seconds)
07:05:16  * wolfeidaujoined
07:21:51  * mikolalysenkojoined
07:31:27  <chrisdickinson>api for fetching remotes: https://gist.github.com/chrisdickinson/5230910
07:38:38  * mikolalysenkoquit (Ping timeout: 256 seconds)
07:39:10  <substack>chrisdickinson: with just CORS headers you could use this git client to do deploys with ploy!
07:39:19  <chrisdickinson>:D
07:39:49  <chrisdickinson>or websockets or a duplex stream of xhrs/event-streams
07:39:57  <chrisdickinson>or, hilariously, over tab-streams
08:06:51  * mikolalysenkojoined
08:21:05  * Domenic_quit (Ping timeout: 256 seconds)
08:21:08  <guybrush>chrisdickinson: woooah sick
08:21:39  <guybrush>have to read/learn through all your git-stuff, pretty amazing
08:23:00  * mikolalysenkoquit (Ping timeout: 264 seconds)
08:25:23  <guybrush>this makes me want to write a ui, full-featured dev-environment in the browser
08:28:57  <substack>a full featured dev environment is just a terminal
08:33:31  <guybrush>yes and vi is better than emacs :p
08:34:44  <guybrush>btw i like jedit the most, somehow i am not so productive in vi at all though i really try to get better with it
08:36:48  <guybrush>have to move arround with the cursor way too much, also rectangular select is kind of a pain in vi
08:37:48  <substack>I remapped caps lock to escape
08:37:53  <substack>makes hjkl navigation much nicer
08:38:04  <substack>because it's easier to pop into command mode
08:38:24  <substack>guybrush: for rectangular select just do ctrl+v
08:39:10  <substack>but I mostly do line select with just V in command mode
08:40:14  <guybrush>that ctrl+v isnt available in vi only in vim :p
08:40:25  <guybrush>the caps remapping is cool idea
08:41:07  <substack>just use vim then
08:41:09  <guybrush>substack: do you use screen for multiple files or the vi-thing
08:41:19  <substack>neither
08:41:30  <guybrush>oh just multiple terminals?
08:41:35  <substack>yes
08:41:41  <substack>and a tiling wm
08:42:45  <guybrush>because screen sucks or do you have a supercool wm you just love?
08:43:19  <substack>xmonad
08:44:02  <guybrush>i think its good to be familiar with tools that are available everywhere, otherwise i can just use jedit anyway
08:46:01  <guybrush>oh right you are fluent in haskell so xmonad makes sense :p
08:46:38  <substack>I just use the default config
08:46:57  <substack>the only thing in my config is some keybindings
08:49:02  * mikolalysenkojoined
08:52:09  * ITprojoined
08:56:41  * FireFlyjoined
09:06:42  * mikolalysenkoquit (Ping timeout: 240 seconds)
09:32:51  * mikolalysenkojoined
09:46:16  * nicholasfquit (Ping timeout: 245 seconds)
09:50:26  * mikolalysenkoquit (Ping timeout: 252 seconds)
10:13:17  * jdiez_changed nick to jdiez
10:13:24  * jdiezquit (Changing host)
10:13:24  * jdiezjoined
10:18:53  * mikolalysenkojoined
10:34:23  * mikolalysenkoquit (Ping timeout: 255 seconds)
11:03:13  * mikolalysenkojoined
11:05:23  * juliangruber_joined
11:05:30  * juliangruberquit (Quit: No Ping reply in 180 seconds.)
11:14:46  * zero_coderjoined
11:14:54  <zero_coder>hello
11:18:20  * wolfeidauquit (Remote host closed the connection)
11:18:52  * wolfeidaujoined
11:20:12  * mikolalysenkoquit (Ping timeout: 256 seconds)
11:45:50  * mikolalysenkojoined
12:04:36  * mikolalysenkoquit (Ping timeout: 248 seconds)
12:10:08  * yorickjoined
12:16:43  <substack>pow https://github.com/substack/ploy#details
12:17:10  <substack>now when you bring the ploy server back up it starts all the processes it was previously running
12:19:18  <Ralt>substack: you convinced me to switch to xmoad. Thanks.
12:19:39  <substack>!
12:20:00  <Ralt>and btw
12:20:07  <Ralt>for me, caps lock is another ctrl
12:20:16  <Ralt>so I remapped kj and jk to esc :P
12:25:50  <yorick>Ralt: so, how do you type kj and jk?
12:26:35  <Ralt>I never do. Do you?
12:26:49  <yorick>I know a guy with a nick starting with kj
12:26:55  <Ralt>in 2 years of vim, I never had the problem
12:29:45  <yorick>swedish has some words with kj, fortunately I'm not swedish :P
12:29:47  * ins0mniajoined
12:29:48  <yorick>dutch has a diminutive with -je, so we have words like "beukje" and "dekje"
12:30:35  <yorick>furthermore, there are about 694 dutch words that end on "ijke" :P
12:32:19  * mikolalysenkojoined
12:32:37  <yorick>yeah, I might use those letter combinations :/
12:49:07  * mikolalysenkoquit (Ping timeout: 256 seconds)
13:03:14  <FireFly>Ralt: have you tried xcape?
13:03:36  <FireFly>Using it your caps lock could do both Ctrl and Esc
13:10:51  * mikolalysenkojoined
13:25:50  * ITproquit (Ping timeout: 245 seconds)
13:38:20  * jibayjoined
13:41:05  <Ralt>FireFly: ah, nice!
13:44:18  * shuaibjoined
13:45:16  <mikolalysenko>other than underscore.js, is there a simple library that just takes a sorted list and removes duplicates?
13:45:39  <mikolalysenko>I mean, I could write my own trivially but I am sure that this is solved
13:49:04  * dominictarrjoined
13:50:50  <mikolalysenko>anyone got any suggestions?
13:53:17  * ITprojoined
13:57:38  * ITproquit (Ping timeout: 246 seconds)
13:57:54  * mikolalysenkoquit (Quit: Lost terminal)
14:03:35  * stlsaintquit (Ping timeout: 246 seconds)
14:27:13  * zero_coderquit (Remote host closed the connection)
14:46:42  * timoxleyjoined
14:46:46  * mikolalysenkojoined
14:47:33  <mikolalysenko>there: https://github.com/mikolalysenko/uniq
15:06:23  * timoxleyquit (Quit: Computer has gone to sleep.)
15:06:26  <dominictarr>Had a crazy idea last night
15:06:37  <dominictarr>static type inference for js
15:06:47  <dominictarr>like, why not?
15:07:18  <dominictarr>you could do it incrementally
15:07:19  <mikolalysenko>v8 already does it
15:07:30  <dominictarr>so to detect how much state you are creating
15:07:44  <dominictarr>mikolalysenko: yeah, I figured!
15:08:05  <mikolalysenko>also asm.js is suppposedly completely statically typed
15:08:11  <mikolalysenko>at least as long as you play by the rules
15:08:22  <dominictarr>was thinking it would be cool if you had dynamic type based syntax highlighting
15:08:56  <dominictarr>so, if you can tell if an argument is a function, it's blue, and strings are yellow, etc.
15:09:24  <mikolalysenko>what I would like to see are optimizers/minifiers that do more aggressive inlining
15:09:46  <mikolalysenko>afaik, most of them just don't do it
15:09:59  <dominictarr>also, to statically detect if code is async or not
15:10:47  <dominictarr>then you could do type checking for all of npm!
15:11:04  <dominictarr>which might catch some bugs and api changes
15:11:41  * jcrugzzjoined
15:13:18  * shuaibquit (Read error: Connection reset by peer)
15:13:53  * shuaibjoined
15:24:25  * jcrugzzquit (Ping timeout: 260 seconds)
15:27:36  * mikolalysenkoquit (Ping timeout: 260 seconds)
15:38:36  * thl0_zzjoined
15:41:35  * CoverSlidequit (Read error: Connection reset by peer)
15:55:17  * AvianFlujoined
15:57:41  * mikolalysenkojoined
16:03:19  * defunctzombie_zzchanged nick to defunctzombie
16:16:32  * mikealquit (Quit: Leaving.)
16:22:42  * devaholicquit (Ping timeout: 240 seconds)
16:24:46  * yorickquit (Remote host closed the connection)
16:28:52  * devaholicjoined
16:29:16  <rowbit>/!\ ATTENTION: (default-local) raaziek1000@... successfully signed up for developer browserling plan ($20). Cash money! /!\
16:29:16  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
16:31:36  * shuaibquit (Quit: Textual IRC Client: http://www.textualapp.com/)
16:32:26  * ins0mniaquit (Ping timeout: 256 seconds)
16:39:30  * shamajoined
16:46:45  * mikealjoined
16:57:24  * dominictarrquit (Quit: dominictarr)
17:01:40  * dominictarrjoined
17:12:43  * ins0mniajoined
17:21:49  <Ralt>browserify doesn't like me
17:21:56  <Ralt>it's a one-side love
17:27:08  * dominictarrquit (Quit: dominictarr)
17:28:17  <mikolalysenko>is there a simple binary search library in npm?
17:28:23  <mikolalysenko>for the life of me I can't find one
17:28:35  <mikolalysenko>I mean there are a few, but they are basically crap
17:29:03  * dominictarrjoined
17:33:31  * dominictarrquit (Client Quit)
17:35:37  * stlsaintjoined
17:40:34  * jez0990quit (Ping timeout: 252 seconds)
17:40:47  * timoxleyjoined
17:41:00  * jdiezquit (Ping timeout: 256 seconds)
17:42:39  * timoxleyquit (Client Quit)
17:43:00  * mikealquit (Read error: Connection reset by peer)
17:43:36  * mikealjoined
17:45:29  * mikolalysenkoquit (Ping timeout: 255 seconds)
17:46:33  * jdiezjoined
17:46:33  * jdiezquit (Changing host)
17:46:33  * jdiezjoined
17:47:41  * thl0_zzquit (Remote host closed the connection)
17:52:27  * AvianFluquit (Remote host closed the connection)
17:54:41  * timoxleyjoined
17:55:59  <Ralt>Raynos: where's your gist with the list of client-side libraries?
17:56:48  <Ralt>found it
18:00:26  * mikealquit (Quit: Leaving.)
18:02:41  * jez0990joined
18:07:51  * shuaibjoined
18:10:06  * mikolalysenkojoined
18:20:20  * timoxleyquit (Quit: Computer has gone to sleep.)
18:23:16  <spion>mikolalysenko, maybe bintrees?
18:28:41  * mikolalysenkoquit (Ping timeout: 255 seconds)
18:36:36  * mikealjoined
18:54:47  <chrisdickinson>aw, damnit; going to need to get zlib-browserify's createInflate working ):
18:55:30  * mikolalysenkojoined
18:56:49  * thl0_zzjoined
18:59:29  <chrisdickinson>substack: has anyone written a "trim dead code" thing for browserify bundles?
18:59:33  <chrisdickinson>because that would be very neat.
18:59:59  * thl0_zzquit (Remote host closed the connection)
19:07:04  * mikolalysenkoquit (Ping timeout: 245 seconds)
19:17:21  <substack>chrisdickinson: minifiers can do a little bit of that
19:17:34  <chrisdickinson>yeah
19:17:41  <substack>closure compiler has some really sophisticated dead code culling from what I read
19:17:42  <chrisdickinson>part of me just wants dead code removal as a pipeable thing
19:17:48  <substack>same
19:17:57  <chrisdickinson>so you can do the dead code removal as a discrete step before minification
19:32:26  * mikolalysenkojoined
19:38:00  * jcrugzzjoined
19:43:42  <Ralt>substack: did you ever think of a way to condtionally load modules? i.e. you maybe don't want to load every modules when only one is used in such or such page
19:46:49  <defunctzombie>what module do I use for json parsing of newline stream content?
19:46:57  <defunctzombie>I am already sending the stream trough 'split'
19:47:11  <defunctzombie>so I already have what I want to json.parse
19:47:40  <chrisdickinson>isaacs: question re node's zlib implementation: is there a way to get the compressed length back from inflate?
19:47:47  <chrisdickinson>short of recompressing it.
19:48:17  <defunctzombie>jsonstream is a no go https://github.com/creationix/jsonparse/issues/2
19:48:18  <chrisdickinson>basically i'm looking for `inflateUntil(expectedSize, function(err, info) { info.compressedSize; info.compressedData; }).write(buf)`
19:48:24  <defunctzombie>that is a total show stopper.. wtf
19:48:31  <chrisdickinson>defunctzombie: line-stream?
19:48:47  <chrisdickinson>line stream piped to jsonstream?
19:48:50  <substack>Ralt: https://github.com/epeli/lazy-browserify/blob/master/both.js
19:49:00  <defunctzombie>chrisdickinson: jsonstream is blacklisted
19:49:09  <defunctzombie>chrisdickinson: there is no way in hell I am using it and no one should be using it
19:49:12  <defunctzombie>https://github.com/creationix/jsonparse/issues/2
19:49:15  <chrisdickinson>defunctzombie: http://github.com/chrisdickinson/json-parse-stream
19:50:02  <defunctzombie>chrisdickinson: thanks but all of this stuff is too complex
19:50:08  <chrisdickinson>?
19:50:11  <defunctzombie>chrisdickinson: I am just gonna use json.parse
19:50:15  <chrisdickinson>'kk
19:50:29  <defunctzombie>chrisdickinson: it is silly to rely on so much code to do something which is alreayd done honestly
19:50:34  <defunctzombie>so much can be broken
19:50:38  * chrisdickinsonshrugs
19:50:45  <chrisdickinson>different use cases
19:51:08  <defunctzombie>sure
19:51:09  <chrisdickinson>streaming json parse is a lot nicer when you're dealing with things like large geojson features
19:51:18  <chrisdickinson>but might be overkill for tiny json documents
19:51:32  <defunctzombie>yes
19:51:39  <defunctzombie>and my use case is newline delimited json messages
19:51:55  <defunctzombie>it is 100% overkill and actually totally broken if you can't parse my numbers correctly
19:53:46  * timoxleyjoined
19:54:04  <chrisdickinson>nyergh, this zlib thing sucks ):
19:54:06  <mbalho>streams: not always worth it
19:54:30  <substack>now you can do this: https://github.com/epeli/lazy-browserify/blob/master/both.js
19:54:40  <substack>mbalho: ^^^ relevant to your interests
19:55:04  <substack>https://github.com/substack/browser-pack/pull/9#issuecomment-15361396
19:55:27  <substack>mbalho: if jsonparse had a bit more love it could be nice
19:55:34  <substack>jsonparse isn't even streaming
19:55:42  <substack>it's just easy to build streaming libs on top of it
19:56:26  <mbalho>yea
19:56:53  <mbalho>it suffers from caswellian neglect
19:57:42  <defunctzombie>substack: https://github.com/substack/node-browserify/commit/e4017127557466092419d9e943c9d92ed7c1d2fa#commitcomment-2869508
19:58:04  * mikolalysenkoquit (Ping timeout: 252 seconds)
19:58:12  <substack>defunctzombie: send a pull req
20:01:56  <defunctzombie>it is really sad that there is no simple json parser that fits the bill for a.pipe(split()).pipe(json)
20:02:23  <mbalho>that is #2 most sad thing about browserifyville
20:02:32  <mbalho>#1 is that there is no socket.io xhr polling replacement
20:02:47  <mbalho>there is no "hey socket.io users go use X, Y, Z instead"
20:02:51  <defunctzombie>mbalho: this is actually server side for me
20:02:55  <defunctzombie>mbalho: engine.io
20:02:59  <defunctzombie>mbalho: much better imho
20:03:05  <mbalho>it shipped?
20:03:08  <defunctzombie>?
20:03:12  <defunctzombie>mbalho: what do you mean
20:03:19  <defunctzombie>it shipped a long time ago
20:03:20  <mbalho>like it has passing tests and is usable
20:03:26  * timoxleyquit (Quit: Computer has gone to sleep.)
20:03:27  <defunctzombie>yes
20:03:28  <mbalho>docs, etc
20:03:31  <defunctzombie>yes
20:03:59  <defunctzombie>https://github.com/shtylman/engine.io-client
20:04:11  <defunctzombie>and very minimal things required to work with browserify
20:04:21  <defunctzombie>I am working to get upstream browserify compatible
20:05:25  <defunctzombie>substack: for stream stuff, if I want to read newline stream data out of a stream, but write newline stringify into it.. wtf should hte .pipe look like?
20:05:36  <mbalho>defunctzombie: i bet you could use websocket-stream with that?
20:05:43  <defunctzombie>mbalho: with what?
20:05:47  <mbalho>defunctzombie: the repo you just linked me
20:05:51  <mbalho>defunctzombie: engine.io-client
20:05:59  <defunctzombie>mbalho: I don't know what wbesocket-stream is
20:06:05  <mbalho>defunctzombie: it wraps the websocket api in a stream
20:06:14  <mbalho>defunctzombie: and it looks like engine.io-client implements the websocket api
20:06:20  <defunctzombie>mbalho: ah, does it? maybe
20:06:32  <mbalho>defunctzombie: looks very similar, onopen, onmessage, onclose
20:06:35  <defunctzombie>mbalho: there is also https://github.com/Raynos/engine.io-stream
20:06:46  <defunctzombie>mbalho: er https://github.com/Raynos/engine.io-stream/tree/wip-refactor
20:06:55  <substack>defunctzombie: probably duplexer will help you write that
20:06:56  <substack>and split
20:06:58  <mbalho>defunctzombie: https://github.com/maxogden/websocket-stream/blob/master/index.js
20:07:17  <defunctzombie>mbalho: try it :) maybe it will work
20:07:21  <substack>mbalho: rollerskating invitation on the twitter I see
20:07:26  <mbalho>WAT
20:07:38  <mbalho>im at sweet bar, gonna hang out with the mapbox CEO in a little bit
20:07:59  <Ralt>substack: looking, thanks
20:08:36  <substack>right-o
20:10:09  <Ralt>substack: so basically... the "lazy thing" is: build each bundle separately then use AMD?
20:10:58  <substack>you don't need to use amd, head.js just fetches scripts asynchronously
20:11:23  * shuaibquit (Quit: Textual IRC Client: http://www.textualapp.com/)
20:12:36  <defunctzombie>substack: I have a single stream that is both readible and writable.. I need read to go through one set of things and write to do another.. duplexer seems to be for two different streams
20:14:03  <Raynos>defunctzombie: you can merge that in if you wnat
20:14:13  <Raynos>Ralt: :p
20:15:48  * ins0mniaquit (Ping timeout: 264 seconds)
20:16:34  <Raynos>mbalho: why doesn't sockjs work for you?
20:16:40  <jlord>substack: it's a shame rollerskating didn't work out cause i have my own pair!
20:17:21  <mbalho>Raynos: has too many deps, a native dependency, written in coffeescript
20:17:34  <mbalho>Raynos: it could be way way way way simpler is all
20:17:35  <Raynos>then we need streaming xhr
20:17:50  <substack>jlord: sounds like it's still taking place
20:19:24  * ins0mniajoined
20:19:41  <jlord>substack: yeah, but i'm at sweetbar for the same hangout as mbalho
20:19:55  <substack>same hangout?
20:20:14  <mbalho>its a new hip term for gathering
20:20:15  * marcello3djoined
20:20:35  <jlord>substack: haha we're bothing meeting up with a guy we know from mapbox who is in town
20:23:32  <mbalho>Raynos: its complicated cause xhr sucks at streaming, you need 2 libs, one that does long-polling reads + reconnects and another that does a write stream by making a new xhr on every .write (maybe with buffering)
20:23:47  <mbalho>Raynos: then a third lib that ties both together into the stream api
20:24:01  <mbalho>i think parts of this exist but i always forget
20:24:53  <defunctzombie>holy jesus I figured out out
20:25:18  <defunctzombie>mbalho: I would use engine.io-client or stream and then write the reconnect magic on that
20:25:23  <substack>xhr-write-stream exists
20:25:28  <defunctzombie>mbalho: since it will tell you when the underlying has ended
20:25:49  <defunctzombie>mbalho: I haven't gotten around to doing that myself yet but will at some point
20:29:55  <substack>I've only been <2km from my house the past week and a half
20:30:03  <mbalho>#locovore
20:30:15  <substack>need to properly fix that bike
20:30:20  <substack>mbalho: pretty much!
20:30:33  <mbalho>substack: you should get a new bike
20:30:37  <isaacs>chrisdickinson: no, and even re-compressing won't do the same unless you are sure to set the same windowLength, compressionLevel, etc.
20:30:43  <chrisdickinson>yeah
20:30:46  <chrisdickinson>i worked around it
20:30:54  <chrisdickinson>now to replicate it in browser
20:31:00  <isaacs>chrisdickinson: if you're inflating, yuou can just watch the length before you inflate it
20:31:17  <chrisdickinson>isaacs: the use case is for git packfiles
20:31:50  <chrisdickinson>basically, you're sent a packfile which is a stream of objects with an object header that defines the inflated size and type of the object; but the next object is compressedLength away
20:31:56  <isaacs>k
20:32:05  <chrisdickinson>it's a totally weird use case
20:32:10  <isaacs>yeah
20:32:13  <Raynos>mbalho: substack wrote the write part with xhr-write-stream
20:32:19  <chrisdickinson>basically, "inflate until you get to size; then tell me how big the compressed data was"
20:32:21  <Raynos>someone needs to do the read part with stream / long polling / jsonp
20:32:25  <chrisdickinson>but i got it to work with the zlib module
20:32:34  <chrisdickinson>it kind of sucks, since it involves writing one byte at a time and flushing
20:32:35  <isaacs>chrisdickinson: right, so you have to watch the input
20:32:47  <isaacs>chrisdickinson: ew...
20:32:52  <Raynos>mbalho: then we need a 4th lib that starts with xhr and switched to ws if it exists!
20:32:57  <isaacs>chrisdickinson: flushing every byte is insanely expensive
20:33:00  <chrisdickinson>(though if you have a better idea -- like, maybe flushing isn't necessary? -- i'm totally open to ideas :D)
20:33:08  <Raynos>mbalho: the hard part is how i test dis on testling cc substack
20:33:16  <isaacs>chrisdickinson: i don't know
20:33:20  <chrisdickinson>'kk
20:33:26  <chrisdickinson>i'll try without the flush
20:33:36  <mbalho>Raynos: for newer browser you can just do it over CORS
20:33:41  <chrisdickinson>it might be unnecessary with a certain magic soup of zlib options
20:33:51  <chrisdickinson>what's worse is the browser version
20:33:57  <chrisdickinson>since zlib-browserify only has inflateSync
20:33:57  * marcello3dquit (Read error: Connection reset by peer)
20:34:05  <Raynos>mbalho: I'm happy to have a cors xhr streaming thing with IE9+ support :D
20:34:08  <Raynos>fuck oldIE
20:34:12  <substack>mbalho: looking at http://sfbay.craigslist.org/eby/bik/3688846745.html
20:34:22  <chrisdickinson>you just have to accumulate bytes, and write them until you get a response that is the right size
20:34:25  <Raynos>I wrote https://github.com/Raynos/xhr/blob/master/index.js for IE9 with a shit ton of IE9 cors bug fixes
20:34:31  <chrisdickinson>and, you know, catch errors when it can't be decompressed
20:34:38  * chrisdickinsonweeps
20:34:56  <mbalho>substack: that looks pretty sweet
20:35:02  <mbalho>substack: road bikes are for hipsters anyway
20:36:42  <substack>might be a bit small though?
20:37:10  * yorickjoined
20:37:10  * yorickquit (Changing host)
20:37:10  * yorickjoined
20:37:29  <isaacs>substack: how tall are you?
20:37:52  <substack>5 feet 10 inches
20:37:55  <substack>in those silly units
20:37:58  <isaacs>right
20:38:12  <defunctzombie>hahaha
20:38:14  <isaacs>i feel like people are in 3 basic categories: small, medium, and large.
20:38:31  <isaacs>small is everyone about marisa's size or smaller. medium is there to my height. large is anything above my height.
20:38:34  <chrisdickinson>hrm, yeah, looks like flushing every byte is going to be the way to go ):
20:38:47  <isaacs>substack: you're definitely a "medium"
20:39:10  <isaacs>chrisdickinson: is there some way that you can detect when it starts being a header of the next thing?
20:39:18  <isaacs>chrisdickinson: other than the decompressed length?
20:40:08  <chrisdickinson>not really, the first byte of a header is formatted CTTTNNNN, where C == continue to next byte, TTT defines the type, and NNNN is the first portion of the size
20:40:39  <chrisdickinson>ah
20:40:51  <chrisdickinson>i could hook onto TTT, and if it's any of the expected numbers, *then* flush
20:40:57  <chrisdickinson>i bet.
20:41:52  <chrisdickinson>git's packfiles are hilariously interesting beasts
20:42:14  <chrisdickinson>they're both the transfer medium as well as an object database, and the heuristics that go into packing them is really odd
20:42:41  * stlsaintquit (Ping timeout: 240 seconds)
20:45:15  * defunctzombiechanged nick to defunctzombie_zz
20:49:23  <chrisdickinson>so i can get it to skip some number of bytes for flushing, but i'm not sure if it's worth it
20:49:57  <chrisdickinson>isaacs: what kind of overhead is that `flush` incurring? is it tying up the CPU? eating up memory? or the event loop?
20:50:08  <chrisdickinson>(sorry for all the questions.)
20:55:24  * Domenic_joined
20:55:31  * nicholasfjoined
20:57:43  <isaacs>chrisdickinson: well, zlib is designed to work on more than one byte at a time
20:57:53  <isaacs>chrisdickinson: this way, it collects up output until it reaches a certain size.
20:58:00  <isaacs>if you have more input, you can do a better job compressing it
20:58:07  <chrisdickinson>ah
20:58:10  <chrisdickinson>well, this is decompression
20:58:14  <isaacs>for example, if you write one byte, then flush, repeatedly, the compressed output will be *larger* than the input.
20:58:24  <isaacs>right
20:58:36  <isaacs>so, basically, you're not going to be decompressing as efficiently, either
20:58:38  <Raynos>isaacs: whom is marisa
20:58:46  <isaacs>Raynos: my special lady friend
20:58:54  <mbalho>Lady++ version 5000
20:59:06  <isaacs>Raynos: also, it's "who" , not "whom"
20:59:14  <Raynos>:(
20:59:16  <isaacs>Raynos: whom is only when it's the direct object
20:59:36  <isaacs>Raynos: and also, you can use "who" there, sine "whom" is archaic, but you'er from europe, so you get to speak in archaic weirdo lingo ;)_
20:59:59  <isaacs>so, "to whom are you speaking" vs "who are you"
21:00:14  <Raynos>o_o;
21:00:23  <Raynos>i like archaic
21:00:38  <isaacs>but you wouldn't say "whom are you speaking to", because the rule about ending on prepositions is lower on the food chain than the rule about using whom, so if you're going to break one, you may as well just go ahead and break the other, too
21:00:45  <isaacs>though both rules are outdated nowadays
21:00:58  <Raynos>searching for all references to Date.now() and killing them
21:01:00  <Raynos>kill them with fire
21:01:49  <chrisdickinson>zlib will be the death of me )`:
21:02:02  <chrisdickinson>at least things have gotten much better in the last two years
21:02:04  <hij1nx>chrisdickinson: nice work on all the git modules! maybe you'll beat creationx to a working git in JS!
21:02:25  <chrisdickinson>before, there was only an unlicensed japanese raw inflate/deflate implementation floating around the web :|
21:02:31  <chrisdickinson>hij1nx: thanks!
21:04:57  <chrisdickinson>once i can read packfiles (sans indexes) i can whip up an in-browser demo
21:05:41  <chrisdickinson>then it's just… well, writing objects, updating refs, and pushing refs
21:06:02  <chrisdickinson>also, serving git upload-pack
21:06:12  <chrisdickinson>so, there's a lot left :)
21:06:28  * Benviejoined
21:19:28  * defunctzombie_zzchanged nick to defunctzombie
21:30:52  <defunctzombie>I feel like I must be missing something... is there no example of a newline json protocol with some simple streams piped together?
21:30:59  <defunctzombie>I want to write objects and read objects
21:31:14  <defunctzombie>to/from newline delimited small json messages
21:31:44  <defunctzombie>maybe I am thinking about it wrong
21:31:45  <mbalho>EventSource + SSE
21:31:50  <substack>defunctzombie: https://github.com/dominictarr/stream-serializer
21:31:54  <mbalho>is the 'protocol' for line delimited json
21:32:24  <defunctzombie>substack: ahh.. so you do call it and give it the stream
21:32:31  <defunctzombie>substack: that is the same approach I came to
21:32:46  <defunctzombie>substack: but was thinking I could be smarter with .pipe or something, but it don't work like that
21:33:18  <defunctzombie>that module needs some love
21:33:21  <defunctzombie>it console logs errors
21:33:23  <defunctzombie>haha
21:38:39  <defunctzombie>what I want is something that puts that together with the read side too
21:38:50  <defunctzombie>basically, I want JsonWire(socket);
21:38:51  <chrisdickinson>output.pipe(lineStream()).pipe(through(JSON.parse))?
21:39:00  <chrisdickinson>well
21:39:09  <defunctzombie>is that gonna work?
21:39:18  <chrisdickinson>output.pipe(lineStream()).pipe(through(function(d) { this.queue(JSON.parse(d)) }))
21:39:19  <substack>no
21:39:20  <defunctzombie>I need to be able to write to it and have it send newline json
21:39:36  <defunctzombie>and read from it for whatever data it received
21:39:46  <chrisdickinson>that'll do output, but not input
21:39:57  <defunctzombie>chrisdickinson: doing one or the other is easy
21:40:12  <defunctzombie>I want something that puts a json linefeed interface on top of a read/write stream
21:40:28  <chrisdickinson>1 sec
21:40:35  * defunctzombiethinks that isn't something crazy
21:42:18  <defunctzombie>https://gist.github.com/shtylman/5233671
21:42:27  <defunctzombie>ideally, that in.send would be an in.write
21:42:36  <defunctzombie>so that this would become like any other stream
21:43:26  * marcello3djoined
21:43:41  * nicholasfquit (Remote host closed the connection)
21:43:44  <defunctzombie>so far that is the only way I have been able to accomplish this
21:47:00  <chrisdickinson>2 secs
21:47:53  * thl0_zzjoined
21:49:00  <defunctzombie>chrisdickinson: hahaha
21:50:09  * shamaquit (Read error: Connection reset by peer)
21:50:30  * shamajoined
21:51:11  <chrisdickinson>okay done
21:52:01  * stlsaintjoined
21:52:01  * stlsaintquit (Changing host)
21:52:02  * stlsaintjoined
21:52:07  <chrisdickinson>defunctzombie: https://gist.github.com/chrisdickinson/5233706
21:52:17  <chrisdickinson>maybe not the most elegant
21:52:47  <chrisdickinson>everything you write to the stream will be stringified and line delimited, then sent
21:52:54  <thl0_zz>cloning typescript is soooo slow and from browsing code online it is hard to tell now to use it as a module to compile a single file
21:53:00  * thl0_zzchanged nick to thl0
21:53:05  <chrisdickinson>everything you receive will be line delimited, json parsed, and output as js objects
21:53:10  <thl0>guess typefy is not happening ;0
21:53:54  <chrisdickinson>defunctzombie: does that do what you want?
21:54:03  <defunctzombie>chrisdickinson: looking
21:54:21  <chrisdickinson>it's basically objects in, objects out
21:54:33  <chrisdickinson>but whatever goes in the middle -- tcp, http, etc etc
21:55:23  <defunctzombie>right
21:55:27  <defunctzombie>chrisdickinson: why use duplex?
21:55:37  <chrisdickinson>makes life easy-ish
21:56:09  <chrisdickinson>biggest problem is exposing the error events of sub streams on the outer stream
21:56:13  <chrisdickinson>which is a little gross
21:56:16  <defunctzombie>oh, I see
21:56:20  <defunctzombie>duplex is the thing you retrn
21:56:22  <defunctzombie>*return
21:56:24  <chrisdickinson>yep
21:56:46  <defunctzombie>why not return a through?
21:56:52  <defunctzombie>cause then you can't write to it
21:56:54  <defunctzombie>I suppose
21:56:56  <chrisdickinson>well
21:57:01  <chrisdickinson>it's sort of a mixed situation
21:57:07  <chrisdickinson>you want the data from the other end of a series of pipes
21:57:17  <chrisdickinson>i suppose you could
21:57:20  <defunctzombie>yea
21:57:21  <chrisdickinson>make a fake through
21:57:28  <defunctzombie>that is what made this weird
21:57:30  <chrisdickinson>fake-y
21:57:33  <defunctzombie>I like this tho
21:57:43  <defunctzombie>need to change out split() for lines()
21:57:48  <defunctzombie>or maybe they do the same thing
21:57:49  <defunctzombie>haha
21:57:59  <defunctzombie>anyhow.. certainly more along the lines of what I needed
21:58:02  <defunctzombie>thank you!
21:58:11  <defunctzombie>this needs to be a module
21:58:39  <chrisdickinson>here, i'll update and just use through
21:58:47  <chrisdickinson>ah that's right
21:59:01  <chrisdickinson>i use duplex because the write can be paused separately from the output
21:59:07  <chrisdickinson>derp!
21:59:09  <chrisdickinson>i forgot :)
21:59:17  <defunctzombie>?
21:59:42  <defunctzombie>why would the write be paused separately?
22:00:00  <chrisdickinson>like in tcp -- we might be blocked from writing more, but not receiving more data
22:00:08  <chrisdickinson>the read and write are semi-independent
22:00:23  <defunctzombie>jesus
22:00:35  <defunctzombie>wouldn't that just backpressure tho?
22:00:40  * mikolalysenkojoined
22:00:47  <defunctzombie>so if we can't write, whatever is writing to us should backpressure
22:00:48  <chrisdickinson>tbh, i'm not completely sure at the moment :)
22:00:53  <chrisdickinson>right
22:00:59  <defunctzombie>how would it even look with through and no duplex?
22:01:02  * defunctzombieis curious
22:01:09  <defunctzombie>less deps make me happier
22:01:48  <chrisdickinson>defunctzombie: https://gist.github.com/chrisdickinson/5233706#file-no-duplex-only-through-js
22:02:36  <defunctzombie>chrisdickinson: nice
22:02:41  <chrisdickinson>:D
22:02:41  * wolfeidauquit (Remote host closed the connection)
22:02:41  <defunctzombie>and the set encoding can go
22:02:43  <defunctzombie>I think
22:02:49  <chrisdickinson>line-stream is picky about that
22:02:52  <chrisdickinson>it wants strings
22:02:55  <defunctzombie>cause you can just do it at function call
22:03:08  <chrisdickinson>well
22:03:13  <chrisdickinson>might work actually: https://github.com/soldair/node-line-stream/blob/master/index.js
22:03:16  <defunctzombie>or you can make the use do it
22:03:34  <defunctzombie>I use split() anyhow
22:03:36  <defunctzombie>I will try both haha
22:04:23  <defunctzombie>chrisdickinson: do all the errors need to be handled like that?
22:04:28  <defunctzombie>I was under the impression pipe would do it
22:04:30  <chrisdickinson>you want them to be, yeah
22:04:49  <chrisdickinson>well, you want to propagate them to the user so he/she can do something about it
22:05:04  <chrisdickinson>otherwise they'd end up at that module internally and no one could ever listen for them
22:05:07  <chrisdickinson>which would suck
22:06:43  * marcello3dquit (Ping timeout: 256 seconds)
22:06:43  <defunctzombie>right
22:07:28  <defunctzombie>something not working
22:08:11  <defunctzombie>that no through example seems broken
22:09:46  <chrisdickinson>ah
22:09:48  <chrisdickinson>damn ):
22:10:02  <chrisdickinson>you might go with the duplex one
22:10:15  <defunctzombie>wonder why it is broken
22:10:19  <defunctzombie>seems to be double encoding or something
22:13:06  * defunctzombiechanged nick to defunctzombie_zz
22:13:40  * dominictarrjoined
22:15:03  <Raynos>https://gist.github.com/chrisdickinson/5233706#file-no-duplex-only-through-js-L7
22:15:04  <Raynos>lol wut
22:15:32  * mikealquit (Quit: Leaving.)
22:17:17  <chrisdickinson>hi Raynos
22:17:51  * wolfeidaujoined
22:19:24  <Raynos>hi :D
22:19:27  <Raynos>i am fixing your thing
22:19:28  <Raynos>because its complex
22:19:32  <chrisdickinson>what's wrong with it?
22:19:36  <chrisdickinson>which one?
22:19:48  <dominictarr>Raynos: yo
22:20:12  <Raynos>dominictarr: I agree that writable as half duplex is good. writable(end, data) >>> writable(head, tail)
22:20:14  * mikolalysenkoquit (Ping timeout: 246 seconds)
22:20:53  <dominictarr>huh, what do you mean by half-duplex?
22:21:25  <dominictarr>oh, because you don't pass a callback?
22:22:26  <Raynos>as in
22:22:44  <Raynos>having a half duplex writable as function (readable) { /* writable logic */ do not return readable }
22:22:54  <Raynos>so that it can pull more from readable whenever it wants
22:25:57  <dominictarr>usually, they shouldn't pull until their previous call has returned.
22:29:48  <dominictarr>so so tired, jet lag...
22:30:09  <Raynos>chrisdickinson: never mind
22:30:20  <chrisdickinson>aw, dang
22:30:24  <Raynos>your implementation is decent. json is complex
22:30:34  <chrisdickinson>for real horror: https://github.com/chrisdickinson/inflate-until
22:30:44  <dominictarr>chrisdickinson: https://github.com/dominictarr/pull-stream#more-cool-stuff
22:31:11  <chrisdickinson>interesting!
22:33:17  <Raynos> dominictarr: I'm going to change my api https://github.com/Raynos/recurse-stream/issues/3#issuecomment-15371013 except for (writable, isClosed)
22:33:44  <Raynos>dominictarr: we should also implement a new line deliminated json pull stream
22:34:12  <chrisdickinson>:)
22:43:16  * dominictarrquit (Quit: dominictarr)
22:46:45  * mikealjoined
22:48:49  <Raynos>chrisdickinson: why so much git madness?
22:49:25  <chrisdickinson>Raynos: i had implemented a big swath of it two years ago, before browserify
22:49:40  <chrisdickinson>so, when i heard about js-git i got interested in how it would look today
22:50:11  <chrisdickinson>plus, if i get it mostly done early, creationix gets extra time to make everything super awesome
22:51:36  * mikealquit (Ping timeout: 276 seconds)
22:51:56  <chrisdickinson>it turns out that browserify -- and modern node -- make it a lot easier
22:56:12  <Raynos>:)
22:59:38  <chrisdickinson>the hardest part is still zlib
22:59:45  <chrisdickinson>it's a lot better than it was
22:59:47  <chrisdickinson>but it's still hard ):
23:00:43  <Domenic_>how do you do progress in streams2
23:00:50  <Domenic_>since listening to "data" kills the streams2-ness.
23:02:21  <Domenic_>substack: for an S3 library I maintain, would you recommend doing http(s) requests with `agent: false`? Not sure if it's my job to make that choice for consumers, but on the other hand, many consumers are getting screwed by the default pooling behavior.
23:05:45  <substack>absolutely do that
23:05:59  <substack>it's reckless to use the default pooling behavior
23:07:13  <Domenic_>ok sweet
23:10:03  * mikolalysenkojoined
23:10:40  <Raynos>was there a japanese nodeconf before?
23:10:53  <Raynos>Domenic_: What is progress?
23:11:13  <Raynos>you can just pipe it
23:11:17  <substack>Raynos: yes
23:11:24  <substack>I'm wearing the tshirt
23:11:42  <Domenic_>Raynos: it is displaying how far an upload or download has progressed, i.e. how many bytes compared to the Content-Length header.
23:12:25  <Raynos>use pipe or on data
23:12:27  <Raynos>whatever works
23:12:30  * duncanbeevers_quit (Ping timeout: 245 seconds)
23:12:31  * sveisveiquit (Ping timeout: 245 seconds)
23:13:03  <Domenic_>I would like to not kick consumers into old-mode
23:13:32  * mintxianjoined
23:13:43  <substack>res.pipe(someplace); var total = 0; res.pipe(through(function (buf) { total += buf.length; process.stdout.write((total / res.headers['content-length']) + ' \r') }))
23:13:54  <substack>assuming through can do streams2
23:13:56  * devaholicquit (Ping timeout: 248 seconds)
23:13:57  * pikpikquit (Ping timeout: 248 seconds)
23:14:11  <Domenic_>kk
23:14:30  * zujoined
23:15:00  * Nexxyquit (Ping timeout: 245 seconds)
23:15:04  * isaacs_joined
23:15:06  * Nexxyjoined
23:15:06  * Nexxyquit (Changing host)
23:15:06  * Nexxyjoined
23:16:02  * Benvie_joined
23:16:18  * brianloveswords_joined
23:16:59  * jjjjohnnnyjoined
23:17:14  <Raynos>Domenic_: streams will be randomly kicked into old-mode. that ship is fucked
23:18:18  * mikealjoined
23:19:13  * chilts_joined
23:19:23  * Altreus_joined
23:19:48  * Benviequit (Ping timeout: 264 seconds)
23:20:28  * spionquit (Ping timeout: 246 seconds)
23:20:33  * zu_quit (*.net *.split)
23:20:33  * mint_xianquit (*.net *.split)
23:20:33  * chiltsquit (*.net *.split)
23:20:33  * isaacsquit (*.net *.split)
23:20:33  * brianloveswordsquit (*.net *.split)
23:20:36  * mintxianchanged nick to mint_xian
23:20:41  * jden|zz_joined
23:20:57  * crank_joined
23:21:19  * Guest44152joined
23:21:32  * notelliottcablequit (Ping timeout: 264 seconds)
23:21:41  * mikolalysenkoquit (Ping timeout: 252 seconds)
23:23:40  * jden|zzquit (Ping timeout: 245 seconds)
23:23:46  * hij1nxquit (Ping timeout: 248 seconds)
23:23:46  * Guest38188quit (Ping timeout: 248 seconds)
23:23:47  * jjjjohnn1yquit (Ping timeout: 248 seconds)
23:23:47  * mirkokquit (Ping timeout: 248 seconds)
23:23:47  * Altreusquit (Ping timeout: 248 seconds)
23:23:47  * crankquit (Remote host closed the connection)
23:24:14  * hij1nxjoined
23:24:27  * _ddgbotquit (Ping timeout: 260 seconds)
23:24:36  * devaholicjoined
23:24:36  * isaacs_changed nick to Guest88068
23:24:52  * mirkokjoined
23:25:07  * pikpikjoined
23:25:45  * thatguydanjoined
23:28:11  <substack>ploy is getting so sweet
23:28:31  <substack>and it's still so tiny
23:32:00  * ins0mniaquit (Ping timeout: 260 seconds)
23:35:20  * chrisdickinsonquit (Ping timeout: 264 seconds)
23:37:07  * chrisdickinsonjoined
23:39:42  <substack>woot, just hit 2k followers on github
23:46:40  <substack>why are programmers so threatened by amateurism :/
23:47:20  <substack>https://twitter.com/joemccann/status/315968493512187904
23:48:10  <Domenic_>i think it's more that they like things neat and tidy
23:48:45  <substack>"opinionated" tidy vertical stacks are not very flexible
23:48:57  <substack>they are not useful for me when I go to solve problems that I have
23:49:06  <substack>because I need to buy into the whole ideology just to use a tiny piece
23:51:59  <substack>npm needs more modules, not less
23:52:04  <substack>ESPECIALLY if they are garbage
23:52:06  * Guest88068quit (*.net *.split)
23:52:17  <substack>can't get quality without garbage
23:52:19  * rvaggquit (Ping timeout: 264 seconds)
23:52:35  <Domenic_>O_o
23:52:37  * isaacsjoined
23:52:40  <Domenic_>the latter does not imply the former
23:52:53  <substack>any barriers that prohibit garbage will also invariably inhibit quality
23:53:01  * isaacschanged nick to Guest62188
23:53:04  * rvaggjoined
23:55:15  <substack>and garbage provides cover for quality
23:55:29  <substack>people get standoffish about publishing when everything is really clean and tidy
23:55:54  <substack>and I want people to publish more so I can use their creations
23:55:55  <guybrush>just look at github, how much repos are there exactly? and there is also only so much namespace, and of course lots of garbage :D
23:57:45  * jlord_joined
23:57:48  * Altreus_quit (*.net *.split)
23:57:48  * jjjjohnnnyquit (*.net *.split)
23:57:52  * pikpikquit (*.net *.split)
23:57:52  * mirkokquit (*.net *.split)
23:57:52  * chilts_quit (*.net *.split)
23:57:53  * mint_xianquit (*.net *.split)
23:57:53  * FireFlyquit (*.net *.split)
23:57:53  * munroquit (*.net *.split)
23:58:38  <guybrush>also npm works with git anyway and custom registries and tarballs
23:58:54  <thl0>http://i.imgur.com/hj1J1Nt.png
23:59:28  <thl0>debugging classes with es6ify browserify transform
23:59:53  <thl0>substack: like it?