00:00:01  * ircretaryquit (Remote host closed the connection)
00:00:03  <substack>dominictarr: oh also JSONStream doesn't work in browserify>=2.6 right now because jsonparse uses indexed buffers
00:00:08  <substack>hoping that https://github.com/toots/buffer-browserify/pull/14 will fix it
00:00:08  * ircretaryjoined
00:01:39  <substack>with this we'll be able to do buf[i] in browsers finally!
00:05:37  * shamaquit (Remote host closed the connection)
00:05:49  * CryptoQuickquit (Ping timeout: 252 seconds)
00:06:31  <substack>in other news I am replacing old custom stream code with through() and .queue() and intransigent bugs are magically vanishing
00:06:47  <dominictarr>#WINNING
00:06:59  <dominictarr>GETTING ON A PLAN, AGAIN
00:06:59  <LOUDBOT>I WILL TAKE THE GROUP OF DAMNED THKS K
00:07:09  * dominictarrquit (Quit: dominictarr)
00:09:16  * spionjoined
00:12:32  <Raynos>dominictarr: PLANE
00:13:52  <substack>WATCH OUT FOR SNAKES. ON YOUR PLANE. PLANE SNAKES.
00:13:52  <LOUDBOT>"BEHIND YOU YOU FUCKING JACKASS"
00:16:06  * marcello3dquit (Read error: Connection reset by peer)
00:19:56  * dominictarrjoined
00:24:31  * dominictarrquit (Ping timeout: 264 seconds)
00:34:55  * Ikeymanjoined
00:35:34  <Ikeyman>hello
00:39:23  * thl0joined
00:44:47  <thl0>paul_irish: could you help me sort the traceur issue out and/or do you think anyone would have a problem if I create a github mirror and npm package that's in sync with what is currently on google.code?
00:50:19  <paul_irish>traceur is erik's project so he's the best person to ask
00:50:20  <paul_irish>but
00:50:42  <paul_irish>he's mad busy but super cool so there should be no problem with your mirror npm package.
00:51:39  <Ikeyman>i can't mak to work stack vm
00:51:49  <thl0>paul_irish: cool, I'll just ping him on twitter to let him know what I'm doing
00:51:52  <paul_irish>kk
00:52:20  * ralphtheninjaquit (Quit: Lost terminal)
00:53:57  <Ikeyman>how i can install stackvm?
00:55:39  * yorickquit (Remote host closed the connection)
01:00:33  * mmckeggquit (Quit: mmckegg)
01:00:38  * st_lukequit (Remote host closed the connection)
01:01:09  * st_lukejoined
01:05:04  <mikeal>substack: so, by default, does readFileSync work with browserfiy?
01:05:23  * spionquit (Ping timeout: 246 seconds)
01:09:38  <st_luke>isaacs: the guy that reported #3261 on npm is in nyc, i might have him just stop by the office and see what the deal with that bug is
01:11:01  <isaacs>st_luke: yeah, he's got some funky confs in there somewhere.
01:11:22  <isaacs>st_luke: he's also "niggler" in #Node.js
01:13:40  <st_luke>if his name really is 'nirk niggler' irl im gonna lose it
01:14:30  * nk109quit (Quit: Computer has gone to sleep.)
01:15:44  <st_luke>i talked to him the other day, i thought he was just trolling cause of some of his messages in #node.js previously but he was a pretty nice guy
01:16:11  <st_luke>just maybe a little undersocialed but thats pretty common with programmers i guess
01:17:46  * defunctzombie_zzchanged nick to defunctzombie
01:19:57  * AvianFluquit (Remote host closed the connection)
01:20:04  <fotoverite>Whee's tart off to now.
01:20:23  * dguttmanquit (Quit: dguttman)
01:24:53  <st_luke>is that a rap lyric?
01:25:27  <fotoverite>tarr
01:25:44  <st_luke>dominic tart
01:26:32  * marcello3djoined
01:27:11  * nk109joined
01:27:23  * wolfeidauquit (Read error: Connection reset by peer)
01:27:45  * wolfeidaujoined
01:31:15  * marcello3dquit (Ping timeout: 252 seconds)
01:31:30  <st_luke>defunctzombie: are you having issues with sendgrid still?
01:31:41  <defunctzombie>yea
01:31:44  <defunctzombie>random smtp shit
01:31:47  <st_luke>damn
01:31:53  <defunctzombie>I am wondering if moving to their http api might be better
01:31:57  <defunctzombie>smtp is a piece of shit
01:32:00  <st_luke>yeah
01:32:13  <st_luke>I hate debugging that shit
01:32:23  <defunctzombie>yea
01:42:59  * mikealquit (Quit: Leaving.)
01:49:12  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
01:49:12  <rowbit>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
01:52:02  * stlsaintquit (Ping timeout: 256 seconds)
01:58:15  * stlsaintjoined
02:04:14  <substack>pow!
02:08:15  <defunctzombie>substack: the coffee people are back at it
02:09:43  <st_luke>whenever I read a "why I'm giving up on web development" blog post by someone it usually ends up being about how they're frustrated people wont use the tools they prefer
02:10:22  <Raynos>chrisdickinson: GIT EXPLOSION
02:12:26  <substack>defunctzombie: the who whats?
02:12:27  <defunctzombie>st_luke: whenever I read such posts I think they need to fucking get over themselves and not post about it.
02:12:36  <defunctzombie>substack: where?
02:12:38  <thl0>defunctzombie: what are they doing this time?
02:12:51  <defunctzombie>demanding features!!
02:13:05  <defunctzombie>https://github.com/substack/node-browserify/issues/326#issuecomment-15275650
02:13:10  <defunctzombie>https://github.com/shtylman/node-browser-resolve/pull/12
02:13:24  <defunctzombie>now I have coffee pollution in the browser resolve hahaha
02:13:34  <thl0>defunctzombie: point'em here https://github.com/thlorenz/mold-source-map
02:13:51  <thl0>defunctzombie: that allows them to do whatever they want with their source maps ;)
02:14:00  <defunctzombie>thl0: this isn't a source map issue I think
02:14:06  <defunctzombie>at least not the resolve one
02:14:24  <thl0>defunctzombie: oh yeah confused that - was referenced right above
02:14:35  <defunctzombie>;)
02:14:49  <st_luke>'this is awful'
02:14:50  <st_luke>nice
02:14:59  <thl0>defunctzombie: so they have two options
02:15:09  <thl0>either build a custom browserify - which is easy
02:15:33  <thl0>or bundle all their coffee scripts and just push that bundle into browerify
02:15:49  <st_luke>takes work
02:15:53  <thl0>during the first bundle step they can do a lot of customizations
02:16:24  <defunctzombie>I am not sure how I can continue to stress more that coffeescript is a different language
02:16:38  <defunctzombie>it would be like me putting lua in npm or something
02:17:35  <thl0>defunctzombie: wow I hope I'm not starting up the same storm with my traceurify - after all its mostly ES6 -- JavaScript at least
02:18:29  <defunctzombie>thl0: no, I encourage all development things
02:18:46  <defunctzombie>I just am not a fan of the blurred line between coffeescript and js
02:19:00  <defunctzombie>at least how coffeepeople see it that js projects must support them
02:19:05  <substack>thl0: or just use the exactly .coffee extension explicitly in their require() calls
02:19:05  <thl0>defunctzombie: agreed
02:19:27  <thl0>substack: maybe someone should tell'em about sed
02:19:34  <defunctzombie>python people don't post to my repos and go.. oh.. can require support python?
02:19:42  <thl0>fix all require calls in one line
02:19:42  <defunctzombie>the reality is that they ARE different languages
02:19:44  <defunctzombie>and that is fine
02:19:46  <substack>but because node lets you extend the supported extensions it's not so unreasonable to let browserify work the same as node
02:20:22  <defunctzombie>substack: agreed, I don't think it is unreasonable but just not something that interests me :/
02:20:23  <chrisdickinson>substack: hopefully the node modules that result from this git excursion are useful for you guys (esp. in regards to testling ci)!
02:20:26  <thl0>substack: except that these extensions are what caused isaacs lots of pain
02:20:33  <substack>yeah
02:20:46  <thl0>substack: although I like 'em since proxyquire works real nice with them
02:21:13  <substack>chrisdickinson: probably sooner or later I'll end up using them!
02:21:17  <chrisdickinson>:D
02:21:34  <substack>if they are tiny pieces that do one thing that I need to do then I will definitely be using them
02:21:36  <chrisdickinson>the really cool thing is that you really don't need anything but the packfile writer and parser, when those get done
02:21:38  <substack>tiny things ftw
02:21:50  <chrisdickinson>otherwise git is just a kv store
02:21:54  <substack>YES
02:22:03  <substack>chrisdickinson: I wonder if I can start using these in glog first
02:22:11  <substack>since I'm basically using git as just a key/value store there
02:22:29  <chrisdickinson>i'm working on git-fetch-pack at the moment, though i'm taking a side route there
02:23:07  <chrisdickinson>i need to have a stream that takes several hashes, a function to lookup hashes with a callback, and walks the tree in chronological order
02:23:11  <chrisdickinson>(for the fetch pack protocol)
02:25:17  * marcello3djoined
02:31:15  <substack>juliangruber: testling profesh creds sent
02:33:21  * Domenic_quit (Ping timeout: 256 seconds)
02:51:15  * stlsaintquit (Ping timeout: 245 seconds)
02:51:53  * Ikeymanquit (Quit: Ikeyman)
02:52:32  * stlsaintjoined
02:53:06  * mmckeggjoined
02:56:51  * thl0quit (Remote host closed the connection)
03:08:47  <Raynos>substack: would it be considered mean to use the `"server"` option in testling to run a test suite and then pipe TAP down a websocket and console.log it in the browser >_>
03:08:59  <Raynos>testling. now doubles as travis CI
03:12:25  <defunctzombie>hahaha
03:25:28  <substack>what's wrong with travis?
03:25:32  * jcrugzzjoined
03:29:01  <defunctzombie>https://gist.github.com/shtylman/5218734
03:29:08  <defunctzombie>^ for those that might not be aware you can do this
03:29:38  * dguttmanjoined
03:34:01  * dguttmanquit (Client Quit)
03:46:48  * kanzurequit (Ping timeout: 276 seconds)
03:56:20  * kanzurejoined
03:59:13  * jibayquit (Quit: Leaving)
04:08:43  * dguttmanjoined
04:19:43  * dguttmanquit (Quit: dguttman)
04:21:48  * jcrugzzquit (Ping timeout: 252 seconds)
04:22:43  * defunctzombiechanged nick to defunctzombie_zz
04:29:15  * mmckeggquit (Quit: mmckegg)
04:44:18  <Raynos>juliangruber, jez0990: http://raynos.graphics-server.jit.su/full/todo.js
05:11:05  <substack>http://www.reddit.com/r/javascript/comments/1as76j/journey_from_requirejs_to_browserify/
05:13:21  * tilgovijoined
05:26:05  * jcrugzzjoined
05:58:29  * mikealjoined
06:25:16  <juliangruber>substack: testling profesh creds received
06:25:29  * marcello3dquit (Remote host closed the connection)
06:25:34  <juliangruber>Raynos: 404 :O
06:25:45  <Raynos>juliangruber: http://raynos.graphics-server.jit.su/full/todo.js
06:25:50  <Raynos>works for me
06:26:17  <juliangruber>probably just jitsu being crazy
06:26:30  <Raynos>and its only 80kb non-gzipped
06:26:55  <juliangruber>sweet, need to read through the source
06:27:20  <substack>only one bouncy test failing now
06:27:38  <substack>then I'll run it on my blog to see if these backpressure bugs are finally fixed using through
06:31:54  * jcrugzzquit (Ping timeout: 276 seconds)
06:35:38  <Raynos>Success!
06:35:53  <Raynos>my todofrp app build with browserify is just as big as the backbone framework in terms of kbs
06:36:24  <substack>is that a positive or negative thing?
06:36:43  <substack>I'm not even sure what backbone is for
06:37:04  <Raynos>backbone is like a 600loc mvc framework
06:37:17  <Raynos>my todofrp app + all its dependencies (Raynos/graphics framework) is just as big as backbone
06:37:25  <substack>but what does that even mean to be an mvc framework I guess
06:37:39  <Raynos>which means my nested tree of tiny modules is no bigger then a pre assembled minimal mvc framework
06:37:42  <substack>people throw around that term so much what does it even mean
06:37:56  <Raynos>i.e. you dont get lots of kb of baggage by using lots of small modules instead of a few larger hand crafted ones
06:38:28  * mikolalysenkoquit (Ping timeout: 245 seconds)
06:38:30  <Raynos>which browserify 2.0 has neglible overhead compared to doing shit manually with file concatenation
06:38:49  <Raynos>substack: mvc means you organize your code in dem folders called models controllers & views
06:39:00  <Raynos>HOW ELSE WOULD I COEDS MY BIGS APPS IF I COULD NOT PUT DEM CODES IN DEM FOLDERS
06:39:00  <LOUDBOT>HEY WHO WON THE GREAT OUTDOOR FIGHT THIS YEAR?
06:39:23  <Raynos>MY BIG APPS HAS 70 MODELS & 120 VIEWS. CAN YOU IMAGINE ORGANIZING DAT WITHOUT DEM MVCZ
06:39:23  <LOUDBOT>IT'S LIKE TORRENTS, SO YOU HAD ALL BETTER KEEP SEEDING!
06:40:12  <substack>Raynos: so it's like anything that does `mkdir model view controller` is an "mvc framework"?
06:40:55  <Raynos>anything that tells you "when you want to write some codes thats vaguely like X use the model factory and put it in models folder"
06:41:00  <Raynos>and etc for views & controllers
06:41:11  <Raynos>each mvc framework defines their own "vaguely like M , V , C"
06:41:16  <Raynos>depending on flavor of the month
06:41:28  <substack>hang on back up, "model factory"
06:41:41  <substack>no idea what language these people are even speaking when they describe mvc
06:41:58  <Raynos>well a model factory
06:42:03  <Raynos>is a thing thats a function or constructor
06:42:06  <Raynos>and takes some arguments
06:42:09  <Raynos>and returns a model object
06:42:13  <Raynos>that you can put shit on
06:42:15  <Raynos>and call methods on
06:42:16  <substack>so like a factory that makes mannequins
06:42:16  <Raynos>and shit
06:42:34  <Raynos>like `var Stream = require("stream")`
06:42:41  <Raynos>Stream is a stream factory :P
06:42:48  <substack>so it's like a really crappy kind of module system
06:43:09  <Raynos>instead of the callbacks, event emitters, streams triangle
06:43:17  <Raynos>you ahve the model, view, controller triangle
06:43:21  <Raynos>its not like a module system
06:43:34  <Raynos>although some mvc frameworks go out of scope and bundle in a really crappy kind of module system for lulz
06:53:13  <chrisdickinson>the idea is to separate concerns
06:53:16  <chrisdickinson>theoretically
06:54:04  <chrisdickinson>controllers act on, update, and read models on behalf of the user's input; and give the view the necessary data to render output
06:55:32  <chrisdickinson>in practice, most of the time it's about as good for decoupling as arbitrarily cutting something up, glomming it back together, and pouring elmers glue all over the result.
06:57:53  * dominictarrjoined
06:58:00  <chrisdickinson>substack: also an acceptable definition: "minimum viable cat"
07:08:50  <dominictarr>Raynos: you there?
07:08:56  <Raynos>yo
07:08:58  <Raynos>sup boss
07:09:08  <Raynos>writing a blog post about todofrp
07:09:13  * Domenic_joined
07:10:33  <dominictarr>Raynos: https://github.com/dominictarr/pull-stream/blob/master/index.js
07:10:49  <dominictarr>wrote this while I was on the plane
07:11:10  <dominictarr>pipable duplex pull streams
07:11:24  <Raynos>oh interesting
07:11:44  <Raynos>writable does recurse(CLOSE_OR_NOT_CLOSE, recurse)
07:11:52  <Raynos>no wait
07:11:59  <Raynos>it does recurse(CLOSE_OR_NOT_CLOSE, writable)
07:12:07  <dominictarr>no
07:12:29  <dominictarr>it's read(end /* true if ended, or an Error*/, callback)
07:12:49  <dominictarr>callback *must* only be called once
07:12:53  <Raynos>dominictarr: https://github.com/dominictarr/pull-stream/blob/master/index.js#L49
07:12:56  <dominictarr>so it's not a writable stream
07:12:59  <Raynos>probably don't call `map` if end
07:13:31  <dominictarr>so one interesting thing this allows
07:13:44  <dominictarr>is that in a buffering stream
07:13:54  <Raynos>https://github.com/dominictarr/pull-stream/blob/master/index.js#L67
07:13:56  <Raynos>readable is not used
07:13:59  <dominictarr>it may have ended, but still have stuff in the buffer
07:14:13  <dominictarr>oh, that one was just a template
07:14:39  <dominictarr>oh, and it's wrong
07:14:58  <Raynos>>_<
07:15:07  <Raynos>its too late too think about this stuff in detail
07:15:10  <Raynos>but yes right direction!
07:15:42  <dominictarr>high water mark https://github.com/dominictarr/pull-stream/blob/master/index.js#L120-L150
07:15:44  <Raynos>dominictarr: https://github.com/Raynos/recurse-stream#example
07:15:56  <Raynos>a couple of lines to describe what the API of readable & reader are would help
07:16:24  <dominictarr>will do
07:16:55  <dominictarr>I have like 3 hours waiting in sydney airport...
07:18:21  <substack>not my favorite airport
07:18:49  <substack>it has good wifi though
07:19:12  <dominictarr>it does
07:19:47  <Raynos>https://gist.github.com/Raynos/5219544 (todofrp)
07:20:08  <dominictarr>Raynos: https://github.com/dominictarr/strm/blob/master/test/dfs.js
07:20:24  <dominictarr>^ used depth first search to do a ls -r
07:20:26  <Raynos>dominictarr: Another thing that would be awesome is a comparison of strm, pull-stream, streamer, reducible, recurse-stream, streams2 & 0.8 streams
07:20:31  <substack>Raynos: I dislike this term "model" since it's so ambiguous
07:20:42  <substack>why not just talk about state instead
07:20:55  <dominictarr>Raynos: yes, I have been thinking about doing a talk on that
07:21:01  <substack>state is a very concrete term with a very specific meaning
07:21:27  <Raynos>substack: I have two concrete things. A description ( schema ) of the state. And a actual representation of the state as a dominictarr/observable
07:21:41  <Raynos>I use the word `Model` for the schema. It's a bad word. I need a better one, suggestions welcome
07:21:59  <Raynos>These are the good sections https://gist.github.com/Raynos/5219544#interesting-ideas
07:22:28  <substack>I guess it's not immediately obvious what this is for and how I can make use of it
07:22:50  <substack>just say "schema" then
07:22:54  <substack>you already called it a schema
07:23:37  <dominictarr>Raynos: am thinking it may be best to have a pipeable(function (readable) {…})
07:23:41  <substack>this feels confused
07:23:54  <dominictarr>that adds a .pipe(…) method
07:24:36  <dominictarr>then, you could add checks so that you could pipe to a different type of stream, or a classic stream, or a new stream.
07:24:44  <substack>Raynos: you should get rid of most of the words here, they don't really do anything
07:24:48  <dominictarr>or maybe ever a reducable
07:25:22  <substack>I basically don't know at all what you're even talking about
07:25:26  <Raynos>substack: you are biased to wanting to read lots of code and not many words
07:25:47  <Raynos>but i guess i dont explain the ideas very well
07:26:19  <substack>something about how mvc is inadequate in some way and then some things about state transformations
07:26:40  <dominictarr>Raynos: I am pretty sure that substack wants to neither read lots of code nor lots of docs
07:26:49  <Raynos>i should fix it up
07:26:54  <Raynos>dominictarr: probably true
07:27:15  <substack>Raynos: why don't you talk about transform()
07:27:18  <substack>transform() looks neat
07:27:31  <substack>you should say what arguments it takes and what it does with those arguments
07:27:37  <dominictarr>he wants to see something simple, that can be understood in 30 seconds, and seems useful
07:27:48  * stlsaintquit (Ping timeout: 276 seconds)
07:28:15  <Raynos>dominictarr wrote transform ( https://github.com/dominictarr/observable#input--transform )
07:28:21  <substack>well it's more that once I see something that can be easily understood, it will compell me into reading the rest of the document
07:28:39  <substack>and the simple example will frame the rest of the discussion with something concrete
07:29:08  <Raynos>substack: that's probably a good thing
07:29:48  <substack>you should add a section very early that talks about transform() and why you find it useful here
07:29:55  <substack>that will frame the later examples better
07:30:06  <substack>right now I feel like there is a lot of context missing
07:30:17  <Raynos>i think i made the mistake
07:30:21  <Raynos>of talking about the entire thing
07:30:32  <Raynos>in the order of 200loc example
07:30:39  <substack>but right now I basically have no idea what the document says at all
07:31:11  <Raynos>its supposed to describe how you build apps by transforming values over time
07:31:27  <Raynos>from input to state to display to input
07:31:44  <substack>maybe you could boil this down to a much more focused example?
07:32:13  <Raynos>substack: http://raynos.graphics-server.jit.su/react/mouse-position-image.js
07:32:17  <Raynos>that is the more focused example
07:32:28  <substack>and add that line to the intro someplace: "here is how you build apps by transforming values over time"
07:32:40  <substack>this approach is used in a functional programming approach called FRP
07:33:12  <substack>haskell people have this problem to such a gigantic degree it was so maddening
07:33:46  <substack>and nobody knows what anybody is talking about
07:34:29  <substack>that is a pretty sweet example
07:37:40  <Raynos>Yeah. I just need to unframework graphics.
07:39:17  <substack>I suspect that there are some really good ideas buried in FRP that are hidden behind overly abstruse language and over-abstraction
07:39:56  <Raynos>There are. I'm trying to capture them
07:40:31  <Raynos>The hardest part is nice rendering logic
07:42:46  <substack>might be useful to frame the abstractions as just a "rendering engine"
07:43:15  <substack>imperative metaphors are usually better for communicating ideas
07:43:36  <substack>than mathematical functional programming ones
07:46:28  <Raynos>Yeah. I need to do a lot of Polish & documentation
07:46:54  <Raynos>Holding a functional js meetup in sf on Wednesday
07:47:38  <dominictarr>whats a good example of a 3 part unix pipe line?
07:48:14  <substack>browserify main.js | uglifyjs | gzip | wc -c
07:54:02  * thatguydanjoined
07:55:48  <rvagg>Raynos: interesting post; the rendering issue is a bit of a problem though, do you have ideas about where to take that?
07:56:34  <Raynos>Rvagg: some. The rendering itself is very efficient
07:56:50  <rvagg>Raynos: not if you have a complex scene to render tho I imagine
07:57:13  <Raynos>Its just you recreate object data structures representing the scene each tick
07:57:40  <Raynos>The actual canvas / webgl Rendering is easy to oprimize
07:57:44  <rvagg>k, well you've piqued my interest, I'll be checking out your lib a bit more
07:58:29  <Raynos>Its the spike in the gc for creating large disposable data structures every tick that kills performance
07:58:43  <Raynos>Check the Mario demo too
07:58:58  <Raynos>Mario is more impressive
08:01:14  <rvagg>Raynos: and... how do I make the mario example do something?
08:01:32  * rvaggis clicking, randomly mashing the keyboard, nada
08:07:09  <Raynos>Arrow keys
08:10:57  <rvagg>no work
08:11:02  <Raynos>rvagg: up arrow key but its a bit weird
08:11:09  <Raynos>then check console for errors
08:11:12  <rvagg>trying chrome & ff
08:11:14  <rvagg>no errors
08:11:57  <Raynos>your right
08:11:59  <Raynos>i broke it
08:14:07  <Raynos>fixing
08:15:00  <dominictarr>Raynos: https://github.com/dominictarr/pull-stream
08:17:29  * defunctzombie_zzchanged nick to defunctzombie
08:17:36  * blobaumquit (Ping timeout: 264 seconds)
08:17:52  * st_lukequit (Remote host closed the connection)
08:20:49  <Raynos>rvagg: fixed mario bug. redeploying graphics server
08:22:17  <Raynos>dominictarr: your logger example is broken
08:22:43  <dominictarr>I see
08:23:20  <dominictarr>err should be end
08:23:40  <dominictarr>fixed
08:26:18  <Raynos>dominictarr: duplex syntax melts my brain
08:26:32  <Raynos>i think you should name all the anonymous functions readerN and readableN
08:26:40  <Raynos>for readability so I can remember the stack in my head
08:27:26  <dominictarr>use yes
08:27:30  <dominictarr>sorry
08:27:31  <dominictarr>yes
08:27:46  <dominictarr>so, a `reader` is a function that takes a readable
08:27:47  <Raynos>rvagg: unbroke mario demo!
08:27:58  <Raynos>dominictarr: its 1.30am. I wont get it now :p
08:28:07  * tilgoviquit (Remote host closed the connection)
08:28:09  <dominictarr>and a readable isa function that takes a `function (end, cb)` function
08:28:16  <dominictarr>(just thinknig out loud)
08:28:54  <Raynos>I like your (end, cb) vs (end, data) btw
08:28:55  * defunctzombiechanged nick to defunctzombie_zz
08:29:08  <Raynos>well (close, cb) vs (end, data)
08:29:41  <dominictarr>yes, (almost) just like node callbacks
08:30:08  <dominictarr>maybe should rename `end` to `stop`
08:30:24  <dominictarr>?
08:30:53  <dominictarr>Raynos: having a separate arg for end avoids any type checking
08:31:14  <dominictarr>only need to distinguish between end and error
08:31:24  <Raynos>yeah its nice
08:31:26  <dominictarr>but not between end, error, and anything
08:31:29  <Raynos>but ugh my head >_<
08:31:52  <dominictarr>I also have a pipeable function that simplifies stuff
08:32:11  <Raynos>readable(close, writable) & writable(end, data)
08:32:18  <Raynos>blargh
08:32:30  <Raynos>writable(readable) readable(close, writable) write(end, data)
08:32:43  <dominictarr>pipeable(function (readable, arg1, arg2, etc) { return function (end, cb) { … } } )
08:32:49  <Raynos>readable(close, write) !
08:33:11  <dominictarr>'close' sounds like an action
08:33:21  <Raynos>function writable(readable) { readable(null, function write(end, data) { /* do stuff */ readable(null, write) })
08:33:21  <dominictarr>it should be `closed`
08:33:29  <Raynos>dominictarr: close is an action!
08:33:42  <Raynos>its the writable telling the readable "i am done. close fd kthxbai"
08:33:45  <dominictarr>it's a value, not a function, though
08:33:50  <Raynos>Oh true
08:34:00  <Raynos>mah
08:34:02  <Raynos>i see why streams
08:34:03  <Raynos>are objects
08:34:05  <Raynos>with methods
08:34:12  <Raynos>its so less confusing :P
08:34:21  <dominictarr>nah, this isn't confusing
08:34:35  <dominictarr>you are too object oriented
08:37:27  <Raynos>;_;
08:37:30  <Raynos>i am offended.
08:40:26  <dominictarr>haha, sorry
08:40:32  <dominictarr>Raynos: what about this https://github.com/dominictarr/pull-stream#pipeable
08:41:16  <Raynos>MY HEAD
08:41:16  <LOUDBOT>MIRRORING OF ALL ASK MEFIS ON YAHOO ANSWERS
08:41:18  <Raynos>IT WILL EXPLODE
08:41:19  <LOUDBOT>A FUCKING TIMESTAMP IT'S THE TIME, STAMPED NEXT TO THE LINES THAT YOU'RE FUCKING COMPLAINING ABOUT
08:41:26  <Raynos>I AM RECURSING IN MY HEAD
08:41:26  <LOUDBOT>WHY CANT SOMEBODY NUKE FUCKING MONSANTO
08:41:38  <Raynos>READABLE READ READABLE READ READABLE READ READER READ READER READABLE READ READER READABLE
08:41:38  <LOUDBOT>IN A WORLD WITHOUT SHADY BULLSHIT
08:42:13  <dominictarr>LOL
08:43:18  <dominictarr>Raynos: so, with pipeable(…) it's basically just recurse-stream, except with two args, and no special types
08:45:06  <dominictarr>Raynos: thinking of changing pipeable so that it returns a function (readable) with a .pipe method added
08:46:17  <dominictarr>and, pipe would return a read function: function (end, cb); but with a pipe method attached
08:47:00  <dominictarr>then you could do var read = x.pipe(y).pipe(z)
08:47:37  <Raynos>i think easy backpressure and easy transformation stream writing is core
08:47:43  <Raynos>pipable sugar is a second
08:47:55  <Raynos>pipeable is definitely needed
08:48:05  <Raynos>because you need x.pipe(require("request")(uri)).pipe(z)
08:48:10  <Raynos>thats what makes streams so composable
08:48:55  <dominictarr>so, what about a.pipe(b).pipe(a)
08:49:52  <dominictarr>there might need to be a special way to do that
08:49:54  <juliangruber>substack: I want to update tapedeck to use browserify v2 but I need to implement watch mode
08:50:02  <juliangruber>substack: is there an easy way to do this?
08:50:11  <Raynos>i think a.pipe(b).pipe(a) isnt really needed
08:50:35  <Raynos>a1.pipe(b1), b2.pipe(a2) will do for now
08:50:58  <dominictarr>yeah, you could do that, but then every tcp http etc becomes two things
08:51:04  <Raynos>yep
08:51:07  <dominictarr>and only transform streams look duplex
08:51:13  * nk109quit (Quit: laters...)
08:51:17  <Raynos>well
08:51:21  <Raynos>i have to think about things more
08:51:23  <dominictarr>hmm, but maybe that is better?
08:51:43  <Raynos>the focus should be simplicity of streams always
08:51:48  <Raynos>simpler is better
08:51:59  <substack>juliangruber: there's not a good place, no
08:52:23  <substack>if deps() emitted a 'file' event that could work
08:52:33  <dominictarr>yes
08:52:46  <dominictarr>well, this is all experimentation
08:54:03  <Raynos>agreed
08:54:16  <Raynos>one of the biggest pain points ive had with reducibles
08:54:20  <Raynos>is lazy-ness & stacktraces
08:54:31  <Raynos>the first is just too confusing.
08:54:42  <Raynos>the second is the way it recurses murders the readability of a stacktrace
08:57:55  * dominictarrquit (Read error: Connection reset by peer)
08:58:22  * dominictarrjoined
08:58:29  <dominictarr>right… hmm, I think pull/recurse-stream should be much simpler
08:58:41  <dominictarr>and lazyness is useful
08:58:59  <dominictarr>reducables is only half-lazy, though, right?
08:59:07  <dominictarr>once it's connected it's push.
08:59:44  <Raynos>yes
08:59:53  <Raynos>but you can connect things dynamically
09:00:05  <Raynos>map(r1, function (data) { return filter(r2, ...) })
09:00:15  <Raynos>of course r2 may have already emitted some data you lost etc
09:00:22  <dominictarr>streams of streams
09:01:33  * nicholasfquit (Read error: Connection reset by peer)
09:01:43  <Raynos>yep
09:02:05  * nicholasfjoined
09:02:13  <Raynos>dominictarr: we should write a bunch of tests for these pull streams, like backpressure / hwm / takeWhile / map / mapAsync / piping / depthFirst
09:02:19  <Raynos>so that we can compare them all
09:02:29  <Raynos>I need to implement depthFirst, takeWhile & piping
09:02:42  <Raynos>also re-implement & benchmark fsreadStream & fswriteStream
09:02:42  <dominictarr>yes, and an adapter for each, and then reuse the tests
09:02:58  <Raynos>an adapter isn't needed per-se
09:03:23  <Raynos>but more of a "a minimal pull stream should handle these use-cases without too much complexity"
09:03:35  <Raynos>test driven use cases
09:04:04  <Raynos>im also interested in benchmarking readStream & writeStream to see whether we can write more efficient pipes then node core
09:09:06  <dominictarr>yeah, well there is a lot less function calls, and property lookups
09:09:31  <dominictarr>I have seen slowdowns from just piping 5 throughs together
09:09:55  <dominictarr>it makes a measurable difference when doing something like reading from the disk even!
09:13:58  <dominictarr>Raynos: I know… we just make an object with {in: readable, out: reader}
09:14:35  <dominictarr>or, {write, read}
09:15:06  <Raynos>{ in: readable, out: reader, pipe: function (dest) { dest.out(this.in) } }
09:16:10  <dominictarr>something like that
09:17:46  <dominictarr>okay, gotta go find my flight
09:17:48  * dominictarrquit (Quit: dominictarr)
09:23:16  * dfggquit (Ping timeout: 240 seconds)
09:23:51  <juliangruber>defunctzombie_zz: docserv is super sweet!
09:25:10  * thatguydanquit (Quit: thatguydan)
09:29:02  <substack>FIXED
09:29:05  <substack>fucking finally
09:29:09  <substack>bouncy works great now
09:29:12  <substack>on 0.8 at least
09:42:27  <substack>ok fuck yes now I can play with pushover+bouncy experiments
09:46:22  * thatguydanjoined
09:53:35  * thatguydanquit (Quit: thatguydan)
10:02:19  * dfggjoined
10:12:03  <rvagg>firefox just got both asm.js and ParallelArray; I want node on SpiderMonkey
10:13:07  <rvagg>if I make it will anyone else join me? it'll have a much smaller core but be relatively Node-compatible
10:13:14  * dominictarrjoined
10:13:15  <rvagg>probably even use npm
10:13:37  <dominictarr>if npm could work, you should definately use it
10:13:44  <substack>back so soon!
10:13:58  <dominictarr>just waiting to board...
10:14:02  <dominictarr>then 14 hour flight
10:14:16  * spionjoined
10:14:19  <rvagg>dominictarr: 14 hours? 1/2 way to Ireland or something?
10:14:22  <substack>yow
10:14:41  <dominictarr>14 hours sydnes -> abu dabi
10:14:54  <dominictarr>then, another 8 hour flight or something
10:15:04  <rvagg>ah
10:15:29  <rvagg>I have a 5 hour wait in Frankfurt when I head over; that'll be interesting
10:15:52  * mmckeggjoined
10:15:53  <dominictarr>can be hard to find a power point in frankfurt
10:16:09  <rvagg>well, I have my kindleberrypi now!
10:16:09  <dominictarr>but there are always some somewhere
10:16:16  <dominictarr>oh, you'll be fine!
10:23:59  * dominictarrquit (Quit: dominictarr)
10:26:05  * marcello3djoined
10:26:19  * dominictarrjoined
10:31:06  * marcello3dquit (Ping timeout: 276 seconds)
10:33:24  * dominictarrquit (Quit: dominictarr)
10:35:42  * thatguydanjoined
10:36:30  * thatguydanquit (Client Quit)
10:40:32  * mmckeggpart
10:47:36  * shuaibjoined
10:51:32  * wolfeidauquit (Remote host closed the connection)
10:55:20  * thl0joined
11:12:29  * jibayjoined
11:24:13  * wolfeidaujoined
11:32:14  * spionquit (Ping timeout: 246 seconds)
11:44:51  * spionjoined
12:05:55  * shuaibquit (Read error: Connection reset by peer)
12:07:48  <chilts>Frankfurt is a bit of a crappy airport, I went through last year (and I lived south of Frankfurt for a year back in 1999-2000)
12:07:56  <chilts>random trivia
12:09:04  <wolfeidau>chilts: Started dyno, now waiting for the codes! :)
12:09:14  <wolfeidau>started/starred
12:11:40  * shuaibjoined
12:16:28  * shuaibquit (Ping timeout: 260 seconds)
12:18:29  * shuaibjoined
12:24:15  <juliangruber>substack: all tests are failing again https://ci.testling.com/juliangruber/periodic
12:24:23  <juliangruber>substack: https://browserling.com/queue?uri=http%3A%2F%2Fgit.testling.com%2Fbundle%2F1363955340129.fbd20b52.html&browser=chrome&version=25.0 404 file not found
12:24:57  <substack>the checked out dirs got moved, haven't updated the ui yet
12:36:17  * spionquit (Ping timeout: 246 seconds)
12:39:50  <juliangruber>substack: nvm, I see the rror
12:40:33  <juliangruber>when I do a try catch block to require either a component or a node core module browserify fails
12:42:23  <juliangruber>substack: is there a way to ship around this error?
12:42:35  <juliangruber>substack: and I don't mean "not use component"
12:43:11  <substack>you could use the browser field https://gist.github.com/shtylman/4339901#spec
12:43:43  <substack>anyways zzz &
13:04:01  * thl0quit (Remote host closed the connection)
13:05:45  * spionjoined
13:39:50  * thl0joined
13:53:17  * mikolalysenkojoined
14:12:45  * Domenic_quit (Ping timeout: 260 seconds)
14:27:54  * tmcwjoined
14:29:17  * Domenic_joined
14:41:39  * mikealquit (Quit: Leaving.)
14:41:53  * kenperkinsquit (Quit: Textual IRC Client: http://www.textualapp.com/)
14:45:40  <Domenic_>Did everyone see this? http://www.echojs.com/news/3309#up
14:45:44  <Domenic_>upvote upvote upvote
14:46:48  <Domenic_>Ah yes I see from the comments on the article everyone has.
14:48:53  <Domenic_>Is stackvm the official browserify IRC we should point this guy to?
14:49:05  <Domenic_>I think a browserify IRC channel would be nice, maybe a Google groups.
14:53:15  * rannmannquit (Remote host closed the connection)
14:53:24  <Domenic_>We should put together a better "getting started" toolbox
14:53:31  <Domenic_>This guy has really good feedback
14:53:55  * marcello3djoined
14:56:35  * defunctzombie_zzchanged nick to defunctzombie
15:00:36  * rannmannjoined
15:01:28  <defunctzombie>juliangruber: thanks :)
15:05:13  * shuaibquit (Quit: Textual IRC Client: http://www.textualapp.com/)
15:11:46  * spionquit (Read error: Connection reset by peer)
15:12:07  * spionjoined
15:26:22  * dguttmanjoined
15:26:24  * kenperkinsjoined
15:38:40  * kenperkinsquit (Ping timeout: 252 seconds)
15:39:23  * kenperkinsjoined
15:45:58  * marcello3dquit (Remote host closed the connection)
15:46:53  * marcello3djoined
15:47:26  * marcello3dquit (Remote host closed the connection)
15:50:06  * CryptoQuickjoined
15:58:58  <juliangruber>defunctzombie: https://github.com/shtylman/node-browser-resolve/pull/13
15:59:20  <defunctzombie>juliangruber: test case plz :)
15:59:23  <juliangruber>this bug was causing browserify requiring my /index.js file which was the server
15:59:27  <defunctzombie>to avoid breaking in future
15:59:36  <juliangruber>I don't know really how this happened
16:00:09  <juliangruber>the module it failed at only required node_modules, no './relative/requires'
16:00:11  <juliangruber>if that helps
16:01:03  <defunctzombie>?
16:01:21  <defunctzombie>what do you mean node_modules?
16:01:31  <defunctzombie>as in just things from node_modules?
16:02:57  <defunctzombie>juliangruber: https://travis-ci.org/shtylman/node-browser-resolve/builds/5719436
16:03:04  <defunctzombie>seems that the builds failed with your patch
16:06:54  <juliangruber>my build works with it :D
16:07:03  <juliangruber>I'll try to come up with a test case
16:09:43  <spion>Domenic_, I liked that post. very similar experience to mine when I first got started with browserify.
16:10:35  <spion>and the best thing is that thats just the tip of the iceberg - the main game happens when you also put npm into the mix
16:10:38  <spion>:D
16:10:39  <Domenic_>spion: yeah. I liked it because I was a browserify user, then got on a project that was using RequireJS, and ran into exactly those problems. Kind of the reverse experience.
16:11:31  <spion>yup
16:11:43  <spion>we completely switched from requirejs to browserify here at work and I never looked back.
16:11:47  <defunctzombie>juliangruber: thanks :) when I get the test case I will try it locally and merge
16:11:54  <defunctzombie>juliangruber: it is probably travis being silly
16:12:49  <spion>the best part - now we also use separate npm packages for every browser-side module
16:16:25  <spion>not to mention the implications for testing
16:28:42  <juliangruber>defunctzombie: test case added
16:28:46  <juliangruber>well not really a test case
16:28:51  <juliangruber>but a way to reproduce the bug
16:29:33  * shamajoined
16:31:08  * marcello3djoined
16:35:13  <juliangruber>defunctzombie: does this look good to you? https://github.com/juliangruber/tapedeck/issues/7#issuecomment-15307057
16:35:29  <juliangruber>so it will support browserify v2 and transforms and all that nice stuff
16:36:40  <defunctzombie>juliangruber: personally, I wouldn't want to depend on browserify in my project
16:36:46  <defunctzombie>juliangruber: I would just want it to happen
16:36:59  <defunctzombie>juliangruber: when I use zuul, it just uses browserify
16:37:05  <juliangruber>but then I have to support all browserify parameters
16:37:10  <defunctzombie>juliangruber: why?
16:37:12  <juliangruber>-c, -t
16:37:19  <juliangruber>because I want it to support transforms
16:37:33  <defunctzombie>juliangruber: doesn't that happen for you if the person puts something in their package.json?
16:37:42  <juliangruber>since I use brfs
16:38:00  <defunctzombie>juliangruber: iirc there was something about modules exposing the transforms they use
16:38:11  <defunctzombie>juliangruber: so that the consumer of the module doesn't need to know what transform it was
16:38:13  <defunctzombie>substack: ^
16:42:48  * mikolalysenkoquit (Ping timeout: 264 seconds)
16:44:30  * mikealjoined
16:59:25  * tilgovijoined
17:04:59  * marcello3dquit (Read error: Connection reset by peer)
17:05:07  * marcello3djoined
17:12:35  * jcrugzzjoined
17:17:52  * tmcwquit (Read error: Connection reset by peer)
17:18:14  * tmcwjoined
17:27:47  * marcello3dquit (Remote host closed the connection)
17:37:39  * marcello3djoined
17:53:03  * tmcwquit (Remote host closed the connection)
18:03:16  * tmcwjoined
18:04:18  <substack>juliangruber: put "browserify": { "transform": [ "brfs" ] } in your package.json
18:10:22  <substack>Domenic_: there are a ton of comments are reddit too http://www.reddit.com/r/javascript/comments/1as76j/journey_from_requirejs_to_browserify/
18:16:01  * Domenic_quit (Remote host closed the connection)
18:16:27  * Domenic_joined
18:20:32  * nk109joined
18:21:15  * Domenic_quit (Ping timeout: 260 seconds)
18:22:23  * ins0mniajoined
18:30:22  * st_lukejoined
18:36:50  <defunctzombie>substack: "To paraphrase ... when you use RequireJS, you end up with 2 problems."
18:36:52  <defunctzombie>substack: rofl
18:39:14  * Domenic_joined
18:41:36  * AvianFlujoined
18:42:02  * spionquit (Ping timeout: 246 seconds)
18:42:47  * st_lukequit (Remote host closed the connection)
18:44:03  * st_lukejoined
18:45:50  * st_lukequit (Remote host closed the connection)
18:48:21  * st_lukejoined
18:52:01  <Raynos>juliangruber: ;_; why you component.json
19:07:28  * shuaibjoined
19:13:52  * tilgoviquit (Remote host closed the connection)
19:19:20  * st_lukequit (Remote host closed the connection)
19:21:44  * nk109quit (Quit: Computer has gone to sleep.)
19:28:49  * nk109joined
19:48:42  * shuaibquit (Quit: Textual IRC Client: http://www.textualapp.com/)
19:50:18  <mbalho>whoaa @creativecommons just retweeted me
19:51:33  <mbalho>jlord: i rewrote the 'business logic' section of https://github.com/maxogden/art-of-node#understanding-node, doee it make more sense to you now
19:52:45  <defunctzombie>mbalho: \o/
19:53:39  <defunctzombie>Here are some fun things made easy with node thanks to its non-blocking nature:
19:53:44  <defunctzombie>mbalho: trade bitcoins :)
19:53:53  <mbalho>got a good link for that?
19:54:37  <defunctzombie>hm
19:54:42  <defunctzombie>I have a lib I worked on some
19:54:56  <defunctzombie>https://github.com/bitfloor/trader.nodejs
19:55:10  <defunctzombie>https://github.com/shtylman/fixjs
19:55:23  <defunctzombie>^ that needs docs but is interesting cause you can trade more than bitcoins with fix :)
20:05:20  * st_lukejoined
20:08:23  * mikealquit (Quit: Leaving.)
20:12:43  <kanzure>damn, phantomjs really needs some sort of concept of package management
20:12:59  <kanzure>phantomify/volo/npm looks close but i'm not completely convinced.
20:18:08  <wolfeidau>mbalho: Suggestion, I would introduce I/O and streams a bit earlier as it underpins all the following points
20:19:25  <jlord>mbalho: yeahhh!!
20:23:09  <st_luke>just overheard someone say capital 'p' ASS word
20:26:43  <mbalho>wolfeidau: I/O is introduced right away, streams are intuitive but their utility value is more nuanced so i can mention them early but i dont wanna go into explaining them right away
20:31:44  <wolfeidau>mbalho: Yeah, it depends on how much the reader knows, currently you define what the the acronym means but not really what they are if you know what i mean
20:32:58  <mbalho>wolfeidau: between " I/O (input/output, reading/writing) sources" and the 8-bit diagram do you think it explains what I/O is?
20:33:19  <mbalho>also the "What is an "I/O based program"? Here are some common I/O sources:" list
20:35:17  <wolfeidau>mbalho: Think about if you don't know what I/O is, would you understand anything that follows on from that point?
20:35:57  <defunctzombie>mbalho: I wouldn't focus on any of that from the start
20:36:03  <defunctzombie>mbalho: I would just stick with "callbacks"
20:36:05  <defunctzombie>and "events"
20:36:13  <mbalho>wolfeidau: from what point?
20:36:25  <defunctzombie>and just tell the users these things "happen" at "some point" in the "future"
20:36:36  <mbalho>defunctzombie: hmm interesting, ill think about simplifying
20:36:45  <defunctzombie>and since we don't know when they finish, we provide a container for the code which should run after they complete
20:36:55  <defunctzombie>to allow for other code to continue running
20:37:08  <defunctzombie>I/O and event loops are complex topics
20:37:16  <defunctzombie>but "oh.. this will be called later" is not
20:37:17  <wolfeidau>mbalho: Yeah defunctzombie has a good point events are a really good starting point
20:37:37  <defunctzombie>mbalho: compare it to a "click" evnet on the client
20:37:42  <defunctzombie>you don't know when the client will do the click
20:37:54  <defunctzombie>so you have to package up the "function" to handle it
20:39:19  * mikealjoined
20:42:02  <wolfeidau>mbalho: I only raised it because I tried to explain I/O and streams to a collegue this week and he looked at me pretty blankly, we then went through the how things are broken into "buffers" and through as a stream of events into a routine that you get via a function and write to a file or relay onto another stream
20:43:11  <wolfeidau>mbalho: Hi btw, we met at campjs in the gold coast :)
20:43:18  <mbalho>wolfeidau: hiya :D
20:43:36  <thl0>chrisdickinson: btw I still need to upgrade to be compat with browserify and browserify-shim @2
20:43:43  <wolfeidau>mbalho: I am the guy that works on networks and data stuff :)
20:43:45  <thl0>chrisdickinson: browserify-ftw
20:44:18  <thl0>chrisdickinson: only affects the generated build script, all else is version agnostic
20:45:50  <chrisdickinson>substack: any idea why https://ci.testling.com/chrisdickinson/plate isn't receiving post-receive hook requests?
20:45:59  <wolfeidau>mbalho: Writing is both hard and objective, is a great challenge though, really makes you think about things you understand, especially when attempting to introduce them to someone new to the subject :)
20:46:04  <defunctzombie>https://github.com/andris9/Nodemailer/issues/148
20:46:07  <defunctzombie>GOD FUCKING DAMMIT
20:46:08  <LOUDBOT>FATBOY SLIM: JUST A BAND
20:47:52  <mbalho>wolfeidau: OH HEY yea now i remember your username
20:48:05  <mbalho>wolfeidau: glad you made it to #stackvm
20:48:20  <mbalho>wolfeidau: i feel like i need to A/B test to see how far readers get before giving up
20:48:23  <substack>chrisdickinson: it looks like it did?
20:48:39  <wolfeidau>mbalho: cheers! Lot of amazing discussion here :)
20:48:54  <chrisdickinson>substack: it did, but i've pushed up commits since 86e60c0
20:49:04  <substack>not sure
20:49:12  <substack>on the master branch?
20:49:14  <chrisdickinson>yep
20:49:29  <wolfeidau>mbalho: What an interesting idea, I wonder who you could ask in your area
20:49:37  <substack>maybe github is tripping over itself
20:49:56  * mikealquit (Ping timeout: 258 seconds)
20:50:19  * st_lukequit (Remote host closed the connection)
21:01:37  * nicholasfquit (Read error: Connection reset by peer)
21:02:05  * nicholasfjoined
21:02:15  * mmckeggjoined
21:14:07  * wolfeidauquit (Remote host closed the connection)
21:15:48  * mikealjoined
21:20:06  <rowbit>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
21:20:06  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
21:20:20  * mikealquit (Ping timeout: 252 seconds)
21:23:26  <juliangruber>how do you dispose a readable / duplex stream?
21:30:43  <defunctzombie>edit the program
21:30:45  <defunctzombie>*exit
21:32:35  * fotoveritequit (Quit: fotoverite)
21:32:46  * st_lukejoined
21:33:21  <defunctzombie>thl0: That of course assumes that the authors of all dependencies understand semver.
21:33:29  <defunctzombie>thl0: wishful thinking
21:33:38  <defunctzombie>thl0: no one understands semver
21:41:14  * ins0mniaquit (Ping timeout: 252 seconds)
21:50:11  <Raynos>isaacs, defunctzombie: semver npm suggestion
21:50:13  <Raynos>fix the semver parser
21:50:24  <Raynos>have it throw on anything that's not `x.y.z` or `~x.y.z`
21:50:36  <Raynos>any usage of `*` `latest` `>=` should just throw
21:50:51  <Raynos>if they want that kind of bullshit they can link to tarballs or git uris
21:51:07  <Raynos>isaacs: release it as `npm 2.0 revenge of the semver` :D
21:52:34  <defunctzombie>+10000x10000
21:54:48  * st_lukequit (Remote host closed the connection)
21:55:26  <isaacs>Raynos: funny, but probably not going to happen.
21:55:43  <Raynos>isaacs: it needs to happen
21:55:47  <Raynos>there are no good use-cases
21:55:49  <defunctzombie>ultimate sadness
21:55:51  <Raynos>for any of these other things
21:55:58  <Raynos>isaacs: can no have it?
21:56:04  <sorensen>why arent they useful?
21:56:04  <defunctzombie>haha
21:56:14  <sorensen>i use most of those ;)
21:56:18  <isaacs>Raynos: you have to realize, in the political spectrum of the node community, you're like the religious right wing
21:56:25  <defunctzombie>sorensen: you need to stop
21:56:26  <Raynos>isaacs: No!
21:56:29  <Raynos>I am the religious left wing
21:56:33  <isaacs>Raynos: we need you, to pull the cord, and keep it tight.
21:56:37  * defunctzombieis anarchist
21:56:43  <isaacs>Raynos: sure, whatever. some kind of wacky crazy person.
21:56:50  <defunctzombie>haha
21:56:54  <Raynos>:D
21:56:58  <sorensen>they all have uses
21:57:05  <defunctzombie>sorensen: no, they don't ;)
21:57:11  <Raynos>why can we not fuck over backcompat in favor of my flavour of the month?
21:57:15  <Raynos>:(
21:57:17  <isaacs>Raynos: the point is, your view is "$EXTREME_POSITION!!! Everyone should be forced to be this way!!!"
21:57:18  <defunctzombie>sorensen: there is no valid use case for '*', >= or latest
21:57:23  <Raynos>religion of the month
21:57:24  <isaacs>Raynos: in the US, the right does that more than the left.
21:57:26  <sorensen>other than development?
21:57:34  <sorensen>and being able to npm install once a week to get latest versions
21:57:43  <defunctzombie>sorensen: that is retarded
21:57:48  <defunctzombie>sorensen: do you realize what that means?
21:57:57  <defunctzombie>sorensen: that means that every week your module code changes
21:58:11  <sorensen>i have a fairly good idea what it does ;)
21:58:18  <isaacs>Raynos: but my job is to tell you that you have to just convince people, if you want them to agree with you, because that is how anarchy works.
21:58:25  <defunctzombie>sorensen: how the fuck do you ever expect to hunt down issues or have and sort of development experience for other devs
21:58:51  <sorensen>all depends the stage of the project and how many other devs are on it
21:59:00  <defunctzombie>sorensen: it never does
21:59:07  <defunctzombie>sorensen: you think it does, but it doesn't
21:59:22  <defunctzombie>sorensen: ive made many a products and stages and all sorts of nonsense
21:59:25  <sorensen>i appreciate your opinion
21:59:29  <Raynos>isaacs: how do I thought leader instead of preach my religion of the month?
21:59:32  <defunctzombie>and the 1 thing that keeps everyone sane is consistency
21:59:32  <sorensen>but it is exactly that
21:59:52  <juliangruber>new node module: browser-run! `echo "console.log(document.location)" | browser-run` => `http://localhost:53227/`. http://ghub.io/browser-run
22:00:29  <defunctzombie>sorensen: I don't want ot be fixing random "issues" every day because some idiot thinks they write bug free code
22:00:40  <defunctzombie>sorensen: anyhow.. it will bite you one day and you will see ;)
22:00:51  * sorensensigh
22:01:06  <sorensen>i think you miss the point entirely
22:01:11  <Raynos>juliangruber: you bought `ghub.io` just to forward to your modules?
22:01:11  <sorensen>but feel free to rant more
22:01:23  * defunctzombiewrites software that moves money and not tweets (different shit matters to different people)
22:01:25  <Raynos>juliangruber: MOTHER OF GOD TIS IS GENUINS
22:01:47  <juliangruber>Raynos: ghub.io requests the github url from npm. like a better npmjs.org/<pkgname>
22:01:57  <defunctzombie>sorensen: ive heard all the arguments and the '*' argument simply comes down to developer laziness
22:02:15  <defunctzombie>sorensen: if there was a better way, I would be all for it
22:02:22  <juliangruber>Raynos: :)
22:02:33  <Raynos>I use `npm.im/<pgk>`
22:02:35  <defunctzombie>sorensen: anyhow, carry on with your ways. I just opine in mine :)
22:02:45  <Raynos>juliangruber: why do you dual publish as components ;_;
22:02:49  <juliangruber>Raynos: I found that I always click on the github link first
22:03:08  <juliangruber>Raynos: maybe could get me more popularity :D
22:03:13  <juliangruber>I'm using browserify
22:03:19  <Raynos>but you fuel the component community
22:03:24  <Raynos>the component community needs to die
22:03:30  <Raynos>and be absorbed into npm
22:03:33  <defunctzombie>isaacs: only reason I find that suggestion interesting is because I like my tools to help me prevent errors versus letting me make them
22:03:52  <Raynos>defunctzombie: do you seriously never use `~` ?
22:04:29  <defunctzombie>Raynos: correct
22:04:49  <defunctzombie>Raynos: even when I depend on my own modules
22:04:53  * st_lukejoined
22:05:34  <defunctzombie>Raynos: it isn't about being pedantic, it is about history and consistency. If I can't reproduce the EXACT same codebase in a month for my module then that will make it that much harder to track down an issue
22:06:07  <defunctzombie>Raynos: likewise, if there is a bug in a module, and I make a workaround in the consumer of the module, I don't want a "patch" fix to fuck up my workarounds
22:06:40  <defunctzombie>Raynos: so it is a combination of those two things
22:06:50  <defunctzombie>Raynos: during development (locally) I npm link all the time
22:07:02  <defunctzombie>Raynos: but package files are always explicit about intent
22:07:38  <defunctzombie>Raynos: they whole semver and floating range thing comes from a time when deps were not localized under the module
22:07:50  <defunctzombie>Raynos: so you had to have some flexibility otherwise nothing would install
22:08:53  <defunctzombie>isaacs: when you depend on '*', and then claim to follow semver, that doesn't make any sense because your module number won't change but the behavior of your module day to day can easily change
22:09:15  <defunctzombie>isaacs: anyhow, I appreciate the position that '*' is here to stay (as I am sure it would fuck over the majority of the npm modules)
22:09:19  <defunctzombie>but those would be fixed fast
22:09:21  <defunctzombie>haha
22:09:55  <Raynos>defunctzombie: I like patch for own modules
22:10:00  <Raynos>because im too lazy
22:10:03  <Raynos>to go and update them all xd
22:10:09  <defunctzombie>Raynos: I too like to think I am a god programmer ;)
22:10:19  <Raynos>i never said im a god
22:10:21  <Raynos>its just if I fuck up
22:10:24  <Raynos>ill bump patch again
22:10:27  <Raynos>with the unfuck up
22:10:40  <Raynos>the convenience of `~` is greater then the inconvenient of fixing fuck ups
22:10:55  <st_luke>jesusabdullah: whats up?
22:11:12  * CryptoQuickquit (Ping timeout: 258 seconds)
22:16:15  * mikeal1joined
22:22:16  <juliangruber>if I have `programA | programB` how can I make the whole thing quit when programB quits, even when programA is still running?
22:31:09  <mikeal1>so
22:31:11  <mikeal1>browserify issue
22:31:29  <mikeal1>i'm using brfs
22:31:50  <mikeal1>but, the path to the file
22:31:53  <mikeal1>usings path.join()
22:32:09  <mikeal1>and it's not liking that
22:34:41  <juliangruber>because it's just static analysis
22:35:21  <juliangruber>but it could be made to work
22:36:41  <Domenic_>oh but it works with __dirname, awesome
22:36:41  <defunctzombie>mikeal1: brfs wants to know at build time what the path is so it can lookup the file and bundle it in
22:36:47  <Domenic_>so basically windows users need not apply
22:36:58  <Domenic_>s/__dirname/__dirname + 'string'/
22:37:00  <defunctzombie>Domenic_: yes, cause __dirname is known at build time
22:37:16  <Domenic_>path.join is known at build time
22:37:34  <defunctzombie>mikeal1: Domenic_: only if evaluated, and yes, it can be done
22:37:55  <defunctzombie>Domenic_: substack would probably take a patch if you figured a nice way (me thinks)
22:38:18  <mikeal1>ok
22:38:18  <Domenic_>yeah, but, i'd need to find a use case for brfs first :P
22:38:20  <mikeal1>so, how do i do this?
22:38:28  <mikeal1>because i'm getting "path" does not exist
22:38:48  <juliangruber>Domenic_: brfs works very well for me
22:39:15  <mikeal1>https://gist.github.com/mikeal/5225307
22:39:37  <mikeal1>that's all in the root of the module
22:39:48  <Raynos>require path? :p
22:39:56  <juliangruber>mikeal1: why not __dirname + '/../templates/' ?
22:40:04  <juliangruber>oh
22:40:05  <juliangruber>nvm
22:40:05  <mikeal1>that's all at the top, obviously
22:40:09  <juliangruber>there is readdirSync
22:40:19  <juliangruber>brfs just does readFileSync
22:40:22  <Raynos>I see
22:40:42  <mikeal1>same error
22:40:45  <mikeal1>here
22:41:25  <mikeal1>more complete
22:41:25  <mikeal1>https://gist.github.com/mikeal/5225307
22:41:30  <mikeal1>and the error in a comment
22:41:43  <defunctzombie>Domenic_: so here is how you fix the issue
22:41:54  <defunctzombie>Domenic_: https://www.virtualbox.org/
22:41:57  <defunctzombie>or
22:42:04  <defunctzombie>http://store.apple.com/us
22:42:27  <defunctzombie>I am a big fan of: http://store.apple.com/us/browse/home/shop_mac/family/macbook_air
22:42:35  <defunctzombie>has very good battery life
22:42:57  <defunctzombie>and can run all the dev tools
22:43:13  <juliangruber>mikeal1: still, why not simple string concatenation?
22:43:14  <defunctzombie>the window manager leaves something to be desired
22:43:43  <Raynos>mikeal1: we would need to patch brfs
22:43:46  <Raynos>to inject the path token
22:43:57  <juliangruber>mikeal1: basically everything brfs does happens before the code is exectured, doing static analysis.
22:43:58  <Raynos>right now it only injects https://github.com/substack/brfs/blob/master/index.js#L11
22:44:01  <defunctzombie>isaacs: the internet is full of retarded people who have opinions and feel comfortable sharing them behind avatars since they never have to face people
22:44:06  <Raynos>it runs it global eval
22:44:11  <Raynos>and `path` is not a global variable
22:44:14  <defunctzombie>isaacs: that basically sums up that whole shitshow
22:44:41  <juliangruber>Raynos: fs.readFileSync(myVar + '/something') would still be broken, right?
22:44:57  <Raynos>yes
22:45:05  <isaacs>defunctzombie: if by shitshow you mean "society ever since the invention of the written word", then yes.
22:45:18  <defunctzombie>isaacs: +1
22:45:34  * defunctzombiewas always a fan of pictograms over words
22:46:36  <isaacs>defunctzombie: i guess s/written word/written communication/
22:46:36  <mikeal1>juliangruber: the __dirname is there so that it's relative to where the file is rather than $PATH when the script is run
22:47:01  <mikeal1>and path.join() is used because + '/' breaks on windows which makes it a bad habit
22:47:23  <juliangruber>mikeal1: I thought node rewrote slashes on windows
22:47:32  <mikeal1>Raynos: so if i do string concat it'll work
22:47:53  <juliangruber>if you only use __dirname and __filename as variables
22:48:03  <st_luke>afaik path.resolve() is windows-safe
22:48:22  <mikeal1>Raynos: with string concat i get this problem
22:48:22  <mikeal1>ReferenceError: f is not defined
22:48:32  <mikeal1>this is being way too dumb, basically :)
22:50:34  * fotoveritejoined
22:50:46  <st_luke>heartburn medicine is amazing
22:50:51  <st_luke>it's a miracle
22:52:08  <juliangruber>mikeal1: how could a build process know the values of your variables? You can write a browserify transform that inlines the files you need
22:52:20  <juliangruber>and does the fs.readDir stuff
22:53:11  <mikeal1>i have it working now
22:53:20  <mikeal1>but my test is failing, which is strange
22:53:59  * tmcwquit (Remote host closed the connection)
22:58:47  * jcrugzzquit (Ping timeout: 252 seconds)
22:59:21  <mikeal1>so
22:59:50  <mikeal1>the string i get for my test, when i do a bundle, is slightly different than the one i get when i generate it again
22:59:52  <mikeal1>same length
22:59:58  <mikeal1>but comparison fails
23:01:04  <juliangruber>mikeal1: I had the problem of trailing '\n's so I do fs.readFileSync(...).replace(/\n/g, ''). Maybe that's your issue too
23:02:14  <mikeal1>i don't think that's it
23:02:21  <mikeal1>why would it differ between two runs of bundle?
23:02:32  <mikeal1>and how would the length still match
23:02:48  * wolfeidaujoined
23:02:55  <juliangruber>can you get a diff?
23:04:20  <juliangruber>maybe because it's a streaming transformation framing is adding artefacts at different positions
23:06:32  <Raynos>mikeal1: yes its way too dumb ;)
23:06:43  <Raynos>it sees the expression inside `fs.readFileSync(<exp>)` and tries to eval
23:06:49  <Raynos>the other option is to eval the entire file
23:06:55  <Raynos>and capture the result of <exp>
23:07:03  <Raynos>which may have side effects or crazy things
23:07:27  <juliangruber>there might be browser code everywhere
23:07:33  <juliangruber>so that won't work
23:08:00  <Raynos>then you need to spin up a chrome instance and run it there :D
23:08:10  <Raynos>using `run-browser`
23:08:14  <juliangruber>2 pass build process
23:08:44  <juliangruber>Raynos: shit, should the module be called run-browser? it's now called browser-run
23:12:09  <Raynos>xd
23:12:13  <Raynos>doesnt matter
23:13:22  <juliangruber>alrighty
23:14:20  <jesusabdullah>isaacs: Do you know how well globally installed peerDependencies are working in 0.8.x right now?
23:14:38  <isaacs>jesusabdullah: no idea, ping Domenic_
23:15:05  <Domenic_>jesusabdullah: they should work fine, it just globally installs the peers
23:15:22  * tmcwjoined
23:15:31  <Raynos>my experience with peer deps
23:15:34  <Raynos>is mother of god never again
23:15:48  <Raynos>just dont write plugins x.x
23:15:49  <jesusabdullah>Domenic_: okay, do you know when it became stable?
23:16:11  <Domenic_>jesusabdullah: around 2013-02-08
23:16:19  <jesusabdullah>Node version?
23:16:20  <jesusabdullah>:)
23:16:26  <jesusabdullah>I'll do some testing myself
23:16:38  <jesusabdullah>I'm just thinking I may have to bust out the engines field if I make this project use peerDeps
23:16:42  <Domenic_>npm 1.2.10...
23:16:44  <Domenic_>node 0.8.19
23:16:53  <jesusabdullah>okay, cool
23:17:22  <Raynos>jesusabdullah: What's this big thing about?
23:17:30  <jesusabdullah>Raynos: Look at it yourself :)
23:17:45  <Raynos>i looked at it :D
23:17:47  <jesusabdullah>Raynos: Lemme know what you think, if you like
23:17:57  <jesusabdullah>Raynos: It's our framework, I think it's pretty sweet
23:18:50  <jesusabdullah>Raynos: I'm doing a talk about it at scotlandjs, if you're gonna be there I encourage you to attend
23:18:57  <jesusabdullah>Raynos: If not, I'm sure it'll be online
23:19:09  <Raynos>i wont be there
23:19:12  <Raynos>big is crazy
23:19:16  <Raynos>because it uses `resources.use`
23:19:18  <Raynos>instead of require
23:19:26  <Raynos>i'd feel way better
23:19:34  <jesusabdullah>resource.use you mean
23:19:50  <Raynos>if it was `resource.use(require("resources/admin"))` instead of `resource.use("admin")`
23:19:52  <jesusabdullah>and you can require resources, .use is just a sugar that adds some nice features
23:20:21  <Raynos>im not a good targe
23:20:23  <Raynos>target*
23:20:26  <Raynos>because I hate frameworks
23:20:45  <rvagg>Raynos, we need to fix up WriteStream so it emits a 'pause' and also doesn't indefinitely buffer within tick, https://twitter.com/soldair/status/315237262076026880
23:20:56  <rvagg>Raynos: do you think perhaps it's time to pull in an external writable stream lib and replace what's there now?
23:21:12  <Raynos>rvagg: I think it's time for streams2
23:21:23  <jesusabdullah>Raynos: good thing I'm not trying to convince you to use it then :D
23:21:27  * wolfeidauquit (Read error: Connection timed out)
23:21:34  <juliangruber>rvagg: or use through?
23:21:57  * Domenic_quit (Remote host closed the connection)
23:22:10  <Raynos>rvagg: I havn't spend any time polishing https://github.com/Raynos/write-stream. I did a big push a while back ( https://github.com/Raynos/read-stream/commit/2e577f62ca14837f914d3fd59edcd4a93cd673af ) to really crock Readable
23:22:16  * wolfeidaujoined
23:22:24  <Raynos>I recommend you use `require("readable-stream").Writable`
23:22:50  <juliangruber>Raynos: readableStream.Writable is funny wording :D
23:22:52  <Raynos>rvagg: btw "emit pause" is not a thing
23:23:19  <rvagg>oh, yeah right, I mean return true or whatever it is these days
23:24:04  <rvagg>have writable streams changed much with streams2?
23:25:53  <rvagg>ugh, streams are still too messy
23:26:02  <jesusabdullah>Raynos: That said, I think you may still enjoy the talk. Big has some good ideas.
23:26:30  <Raynos>rvagg: all Writable does is do all the bullshit
23:26:36  <Raynos>its gives you a simple thing
23:26:39  <Raynos>and it does the protocol for you
23:26:44  <Raynos>including all the things
23:26:46  <Raynos>ALL THE THINGS
23:26:46  <LOUDBOT>I BLAME IK'S DILDOES
23:28:15  <Raynos>rvagg: yes streams are a mess
23:28:43  <Raynos>thats why me ( https://github.com/Raynos/recurse-stream ) and dominic ( https://github.com/dominictarr/pull-stream ) are experimenting
23:28:47  <Raynos>with "can this be simpler?"
23:30:08  * mikolalysenkojoined
23:30:35  <rvagg>any special considerations when using readable-stream for object streams?
23:31:44  * ForbesLindesayjoined
23:31:44  * thl0quit (Remote host closed the connection)
23:34:49  * fotoveritequit (Quit: fotoverite)
23:36:00  <isaacs>rvagg: set objectMode:true on the options object
23:36:15  <isaacs>rvagg: other than that, no. (you probably also want a lower default highWaterMark, as well)
23:36:29  <rvagg>isaacs: thanks
23:36:36  <isaacs>what do you think is messy?
23:41:52  * fotoveritejoined
23:43:00  <rvagg>isaacs: implementing them is a headache
23:43:19  <rvagg>isaacs: testing all the various possible states is a nightmare
23:43:28  <rvagg>isaacs: this https://github.com/rvagg/node-levelup/blob/master/lib/read-stream-state.js
23:43:37  * rvaggshakes fists
23:43:39  <isaacs>rvagg: yes, that is why you basically have ot use the core base classes.
23:43:46  <rvagg>but that's not streams2
23:43:52  <isaacs>rvagg: yes, it is streams2
23:43:56  <isaacs>those classes are streams2
23:44:02  <rvagg>as in, https://github.com/rvagg/node-levelup/blob/master/lib/read-stream-state.js isn't streams2
23:44:09  <rvagg>so hopefully it'll improve when we go streams2
23:44:12  <isaacs>oh, ok
23:44:22  <isaacs>you're saying that pre-v0.10 streams are messy?
23:44:35  <isaacs>if so, yes, I 100% completely agree, like you have no idea how much I fucking agree with that statement, omg.
23:44:45  <isaacs>story of my life for the last year.
23:44:52  <rvagg>isaacs: since I haven't had much concrete experience with streams2 then I don't feel very qualified to comment on them
23:45:25  <isaacs>rvagg: the idea is that you extend the class, and override one (or maybe 2, in some cases) method, and call push(chunk) with data, and you'er done.
23:45:32  <rvagg>it's all so brittle (streams1) that I'm kind of afraid to experiment with upgrading tbh
23:45:53  <isaacs>with streams2, you actually get a more reliable and simple streams1 out of it.
23:46:35  <rvagg>righto, will wade in those waters for levelup when I find time, unless someone beats me to it
23:49:14  * stlsaintjoined
23:52:51  * wolfeidauquit (Read error: Connection reset by peer)
23:53:12  <st_luke>isaacs: i made a `no` sticker out of the node one i got at the 0.10 release party a couple weeks ago
23:53:26  <st_luke>it's classy
23:53:30  <isaacs>st_luke: nice!!
23:53:33  <isaacs>st_luke: ahead of the curve :)
23:53:52  * wolfeidaujoined
23:54:01  <st_luke>isaacs: https://pbs.twimg.com/media/BFvnumACQAAQn48.jpg:small
23:54:34  <isaacs>nice
23:59:48  <jlord>isaacs: do you think that node could be made into a map? was thinking about that with mbalho.