00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:04:09  <CoverSlide>guybrush: your array needs to be a multiple of 2
00:04:40  <guybrush>oh :/
00:04:44  <CoverSlide>0,3 will break, 0,4 will work
00:05:17  * maksimlinjoined
00:05:30  <guybrush>that sucks i need to somehow turn everything arround to not waste the bits
00:06:01  <CoverSlide>you can do an Uint8Array
00:06:43  <guybrush>hm so i read the uint16 into uint8 and then back?
00:07:28  <CoverSlide>not sure what you're trying to do
00:07:50  <CoverSlide>you're trying to extract the first 3 bytes or the first 3 int16's?
00:07:51  <guybrush>i have 3 uint16 values and 3 uint32 values
00:08:05  <guybrush>i want to put everything into 1 uint8
00:08:07  <CoverSlide>ok, well the constructor is for byte offset values, not for the number of ints you want
00:08:23  <CoverSlide>er wait
00:08:29  <CoverSlide>...
00:08:49  <CoverSlide>hm that don't make no sense...
00:08:50  <guybrush>oh i thought i could just write 6 (for 3*2byte = 3*16bit)
00:08:57  <CoverSlide>at least i think it does
00:09:03  <CoverSlide>.......
00:09:23  <CoverSlide>hm maybe i'm wrong
00:09:32  <CoverSlide>ok something's screwy then
00:09:54  <guybrush>haha i just spent 10hours in writing code that now breaks because of that :D
00:10:46  * ednapiranhaquit (Quit: Leaving...)
00:10:57  <CoverSlide>oh here we go
00:11:04  <guybrush>have to read more about those typed arrays, DataView seems to offer a pretty api for such things i try to accomplish
00:11:08  <CoverSlide>you can't have an offset of 6 for an int32
00:11:18  <rowbit1>substack, pkrumins: A developer is waiting in the queue for explorer/9.0
00:11:24  <CoverSlide>it has to be aligned with the byte length
00:11:30  <CoverSlide>so a multiple of 4
00:11:35  <CoverSlide>4,8, but not 6
00:12:16  <guybrush>mhm well i will try to shuffle all the things arround so it aligns
00:12:58  <CoverSlide>but the length parameter is number of elements so that can be any integer
00:13:10  <CoverSlide>that's a shitty error message though
00:13:12  * freealljoined
00:13:34  <ogd>i <3 this thread hahahaha https://twitter.com/shellscape/status/420696629507653632
00:14:12  <ogd>i probably shouldnt show that guy https://github.com/substack/node-browserify#list-of-source-transforms
00:14:58  * tearmannjoined
00:15:55  <substack>brianloveswords: http://hackerspaces.org/wiki/OpenSet
00:16:08  <substack>also defunctzombie ^^^
00:16:12  <ogd>whoa o/
00:16:48  <defunctzombie>nice!
00:17:27  <defunctzombie>oh damn, just missed the last meeting
00:17:44  <brianloveswords>substack: !!!
00:18:26  <brianloveswords>Damn, wish I knew about this on Sunday so I could have made that meeting!
00:18:59  <CoverSlide>i should make a DIY butcher shop and call it a "hackerspace"
00:19:21  <brianloveswords>OH defunctzombie you should come talk at BrooklynJS sometime
00:20:52  <defunctzombie>brianloveswords: when is the next meetup?
00:21:05  <brianloveswords>Jan 22nd, but speaker lineup is already set for that one.
00:21:11  <defunctzombie>cool
00:21:16  <defunctzombie>I will be out of town for a while
00:21:25  <defunctzombie>but we should set something up later in spring or summer
00:21:36  <brianloveswords>For sure!
00:23:01  <grncdr>ogd: you very much should
00:23:10  <rowbit1>Hourly usage stats: [developer: 3, free: 30]
00:25:57  * AvianFlujoined
00:26:25  * AvianFluquit (Read error: Connection reset by peer)
00:26:57  * AvianFlujoined
00:29:42  <brianloveswords>ogd: haha oh geez that thread.
00:30:21  * soldairquit (Quit: Page closed)
00:30:55  <ogd>i think we should rewrite browserify so that instead of a .js file it just outputs an executable that packages chrome and runs your bundle inside chrome on launch
00:31:37  <brianloveswords>ogd: only if we call it `requireable`.
00:31:48  <ogd>hah
00:32:12  <ogd>yes browserify will now be known as requireable and a new project that turns your js code into a standalone web browser will assume the name browserify
00:32:25  <substack>why don't we just rename it require
00:32:35  <substack>since it is for require()ing your code
00:32:39  <ogd>muahaha
00:32:41  <substack>and to disambiguate, we'll call it requireJS
00:32:50  <substack>or require dot jay ess
00:32:55  <ogd>require point javascript
00:33:12  <brianloveswords>hahaha
00:33:22  * marcello3djoined
00:33:56  <substack>or I'll just rename it make-the-require-function-from-node-also-work-in-the-browser-with-a-compile-step
00:34:08  <brianloveswords>...dot js
00:34:24  <ogd>call it bundler
00:34:30  <substack>dot js
00:34:42  <grncdr>make-require-from-node-operate-right-dammit initializes to Mr. Fnord
00:34:44  <substack>js bundler dot js
00:35:39  <ogd>jquery is an awful name because it returns more than just j's when i do searches with it
00:35:43  <ogd>i get all sorts of letters
00:35:46  <ogd>it should be called letterquery
00:37:01  <grncdr>DOMNodeQueryAndSometimesModifyOhAndABunchOfOtherStuffToo.js
00:37:50  <defunctzombie>wut
00:38:24  * grncdris proposing a new name for jQuery
00:43:33  <jesusabdullah>hahaha
00:44:09  <brianloveswords>substack: do you know the {open}set people or did you just find that?
00:45:00  <jesusabdullah>pbbbbbb
00:45:03  <jesusabdullah>Long day
00:45:09  <jesusabdullah>Gonna be a long WEEK
00:45:45  <jesusabdullah>crap the goog wants to do an interview Thursday at 6:00
00:45:54  <jesusabdullah>I might still be chillin' with Conde Nast
00:45:58  <jesusabdullah>seems like a bit of a faux pas
00:46:19  <grncdr>6 is a weird time for an interview...
00:46:35  * feross_quit (Quit: feross_)
00:47:40  <substack>brianloveswords: mk30 knows them
00:47:47  <substack>and other sudoers
00:48:26  <jcrugzz>jesusabdullah: the goog is overrated
00:48:32  <substack>jesusabdullah: CN sounds better than the goog
00:48:59  <substack>and you and thlorenz can hang and be best buds etc
00:51:46  <mk30>brianloveswords myself and a few other sudoers met some folks from nyc at a conference and took them to sudo..i guess they liked us cuz now they're starting their own hackerspace :)
00:52:00  <mk30>which is called {open}set.
00:54:26  <marcello3d>sup
00:55:15  <marcello3d>long time no irc
00:58:41  * coderzachquit (Remote host closed the connection)
01:03:56  * coderzachjoined
01:11:24  * contrahaxquit (Quit: Sleeping)
01:11:46  * contrahaxjoined
01:11:46  <jesusabdullah>grncdr: it's 3:00 their time, 6:00 EST
01:11:55  <jesusabdullah>er, jcrugzz ^^
01:11:59  <jesusabdullah>er
01:12:02  <jesusabdullah>fuck me right?
01:12:08  <jesusabdullah>jcrugzz: yeah I think you're right
01:12:15  <jesusabdullah>substack: yeah I think you're right
01:12:37  <grncdr>jesusabdullah: ah that makes more sense
01:12:41  <jesusabdullah>yeah
01:14:05  * contrahaxquit (Client Quit)
01:15:02  * enjaworkquit (Ping timeout: 252 seconds)
01:16:28  * contrahaxjoined
01:16:49  * enjaworkjoined
01:17:43  <jesusabdullah>jcrugzz: substack: Mostly I just like keeping as many doors open as possible, which so far has been the right thing to do given the length of my job search
01:17:50  * cpupquit (Remote host closed the connection)
01:19:19  * isaacs_mobilejoined
01:19:51  * yorickquit (Remote host closed the connection)
01:23:10  <rowbit1>Hourly usage stats: [developer: 0, free: 17]
01:23:26  <chapel>jesusabdullah: how long has it been now?
01:23:57  <Raynos>there was a thing that renders markdown in the terminal
01:24:00  <Raynos>what was it called?
01:24:55  * isaacs_mobilequit (Remote host closed the connection)
01:27:54  <grncdr>I dunno but I would guess readme depends on it...
01:28:11  * marcello3dquit (Remote host closed the connection)
01:28:14  <grncdr>hm, maybe not
01:28:50  * marcello3djoined
01:31:37  <jcrugzz>jesusabdullah: makes sense
01:31:40  <jcrugzz>i just say fuck google
01:32:06  * contrahaxquit (Quit: Sleeping)
01:33:19  * marcello3dquit (Ping timeout: 260 seconds)
01:34:18  <guybrush>Raynos: https://github.com/visionmedia/mad but there are others (betters) too, cant remember the names though
01:35:52  <Raynos>im using msee
01:40:10  * brianloveswordsquit (Excess Flood)
01:40:27  * brianloveswordsjoined
01:41:46  <jesusabdullah>dominictarr: Can we make `readme` use that? ^^
01:44:56  * marcello3djoined
01:45:18  <rowbit1>substack, pkrumins: These encoders are STILL down:,,,
01:46:16  * thlorenzjoined
01:46:58  <jesusabdullah>chapel: since I've had a job? Geez, like 6 weeks?
01:47:34  <chapel>thats not too bad, but still sucks considering the initial interest then fall off
01:47:49  <jesusabdullah>Yeah, well
01:47:51  <jesusabdullah>it is what it is
01:48:08  <jesusabdullah>and hey, CN sounds awesome, if PP had hired me I wouldn't have been able to even consider them
01:48:24  <chapel>I'm rooting for ya
01:48:32  <chapel>and thats pretty cool, what would you be doing at CN?
01:49:36  <marcello3d>Raynos: not sure if someone answered while I was offline, but did you try `grip`?
01:50:29  <brianloveswords>mk30: awesome! I'd love to meet them. Know any of their twitter handles?
01:50:37  <Raynos>marcello3d: `npm docs grip` is nothing to do with md
01:50:41  <marcello3d>nm, that runs a browser it looks like
01:51:58  <marcello3d>yea, it's not node...
01:53:48  <marcello3d>ansidown?
01:54:51  <Raynos>I'm using ghub.io/msee atm
01:54:56  <Raynos>seems pretty good to me
01:55:55  <marcello3d>that looks nice
02:07:08  <jesusabdullah>chapel: Backend systems which can be used by most/all of CN's properties
02:07:15  <chapel>coolio
02:07:28  <jesusabdullah>chapel: abstracting them is somewhat difficult because each publication has its own needs
02:07:42  <jesusabdullah>chapel: it enables some really cool stuff though, like interactive things a la NYT
02:11:59  <chapel>yeah, have to evolve
02:12:15  * marcello3dquit (Ping timeout: 240 seconds)
02:13:57  * tearmannquit (Quit: Leaving)
02:23:08  * Maciek416joined
02:23:10  <rowbit1>Hourly usage stats: [developer: 0, free: 14]
02:28:45  * coderzachquit (Remote host closed the connection)
02:34:12  * fronxquit (Remote host closed the connection)
02:35:25  * fronxjoined
02:37:01  * contrahaxjoined
02:39:05  * DTrejojoined
02:39:50  * fronxquit (Ping timeout: 240 seconds)
02:46:59  <mk30>brianloveswords @austingst
02:51:03  * shamaquit
02:51:38  * contrahaxquit (Quit: Sleeping)
02:52:56  * contrahaxjoined
02:53:17  * Maciek416quit (Remote host closed the connection)
02:54:49  <dominictarr>jesusabdullah, sure! WILL MERGE
02:58:10  <dominictarr>guybrush, CoverSlide yeah, use DataView, you can read/write any size number, in any byte order and it's byte indexed.
02:59:46  <guybrush>dominictarr: right, after lots of hours playing arround with my layout doing it with DataView was a real pleasure
02:59:49  * coderzachjoined
03:00:57  <guybrush>its kinda like nodes Buffer
03:01:11  <dominictarr>ogd, haha. substack has successfuly changed the meaning of the -ify suffix, and it's gonna be added to the dictionary any day now.
03:01:12  * coderzachquit (Read error: Connection reset by peer)
03:01:25  * coderzachjoined
03:02:57  <dominictarr>guybrush, see also: https://github.com/feross/native-buffer-browserify
03:03:14  <guybrush>woah lots of red flags
03:03:33  <feross>dominictarr guybrush: it works in all the browsers
03:03:37  <feross>it's just a temporary thing
03:03:51  <guybrush>sweet thx for the hint
03:04:07  <feross>i merged a commit that broke everything but it hasn't been published to npm yet (obviously)
03:04:46  <guybrush>woah i did even start this repo, there are just so much cool stuff - having a hard time to keep track
03:04:53  <guybrush>TOO MUCH IS TOO MUCH
03:05:02  * fronxjoined
03:05:11  <guybrush>*star
03:06:15  * coderzachquit (Ping timeout: 265 seconds)
03:06:25  * tilgoviquit (Remote host closed the connection)
03:08:39  * dguttmanquit (Quit: dguttman)
03:08:49  <guybrush>feross: the lib looks really cool! making code reuseable node/browser is usefull
03:11:27  * fronxquit (Ping timeout: 252 seconds)
03:11:32  * asdf1234_joined
03:13:18  <guybrush>there is even a module for the other way arround https://github.com/TooTallNate/node-buffer-dataview
03:13:56  <dominictarr>heh
03:14:45  <dominictarr>feross, would native-buffer-browserify be faster if it was based on data view? If you keep a persistent data view it's fast, I've found.
03:14:50  <dominictarr>(testing sha.js)
03:14:57  * pfrazequit (Ping timeout: 265 seconds)
03:15:02  * DTrejoquit
03:19:21  <feross>dominictarr: i saw your note about that earlier. i need to test it more because that didn't match my testing
03:20:13  <feross>dominictarr: i think you mentioned that I was creating a dataview on every function invocation
03:20:32  <feross>dominictarr: but the extra dataview was only supposed to get created on certain edge cases. most times i use a persistent dataview
03:20:44  <feross>dominictarr: i will do more testing
03:21:23  <feross>dominictarr: the other thing is that i need to do manual bit-twidling for the older browsers anyway since they don't have dataview
03:22:02  <feross>dominictarr: and having two ways of doing everything (Dataview and manual) added quite a bit to the bundle size which matters a lot for browserify.
03:23:10  <rowbit1>Hourly usage stats: [developer: 0, free: 28]
03:35:22  * contrahaxquit (Quit: Sleeping)
03:43:14  * asdf1234_quit (Remote host closed the connection)
03:43:49  * asdf1234_joined
03:44:55  <dominictarr>feros hmm, ah right - because DataView access must be aligned. Hmm, I will test native-buffer-browserify with sha.js, since that is a real thing not a micro benchmark
03:45:30  <feross>dominictarr: oh, that would explain it
03:45:35  * asdf1234_quit (Client Quit)
03:45:49  <dominictarr>working on that, ive found js perf to be very mysterious. Not necessarily matching intuitions at all.
03:46:27  <dominictarr>I didn't realize dataview had to be aligned, but CoverSlide and guybrush where talking about it if you scroll up
03:46:56  <feross>dominictarr: if you test out native-buffer-browserify, let me know how it performs! the goal was to get bops / native perf for most things, like square-bracket indexing
03:47:01  <feross>but with the full node api, obviously
03:47:06  <feross>ah, will read
03:47:51  * calvinfoquit (Quit: Leaving.)
03:47:59  <dominictarr>will do
03:49:42  <pkrumins>sha.js is killing all browsers
03:50:02  <ogd>lol
03:50:16  <feross>has anyone noticed `npm publish` failing?
03:50:44  <jesusabdullah>dominictarr: most excellent.
03:53:05  * contrahaxjoined
03:53:30  <feross>ugh, just published new versions of base64-js and native-buffer-browserify and now i see intermittent failures on install
03:53:59  <feross>`npm show base64-js version` shows the latest version
03:54:19  <feross>cleared cache and everything
03:54:39  <feross>npm http 404 https://registry.npmjs.org/base64-js/-/base64-js-0.0.5.tgz
03:54:40  <feross>npm ERR! fetch failed https://registry.npmjs.org/base64-js/-/base64-js-0.0.5.tgz
03:54:51  <feross>direct link works in my browser
03:55:46  <ogd>substack: http://substack.net/images only loads <html><head><title> for me
03:56:09  <pkrumins>feross: wow amazing badge https://ci.testling.com/beatgammit/base64-js
03:56:13  <pkrumins>all green
03:56:31  <feross>pkrumins: yep :)
03:57:09  <feross>also see: https://ci.testling.com/feross/native-buffer-browserify :)
03:57:26  * contrahaxquit (Ping timeout: 240 seconds)
03:57:48  <feross>the cool thing about native-buffer-browserify is that it uses Uint8Array and ArrayBuffer in modern browsers, so it's really fast
03:57:53  <feross>but it still works in IE6
03:58:14  <pkrumins>amazing!
03:58:22  <feross>it has two implementations in one! and i got the bundle size to half what it was in buffer-browserify (the project i forked it from)
03:58:42  * thlorenzquit (Remote host closed the connection)
03:58:56  <pkrumins>nice job!
03:59:02  <feross>so, now ie6 users can see all your crazy streams / buffer mad science!
03:59:16  * thlorenzjoined
03:59:39  * contrahaxjoined
03:59:49  <feross>thanks
04:00:20  <feross>for a while, bops was the recommended way to do binary in the browser
04:00:35  <feross>but it has it's own api (different from node's, different from the browser's)
04:01:20  <feross>and it doesn't work with streams2 which checks `Buffer.isBuffer` on the buffers you give it, which will fail on Uint8Arrays
04:01:33  <feross>(bops returns Uint8Arrays in the browser)
04:02:04  <feross>it's definitely preferable to just use the node buffer as-is and get native uint8array performance
04:02:04  * coderzachjoined
04:02:11  <feross>which is what native-buffer-browserify does
04:02:39  <feross>so you can use any module already published on npm without sending a PR to get them to use bops
04:02:56  <feross>i did that for a bunch of modules and it got annoying ;)
04:03:27  <feross>i think ogd sent a bunch too
04:03:43  <feross>i even coined a term for it: "bopsifying"
04:03:43  <ogd>yea
04:03:46  <ogd>haha
04:03:46  * thlorenzquit (Ping timeout: 265 seconds)
04:03:52  <ogd>native-buffer-browserify++
04:05:36  * Maciek416joined
04:05:36  <pkrumins>i wonder what's up with https://ci.testling.com/maxogden/concat-stream
04:05:45  <ogd>yea me too
04:05:45  <pkrumins>why isn't it all green hmm
04:05:49  <pkrumins>ogd, can you hit test hook?
04:05:54  <pkrumins>i can observe tests run then
04:05:57  <pkrumins>see what's going on
04:06:09  <ogd>pkrumins: is there an easy way to do what withotu making a new commit?
04:06:36  <pkrumins>ogd: somewhat easy way - goto repo settings, then hooks, then just hit 'test hook' button near where you put in git.testling.com
04:06:40  <ogd>oh gotcha
04:06:51  * coderzachquit (Ping timeout: 260 seconds)
04:06:58  <pkrumins>we'll have a command line tool to rerun tests, but don't have that yet
04:06:59  <ogd>k sent
04:07:04  <pkrumins>ok observing
04:07:47  * fronxjoined
04:08:41  <pkrumins>wow what just happened timeout: failed to run command 'browserify': No such file or directory
04:08:48  <pkrumins>totally unexpected
04:08:55  <pkrumins>mean `npm install browserify` failed
04:09:06  <feross>pkrumins: i hope that's not related to what i was complaining about earlier
04:09:13  <pkrumins>it could be npm issues
04:09:24  <feross>i did `npm publish` on base64-js to publish 0.0.5
04:09:33  <feross>and it seems like it worked
04:09:43  <pkrumins>yes, npm issues
04:09:46  <feross>$ npm show base64-js version
04:09:47  <feross>npm http GET https://registry.npmjs.org/base64-js
04:09:48  <feross>npm http 200 https://registry.npmjs.org/base64-js
04:09:49  <feross>0.0.5
04:09:59  <feross>except when you go to install, you get:
04:09:59  <feross>npm http GET https://registry.npmjs.org/base64-js/-/base64-js-0.0.5.tgz
04:10:00  <feross>npm http 404 https://registry.npmjs.org/base64-js/-/base64-js-0.0.5.tgz
04:10:01  <feross>npm ERR! fetch failed https://registry.npmjs.org/base64-js/-/base64-js-0.0.5.tgz
04:10:02  <feross>npm ERR! Error: 404 Not Found
04:10:10  <pkrumins>yes something isn't right
04:10:27  <feross>i already tried unpublish and republish and it didn't work
04:10:42  * contrahaxquit (Quit: Sleeping)
04:11:12  <feross>isaacs, any idea what is going on with npm?
04:11:16  <pkrumins>npm ERR! fetch failed https://registry.npmjs.org/native-buffer-browserify/-/native-buffer-browserify-2.0.7.tgz
04:11:27  <feross>yeah, that's the other one that i publshed
04:11:35  <pkrumins>this is why testling now is failing
04:11:46  <feross>it's intermittent, sometimes it works for me
04:11:55  <feross>isaacs, any idea what is going on with npm?
04:12:08  * fronxquit (Ping timeout: 252 seconds)
04:12:10  <ogd>dang npm
04:12:39  * contrahaxjoined
04:12:50  * Maciek416quit (Remote host closed the connection)
04:13:24  * Maciek416joined
04:13:48  <feross>pkrumins: i just did `npm install browserify` and it worked
04:14:23  <pkrumins>doesn't work from testling's computer
04:14:30  <feross>:(
04:15:52  <isaacs>feross, pkrumins: hmmm...
04:16:05  <isaacs>it looks like Manta had some sporadic downtime a few hours ago
04:16:25  <isaacs>maybe Fastly is timing out getting to the tarballs sometimes or something?
04:16:42  <feross>maybe...
04:17:23  <feross>any idea what would cause a sporadic failure like that? could the tarball have made it to some machines but not others?
04:17:57  <isaacs>well, getting a 404 is weird
04:18:03  <isaacs>a 503 would make more sense
04:18:15  <isaacs>but a 404 should make Fastly check the couchdb, and it's definitely in the couchdb
04:19:22  <pkrumins>started working now btw
04:20:17  <pkrumins>seeing someone's test running
04:20:38  <feross>whoa, now i see:
04:20:39  <feross>npm http 500 https://github.com/substack/querystring/archive/0.2.0-ie8.tar.gz
04:20:40  <feross>npm ERR! fetch failed https://github.com/substack/querystring/archive/0.2.0-ie8.tar.gz
04:20:54  <feross>for `npm install browserify`
04:21:23  <feross>nvm, it retried and got it later
04:21:24  <feross>npm http GET https://github.com/substack/querystring/archive/0.2.0-ie8.tar.gz
04:21:24  <feross>npm http 200 https://github.com/substack/querystring/archive/0.2.0-ie8.tar.gz
04:22:23  <isaacs>feross: well, i can't speak to github's 500 error
04:22:29  <isaacs>feross: not my circus
04:22:47  <feross>whoa, missed that it was github.com
04:23:00  <feross>i think my eyes just filter that text out because i see it so much
04:23:05  <feross>my bad ;)
04:23:10  <rowbit1>Hourly usage stats: [developer: 0, free: 36]
04:23:55  <feross>btw isaacs, while you're here: can you look at https://github.com/isaacs/core-util-is/pull/2 and say yes/no
04:28:18  <isaacs>feross: if you make that a node core pull req and land it there, then fine
04:28:32  <feross>isaacs: ok, thanks!
04:28:38  <isaacs>feross: oh, er, actually, just put it in float.patch
04:28:46  <isaacs>feross: the js file is generated
04:28:54  <isaacs>https://github.com/isaacs/core-util-is/blob/master/float.patch
04:29:25  <feross>okay, cool.
04:29:30  <feross>will revise the PR
04:29:33  <isaacs>kk
04:29:41  <isaacs>if it's too much of a pita, i mean, whatever.
04:32:16  <isaacs>substack: If you want a really fast http proxy in node, you need to not be parsing http
04:32:25  <isaacs>substack: s/in node// actually
04:33:15  <isaacs>substack: just buffer up the first bit of the tcp stream, when you get the first \r\n, look for a host: header, and then connect upstream, and hook up the sockets and get out of the way
04:50:53  * cpupjoined
05:00:13  <feross>isaacs: okay, i updated the PR: https://github.com/isaacs/core-util-is/pull/2
05:00:24  <feross>float.patch is updated :)
05:02:49  * coderzachjoined
05:07:31  * coderzachquit (Ping timeout: 260 seconds)
05:08:08  <feross>it took forever to clone the node repo, i deleted it to save disk space earlier :)
05:08:27  * contrahaxquit (Quit: Sleeping)
05:09:15  <feross>isaacs: it wasn't that much of a pita
05:09:27  * fronxjoined
05:14:03  * fronxquit (Ping timeout: 260 seconds)
05:18:03  * phatedquit (Remote host closed the connection)
05:18:33  * indexzerojoined
05:19:09  <feross>isaacs: ping - can you merge that PR some time tonight?
05:23:10  <rowbit1>Hourly usage stats: [developer: 0, free: 19]
05:29:23  * dguttmanjoined
05:33:18  * dcodeIOjoined
05:34:54  * dcodeIO1quit (Ping timeout: 276 seconds)
05:43:44  <isaacs>feross: sure, one sec
05:43:59  <feross>thx
05:45:11  * anvakajoined
05:48:53  * ralphtheninjajoined
05:49:47  <isaacs>feross: it is SO weird reading the diff of a .patch file
05:50:01  <isaacs>i'm having some inception stuff going on here
05:50:46  <isaacs>feross: v1.0.2
05:50:48  <isaacs>*1.0.1
05:51:12  * hoobdeeblaquit
05:52:12  * cpupquit (Ping timeout: 252 seconds)
05:54:21  <feross>hahaha, yeah i had the same problem earlier :)
05:54:58  * Maciek416quit (Remote host closed the connection)
06:00:53  * dguttmanquit (Quit: dguttman)
06:03:36  * coderzachjoined
06:06:01  * cpupjoined
06:07:53  * anvakaquit (Ping timeout: 240 seconds)
06:07:54  * sorensenquit (Ping timeout: 240 seconds)
06:08:10  * coderzachquit (Ping timeout: 253 seconds)
06:09:55  * jcrugzzquit (Ping timeout: 265 seconds)
06:10:06  * phatedjoined
06:14:45  * cpupquit (Ping timeout: 265 seconds)
06:18:10  * cpupjoined
06:20:16  * dominictarrquit (Ping timeout: 261 seconds)
06:21:31  * jxsonjoined
06:23:10  <rowbit1>Hourly usage stats: [developer: 0, free: 36]
06:24:41  <ogd>some crappy proxy benchmarks! https://gist.github.com/maxogden/8312464b
06:27:59  <guybrush>ogd: oh noes, 404
06:28:14  <guybrush>is it your new nginx-thing?
06:28:22  <ogd>accidentally put a b after the url https://gist.github.com/maxogden/8312464
06:29:44  <guybrush>woah looks great
06:31:25  <guybrush>is this with https?
06:31:36  <ogd>nope
06:31:54  <guybrush>i think with https nginx will shine even more
06:32:19  <guybrush>like here https://github.com/observing/balancerbattle
06:47:37  * coderzachjoined
06:52:03  * coderzachquit (Ping timeout: 260 seconds)
06:55:09  <isaacs>ogd: so, what should this be benchmarking?
06:55:13  <isaacs>ogd: http parsing performance?
06:55:19  <isaacs>(strictly)
06:55:26  <isaacs>or overall proxying performance?
06:56:06  <isaacs>if you're planning on testing overall proxying performance, and irl your hosts won't be on localhost, then you really need to test on not-localhost to even get representative results.
06:56:25  <isaacs>if it's strictly a parsing benchmark, then this is fine
06:57:27  <isaacs>ogd: i only bring this up because i've gone down some rabbit holes in the past making optimizations that ended up making things *worse* in real-world use cases, because they were not optimizations on not-localhost, because they saved some memory operations at the cost of an extra TCP roundtrip or something
06:57:37  * cpupquit (Read error: Operation timed out)
06:57:49  <isaacs>which, on localhost, most operating systems will just factor out
07:02:17  * sorensenjoined
07:06:45  * Guest83970changed nick to Birdbones
07:08:41  * cpupjoined
07:18:22  * AvianFluquit (Remote host closed the connection)
07:20:01  <robertkowalski>isaacs: the npm publish flow is currently following, isn't it: npm-client publishes to couch(master/master) then the attachments get into manta. manta is the origin for the cdn by fastly.
07:20:53  <robertkowalski>isaacs: when i make npm install, the request gets to the couch instances, after the balancer, and fastly will reply with the tarball. the couch just sends the json metadata.
07:22:54  <isaacs>robertkowalski: npm publish puts everything into the couchdb
07:23:09  <isaacs>robertkowalski: a follower job then copies the tarballs into manta, leaving them in couchdb as well.
07:23:10  <rowbit1>Hourly usage stats: [developer: 0, free: 38]
07:23:25  <isaacs>robertkowalski: fastly first checks Manta for tgz files, and if it gets a 404, sends the request to couch
07:23:39  <isaacs>robertkowalski: if Manta is *down*, then it'll just fail, which is a bug we found today
07:23:53  <isaacs>robertkowalski: what it should do is try couch on *any* failure, not just a 404
07:24:27  <isaacs>robertkowalski: fastly sends GET requests for json metadata straight to couchdb
07:24:37  * ralphtheninjaquit (Ping timeout: 246 seconds)
07:27:11  * cpupquit (Ping timeout: 272 seconds)
07:34:20  <robertkowalski>isaacs: thanks!
07:37:57  * cpupjoined
07:42:05  <timoxley>robertkowalski: thanks for closing some of those issues
07:42:42  * xyxnechanged nick to nexxy
07:45:19  <rowbit1>substack, pkrumins: These encoders are STILL down:,,
07:48:08  * coderzachjoined
07:52:41  * cpupquit (Ping timeout: 252 seconds)
07:52:41  * coderzachquit (Ping timeout: 252 seconds)
07:52:45  * peutetrejoined
08:04:01  <substack>https://gist.github.com/substack/8313379
08:06:00  * cpupjoined
08:06:33  <substack>Raynos: ^^^
08:06:48  <substack>a task automation framework to go along with your http framework
08:07:27  <guybrush>i knew you are into build-systems now there is the proof
08:10:02  * dubroy__joined
08:10:17  * cpupquit (Ping timeout: 252 seconds)
08:16:08  <phated>substack: are you an idiot by choice or do you just ignore everything that doesn't come from your own head?
08:16:51  <Raynos>substack: :D
08:16:57  <Raynos>substack: nice!
08:18:32  <substack>phated: I can't understand why people don't just use bash or makefiles or write little scripts
08:18:40  <Raynos>That is really good
08:18:47  <Raynos>It's actually really good
08:18:48  <phated>i am assuming you are trashing on gulp now
08:19:09  <phated>which is made to do just what you are saying with a little sugar on the CLI part
08:19:20  <substack>gulp isn't so bad, I just don't see the point of it
08:19:35  <phated>it's a minimal amount of sugar
08:19:38  <Raynos>substack: you should create a module called `dotslashtaskdotjs` on npm
08:19:40  <phated>what isn't the point
08:19:44  <substack>the minimal amount of sugar is 0 sugar
08:19:46  <phated>it is trying to be idiomatic
08:19:58  <phated>you wrote sugar on process.env parsing
08:20:04  <phated>optimist is sugar
08:20:07  <phated>what are you even talk about
08:20:23  <substack>I don't use optimist anymore.
08:20:24  <Raynos>and substack then stopped using optimist and wrote minimist :D
08:20:28  <substack>yep
08:20:32  <phated>minimist is still sugar
08:20:43  <Raynos>gulp is ok if your doing non trivial stuff
08:20:47  <phated>you are abstracting an API that isn't great
08:20:51  <phated>(process.env)
08:21:00  <phated>that is sugar
08:21:05  <Raynos>bluebird & lodash
08:21:08  <Raynos>have non trivial shit
08:21:10  <substack>minimist is a function that takes an array and returns an object
08:21:16  <substack>I don't see how that is "sugar"
08:21:16  <Raynos>now whether they should or not is a seperate argument
08:21:22  <Raynos>but for those cases gulp is worthwhile
08:21:23  <phated>substack: that is sugar
08:21:27  <phated>sugar being abstraction
08:21:35  <phated>you abstracted something
08:21:40  <phated>software is abstraction
08:21:42  <substack>what's wrong with abstraction?
08:21:43  <phated>all software
08:21:45  <phated>nothing
08:21:50  <substack>phated: I don't understand.
08:21:51  <phated>you shit on it constantly
08:22:05  <phated>everything you gist or tweet or reddit is shitting on abstraction
08:22:07  <Raynos>we make fun of gulp
08:22:08  <substack>applying abstraction in the wrong places can be harmful
08:22:10  <Raynos>because its not needed
08:22:19  <substack>what Raynos says
08:22:29  <Raynos>its not that its not needed
08:22:33  <Raynos>its that the complexity it brings
08:22:35  <Raynos>in most situations
08:22:37  <Raynos>is overkill
08:22:40  <substack>it's useful as a hand-holdy kind of thing
08:22:41  <Raynos>in some situations gulp is fine
08:22:52  <Raynos>just like in some situations express is fine
08:22:56  <substack>for people who have a grunt-shaped box in their head and want to stuff something into that hole
08:23:04  <phated>gulp is nothing like grunt
08:23:10  <rowbit1>Hourly usage stats: [developer: 0, free: 26]
08:23:20  * clone1018quit (Ping timeout: 245 seconds)
08:23:22  <timoxley>one neat thing about gulp is that it's encouraging people to use streams
08:23:24  <phated>the current problem is that people are trying to apply grunt paradigms to it
08:23:49  <phated>gulp is just JS
08:23:50  <Raynos>so grunt is terrible and we all agree.
08:23:54  <Raynos>secondly gulp is still bad
08:23:57  <phated>with an abstraction API for CLI
08:24:03  <timoxley>so perhaps they'll make some gulp streams and realise, why do I need gulp?
08:24:21  <phated>there is no such thing as a gulp stream
08:24:32  <Raynos>yes there is
08:24:32  <phated>this is the problem, you guys don't actually read shit before trashing it
08:24:35  <Raynos>its a special stream
08:24:39  <Raynos>where each value is a gulp file
08:24:41  <phated>no, vinyl is a stream
08:24:47  <phated>based on a glob stream
08:24:58  <Raynos>each chunk in a gulp stream has an interface
08:25:01  <phated>it has nothing to do with gulp except gulp passes them around
08:25:02  <Raynos>maybe its not gulp stream
08:25:05  <Raynos>maybe its vinyl stream
08:25:18  <phated>the distinction matters
08:25:22  <Raynos>phated: are you the author of gulp ?
08:25:36  <phated>why would that matter?
08:25:48  <Raynos>because i tend to only say bad things
08:26:22  <Raynos>I wouldnt say things like "gulp is cool. I want our company to get off grunt and im happy to move to gulp because its really not that bad. im just being an opinionated dick"
08:26:46  <Raynos>basically if your the author of gulp, it reminds me not to be a dick on the internet.
08:26:56  <timoxley>phated: sure, no gulp streams but there's stuff like this
08:26:57  <timoxley>https://github.com/terinjokes/gulp-uglify/blob/master/index.js
08:27:00  <guybrush>hey substack did you see the sourcemap-PR in browserify?
08:27:05  <timoxley>'gulp-uglify'
08:27:13  <substack>guybrush: yep, still mulling over whether to roll it out or wait a bit
08:27:19  <substack>guybrush: I'll probably roll it out soon
08:27:25  <guybrush>kk just wanted to make sure :D
08:27:29  <timoxley>nothing to do with gulp really, it's just making it into streamy interface
08:27:57  <guybrush>is it because not all browsers switched to the new //# ?
08:28:02  <timoxley>i.e why isn't it just 'uglify-stream'
08:28:03  <substack>one thing I don't like about gulp is how people are writing plugins for it instead of writing generic streaming module interfaces
08:28:10  <timoxley>^ that
08:28:11  <phated>timoxley: the idea is to get it to move upstream
08:28:33  <phated>but most upstream authors ignore it
08:28:35  <Raynos>substack: that is the main problem
08:28:44  <Raynos>anything with a plugin eco system when its not needed is weird
08:29:02  <timoxley>people like plugin eco systems though because they make you feel safe
08:29:03  <Raynos>thats what is cool about hapi
08:29:09  <phated>substack: Raynos: I agree, but when you start dealing with globs, things get messy
08:29:12  <substack>like why is there a gulp-browserify plugin at all? You can just browserify().bundle() and you get a stream
08:29:19  <Raynos>the hapi people say "dont author hapi plugins. author modules, only create hapi plugins when needed"
08:29:34  <phated>hold up substack
08:29:38  <guybrush>hughsk made a gulp-browserify-thing i think :p
08:29:39  <substack>phated: my example has globs in it
08:29:44  <phated>hold up
08:29:46  <substack>catw works with globs without any weirdness
08:29:51  <phated>again
08:29:52  <phated>hold up
08:30:08  <phated>substack: don't blame a system because some people do stupid shit
08:30:18  <guybrush>i love it when people discuss things that are purely a matter of taste and preferences
08:30:25  <phated>gulp would work completely perfectly and amazing with the browserify stream
08:30:46  <phated>you can return a stream from a task, and orchestrator manages the order of tasks
08:30:58  <phated>it would wait for browserify stream to fire the end event
08:31:00  <guybrush>its like watching a good film with good conversations in it
08:31:04  <timoxley>phated: but now effort, person hours, is going into gulp-browserify instead of just browserify itself
08:31:29  <phated>timoxley: that was that person's time, not yours or substacks or Raynos'
08:32:14  <Raynos>true
08:32:14  <phated>a gulp task can consist of anything
08:32:22  <Raynos>but i blame gulp
08:32:31  <Raynos>for making anti patterns too easy
08:32:31  <Raynos>:D
08:32:41  <phated>that's a sad approach to take
08:32:47  <phated>and horrible for the community
08:32:53  <phated>I know you are smart people
08:32:56  <substack>guybrush: haha yeah that's why I wasn't taking that post seriously at all and why it's a gist instead of a full blog post :p
08:32:57  <timoxley>phated: horrible for the community is the problem
08:32:58  <guybrush>just say what you all fear, once everyone makes stuff with gulp you HAVE to use it
08:33:12  <guybrush>and thats where things go wrong :p
08:33:15  <timoxley>phated: gulp creating yet another unnecessary silo
08:33:20  <guybrush>like connect-middleware
08:33:22  <phated>it's not a silo
08:33:30  <phated>it is getting people away from the silo of grunt
08:33:33  <phated>it is just JS
08:33:40  <phated>you can use any node module
08:33:51  <phated>most of my shit doesn't even use vinyl streams
08:34:05  <timoxley>phated: you've very passionate about this
08:34:19  <phated>if i want to use know to push stuff to s3, that is totally fine because it returns a stream
08:34:21  <guybrush>my favorite silo is component.io :p
08:34:55  <phated>i return that from my gulp task, and orchestrator handles any tasks that depend on that
08:35:03  * jxsonquit (Remote host closed the connection)
08:35:11  * maksimlinquit (Quit: ChatZilla [Firefox 26.0/20131206152142])
08:35:31  <guybrush>phated: why is grunt bad?
08:35:31  <substack>phated: why not just push people onto "plugins" that aren't instead? By having non-standard interfaces for plugins gulp is encouraging people to write more silo code ala connect middleware etc
08:35:34  <Raynos>phated: sec, i'll make a counter example for gulp
08:36:15  <Raynos>gulp suffers from connect middleware problem
08:36:26  <phated>huh
08:36:35  <Raynos>really gulp is unnecessary abstraction on top of vinyl streams
08:36:47  <phated>so vinyl streams are a fine abstraction?
08:36:56  <guybrush>is vinyl actually a js thing? i need to google that
08:37:47  * funkytekjoined
08:38:10  <phated>Raynos: are vinyl streams a fine abstraction? your previous statement implies that
08:38:22  <Raynos>i dont know what a vinyl stream is
08:38:24  <Raynos>maybe, maybe not
08:38:30  <Raynos>but i think having some kind of globish stream
08:38:37  <Raynos>being some kind of abstraction is fine
08:38:43  <Raynos>sec, still working on a counter example for gulp
08:38:53  <phated>it's really hard to have an actual debate with you guys when you don't research stuff before trolling
08:39:20  <phated>which is where my original (admittedly asshole-ish) comment came from
08:39:24  <Raynos>i dont need to.
08:39:34  <phated>because you are god Raynos the almighty?
08:39:34  <Raynos>i've seen enough
08:39:39  <phated>creator of heaven and earth
08:39:42  <phated>and all that is JS
08:39:45  <Raynos>no, thats bullshit.
08:39:49  <phated>exactly
08:40:19  <phated>you don't have all ideas, or all thoughts, or even begun to consider the amount of programming knowledge in the world before you
08:40:33  <phated>there are other ways to look at things
08:41:12  <phated>don't point to one tiny piece of something, give it as the reason that entire thing is wrong
08:41:13  <substack>phated: it's more that a bunch of us have seen the problems that some of these ideas can create for code reuse and interoperability
08:41:59  <phated>yes, the original discussions that lead to gulp were to just use plain everything
08:42:13  <phated>in practice, it doesn't work
08:42:15  <Raynos>phated: https://gist.github.com/Raynos/8313682
08:42:33  <phated>because huge swathes of things don't interoperate
08:42:41  <Raynos>so the problem is not the ideas of gulp
08:42:44  <Raynos>its the packaging
08:42:47  <substack>phated: gulp doesn't seem to be encouraging people to use vanilla abstractions
08:42:50  <Raynos>the fundamental problem is how gulp packages up
08:42:58  <Raynos>as "gulp automation framework" and "gulp plugins"
08:43:07  <Raynos>instead of "glob streams" and "npm modules"
08:43:28  <phated>that is definitely valid
08:43:31  <Raynos>my example doesn't work at all, but you can imagine it would work easily
08:43:41  <Raynos>but also notice how the code is basically the same
08:43:43  <funkytek>gulp is encouraging vanilla abstractions, much more so than grunt at least
08:43:50  <Raynos>so gulp isnt doing anything wrong at the abstraction level
08:43:57  <Raynos>its doing something wrong at the delivery & execution
08:44:06  <phated>Raynos: where is the CLI abstraction?
08:44:14  <Raynos>phated: it just works
08:44:20  <phated>wat
08:44:20  <Raynos>node javascript.js build
08:44:25  <funkytek>it's just a little sugar, very light convention so you can have plugins that work ootb
08:44:34  <funkytek>instead of writing your own wrapper code
08:44:34  <Raynos>https://gist.github.com/Raynos/8313682#file-javascript-js-L60
08:44:41  <Raynos>https://gist.github.com/Raynos/8313682#file-javascript-js-L11
08:44:49  <substack>phated: why doesn't gulp just encourage people to use a copy module to copy files? I don't understand why that needs to happen through the globbing plumbing
08:44:50  <phated>ok
08:44:55  <Raynos>parse command as argument, run task.
08:45:05  <Raynos>its a bit hard to see in how i organized the code, sec
08:45:08  <phated>substack: i believe that was a marketing ploy
08:45:19  <phated>substack: because grunt requires a COPY plugin
08:45:36  <phated>substack: so gulp was showing that you can just pipe src and dest vinyl streams together
08:45:40  <Raynos>https://gist.github.com/Raynos/8313682#file-javascript-js-L54
08:45:42  <Raynos>far better ^^
08:46:19  <phated>Raynos: yeah, that's better
08:46:22  <Raynos>also notice how I wrote a 7 line function thats basically gulp.dest
08:46:41  <substack>phated: that's so weird. gulp should encourage use of a copy module instead that is completely separate from gulp
08:47:02  <funkytek>but you guys are harping on small bits of sugar
08:47:09  <Raynos>another thing i dislike about gulp
08:47:14  <funkytek>7 line function, ok, but its just sugar in the lib
08:47:16  <Raynos>is it couples task automation with glob processing
08:47:36  * floatdropjoined
08:47:43  <Raynos>like i dont need the idea of `gulp.task` and `gulp.run` in the same module as `gulp.dest` and `gulp.src`
08:47:52  <Raynos>too much magic, gtfo.
08:47:58  <phated>wat
08:48:15  <substack>Raynos: you should cover this in your http-framework talk
08:48:17  <funkytek>that's gotta be trolling
08:48:19  <Raynos>why gulp.run('scripts') when i can just call the scripts() function
08:48:41  <phated>Raynos: please, please, please do some research before you debate
08:48:45  <substack>Raynos: then you can run it externally I think
08:48:52  * coderzachjoined
08:49:05  <phated>gulp exposes an instance of orchestrator
08:49:15  <phated>so you could execute tasks from anywhere
08:49:19  <substack>but I agree, there should be separate modules to handle globbing and running tasks
08:49:36  <phated>substack: globbing is a separate module
08:49:43  <funkytek>there are
08:49:51  <substack>phated: it's all a grab bag on the `gulp` instance though
08:49:53  <phated>there has been discussions in the issue to split out gulp.src and gulp.dest
08:50:10  <Raynos>so I guess my problem is
08:50:11  <phated>substack: yes, gulp is an abstraction on top of a bunch of libraries
08:50:15  <phated>like the stuff you write
08:50:24  <Raynos>that gulp is a glue module when using glob-watcher and orchestrator directly
08:50:27  <Raynos>is probably better
08:50:32  <phated>Raynos: correct
08:50:34  <Raynos>that runs into the other problem :/
08:50:41  <Raynos>the fact that you need a "glue module" like gulp
08:50:46  <phated>you don't need it
08:50:49  <phated>gulp is the CLI
08:50:51  <phated>seriously
08:50:53  <phated>that is all it is
08:50:54  <Raynos>to have cohesive documentation and have it be "big enough" that the js community might start "using it"
08:51:00  <phated>well, and the src/dest
08:51:05  <substack>Raynos: bingo
08:51:05  <phated>but that could be split out
08:51:22  <substack>people gravitate towards big things
08:51:25  <substack>and I have no idea why
08:51:29  <Raynos>like its as if the js community needs a fat module before it pays attention and doesnt think about using the underlying parts
08:51:35  <Raynos>substack: because search is really hard
08:51:41  <dlmanning>substack: the higgs boson
08:51:46  <funkytek>it's not big, its small
08:51:46  <phated>discovery is horrible
08:51:49  <funkytek>people have been interested
08:51:55  <funkytek>as an alternative to grunt
08:51:56  <Raynos>substack: people are wasiting time making grab bags because they dont want to solve the discovery / search problem
08:52:01  * cpupjoined
08:52:10  <Raynos>funkytek: thats like saying "jquery is not big. its really small compared to dojo"
08:52:24  <funkytek>it's not at all like saying that
08:52:37  <funkytek>i'm saying people are finding it interesting because it is lean
08:52:47  <funkytek>because it's more expressive
08:52:51  <funkytek>and it's basically just code
08:52:55  <funkytek>with a tiny bit of sugar
08:52:55  <Raynos>phated: so its non trivial from the gulp docs
08:52:58  <Raynos>to know that tasks can have dependencies
08:53:10  * coderzachquit (Ping timeout: 246 seconds)
08:53:14  <phated>https://github.com/gulpjs/gulp#gulptaskname-deps-fn
08:53:19  <phated>Raynos: ^
08:53:23  <Raynos>because task('default') should have dependencies on scripts & copy instead of calling gulp.run
08:53:36  <Raynos>phated: I only bother reading the example
08:53:48  <funkytek>you're arguments are muddled, you're mixing "a lib shouldn't exist" with technical criticism
08:53:51  <Raynos>im not going to read the entire documentation
08:53:55  <phated>Raynos: but you just said docs?
08:54:03  <funkytek>you're showing examples that are more vanilla
08:54:05  <guybrush>just rename very gulp-module in something without gulp in it, it wont be treated as a framework anymore!
08:54:08  <Raynos>i didnt mean to say docs
08:54:10  <guybrush>*ervery
08:54:13  <guybrush>*every
08:54:16  <funkytek>but it's just a little sugar on top of what you basically want
08:54:27  <funkytek>with a few exceptions technically, that's fine
08:54:29  <Raynos>so what im saying is
08:54:31  <phated>funkytek: they said they don't like sugar
08:54:34  <Raynos>i dont have much technical critism
08:54:35  <phated>even though they do
08:54:38  <Raynos>my critism is philosophical
08:54:40  <funkytek>but you're mixing that argument with the philisophical
08:54:50  <Raynos>as in this is a stupid thing to invest time and energy in because silos
08:55:18  <guybrush>Raynos: is connect a silo?
08:55:20  <funkytek>but people clearly find it useful, just like they find grunt useful
08:55:23  <Raynos>yes 100%
08:55:24  <funkytek>for building apps
08:55:25  <Raynos>connect is a silo.
08:55:33  <funkytek>is connect useful?
08:55:42  * ericholscherjoined
08:55:44  <grncdr>oh man, I just read so much scrollback twf
08:55:46  <grncdr>*wtf
08:55:47  <Raynos>funkytek: 90% of everything is shit.
08:56:04  <substack>funkytek: to some but everything built for it has a needlessly restricted audience for being built against its divisive api
08:56:13  <Raynos>appeal to majority means nothing.
08:56:25  <funkytek>-_-
08:56:28  <funkytek>not sure if trolling
08:56:29  <Raynos>:D
08:56:38  <guybrush>so please give me your opinion on that: i use connect because it does everything i want with view lines of code and it is actively developed, so i can patch all the 1000 projects i use it in at once
08:56:43  <guybrush>it this a bad thing?
08:56:51  <guybrush>i think im driving pretty good with that
08:57:02  <grncdr>funkytek: no, connect is not useful, connect is a leaky abstraction
08:57:07  <guybrush>again i like to skip connect in fun-projects
08:57:07  * cpupquit (Ping timeout: 272 seconds)
08:57:09  <Raynos>> gulp is cool. I want our company to get off grunt and im happy to move to gulp because its really not that bad. im just being an opinionated dick
08:57:20  <Raynos>I suffer from "somebody is wrong on the internet"
08:57:48  <grncdr>I say this as somebody who wrote a framework, with plugins built up around connect
08:57:50  <Raynos>guybrush: connect isn't that bad. I obvouisly like https://github.com/Raynos/http-framework/
08:58:05  <grncdr>it provided me approximately zero-value over just doing things myself
08:58:08  <guybrush>really i just want to know your opinion on my statement
08:58:12  <guybrush>im thinking about this a lot
08:58:22  <grncdr>guybrush: which statement...
08:58:33  <phated>Raynos: since you have conceded on technical merit, i think it would be super helpful if you would submit a ticket about philosophical problems you have with it
08:58:55  <grncdr>guybrush: "i use connect because it does everything i want with view lines of code and it is actively developed, so i can patch all the 1000 projects i use it in at once"
08:58:55  <guybrush>that i use connect because its actively developed and does all the things at once that i need to accomplish work
08:59:01  <guybrush>right
08:59:01  <funkytek>so minus appeal to majority, I find it useful, because I build apps for a living - i want to grab a gulp file and get moving, not discover and build wrappers around a bunch of npm modules
08:59:09  <Raynos>phated: not quite true. I think your glob stream interface is probably a little too complex
08:59:12  <funkytek>it's much easier to do this with gulp than grunt
08:59:21  <funkytek>please file ticket , Raynos
08:59:25  <Raynos>having a stream of streams or a stream of buffers feels bad
08:59:26  <funkytek>if you're interested
08:59:34  <grncdr>guybrush: that's fair, but it's not an argument for connect, it's an argument for better discoverability
08:59:44  <guybrush>grncdr: no its not
08:59:47  <phated>Raynos: i definitely think that conversation would be helpful to vinyl
08:59:48  <Raynos>funkytek: sure, as an app developer yes. gulp really isn't a bad choice
08:59:50  <guybrush>its an argument for frameworks
09:00:09  <Raynos>but im not an app developer nor am I get stuff done person
09:00:13  <guybrush>again i really like to skip connect
09:00:14  <Raynos>I'm a do it once and do it right person
09:00:17  <phated>Raynos: https://github.com/wearefractal/vinyl
09:00:20  <guybrush>its just for work its pretty hard to skip
09:00:35  <funkytek>Contra and I build lots of diverse apps all the time, the idea for gulp came out of our dissatisfaction with grunt's config over code
09:00:39  <funkytek>it was too inflexible
09:00:44  <grncdr>guybrush: the distinction between framework and library get's a bit fuzzy but...
09:01:12  <funkytek>and lack of rigid standards for plugins
09:01:14  * cpupjoined
09:01:21  <funkytek>as app developers we're productivity driven
09:01:24  <phated>funkytek: not only that, but not being able to use the existing ecosystem
09:01:25  <grncdr>connect is a grab bag of utiliities that can be glued together with a unifying abstraction: (req, res, next) -> void
09:01:38  <guybrush>well you can see it how you want
09:01:47  <grncdr>my point is that most of the utiltities don't benefit from that abstraction
09:01:53  <funkytek>a gulp plugin is just a function, i understand your philosophical issue with silo's though
09:02:04  <funkytek>but from a pragmatic standpoint it is productive
09:02:28  <guybrush>grncdr: right, thats what i said before - once the community agrees to use something everyone builds uppon it and there we go
09:02:30  <grncdr>the benefit I thought you were talking about was "connect has many things I want and I can put them together easily"
09:02:43  <phated>a gulp plugin is a node module that receives a vinyl stream and outputs a vinyl stream
09:02:46  <guybrush>you have to go with it, in order to be competitive (not in a bad sense)
09:02:47  <phated>a gulp task is just a function
09:02:51  <Raynos>funkytek: so i could say your taking a productivity shortcut that hurts the community in the long run
09:03:05  <guybrush>somehow this is also true for browserify btw
09:03:07  <funkytek>why does it hurt the community
09:03:24  <funkytek>i really don't agree with that
09:03:25  <Raynos>because time is wasted writing gulp plugins instead of gulp wrappers around standalone modules
09:03:27  <Raynos>same with grunt
09:03:38  <Raynos>a lot of time is wasted writing grunt plugins instead of grunt wrappers around standalone modules
09:03:44  <funkytek>a gulp plugin is a gulp wrapper around a standalone npm module
09:03:47  <Raynos>if that wasn't the case then gulp could trivially wrap 90% of grunt code
09:04:17  <guybrush>Raynos: but a lot of different opinions/approaches and stuff is a good thing
09:04:22  <funkytek>i think gulp plugins are what you want
09:04:27  <funkytek>you should look at some :)
09:04:30  <guybrush>i welcome gulp (though i will never use it :p)
09:04:42  <Raynos>maybe i assume gulp plugin authors are as bad as grunt plugin authors :p
09:04:46  <funkytek>gulp plugins are just functions that use streams
09:04:49  <Raynos>sec.
09:04:53  <funkytek>no the gulp plugin guidelines are very strict
09:05:03  <guybrush>funkytek: whats the different between gulp and just node?
09:05:11  <guybrush>functions that use streams?
09:05:16  <phated>Raynos: gulp plugins wrap an existing node module in a stream
09:05:18  <guybrush>why do i need gulp for that?
09:05:35  * ericholscherpart
09:06:09  <funkytek>convenience , a little sugar and pluins that work ootb
09:07:08  <timoxley>funkytek: another issue with wrappers is they fall out of sync with the original code
09:07:09  <guybrush>hmmm its ok
09:07:16  <guybrush>as long as i dont have to use it haha
09:07:22  <grncdr>guybrush: ok, so I guess the distinction I'm making is that "connect middleware the convention" doesn't actually add a lot of value, but *does* require the caller to either "be connect compatible" or fake it. This requirement on *consumers* of your software is what can occasionally cause friction or awkward API's when you want to use that connect-specific code in a non-connect context (something I've personally run in to)
09:07:27  <grncdr>whoa, wall of text
09:07:29  <grncdr>:D
09:07:30  <timoxley>browserify updates, when does the wrapper update?
09:07:40  <Raynos>var File = require('gulp-util').File; instead of `var File = require("vinyl")` is annoying
09:07:46  <grncdr>timoxley: "later" ;)
09:07:59  <timoxley>bad.
09:07:59  <guybrush>grncdr: i ran into that too
09:08:08  <guybrush>its why i think about it a lot
09:08:11  <Raynos>also just making me look at gulp-util makes me sad :(
09:08:20  <Raynos>if you need the name util in a module name then :(
09:08:24  <funkytek>timoxley: so it's better to update it yourself
09:08:35  <funkytek>what's the difference
09:08:38  <funkytek>it has to be updated
09:08:54  <timoxley>funkytek: it's better to not have to rely on a 3rd party to update their wrapper to get the latest
09:09:12  <funkytek>timeoxley: idk if you've heard of this thing called github
09:09:13  <timoxley>it's a real pain in the ass
09:09:20  <funkytek>it's pretty cool
09:09:23  <phated>Raynos: huh? `var File = require('vinyl');`
09:09:29  <phated>that is from the readme
09:09:31  <grncdr>guybrush: my thought is that if you *are* using connect, wrapping anything in a 2-line function to make it call `next` at the write time is trivial. Pulling behaviour that's wrapped in a closure out is not
09:09:39  <Raynos>i was looking at implementation of gulp.src
09:09:40  <funkytek>Raynos: you must have some outdated code
09:09:49  <Raynos>https://github.com/gulpjs/gulp/blob/master/lib/createInputStream/index.js#L4
09:09:53  <substack>guybrush: yes, it can be a problem in browserify too, which is why browserify plugins are only module.exports = function (file) { return stream } but there can still be issues with that
09:10:18  <phated>Raynos: meh, i linked you to the actual repo
09:10:19  * cpupquit (Ping timeout: 246 seconds)
09:10:41  <substack>and that's why I tried really hard with browserify not to invent anything new and just use the node APIs verbatim when I could
09:10:47  <guybrush>substack: it takes a lot to build something like browserify, its not like i can just write a cool thing that works as good as it
09:11:00  <grncdr>geez this is a real rager ;P
09:11:00  <guybrush>so... when i make a project
09:11:06  <substack>guybrush: but you almost can ;)
09:11:08  <guybrush>its not like i can just make it awesome by default
09:11:12  <phated>Raynos: gulp-util.File is going to be vinyl in the next release, i believe
09:11:26  <substack>guybrush: since module-pack, insert-module-globals, and browser-pack are all completely independent projects
09:12:13  <guybrush>i know, i waited a view seconds before i hit enter when i claimed that browserify suffers from the same problem haha
09:12:16  <substack>phated: why not just use callbacks or events instead of fitting everything into vinyl streams?
09:12:23  <substack>not everything is well suited to streams
09:12:23  <phated>substack: it does that
09:12:32  <phated>again, it does that
09:12:41  <phated>that's the awesome things about docs, they tell you that stuff
09:12:54  <substack>phated: all the examples I've ever seen only use .pipe()
09:13:02  <phated>substack: https://github.com/gulpjs/gulp#async-task-support
09:13:13  <substack>guybrush: it's something I worry about though
09:13:29  <substack>I really don't want browserify to create a silo like connect did
09:13:41  <grncdr>phated: legitimate Gulp newb question, why use it?
09:13:56  <grncdr>I'm not trolling, I've read (most) of the scrollback
09:13:56  <phated>substack: from my point of view, browserify is already a silo
09:13:56  <substack>the only silo we should have is "the node way", browser and server side alike
09:13:58  <Raynos>phated, funkytek: I changed my mind, gulp is cool, im learning from it
09:14:08  <Raynos>theres a bunch of cool modules in there that i can use directly
09:14:33  <phated>Raynos: I'm glad... there has been a lot of work on gulp, and a ton of splitting things out
09:14:35  <grncdr>what is the improvement it's providing over npm & node?
09:15:08  <phated>Raynos: i agree that gulp is glue, i disagree that glue is bad, because things people make for the glued pieces will work in the individual pieces
09:15:20  <phated>grncdr: it uses npm and node
09:15:27  <phated>grncdr: it benefits from it
09:15:27  <funkytek>Raynos: i thought you would like it if you checked it out :D
09:15:28  <substack>phated: I mean a buffer stream, not an object stream
09:15:32  <funkytek>it is fairly vanilla
09:15:34  <phated>grncdr: gulp is just JS
09:15:36  <substack>just read the docs on that
09:15:40  <phated>substack: huh?
09:15:57  <substack>gulp plugins are object streams
09:16:04  <phated>correct
09:16:19  <grncdr>phated: um, I know all that? I really don't understand what it's providing *on top of* npm and node though
09:16:24  <phated>substack: the contents property can be a Buffer, stream, or null
09:16:26  <Raynos>phated, funkytek: what are your github names, I'll reference you in the gulp issue I'm writing
09:16:34  <funkytek>@funkytek
09:16:37  <phated>Raynos: @phated
09:16:53  <substack>phated: that makes them somewhat silo-esque because you can't just trivially reuse gulp plugins outside of gulp
09:17:02  <guybrush>in the end its all ok as long as its at least remotely in the unix-silo
09:17:15  <phated>grncdr: it provides a CLI, task deps, the orchestrator stuff, vinyl streams
09:17:19  <phated>substack: you actually can
09:17:28  <phated>substack: although, you are tied to vinyl streams
09:17:39  <substack>phated: that's the thing I'm skeptical about
09:17:42  <phated>substack: but i would hope that you don't think vinyl streams are horrible
09:17:49  <phated>substack: and they are open to change
09:17:52  <phated>substack: i think
09:17:54  <grncdr>phated: npm & node provides all that except "vinyl streams"
09:17:55  <timoxley>phated: it doesn't matter if they are good or bad
09:18:27  <grncdr>and I don't mean in the "provides all that if I write a few dozen lines of boilerplate"
09:18:30  <phated>grncdr: it's just glue, as was just being discussed with Raynos, you can use the things by themselves
09:18:46  <substack>phated: if plugins are written to an exotic kind of abstraction, that will create silos even if the abstractions are good
09:18:58  <substack>like for example
09:19:06  <substack>you can't just use browserify directly
09:19:17  <substack>because the stream that .bundle() returns isn't a vinyl stream
09:19:20  <phated>you can use browserify directly
09:19:32  <substack>if that's true, then why does gulp-browserify exist?
09:19:33  <phated>you wouldn't be able to pipe it into another vinyl stream
09:19:39  <phated>but you can return it
09:19:43  <phated>and orchestrator will handle it
09:20:16  <substack>gul-browserify shouldn't exist
09:20:20  <substack>*gulp
09:20:21  <phated>substack: how would you handle this scenario
09:20:27  <substack>something is wrong upstream
09:20:47  <phated>substack: you have a glob pattern that you want to create a stream for each one
09:21:07  <substack>phated: I wouldn't.
09:21:17  <substack>can you describe what problem that would be solving?
09:21:33  <phated>i can
09:21:37  <phated>if you would let me type
09:21:43  <phated>before being a jerk
09:22:00  <substack>phated: you seem to take offense really easily. Please stop that.
09:22:10  <substack>it's getting very annoying and that is not how this place works
09:23:10  <rowbit1>Hourly usage stats: [developer: 0, free: 58]
09:23:17  <phated>substack: a glob pattern of CSS files that you need to pipe into a stream that removes unused styles or duplicate styles or something, but you need to output each one as the same filename with .stripped.css instead of .css path
09:24:36  <phated>substack: i wouldn't get so offended so easily if you were a giant jerk in real life the one time i met you
09:25:13  <funkytek>I think the arguments are getting muddled again, the technical criticisms of gulp are relatively minor, he real criticism is philosophical: the silo problem
09:25:38  <funkytek>which is valid, i think the real answer is to people who don't build apps, or a lot of apps, or work on 1 app
09:25:42  <funkytek>it's probably not that valuable
09:25:44  <phated>funkytek: substack is saying vinyl causes silos, because it isn't a text stream
09:25:58  <phated>i gave a technical reason why vinyl streams need to exist
09:26:12  <funkytek>but i guess that's what i'm getting at, is the technical arguments are minor and somewhat nuanced, the real problem is silo-ization
09:26:12  <substack>I would find a module that would fire a callback for every file in the glob results
09:26:31  <funkytek>and substack admits even browserify is subject to this, which i applaud him working hard to avoid
09:26:38  <substack>and then do stream.pipe(stripTransform()).pipe(fs.createWriteFile(outfile))
09:26:46  <substack>which can be done completely with regular text streams
09:27:12  <funkytek>i think our take on gulp is it's pretty vanilla, and you get a ton of value out of it even if it is somewhat silo'd it's vanilla and modular enough it can still have value as raynos pointed out
09:27:31  <funkytek>but the real argument here isn't technical it's philosophical
09:28:12  <phated>substack: i will agree with you on the gulp-browserify point, it is dumb since browserify has 1 entry point (not a glob) and already deals in streams
09:28:16  <substack>there are some technical problems that manifest with ecosystem silos
09:28:23  <substack>like maintaining versions upstream
09:28:40  <phated>substack: couldn't that be solved by semver?
09:28:42  <funkytek>yep and you trade that for convenience basically
09:29:11  <substack>phated: not really. If the upstream changes then the plugin needs to change
09:29:24  <substack>and who knows if the plugin author will be responsive enough
09:29:32  <phated>substack: if the API changes, then yes, but correct semver mitigates that
09:29:35  <funkytek>but there's a reason a lot of people are using grunt and now gulp, because there is productivity value in it not because they're all stupid and bad programmers destroying the node ecosystem
09:29:38  <Raynos>funkytek: you can have value if you use gulp in a philosophical way
09:29:42  <Raynos>i.e. you apply my philosophy
09:29:45  <funkytek>:)
09:29:55  <substack>phated: the problem is one of needless staleness
09:29:57  * freeallquit (Quit: Leaving...)
09:29:57  <Raynos>and then you put gulp on top of my philosophy as a "optional convenience on the side thing"
09:30:12  <Raynos>https://github.com/gulpjs/gulp/issues/110
09:30:24  <phated>Raynos: i think gulp is very close to your philosophy
09:30:26  <funkytek>it's a convenience and productivity lib, that's what it's there for
09:30:37  <Raynos>phated: the problem is that it hides my philosophy
09:30:53  <Raynos>i had to look really hard and be convinced by too aggresively defending people to find that it is close
09:31:07  <Raynos>its a massive unneccesary layer of friction
09:31:49  <funkytek>again for you / your use case
09:32:16  <funkytek>whoa im not being that aggressively defensive :)
09:32:32  <Raynos>prob not.
09:32:42  <funkytek>just having a fun chat with yall
09:32:51  <Raynos>its not a bad thing
09:32:55  <Raynos>its actually good :p
09:33:00  * grncdrhigh fives funkytek
09:33:12  * grncdrhigh fives *everybody*
09:33:23  <grncdr>this channel needs more LOUDBOT
09:33:39  <Raynos>funkytek: so http://www.infoq.com/presentations/Simple-Made-Easy
09:33:48  <Raynos>you decided to make something easy instead of simple
09:33:56  <funkytek>ehh not true really but
09:34:05  <funkytek>i am a big fan of hickey and this talk in particular
09:34:40  <Raynos>the convenience gulp gives makes it easier but also adds more complexity / hides simplicity
09:34:56  <funkytek>compared to grunt, gulp is much, much simpler
09:34:59  <funkytek>it's just code
09:35:04  <grncdr>would it be fair there are "simple" parts and "easy" parts to the set of things we are calling "gulp" ?
09:35:15  <funkytek>it promotes native node abstractions instead of weird declarative config dsl
09:35:23  <funkytek>it is not _pure_
09:35:37  <grncdr>like maybe what Raynos is driving at isn't so much "easy == bad" and "simple == good"
09:35:39  <Raynos>funkytek: compared to Maven grunt is much, much simpler
09:35:40  <funkytek>you can say oh compoared to grunt doesn't mean anything, but again, being pragmatic it does
09:35:48  <funkytek>when we all use grunt! :D
09:35:51  * cpupjoined
09:36:01  <Raynos>no
09:36:04  <Raynos>we dont all use grunt
09:36:07  <Raynos>i will remind you
09:36:10  <funkytek>that's my point
09:36:17  <phated>Raynos: what would you classify as non-trivial?
09:36:23  <Raynos>http://nodejsreactions.tumblr.com/post/71426391619/when-the-discussion-turns-to-build-tools-or-front-end
09:36:23  <funkytek>i'm saying for people who use grunt
09:36:25  <funkytek>it's simpler
09:36:30  <Raynos>I really should have run away
09:36:32  <Raynos>a long time ago
09:36:38  <funkytek>but i'm agreeing with you
09:36:41  <funkytek>you shouldn't use gulp
09:36:47  <funkytek>it doesn't make sense for your use case
09:36:51  <funkytek>im saying the grunt comparison is valid
09:36:56  <funkytek>when you're already using grunt
09:37:04  <funkytek>gulp is simpler
09:37:22  <funkytek>it's sacrificing simplicity for ease vs. 100% vanilla js
09:37:26  <Raynos>phated: I'm not entirely sure, but the fact i could rewrite the example in a way i find a lot simpler in an hour is making me feel strongly that gulp is an unneccessary layer of abstraction
09:37:29  <funkytek>it's simpler than grunt
09:37:38  <phated>i just feel bad for the people who miss out of knowledge because they don't dig into something
09:37:53  <phated>Raynos: you rewrote it so simply because gulp did all the work first ;)
09:37:58  <funkytek>so for those of us who find value in grunt (me, i build many apps) it is a step in the right direction (simpler)
09:38:07  <Raynos>phated: yes and that is really awesome
09:38:16  * contrahaxjoined
09:38:20  <Raynos>the fact that the gulp guys broke some of their pillars out into standalone modules is win++
09:38:23  <Raynos>thats why npm is <3
09:38:30  <phated>and then contrahax joins in ;)
09:38:43  <contrahax>hi
09:38:44  <funkytek>for those not using any build tooling because it sacrifices simplicity of vanilla js
09:38:51  <funkytek>there is no use of gulp for you, keep doing what you're doing
09:38:57  <funkytek>not trying to shoehorn your use case
09:39:00  <contrahax>whats going on in here
09:39:07  <guybrush>woah _that_ is funny, i just fell from my sittingball http://nodejsreactions.tumblr.com/post/71649072477/look-at-mah-new-framework-it-does-all-the-things
09:39:12  <phated>contrahax: gulp debate
09:39:14  <Raynos>the fact that the gulp guys do both that for 5-10 modules and then pollute npm with 150 gulp- modules is many many sads
09:39:15  <guybrush>(not related to the current discussion)
09:39:21  <contrahax>okay
09:39:27  <funkytek>i'm saying gulp is a valid alternative to grunt, which has value for app developers
09:39:36  <contrahax>well to start this off i dont care what anyone thinks because i made gulp for myself to use
09:39:39  <phated>Raynos: the gulp guys don't pollute anything, there is no core lib
09:39:46  <Raynos>gulp-util
09:39:48  <Raynos>:P
09:39:58  <Raynos>pollute is an unneccessary negative word
09:40:08  <contrahax>can somebody catch me up
09:40:26  <Raynos>im done ranting, because i've gone in circles
09:40:28  <funkytek>contrahax: basically the debate is philosophical
09:40:29  <phated>contrahax: Raynos likes gulp, but not the philosophy, substack hates it
09:40:44  <Raynos>im worried that gulp plugins will be a silo community
09:40:49  * cpupquit (Ping timeout: 272 seconds)
09:40:51  <funkytek>the problem being creating a plugin ecosystem (ie having a lib with opinions) creates silos
09:40:52  <contrahax>okay i dont care
09:40:56  <contrahax>i made it to help me out
09:40:58  <funkytek>my point is that
09:41:01  <Raynos>and that i wont be able to use gulp plugins outside of gulp.
09:41:03  <funkytek>it doesn't matter because it has value
09:41:07  <Raynos>which sucks
09:41:11  <phated>Raynos: outside of vinyl
09:41:13  <funkytek>and thats about it
09:41:14  <contrahax>if you dont like it then dont use it
09:41:17  <Raynos>because glob-stream & glob-watcher are awesome
09:41:32  <funkytek>exactly, im saying to raynos it doesn't fit his or substack's usecases
09:41:37  <funkytek>and that's fine
09:41:49  <Raynos>it would be more awesome if there was more things like glob-stream and less things like gulp-uglify
09:41:49  <funkytek>just because it's silo'd doesn't mean it doesn't make sense
09:41:59  <funkytek>it has productivity value for app devs
09:42:09  <contrahax>im open to ideas but the whole "ah this sucks because something already exists" argument is invalid to me
09:42:23  <phated>Raynos: you don't think things like glob-stream will come out of gulp?
09:42:54  <Raynos>from anyone that follows that philosophy yes
09:42:58  <Raynos>the core gulp developers seem to align
09:43:09  <floatdrop>contrahax one valid phrase was said: orchestrator is unnecessary complex tool, that could be removes/simplified
09:43:11  <Raynos>the fractal people seem to align
09:43:19  <Raynos>people that write one or two gulp plugins probably wont
09:43:26  <floatdrop>contrahax do you using orchestrators deps?
09:43:29  <Raynos>This is like the meteor conversation all over again
09:43:35  <floatdrop>*use
09:43:43  <phated>floatdrop: put it in gulpjs
09:43:56  <floatdrop>where?
09:44:39  <contrahax>i didnt make orchestrator
09:44:46  <funkytek>Raynos: meteor's use case is rapid prototyping, i'm not gonna use it but if it works w/e
09:45:02  <Raynos>but as a consequence of making it easy for one group of people
09:45:05  <funkytek>a lot more people use grunt than meteor , and get value out of it
09:45:06  <jesusabdullah>If you don't embrace npm you're gonna have a bad time
09:45:09  <Raynos>they create no value outside of that group of people
09:45:10  <jesusabdullah>I say this from experience
09:45:20  <contrahax>the code is really complex the last time i looked at it
09:45:20  <funkytek>everyone embraces npm here that's for certain
09:45:37  <grncdr>oh hey contrahax I just realized you're the same contra from meatspace chats o/
09:45:47  <Raynos>ok so maybe my objection is that vinyl streams are too weird to interact with
09:45:59  <jesusabdullah>I haven't done meatspace in ages
09:46:02  <funkytek>raynos: so is that your real issue with silos is people are writing code and not giving back to 100% of the community
09:46:03  <Raynos>the whole stream or buffer thing
09:46:22  <funkytek>bottom line is you get power from convention/opinions at the sacrifice of accessibility
09:46:32  <jesusabdullah>tbh I dig the cut of gulp's jib
09:46:32  <funkytek>you have to find the right balance
09:46:39  <Raynos>funkytek: my issue is that I find myself rewriting things that should already be solved problems
09:46:39  <jesusabdullah>way better n' grunt that's for sure
09:46:47  <Raynos>because the only existing solutions are deeply nested in frameworks
09:46:55  <contrahax>thanks jesusabdullah
09:46:58  <Raynos>and everyone else seems to be ok with that and just uses the entire framework
09:47:05  <grncdr>jesusabdullah: indeed that is something *everybody* agrees on ;)
09:47:06  <contrahax>Raynos gulp plugins arent supposed to be a silo
09:47:18  <contrahax>i tried to stick with node ideals as much as possible while still providing enough convention to make it easy
09:47:28  <contrahax>if you think i did a bad job im open to better ideas
09:47:37  <timoxley>mmalecki: does hock do something like, only respond to a mocked route once?
09:47:50  <jesusabdullah>I think a lot of that is taste and principoles, contrahax
09:47:52  <Raynos>contrahax: https://github.com/terinjokes/gulp-uglify/blob/master/index.js
09:47:54  <jesusabdullah>principles*
09:47:56  <phated>contrahax: i actually agree with him that gulp-plugins have gotten out of control
09:48:09  <contrahax>its hard to find the right balance between the two
09:48:10  <Raynos>if fs.createReadStream().pipe(uglify()).pipe(fs.createWriteStream()) worked
09:48:14  <Raynos>then that would be really cool
09:48:14  <funkytek>raynos: i feel the same way, but as problems increase in complexity you can't solve them generically without any opinions/structue in place
09:48:20  <mmalecki>timoxley: yeah, I *think* that might be the case. which is too bad, I don't like this behavior...
09:48:23  <funkytek>thats why frameworks exist
09:48:25  <mmalecki>timoxley: let me double-check tho
09:48:35  <mmalecki>robertkowalski: hey
09:48:36  <contrahax>Raynos thats not our fault though
09:48:36  <funkytek>i wish everything could just be vanilla, opinions get you power
09:48:37  <phated>Raynos: if uglify would accept a patch for streams, then it would be possible
09:48:38  <contrahax>most plugins are dealing with 3rd party libs that use strings
09:49:11  <timoxley>mmalecki: thanks. I'm trying to mock out downloads for some npm tests and it seems to choke the second time the mocked route is requested
09:49:13  <mmalecki>robertkowalski: sorry, I missed your message. let's chat when you're back -- bitswipe is not completely done yet, we have a MVP, but would love to work with you to get it set up
09:49:15  <Raynos>funkytek: I'm trying really hard to solve the scope of "web apps" generically without frameworks/opinions/structure ( https://github.com/Raynos/http-framework/ )
09:49:16  <contrahax>i tried to set strict enough plugin guidelines to make sure that people used normal modules where it made sense
09:49:21  <jesusabdullah>mmalecki: stop telling the internet you do drugs
09:49:32  <mmalecki>timoxley: I think it's trying to follow nock's original behavior
09:49:33  <contrahax>and built plugins when they needed to
09:49:34  <mmalecki>jesusabdullah: no
09:49:35  <Raynos>contrahax: ok so that one is uglifies fault
09:49:38  <contrahax>if it got out of hand then i tried my best but i cant stop people from publishing garbage
09:49:39  * coderzachjoined
09:49:45  <jesusabdullah>also I really need to sleep but I can't because new york
09:49:46  <mmalecki>jesusabdullah: drugs are a hobby like every other fucking hobby out there
09:50:10  <phated>Raynos: the reason why i have been arguing so hard for gulp is because i like your work on http-framework
09:50:16  <jesusabdullah>yeah but it can have repercussions, that's what I worry about
09:50:24  <phated>Raynos: i feel like it is at the same level of abstraction
09:50:25  <mmalecki>jesusabdullah: besides that, 5-HTP is not a *real* drug
09:50:28  <timoxley>mmalecki: any hints as to a way around it?
09:50:31  <jesusabdullah>o
09:50:33  <mmalecki>well, it's a diet supplement
09:50:38  <mmalecki>check it out, you might like it
09:50:56  <mmalecki>oh, you're in NY. ask Avian, he had a bottle lying around XD
09:50:56  <jesusabdullah>ehhh
09:51:05  <jesusabdullah>I'll be in NY *tomorrow*
09:51:09  <mmalecki>ohhh
09:51:10  <Raynos>phated: if s/gulp-/vinyl-/ and i bikeshedded a bit about the vinyl interface
09:51:10  <mmalecki>okay!
09:51:13  <Raynos>then yes its the same
09:51:26  <jesusabdullah>Anyways I think I'll stick to cigarettes and coffee
09:51:34  <Raynos>its a set of modules that all work on some standard stream of files interface
09:51:46  <Raynos>where the new stream of files interface is what creates cohesive composability
09:51:47  <mmalecki>jesusabdullah: ask your doctor, he might even recommend it
09:51:51  <mmalecki>s/he/she/
09:51:56  <jesusabdullah>My doctor sucks
09:51:58  <Raynos>although each module should probably work on a stream of files or a single file
09:52:08  <mmalecki>jesusabdullah: 5-HTP has *some* reputation in MD world
09:52:09  <jesusabdullah>probably the best I can find in SLC
09:52:20  <phated>Raynos: i think contrahax would be up for bikeshedding vinyl stuff in issues
09:52:26  <phated>i am very interested in it
09:52:26  <contrahax>if there was no need for vinyl or gulp plugins i would be a happy guy but sadly all APIs are created different and people want a consistent layer so they dont have to learn the intricacies of every other developers modules
09:52:28  <mmalecki>jesusabdullah: you should print out studies Berkeley (I think?) did
09:52:48  <timoxley>contrahax: why not standardise around node streams
09:52:52  <mmalecki>jesusabdullah: boom, Maryland: http://umm.edu/health/medical/altmed/supplement/5hydroxytryptophan-5htp
09:52:56  <Raynos>i guess the big problem
09:53:06  <Raynos>is half the modules want file names and the other half want streams
09:53:17  <jesusabdullah>timoxley: a stream with only one write?
09:53:22  <jesusabdullah>timoxley: I did think about this
09:53:23  <Raynos>so you need some kind of File { stream, path, buffer } abstraction
09:53:33  <substack>Raynos: npm ERR! 404 'uglify' is not in the npm registry.
09:53:35  <funkytek>Raynos: i like this, i guess the thing is if we want real purity and simplicity let's just switch to clojure/clojurescript :)
09:53:36  <mmalecki>jesusabdullah: there's a bunch of supporting research and shit
09:53:38  <substack>GO
09:53:39  <substack>NOW
09:53:41  <substack>DO IT
09:53:42  <substack>FIX THIS
09:53:51  <contrahax>thats what vinyl is
09:53:51  <Raynos>substack: there is no uglify stream module :/
09:53:54  <phated>substack: uglify-js
09:53:59  <substack>Raynos: exactly
09:54:02  <substack>until now...
09:54:04  <jesusabdullah>substack: fuglifyjs?
09:54:06  <substack>anyways I'll do it
09:54:12  <jesusabdullah>substack: I think it's time for fuglify.js
09:54:25  <mmalecki>jesusabdullah: also, as to repercussions for talking about drugs on the internet, I can't possibly imagine something like that really
09:54:29  <phated>yeah contrahax, I think Raynos still needs to look at https://github.com/wearefractal/vinyl
09:54:33  <contrahax>vinyl is very much a work in progress if you have better ideas im open to rewriting the entire thing
09:54:34  <Raynos>substack: fixing.
09:54:38  <mmalecki>jesusabdullah: like, if my potential employer mentioned that I'd just LOL in his face
09:54:38  <substack>bwahaha
09:54:43  <Raynos>i looked at vinyl
09:54:45  * coderzachquit (Ping timeout: 272 seconds)
09:54:49  <jesusabdullah>mmalecki: in the US that can get you fired immediately
09:54:51  <mmalecki>and possibly starve
09:54:51  <timoxley>jesusabdullah: streams with one write?
09:54:55  <substack>Raynos: just take over the `uglify` name on npm
09:54:58  <substack>is what I'm saying
09:55:11  <substack>and make it streaming and nice
09:55:21  <contrahax>finding the line between convenience and correctness is not easy
09:55:22  <jesusabdullah>timoxley: why wrap uglify with a stream if it only works if you pass it the full source string, and calls back with another full source string?
09:55:27  <mmalecki>jesusabdullah: yeah, for shitty employers, I can imagine
09:55:37  <jesusabdullah>mmalecki: No, even pretty good employers
09:55:41  <mmalecki>jesusabdullah: like, y'all still have that lulzy drug test thing going on?
09:55:47  <timoxley>jesusabdullah: yeah that's crap
09:55:56  <jesusabdullah>mmalecki: yeah, a lot of jobs do
09:56:17  * funkytekswitches to clojure(script)
09:56:18  <mmalecki>http://www.secretsofthefed.com/wp-content/uploads/2013/03/drug-test-meme-what-drugs-are-we-testing.jpg
09:56:19  <substack>jesusabdullah: that's an implementation detail
09:56:55  <jesusabdullah>substack: Sure, of course, but it's a lot of rigamorole to standardize against that interface no?
09:57:01  <jesusabdullah>substack: (yes I know, write the module once)
09:57:54  <timoxley>jesusabdullah: perhaps there's no good reason uglify couldn't be made to stream natively
09:58:05  <jesusabdullah>timoxley: MAYBE
09:58:08  <timoxley>maybe.
09:58:17  <phated>Raynos: alright, good discussion. hopefully you open an issue on vinyl, i would love to bikeshed API changes there
09:58:20  <jesusabdullah>Okay, report back with your findings. GO!
09:58:25  * freealljoined
09:58:31  <Raynos>phated: agreed, I'm tired
09:58:34  <Raynos>substack: https://gist.github.com/Raynos/8314369
09:59:09  <mmalecki>timoxley: https://github.com/mmalecki/hock/blob/master/lib/hock.js#L181 :(
09:59:21  <mmalecki>cc kenperkins
09:59:49  <mmalecki>timoxley: I'll discuss that with kenperkins, maybe make it not remove it/add an option
09:59:54  <Raynos>contrahax: It is hard. And you made good progress
10:00:00  <timoxley>mmalecki: would be good
10:00:10  <timoxley>mmalecki: thanks!
10:00:32  <mmalecki>timoxley: yeah, np! ideally hock wouldn't have test-related stuff at all
10:00:33  <jesusabdullah>okay closing the laptop even though I'm still freaking out a little, maybe I'll fall asleep
10:00:36  <jesusabdullah>gnight friends
10:00:40  <mmalecki>but yeah
10:00:52  <mmalecki>jesusabdullah: good night!
10:01:21  <mmalecki>hey, what'd you all recommend for a self-bootstrapping service discovery?
10:01:42  <contrahax>Raynos thats basically the whole codebase of gulp minus orchestrator
10:02:16  <mmalecki>I have bender, but services still need to know bender's IP, I want to make the whole thing zero-conf
10:02:55  <Raynos>contrahax: agreed. gulp just feels SO much heavier then that example
10:03:01  <mmalecki>I was thinking DHT but it's only 20 bytes of information I can store
10:03:15  <mmalecki>and UDP multicast feels hacky and it wouldn't cross DC borders
10:03:46  <mmalecki>I guess I actually have to start with UDP multicast and then handle multi-dc registrations
10:04:05  <Raynos>contrahax: using glob-stream directly, inlining a naive implementation of gulp.dest, gulp.src & vinyl makes it so much more transparent and lighter
10:04:24  <Raynos>it reduces so much magic
10:05:08  <timoxley>mmalecki: https://github.com/mmalecki/hock/issues/5
10:05:18  <contrahax>Raynos its not magic its almost exactly the code you just pasted
10:05:31  <mmalecki>timoxley: thanks!
10:05:43  <contrahax>if you feel better about yourself because you can rewrite gulp at the top of every build file you make then you arent our target audience
10:06:14  <contrahax>most people dont have time to reinvent the wheel every time they want to start a new project
10:06:16  <Raynos>contrahax: I understand what your saying, I don't think it's just that though.
10:06:21  <funkytek>why do you want to re-invent the wheel of what gulp does and rewrite every plugin
10:06:54  <substack>contrahax: the objection is that gulp could be more useful to more people if its internals were split out more into separate packages
10:07:14  <contrahax>when more people make better modules we wont need an abstraction like gulp but until then some people have work to get doen
10:07:18  <mmalecki>hmm, ideally config is included in the package...
10:07:25  <mmalecki>ideally all of this goes through a build server
10:07:31  <contrahax>substack it will be
10:07:34  * mmaleckifalls into a rabbit hole
10:07:39  * dashedjoined
10:07:50  <contrahax>substack the only thing that isnt split out is whats about to be called vinyl-fs which is the src, dest, and watch logic
10:07:53  <contrahax>which can also be other modules
10:07:57  <contrahax>im still fleshing out the spec though
10:08:11  <dashed>o.o
10:08:46  <contrahax>gulp is going to be just one combination of many modules
10:08:56  <substack>that's good, although I think that vinyl is going to create a lot of silo effects with the plugin ecosystem
10:09:14  <phated>substack: doesn't every object stream?
10:09:42  <mmalecki>^
10:09:42  <contrahax>substack i tried not to but once again i cant control what people put on npm
10:09:43  <substack>phated: well some things like browserify are *already* streaming
10:09:53  <substack>but people write plugins anyways
10:09:58  <contrahax>i have in the guidelines that people shouldnt make plugins unless they absolutely need to
10:10:09  <contrahax>substack thats one module please find some more
10:10:15  <phated>substack: that wasn't promoted by gulp though
10:10:23  <contrahax>for every module that can stream there are 100 that wont
10:10:25  <Raynos>substack: so you need something like vinyl
10:10:28  * freeall_joined
10:10:32  <Raynos>just streams wont work because a lot of apis want file names
10:10:46  <substack>Raynos: so just pass the filenames as arguments
10:10:55  <phated>Raynos: can't tell if you are saying that tongue-in-cheek
10:10:55  * freeallquit (Read error: Connection reset by peer)
10:10:56  <funkytek>Raynos i just read a log up to the top where you say "gulp is ok if your doing non trivial stuff" that would have been enough for me if i would have seen it lol
10:10:58  <substack>browserify(filename).pipe(fs.createWriteStream(...))
10:11:02  <Raynos>substack: that breaks pipe chains
10:11:06  <substack>Raynos: yes
10:11:12  <Raynos>https://gist.github.com/Raynos/8314369#file-gulp-example-js-L39
10:11:14  <substack>because pipes aren't the holy grail of abstractions
10:11:20  * nfroidurejoined
10:11:22  <substack>sometimes other abstractions are more appropriate
10:11:38  <Raynos>substack: https://gist.github.com/Raynos/8314369#file-gulp-example-js-L56
10:11:47  <dashed>just to note.. gulp-browserify exists
10:11:52  <Raynos>that uglify() call needs a fileName it gets it as a property of the stream
10:11:59  <Raynos>although tbh
10:12:01  <Raynos>you are right
10:12:05  <Raynos>prob a case of streams abuse
10:12:23  <contrahax>tl;dr trashing for no reason
10:12:33  <dashed>just for lulz
10:13:22  <substack>contrahax: it would help if gulp had some examples of *not* using gulp plugins and *not* using .src() and .dest()
10:13:57  <contrahax>im all for open debate but come on
10:14:05  <substack>come on? I'm serious
10:14:21  <contrahax>substack there is only so much you can cram into a readme, for everything else we have a wiki
10:14:33  <substack>one of the benefits of having a streaming pipeline is interoperability with existing functionality
10:14:37  <contrahax>we have a recipe section im sure that would fit great in
10:14:58  <substack>somebody coming to gulp thinks "oh this is like grunt but with .pipe()"
10:15:14  <contrahax>somebody show me gulp-concat that works with no vinyl
10:15:32  <substack>and then goes reaching immediately for the grunt-* style modules even when they aren't very applicable and you can just use vanilla abstractions instead
10:15:54  <Raynos>contrahax: not trashing for no reason
10:16:07  <Raynos>contrahax: if you break gulp.src & gulp.dest out that would be cool
10:16:09  <phated>substack: there has been serious push back against those type of people
10:16:16  <funkytek>substack: there has been an effort to minimize plugins especially unneeded ones
10:16:20  <substack>contrahax: https://npmjs.org/package/catw
10:16:22  <Raynos>I actually realized that the vinyl interface is not that bad
10:16:29  <contrahax>substack like i said before i cant control what people do im not a dictator on npm
10:16:29  <funkytek>and a real effort to push vanilla code
10:16:35  <contrahax>people can publish whatever they want
10:16:48  <contrahax>Raynos check out vinyl-fs its already in the works
10:16:58  <contrahax>the next major release of gulp is going to have them outside
10:17:08  <Raynos>then gulp seems fine
10:17:13  <Raynos>although i prob wont use gulp
10:17:20  <Raynos>and i would use the parts gulp is made off
10:17:23  <Raynos>as and when I need them
10:17:30  <Raynos>but thats just me being overly modular
10:17:37  <phated>Raynos: that seems perfectly logical
10:17:38  <contrahax>any time i see something that shouldnt be a plugin i open an issue and question why. i try to enforce the plugin guidelines as much as possible but im only one person
10:18:05  <substack>contrahax: you shouldn't need to do that
10:18:16  <contrahax>you cant complain that gulp sucks because other people made bad choices
10:18:20  <phated>Raynos: but with that logic, you shouldn't hate the gulp glue, because stuff that works in gulp would work with individual modules
10:18:34  <Raynos>phated: I dont like orchestrator
10:18:49  <contrahax>substack i can publish browserify-thing right now thats a total piece of crap and you cant do anything about it
10:19:00  <contrahax>so somebody can come in and say browserify sucks because browserify-thing exists
10:19:01  <Raynos>but yes, i didnt do my gulp research
10:19:02  <phated>Raynos: no gulp plugin would ever rely on orchestrator
10:19:03  <contrahax>its not a valid complaint
10:19:44  <phated>Raynos: orchestrator was something robrich needed, and made a huge PR to gulp, contrahax told him to make it a module
10:19:45  <substack>contrahax: but how gulp is tightly coupled to vinyl and implicitly encourages that kind of thing is a valid complaint
10:20:18  <Raynos>btw gulp-util is still a bad idea :/
10:20:23  * pgtejoined
10:20:34  <phated>Raynos: i am taking the reins on the orchestrator front, so what would you want to see there?
10:20:34  <Raynos>migrate it to vinyl and vinyl-fs and etc
10:20:55  <phated>Raynos: i think that is what contra was saying (moving much of util to vinyl stuff)
10:21:16  <Raynos>phated: I just dont see the point of recommending a task DSL when you can just call functions
10:21:29  <contrahax>substack if vinyl didnt exist you would essentially remake it for every single build step
10:21:42  <contrahax>look at what raynos did for his sample - an object with a file name and the file contents
10:21:45  <contrahax>thats all that vinyl is
10:22:03  <Raynos>contrahax: and i forgot to make sure my uglify thing returned an object with a fileName on it
10:22:29  <contrahax>you have to standardize something to make all of these things work together
10:22:42  <Raynos>contrahax: https://gist.github.com/Raynos/7c7db71ee1626b0dd947#file-x-js-L44
10:22:45  <Raynos>look familiar? :D
10:23:08  <phated>Raynos: yeah, i think we can simplify the orchestrator stuff into almost non-existence
10:23:10  <rowbit1>Hourly usage stats: [developer: 0, free: 50]
10:23:11  <substack>contrahax: this is what I usually do https://gist.github.com/substack/7819530
10:23:12  <contrahax>all of the hate is unwarranted because nobody has actually looked at what it does
10:23:28  <substack>or this http://substack.net/task_automation_with_npm_run
10:23:31  <contrahax>substack you also made all of those tools
10:23:35  <Raynos>contrahax: agreed.
10:23:40  <substack>contrahax: and?
10:23:41  <nfroidure>i did! an i liked what i saw :)
10:23:41  <phated>contrahax: yup, which is what i argued to begin with
10:23:45  <contrahax>what does somebody do when a cli tool to do what they do hasnt been invented by our god substack?
10:23:58  <Raynos>they author modules
10:24:07  <Raynos>or search for them
10:24:08  <Raynos>or bash
10:24:14  <substack>so many things they can do
10:24:24  <substack>I made those tools because I'm picky
10:24:26  <Raynos>but it doesnt work cleanly without vinyl interface for some use cases
10:24:46  <funkytek>what about windows?
10:24:48  <substack>but I always search npm rather thoroughly before I write anything
10:25:12  <contrahax>substack and most people dont want to reinvent the wheel for the sake of demonstrating their own cleverness
10:25:23  <contrahax>the windows argument is bullshit nobody cares about windows
10:25:41  <funkytek>that was a troll
10:25:45  <funkytek>this is back to my argument about use-cases and productivity
10:25:59  <contrahax>i dont even know if gulp works on windows
10:26:02  <substack>contrahax: but they don't need to, that stuff is on npm now or plenty of other stuff
10:26:05  <phated>lol
10:26:19  <Raynos>contrahax: vinyl isn't needed for gulp-concat ( https://gist.github.com/Raynos/8314719 )
10:26:33  <contrahax>substack im sure if you made gulp it would have been a stroke of genius
10:26:48  <substack>I'm just advocating for finding tools that you like or writing them and then glueing them together yourself without a frameworky thing to hold your hand about how to do that
10:26:53  <funkytek>well i heard the rapgenius guys are using gulp now so
10:27:02  <Raynos>contrahax: also this stuff scares me ( https://github.com/wearefractal/gulp-concat/blob/master/index.js#L18 )
10:27:04  <phated>substack: isn't that what contrahax did?
10:27:19  <substack>phated: somewhat, but gulp still tries to do a bunch of things at once
10:27:28  <substack>I prefer tools that do ideally exactly one thing
10:27:34  <contrahax>substack most people cant write a node module
10:27:35  <contrahax>substack you have to face that fact
10:27:47  <phated>substack: gulp is the glueing it together that you mentioned
10:27:49  <substack>that's pretty bleak
10:27:56  <funkytek>gulp will be broken into modules that do one thing for the most part
10:28:00  <nfroidure>Raynos, https://github.com/wearefractal/gulp-concat/pull/14
10:28:02  <funkytek>gulp plugins are supposed to do one thing
10:28:15  <funkytek>we live and breathe single responsibility principle over here...when we have time to
10:28:15  <contrahax>look i wrote my ideal piece of glue that does what i want to do and i published it so other people can make use of it
10:28:23  <contrahax>all of the pieces were published too
10:28:45  <contrahax>whats wrong about open sourcing the glue so people dont have to rewrite it 100 times?
10:28:50  * dypsilon_joined
10:29:08  <phated>contrahax: the orchestrator stuff wasn't in your original
10:29:20  <phated>i think we can gut that
10:29:25  <phated>and go with JS
10:29:30  <phated>i am going to work on it
10:29:32  <Raynos>there isn't much wrong with the glue
10:29:56  <contrahax>phated my original run was function(){ tasks[name](); }
10:30:11  <phated>contrahax: yup
10:30:19  <phated>robrich wanted dep stuff
10:30:27  <funkytek>rob had a lot of complexity to deal with
10:30:40  <funkytek>afaik about the builds he's doing
10:30:41  <Raynos>im just not sure whether streams of vinyl file objects is neccessary
10:31:22  <contrahax>this has to be the most hostile group of developers ive ever met
10:31:33  <contrahax>if you didnt make it then it sucks
10:31:40  <Raynos>...
10:32:06  <Raynos>> gulp is cool. I want our company to get off grunt and im happy to move to gulp because its really not that bad. im just being an opinionated dick
10:32:23  <phated>contrahax: i don't think Raynos is being hostile
10:32:32  <phated>i am pretty sure he is trying to bikeshed vinyl
10:32:46  <Raynos>im not trying to bikeshed vinyl per se
10:32:48  <contrahax>pretty disappointed
10:32:54  <substack>contrahax: so for some context
10:32:59  <substack>node has had this kind of thing before
10:33:04  <substack>if you look at connect for example
10:33:09  <substack>the api is *really* simple
10:33:13  <substack>(req, res, next)
10:33:14  <Raynos>I'm trying to figure out whether gulp plugins can be used more easily outside of `gulp.src` and `gulp.dest`
10:33:36  <substack>but it created a huge silo of modules that could only be used by people who bought into that pattern
10:33:41  <Raynos>if there are easy changes that can be made to vinyl / streams of vinyl objects / gulp plugins
10:33:54  <substack>and there are more examples, like promises
10:33:55  <Raynos>that make gulp plugins easier to use without .src & .dest glue
10:33:57  <substack>that create schisms
10:33:58  <Raynos>then win everywhere
10:34:20  * _pidjoined
10:35:08  <substack>I think it would be best if there wasn't even such a thing as a "gulp plugin"
10:35:15  <floatdrop>Raynos yes, they can
10:35:18  <Raynos>contrahax: Also I really like glob-stream and glob-watcher
10:36:46  <contrahax>phated i think most people want dep stuff
10:36:51  <substack>but merely modules on npm that happened to work well with the gulp APIs
10:37:02  <phated>contrahax: can't that be handled by a module?
10:37:15  <phated>contrahax: also, we can discuss that in #gulpjs
10:37:21  <contrahax>Raynos if you write a vinyl object to a plugin you can use it
10:37:30  <contrahax>you dont need gulp at all just vinyl
10:37:45  <phated>contrahax: do you even need a vinyl object? or just vinyl-like
10:37:54  <contrahax>vinyl-like
10:37:57  <contrahax>depending on what the plugin uses
10:38:03  <phated>most modules only use 1 property on a vinyl-like object
10:38:08  <Raynos>contrahax: I think 50% of gulp plugins would work with streams of streams of buffers instead of streams of vinyl objects
10:38:13  <phated>so it doesn't always need to be vinyl-like
10:38:21  <Raynos>a vinyl object is a stream of buffers with file meta data
10:38:39  <contrahax>Raynos the other 50% matters too though
10:38:43  <Raynos>of course you will have a lot of fake streams that are really just a single buffer in a stream
10:38:58  <substack>Raynos, contrahax: or module.exports = function (file) { return stream }
10:39:04  <substack>also
10:39:07  <Raynos>contrahax: the other 50% can read meta data from arguments to plugin function or from meta data that .src & .dest put on the stream and pass it through
10:39:13  <substack>different api signatures for different kinds of tools
10:39:28  <substack>trying to shoe-horn everything into vinyl streams is not a good idea
10:39:30  <Raynos>that way half the plugins work without vinyl and the other half require vinyl.src and vinyl.dest to manage and pass through meta data
10:39:32  <contrahax>substack you just described a gulp plugin
10:39:46  <substack>contrahax: `stream` should be a text stream
10:39:48  <substack>not a weird stream
10:40:09  <phated>Raynos: wouldn't that be better abstracted into an API, like vinyl, so people know what properties should be available, instead of might be available?
10:40:16  * indexzeroquit (Quit: indexzero)
10:40:17  <contrahax>Raynos once again it boils down to complexity as a user and as a plugin developer
10:40:22  <Raynos>phated: yes
10:40:41  <Raynos>contrahax: good point, I'm comfortable with added plugin developer complexity to reduce npm user complexity
10:40:41  <contrahax>having a bunch of different types of streams in the stack and having to write your own glue code for compatibility is not good
10:40:57  <Raynos>i wouldnt want any gulp user complexity, shouldn't be needed
10:41:11  <Raynos>but im not optimizing for "authoring plugins is easy"
10:41:34  <contrahax>when you have to create an ecosystem from 0 then you want to optimize for making plugins easy
10:41:39  <Raynos>phated: yes it should be in vinyl.
10:42:12  <Raynos>contrahax: that sounds like "optimize for a good solution" vs "optimize for a popular solution"
10:42:23  * cpupjoined
10:42:24  <contrahax>its the same thing though
10:42:34  <contrahax>if you dont have any plugins its not a good solution
10:42:44  <contrahax>nobody wants to write all of their own plugins
10:42:56  <Raynos>if its good they will come
10:43:00  <Raynos>also fffff
10:43:01  <Raynos>3am.
10:43:06  <Raynos>sorry >_<
10:43:21  <contrahax>i made something i wanted to use thats the bottom line
10:43:31  <contrahax>anything more complicated than where gulp is right now is something i wouldnt want to use
10:43:56  <contrahax>whats the point in making something you dont want to use just so people like substack dont trash on it
10:45:17  <Raynos>contrahax: I actually think my ideas would make gulp less complex
10:45:46  <Raynos>http://www.infoq.com/presentations/Simple-Made-Easy
10:45:48  <contrahax>Raynos im interested in making it less complex but im not going to make it more difficult for the sake of correctness
10:45:55  <Raynos>sacrifice some easy for more simplicity
10:46:05  <funkytek>raynos: so let's switch to clojure
10:46:09  <Raynos>no
10:46:10  <Raynos>thats stupid
10:46:13  <contrahax>if i had to make an abstraction to create a simple layer on top of the existing npm ecosystem what does that say about the state of modules
10:46:23  <funkytek>clojure is way simpler than js
10:46:32  <Raynos>funkytek: agreed but out of scope
10:46:33  <funkytek>js is just easier
10:46:34  <substack>contrahax: but you didn't have to, you just did anyways
10:46:34  * cpupquit (Ping timeout: 246 seconds)
10:46:49  <funkytek>so you are sacrificing the simplicity of lisp for the ease of js #lazy
10:46:56  <substack>contrahax: you could have just used text streams and those are compatible with a huge amount of modules already
10:47:35  <phated>does gulp stop you from using regular streams? i am confused
10:47:59  <contrahax>substack not any modules people care about
10:48:10  <contrahax>please find me a streaming language transpiler
10:48:28  <substack>contrahax: every browserify transform
10:48:35  <contrahax>believe it or not most build oriented modules were built with grunt in mind
10:48:38  <substack>which you can actually use outside of browserify itself
10:48:41  <contrahax>nobody is going to switch to streaming overnight
10:48:41  <substack>and people do that
10:49:11  <phated>i feel so bad for people that use browserify transforms, that is such a silo
10:49:28  <Raynos>contrahax: So all I have to do is rewrite gulp without vinyl, it might be possible
10:49:35  <contrahax>just adding a streaming option to gulp created tons of open issues all over the place to add streaming support to modules
10:49:39  <substack>phated: they are vanilla function (file) { return textStream }
10:49:54  <substack>gulp plugins are function (file) { return kookyMagicObjectStream }
10:49:57  <contrahax>when more modules support streaming maybe we wont even need gulp
10:49:59  <substack>that's the huge difference
10:49:59  <contrahax>thats not the case though
10:50:11  <phated>that doesn't sounds like a transpiler, that sounds like a string manipulation function
10:50:13  <contrahax>{contents, path} wow such magic
10:50:17  * cpupjoined
10:50:24  * coderzachjoined
10:50:33  <contrahax>i think i just got cursed by all the magic plz help
10:50:51  <Raynos>contrahax: (req, res, cb) vs (req, res, next)
10:50:58  * phatedcasts Alohomora on contrahax
10:51:02  <funkytek>https://twitter.com/addyosmani/status/420870024379637760
10:51:06  <Raynos>contrahax: stream vs { contents: stream, path, String }
10:51:13  <substack>if you got rid of vinyl gulp would be so much better
10:51:20  <Raynos>that small difference actually hurts composability a large amount
10:52:24  <contrahax>substack vinyl is a stopgap until the ecosystem matures
10:52:26  <phated>Raynos: do you have split personalities because you were just saying it should be wrapped in an API like vinyl
10:52:41  * freeall_quit (Quit: Leaving...)
10:52:46  <contrahax>you might think there are a lot of streaming modules but the reality is that most of them were created by 4 or 5 people
10:52:48  <Raynos>phated: no I'm just thinking about it harder and think I can do it with just streams
10:52:51  <contrahax>nobody else makes streaming modules
10:53:18  <contrahax>if everything was buffer transformations i would be ecstatic
10:53:20  <Raynos>s/created by 4 or 5 people/created by substack, raynos, dominictarr, max ogden, juliangruber/
10:53:53  <Raynos>that means we are the people being narrow minded ?
10:54:03  <substack>a huge number of people use and publish stream modules
10:54:05  <phated>Raynos: and you have to admit that those modules only solve your narrow use cases
10:54:21  <substack>modules *should* solve narrow use cases
10:54:41  <phated>substack: you read that in a strange way
10:55:08  <phated>substack: if you 5 people are the only people writing streaming modules, only your use cases are covered
10:55:09  <contrahax>lets take a look at some gulp plugins http://gratimax.github.io/search-gulp-plugins/
10:55:11  <phated>not JS at larse
10:55:14  <phated>large*
10:55:21  <contrahax>coffee, jshint, uglify, less
10:55:25  <contrahax>anyone have streaming versions?
10:55:33  * coderzachquit (Ping timeout: 272 seconds)
10:55:42  <contrahax>thats 4 of the top 7 modules
10:55:53  <substack>contrahax: http://npmjs.org/package/coffeeify
10:56:06  <contrahax>handlebars, sass, jade, csso, stylus
10:56:07  * cpupquit (Ping timeout: 260 seconds)
10:56:20  <contrahax>substack youre creating a silo by wrapping these modules
10:56:24  <substack>https://npmjs.org/package/lessify
10:56:25  <dashed>coffeeify is broken btw
10:56:31  <substack>dashed: I don't maintain it.
10:56:35  <dashed>i know
10:57:00  <substack>contrahax: and instead of using those plugins, you invented your own silo!
10:57:09  <substack>and only because of vinyl
10:57:12  <contrahax>substack what is this "stream" thing? youre creating a silo by forcing your opinion of text streams on people
10:57:27  <contrahax>having no file metadata is fine when you are concating everything at the end
10:57:30  <phated>substack: you mean a silo where someone is maintaining a module, that you just admitted to not maintaining?
10:57:38  <contrahax>when you need to know where things came from so you can figure out where they go at the end its a little different
10:57:41  <substack>phated: somebody else maintains it
10:57:44  <Raynos>phated, contrahax, funkytek: thanks for helping me understand gulp, It's got some really cool stuff! I'm out.
10:57:54  <phated>Raynos: thanks for listening
10:57:55  <funkytek>Raynos pz
10:58:00  <phated>Raynos: and having an open mind
10:58:04  <contrahax>cya Raynos
10:58:07  <phated>Raynos: sleep well
10:58:32  <substack>contrahax: node core already invented text streams
10:58:44  <substack>surely text streams are more vanilla than vinyl streams
10:59:03  <contrahax>substack all of your arguments boil down to "well i did the same thing for X narrow use case and didnt need an abstraction!"
10:59:38  <substack>ok so I really take issue with this: < contrahax> when you need to know where things came from so you can figure out where they go at the end its a little different
10:59:52  <substack>what makes streams so magical is that kind of thing shouldn't matter
10:59:59  <substack>that makes them reusable
11:00:04  <substack>it doesn't matter for example in unix
11:00:25  <substack>whether stdin is coming from somebody at a keyboard or from the output of another program
11:00:32  <contrahax>so i manually hardcore all of my file paths in
11:00:46  <contrahax>when you write back to disk how do you know what file name to use
11:00:51  <contrahax>if you have no file meta info
11:00:58  <substack>you don't
11:01:07  <contrahax>just answer that questions without creating a wrapper object
11:01:20  <substack>you think about it a little bit and then you use a different approach more suited to the abstraction
11:01:22  <contrahax>so i hardcode all of my paths in?
11:01:33  <contrahax>whats your solution
11:01:37  <substack>you don't write back to disk
11:01:45  <contrahax>lol
11:01:45  <substack>that's not what streams are about
11:01:47  <phated>disks don't exist
11:01:51  <substack>you write back at the very end
11:01:51  <phated>they are an illusion
11:01:51  <contrahax>youre living in a fantasy land
11:01:54  <mmalecki>as an excercise: try adding a binary to all your streams
11:01:54  <phated>everything in ram
11:02:00  <substack>a | b | c > output.txt
11:02:15  <contrahax>i have multiple streams of text, how do i know where to put them if i dont know what the name of them was at the beginning
11:02:40  <substack>contrahax: if you have multiple streams of text, then you should have multiple pipelines
11:02:45  <contrahax>how does a plugin rename the file
11:02:46  <phated>contrahax: based on all of substack's stuff that i have seen, he shoves everything into one file
11:02:55  <contrahax>if it has no access to the path
11:02:56  <substack>a | b | c > output1.txt; x | y | z > output2.txt
11:03:06  <contrahax>so i create a new pipeline for every file in a folder
11:03:16  <substack>contrahax: you don't. Plugins shouldn't be renaming files. Use a module for that.
11:03:17  <phated>a | b | c > a | b | c
11:03:17  <contrahax>thats great if all you do is shove shit into one file
11:03:30  <substack>or fs.rename() is a good one
11:03:44  <substack>phated: that's not how unix pipelines work
11:03:56  <contrahax>substack how do i take a folder (lets say a, b, and c.coffee) pipe them through a coffee compiler then back out to a new folder
11:04:01  <contrahax>without retaining any meta info
11:04:19  <mmalecki>contrahax: you can't really. you need multiple pipelines
11:04:29  <substack>contrahax: you run a program that runs a transform on each file and shuffles it off to an output directory
11:04:31  <contrahax>your argument is totally invalid because you keep shoving everything into the use case of just concating all files at the end
11:04:33  <mmalecki>like `find`
11:04:33  <substack>like tar is a good example
11:05:01  <mmalecki>substack: I think contrahax wants parallel without putting them together at the end
11:05:15  <contrahax>mmalecki the thing at the end still needs to know the path though
11:05:18  <substack>mmalecki: and pipes aren't *for* this kind of thing
11:05:34  <mmalecki>substack: they kind of are tho
11:05:45  <mmalecki>coffee < app.coffee > app.js
11:06:06  <contrahax>substack if you make a better build system that is more pure i will delete the gulp repo and switch to yours
11:06:24  <contrahax>and ill tell everyone you were right and how awesome you were
11:06:39  <contrahax>ill quit my job and become an anarchist and live in the woods
11:06:58  <contrahax>its easy to sit around and debate purity when you have no alternatives
11:07:38  <substack>mmalecki: tar has a cool thing you can do https://raw.github.com/substack/stream-adventure/master/problems/secretz/extra.sh
11:07:45  <substack>--to-command
11:07:49  <mmalecki>contrahax: as to answer your question re many files in directory, pseudo-bash: `find -R . -exec coffee {} > {}`
11:07:52  <mmalecki>or something
11:07:57  <mmalecki>\; at the end
11:08:02  <mmalecki>whatever the `find` syntax is
11:08:03  <substack>contrahax: no alternatives? I have written *at length* about the alternative approach I use
11:08:26  <substack>contrahax: http://substack.net/task_automation_with_npm_run and https://gist.github.com/substack/7819530 and most recently https://gist.github.com/substack/8313379
11:08:48  <phated>my favorite task automation with npm run is "gulp"
11:08:56  <phated>so nice
11:09:10  <substack>phated: contrahax just accused me of not providing alternatives
11:09:20  <substack>for what I'm advocating
11:09:23  <phated>he didn't say alternatives
11:09:28  <phated>he said make a better gulp
11:09:32  <phated>using text streams
11:09:36  <substack>11:06 < contrahax> its easy to sit around and debate purity when you have no alternatives
11:09:39  <phated>that handle all the use cases
11:09:51  <substack>bash already exists
11:09:54  <substack>why would I do that
11:09:58  <phated>so does ant
11:10:15  <phated>substack: should software never evolve?
11:10:23  <phated>substack: all software is already created?
11:10:42  <phated>substack: node.js wasn't already created 10 years ago
11:10:47  <phated>substack: i confused
11:11:02  * contrahaxquit (Ping timeout: 240 seconds)
11:11:17  <mmalecki>phated: it's just that some tools are enough for some jobs
11:11:20  <substack>I would rather use tools where I have more freedom to recombine the pieces in ways that the authors didn't intend
11:11:31  <mmalecki>like, bash is enough to run a command
11:11:36  <substack>and yes, npm run and bash are really good for most of the kinds of problems I run into
11:11:38  <mmalecki>you don't need grunt to do that
11:11:43  <phated>i have lots of commands
11:11:52  * cpupjoined
11:11:55  <phated>i did a project where i put stuff in npm run
11:12:00  <mmalecki>just pick the right tool for the right job and it'll be okay
11:12:05  <phated>the string was like 500 characters long
11:12:14  <phated>unmaintainable
11:12:21  * contrahaxjoined
11:12:25  <substack>phated: you can put the long lines in a bin/ directory
11:12:26  <phated>that was using the right tool for each job
11:12:33  <substack>nobody is forcing you to inline every one of your commands
11:12:37  <contrahax>wow i dced...
11:12:49  <substack>you can also write javascript programs, no need to use bash necessarily
11:13:02  <funkytek>substack: of course but you're not the use case for gulp, but that doesn't make it invalid ...task.js is not a good solution for everyone
11:13:02  <phated>i write JS, with deps
11:13:05  <mmalecki>use COBOL for your build stuff
11:13:07  <phated>gulp is one of the deps
11:13:15  <phated>i use java for my build stuff
11:13:21  <phated>gradle is so great
11:13:25  <phated>gradle4lyfe
11:13:37  * mmaleckihad to do that recently
11:13:43  <mmalecki>well, use it
11:13:49  <funkytek>task.js approach is too much wheel-reinvention for your avg app dev who is productivity focused
11:13:57  <substack>funkytek: nothing is a good solution for everyone
11:14:03  <funkytek>exactly
11:14:07  <substack>including gulp
11:14:08  <funkytek>doesn't make the approach invalid
11:14:10  <contrahax>exactly
11:14:11  <funkytek>not saying it is
11:14:13  <mmalecki>^ I think should be a consensus
11:14:15  <phated>make the solution that works for you
11:14:18  <contrahax>gulp is geared towards novices or people who value their time
11:14:20  <phated>learn from others
11:14:30  <phated>don't shit on other people
11:14:34  <contrahax>nobody said gulp is the greatest thing since sliced bread
11:14:36  <phated>to make yourself feel better or look better
11:14:47  <funkytek>so i would amend what contra said to purity can't be achieved for people who are productivity focused, in a hurry, or newb
11:15:11  <phated>the thing that gulp is providing to the community?
11:15:23  <substack>but I really think this vinyl thing is going to be a huge trainwreck in the future
11:15:24  <phated>look at all the posts saying how horrible grunt it
11:15:28  <phated>grunt is*
11:15:33  <contrahax>substack its a stopgap
11:15:47  <contrahax>like ive said 100 times its to smooth over the npm ecosystem which is really rough right now
11:16:00  <contrahax>if all node modules supported streams well we wouldnt need a lot of stuff
11:16:02  <phated>contrahax: i would like to see an upgrade path in a roadmap
11:16:10  <phated>for vinyl
11:16:11  * cpupquit (Ping timeout: 260 seconds)
11:16:18  <contrahax>phated in what way
11:16:24  <funkytek>as i said earlier, gulp is a better, more vanilla, code vs config alternative to grunt, you can't say that comparisons aren't valid when a huge % of app devs use grunt
11:16:30  <phated>like, how does gulp switch off vinyl if everything becomes streams
11:16:33  <contrahax>gulp will always use vinyl
11:16:43  <phated>ok
11:16:49  <contrahax>once everything becomes streams you wont need gulp, but the pieces of gulp will be useful
11:16:54  <phated>ok
11:16:56  <contrahax>somebody will make a new system out of the pieces
11:17:00  <substack>but you don't need gulp right now...
11:17:05  <phated>i've already considered it :P
11:17:11  <contrahax>substack yeah you dont need anything
11:17:13  <phated>but that's not my problem space
11:17:17  <funkytek>if you don't build apps
11:17:27  <contrahax>lets write everything in assembly because C is a useless abstraction
11:17:35  <funkytek>then you can walden-lake with your js
11:17:37  <phated>10100000100011111
11:17:53  <substack>well I mean what does gulp specifically do that there aren't good npm modules for right now?
11:18:01  <funkytek>if you build complex, full-stack apps, and don't want to reinvent wheels it saves you time
11:18:07  <funkytek>gulp specifically saves you time
11:18:11  <funkytek>while writing apps
11:18:28  <contrahax>substack youre just trashing for no reason at this point
11:18:38  <contrahax>im exiting this convo its not going anywhere
11:18:46  <phated>substack: i would say that gulp did glob-stream
11:18:51  <phated>substack: it didn't exist
11:18:54  <phated>so contrahax made it
11:18:55  <funkytek>gulp specifically saves you time, if you have a use-case for it
11:18:56  <funkytek>that's it
11:18:57  <phated>for gulp
11:19:01  <dashed>contrahax: http://vimeo.com/71278954
11:19:01  <contrahax>substack your hostility to opposing ideas loses you a lot of respect
11:19:03  <dashed>xD
11:19:20  <funkytek>at the end of the day it's just a build system we work on all kinds of other interesting things
11:19:45  <substack>contrahax: please stop tone policing
11:19:54  <dashed>no the end of the day, it's w.e that's useful to you and get things whether it be grunt or gulp or w.e
11:19:59  <funkytek>but to answer your question substack: it's a time saver if the use-case is there
11:20:13  <contrahax>just saying that trashing on people you dont know is not a good way to have a constructive conversation
11:20:14  <funkytek>you don't have the use case for it that's fine
11:20:22  <funkytek>some people have the use case
11:20:23  <phated>the funny thing is...i think substack would be less hostile if he wouldn't have seen gulp-browserify on that js news site
11:20:44  <phated>gulp works awesome with browserify out of the box
11:20:49  <rowbit1>substack, pkrumins: Encoders down: (free7)
11:20:52  <funkytek>either way the project is valid, the task.js approach is valid, neither are right choice 100% of the time
11:20:52  <phated>no need for a plugin
11:21:07  <substack>phated: ding ding ding ding ding
11:21:16  <dashed>phated: no it doesn't =[
11:21:42  <phated>substack: what are your thoughts on me adding a plain browserify example to the cookbook?
11:21:48  <substack>contrahax: I don't know where you get this idea of "trashing" on people?
11:22:13  <substack>I think you are taking the software you have written too personally or something.
11:22:18  <substack>I shit on modules ALL DAY LONG
11:22:20  <substack>you have no idea
11:22:47  <substack>we can't have a productive conversation otherwise
11:23:05  <substack>phated: that would be really good I think
11:23:07  <contrahax>this hasnt been a productive conversation though - you still havent proposed any real pragmatic alternatives
11:23:10  <rowbit1>Hourly usage stats: [developer: 0, free: 35]
11:23:13  <substack>or just more plain examples period
11:23:16  * freealljoined
11:23:28  <substack>from the outside it seems like gulp just invented its own everything grunt-style and wrapped it all up in .pipe()
11:23:38  <contrahax>thats not what was intended
11:23:40  <phated>substack: i have been planning to write plain js examples, but i got wrapped up in a contract
11:23:41  <substack>especially with shit like gulp-browserify
11:23:56  <contrahax>we cant police the modules being made substack
11:23:58  <phated>substack: i will try to find some time to write the plain browserify example tomorrow
11:24:01  * indexzerojoined
11:24:09  <phated>contrahax: we can promote good patterns though
11:24:10  <contrahax>i said very clearly all over the place to not make modules for things that shouldnt be
11:24:13  <phated>through the readme and wiki
11:24:18  <contrahax>phated i have strict guidelines already
11:24:29  <contrahax>i always open issues on plugins i think dont belong
11:24:34  <substack>contrahax: I don't think guidelines will be effective
11:24:40  <substack>http://blog.izs.me/post/69091089622/the-hazards-of-consensus
11:24:44  <contrahax>substack i dont run a module dictatorship
11:24:59  <phated>substack: the plan is to make the search filter based on the guidelines/test suite
11:25:04  <contrahax>if somebody makes a shitty module and writes a blog post about it + your thing i dont immediately hate on your thing
11:25:11  <phated>if you don't conform, you don't display
11:25:16  <substack>contrahax: and I don't even know what kind of terrible things people have written on top of browserify
11:25:21  <substack>I also have 0 control over those
11:25:38  <contrahax>would you blame browserify then?
11:25:44  <substack>maybe
11:25:57  <phated>probably not though
11:26:02  <phated>software is infallible
11:26:13  <substack>if it had certain qualities that promoted poor practices, then definitely
11:26:16  <phated>the people that write it are totally fallible though
11:26:26  <phated>substack: but that is subjective
11:27:02  <contrahax>https://github.com/gulpjs/gulp/wiki/Writing-a-Plugin:-Guidelines
11:27:33  * freeallquit (Ping timeout: 252 seconds)
11:27:38  <phated>substack: i will start working on my plain JS examples for the wiki and possibly the readme if contra wants to accept a PR
11:27:50  <phated>but I am exhausted, so I must sleep
11:27:59  <contrahax>phated where it makes sense sure
11:30:17  * phatedquit (Remote host closed the connection)
11:34:29  * dominictarrjoined
11:36:02  * floatdropquit (Quit: Textual IRC Client: www.textualapp.com)
11:36:06  * freealljoined
11:51:10  * coderzachjoined
11:55:52  * coderzachquit (Ping timeout: 252 seconds)
12:01:04  * freeallquit (Quit: Leaving...)
12:01:14  * dashedquit (Quit: Page closed)
12:07:58  * cpupjoined
12:16:25  * freealljoined
12:18:58  * dominictarrquit (Ping timeout: 252 seconds)
12:22:01  * yorickjoined
12:23:10  <rowbit1>Hourly usage stats: [developer: 0, free: 63]
12:25:40  * fallsemojoined
12:26:01  * mafintoshjoined
12:29:59  * cpupquit (Ping timeout: 252 seconds)
12:33:58  * cpupjoined
12:41:44  * fronxjoined
12:45:29  <timoxley>Domenic_: I'm happy to cease trawling through the npm issues if you think I'm being too trigger happy with requesting closes for old issues
12:46:32  * funkytekquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
12:51:51  * coderzachjoined
12:53:15  * freeallquit (Quit: Leaving...)
12:55:14  * freealljoined
12:56:23  * coderzachquit (Ping timeout: 265 seconds)
12:58:57  * fronxquit (Remote host closed the connection)
13:09:11  * cpupquit (Ping timeout: 272 seconds)
13:11:06  * pgtequit (Remote host closed the connection)
13:15:05  * fallsemoquit (Ping timeout: 252 seconds)
13:16:23  * fallsemojoined
13:20:50  * thlorenzjoined
13:21:57  * fallsemoquit (Quit: Leaving.)
13:22:51  * cpupjoined
13:23:10  <rowbit1>Hourly usage stats: [developer: 0, free: 77]
13:27:12  * cpupquit (Ping timeout: 253 seconds)
13:28:29  * cpupjoined
13:33:37  * fallsemojoined
13:38:26  * cpupquit (Ping timeout: 265 seconds)
13:39:02  * cpupjoined
13:42:50  * pgtejoined
13:45:20  <rowbit1>substack, pkrumins: These encoders are STILL down:,,
13:47:12  * AvianFlujoined
13:47:31  * pgtequit (Read error: Operation timed out)
13:52:37  * coderzachjoined
13:56:54  * coderzachquit (Ping timeout: 252 seconds)
14:01:03  * pgtejoined
14:07:47  * fallsemoquit (Ping timeout: 252 seconds)
14:11:59  * fallsemojoined
14:21:07  * fallsemoquit (Ping timeout: 252 seconds)
14:21:29  * Maciek416joined
14:23:10  <rowbit1>Hourly usage stats: [developer: 0, free: 33]
14:23:39  * pgtequit (Remote host closed the connection)
14:24:50  * fallsemojoined
14:33:31  * fallsemoquit (Quit: Leaving.)
14:40:21  * Maciek416quit (*.net *.split)
14:40:21  * sorensenquit (*.net *.split)
14:41:58  * pgtejoined
14:43:05  * Maciek416joined
14:43:05  * sorensenjoined
14:46:50  * AvianFluquit (Ping timeout: 252 seconds)
14:53:23  * coderzachjoined
14:56:15  * fronxjoined
14:57:42  * indexzeroquit (Quit: indexzero)
14:57:50  * coderzachquit (Ping timeout: 252 seconds)
14:59:05  * pgtequit (Remote host closed the connection)
15:00:05  * pgtejoined
15:02:17  * brianloveswordsquit (Excess Flood)
15:03:32  * brianloveswordsjoined
15:14:16  * fallsemojoined
15:14:18  * dguttmanjoined
15:23:10  <rowbit1>Hourly usage stats: [developer: 0, free: 47]
15:30:52  * phatedjoined
15:35:32  * phatedquit (Ping timeout: 245 seconds)
15:37:50  <rowbit1>substack, pkrumins: A developer is waiting in the queue for firefox/25.0
15:38:46  * pfrazejoined
15:43:42  * fronxquit (Remote host closed the connection)
15:46:38  * fronxjoined
15:52:03  <Domenic_>timoxley: maybe a little... perhaps "is this still a problem?" instead of "can you close this?"
15:52:28  <Domenic_>also, if there really doesn't seem to have been any resolution of the issue, it shouldn't be requested closed, or requested moved elsewhere, or whatever. if it's an open issue, it's an open issue.
15:54:06  * coderzachjoined
15:54:48  * pgtequit (Remote host closed the connection)
15:56:52  <timoxley>Domenic_: sure thing
15:57:34  <Domenic_>timoxley: it's good to clean up :). it's just, it sometimes seems like you're trying to get the numbers down above all else.
15:58:27  * coderzachquit (Ping timeout: 245 seconds)
15:58:52  <timoxley>the approach I'm taking is – scan for duplicates, ask the original poster if it's still an issue and hint that it should be closed if they aren't having the issue anymore
16:00:33  <timoxley>Domenic_: npm should err on the side of closing issues given the magnitude of open issues
16:00:45  <timoxley>an open issue that never gets looked at isn't very valuable
16:00:53  * pgtejoined
16:02:25  * fallsemoquit (Quit: Leaving.)
16:02:39  <timoxley>also trying to find things that are easy to PR, many feature requests in there would make for trivial PRs
16:03:27  * fallsemojoined
16:04:23  <timoxley>also in many cases the issue kinda evolves to something else and would be served better with a fresh issue
16:04:30  * AvianFlujoined
16:06:24  <Domenic_>issues are looked at more than you know
16:06:43  <Domenic_>closing someone's issue is saying that it's not valid, which is inaccurate and mean
16:06:58  <Domenic_>npm should not err at all with regard to issues
16:14:19  <timoxley>Domenic_: ok what would you suggest be done with a stalled issue like this https://github.com/npm/npm/pull/2395
16:14:33  <Domenic_>Leave it open! It's still an issue.
16:14:38  <Domenic_>If someone can fix it, they should fix it.
16:14:43  <Domenic_>Until then, it's an open issue.
16:15:53  <jesusabdullah>crap too tired to read
16:16:35  <jesusabdullah>Domenic_ did you know I'm visiting your town? Flying in late tonight
16:16:43  <jesusabdullah>I'm scared what if NYC eats me?
16:16:43  * mikolalysenkojoined
16:16:48  <Domenic_>jesusabdullah: awesome!!
16:17:04  <jesusabdullah>What if I actually move again?
16:17:05  <jesusabdullah>D:
16:17:56  <thlorenz>defunctzombie: regarding that talk on zuul -- did you wanna do that at a local meetup or do you have a conference in mind?
16:18:10  <defunctzombie>thlorenz: probably local
16:18:32  <thlorenz>ah, cool
16:18:43  <defunctzombie>maybe one of the js or node meetups
16:18:49  <jesusabdullah>thlorenz: where do you live? goog map?
16:18:52  <jesusabdullah>Domenic_: what about you?
16:19:46  <thlorenz>jesusabdullah: https://www.google.com/maps/preview#!q=60th+street+and+2nd+ave&data=!4m15!2m14!1m13!1s0x89c258e63e26ea0f%3A0x493fea3600293bf7!3m8!1m3!1d16604!2d-73.9614135!3d40.7658915!3m2!1i1024!2i1055!4f13.1!4m2!3d40.7612335!4d-73.9638861
16:20:29  <jesusabdullah>thlorenz: I get a disambiguation :(
16:20:42  <jesusabdullah>thlorenz: brooklyn?
16:20:45  <thlorenz>what do you mean?
16:20:46  <thlorenz>hold on
16:21:09  <thlorenz>jesusabdullah: https://www.google.com/maps/preview#!q=60th+street+and+2nd+ave+manhattan%2C+NY&data=!4m15!2m14!1m13!1s0x89c258e63e26ea0f%3A0x493fea3600293bf7!3m8!1m3!1d4151!2d-73.9638861!3d40.7612335!3m2!1i1024!2i1055!4f13.1!4m2!3d40.7612335!4d-73.9638861
16:21:17  <thlorenz>hope that's less ambig
16:21:23  <jesusabdullah>aha, manhattan
16:21:32  <jesusabdullah>How much you pay a month?
16:21:45  <jesusabdullah>I just imagine everything in manhattan is like a jillion bucks a minute
16:21:47  <thlorenz>too much :)
16:23:10  <rowbit1>Hourly usage stats: [developer: 1, free: 63]
16:23:35  <jjjohnny>jesusabdullah: who ya interviewing?
16:24:28  * dguttmanquit (Quit: dguttman)
16:26:07  <jesusabdullah>jjjohnny: conde nast
16:32:30  * johnkpauljoined
16:33:05  <Domenic_>jesusabdullah: https://www.google.com/maps/preview#!q=110+3rd+Ave+New+York+NY&data=!4m15!2m14!1m13!1s0x89c2599ec34b450d%3A0x36bbbf25c2f0718a!3m8!1m3!1d397779!2d-73.979681!3d40.697488!3m2!1i1175!2i789!4f13.1!4m2!3d40.7329159!4d-73.9877015
16:33:14  <Domenic_>$1800/month with one roommate in a 1BR converted to 2BR
16:33:22  <Domenic_>wait $1900 it went up last year
16:34:42  <jesusabdullah>I pay $400/mo
16:34:47  <jesusabdullah>to put all this in perspective
16:35:50  <jesusabdullah>also both of you live pretty deep in the shit I'm mildly surprised
16:36:15  <defunctzombie>Domenic_: jesus
16:36:40  <defunctzombie>Domenic_: that's what you get for living in the east village
16:36:58  <jesusabdullah>defunctzombie: y tu?
16:37:00  * pgte_joined
16:37:21  * pgte_quit (Read error: Connection reset by peer)
16:37:25  <Domenic_>east village proper is cheaper, union square is more lux
16:37:46  * pgte_joined
16:37:51  <defunctzombie>haha
16:39:04  <thlorenz>defunctzombie: you live in NY as well right?
16:39:12  <defunctzombie>yep
16:39:16  <thlorenz>and you found some secret area with reasonable rent ?
16:39:22  <defunctzombie>2 avenues from columbus circle
16:39:26  <Domenic_>rent is totally worth it IMO
16:39:27  <defunctzombie>hahaha
16:39:38  <jesusabdullah>yeah but I only pay $400/mo
16:39:46  <jesusabdullah>and YOU DONT
16:39:51  * pgtequit (Ping timeout: 276 seconds)
16:39:55  <Domenic_>fraction of income is more relevant
16:40:00  <Domenic_>cost living adjustment etc.
16:40:24  <Domenic_>you're paying for the privilege of living in the greatest city on earth
16:40:30  <Domenic_>for the period of your life where that matters most
16:40:56  <jesusabdullah>why do new yorkers think new york is so great
16:41:21  <jesusabdullah>like, everyone I talk to says, "It sucks, I love it"
16:42:38  * pgte_quit (Read error: Connection reset by peer)
16:42:50  * pgtejoined
16:45:34  * pgtequit (Read error: Connection reset by peer)
16:47:30  <defunctzombie>I don't think it sucks
16:47:35  <defunctzombie>granted it is a bit cold right now :)
16:47:49  <defunctzombie>it is great because so many different types of people are here
16:48:09  * pgtejoined
16:49:32  * mafintoshquit (Quit: Leaving...)
16:52:29  * pgtequit (Read error: Connection reset by peer)
16:52:38  * pgtejoined
16:54:40  <Domenic_>you can do anything
16:54:45  <Domenic_>at any time, almost
16:54:52  <Domenic_>something is always open, or happening
16:54:53  * coderzachjoined
16:54:56  <Domenic_>every subculture is represented
16:55:25  <Domenic_>from high-flying suit-wearing lawyers to brooklyn hipsters to bands to ...
16:55:28  <jjjohnny>that doesn't mean you are a part of every sub culture
16:55:41  <jesusabdullah>yes.
16:55:54  <Domenic_>but you have the opportunity to take part in most of them
16:56:01  <Domenic_>and youcan interact with all of them
16:56:06  <jjjohnny>most most likely not
16:56:14  <jjjohnny>i doubt that as well
16:56:19  <Domenic_>you're just wrong then
16:56:42  <jesusabdullah>jjjohnny I've heard this from pretty much every new yorker I've talked to
16:56:50  <jesusabdullah>fwiw
16:56:57  <jjjohnny>jesusabdullah: its part of the progressive self assurance program
16:57:05  <jesusabdullah>yeah maybe lol
16:57:16  <jesusabdullah>compared to salt lake though? XD
16:57:30  <jesusabdullah>SLC closes by 9:00, also Sundays
16:58:38  <jjjohnny>Domenic_: for one, any subculture that is not of NYC is not represented in NYC. the spirit of some non-nyc culture is not going to be found in NYC
16:59:33  * coderzachquit (Ping timeout: 252 seconds)
17:00:32  <jjjohnny>Domenic_: second, for all the sub cultures that NYC does posess, if you did a quantitative analysis, I bet you would come "take part" in less than 5
17:02:13  <jjjohnny>unless by take part you mean eat at an ethnic restaurant, in which case maybe you "take part" of 7 or 8
17:02:18  * ednapiranhajoined
17:02:38  <jjjohnny>jesusabdullah: NYC has great energy, its true
17:03:02  <jjjohnny>and SLC is the capital of Mormon, which by comparison any city would fare well
17:04:36  <jesusabdullah>speaking of NYC
17:04:37  <jesusabdullah>hold on
17:05:21  <jesusabdullah>Last night, I learned that NYC slumlords wear funny hats. http://nypost.com/2014/01/07/slain-slumlord-fought-to-the-end-was-asphyxiated-in-kidnap-van/
17:07:11  <jesusabdullah>I'll bet money one of the L&O spinoffs airs a "ripped from the headlines" episode about this
17:07:57  <jjjohnny>basically, NYC has to bring the special pizazz so that the 1% of your time when you're not feeding the energy, and rents, of the city, you get a sense of being part of some grand meaningfulness
17:09:32  <jjjohnny>jesusabdullah: lol
17:09:51  <rowbit1>substack, pkrumins: Encoders down: (free8)
17:10:04  <defunctzombie>thlorenz: https://github.com/FriendCode/codebox?source=c
17:10:24  <defunctzombie>thlorenz: this could potentially be interesting cause you could open a url in one of their tabs
17:10:36  <defunctzombie>and run zuul tests in your current browser
17:10:43  <defunctzombie>alongside your code editor
17:11:09  <jesusabdullah>I wonder why that rabbi is so quick to support this dude
17:11:26  <jesusabdullah>I don't care how Jewish he was, he doesn't sound like someone a holy man would be upset about
17:11:37  <thlorenz>defunctzombie: yeah that's nice (I just don't like IDEs)
17:11:51  <defunctzombie>thlorenz: I agree, tho this one seems like more of a code editor
17:11:54  <defunctzombie>built on web tech
17:11:57  <thlorenz>but there is this terminal-in-devtools chrome extension as well which could work
17:12:21  <thlorenz>defunctzombie: I think livereload will be as useful
17:13:07  * shamajoined
17:13:14  * freeallquit (Quit: Leaving...)
17:15:21  <rowbit1>substack, pkrumins: These encoders are STILL down:
17:23:02  * pgtequit (Remote host closed the connection)
17:23:10  <rowbit1>Hourly usage stats: [developer: 0, free: 39]
17:24:54  * pgtejoined
17:26:45  * fronxquit (Remote host closed the connection)
17:28:43  * freealljoined
17:30:15  * marcello3djoined
17:32:24  <timoxley>Domenic_: do you know an `npm help` keyword that can reach https://github.com/npm/npm/blob/master/doc/misc/npm-config.md
17:38:38  * coderzachjoined
17:39:52  * intabulasjoined
17:41:29  <isaacs>timoxley: nope. there is none.
17:41:36  <isaacs>timoxley: you can do `man 7 npm-config`
17:41:47  <isaacs>timoxley: but yeah, that sucks
17:41:56  <isaacs>timoxley: npm help needs to take a section or something
17:42:05  * dguttmanjoined
17:42:20  <isaacs>timoxley: and the doc generator thingie needs to fill that in based on the npm-config(n) values
17:42:31  <isaacs>eg, 7 -> misc
17:42:55  <timoxley>isaacs: are there other docs that are unreachable?
17:43:04  <isaacs>those numbers are Unix man sections. so, for example, 1 is commands, 2 is libc, 3 is other api refs, 5 is files, 7 is misc
17:43:14  <isaacs>timoxley: well, probably any that are not in api or cli
17:43:34  <isaacs>timoxley: if there's a corresponding match in api or cli, that is
17:43:50  <isaacs>timoxley: so, npm help package.json will find the first match in doc/files
17:44:01  <isaacs>timoxley: er, in man/man5/
17:45:03  <timoxley>isaacs: perhaps a solution like `npm apihelp`?
17:45:06  <timoxley>or a rename?
17:45:20  <timoxley>isaacs: npm mischelp?
17:45:23  <timoxley>bleh
17:45:46  <isaacs>timoxley: no one knows about apihlep
17:45:56  <isaacs>timoxley: it'd be better to maybe have a second arg or something
17:46:02  <timoxley>agree
17:46:07  <isaacs>timoxley: like how you do `man <section> <name>`
17:46:15  <isaacs>timoxley: maybe `npm help misc config`
17:46:17  <isaacs>or something?
17:46:35  <isaacs>timoxley: and `npm help` could tell you which sections there were
17:46:53  <timoxley>isaacs: +1
17:46:56  <isaacs>timoxley: and `npm help config` would still search the list and find the first match, like how `man read` returns `man 1 read` rather than `man 2 read`
17:47:01  <isaacs>timoxley: patch welcome!
17:54:02  <timoxley>isaacs: logged https://github.com/npm/npm/issues/4443
17:55:51  * pgtequit (Remote host closed the connection)
17:59:53  * mikolalysenkoquit (Ping timeout: 272 seconds)
18:00:53  * chromakode_joined
18:02:35  * chromakode_quit (Client Quit)
18:07:59  * thlorenzquit (Remote host closed the connection)
18:08:59  * okyquit (Quit: Reconnecting)
18:09:06  * okyjoined
18:10:21  <rowbit1>substack, pkrumins: Encoders down: (free7)
18:11:03  <jesusabdullah>Oh, Domenic_ it sounds like we're going out for drinks friday night if you're interested <_>
18:11:26  <Domenic_>jesusabdullah: sounds awesome, send me a calendar invite maybe?
18:11:38  <jesusabdullah>uhhh
18:11:51  <jesusabdullah>Yeah idk any Exact Time (haven't thought that far ahead)
18:12:03  <jesusabdullah>idevenk where AvianFlu wants to go yet, he just said "in brooklyn"
18:12:39  <AvianFlu>we're gonna try to get a bunch of people together
18:12:46  <AvianFlu>there's no plan yet and it might not be in brooklyn
18:15:09  <jesusabdullah>Domenic_: ^^
18:15:22  <Domenic_>haha ok
18:15:22  <jesusabdullah>Domenic_: Once we have a time/place I'll calendar invite the shit out of you
18:15:34  <Domenic_>awesome, i'll be sure to not plan anything else
18:15:51  <rowbit1>substack, pkrumins: Encoders down: (dev-ie10-2)
18:17:55  * calvinfojoined
18:20:00  * fronxjoined
18:21:17  * anvaka_joined
18:23:10  <rowbit1>Daily usage stats: [developer: 115, free: 905]
18:23:10  <rowbit1>Hourly usage stats: [developer: 83, free: 24]
18:24:38  * fronxquit (Ping timeout: 252 seconds)
18:27:23  * enjaworkquit (Ping timeout: 252 seconds)
18:27:46  * enjaworkjoined
18:28:53  * coderzachquit (Remote host closed the connection)
18:31:02  * dypsilon_quit (Read error: Connection reset by peer)
18:32:42  * freeallquit (Quit: Leaving...)
18:38:15  * coderzachjoined
18:38:37  <Raynos>rent isnt that big of a deal
18:38:43  <Raynos>your paying for flexibility and pivoting
18:42:11  * phatedjoined
18:42:36  <timoxley>what kind of rent do people pay in NYC?
18:42:50  * ralphtheninjajoined
18:43:12  * AvianFluquit (Remote host closed the connection)
18:43:19  <timoxley>s/people/developers
18:46:14  <grncdr>timoxley: according to scrollback, just under $2k for living with a room-mate downtown...
18:46:43  * anvaka_quit (Remote host closed the connection)
18:46:46  <timoxley>wow, ok that's pretty cheap
18:47:00  <grncdr>!?
18:47:03  <grncdr>where do you live?
18:47:11  <grncdr>that sounds expensive as hell to me...
18:47:19  * peutetrequit (Quit: peutetre)
18:47:26  <Raynos>SF is around $2k for living with a roommate
18:47:54  <timoxley>Raynos: $2k each?
18:48:18  <grncdr>timoxley: I'm pretty sure it was $1900/each in NY...
18:48:24  <timoxley>ahh
18:48:33  * phatedquit (Ping timeout: 252 seconds)
18:48:33  <grncdr>but you'd have to ask Domenic_ he was the only person who gave a number
18:48:36  <timoxley>grncdr: yes, that's more normal
18:48:41  <Raynos>yes
18:48:42  <Raynos>2k each
18:48:47  * coderzachquit (Remote host closed the connection)
18:48:49  * pgtejoined
18:49:03  <timoxley>yep, that's roughly the same for singapore
18:49:23  <grncdr>so, I'm not like super-informed when it comes to American cities, but aren't SF and NY like the two highest rent cities in the country?
18:49:50  * AvianFlujoined
18:50:17  <grncdr>also I had no idea Singapore was that expensive
18:50:31  * contrahaxquit (Quit: Sleeping)
18:50:49  <timoxley>grncdr: anything under $4k a month is like filthy uni student accommodation
18:51:26  <timoxley>grncdr: you can get places for super cheap but they're not very nice
18:51:29  <grncdr>what's an average-ish dev salary there?
18:51:29  <timoxley>maybe I'ma snob
18:52:36  <grncdr>and other cost-of-living things like food/power/transport
18:53:11  <timoxley>grncdr: pretty average… I believe many devs are around $60-70k
18:53:23  <timoxley>grncdr: everything but rent is very cheap
18:53:48  <grncdr>hm, that's a neat/unusual scenario
18:53:49  <timoxley>you can get a great meal for $4
18:53:59  * pgtequit (Ping timeout: 260 seconds)
18:56:58  <jesusabdullah>why are you in singapore
18:57:48  <ogd>cause hes singarich
18:58:05  <grncdr>badum-tsch
19:00:16  <timoxley>jesusabdullah: trying living something different. met a girl.
19:02:01  <timoxley>ogd: haha not exactly
19:02:13  <timoxley>at all
19:03:15  <timoxley>jesusabdullah: asia is weird. getting amongst it.
19:07:40  * coderzachjoined
19:08:22  <jjjohnny>lol good one plt hulk
19:18:01  <jjjohnny>this blog post on macros in javascript almost made me turn up my eggs and potatoes
19:19:11  <grncdr>why?
19:20:19  * indexzerojoined
19:21:00  <jjjohnny>looks like coffeescript, and the examples look like "how to do something in 10 lines that should only take 1"
19:22:31  <grncdr>hm, yeah the examples are pretty weak
19:22:44  <grncdr>which is too bad, because he's actually written a bunch of really useful macros
19:22:48  <jjjohnny>and appears to add some syntax, but maybe that is CS
19:22:51  <grncdr>that implement a ton of ES6 features
19:23:02  <grncdr>there is no CS in there...
19:23:10  <rowbit1>Hourly usage stats: [developer: 5, free: 27]
19:23:11  <grncdr>unless you mean COMPUTER SCIENCE ;)
19:23:20  <jjjohnny>its not coffeescript?
19:23:24  <grncdr>no
19:23:37  <grncdr>sweet.js is not coffeescript
19:24:19  <jjjohnny>does any of ES6 actually improve JS performance?
19:24:25  <grncdr>does that matter?
19:24:31  <grncdr>:D
19:24:34  <jjjohnny>or is it a bunch of me-wants from the squeaky wheels?
19:25:22  <jjjohnny>if there is no perf improvement, then I have no reason to pay any of the new conventions any attention
19:26:12  <AvianFlu>jjjohnny: it's hard to judge the perf when the different VMs haven't implemented it all yet
19:26:20  <AvianFlu>v8 in particular might implement and then optimize it later
19:26:28  <AvianFlu>but like, who knows
19:26:59  <grncdr>expressivity, consistency and correctness matter to me as much or more than perf, but I'm not here to sell you on any of thtat
19:27:17  <grncdr>I was just curious what about the blog post was so upsetting
19:27:21  <jjjohnny>grncdr: programming is about as expressive as it gets
19:27:31  <grncdr>it seemed pretty innocuous to me
19:27:43  <grncdr>jjjohnny: what does that even mean?
19:27:46  <jjjohnny>grncdr: i was reporting actual feelings of stomach upturn
19:27:48  <grncdr>macros aren't programming?
19:29:12  <jjjohnny>grncdr: i mean that programming is expressive. what you do with programming is the expression
19:30:15  <jjjohnny>the way you write programs may be an expression as well, but who is your audience?
19:31:14  <grncdr>humans reading my code first, computers running it second
19:31:22  <jjjohnny>its not where I put my creativity, usually, unless I am creating a way to type less code
19:31:37  <jjjohnny>the computer does not care about your expressiveness
19:31:43  <grncdr>I know it doesn't
19:31:44  <grncdr>it's second
19:31:57  <grncdr>people do
19:32:02  * pgtejoined
19:32:31  <grncdr>people care very much about how code reads
19:32:52  <grncdr>macros allow you to create constructs that remove boilerplate and more clearly express intent
19:33:09  <grncdr>like HOF and other abstraction
19:33:33  <grncdr>the only difference is they operate in a preprocessing step
19:33:48  <jjjohnny>the humans would probably prefer to understand the code and how it works. using a sign that at first glance means "equal to or greater than" as a cute way assign expressions might be an unworthy trade
19:34:28  <grncdr>might be, but I posit you haven't given it much consideration
19:34:57  <grncdr>because you're reacting to very trivial things, the style and not the substance of the idea
19:35:09  <substack>I like it when some code is ugly.
19:35:17  <substack>some code *needs* to be ugly
19:35:21  <substack>because the problem is ugly
19:35:32  <grncdr>substack: ok?
19:35:35  <jjjohnny>i have given arrows a great deal of consideration over my life, and I have never liked monospace =>
19:35:47  <pfraze>jjjohnny, regarding ES6 changes, some of them are actually new features like weakmaps
19:36:10  <grncdr>to be clear, I'm not making the argument that code should read like some stilted english pseudo-prose
19:36:18  <grncdr>that's bs
19:36:26  <pfraze>I think macros just need to be explicitly imported
19:36:31  <jjjohnny>grncdr: my original question was whether ES6 was for style whiners or made real improvements to performance
19:36:58  <grncdr>right, and my response was that performance is not the sole dimension on which language changes are measured
19:37:00  <jjjohnny>it seems to be for style whiners, cuz since JS is everywhere, everybody want their code style in it
19:37:00  <pfraze>it can be confusing to have syntactical shifts, so as long as you can refer to them within the .js and find their definition...
19:37:04  <grncdr>see e.g. weakmaps
19:37:07  <spion>performance?
19:37:38  <grncdr>weakmaps aren't faster, they introduce new semantics to the language that are *very useful*
19:38:00  <spion>well, maybe tail call
19:38:09  <grncdr>spion: is tail call coming?
19:38:13  <pfraze>spion thatll be interesting - is it happening?
19:38:41  <pfraze>you're just a pattern-matching lib away from some erlang with that
19:38:50  <spion>I *think* so, yes
19:39:11  <pfraze>hope so
19:39:11  <grncdr>jjjohnny: my point is I was trying to understand what you didn't like about the macros article, and your response so far has been "I don't need these new things"
19:39:22  <jjjohnny>its like that poetry that seems to make arbitrary indentations to express something of the poets mind which is totally lost in the readers. there is auto-coginitive dissonance between every human that few humans tale for granted. that means, what you intend to express may be lost very easily, and more easily so if your and are speaking in different styles.
19:39:45  <grncdr>jjjohnny: well sure
19:39:49  <pfraze>jjjohnny, yes, but you're not considering the dynamics of the audience
19:40:05  <pfraze>your audience can learn new styles
19:40:09  <spion>also, arrows may be just syntax sugar, but they can really change the way you think about code :)
19:40:48  * DTrejojoined
19:41:37  <pfraze>I really just think it's about explicitness. If you imported the macros, there really wouldnt be an issue
19:41:45  <spion>i predict more use of higher order functions / combinators
19:41:52  <jjjohnny>grncdr: pfraze: i guess my point is that "expressiveness" in the code style will actually lead to "harder to understand" what the code does
19:42:16  <pfraze>jjjohnny: yeah that's a fair concern. I think that's a matter of craft though
19:42:18  <jjjohnny>in poetry, and in poetic things, this may be wanted
19:42:24  <timoxley>jjjohnny: engligh is harder to understand if you're used to chinese
19:42:32  <jjjohnny>in code, what is wanted is not the code
19:42:38  <grncdr>pfraze: have you checked if you do import macros with sweet.js? I haven't yet
19:42:47  <pfraze>grncdr: pretty sure you odnt
19:42:55  <grncdr>hm
19:43:02  <substack>one troubling thing I've seen is es6's embrace of class constructs and how in coffee script that lead hugely to class overuse
19:43:23  <substack>not that supporting a class keyword is inherently bad or anything
19:43:34  <substack>just that we should brace ourselves for an onslaught of over-engineering
19:43:38  <grncdr>substack: agreed, I really wish they had left that for the next revision
19:43:41  <timoxley>perhaps making classes "difficult" kinda encourages you to keep the design simple
19:43:49  * phatedjoined
19:43:53  <timoxley>flat
19:43:57  <pfraze>yeah Im not psyched about classes but hey
19:44:04  <spion>let on = f, g => (x, y) => f(g(x), g(y)); let property = name => object => object[name]; let compare = (a, b) => a < b ? -1 : a > b ? 1 : 0; someArray.sort(on(compare, property('age')))
19:44:08  <substack>timoxley: that seems to be how it plays out in node land
19:44:22  <grncdr>timoxley: I think I've said in the past that JS encouraged functional style by having an object system nobody really liked
19:44:45  <timoxley>haha that's a good observation
19:44:46  <spion>es6 encourages ALL the things!
19:44:48  <substack>I kind of like how js does objects
19:45:00  <grncdr>substack: me too, but most people don't
19:45:10  <grncdr>usually due to being used to a different system
19:45:19  <jjjohnny>i dont care insomuch as I don't have to change what I do. but now more JS code is going to be functionally illegible to me.
19:45:32  <jjjohnny>spion: like what you write there. functionally illegible
19:45:50  <jjjohnny>*wrote
19:46:10  <timoxley>jjjohnny: unfortunately over the next few years we're going to need to relearn everything we know about web dev
19:46:10  <jjjohnny>are those boobs or butts?
19:46:15  <grncdr>so the thing is, they come to JS and they're like "omg these objects are broken I can't figure them out" and end up writing simpler more functional code because of it
19:46:17  * ednapiranhaquit (Ping timeout: 272 seconds)
19:46:29  <grncdr>which is great in the long run
19:46:52  <jjjohnny>object in js are a beautifully functional construct
19:47:06  <spion>jjjohnny, they're just higher order functions written in a concise manner.
19:47:14  <spion>well, on and property are.
19:47:26  <pfraze>I'm not sure about function-composition syntax in JS. I'm thinking about eg mylist.reduce(reduceit).map(mapit), which does 2 iterations, rather than what you want and get with good functional langs (1 iteration)
19:48:04  <grncdr>pfraze: not sure about how to improve it?
19:48:21  <timoxley>pfraze: how do those langs do 1 iteration?
19:48:24  <grncdr>I liked gozala's reducible
19:48:40  <grncdr>timoxley: map-fusion in haskell is crazy
19:48:41  <pfraze>grncdr: just wondering if making function-composition syntactically possible is enough
19:48:50  <pfraze>or if it will trick you into ineffecient choices
19:48:51  <timoxley>pfraze: it still needs to read the elements for each step in transform
19:49:02  <spion>desugaring results with a more illegible thing imo. function on(f, g) { return function(x, y) { return f(g(x), g(y)); } }
19:49:09  <substack>doing OO with closure scope can also be pretty bad
19:49:17  <spion>vs let on = (f, g) => (x, y) => f(g(x), g(y));
19:49:27  <substack>like the style that crockford promotes
19:49:54  <substack>(function (window) { window.JSON = {}; JSON.stringify = ...; JSON.parse = ... })(this)
19:49:58  <substack>is silly
19:50:02  <pfraze>timoxley: haskell does a deal where it would run the reduce & map function sequentially on element, and the reduce would remove elements before getting to map
19:50:21  <pfraze>timoxley: has to do with lazy evaluation and thunkeroos
19:50:34  <timoxley>pfraze: js does that, e.g. if you do a arr.filter().map()
19:50:46  <grncdr>timoxley: no it doesn't
19:50:47  <pfraze>timoxley: yes, but in 2 iterations
19:50:52  * pgtequit (Remote host closed the connection)
19:50:56  <timoxley>uh?
19:51:06  <grncdr>timoxley: that creates an intermediate array
19:51:10  <timoxley>yes
19:51:12  <grncdr>then iterates it again
19:51:16  <grncdr>haskell doesn't
19:51:23  <timoxley>what's the difference
19:51:26  <grncdr>it makes maps/reduces etc. act more like streams in node
19:51:40  <timoxley>understood
19:51:43  <grncdr>:D
19:51:44  <pfraze>ah, interesting comparison
19:52:08  <spion>in ES6 arrays, generators and other collections will also be iterables
19:52:15  <spion>maybe engines could use that to optimize some of that chaining
19:52:15  <grncdr>so like element x get's fed from one stage to the next without having to start over again at the start of the list
19:52:16  <pfraze>if there's an area that sugaring would have fun with, node streams is it
19:52:16  <spion>hrm
19:52:54  <pfraze>describing stream structures
19:53:15  <timoxley>I recall dominictarr talking about designing a language with streams as first class objects
19:53:18  <spion>also, I think that mraleph mentioned that no, they haven't gotten to optimizing chains of map/reduce, but they're working on it
19:53:34  <timoxley>I wonder if he worked on that
19:53:49  <jjjohnny>grncdr: seems like that would be easy enough for a module to do mapreduce(array, map, reduce, x)
19:54:02  <jjjohnny>also, wtf is a generator
19:54:08  <grncdr>jjjohnny: yes it is easy to write
19:54:32  <grncdr>so easy that in other languages the compiler does it for you ;)
19:55:02  <timoxley>jjjohnny: generators are magic that disrupt the laws of javascript as you know them
19:55:19  <pfraze>aka iterable functions
19:55:37  <grncdr>spion: who is this "they" that that are optimizing chained map/reduce functions?
19:55:48  <spion>the V8 team?
19:55:50  <jjjohnny>grncdr: well blame the expressive style of chaining on the poor implementation of maps and reduces in JS
19:55:52  <grncdr>ah cool
19:55:55  * nlacassequit (Ping timeout: 265 seconds)
19:56:03  * nlacassejoined
19:56:11  <grncdr>grncdr: I don't follow?
19:56:18  <spion>lol :P
19:56:19  <grncdr>haha I mean jjjohnny ^^
19:57:00  <jjjohnny>grncdr: chaining is natural to JS, so naturally a decision to chain maps and reduces seemed adequate
19:57:09  <jjjohnny>idk
19:57:18  <spion>speaking of chaining, too bad that the bind (::) operator never made it.
19:57:29  <jjjohnny>so genrators are iterable functions?
19:57:33  <spion>var fn = require('fn'), other = require('other'); myobj::fn(blah)::other(stuff)
19:58:19  <pfraze>spion, I remember loving that idea but seeing a pretty convincing problem with it
19:58:21  <pfraze>I forget what
19:58:42  <grncdr>jjjohnny: it is adequate though, and it's certainly theoretically possible for the JS engine to recognize that pattern and optimize away the intermediate list
19:58:46  <spion>jjjohnny, yea and they can be indefinitely paused at every "yield"
19:58:56  <timoxley>jjjohnny: http://www.2ality.com/2013/06/iterators-generators.html
19:59:19  <timoxley>jjjohnny: also, Raynos's first implementation of gens really helped me get my head around how generators can be used to simulate 'sync' https://github.com/Raynos/gens/blob/9b46a8a4cf7d3cac9d830948e3400cd015d57ea1/index.js
19:59:53  <Raynos>man.
19:59:54  <jjjohnny>all i have to say to the ES6 people is lets yield next
19:59:55  <spion>pfraze, you did? aww :(
19:59:56  <Raynos>so simple :D
20:00:00  <Raynos>now gens is huge ;_;
20:00:23  <pfraze>spion, yeah I forget what it was. Seems so elegant
20:00:25  <timoxley>Raynos: 'robust'
20:00:45  <Raynos>https://github.com/Raynos/gens/blob/master/asynchrony.js
20:00:55  <Raynos>I have a thing that works generically on either promises or continuables >_<
20:02:19  * enjaworkquit (Read error: Operation timed out)
20:03:23  <timoxley>Raynos: are you using gens in any apps?
20:05:37  * feross_joined
20:06:08  <jjjohnny>idea: try to bring all languages into stylistic (code writing) parity, and then use 'use x' to determine the VM, where x is the VM
20:07:52  <jjjohnny>that module needs to exists
20:07:56  * coderzac_joined
20:09:08  * coderzachquit (Ping timeout: 252 seconds)
20:09:09  <pfraze>jjjohnny yeah I think I saw that npm :)
20:09:37  <grncdr>jjjohnny: also Perl has done that for years with source transforms
20:10:06  <Raynos>timoxley: https://github.com/Raynos/process-dashboard/blob/master/routes/commands-item.js
20:10:12  <Raynos>nothing in production
20:10:41  * thlorenzjoined
20:12:10  <jjjohnny>there should be a language that has all the good algos precompiled as functions
20:12:16  * coderzachjoined
20:13:02  <jjjohnny>like, since we use the fibonacci series so much in javascript arguments, it should simply be an immutable
20:13:13  * coderzac_quit (Ping timeout: 252 seconds)
20:13:25  <jjjohnny>no need to require or import or handwrite
20:14:28  <jjjohnny>WHO IS WITH ME? GET AWAY FROM WITH ME!
20:14:52  <jjjohnny>oh the lost from with loop :sigh:
20:15:04  <timoxley>jjjohnny: javascript has that already
20:15:19  <jjjohnny>timoxley: which?
20:15:19  <timoxley>jjjohnny: npm
20:15:27  * peutetrejoined
20:15:47  <timoxley>jjjohnny: "all the good algos precompiled as functions"
20:16:38  <jjjohnny>timoxley: yeah but JS is bad at some of them cuz its JS
20:17:40  <jjjohnny>now, i could use a userland written algo and get great performance if all I had to do was:
20:17:56  <jjjohnny>'use omniAlgolang'
20:18:09  <jjjohnny>function lieToMe(){...}
20:18:50  <jjjohnny>or 'use thatFastArraylang'
20:19:46  <jjjohnny>we're not getting enough JS-to-other language compilers
20:19:56  <jjjohnny>that would really help a guy like me
20:20:13  <jjjohnny>instead of all these other nerds encroaching my style
20:20:54  <jjjohnny>UHH RRRRRAWH
20:21:51  * thlorenzquit (Remote host closed the connection)
20:22:14  <jjjohnny>programming languages should be modular is what I am saying
20:22:21  * thlorenzjoined
20:22:35  <jjjohnny>or VMs
20:22:39  <jesusabdullah>sweet.js?
20:23:06  <pfraze>lol
20:23:10  <rowbit1>Hourly usage stats: [developer: 2, free: 30]
20:23:43  <jesusabdullah>IS THAT ON THE AGENDA??
20:24:03  <jjjohnny>substack: ugh rowbit is always spamming stdout can u deal with that pls
20:25:31  <jjjohnny>srsly, a language/vm that does one thing really well, like iterate over an array of integers
20:25:44  <pfraze>yeah that rowbit guy is weird
20:26:28  <pfraze>he doesnt ever respond to my a/s/l
20:26:55  * _pidquit (Quit: cu)
20:28:04  <timoxley>jesusabdullah: I wish macros were in ES6
20:28:04  <jjjohnny>rowbit1: tell jesusabdullah he had his chance to help set the agenda but he chose to meatspace instead
20:28:20  <timoxley>then we could forever polyfill ES7+
20:28:33  * pgtejoined
20:28:36  <spion>why do you want macros
20:28:42  <jjjohnny>HIVE MIND BLOWN
20:28:54  <jesusabdullah>jjjohnny I haven't been to that site in weeks
20:29:04  <jesusabdullah>jjjohnny: but if you're on I'll drop by
20:29:08  <grncdr>timoxley: you can't macro new semantics into a language
20:29:40  * _pidjoined
20:29:41  <timoxley>grncdr: you can take a good stab at it
20:29:44  <jjjohnny>jesusabdullah: im not there often, but I have been writing webcam/canvas modules lately
20:30:17  <jjjohnny>i'm trying to perfect a canvas echo/delay but the color mixing is coming out too light
20:30:24  <grncdr>timoxley: ok, that's fair… I would love to see a weakmap macro ;)
20:32:51  * pgtequit (Ping timeout: 252 seconds)
20:33:26  <grncdr>god I hate when the business part of business software has to be defined and nobody has any idea how it's actually supposed to work
20:33:27  <ogd>substack: do you know how to write to the clients stdout from pushover when they git push to a pushover server?
20:34:10  <substack>ogd: there was a pushover pull req for that a while back but the code had diverged too much for me to merge it
20:34:22  <jesusabdullah>grncdr: haha nice
20:34:27  <grncdr>"we want users to have things and belong to groups and they can share things in the groups" is not a spec
20:35:15  <grncdr>I don't actually hate it that much, it's just the most difficult part of being a contractor imo
20:35:39  <grncdr>like managing time tracking and invoicing and all that other business stuff is fine
20:35:44  <grncdr>writing code is A++ awesome
20:36:28  <grncdr>but trying to get actual requirements for the user-facing portions of said software is always such a slog
20:36:44  <jjjohnny>grncdr: saying "we want users to x" is also not a UX spec
20:37:05  <grncdr>jjjohnny: yeah I would guess you know exactly what I'm talking about ;)
20:37:35  <grncdr>I like having the conversations, but other people can be very good at not answering simple questions
20:37:38  <pfraze>we want users to have things and belong to groups and raise families and live fulfilling lives
20:38:05  <pfraze>by tuesday
20:38:07  <grncdr>we want the software to instill our users with a lasting inner tranquility
20:38:18  * techwraith_part ("Palaver http://palaverapp.com/")
20:38:23  <grncdr>oh and could it be bright orange over here?
20:38:44  <jjjohnny>let's be honest. we want users to give us money.
20:38:54  <grncdr>ahah I'm just whining, I have had much worse clients
20:39:09  <grncdr>jjjohnny: yeah, that's not always true though
20:39:34  <grncdr>like, it can be "we want users bosses to give us money to allow their peons to use this thing"
20:40:25  <grncdr>which tends to lead to conversations where you realize the people making the product don't know how to focus on UX at all
20:41:18  <grncdr>they don't value it because it doesn't make sense for them to do so.
20:41:25  <grncdr>which is kind of crazy
20:41:50  <jjjohnny>grncdr: they must be convinced of the value of UX
20:42:01  <grncdr>not really
20:42:15  <jjjohnny>bit not at the cost of their ego to believe they know what the users want
20:42:44  <grncdr>like, it can legitimately be very low on their priority list
20:42:58  * cpupquit (Ping timeout: 246 seconds)
20:43:28  <grncdr>I'm not saying it should be, just that UX is not actually the be-all-end-all of web apps
20:43:38  <grncdr>which I would've said was crazy a year ago
20:44:04  <grncdr>it's a crazy mixed up world is what I'm saying :)
20:45:06  * cpupjoined
20:45:08  <grncdr>where revenue is not necessarily related to the quality of the artifacts produced
20:45:18  <jjjohnny>true
20:45:48  <jjjohnny>but that is probably the same thinking that created so many terrible user experiences that are being eaten up by new experiences today
20:45:55  <grncdr>oh indeed
20:46:58  <jjjohnny>and the rate of change is faster now than when people were stuck in windows land
20:48:05  <jjjohnny>so that same thinking now constitutes higher hubris
20:49:22  <jjjohnny>jesusabdullah: who made this http://img405.imageshack.us/img405/646/gowdaenvfnznzdjbbqjt.gif
20:49:33  <jesusabdullah>jjjohnny: I did
20:49:43  <jjjohnny>nice, can I use it?
20:49:44  <jesusabdullah>jjjohnny: found some random glitterify web site and blammo
20:49:48  <jesusabdullah>and hell yeah
20:49:57  <jesusabdullah>jjjohnny: http://jesusabdullah.net
20:50:20  <jjjohnny>thats where i found it
20:50:25  <jesusabdullah>oh okay
20:50:35  <jjjohnny>what gkittery website did you make it at, i want an html5 one too
20:50:40  <jesusabdullah>I don't remember :(
20:50:57  <jesusabdullah>oh man
20:51:04  <jesusabdullah>how hard do you think it is to build a glitterifyer
20:51:10  <jesusabdullah>I bet you could do it in canvas
20:51:32  <jjjohnny>yeahp
20:51:49  <substack>ogd: https://github.com/substack/pushover/pull/10
20:51:55  <jjjohnny>i fall down the canvas hole easily
20:51:59  <jesusabdullah>jjjohnny: but how to extract the animated gif?
20:52:10  <jjjohnny>gif.js
20:52:23  <jjjohnny>canvas.toDataUrl()
20:52:25  <jjjohnny>i think
20:52:56  <jjjohnny>i think
20:53:13  <jjjohnny>http://jnordberg.github.io/gif.js/
20:54:26  <jesusabdullah>jjjohnny: beautiful :')
20:57:03  <substack>faucet on dailyjs yay http://dailyjs.com/2014/01/08/node-roundup/
20:58:34  <jesusabdullah>substack: oh sick I was just thinking I'd need one of these
20:59:03  <jesusabdullah>substack: What happens if it gets invalid lines?
20:59:14  <jesusabdullah>substack: due to a shitty library fucking up stdout or similar
21:01:58  * indexzeroquit (Quit: indexzero)
21:03:15  <substack>jesusabdullah: tap doesn't have a conception of invalid lines
21:03:38  <jesusabdullah>substack: oh? Elaborate?
21:03:45  * indexzerojoined
21:03:53  <substack>lines match /^(not )?ok \d+|^1..\d+/
21:03:58  <substack>everything else is ignored
21:06:36  <jesusabdullah>cool
21:07:57  * intabulasquit (Quit: Leaving...)
21:08:19  <jesusabdullah>substack: What's a good way to run bulk node-tap tests? Since `tap` also pretty prints
21:08:45  <pkrumins>there is this one guy who wrote silent tap
21:09:19  <substack>jesusabdullah: `tap test/*.js`, `tape test/*.js`, `faucet test/*.js`
21:09:27  <substack>depends on what you want the output to look like
21:09:34  <jesusabdullah>substack: tap test/*.js doesn't output tap tho
21:09:41  <substack>tape does
21:10:04  <jesusabdullah>oh, tap --tap
21:10:22  <jesusabdullah>tap's assert collection is more expansive tho
21:10:25  * ednapiranhajoined
21:10:28  <jesusabdullah>also I already have a ton of tests written in tap
21:11:34  <jesusabdullah>tap --tap test/*.js | faucet
21:13:02  * indexzeroquit (Quit: indexzero)
21:13:28  <substack>jesusabdullah: it doesn't matter which library you use to generate the tap with any of the tools
21:13:41  <jesusabdullah>substack: yeah but you have to make the tool actually output tap
21:13:54  <substack>tape only outputs tap
21:14:02  <substack>juliangruber has a tool too
21:14:06  <substack>tap-runner or some such
21:14:19  <jesusabdullah>but isaacs/node-tap does not, and that happens to be a library I've used for many of my tests
21:14:30  <jesusabdullah>I'm not gonna rewrite ecstatic's test suite to work with tape
21:14:56  <jesusabdullah>for example
21:15:16  <ogd>substack: i figured out how to get that pushover feature working but with a 10 line diff
21:15:18  <jesusabdullah>anyway I thought you might want to put that example up
21:17:02  <jesusabdullah>Oh good, you can use tape as the runner with tap tests
21:17:05  <jesusabdullah>that's cool
21:17:07  <jesusabdullah>good to know
21:18:44  <jesusabdullah>okay cool
21:20:11  <jjjohnny>our israeli housemate Auriel is currently doing learnyounode
21:20:16  <substack>ogd: sweet!
21:20:23  <substack>jjjohnny: excellent
21:21:32  <jesusabdullah>word
21:22:19  * pgtejoined
21:23:10  <rowbit1>Hourly usage stats: [free: 11]
21:25:27  <jesusabdullah>ednapiranha: Why's meatspace overrun with frenchmen?
21:25:44  <ednapiranha>jesusabdullah: some french fashion blog posted about it
21:25:46  <Maciek416>it got featured in madmoizelle.com
21:25:50  <ednapiranha>then a bunch of teenage girls showed up
21:26:03  <ednapiranha>and n.american guys trying to flirt w/ them using the translation bot
21:26:10  <ednapiranha>jesusabdullah: just go to http://chat-staging.meatspac.es
21:26:14  <ednapiranha>it's the 'escape pod'
21:26:15  <Maciek416>breath of fresh air ensued
21:26:16  * jxsonjoined
21:26:23  <jesusabdullah>ednapiranha: Maciek416 that's actually awesome
21:26:31  <ednapiranha>jesusabdullah: better than yesterday
21:26:40  <ednapiranha>which was a bunch of drunk french guys at 11pm showing their penises
21:26:49  <ednapiranha>which i purposely shut down the server so they would chill out
21:26:50  <ednapiranha>:)
21:26:59  * pgtequit (Ping timeout: 260 seconds)
21:27:02  <ednapiranha>their leader was amused thinking the flood caused the 502
21:27:10  <ednapiranha>but really it was me saying 'i dont have time for this shit go away'
21:27:57  <jesusabdullah>aha
21:28:00  <paul_irish>ednapiranha: go pee already!
21:28:28  <ednapiranha>paul_irish: STALKER
21:28:32  <ednapiranha>brb
21:28:47  <paul_irish><3
21:29:11  <jjjohnny>french penis wave
21:29:16  <jjjohnny>FRENCH PENIS WAVE
21:29:25  <Maciek416>I'm trying to imagine like a french "ring leader" ongh-hongh-hongh'ing about how they managed to 502 production
21:29:46  <Maciek416>holding a wine glass and wearing one of those berets
21:29:46  * brianloveswordsquit (Excess Flood)
21:30:34  * brianloveswordsjoined
21:30:41  <ogd>substack: if you do a fresh clone of pushover master and do npm install && npm test do they all pass?
21:31:26  <ogd>Meatspace, le nouveau réseau social à base de gifs
21:31:27  <ogd>lol
21:33:47  <grncdr>man I did not know about staging
21:33:53  <grncdr>that's way better
21:34:09  <grncdr>although I can't type on it...
21:34:23  <ogd>lol
21:34:41  * jcrugzzjoined
21:36:48  <substack>ogd: the subdir test fails for me
21:36:58  <substack>oh and some others
21:37:56  <grncdr>jesusabdullah: I have nothing useful to say on meatspace but I'm the dude with the yellow mug o/
21:38:37  <jory>Quite a mug!
21:40:06  <ogd>substack: my git (1.8.3) fails when i try and do 'git push http://localhost:38383' but if i remote add that address and the git push remote it works. im going to try upgrading to git 1.8.5 to see if it fixes it
21:40:39  * floatdropjoined
21:40:57  <jesusabdullah>substack: if you made a coincidental appearance in chat-staging.meatspac.es it would be epic
21:41:46  <ogd>substack: oh nevermind, that error only happens if pushover is initialized with '{ autoCreate : false }'
21:42:50  * pgte_joined
21:43:10  * funkytekjoined
21:45:44  <ogd>dang github is down
21:45:47  <ogd>ironic!
21:46:01  <ogd>that i cant push my commit which is code that deals with pushing commits
21:46:06  * calvinfopart
21:53:50  <substack>ogd: if you have everything in a single commit
21:54:13  <substack>git show HEAD^ > pr.diff
21:55:06  <ogd>substack: does what i want if i leave the ^ off
21:55:09  * jxsonquit (Remote host closed the connection)
21:55:20  <substack>oh right
21:55:35  <substack>anyways https://gist.github.com/ is still up
21:55:40  <substack>you can paste me a diff and I can `git am` it
21:55:45  <ogd>http://pastebin.com/WiQwHdtz
21:56:18  <ogd>substack: that was the simplest way i could figure out how to do it without breaking existing functionality
21:58:45  <ogd>substack: basically if you do .on('response', function(res) {}) then you have to do res.queue(new Buffer('0000')) and res.queue(null) when you are done. maybe there should be a second arg passed into on('response') that is just function done() {} that calls those two
22:01:56  <substack>ogd: so apparently the correct thing was `git format-patch`
22:02:12  <substack>git am is complaining about that `git show` output
22:02:15  <ogd>oh
22:02:48  <ogd>hmm git format-patch HEAD produces no output
22:02:58  <substack>git format-patch HEAD^
22:03:01  <substack>makes a file
22:03:43  <ogd>substack: http://pastebin.com/BcMFynWv
22:04:46  <substack>woot
22:05:28  <substack>xclip -o | git am
22:05:28  <substack>worked
22:06:08  <chrisdickinson>also `patch -p1 < diff` will work with git-generated diffs
22:06:08  <substack>ogd: can you also document the new feature?
22:06:33  * cpupquit (Ping timeout: 252 seconds)
22:06:33  <substack>chrisdickinson: but I like `git am` since it preserves the commit messages and authors in the history
22:06:47  <ogd>substack: yea was planning on it
22:06:49  * chrisdickinsonnods
22:07:03  * floatdropquit (Quit: Textual IRC Client: www.textualapp.com)
22:07:03  <chrisdickinson>just wanted to add to the cornucopia :)
22:07:18  * cpupjoined
22:07:25  <chrisdickinson>(also, for a brief time at one job we were running git, subversion, and mercurial all at once)
22:07:32  <ogd>lol
22:07:33  <substack>ogd: ok once the docs are in I'll publish it!
22:07:33  <chrisdickinson>(like... 4-5 years ago)
22:07:43  <substack>ogd: maybe we can get this done before github comes back up
22:08:34  <defunctzombie>GITHUB IS DOWN
22:08:43  <defunctzombie>AMEN
22:09:45  * floatdropjoined
22:13:17  * coderzachquit (Remote host closed the connection)
22:17:08  * pgte_quit
22:23:10  <rowbit1>Hourly usage stats: [developer: 1, free: 39]
22:25:55  <ogd>substack: http://pastebin.com/78LButZq
22:28:15  <substack>ogd: I don't understand what the done() is for
22:28:33  <substack>can't you just respStream.on('end', function () {}) ?
22:28:44  <ogd>substack: it has to send '0000'
22:29:04  <substack>ps.stdout.pipe(respStream, { end: false }).pipe(res)
22:29:25  <ogd>substack: oh and theres a bug in that patch, it should be doing respStream.queue instead of res.queue inside endResponse
22:29:44  <ogd>substack: if you can figure out a cleaner way to do it go ahead
22:29:48  * feross_quit (Quit: feross_)
22:29:52  <substack>respStream.on('end', function () { res.queue(new Buffer('0000')); res.queue(null) })
22:29:57  <substack>then you don't need a done()
22:30:39  <ogd>substack: oh nice
22:35:14  <ogd>substack: lol https://github.com/substack/pushover
22:37:53  <substack>ogd: wait I don't get why the done() callback is even there
22:38:48  <ogd>substack: you can eliminate it with the end: false thing you proposed. but it is there so that if you implement a custom response handler you can easily send '0000' and then null
22:39:15  <substack>why?
22:39:35  <substack>why wouldn't you just want to stream.end('some message')
22:39:39  <substack>like a normal stream
22:39:44  <ogd>substack: because if you dont send '0000' and the end git will complain and crash
22:39:50  <substack>ogd: I don't get it
22:39:54  <substack>you can add that automatically
22:40:02  <substack>that's what the module should be adding to the end
22:40:03  <ogd>substack: i couldnt figure out a clean way to do it
22:40:09  <ogd>substack: but i think you did
22:41:29  <chrisdickinson>oo, git protocol?
22:41:43  <ogd>chrisdickinson: yea packfile sidechannel messages
22:42:07  <ogd>chrisdickinson: afaik they arent documented anywhere besides comments in the code
22:42:51  <chrisdickinson>ogd: https://www.kernel.org/pub/software/scm/git/docs/technical/protocol-capabilities.txt ?
22:42:55  <chrisdickinson>(under side-band)
22:43:11  <ogd>chrisdickinson: oh yea
22:43:29  <ogd>weird that when you get an error git refers to them as side channel and not side band
22:43:44  <ogd>or maybe it called them sideband channel... i cant remember
22:44:11  * coderzachjoined
22:46:17  * peutetrequit (Quit: peutetre)
22:48:22  * cpupquit (Ping timeout: 252 seconds)
22:48:43  * coderzachquit (Ping timeout: 260 seconds)
22:50:10  * cpupjoined
22:56:25  * contrahaxjoined
22:57:31  * cpupquit (Ping timeout: 260 seconds)
22:58:36  * peutetrejoined
23:01:55  * cpupjoined
23:17:33  * fronxjoined
23:18:49  * ralphtheninjaquit (Read error: Operation timed out)
23:23:10  <rowbit1>Hourly usage stats: [developer: 0, free: 28]
23:23:28  * thlorenzquit (Remote host closed the connection)
23:26:16  * tilgovijoined
23:26:57  * thlorenz_joined
23:27:40  <ogd>substack: all good on the patches i sent or should i re-do the last one?
23:28:44  * phatedquit (Remote host closed the connection)
23:29:51  * indexzerojoined
23:30:05  <substack>ogd: what you sent is fine
23:30:39  <substack>I'm just tweaking the done() function so we can just use the regular stream logic
23:31:12  <ogd>substack: sweet
23:33:04  * phatedjoined
23:33:51  <marcello3d>if you're writing a lib that depends on another lib via peer dependency, would you pin the version? or use ~?
23:34:07  * feross_joined
23:34:15  * floatdropquit (Quit: Textual IRC Client: www.textualapp.com)
23:34:37  <ogd>marcello3d: if the author of the other lib is competent and uses semver correctly then i would use ~
23:35:02  <ogd>marcello3d: generally i find peerdependencies to be more trouble than their worth, but it depends on the use case
23:36:19  <marcello3d>ok, so I've been doing that with ~0.3.4, and they're getting close to releasing 0.4.0, so if I want to support that, would you do like ">=0.3.4 <0.5.0"?
23:36:20  * floatdropjoined
23:37:14  <grncdr>marcello3d: that would work.
23:37:28  <grncdr>FWIW I agree with Max re: peerDependencies
23:37:38  <grncdr>I wrote a bunch of stuff that used them, it was a mistake
23:37:53  <marcello3d>so what would you use? the use case here is browserify transforms
23:38:20  <marcello3d>I have a few I wrote, one for stylus, one for hbs, one for ractive
23:38:58  <grncdr>why don't normal deps work?
23:39:20  <grncdr>(not saying they don't, just don't understand what you're doing yet)
23:39:29  <grncdr>github link?
23:39:42  <marcello3d>I think the original issue was that I didn't want to have to update my libraries every time the dependencies updated
23:40:14  <marcello3d>confusing myself, didn't write one for stylus
23:40:28  <marcello3d>https://github.com/marcello3d/node-ractify https://github.com/marcello3d/node-handleify
23:40:31  * thlorenz_quit (Ping timeout: 260 seconds)
23:41:23  <marcello3d>so on handleify I did a normal dependency, but then you're locked into the version it has
23:41:32  <grncdr>oh
23:41:42  <grncdr>yeah in that case what you want is a version range and a normal dep
23:41:59  <substack>marcello3d: I wouldn't bother with peerDependencies for a browserify transform
23:41:59  <marcello3d>but then you get this weird changing dependency thing
23:42:16  <marcello3d>where depending when you install the module, you get a different version of handlebars
23:42:27  <marcello3d>I'd rather force the developer to be explicit about the version they want
23:43:05  <marcello3d>and in the case of ractive, the developer includes ractive outside of ractify, so I need the versions to be the same
23:43:07  <grncdr>so peerDeps don't actually do that
23:43:43  <grncdr>like, at best what you're going to do is make it so npm can't install your package because the dev is depending on a conflicting version
23:44:14  <grncdr>set a liberal version range and let npm dedupe the dependencies
23:44:15  <marcello3d>it doesn't complain if they don't have any version of a peer dependency?
23:44:22  <grncdr>no it does
23:44:25  <grncdr>it will install it
23:44:29  <grncdr>but so will a normal dep
23:44:43  <marcello3d>ok, I misunderstand peer dependencies then
23:44:52  * coderzachjoined
23:45:21  <grncdr>all peerdependencies mean is "this thing has to exist as a sibling"
23:45:47  <grncdr>"at this version"
23:46:00  <grncdr>so npm will install peerdeps next to your dep if they don't exist
23:46:23  <grncdr>but if the dev isn't using ractive directly, there's no reason for them to have it installed there
23:46:37  <marcello3d>ok just tried it out
23:46:41  <grncdr>and if they are, npm won't install another version under your package unless the versions are unsuitable
23:46:49  <marcello3d>it doesn't seem to install it automatically with peerdependency
23:47:17  <marcello3d>just gives me a peerinvalid and gives up
23:47:26  <grncdr>:\
23:47:36  * hoobdeeblajoined
23:47:38  <marcello3d>wait. I think I did something wrong
23:48:11  <grncdr>to properly test peerDependencies you need to create a new package and install your package (the one with the peerDep defined) in it
23:48:25  <marcello3d>yea
23:48:35  <marcello3d>it seems like it doesn't complain at all if the peerDependency doesn't exist
23:48:37  <marcello3d>nor does it install it
23:49:23  * coderzachquit (Ping timeout: 260 seconds)
23:49:47  <grncdr>hm, that's weird
23:49:57  <grncdr>anyways, peerDependencies *are* weird
23:50:07  <marcello3d>yea, I see that
23:50:07  <grncdr>and you almost definitely don't want them
23:50:11  <grncdr>:)
23:50:14  * pfrazequit (Ping timeout: 252 seconds)
23:50:21  <marcello3d>I blame defunctzombie, I'm sure he told me to do it ;D
23:50:39  <grncdr>seriously, go look through the commit history of any-db sometime if you want to see how to really mess up your life by using peerdeps
23:50:42  <grncdr>much sad
23:51:14  * ednapiranhaquit (Quit: Leaving...)
23:51:21  <marcello3d>the whole dependency thing in node.js makes me sad
23:51:58  * peutetrequit (Quit: peutetre)
23:52:01  <marcello3d>even though it's the best thing out there
23:56:58  <defunctzombie>what am I being dragged into?
23:58:29  * marcello3dquit (Ping timeout: 252 seconds)
23:59:27  * fronxquit (Remote host closed the connection)