00:28:34  * thatguydanquit (Quit: thatguydan)
00:30:25  * thatguydanjoined
00:35:29  * devaholicquit (Ping timeout: 246 seconds)
00:42:43  * joshwnjjoined
00:56:38  * tilgoviquit (Remote host closed the connection)
02:18:51  <substack>dominictarr: perhaps 'tending complexity'
02:18:54  <substack>or stewarding
02:19:19  <dominictarr>that sounds like you want to help it grow.
02:19:27  <thatguydan>Anybody using any specific ports for a dnode server?
02:19:30  <substack>like keeping settlement from encroaching on wilderness
02:19:48  <dominictarr>how are we really trying to do with complexity
02:19:52  <dominictarr>?
02:20:32  <dominictarr>it's about orderlieness.
02:21:01  <dools>isolating complexity
02:21:03  <dominictarr>prehaps "entropy" is a more accurate term than "complexity"
02:21:12  <dominictarr>dools, thats quite good.
02:21:51  <dominictarr>hmm, measure complexity as interconnections?
02:21:55  <dominictarr>graphwise?
02:22:51  <dools>yeah i think so. you've seen that flasky goodness slide deck right?
02:23:09  <dools>he really explains the problem effectively i think
02:23:48  <dools>see i think the root of the problem is an obsession with code re-use
02:24:51  <dools>it's ultimately a false economy and any system with code re-use as it's driving tenet will tend towards being intractably complex. code-reuse wrt completely separate modules, ie. separate *purposes* is fine - like if you're downloading a package which does X and it does X well, that's great
02:25:22  <dools>but the way people worry about code re-use in their own applications is akin to being concerned if github.com/username/ModuleX/ has some code in it which is replicated in github.com/username/ModuleY/
02:26:05  <dools>it's obviously a terrible idea to take both of those modules, produced by different people in different ways etc. and create a common module upon which each depends (well, i guess there are certain cases where it would make sense but i think you can see what i'm getting at ...)
02:26:36  <dools>where as when ModuleX and ModuleY are just different parts of the same application everyone *automatically assumes* that isolating common bits of the code and re-using them is a good idea by *default*
02:26:48  <dools>from which stems an inordinate amount of technical debt
02:27:10  <dools>(and complexity)
02:28:54  <substack>that's like factorization
02:28:57  <substack>I've observed this
02:29:10  <substack>premature DRY
02:29:13  <dools>yeah
02:29:18  <dools>yagni
02:29:31  <dools>but for some reason when it's your *own* application no-one can sense it
02:30:08  <dools>but if you were to take two completely different modules/projects on github, like github.com/substack/IncredibleLightnessOfBeing/ and github.com/dominictarr/TheImportanceOfBeingEarnest/
02:30:28  <dominictarr>That I why I usually write new stuff inside other modules and then refactor it out.
02:30:29  <dools>then it would be patently absurd that you should set about re-implementing them with the common bits of code as a mutual dependency
02:31:02  <dools>i think there's something about having separate git repos for things that really solved the problem mentally for me
02:31:08  <dools>and that happened as a result of lurking here :)
02:31:30  <dominictarr>dools, the more important thing about modularization is to break of chunks that are small enough to be easily testable / confidant about.
02:31:48  <dools>i think that monolithic application frameworks (django, rails, symfony) are a major cause of this phenomenon
02:31:55  <dominictarr>indeed.
02:32:02  <dools>dominictarr: yeah - right. like so long as it's tested, who gives a shit?
02:32:13  <dools>it's like no-one cares if ls and cd have the same code running in them
02:32:37  <dools>oh shit! lines 420 - 430 of ls and lines 159 - 177 of cd are almost identical ... let's create a dependency!
02:33:00  <dools>somewhat contfived example but illustrates the point i think
02:33:13  <dominictarr>haha. yeah that is taking a principle to extemes with out understanding it's purpose.
02:33:22  <dools>right
02:33:39  <dools>orright i'm going to blog about this
02:34:03  <dominictarr>the trouble with rails it it's ilk, is that you've only got functional tests really.
02:34:31  <dominictarr>many many rails apps take like 8 hours to run the full suite of tests.
02:34:46  <substack>there's no emphasis on creating pieces that are completely separate from the existing application and its state
02:34:53  <dominictarr>that... is just insane.
02:34:58  <dominictarr>agreed.
02:35:13  <substack>which makes keeping up with upgrades a massive amount of work too
02:35:20  <dools>one of the biggest barriers to that is the assumption that all parts of the same application need to share a common database, too
02:35:30  <substack>which is why big webapps are still kicking around on rails 2 even though they're up to version 4 by now
02:36:02  <substack>yes, or that the database is the most obvious place to put all persistent state
02:36:12  <dominictarr>well, rails is all about extending the base classes they give you, which are ORM classes, so to test them you need to thrash some poor database...
02:36:24  <dools>even if you're using an RDBMS you can quite happily separate out each part of the application into it's core concerns with it's own database, then use message based communication to inter-operate (eg. beanstalkd). if you ever come across a *specific need* to merge those 2 bits of the application into a monolithic database, then you can do so relatively simply especially if your individual modules are well tested
02:36:40  <substack>even though many things that should span requests like network connections or small in-memory objects are ephemeral
02:39:58  * pikpikjoined
02:40:10  * pikpikquit (Changing host)
02:40:10  * pikpikjoined
02:40:10  * pikpikquit (Changing host)
02:40:10  * pikpikjoined
02:40:31  <Raynos>o/
02:46:11  * thatguydanquit (Quit: thatguydan)
02:48:11  * mikealquit (Quit: Leaving.)
02:51:08  * thatguydanjoined
02:53:39  <dominictarr>catch you dudes later, I'm off to bed.
02:53:54  * dominictarrchanged nick to dominic[zzz]
03:16:20  * st_luke_joined
03:17:39  <Raynos>> There is data, it exists https://github.com/Raynos/distributed-map#example-client-any-browser
03:26:27  * stlsaintquit (Quit: Lost terminal)
03:29:29  <substack>ok I think I might have a serious purpose for using codebux now
03:29:35  <substack>to prototype a ci-server
03:29:49  <substack>except not in the way they are traditionally conceived with pass/fail
03:30:00  <substack>this will be useful for testling too
03:36:10  <Raynos>substack: how do I implement distributed auth
03:36:10  <Raynos>I have distributed data and know how to make it production ready. Now I need distributed auth to overthrow our centralized overlords
03:37:16  <substack>well if you create a seaport-registered semvered auth service
03:37:25  <substack>and just connect to a regular db with it
03:37:41  <substack>then other services can connect to the auth service to verify sessions and tokens
03:38:16  <substack>and then you have the freedom to incrementally phase in and out different db backends and auth apis without breaking existing pieces
03:38:29  <substack>because you can just spin up different versions of your auth service
03:48:50  <Raynos>substack: ...
03:49:08  <Raynos>substack: I meant distributed auth in the browser, no centralized servers
03:49:24  <substack>oh
03:49:48  <substack>public keys?
04:12:39  * st_luke_quit (Remote host closed the connection)
05:15:10  <Raynos>substack: that's what I was thinking, just writing it is a pain
05:16:07  <Raynos>I need a way to verify that incoming data from a shoe stream which is being relayed from another browser by the server is actually from the that person on that browser and not an attacker
05:16:42  * joshwnjquit (Quit: ERC Version 5.3 (IRC client for Emacs))
05:16:56  <substack>public keys ssh style
05:17:08  <Raynos>how do I generate a private key for each user?
05:17:33  <Raynos>because users need to sign the data they send through my relay shoe server with their private key
05:17:54  <substack>just shell out to openssl
05:18:36  * joshwnjjoined
05:18:41  <Raynos>how do I shell out to openssl in a browser?
05:18:51  <Raynos>how does another browser user get that browsers public key?
05:19:32  <substack>just ask a server to do it
05:19:41  <substack>also this http://ats.oka.nu/titaniumcore/js/crypto/readme.txt
05:20:38  <Raynos>no don't just ask a server to do this
05:21:09  <Raynos>its not allowed to rely on server state or sessions or any of that bullshit
05:21:17  * mikealjoined
05:21:58  <Raynos>i submitted a link to hacker news and it redirected me to r
05:36:19  * niftylettucejoined
05:42:23  <Raynos>http://www.reddit.com/r/javascript/comments/y4qk8/distributedmap_a_distributed_data_store_among/
05:42:27  <Raynos>Fire the upboats!
05:49:17  * thatguydanquit (Quit: thatguydan)
05:50:17  * thatguydanjoined
06:09:09  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
06:09:10  <rowbit>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
06:21:35  <substack>yay
06:58:52  <rowbit>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
06:58:52  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
07:06:43  <substack>:D
07:17:23  * joshwnjquit (Ping timeout: 256 seconds)
07:26:32  * thatguydanquit (Ping timeout: 252 seconds)
07:42:15  * Raynosquit (Remote host closed the connection)
07:43:22  * Raynosjoined
08:07:49  * thatguydanjoined
08:24:29  <niftylettuce>anyone here know of someone with a successful Kickstarter campaign?
08:28:57  <substack>thatguydan is working for ninjablocks that started on kickstarter
08:37:41  * thatguydanquit (Quit: thatguydan)
09:11:33  <substack>now prototyping this ci stuff a little
10:09:40  * thatguydanjoined
10:12:54  * captain_morganjoined
10:18:24  * timoxleyquit (Quit: Computer has gone to sleep.)
10:45:01  * dominic[zzz]quit (Remote host closed the connection)
12:05:16  * thatguydanquit (Read error: Connection timed out)
12:05:44  * thatguydanjoined
12:19:46  * timoxleyjoined
12:24:02  * thatguydanquit (Read error: Connection timed out)
12:24:28  * timoxleyquit (Client Quit)
12:27:15  * thatguydanjoined
13:09:30  * devaholicjoined
14:24:25  * dominictarrjoined
14:26:55  <st_luke>substack: saw that post earlier, I enjoyed it
14:27:16  <st_luke>from the michaelochurch person
14:40:17  * rannmannquit (*.net *.split)
14:45:50  * rannmannjoined
14:47:49  * thatguydanquit (Quit: thatguydan)
15:05:11  * devaholicquit (Quit: Leaving)
15:52:05  * devaholicjoined
16:02:16  * wiwilliajoined
16:05:41  <simcop2387>pkrumins: it gets to -37C where you are?
16:05:43  <simcop2387>12:04:12 < Foal> simcop2387: 2011-06-05 10:05:11 < pkrumins> Yaakov: mine is at -37c
16:15:39  * blakmatrixquit (Read error: Connection reset by peer)
16:22:15  * blakmatrixjoined
17:18:30  * rannmannquit (Changing host)
17:18:30  * rannmannjoined
17:25:51  * zz_shykeschanged nick to shykes
17:29:47  * mikealquit (Quit: Leaving.)
17:38:57  * Nexxyjoined
17:38:57  * Nexxyquit (Changing host)
17:38:57  * Nexxyjoined
18:01:17  * mikealjoined
18:03:35  * Nexxypart
18:29:25  * wiwilliaquit (Ping timeout: 248 seconds)
19:03:26  * mikealquit (Quit: Leaving.)
19:03:40  * mikealjoined
19:10:18  * _sorensenjoined
19:26:25  <isaacs>dominictarr: i added a ConfigChain class for greater control of functionality. tests are passing, but wildly inadequate at this point.
19:26:30  <isaacs>dominictarr: in config-chain, that is
19:26:41  <isaacs>dominictarr: i'll have a pull req with tests for you in a few hours.
19:26:52  <dominictarr>isaacs, cool!
19:27:22  <isaacs>dominictarr: https://github.com/isaacs/config-chain/commit/984c074eb99087429c123581480081c468fd9ecf
19:27:34  <isaacs>don't pull yet, though, i wanna fixup some tests onto that
19:27:58  <isaacs>dominictarr: also, because i know you wanted it: https://github.com/isaacs/config-chain/commit/984c074eb99087429c123581480081c468fd9ecf#L0R109
19:28:07  <isaacs>cc.addUrl('http://foo.com/conf.json')
19:28:31  <isaacs>but it needs i think some kind of promisey cc.add(url).add(file).on('load', function () { ... })
19:28:40  <isaacs>at least, that's the api i really want for npm
19:28:49  <isaacs>ok, i'm off for a bit. bbiab
19:28:50  * isaacsaway
19:30:53  <isaacs>oh, one thing: substack: https://github.com/isaacs/sigmund
19:31:20  <isaacs>$ codebux .
19:31:20  <isaacs>+ 100.00 # initial stipend
19:31:20  <isaacs>- 1.89 # sigmund.js
19:31:20  <isaacs>—————————————————————————————————————————————————
19:31:23  <isaacs>+ 98.10
19:31:27  <isaacs>whoa, bad paste
19:31:29  <isaacs>sorry
19:54:47  * mikealquit (Quit: Leaving.)
20:05:08  * captain_morganquit (Remote host closed the connection)
20:47:23  * mikealjoined
21:21:56  <maxogden>BAD PASTE
22:32:11  <blakmatrix>some more permisions
22:36:22  * thatguydanjoined
22:37:16  * st_luke_joined
23:12:24  * thatguydanquit (Quit: thatguydan)
23:14:50  * saijanai_quit (Quit: saijanai_)
23:21:25  * thatguydanjoined
23:22:45  * thatguydanquit (Client Quit)
23:24:15  * st_luke_quit (Remote host closed the connection)
23:32:58  * captain_morganjoined
23:34:45  <isaacs>dominictarr: does it make sense to have config-chain use PL.push?
23:34:53  <isaacs>dominictarr: it seems like PL.unshift() is wiser...
23:35:23  <isaacs>cc.add({foo:'bar'}) ; cc.add({foo:'baz'}) ; cc.get('foo') // 'bar' or 'baz'?
23:35:26  <dominictarr>isaacs, thats right. usually you know the defaults when your implementing,
23:35:54  <isaacs>hm.. otoh, you probably have hte cli before loading the global file...
23:36:04  <dominictarr>although, you know _where_ the config is coming from.
23:36:04  <isaacs>and the local file can change the location of teh global file maybe.
23:36:07  <isaacs>right
23:36:40  <dominictarr>i go: opts, env, ~/.config, /etc/config,
23:36:42  <isaacs>but since ConfigChain<<ProtoList, you can use all those array-ish methods
23:36:48  <dominictarr>,defaults
23:36:50  <isaacs>then defaults
23:36:51  <isaacs>right
23:36:58  <isaacs>and you know opts, env, and defaults up-front
23:37:28  <dominictarr>and maybe you want --config to point to a file,
23:37:32  <isaacs>right
23:37:38  <isaacs>like how npm has --userconfig and --globalconfig
23:37:42  <dominictarr>and probably stick that in after opts but before env.
23:37:45  <isaacs>the userconfig can be set by env or cl
23:37:54  <isaacs>the globalconfig can be set by env, cl, or userconfig
23:38:21  <isaacs>(cl === opts)
23:39:04  <isaacs>here's a thought, what if ProtoList let you set the root object.
23:39:06  <dominictarr>globalconfig set by userconfig?
23:39:11  <isaacs>dominictarr: yes.
23:39:25  <dominictarr>that seems strange to me
23:39:29  <isaacs>the root object defaults to nul, and it is the thing from which all else inherits.
23:39:56  <isaacs>dominictarr: yeah, it kind of is.
23:40:16  <isaacs>actually, there's another one that npm uses, between global and defaults, called 'builtin'
23:40:21  <dominictarr>the root object being the last item in the list. the defaults
23:40:29  <isaacs>which is "sticky" so that it preserves it when it overwrites itself
23:40:35  <isaacs>yeah
23:41:00  <dominictarr>what is the difference between builtin and defaults?
23:41:45  * st_lukequit (Remote host closed the connection)
23:44:35  <isaacs>so, let'ss ay you're homebrew or debian or something
23:45:11  <isaacs>and you want to have npm install global modules into /usr/local/lib/node_modules, and bins in /usr/bin/ and configs in /etc/config/npm/ or some crazy shit
23:45:36  <isaacs>builtin is a way of me saying, "Please do not float patches on npm and expect me to fix them when they break, here use this and be slightly less insane"
23:46:02  <isaacs>so, if you have a config file in /usr/local/lib/node_modules/npm/npmrc (or wherever npm's installed) then that will override the defaults
23:46:08  <isaacs>and if you install npm over itself, it'll preserve it
23:46:40  <isaacs>we also use this in the Windows msi installer, so that the default global install location is in ~/AppData/Roaming/npm/
23:46:52  <isaacs>because windows is weird.
23:47:47  * joshwnjjoined
23:48:31  <dominictarr>so how does npm builtin get updated?
23:49:03  <isaacs>dominictarr: you write it when your packge system thingie installs npm
23:49:05  * mikealquit (Quit: Leaving.)
23:49:38  <dominictarr>so that is the userconfig when you sign up etc?
23:51:14  <isaacs>the userconfig is ~/.npmrc
23:51:14  <isaacs>npm get userconfig
23:51:20  <dominictarr>... oh, it's set my the operating system's package system?
23:51:32  <isaacs>the builtin?
23:51:35  <dominictarr>yeah
23:51:36  <isaacs>npm doesn't ship with one by default
23:51:44  <isaacs>you'd have to write it, and know that you have to do that
23:51:55  <isaacs>mostly, you never need to deal with that
23:51:57  <dominictarr>right, but if I installed it with yum or apt-get or whatever,
23:52:01  <isaacs>right
23:52:05  <dominictarr>that would create one.
23:52:07  <isaacs>then they might stick that file there
23:52:11  <dominictarr>that makes sense.
23:52:36  <isaacs>so, proto-list 1.2 supports setting the root
23:52:43  <dominictarr>it could be useful to say where the globalconfig is on that system.
23:53:28  <isaacs>right
23:53:36  <isaacs>builtin basically takes over for the defaults
23:53:59  <dominictarr>yup. does anyone actually use it though?
23:54:04  <isaacs>yes, we do
23:54:10  <isaacs>the MSI installer for windows
23:54:17  <isaacs>totally super duper depends on that
23:54:25  <dominictarr>got it.
23:54:36  <isaacs>but, what i can do is this:
23:56:06  <isaacs>cc.root = defaultConfigs; check for builtin; if builtin { cc.push(builtin); cc.root = cc.pop() }
23:56:07  <isaacs>or less cleverly: builtin.__prot__ = defaultConfigs; cc.root = builtin
23:56:44  <dominictarr>yeah, you definately need to load it in two stages.
23:57:02  <dominictarr>once you havehte builtin, then you load all the user/system config
23:57:07  <isaacs>right
23:57:20  <isaacs>that doesn't need to be the prettiest api, though
23:57:23  <isaacs>it's very npm-specific
23:57:27  <isaacs>and edge-casey
23:57:57  <isaacs>mostly, you want to be able to do: cc.addFile('foo.json'); cc.addUrl('http://foo.com/conf.json'); cc.addFile('ini.ini'); cc.on('load', function () { .. do stuff .. })
23:57:57  <dominictarr>it would probably be a suitable approach for anything that was as cross-platform ambitious as npm.
23:58:32  <isaacs>the question is... which order are those in?
23:58:33  <isaacs>i can do either
23:58:47  * blakmatrixquit (Ping timeout: 244 seconds)
23:59:06  <isaacs>but the question is whether add(...) is a push() (lower priority) or a shift() (higher priority)
23:59:17  <dominictarr>probably builtins overides defaults.
23:59:24  <isaacs>forget about builtins
23:59:46  <isaacs>and defaults are fine, you just do cc.root = defaults