00:15:36  * therealkoopaquit (Remote host closed the connection)
00:16:12  * therealkoopajoined
00:20:52  * therealkoopaquit (Ping timeout: 256 seconds)
00:51:17  * therealkoopajoined
00:56:25  * therealkoopaquit (Ping timeout: 268 seconds)
00:59:35  * therealkoopajoined
01:04:30  * therealkoopaquit (Ping timeout: 256 seconds)
01:48:29  * therealkoopajoined
01:49:12  * therealkoopaquit (Remote host closed the connection)
01:49:44  * therealkoopajoined
01:53:46  * contrahaxquit (Quit: Sleeping)
01:54:32  * therealkoopaquit (Ping timeout: 260 seconds)
02:41:42  * therealkoopajoined
03:22:41  * therealkoopaquit (Remote host closed the connection)
03:26:56  * mattronixquit (Ping timeout: 260 seconds)
03:26:57  * foreigneye1quit (Ping timeout: 260 seconds)
03:34:59  * foreigneye1joined
03:36:17  * mattronixjoined
04:23:47  * therealkoopajoined
04:28:37  * therealkoopaquit (Ping timeout: 252 seconds)
04:41:14  * pfrazeequit (Remote host closed the connection)
05:24:50  * therealkoopajoined
05:29:05  * therealkoopaquit (Ping timeout: 244 seconds)
06:25:35  * therealkoopajoined
06:30:20  * therealkoopaquit (Ping timeout: 258 seconds)
07:26:22  * therealkoopajoined
07:32:19  * therealkoopaquit (Ping timeout: 268 seconds)
07:43:37  * therealkoopajoined
07:47:57  * therealkoopaquit (Ping timeout: 240 seconds)
08:44:14  * therealkoopajoined
08:48:48  * therealkoopaquit (Ping timeout: 245 seconds)
08:58:00  * fotoveritequit (Quit: fotoverite)
09:01:39  * fotoveritejoined
09:09:55  * fotoveritequit (Quit: fotoverite)
09:45:09  * therealkoopajoined
09:49:29  * therealkoopaquit (Ping timeout: 244 seconds)
10:25:45  * saijanai_quit (Quit: saijanai_)
10:45:51  * therealkoopajoined
10:50:00  * therealkoopaquit (Ping timeout: 246 seconds)
11:45:42  * thealphanerdquit (Quit: farewell for now)
11:46:13  * thealphanerdjoined
11:46:28  * therealkoopajoined
11:51:04  * therealkoopaquit (Ping timeout: 256 seconds)
12:47:14  * therealkoopajoined
12:51:44  * therealkoopaquit (Ping timeout: 250 seconds)
13:48:02  * therealkoopajoined
13:52:58  * therealkoopaquit (Ping timeout: 265 seconds)
13:55:46  * pfrazeejoined
14:02:17  * therealkoopajoined
14:03:36  * therealkoopaquit (Remote host closed the connection)
14:03:57  * therealkoopajoined
15:07:20  * therealkoopaquit
16:21:22  <dguttman>mafintosh: I liked your post on stability http://mafintosh.com/stability-first.html
16:21:31  <dguttman>saw it in JS Weekly =)
16:21:35  <mafintosh>dguttman: thanks! appreciate it
16:21:50  <dguttman>or Node Weekly... one of them =)
16:22:22  <mafintosh>didn't know it was on there, cool!
16:22:31  <mafintosh>should have put a bunch of ads on my blog then lol
16:23:02  <dguttman>haha
16:23:14  <dguttman>especially like your definition of a peer dependency
16:23:19  <dguttman>"Effectively this makes Node core a "peer dependency". If you are not familiar with the term, it basically means a dependency that is given to you but that you cannot version. You just have to deal with the one you've been given."
16:23:27  <dguttman>I'm going to use that
16:27:45  <mafintosh>nice. there is also a PR now to revert the buffer thing + a discussion issue on how to deal with all this stuff in general so feel like it had decent impact
16:43:29  <noffle>mafintosh: do you have thoughts on how to avoid peer dependencies when you have modules that compose other modules? like a hyperlog-index that consumes a hyperlog instance. the hyperlog's version and api are unknown. I've been thinking lately about whether this can be avoided
16:43:50  <noffle>but still have that powerful ability of composition
16:44:05  <mafintosh>noffle: not other than have a few peer deps as absolutely possible
16:44:19  <mafintosh>noffle: only the *core* abstraction in your app should be allowed to be a peer dep
16:44:45  <mafintosh>and that abstraction should be low level enough to have an interface that doesn't change
16:44:51  <mafintosh>like level
16:45:20  <mafintosh>noffle: http://mafintosh.com/pragmatic-modularity.html (i wrote a bit about it here)
16:49:04  <noffle>mafintosh: ah yes I really like that one
16:50:28  <mafintosh>noffle: most times peer deps are a code smell in node
16:50:46  <mafintosh>noffle: most apis just accept numbers, strings, option maps or functions
16:51:50  <mafintosh>noffle: however! if you introduce a peer dep for some reason, a decent pattern is to make a seperate repo with a bunch of test cases for its api
16:52:03  <mafintosh>these tests should more or less be append-only and cover the entire api
16:52:07  <noffle>mafintosh: why don't you specify level as a peerDependency in hyperlog's package.json? doesn't that help guard against folks npm install'ing incompat versions?
16:52:27  <noffle>mafintosh: do you have an example of that?
16:52:40  <mafintosh>noffle: https://github.com/level/abstract-leveldown
16:53:02  <mafintosh>noffle: https://github.com/maxogden/abstract-blob-store
16:53:08  <noffle>oh yes
16:53:30  <mafintosh>but still be super careful about introducing a new one of these
16:53:40  <mafintosh>there is a good chance you wont need it
16:53:58  <mafintosh>noffle: i think npm deprecated the peer deps thing
16:54:41  <noffle>ah (was reading https://blog.domenic.me/peer-dependencies/)
17:02:58  <ogd>peerdeps is considered harmful
18:10:50  * contrahaxjoined
18:49:23  * fotoveritejoined
18:51:48  <noffle>ogd: why is that? peer deps are harmful, but isn't it better to make them explicit / version enforceable?
19:06:16  * fotoveritepart
19:08:00  * fotoveritejoined
19:10:51  * fotoveritequit (Client Quit)
19:13:40  * fotoveritejoined
19:54:00  <substack>noffle: they're not enforceable is the problem
19:54:24  <substack>and if you use a dep that is compatible with the interface but not planned to be compatible by the module author, you have a problem
19:54:43  <substack>like for example if a module had a peer dep on levelup but you were using level-browserify
19:55:19  <substack>and also, future semver major upgrades might be compatible but peer deps would hold that progress back
19:55:42  <substack>you would have to patch every module every time the depended-on package updated its major version
19:56:02  <substack>it's the reintroduction of dependency hell into an ecosystem that was designed to avoid it
19:57:54  <noffle>substack: my understanding is that e.g. hyperlog-index will break once a new major of hyperlog comes out and, say, changes the whole api. having an explicit peerdep from hyperlog-index to hyperlog would prevent you from pulling in an unsupported version. isn't an explicit peerdep net positive in this this case, since it'd otherwise mean a breakage?
20:02:23  <substack>it breaks no matter what
20:02:58  <substack>I don't think the peerdep information is even meaningful because it's making a claim on future changes
20:03:08  <substack>it's like using the engines field for node versions
20:12:39  <noffle>substack: why is that not meaningful? trying to wrap my head around this
20:13:27  <akiva>The thing that baffles me about the nonsense with Buffer is that if node.js had approached most of core with factory functions, or at least not requiring `new` for constructor functions, we could've avoided it all. Another win for open/close principal
20:15:45  <noffle>what I imagine happening /w peerdeps is you'd try to run 'npm install hyperlog hyperlog-index hyperlog-other-thing', where the last two depend on different ranges of hyperlog. this would result in an error being thrown at install time. this seems like the best case, since silently allowing bizarre behaviour to occur b/c of api mismatches seems much worse
20:17:55  <substack>when peer deps were around, packages would fail to install altogether that would have otherwise worked
20:18:15  <substack>I don't think it's reasonable to expect people to update their packages
20:18:25  <substack>unless the code is actually incompatible
20:18:35  <noffle>ooh, I think I see now. even if major versions were compat they'd STILL be locked
20:18:41  <substack>which you don't get with semver the same way with peerdeps as you get with deps
20:18:45  <noffle>which puts huge onus on tons of module devs
20:18:49  <substack>yes
20:18:53  <substack>it's not sustainable
20:18:57  <noffle>yes, that makes sense
20:19:30  <substack>deps can be conservative about module versions because it doesn't surface downstream with consumers
20:19:47  <substack>except in the browser with bigger bundles but things still work
20:20:24  <substack>with peerdeps you can't be conservative about versions because the future will insert itself
20:58:20  <noffle>substack.net seems to be down
21:58:14  <substack>one sec
21:58:46  <substack>back, thanks
21:58:50  <substack>this box runs out of memory
21:59:00  * substackat redwood regional park using the cybernomad
22:16:45  <noffle>it's running glog, right? I think I noticed a memleak somewhere back when I was fiddling with it
22:17:01  <substack> yes
23:26:36  * contrahaxquit (Quit: Sleeping)
23:26:57  * contrahaxjoined
23:31:35  * contrahaxquit (Ping timeout: 256 seconds)