00:00:01  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:07:43  * st_lukejoined
00:11:54  <robertjd_>isaacs: what do you use for os_process_timeout in couch
00:13:54  <isaacs>robertjd_: that just means something timed out.
00:14:12  <isaacs>robertjd_: like, couch was running a child process, and it took too long.
00:14:35  <robertjd_>isaacs: i'm getting it with large deps like testem. it i increase it to two minutes then i can get the dep
00:15:37  * fotoveritejoined
00:16:06  <isaacs>robertjd_: oh, you mean, what is my couchdb setting
00:16:08  <isaacs>one sec
00:16:46  <isaacs>1200000
00:16:49  <isaacs>2m
00:16:55  <robertjd_>word, thanks
00:17:04  <isaacs>er, wait... no, tha'ts 20m
00:17:08  <isaacs>:D
00:17:13  <robertjd_>:D !
00:22:27  <substack>isaacs, Raynos: the more I see streams2 stuff the more I think "worse is better"
00:22:34  <substack>and streams2 is worse enough
00:22:43  <substack>or streams1 I mean
00:22:58  <substack>just going to keep writing streams like usual vicariously through libraries like through
00:23:06  <substack>and I'll wait for those to start using streams2 for my
00:23:10  <substack>s/y$/e/
00:27:35  <Raynos>That makes sense
00:28:31  * fotoveritequit (Quit: fotoverite)
00:31:46  <isaacs>substack: you know, that's why there's all the backwards comp stuff.
00:31:55  <isaacs>substack: for most people, the net effect will be "pause works now"
00:32:04  <substack>yeah that will be nice
00:32:12  <substack>I just use through which has .queue() now
00:32:28  <substack>handles buffering
00:32:42  <isaacs>substack: .queue() will be handled by .push() on all Readable streams in 0.10
00:33:31  <substack>that is handy
00:34:04  <substack>oh yeah so I'm making a botnet again
00:34:29  <substack>aka splitting fleet up into lots of tiny pieces that actually work
00:36:56  * spionjoined
00:38:56  * mikolalysenkoquit (Ping timeout: 252 seconds)
00:39:36  * lyaunzbequit (Ping timeout: 245 seconds)
00:43:46  <substack>https://groups.google.com/forum/?fromgroups=#!topic/nodejs/wekldK1J0f4
00:44:11  * st_lukequit (Remote host closed the connection)
00:54:24  <jjjjohnnny>i use pause-stream
00:54:30  * lyaunzbejoined
00:54:35  <substack>jjjjohnnny: no longer necessary if you use through
00:54:38  * nk109quit (Quit: Computer has gone to sleep.)
00:55:34  <jjjjohnnny>i love dominictarr!!
00:55:53  <Raynos>substack: that doesn't handle duplex buffering
00:56:22  <jjjjohnnny>snap
00:56:24  <Raynos>which streams2 now handles
00:56:33  <Raynos>because for duplex (rare) there are two buffers
00:56:36  <Raynos>incoming and outgoing
00:57:03  <substack>I see.
00:57:05  * dominictarrjoined
00:57:13  <chapel>substack: awesome about browserify v2
00:57:36  <chapel>I like the changes, and pending applying it to a project, I will probably use it again
00:57:45  <substack>hooray!
00:57:59  <chapel>like the logo :D
00:59:02  * CryptoQuickquit (Read error: Operation timed out)
00:59:52  <substack>burrito time
01:00:23  <jjjjohnnny>burrito time-out called by team substack
01:02:23  <mbalho>lol
01:05:11  * nk109joined
01:09:51  <Raynos>I want to be able to require("__filename") and require("__dirname") instead of depend on them as magical tokens
01:10:23  * cianomaidinquit (Quit: cianomaidin)
01:13:16  * mikolalysenkojoined
01:15:47  <CoverSlide>woo browserify2 made my script.js drop by 400 lines and 10k bytes
01:16:33  <CoverSlide>oops, that's more like 8kb
01:16:38  <CoverSlide>but still, pretty kickass
01:17:42  * ralphtheninjajoined
01:18:38  <mbalho>nice
01:31:02  * defunctzombie_zzchanged nick to defunctzombie
01:33:11  <dominictarr>ins0mnia: I merged your pr, but made it take a string as default
01:33:33  <dominictarr>but allows a function if you have a special case
01:37:32  <ins0mnia>dominictarr: cool, will take a look
01:39:27  <ins0mnia>dominictarr: Ah I see why you did that, the case of select() attr must be a function whereas in the case of attribute() it's a string
01:39:30  <ins0mnia>dominictarr: smart
01:39:41  * jibayjoined
01:39:51  <substack>actually i got papusas instead
01:40:39  <ins0mnia>dominictarr: I'm gonna go ahead and implement radio()
01:40:42  <dominictarr>ins0mnia: yeah, that is the great thing with js, you can easily inject functions anywhere you might want flexible behaviour
01:40:45  <dominictarr>cool
01:42:34  <ins0mnia>dominictarr: I think it's possible to do multi-select too, the only difference is that return value is a single observable array.. which should work
01:43:10  <dominictarr>yeah, just returning an array that is the selected items (or an empty array) would work
01:43:20  <ins0mnia>yeah
01:43:34  <dominictarr>it should be two way, also
01:43:46  <ins0mnia>yes ofcourse
01:43:54  <dominictarr>so I can set the selection by setting the array of values
01:43:59  <ins0mnia>yup
01:44:48  <ins0mnia>I will just change _set and _get to loop through the array
01:46:28  * ralphtheninjaquit (Ping timeout: 248 seconds)
01:46:55  <ins0mnia>speaking of which how can I dynamically loop through an array and fill in the select options?
01:47:31  <ins0mnia>i.e. instead of manually writing h('select', h('option'.., h('option'...)
01:48:29  <dominictarr>h('select', 'a,b,c,d,e'.split('').map(function (e) { return h('option', e) }))
01:48:54  <ins0mnia>got it
01:49:03  <ins0mnia>is it a wise thing to build this into hyperscript?
01:49:07  <dominictarr>passing an array into hyperscript just adds all the elements like they are passed in directly
01:49:33  <dominictarr>ins0mnia: you mean should it be in hyperscript or observable?
01:49:42  <ins0mnia>dominictarr: in hyperscript
01:49:55  <Raynos>substack: what do you think about https://github.com/Colingo/populate#complex-example instead of something like hyperglue?
01:49:58  <dominictarr>hmm, yeah I have been thinking the same thing
01:50:13  <ins0mnia>dominictarr: something like h('select', {options: array}
01:50:30  <dominictarr>ins0mnia: oh, no that is weird
01:50:40  <dominictarr>and a {} means attributes
01:50:56  <ins0mnia>dominictarr: then maybe [], what were your thoughts about this?
01:51:31  <dominictarr>it already handles []
01:51:39  <Raynos>dominictarr: what do you think about taking hyperscript a step further towards something like hiccup ( https://github.com/weavejester/hiccup ). I like the idea of a template is a data structure
01:51:42  <dominictarr>by adding the elements
01:51:56  <dominictarr>that is why the [].map(…) works
01:52:08  <ins0mnia>dominictarr: yeah
01:52:52  <dominictarr>ins0mnia: yeah, I've been contemplating making a compile to hyperscript templating language
01:53:04  <dominictarr>but am too busy right now,
01:53:25  <dominictarr>and I think being able to use it directly is a good place to start iterating
01:53:39  <dominictarr>it would be great to make it really really terse though,
01:53:53  <ins0mnia>dominictarr: I think direct usage combined with observable is very powerful
01:54:13  <dominictarr>and it can be hard to match brackets, etc with lots of nested h(…,h(…)) etc
01:54:47  <dominictarr>ins0mnia: definately, any hyperscript templating would want to incorporate observable
01:55:24  <ins0mnia>dominictarr: what I'm thinking to do is add a special tag to the html files, say <hyper id="">
01:55:44  <ins0mnia>dominictarr: and look at hyperscript for building blocks
01:56:12  <ins0mnia>dominictarr: everything else is static, a hyperscript "widget" where needed, and it can be reused all over
01:56:17  <ins0mnia>dominictarr: which is awesome
01:57:09  <dominictarr>ins0mnia: not sure what you mean, what is in a <hyper> tag?
01:58:25  <ins0mnia>dominictarr: it's a simple shortcut for el.appendChild(), I'm keeping the html views in memory (scuttlebutt model) so when whenever a view needs to be served I dynamically inject the hyperscript in the correct place
01:58:45  <ins0mnia>dominictarr: rather than doing it programtically, then each hyperscript is a closed widget in a way
01:58:49  <dominictarr>oh right.
01:59:10  <dominictarr>I've been considering h(document.body, ...)
01:59:32  <dominictarr>passing an HTMLElement instead of a tag name, and just updating that tag
01:59:55  <dominictarr>but I havn't decided whether to append or overwrite
02:00:16  <dominictarr>or maybe you could go h('body', …)
02:00:37  <ins0mnia>dominictarr: yes
02:00:39  <dominictarr>and that would be a special case if all html is js
02:01:14  <dominictarr>but I havn't done this yet, because you start to get into jQuery territory where you have 7 different call signatures
02:01:23  <ins0mnia>dominictarr: The reason why I didn't think I would use 'body' is because the whole content becomes one big HTML with many observables
02:01:40  <dominictarr>yeah.
02:01:50  <ins0mnia>dominictarr: it's very easy to fall into this trap actually
02:02:01  <dominictarr>if you did h(HTMLElement, …) and it updated,
02:02:21  <dominictarr>it might be easy to have hyperscript work on the server side, send static html
02:02:31  <dominictarr>and then hook back into the html that was generated
02:02:35  <ins0mnia>dominictarr: that's what I'm planning to do!!
02:02:50  <ins0mnia>dominictarr: then the client doesn't need to wait for any data to arrive
02:02:56  <ins0mnia>dominictarr: before the rendering happens
02:03:02  <dominictarr>yeah, also very good for SEO
02:03:23  <ins0mnia>dominictarr: Yeah, this one is next on my to-do list, see how to get this to work
02:05:30  <defunctzombie>substack: I am fixing the multi bundle stuff, cause right now it is all sorts of not working :)
02:05:52  <ins0mnia>dominictarr: because in my case I'm holding the views in a scuttlebutt model, so I can serve them both through a static server or stream them to the client; what I was thinking is first hit to the server serves a static html; subsequent routing servers the views (and the data) via a stream
02:06:57  <dominictarr>hang on, are you sending the hyperscript through a scuttlebutt? or just the data?
02:07:26  <dominictarr>I think the view should be js,
02:07:57  <dominictarr>and just send the page as js, static html, and some json (all bundled into one html page)
02:08:30  <ins0mnia>dominictarr: I'm holding the view through scuttlebutt, something like <h1>static text><hypertext placeholder></hypertext>
02:08:48  <ins0mnia>dominictarr: wouldn't that be too heavy?
02:08:50  <dominictarr>and then eval'ing it?
02:08:59  <substack>defunctzombie: hooray!
02:09:30  <dominictarr>ins0mnia: hmm, probably not… it's round trips that are the real problem, rather than sending data
02:09:55  <substack>Raynos: I don't like data-* attributes
02:10:13  <ins0mnia>dominictarr: yeah, I mean when the view is received on the client and is injected to the dom, then I append hyperscript to the correct place
02:10:41  <Raynos>substack: any alternative for putting meta data in template or should I just improve the schema ( https://github.com/Colingo/populate#schema-example ) /
02:10:50  <substack>Raynos: also "declarative" turns my api skepticism up a notc
02:10:52  <substack>h
02:11:05  <ins0mnia>dominictarr: I see what you mean, the client code (which includes hyperscript) is already browserified
02:11:10  <dominictarr>ins0mnia: I'm not sure what you refer to when you say "when the view is received"
02:11:21  <Raynos>substack: i dont think those declarative statements are true anymore
02:11:47  * tim_smart|awaychanged nick to tim_smart
02:11:48  <substack>I like it when apis are imperative and obvious about what they are doing
02:11:49  <Raynos>substack: it no longer mentions "declarative" ;)
02:12:17  <ins0mnia>dominictarr: I basically have a list of html files, say layout.html, account.html, profile.html with static content, including empty placeholders to inject hyperscript
02:12:35  <substack>good good
02:12:42  <dominictarr>right, so the browser loads that stuff
02:13:04  <dominictarr>that is the normal thing, and then it adds the dynamic stuff
02:13:20  <dominictarr>when the page loads?
02:13:23  <ins0mnia>dominictarr: depending on the client-side route (say /profile) I stream the corresponding html content then inject hyperscript
02:13:29  <ins0mnia>dominictarr: yes
02:14:08  <substack>Raynos: so anyways the more important thing is how should browserify let modules load files with fs.readFileSync?
02:14:10  <dominictarr>you arn't loading any html files after the fact though -
02:14:16  <Raynos>yes!
02:14:32  <dominictarr>just the ordinary static page load, right?
02:14:34  <Raynos>substack: I think the logic of `fs.readFileSync(...)` returns that file as a string is ok
02:14:48  <ins0mnia>dominictarr: Yup
02:14:50  <Raynos>The implementation details are more complicated because I dont know whats elegant for browserify 2.0
02:15:03  <substack>should browserify just do this automatically or should it be an opt-in plugin?
02:15:03  <ins0mnia>dominictarr: and when the static page is loaded, I run hyperscript
02:15:20  <ins0mnia>dominictarr: (loaded as in ready and placed into the dom)
02:17:03  <ins0mnia>dominictarr: what I need to achieve though is serving a "pre-rendered" page (as in running hyperscript server-side) on the first hit to the server (served through the http server)
02:18:32  <dominictarr>the problem is having the dynamic stuff know what static stuff it corrisponds to
02:20:43  <ins0mnia>dominictarr: Yup, which is why I'm thinking each hyperscript "widget" is a combination of 1) the ID of the element in which hyperscript should append/overwrite 2) The model data 3) The actual hyperscript/observable code shared on both the server and client
02:22:46  <dominictarr>yeah, whatever adds this feature is a lot more complicated that hyperscript it self, I suspect, and depends on a convention…
02:22:51  <dominictarr>maybe it can be simple, though
02:23:17  <ins0mnia>dominictarr: agree with you, this is outside the scope of hyperscript
02:23:25  <tim_smart>Anybody encountered this? https://gist.github.com/c2fb9695b327afeb43cb
02:25:51  <ins0mnia>dominictarr: I'm not sure how complex or simple it is, going to look into this this weekend, because for this to work we need to emulate few client-side methods on the server (appendChild etc) so that the same code works on both ends
02:28:33  <dominictarr>ins0mnia: yeah it will be cool
02:28:47  <dominictarr>should probably be a separate module
02:29:17  <ins0mnia>dominictarr: yeah
02:29:22  <dominictarr>it might be worth adding a simple feature or two to hyperscript if necessary,
02:29:29  <ins0mnia>dominictarr: I've just found "cheerio"
02:29:53  <dominictarr>but it's useful as it is, so no massive additions, preferably
02:29:54  <ins0mnia>dominictarr: https://github.com/MatthewMueller/cheerio
02:30:52  <tim_smart>npm install git-helpers <- Some useful things I'm working on for github https://github.com/tim-smart/git-helpers
02:31:09  <tim_smart>s/npm install/npm install -g/
02:35:15  * st_lukejoined
02:35:28  <ins0mnia>the only thing which will break server-side is listen(), attribute() and select() - will have to find a clean workaround
02:42:13  <dominictarr>well, what if they all just returned '' or whatever they would return before the user has entered anything?
02:42:48  <dominictarr>I guess we need a mini dom with just HTMLElement, and TextNode
02:42:55  <dominictarr>but no events
02:43:33  <ins0mnia>yeah
02:43:35  * tphummelquit (Quit: tphummel)
02:44:10  <ins0mnia>I guess returning '' works as wlel
02:45:20  <mbalho>tim_smart: nice!
02:49:23  <st_luke>sending a signal to node to take snapshots of the current leveldb instance
02:50:00  <tim_smart>ghi label -l | while read label; do (ghi label "$label" -r"${label,,}"); done <- Why ghi is awesome
02:57:43  <Raynos>substack: fs.readFileSync should be a flag in browserify 2.0, whether it defaults true or false is upto you
02:58:01  <Raynos>I would lean for defaulting to true and encouraging people to bundle their template assets into modules
02:58:05  <substack>agreed
02:58:37  <substack>this is a big reason why people are using component from talking to seconf at campjs
02:58:57  <substack>*secoif
02:59:20  * jibayquit (Remote host closed the connection)
02:59:36  * ins0mniaquit (Ping timeout: 276 seconds)
03:03:23  <Raynos>well component is different
03:03:32  <Raynos>its pulling in a different crowd of people
03:04:00  <mbalho>the crowd of people that want small reusable client side components?
03:04:20  <substack>that is a pretty similar group to the folks using browserify
03:04:25  <Raynos>the crowd of people that are used to script tags
03:04:40  <Raynos>and want reusable components
03:05:05  <Raynos>where as browserify is the crowd of people that are used to node and want reusable components
03:12:35  * dominictarrquit (Quit: dominictarr)
03:22:01  * lyaunzbequit (Remote host closed the connection)
03:22:36  * lyaunzbejoined
03:27:16  * lyaunzbequit (Ping timeout: 248 seconds)
03:33:12  * lyaunzbejoined
03:41:00  <defunctzombie>Raynos: mbalho: substack: I do not see what components does that is better than what i get with browserify and npm-css
03:41:09  <defunctzombie>and it just adds to more confusion
03:41:20  <defunctzombie>just treat javascript as javascript
03:41:32  <defunctzombie>then realize that browser and dom are just "modules" that provide features
03:41:49  <defunctzombie>and stop thinking that there is something magical about client libs vs server libs
03:43:33  <defunctzombie>substack: so I need to extend the required:resolve callback to have a 3rd paramter
03:43:38  <defunctzombie>'ignore' or 'stop'
03:43:52  <defunctzombie>which tells required to not process the deps of the file being returned
03:44:07  <defunctzombie>and just end the tree there for that branch
03:44:31  <defunctzombie>substack: the reason I need this over the 'empty' trick you did is because I still need the original filename inside browserify
03:44:37  <defunctzombie>to properly setup references
03:44:47  <defunctzombie>and I don't see another way to do it safely
03:50:28  * lyaunzbe_joined
03:52:04  * lyaunzbequit (Read error: Connection reset by peer)
04:01:37  <substack>defunctzombie: can you also implement file: null to ignore in the browsers field doing that?
04:02:02  <defunctzombie>substack: don't follow
04:02:11  <defunctzombie>I know we talked about it, what was the specific thing to do?
04:02:12  <substack>in the browsers field
04:02:29  <substack>"ignoreme.js": false
04:02:32  <substack>or null or whatevs
04:02:37  <substack>would just ignore that file
04:03:03  <defunctzombie>substack: so I think that will use this new 'ignore' feature
04:03:09  <defunctzombie>and just stop the tree from processing that file
04:03:37  <substack>yay!
04:04:15  <substack>oh and I think I know why insert-module-globals is so slow sometimes
04:04:45  <defunctzombie>substack: https://github.com/substack/browser-pack/pull/2
04:04:56  <substack>computing the key names involves recursive lookups
04:05:04  <defunctzombie>ah
04:05:12  <defunctzombie>the first commit is rather obvious and simple
04:05:16  <substack>but it should be possible to refactor that to compute the key paths in place
04:05:26  <defunctzombie>the second one looks more complex (because I renamed all the single letter vars)
04:05:35  <defunctzombie>but all it does is call a "parent" require
04:05:41  <defunctzombie>if we can't find the module in our own module list
04:05:55  <defunctzombie>browserify was doing this (and we could put that back in there if we wanted to)
04:06:16  <defunctzombie>but I still thin kthe separate prelude with better var names is an improvement
04:06:30  <defunctzombie>substack: so let me know if you want the typeof stuff put back into browserify versus browser-pack
04:06:59  <defunctzombie>substack: actually, it has to exist in this
04:07:18  <defunctzombie>because this require is what the entry bundle uses
04:07:34  <defunctzombie>so it was actually a bug that the entry bundle would not call up to the parent
04:09:07  <substack>defunctzombie: I think I dislike the comments in that pull req more than expanding the variable names
04:09:17  <defunctzombie>substack: haha
04:09:36  <defunctzombie>some comments were needed for my sanity
04:09:44  <defunctzombie>once I figured out what was supposed to happen :)
04:09:48  <substack>I'll just remove them
04:09:49  <defunctzombie>I can remove if desired
04:09:50  <defunctzombie>kk
04:09:53  <substack>looks good otherwise
04:10:30  <defunctzombie>required fix forthcoming as well, then the null field thing
04:10:40  <defunctzombie>substack: anyhow, I gut multi bundle working after these changes
04:10:47  <substack>hooray!
04:10:55  * CryptoQuickjoined
04:11:26  <defunctzombie>substack: also, I don't like the notion of ignore using process.cwd() and such
04:11:31  <defunctzombie>that should be a command line thing imho
04:11:43  <substack>where?
04:11:45  <defunctzombie>the version I am currently playing with uses either a module name or a full file path
04:11:56  <defunctzombie>substack: or maybe that was require or something
04:12:15  <defunctzombie>substack: it will be more clear once I push up the fixes on what I mean
04:12:53  <substack>so now browser-pack handles the fallback logic itself?
04:12:57  <substack>instead of browserify?
04:13:28  <defunctzombie>substack: fallback logic?
04:13:43  <substack>defering to the existing require
04:14:15  <defunctzombie>substack: no, browserify handle that
04:14:22  <substack>but
04:14:23  <defunctzombie>there will just be no need for the _empty file
04:14:26  <substack>your browser-pack patch
04:14:32  <substack>has a parent_req thing
04:14:41  <defunctzombie>oh sorry
04:14:42  <defunctzombie>yes
04:14:58  <substack>ok this is good
04:15:00  <defunctzombie>yea, something like that has to happen because the require function the entry file sees
04:15:05  <defunctzombie>has to be able to call up to the parent
04:15:10  <defunctzombie>this was not happening before
04:15:11  <substack>browser-pack can focus entirely on how to pack the files
04:15:16  <substack>this will mean less sloc in core
04:15:33  <defunctzombie>substack: yes, the relevant section is now just "require=" in browserify
04:15:41  <substack>sounds good
04:15:42  <defunctzombie>to expose require for use in followup bundles
04:17:14  <defunctzombie>substack: module-deps on github is v0.2.0
04:17:20  <defunctzombie>but browserify has v0.2.1 ?
04:18:00  <substack>it's 0.2.2
04:18:18  <substack>whoops, pushing
04:19:01  <substack>I was accidentally on a non-master branch
04:19:35  <defunctzombie>ah
04:19:36  <substack>defunctzombie: also https://github.com/substack/node-browserify/issues/289
04:19:53  <defunctzombie>substack: haha, interesting
04:19:57  <defunctzombie>will certainly fix that
04:21:15  <substack>might be a race condition
04:21:17  <substack>sometimes this works:
04:21:18  <substack>browserify <(echo "console.log(require('util'))") | node
04:21:21  <substack>sometimes it doesn't
04:22:03  <substack>oh wait I have your browser-pack version pulled
04:22:16  <substack>ok yeah not working reliably now
04:24:10  <substack>hacking on a reverse shell module, ping me when the browserify patch is ready
04:25:44  * dguttmanquit (Quit: dguttman)
04:26:36  <substack>defunctzombie: also any thoughts about having insert-module-globals do static analysis to inline fs.readFileSync() calls?
04:27:03  <defunctzombie>substack: any way to make a plugin do it?
04:27:18  <defunctzombie>substack: the only reason I am weary is because I see people abusing it for all the wrong reasons
04:27:23  <substack>I'm not sure how plugins should work yet
04:27:25  <defunctzombie>or forgetting and having random shit happen
04:27:30  <defunctzombie>like reading images
04:27:52  <defunctzombie>I haven't heard a super convincing argument for it yet I suppose
04:28:03  <defunctzombie>the template issue I am not yet convinced by
04:28:21  <substack>one issue is that modules that use plugins would need to somehow specify what plugins should be used when building them
04:28:43  <defunctzombie>not sure modules should be the ones specifying this :/
04:29:02  <substack>if modules want to be self contained and pull in static assets it can get very messy
04:31:14  <substack>if we have a way for modules to tell browserify which plugins to load when building them this issue is mitigated and can be handled entirely in userland
04:31:53  <defunctzombie>substack: I am more of a fan of the "here is what you need to build" approach versus the "use only these" approach I guess
04:32:09  <defunctzombie>and I see the specifying plugins as a use only these side of it
04:32:14  <defunctzombie>what would be an example plugin
04:32:21  * defunctzombiedoes not have experience with browserify plugins
04:32:29  <defunctzombie>so cannot speak very intelligently on it :)
04:34:15  * lyaunzbejoined
04:34:15  * lyaunzbe_quit (Read error: Connection reset by peer)
04:39:09  * kenperkinsjoined
04:39:10  <substack>defunctzombie: think of it more as there is a module on npm that you want to use
04:39:24  <substack>but that module needs to pull in static assets
04:39:51  <substack>the developer should need to care that the module needs to pull in static assets
04:44:53  <defunctzombie>substack: correct, but in that case the "caring" is more involved
04:45:05  <defunctzombie>because how those assets should be pulled in is not so clear
04:45:09  <defunctzombie>and can vary
04:45:16  <defunctzombie>because "static assets" is very open ended
04:45:18  <defunctzombie>substack: return require((id !== undefined) ? id : x);
04:45:35  <defunctzombie>needs to replace the relevant line in the browser-pack preamble
04:45:46  <defunctzombie>when id is 0 the if check fails haha
04:45:57  <defunctzombie>modules[name][0](function(x){
04:45:58  <defunctzombie> var id = modules[name][1][x];
04:45:58  <defunctzombie> return require((id !== undefined) ? id : x);
04:45:59  <defunctzombie> },m,m.exports);
04:46:05  <defunctzombie>that is the correct version
04:46:22  <defunctzombie>might be good to have a test for that or something if possible
04:46:26  <substack>just push to your branch and I'll pull
04:46:36  <substack>could start numbering from 1
04:49:37  <defunctzombie>substack: either way works
04:49:49  <defunctzombie>if you number from 1 it is less in the preamble :)
04:50:00  <defunctzombie>return require( id ? id : x );
04:50:43  <defunctzombie>substack: module-deps should be updated to use required 0.3.0 (ignore feature)
04:52:56  <substack>done
04:53:00  <defunctzombie>\o/
04:53:30  * kenperkinsquit (Quit: Computer has gone to sleep.)
04:53:39  <substack>here is where the id gets set https://github.com/substack/node-browserify/blob/master/index.js#L137
04:53:48  <substack>feel free to idIndex = 1 in your patch
04:55:36  <defunctzombie>substack: k, I kinda feel like the id should be put into the file as a string
04:55:47  <defunctzombie>versus a number, but I will leave number for now
04:55:50  <defunctzombie>and start from 1
04:56:50  <substack>oh that could work
04:56:58  <substack>a string I mean
04:57:15  <substack>then to increment just idIndex = String(Number(idIndex)+1)
04:57:28  <substack>but whatevs, numbers work too
04:58:08  <substack>v2 announcement doing pretty well on /r/node http://browserify.org/announcing_browserify_v2
04:58:10  <substack>wups
04:58:15  <substack>http://www.reddit.com/r/node/comments/191kwa/announcing_browserify_v2/
04:58:23  * mikolalysenkoquit (Ping timeout: 260 seconds)
05:03:10  * mikolalysenkojoined
05:21:07  <defunctzombie>substack: I have an issue with the bundle.require api call
05:21:36  <defunctzombie>so when you require something, you cause it to get exposed
05:21:45  <defunctzombie>via the name you required it as
05:21:50  <substack>yes
05:22:07  <defunctzombie>however
05:22:35  <defunctzombie>I made a change to expose things by the first 4 hex of the md5 of the pathname of the resolved file
05:22:39  * kenperkinsjoined
05:22:47  <defunctzombie>this is so that other bundles
05:22:57  <defunctzombie>can properly reference things they have ignored
05:23:24  <defunctzombie>because if bundle "core" is referenced by ../core or ./core both of those should work
05:23:30  <defunctzombie>and with the hash on path they do
05:23:40  <defunctzombie>also the full path is not exposed as a result
05:23:49  <substack>that is clever!
05:23:59  <defunctzombie>the issue is that with many of your tests you have bundle.require('util')
05:24:00  <substack>is 4 enough to ensure uniqueness?
05:24:14  <defunctzombie>substack: could do more, 4 is quite a large space
05:24:17  <substack>Math.pow(16,4) is just 65536
05:24:20  <substack>what about base64?
05:24:27  <defunctzombie>sure, could do that
05:24:33  <substack>Math.pow(64,4) = 16777216
05:24:37  <defunctzombie>it is a one liner in either case :)
05:24:49  <defunctzombie>so with the tests that do bundle.require(;'util');
05:24:51  <substack>one sec, doing the birthday paradox calculation for 4 digits
05:24:58  <defunctzombie>and then c.require('util')
05:25:01  <defunctzombie>those break
05:25:11  <defunctzombie>because, util is not the exposed "name" anymore
05:25:12  <defunctzombie>so
05:25:19  <defunctzombie>I am wondering what the default behaviors should be
05:25:38  <defunctzombie>right now the bundle.require api call I have only takes a module "id" or a full path
05:25:58  <defunctzombie>no relative paths (as that is the responsibility of the caller in my mind)
05:26:02  <substack>when you .require(name) something you are saying that you want to be able to require(name) from the outside
05:26:05  <defunctzombie>(that is where hte process.cwd stuff was)
05:26:16  <defunctzombie>substack: I am saying that is what currently happens
05:26:19  <defunctzombie>based on how you have it
05:26:24  <defunctzombie>and how many tests are written
05:26:30  <substack>yes
05:26:41  <substack>that is how people expect browserify to work
05:27:03  <substack>if we are doing to violate that expectation we should have a good reason
05:27:07  <defunctzombie>however, with the pathhash being the exposed thing, there has to be a way to require and assign a name to what is exposed
05:27:18  <defunctzombie>correct
05:27:44  <defunctzombie>so the issue with exposing as the shortname is then when you have a bundle which depends on another
05:28:03  <defunctzombie>it would need to wait on the expose resolution
05:28:16  <defunctzombie>so that it can make sure it references the proper shortname
05:28:26  <defunctzombie>(this was not the case with md5 hashing of the name)
05:28:30  <defunctzombie>since that is a known thing
05:28:43  <defunctzombie>so if you want bundle.require('util')
05:28:50  <defunctzombie>to expose 'util' as that name
05:29:40  <defunctzombie>bundles which ignore files, need to wait on the other bundle to resolve expose values (_ready state iirc) so they can lookup what the exposed value was
05:29:42  <defunctzombie>OR
05:30:22  <defunctzombie>we say that modules are always exposed by name and full file paths are hash (or some variation thereof) which I am not sure about
05:30:35  <defunctzombie>in any case, I hope what I have said in this giant wall of text makes sense :)
05:31:57  <substack>we could always keep a second data structure around for storing the external name to hash mappings
05:36:57  <defunctzombie>substack: the question becomes one of 'require' doing require and also exposing as the same name versus just requiring
05:38:03  <defunctzombie>what does a typical command line look like for someone who is interested in exposing things under a certain name?
05:38:24  <substack>what about having .expose() do this?
05:38:40  <substack>browserify -r through -r events -r mux-demux
05:38:42  <substack>that?
05:39:39  <defunctzombie>so that person intended to require those modules and then expose them
05:39:46  <defunctzombie>I guess my question is why? haha
05:39:56  <defunctzombie>instead of just using them in an app.js
05:40:22  <defunctzombie>is it just so they could write require('through') inside a script tag versus having it point to a source?
05:40:46  <substack>mbalho and other folks use browserify this way
05:40:58  <substack>I think it's a good use case to support
05:41:01  <defunctzombie>substack: what is the end goal?
05:41:12  <defunctzombie>I get the require those modules
05:41:40  <defunctzombie>if they are already using browserify, wouldn't they already have an entry file?
05:41:43  <substack>it's more of a hybrid between plain script tags and node-style modules
05:41:55  <substack>and it's nice for debugging on the console
05:42:05  <defunctzombie>I guess I never put code in scripts tags anymore haha
05:42:17  <defunctzombie>it is easier to just script src=""
05:42:27  <defunctzombie>cause you eventually do that anyway
05:42:45  * kenperkinsquit (Quit: Computer has gone to sleep.)
05:42:58  <defunctzombie>substack: that use case is easy to support even with my hash thing
05:43:04  <substack>ok great
05:43:08  <defunctzombie>bundle.expose('through');
05:43:16  <substack>I would prefer to continue to support this use case
05:43:16  <defunctzombie>and then at the end of the bundle just have stuff like
05:43:36  <defunctzombie>require('through') -> require('ahc2ds');
05:43:45  <defunctzombie>not actually require, but the aliases part or some such
05:44:12  <defunctzombie>command line wise, the -r flag can continue to do whatever
05:44:28  <substack>does .require() need to do anything special in your patch?
05:44:31  <defunctzombie>api wise .require and .expose would be different things
05:44:50  <defunctzombie>.require is how you add non entry files
05:44:58  <defunctzombie>not sure what you mean by "special"
05:45:07  <defunctzombie>it hasn't changed that much in my patch
05:45:12  <defunctzombie>actually got simpler I think
05:45:12  <substack>"how you add non-entry files"
05:45:25  <substack>but not exposed except as a hash, got it
05:45:32  <defunctzombie>right
05:45:34  <defunctzombie>and .expose
05:45:37  <substack>how does this affect the .shim() idea? https://github.com/substack/node-browserify/pull/290
05:45:40  <defunctzombie>would be how you add a file
05:45:45  <defunctzombie>and expose it with the same name
05:46:15  <defunctzombie>substack: off the top of my head I do not believe it does
05:46:27  <defunctzombie>unless we want a way to expose shims haha
05:46:31  <substack>it would seem confusing to call .require(name) and then not get a bundle where you can require(name)
05:46:50  <substack>perhaps your functionality could live under a different method name?
05:46:52  <defunctzombie>substack: you do get a bundle where from within it you can require(name)
05:46:55  <defunctzombie>substack: require.include
05:46:56  <substack>or b.add(file, { entry: false })
05:47:02  <defunctzombie>or that
05:47:04  <substack>.include() is good
05:47:05  <defunctzombie>I like that
05:47:08  <defunctzombie>or include
05:47:20  <defunctzombie>I will play around with what sounds nicer
05:47:24  <defunctzombie>ok.. cool
05:47:28  <defunctzombie>sounds much better now
05:47:42  <substack>defunctzombie: but can you require(name) from the outside?
05:47:52  <substack>as in you plop down the script tag then open up the debugger
05:47:56  <substack>and try to do require(name)
05:47:59  <defunctzombie>substack: with .require we will leave it as is so you can
05:48:09  <defunctzombie>with .include or .add entry false no
05:48:14  <defunctzombie>those are internal
05:48:31  <defunctzombie>and .expose is going away I think or becoming internal
05:48:39  <defunctzombie>since I don't see a purpose of that api surface
05:48:41  <substack>that's fine
05:49:17  <substack>I'm only going to bump the minor for it though
05:49:46  <defunctzombie>there won't be any breaking changes (that I can think of)
05:49:59  <substack>but won't expose() go away?
05:51:33  <defunctzombie>substack: oh yea, that will, I mean it doesn't have to
05:51:37  <defunctzombie>you can just remove it from the docs
05:51:42  <defunctzombie>unless you think it has value
05:51:55  * kenperkinsjoined
05:52:44  <substack>not really
05:53:07  <substack>better if .require() does what .expose() can do
05:53:29  <substack>anyways great trick with the hashes
05:53:30  <defunctzombie>.require already does
05:53:39  <defunctzombie>.expose actually is not safe at the moment I think
05:53:45  <defunctzombie>cause it doesn't actually load anything
05:53:54  <defunctzombie>maybe it does cause something is added to self.files
05:53:59  <defunctzombie>wherever that is used haha
05:54:03  <substack>module-deps loads everything in self.files
05:54:13  <defunctzombie>ah
05:54:26  <defunctzombie>substack: the hashes trick has one minor downside which I will create a solution for
05:54:34  <defunctzombie>people who deploy to changing filesystem paths
05:54:47  <defunctzombie>will get different hashes on deployment
05:54:54  <defunctzombie>if their paths are different
05:55:09  <defunctzombie>I have potential solutions for this tho
05:55:42  <substack>>> for (var n=1, i=1; i < 100; i++) n *= 1 - i/Math.pow(16,4); (1-n) * 100
05:55:43  <purr>substack: (number) 7.278449051888125
05:55:57  <substack>^ probability of a hash collision with 4 hex digits and 100 files
05:56:03  <substack>as a percentage
05:56:30  <defunctzombie>haha
05:56:39  <substack>>> for (var n=1, i=1; i < 100; i++) n *= 1 - i/Math.pow(64,4); (1-n) * 100
05:56:39  <purr>substack: (number) 0.029500005383120698
05:56:45  <substack>same thing with base64 encoding
05:56:46  <defunctzombie>my future goal with multi bundle is to be even smarter
05:57:01  <defunctzombie>cool, so 4 base 64 numbers
05:57:10  <defunctzombie>seems like that will be pretty legit
05:57:12  <defunctzombie>could make it 6
05:57:18  <defunctzombie>to be "safer" :)
05:57:19  <substack>5 is pretty safe
05:57:37  <substack>but sure, 6 is good
05:58:36  <defunctzombie>substack: ok, so all is good now minus one ignore test
05:58:47  <defunctzombie>it is trying to load a module/file which isn't found
05:58:48  <substack>I cheated and looked at the equation at https://en.wikipedia.org/wiki/Birthday_problem#Calculating_the_probability
05:58:51  <defunctzombie>but the user wnated to ignore it
05:59:14  <defunctzombie>what is the expected behavior there? we have kinda overloaded ignore to be multi bundle as well as "don't worry about this"
05:59:46  <substack>so there are 2 competing use cases here
06:00:13  <substack>in use case 1, some module that does require('some-node-only-module') that you want to ignore
06:00:29  <substack>and you want it to just return {} because the rest of the module pretty much works
06:01:02  <substack>in use case 2, you want the module to cascade to the next require function for multi-bundles
06:01:34  <substack>this is really more of a distinction between shim and ignore
06:01:44  * kenperkinsquit (Quit: Computer has gone to sleep.)
06:02:12  <defunctzombie>yea
06:02:34  <defunctzombie>substack: I kinda feel like .ingore (case1) -> .shim
06:02:46  <defunctzombie>and .ignore (case2) -> .external()
06:03:26  <substack>Raynos: mind writing a recipe things using those modules you mentioned on the mailing list for the browserify readme?
06:03:38  <substack>watch and coffee-script and both using separate modules
06:03:46  <substack>pretty boss approach
06:04:51  <substack>defunctzombie: think those should have separate api and command-line endpoints?
06:05:12  <defunctzombie>substack: I would be inclined to say yes because the intentions are very different
06:05:24  <substack>maybe we can just remove .ignore() because the intents are ambiguous
06:05:26  <defunctzombie>in one case you are aware the require will exist beforehand
06:05:40  <defunctzombie>and in the other you are saying you want to replace it with something else
06:05:44  <defunctzombie>yes, I would remove .ignore
06:05:50  <defunctzombie>because it is vague right now
06:06:00  <defunctzombie>especially with the multi bundle stuff
06:06:02  <substack>I might as well just release 3.0 haha
06:06:06  <defunctzombie>hahaha
06:06:19  <defunctzombie>I don't think many people have ported over
06:06:23  <defunctzombie>;)
06:06:30  <substack>ok yeah a minor point release is probably fine
06:06:47  <substack>whatevs they should at most be floating on the patch anyways
06:06:50  <defunctzombie>if you are concerned I would leave ignore to be just full ignore
06:07:00  <defunctzombie>as it was before
06:07:04  <defunctzombie>and not any multi bundle stuff
06:07:12  <defunctzombie>and that would maintain older api compat
06:07:21  <substack>might be better to do that
06:07:23  <defunctzombie>and remove the documentation for it in favor of .shim
06:07:34  <defunctzombie>when .shim is added
06:08:50  <substack>yep
06:11:55  <substack>I can do a new blog post for every minor and major release
06:14:21  * fotoveritejoined
06:21:01  * shamaquit (Remote host closed the connection)
06:22:29  <tim_smart>Made a fun script for npm projects: https://github.com/tim-smart/git-helpers#npm-create
06:28:36  * dominictarrjoined
06:28:52  <tim_smart>dominictarr: ^ https://github.com/tim-smart/git-helpers#npm-create
06:29:12  <tim_smart>dominictarr: Today has been a crazy make shell scripts day
06:30:32  <dominictarr>tim_smart: sweet
06:31:00  * kenperkinsjoined
06:31:09  * fotoveritequit (Quit: fotoverite)
06:31:54  <tim_smart>dominictarr: I have always been annoyed creating package.json files >.>
06:32:08  <dominictarr>instead of being a single program, npm should be an ecosystem of npm-* modules
06:32:20  <dominictarr>like connect-*, level-*, and voxel-*
06:32:46  * fotoveritejoined
06:33:43  <dominictarr>tim_smart: are you using generating the project from a template, too?
06:34:05  <tim_smart>dominictarr: https://github.com/tim-smart/git-helpers/blob/master/bin/npm-create
06:34:29  <tim_smart>Justs creates a package.json and a simple skeleton
06:35:39  <tim_smart>dominictarr: The creation all happens at the bottom of that file
06:36:30  <defunctzombie>substack: https://github.com/shtylman/node-browserify/commits/multi-bundle
06:37:21  <defunctzombie>substack: will require latest module-deps with required 0.3.0
06:37:28  <defunctzombie>substack: and the patches for browser-pack
06:37:52  <defunctzombie>all tests pass (ignore test slightly modified)
06:41:28  * kenperkinsquit (Quit: Computer has gone to sleep.)
06:46:12  * mikolalysenkoquit (Ping timeout: 248 seconds)
06:48:02  <defunctzombie>The command line interface might need to be updated to do the right thing for multi bundles now
06:48:10  <defunctzombie>as -r is not sufficient
06:48:26  <defunctzombie>but I leave that in your capable hands :)
06:49:54  * defunctzombiechanged nick to defunctzombie_zz
06:52:50  * mikealjoined
07:03:09  * dominictarrquit (Quit: dominictarr)
07:06:14  * dominictarrjoined
07:07:52  * spionquit (Remote host closed the connection)
07:26:01  <jjjjohnnny>Raynos: do you know if webRTC will handle peer propogation in events such as when too many peers want to connect to one peer?
07:26:24  <jjjjohnnny>ie. propogate the one target node through its peers
07:27:14  <substack>defunctzombie_zz: great!
07:42:38  * mikolalysenkojoined
07:47:23  * mikolalysenkoquit (Ping timeout: 256 seconds)
07:55:38  <substack>defunctzombie_zz: so uglify is actually really shit at minifying the prelude
07:57:10  <substack>it's not even compacting the function argument variables
07:59:19  <substack>oh hmmm
08:00:26  <substack>ok 2.2.5 is a pretty shit version of uglify
08:02:15  <substack>defunctzombie_zz: I think the nicest part of having the prelude relatively minified is that users don't need to scroll past a bunch of boilerplate
08:02:28  <substack>so I'm adding a build step to browser-pack
08:03:33  * dominictarrquit (Quit: dominictarr)
08:04:54  <substack>actually at runtime will be plenty fast
08:07:36  <substack>something happened between 1.3.4 and 2.2.0 that made uglifyjs complete garbage
08:19:05  <rvagg>he rewrote the parser
08:19:11  <substack>it sucks now
08:19:25  <substack>it's like it doesn't even try
08:20:23  <substack>before:
08:20:33  <substack>(function(e,t,n,r){function i(r){if(!n[r]){if(!t[r]){if(e)return e(r)...
08:20:34  <substack>after:
08:21:13  <substack>(function(parent_req,modules,cache,entry){function require(name){if(!cache[name]){if(!mod
08:21:20  <substack>so it's not really even a minifier anymore
08:26:44  <substack>defunctzombie_zz: [email protected] published. now minifies in place since it's only like 50ms extra overhead
08:27:12  <substack>and only the prelude since I don't like looking at that in my blobs
08:38:08  * CryptoQuickquit (Quit: CryptoQuick)
08:42:39  * tim_smartchanged nick to tim_smart|away
08:42:58  * mikolalysenkojoined
08:46:55  * CryptoQuickjoined
08:46:59  * tim_smart|awaychanged nick to tim_smart
08:47:44  * tim_smartchanged nick to tim_smart|away
08:47:53  * mikolalysenkoquit (Ping timeout: 252 seconds)
08:52:03  * tim_smart|awaychanged nick to tim_smart
08:52:48  * tim_smartchanged nick to tim_smart|away
08:57:03  * tim_smart|awaychanged nick to tim_smart
08:57:36  * st_lukequit (Remote host closed the connection)
09:03:44  <substack>defunctzombie_zz: now I'm getting sporadic failures on the test suite
09:04:01  <substack>this could have been an existing race condition that is just surfacing more often now
09:08:46  <substack>but multi_bundle.js is always failing with: Error: Cannot find module '2'
09:13:09  <jden>msied just proposed renaming Stream#pipe to Stream#straw. I approve this message.
09:13:42  * msiedjoined
09:13:57  * jdenis not responsible for the content of this message:
09:14:06  * jdenchanged nick to jden|zzz
09:14:15  <fotoverite>You aren'?
09:22:52  * fotoveritequit (Quit: fotoverite)
09:24:31  * fotoveritejoined
09:34:14  * msiedquit (Quit: leaving)
09:37:49  * shuaibjoined
09:43:21  * mikolalysenkojoined
09:43:51  * AvianFluquit (Remote host closed the connection)
09:48:15  * mikolalysenkoquit (Ping timeout: 252 seconds)
09:54:30  * st_lukejoined
09:57:34  * CryptoQuickquit (Quit: CryptoQuick)
10:04:30  * CryptoQuickjoined
10:11:24  * tim_smartchanged nick to tim_smart|away
10:15:56  * fotoveritequit (Quit: fotoverite)
10:43:43  * mikolalysenkojoined
10:44:03  <Raynos>jjjjohnnny: I dont understand
10:48:20  * mikolalysenkoquit (Ping timeout: 248 seconds)
10:59:06  * fotoveritejoined
11:02:09  * lyaunzbe_joined
11:05:00  * lyaunzbequit (Ping timeout: 264 seconds)
11:10:08  * ralphtheninjajoined
11:10:48  * st_lukequit (Remote host closed the connection)
11:42:00  * dominictarrjoined
11:43:53  * mirkokjoined
11:44:04  * mikolalysenkojoined
11:48:34  * mikolalysenkoquit (Ping timeout: 246 seconds)
11:52:58  * CryptoQuickquit (Quit: CryptoQuick)
12:20:03  * dominictarr_joined
12:22:27  <substack>experimenting with writing a shell multiplexer
12:23:13  * dominictarrquit (Ping timeout: 246 seconds)
12:23:14  * dominictarr_changed nick to dominictarr
12:35:44  * fotoveritequit (Quit: fotoverite)
12:48:30  * ralphtheninjaquit (Ping timeout: 276 seconds)
12:49:47  * ralphtheninjajoined
13:00:30  <dominictarr>mbalho https://github.com/pepijndevos/KindleTerm/downloads
13:00:39  <dominictarr>http://pepijndevos.nl/2012/10/08/kindle-4-as-a-paper-terminal.html
13:29:18  <mbalho>dominictarr: fionab2a
13:40:03  * dominictarrquit (Quit: dominictarr)
13:42:04  <jesusabdullah>substack: I don't remember if I asked, but: Would you be down for getting pizza at Zachary's with me and friends on March 1? So far it's me and an old high school friend, would love to meet up w/ you and anybody you can drum up
13:42:32  <jesusabdullah>substack: in particular if you can invite maxogden and jlord that would be super I think :) :)
13:42:58  <jesusabdullah>substack: hit me up I'll be around later in the day
13:51:17  <jesusabdullah>substack: http://browserify.org/announcing_browserify_v2 very nice
14:08:45  * ins0mniajoined
14:37:57  <Nexxy>JESUSABDULLAH
14:45:11  <jesusabdullah>what up
14:45:58  * mikolalysenkojoined
14:51:35  <Nexxy>jesusabdullah, haxx
15:06:09  <jesusabdullah>nice
15:06:15  <jesusabdullah>I'm all over the place here
15:06:20  <jesusabdullah>trying to focus and sucking at it
15:10:52  * defunctzombie_zzchanged nick to defunctzombie
15:12:10  <defunctzombie>substack: please don't minify in browser-pack
15:12:20  <defunctzombie>I don't want another module with an uglify fs dependency
15:12:36  <defunctzombie>and if I use other minifiers then I want those to be used and not uglify
15:12:44  <defunctzombie>browser-pack has no business doing minification
15:13:07  <defunctzombie>if you want to turn the prelude into one line, I suggest just .replace('\n', ''); instead
15:13:40  <defunctzombie>substack: for the cannot find module 2, needs investigating, I ran the tests many times and never saw such a race but I only ran it on my mac
15:15:01  * ralphtheninjaquit (Quit: leaving)
15:18:03  <mikolalysenko>Is there anyway to seek in streams?
15:19:57  <jesusabdullah>You guys are so sassy!
15:24:34  <defunctzombie>substack: https://github.com/substack/module-deps/pull/2#issuecomment-13987225
15:24:57  <defunctzombie>I am not sure the conclusions here are correct?
15:25:18  <defunctzombie>also, required returns everything at once with all source available
15:31:23  * dguttmanjoined
15:36:21  * jibayjoined
15:37:14  * dguttmanquit (Quit: dguttman)
15:38:37  * dguttmanjoined
15:40:17  * fotoveritejoined
15:50:24  <jesusabdullah>substack: https://github.com/substack/ever cute