00:03:44  * pfrazequit (Remote host closed the connection)
00:04:51  * pfrazejoined
00:13:20  * pfrazequit (Remote host closed the connection)
00:17:24  <terinjokes>mafintosh (and friends): is it safe to use `pump` onto the same writeable stream from multiple places?
00:29:33  <terinjokes>it so far seems safe…
01:08:55  * wjagodfreyjoined
01:09:56  * pfrazejoined
01:23:06  * wjagodfreyquit (Ping timeout: 246 seconds)
01:23:53  * wjagodfreyjoined
01:29:38  * pfrazequit (Remote host closed the connection)
01:44:26  * pfrazejoined
02:01:44  * wjagodfreyquit (Ping timeout: 244 seconds)
02:02:35  * wjagodfreyjoined
02:10:05  * djcoinquit (Quit: WeeChat 1.3)
02:43:37  * wjagodfreyquit (Ping timeout: 250 seconds)
02:50:40  * wjagodfreyjoined
03:02:04  * dguttmanquit (Quit: dguttman)
03:27:33  * wjagodfreyquit (Ping timeout: 240 seconds)
03:44:03  * wjagodfreyjoined
03:51:53  * pfrazequit (Remote host closed the connection)
04:33:07  * wjagodfreyquit (Ping timeout: 244 seconds)
04:37:32  * dguttmanjoined
04:39:04  * pfrazejoined
04:43:39  * pfrazequit (Ping timeout: 250 seconds)
04:46:58  * dguttmanquit (Quit: dguttman)
05:38:55  * phatedjoined
05:41:21  * phated_joined
05:43:23  * phatedquit (Ping timeout: 244 seconds)
06:05:14  * dguttmanjoined
06:06:25  * dguttmanquit (Client Quit)
06:27:47  * pfrazejoined
06:33:47  * pfrazequit (Ping timeout: 260 seconds)
06:51:28  * jbenetquit (Ping timeout: 264 seconds)
06:51:28  * jlordquit (Ping timeout: 264 seconds)
06:51:28  * mikealquit (Ping timeout: 264 seconds)
06:51:50  * jlordjoined
06:51:59  * daleharveyquit (Ping timeout: 276 seconds)
06:52:40  * mikolalysenkoquit (Ping timeout: 264 seconds)
06:52:44  * mikealjoined
06:54:22  * jbenetjoined
06:54:35  * daleharveyjoined
06:57:13  * mikolalysenkojoined
06:58:40  * kumavisquit (Ping timeout: 264 seconds)
06:58:40  * hughskquit (Ping timeout: 264 seconds)
06:58:40  * emilbayesquit (Ping timeout: 264 seconds)
06:58:40  * machtyquit (Ping timeout: 264 seconds)
06:58:40  * sindresorhusquit (Ping timeout: 264 seconds)
06:58:41  * wa7sonquit (Ping timeout: 264 seconds)
06:58:41  * andreypopp__quit (Ping timeout: 264 seconds)
06:59:16  * rvagg_quit (Ping timeout: 264 seconds)
06:59:16  * benglquit (Ping timeout: 264 seconds)
06:59:16  * NeoTeoquit (Ping timeout: 264 seconds)
06:59:16  * beaugundersonquit (Ping timeout: 264 seconds)
06:59:16  * bretquit (Ping timeout: 264 seconds)
06:59:16  * montesluquit (Ping timeout: 264 seconds)
06:59:16  * ferossquit (Ping timeout: 264 seconds)
06:59:16  * HannahWolfequit (Ping timeout: 264 seconds)
06:59:16  * tobiequit (Ping timeout: 264 seconds)
07:01:00  * rvagg_joined
07:01:03  * beaugundersonjoined
07:01:09  * HannahWolfejoined
07:01:11  * sindresorhusjoined
07:01:17  * wa7sonjoined
07:01:18  * hughskjoined
07:02:11  * ferossjoined
07:02:54  * tobiejoined
07:03:50  * bengljoined
07:03:50  * andreypopp__joined
07:04:14  * pfrazejoined
07:04:40  * machtyjoined
07:04:47  * emilbayesjoined
07:05:11  * NeoTeojoined
07:05:51  * monteslujoined
07:06:02  * kumavisjoined
07:09:36  * bretjoined
07:28:32  * fotoveritejoined
07:47:28  * contrahaxjoined
07:56:02  * stagasjoined
07:59:01  * pfrazequit (Remote host closed the connection)
08:34:00  * djcoinjoined
08:40:59  * contrahaxquit (Quit: Sleeping)
08:41:25  <mafintosh>terinjokes: yea
09:21:27  * phated_quit (Remote host closed the connection)
10:13:21  * rfquit (Ping timeout: 246 seconds)
10:14:13  * rfjoined
10:31:15  * phatedjoined
10:35:48  * thealphanerdquit (Quit: farewell for now)
10:36:03  * phatedquit (Ping timeout: 276 seconds)
10:36:18  * thealphanerdjoined
10:45:44  * fotoveritequit (Quit: fotoverite)
10:58:19  * fotoveritejoined
11:09:41  * stagasquit (Ping timeout: 250 seconds)
11:53:42  * fotoveritequit (Quit: fotoverite)
11:57:46  * drptbljoined
12:19:28  * phatedjoined
12:23:54  * phatedquit (Ping timeout: 246 seconds)
12:35:49  * jjjohnnyquit (Ping timeout: 260 seconds)
12:45:00  * drptblquit (Quit: See you later!)
13:22:08  * phatedjoined
13:26:51  * phatedquit (Ping timeout: 244 seconds)
13:43:34  * pfrazejoined
13:48:14  * pfrazequit (Remote host closed the connection)
14:24:12  <terinjokes>mafintosh: cool, thanks. moved a bunch of code over to pump and pumpify.obj after i'd noticed my manual error handling from 2 years ago left a bunch to be desired…
14:25:38  * pfrazejoined
14:29:22  <mafintosh>terinjokes: a lot of missing error handling with streams manifests itselfs as mem leaks
14:29:33  <mafintosh>so you might not have noticed anything was wroong
14:30:52  <terinjokes>mafintosh: in this case, it was manifesting as "prettified error printed to console but not passing the error forward towards dest"
14:31:00  * brianlovewords_joined
14:31:19  <terinjokes>i wonder what i was thinking at the time, and if that was just bad debugging code left over :/
14:32:36  <mafintosh>terinjokes: kinda wanna collect a bunch of snippets of actual code trying to do streams error handling without using any modules
14:32:53  <mafintosh>just to see the different ways people try to do and some of the corresponding problems
14:33:54  <terinjokes>i wrote https://github.com/terinjokes/gulp-uglify/blob/master/docs/why-use-pump/README.md#why-use-pump last week, wanted to expand it (and talk about generic streams, not just gulp ones) in a blog post. but yeah, have also be looking for failures
14:35:32  <terinjokes>ugh, a week later (and after several people review it) i found a typo
14:39:18  * pfrazequit (Remote host closed the connection)
14:46:46  * pfrazejoined
14:50:56  * brianlovewords_quit (Quit: My Mac has gone to sleep. ZZZzzz…)
14:51:43  * brianlovewords_joined
15:07:33  * brianlovewords_quit (Quit: My Mac has gone to sleep. ZZZzzz…)
15:12:17  * brianlovewords_joined
15:17:36  * brianlovewords_quit (Quit: My Mac has gone to sleep. ZZZzzz…)
15:20:57  * brianlovewords_joined
15:23:06  * brianlovewords_quit (Client Quit)
16:37:12  * dguttmanjoined
17:05:03  * pfraze_joined
17:05:54  * pfrazequit (Ping timeout: 244 seconds)
17:46:38  * jjjohnnyjoined
18:02:59  * fotoveritejoined
18:31:48  * contrahaxjoined
18:45:26  * dguttmanquit (Quit: dguttman)
18:46:37  * dguttmanjoined
19:17:23  * dguttmanquit (Quit: dguttman)
19:26:00  * pfraze_quit (Remote host closed the connection)
19:26:16  * fotoveritequit (Quit: fotoverite)
19:29:13  <mikolalysenko>holy shit, every time I look at babel and webpack and all that stuff it gets more complicated
19:29:18  <mikolalysenko>what the hell is going on any more?
19:29:40  * contrahaxquit (Quit: Sleeping)
19:31:44  <jfhbrook>the future is now mikolalysenko, more than ever
19:31:54  <mikolalysenko>I don't like this future
19:31:57  <mikolalysenko>this future is bad
19:32:09  <jfhbrook>real talk, it's not *bad* just surprisingly complicated
19:32:17  <mikolalysenko>yeah
19:32:33  <mikolalysenko>but this complication feels unnecessary
19:32:50  <jfhbrook>the core problem, I think, is that developers want to be able to safely use not just es6 features but also jsx and require and possibly es6 modules shimmed to use require, and who knows what else
19:33:09  <mikolalysenko>I think the core problem is an infatuation with syntactic sugar
19:33:10  <jfhbrook>and when you have situations where you need es6 transpilation and ??? (jsx, purescript, whatever)
19:33:22  <jfhbrook>and require and interplay with stuff that refuses to use require
19:33:27  <mikolalysenko>it is like they took all the worse indulgences of coffeescript, modularized it and made it even more popular
19:33:31  <jfhbrook>you get complicated tooling as a matter of course
19:33:50  <jfhbrook>I'd maintain that es6 is much better than coffeescript, having written both
19:33:51  <mikolalysenko>like take jsx, it isn't really necessary
19:34:05  <mikolalysenko>same with es6 and coffeescript
19:34:07  <jfhbrook>have you looked at what, well, react looks like without jsx?
19:34:16  <jfhbrook>"necessary" doesn't mean "best"
19:34:22  <mikolalysenko>it is true, but that is a problem with react having a complicated interface
19:34:33  <jfhbrook>like what's *necessary* for me to survive is a tent, but you know I'd much rather live in an apartment
19:34:46  <jfhbrook>tents are only good at a burn
19:34:57  <mikolalysenko>you could re-engineer it so you wouldn't need jsx
19:35:12  <jfhbrook>possibly
19:35:27  <mikolalysenko>like nest things using json blobs or arrays or whatever
19:35:28  <jfhbrook>but you'd still have es6 and require and god-damn-it-jquery-doesnt-support-require use cases
19:35:52  <jfhbrook>like you don't eschew browserify in favor of cat foo.js bar.js
19:36:06  <jfhbrook>so clearly you see the use of a transpilation strategy
19:36:35  <mikolalysenko>at this point I accept that it exists, and es6 is gonna happen no matter what
19:36:45  <jfhbrook>and babel is nice not just because it lets you use more experimental/sexy es6 stuff, but it also lets you use non-controversial es6 stuff while not having to worry about some jackass using ie9
19:37:21  <mikolalysenko>yeah, but even the non-controversial stuff seems pretty unnecessary
19:37:49  <mikolalysenko>the mere fact you can transpile it efficiently is enough to prove that you didn't need to move the goddamn universe around some crazy syntactic short cut
19:38:01  <jfhbrook>you make it sound like es6 was a waste of time
19:38:10  <mikolalysenko>yeah, I think it probably was in retrospect
19:38:14  <jfhbrook>you *sound* like a silent generationer hating on rock music
19:38:29  <jfhbrook>I've been es6-ing it up quite a bit, it's not bad!
19:38:41  <mikolalysenko>hey, it's a thing and you can use it
19:38:48  <mikolalysenko>but really it is babel you are using not es6
19:39:01  <jfhbrook>how do you figure
19:39:04  <mikolalysenko>no one actually ships es6 because you know ie9 and whatever
19:39:07  * pfrazejoined
19:39:10  <mikolalysenko>you always transpile it anyway
19:39:15  <jfhbrook>beyond "okay there's some things babel can't actually correctly transpile"
19:39:19  <jfhbrook>you're *writing* es6
19:39:24  <jfhbrook>even if you're not *running* es6
19:39:35  <jfhbrook>also babel is configurable that way
19:39:45  <jfhbrook>you can configure which things it shims/transpiles, and which things it assumes the browser has
19:40:03  <mikolalysenko>because making a new standard means it is going to create a ton of complexity and break a bunch old tools
19:40:24  <mikolalysenko>like falafel, for example or static-module, or any of the tools that read in es5 syntax
19:40:31  <jfhbrook>again, you sound like an old man hating on those, those ELECTRIC GUITARS
19:40:50  <mikolalysenko>the thing with electric guitars is they didn't break all this existing stuff
19:40:53  <jfhbrook>it's a little more complex but not outrageously so
19:40:57  <mikolalysenko>it is a new innovation and works independently
19:41:04  <mikolalysenko>there are gonna be things that break because of this
19:41:11  <jfhbrook>and es6 is mostly backwards compatible
19:41:12  <mikolalysenko>complexity and changes in working code -> breaking code
19:41:33  <mikolalysenko>I'm ok with adding stuff if there is a big pay off to do it
19:41:37  <jfhbrook>it's only if you're doing crazy things like trying to parse javascript into an AST for god knows what reason
19:41:46  <mikolalysenko>but if you just want new syntax, go use coffeescript 2.0 or whatever
19:42:06  <jfhbrook>except that coffeescript is objectively poorly designed while es6 is in a lot of ways, well, pretty good
19:42:16  <mikolalysenko>there are lots of good reasons to want to statically analyze code
19:42:23  <mikolalysenko>sure, I agree es6 is better than coffeescript
19:42:25  * contrahaxjoined
19:42:31  <mikolalysenko>the problem is trying to push it as a standard
19:42:48  <jfhbrook>there's no *push*
19:42:51  <jfhbrook>it *is* a standard
19:42:54  <mikolalysenko>if es6 was called something like espresso-script or whatever it would be fine
19:43:00  <mikolalysenko>and not supported by ecma
19:43:09  <rom1504>if es6 didn't happen, people would eventually end up writing in some other language, and js would just be a compilation target
19:43:15  <mikolalysenko>that's ok
19:43:21  <mikolalysenko>because all that static analysis stuff would still work
19:43:27  <mikolalysenko>and it could actually get *good*
19:43:39  <mikolalysenko>like look at the tools available for C and C++, they can do amazing stuff
19:43:54  <jfhbrook>aaaand c and c++ both have modern versions
19:43:59  <mikolalysenko>that tooling will never reach maturity for js if it keeps fucking around and breaking all the semantics
19:44:00  * tmpvarquit (Ping timeout: 276 seconds)
19:44:00  <mikolalysenko>not C
19:44:04  <jfhbrook>like C++ 2011 and c++ 2014
19:44:18  <mikolalysenko>it is true, but the tools for those aren't as good
19:44:19  <jfhbrook>or C99
19:44:30  <jfhbrook>or hey, C11 which totally exists
19:44:36  <mikolalysenko>which no one even supports
19:45:44  <mikolalysenko>also the changes in c11 and c99 are pretty small/minor edge cases
19:45:55  <mikolalysenko>you get a few helper macros for alignment and remove some undefined behaviors
19:45:59  <mikolalysenko>but es6 is a ton of stuff
19:46:49  * tmpvarjoined
19:46:52  <jfhbrook>mostly because es5 is so crippled
19:47:03  <mikolalysenko>no more crippled than es6
19:47:20  <mikolalysenko>semantically they're pretty much equivalent in terms of expressiveness and capabilities
19:47:42  <jfhbrook>es5 doesn't have classes, it doesn't have array find or array contains, unpacking properties is a horrible pain in the ass
19:47:56  <jfhbrook>these are all valid gripes
19:47:59  <mikolalysenko>that's all syntax though
19:48:18  <jfhbrook>and if you hung out with people that, say, were into python, they'd (rightly) say that we should be *embarrassed* of es5
19:48:34  <mikolalysenko>see, I don't get that
19:49:46  <mikolalysenko>it is a value judgement to say es5 is embarrassing or not pretty
19:49:51  <mikolalysenko>but es6 is objectively more complicated
19:49:54  <mikolalysenko>it has more stuff
19:50:02  <mikolalysenko>and it is a purely syntactic abstraction over es5
19:50:02  <jfhbrook>promises, too---yes promise error handling is a footgun, but the fact that javascript's best answer to async is a fucking callback?
19:50:05  <jfhbrook>c'mon
19:50:22  <mikolalysenko>callbacks are fine
19:50:34  <mikolalysenko>better to at least have same async option, look at python
19:50:40  <mikolalysenko>it has nothing, all calls are sync
19:50:55  <mikolalysenko>and you can build promises if you want on top of callbacks
19:51:29  <jfhbrook>python has asyncio
19:51:36  <jfhbrook>which uses futures and coroutines
19:52:02  <mikolalysenko>which are also all way higher overhead than callbacks
19:52:05  <jfhbrook>which is in a lot of ways similar to what you did when python didn't have futures in its standard library and you used twisted
19:54:33  <mikolalysenko>also python kind of pushes you to use those sorts of abstractions because of the design of the language
19:54:44  <mikolalysenko>anonymous functions in python are extremely limited and awkward
19:55:07  <jfhbrook>I agree that python's lambdas should be able to be multi-line
19:55:09  <mikolalysenko>since `lambda` has a bunch of weird rules and restrictions (like no control flow for example)
19:56:58  <mikolalysenko>anyway, es6 is here in some way or another
19:57:47  <mikolalysenko>outside node 6 it mostly exists as a transpiler spec, since no one is actually shipping it on the web
19:58:27  <jfhbrook>something a little more lighthearted: Any suggestions for implementing http://dan-ball.jp/en/javagame/dust/ ?
19:58:49  <jfhbrook>I think making the drawing part of it is mostly obvious, but the physics simulation part sounds harder
19:58:57  <mikolalysenko>you could do it on the gpu
19:58:59  <jfhbrook>I was kinda hoping to hear that there was some kind of simplification I could make
19:59:07  <jfhbrook>that would allow me to only have to deal with the pixel data
19:59:14  <mikolalysenko>so, there is a crazy thing I am working on that might help
19:59:16  <jfhbrook>but I don't think that'll actually work out
19:59:21  <mikolalysenko>but it is pretty unfinished
19:59:23  <jfhbrook>keep in mind I don't wanna go apeshit on this
19:59:35  <jfhbrook>I don't want to, like, learn webgl shaders or anything ridiculous like that
19:59:43  <mikolalysenko>ah
19:59:48  <mikolalysenko>shaders aren't that hard to pick up
19:59:52  <jfhbrook>more interested in something obvious, a weekend project
19:59:58  <mikolalysenko>you can learn it in a weekend
20:00:11  <jfhbrook>no I want to implement the entire game in a weekend
20:00:19  <mikolalysenko>yeah, you can build a thing in a weekend I mean
20:00:34  <jfhbrook>a weekend where I spend half the time trolling twitter and getting high
20:00:46  <jfhbrook>so "4 hrs on a saturday" rather than 2 days straight
20:01:00  <jfhbrook>this means I should be dealing mostly with things I already know
20:01:30  * dguttmanjoined
20:05:07  <mikolalysenko>yeah, maybe just write something using canvas then
20:05:32  <jfhbrook>right, like I'm definitely using canvas, but do you know of a good physics library?
20:06:21  <mikolalysenko>probably not necessary for this
20:06:33  <mikolalysenko>sand pile games are not rigid body or particle sims
20:06:41  <mikolalysenko>they are more like cellular automata with probabilistic transitions
20:06:44  <jfhbrook>is there a trick where I don't have to store point coords for all the particles?
20:06:50  <mikolalysenko>no
20:06:55  <mikolalysenko>you store a state for each cell in the grid
20:07:13  <jfhbrook>is there somewhere I can go to read about what the cellular automata rules would look like?
20:07:21  <mikolalysenko>sure, one second
20:08:13  <mikolalysenko>here is one on water simulation http://w-shadow.com/blog/2009/09/01/simple-fluid-simulation/
20:08:25  <mikolalysenko>and another http://w-shadow.com/blog/2009/09/29/falling-sand-style-water-simulation/
20:08:37  <mikolalysenko>it is also pretty reasonable to do in webgl
20:08:57  <mikolalysenko>(again, if you are willing to go down the shader adventure route)
20:09:39  <mikolalysenko>the tricky part is doing the random numbers in a shader, but there are ways to do that
20:09:42  <mikolalysenko>glslify makes it a bit easier
20:09:48  <jfhbrook>oh this is perfect
20:49:19  * wjagodfreyjoined
20:58:03  * jjjohnnyquit (Ping timeout: 246 seconds)
21:22:50  * pfrazequit (Remote host closed the connection)
21:26:18  * phatedjoined
21:29:50  * jjjohnnyjoined
22:53:38  * contrahaxquit (Quit: Sleeping)
23:09:27  * stagasjoined
23:28:25  * djcoinquit (Quit: WeeChat 1.3)
23:31:41  * jjjohnnyquit (Ping timeout: 276 seconds)
23:35:31  * contrahaxjoined