00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:09  <domanic>it depends on what sort of social network you are trying to build
00:00:12  * ircretaryjoined
00:00:40  <domanic>asymmetric is what you want for fans
00:00:49  <domanic>symmetric is what you want for friends
00:01:08  <domanic>there is also maybe otherways you could implement following
00:01:29  <domanic>like have a sort of implicit follow - you could make a wiki or a reddit
00:01:50  <domanic>where you follow the people you upvote most?
00:02:12  <domanic>or an npm where you follow someone when you depend on their package?
00:03:21  <domanic>I have been thinking about the different sorts of things you could build on top of this
00:03:40  <pfraze>yeah, that gets into applications
00:06:42  <domanic>just need to change this line: https://github.com/dominictarr/secure-scuttlebutt/blob/master/replicate.js#L18
00:06:56  <domanic>so that you pass in a stream of id's you want to replicate
00:07:24  <domanic>and then apps can implement their own following
00:07:32  * quijotejoined
00:08:05  <domanic>(this is for the stage 0 stuff... ssb as database stuff)
00:09:10  <pfraze>yeah. UX-wise, I get excited about the feed as just a changelog behind a DB. Feed UXs are good but have limits
00:09:34  * anvakajoined
00:11:56  * quijotequit (Ping timeout: 240 seconds)
00:12:34  <pfraze>the thing I'm really concerned about now is managing keypairs. This is why I want the friend tool, because it's a symmetric identity verification. I think we also need good ways to handle key compromise and multiple devices
00:20:11  * AvianFluquit (Quit: Leaving)
00:21:00  * AvianFlujoined
00:31:14  <domanic>pfraze, I'm thinking you could 'delegate' which means - when you follow me, also follow this key
00:31:45  <domanic>maybe delegate is not the right word...
00:32:19  <domanic>yeah and we also need a good key revocation story
00:33:20  * warbrettquit (Remote host closed the connection)
00:33:58  <domanic>that is similar to delegate, in that when you revoke a key
00:34:15  <domanic>your followers should stop following you, and start following a new key
00:52:32  * yorickquit (Remote host closed the connection)
01:03:42  * phatedquit (Remote host closed the connection)
01:08:28  * quijotejoined
01:08:40  * warbrettjoined
01:09:49  * fotoveritejoined
01:12:33  * quijotequit (Ping timeout: 240 seconds)
01:13:07  * warbrettquit (Ping timeout: 244 seconds)
01:36:59  <pfraze>domanic, yes, there needs to be a level of fuzziness or weightedness to those algorithms. Three compromise signals > one
01:37:58  <domanic>there are lots of ways you can do it and they all suck
01:38:25  <domanic>but I'm thinking maybe you could generate your future key - encrypt it, and give it to 3 friends
01:38:48  <domanic>(people who know you well enough to identify you over another channel, phone etc)
01:39:15  <domanic>so you can combine the keys from them into one key and then you are good.
01:44:49  * phatedjoined
01:54:55  * jxsonjoined
02:00:57  * jxsonquit (Remote host closed the connection)
02:09:13  * quijotejoined
02:11:09  * therealkoopajoined
02:13:22  * quijotequit (Ping timeout: 240 seconds)
02:16:18  * Maciek416joined
02:17:26  * kesslerjoined
02:21:52  * kesslerquit (Ping timeout: 255 seconds)
02:29:04  * therealkoopaquit (Remote host closed the connection)
02:41:32  * domanicquit (Ping timeout: 240 seconds)
02:45:51  * phatedquit (Remote host closed the connection)
02:47:26  * kesslerjoined
02:52:00  * kesslerquit (Ping timeout: 250 seconds)
02:56:47  * warbrettjoined
03:01:27  * warbrettquit (Ping timeout: 245 seconds)
03:10:00  * quijotejoined
03:11:42  * andrewdeandradejoined
03:14:58  * quijotequit (Ping timeout: 264 seconds)
03:40:10  * AvianFluquit (Quit: Leaving)
03:45:24  * AvianFlujoined
03:56:26  * phatedjoined
04:01:19  * phatedquit (Ping timeout: 255 seconds)
04:10:36  * quijotejoined
04:12:13  * CoderPuppyquit (Quit: Leaving)
04:15:22  * quijotequit (Ping timeout: 272 seconds)
04:21:04  * anvakaquit (Remote host closed the connection)
04:27:56  * andrewdeandradequit (Ping timeout: 240 seconds)
04:29:10  * anvakajoined
04:32:49  * Maciek416quit (Remote host closed the connection)
04:33:14  * Maciek416joined
04:34:18  * warbrettjoined
04:37:33  * Maciek416quit (Ping timeout: 240 seconds)
04:39:02  * warbrettquit (Ping timeout: 250 seconds)
04:42:18  * AvianFluquit (Quit: Leaving)
04:44:37  * phatedjoined
04:47:13  * kriskowalquit (Ping timeout: 272 seconds)
04:53:49  * phatedquit (Remote host closed the connection)
05:02:44  * pfrazequit (Ping timeout: 240 seconds)
05:07:09  * fotoveritequit (Quit: fotoverite)
05:11:31  * quijotejoined
05:14:57  * ins0mniaquit (Remote host closed the connection)
05:15:10  * ins0mniajoined
05:15:52  * quijotequit (Ping timeout: 250 seconds)
05:16:10  * Guest4617quit (Ping timeout: 264 seconds)
05:16:45  * Guest4617joined
05:19:01  * domanicjoined
05:32:45  * thealphanerdquit (Quit: thealphanerd)
05:33:08  * thealphanerdjoined
05:39:43  * Guest4617quit (Ping timeout: 244 seconds)
05:52:46  * jxsonjoined
06:04:26  * phatedjoined
06:09:34  * phatedquit (Ping timeout: 264 seconds)
06:12:08  * quijotejoined
06:16:21  * quijotequit (Ping timeout: 240 seconds)
06:22:00  * Maciek416joined
06:26:20  * Maciek416quit (Ping timeout: 240 seconds)
06:27:09  * dguttmanquit (Quit: dguttman)
06:27:50  * dguttmanjoined
06:49:19  * thealphanerdquit (Quit: thealphanerd)
07:07:46  * pfrazejoined
07:09:11  * phatedjoined
07:13:03  * quijotejoined
07:17:32  * quijotequit (Ping timeout: 250 seconds)
07:20:33  * phatedquit (Remote host closed the connection)
07:20:34  * domanicquit (Ping timeout: 250 seconds)
07:47:51  * anvakaquit (Remote host closed the connection)
07:49:05  * anvakajoined
07:53:08  * anvakaquit (Ping timeout: 240 seconds)
08:11:00  * Maciek416joined
08:13:41  * quijotejoined
08:15:32  * Maciek416quit (Ping timeout: 240 seconds)
08:18:16  * quijotequit (Ping timeout: 255 seconds)
08:31:09  * phatedjoined
08:35:58  * phatedquit (Ping timeout: 260 seconds)
08:39:47  * jxsonquit (Remote host closed the connection)
08:40:29  * jxsonjoined
08:44:58  * jxsonquit (Ping timeout: 264 seconds)
08:52:25  * domanicjoined
09:14:37  * quijotejoined
09:18:57  * quijotequit (Ping timeout: 245 seconds)
09:20:20  * domanicquit (Ping timeout: 240 seconds)
09:46:50  * therealkoopajoined
09:59:47  * Maciek416joined
10:04:21  * Maciek416quit (Ping timeout: 240 seconds)
10:15:13  * quijotejoined
10:19:32  * quijotequit (Ping timeout: 240 seconds)
10:22:14  * therealkoopaquit (Remote host closed the connection)
10:22:45  * pfrazequit (Ping timeout: 240 seconds)
10:34:01  * ins0mnia_joined
10:39:06  * quijotejoined
11:03:24  * ins0mnia_quit (Read error: Connection reset by peer)
11:04:03  * quijotequit (Ping timeout: 240 seconds)
11:15:36  * Guest4617joined
11:45:23  * wa7sonjoined
11:45:32  * xipliasjoined
11:46:37  <mafintosh>substack: my testling github webhook is read with an 'last push failed' error. does this mean testling isnt running?
11:46:46  <mafintosh>wa7son: o/ same issue
11:48:56  * Maciek416joined
11:52:02  <wa7son>substack: Here's a gist of the webhook request/response: https://gist.github.com/watson/6212e9df7f37d9bf1828
11:53:33  * Maciek416quit (Ping timeout: 240 seconds)
11:56:01  * yorickjoined
11:57:23  * merceristjoined
12:01:32  * quijotejoined
12:05:50  * quijotequit (Ping timeout: 255 seconds)
13:01:03  * stagasjoined
13:02:07  * quijotejoined
13:03:33  * AvianFlujoined
13:06:33  * quijotequit (Ping timeout: 240 seconds)
13:24:43  * merceristquit (Quit: Computer has gone to sleep.)
13:37:45  * Maciek416joined
13:39:29  * quijotejoined
13:42:20  * Maciek416quit (Ping timeout: 240 seconds)
13:44:00  * quijotequit (Ping timeout: 246 seconds)
13:46:20  * merceristjoined
13:50:25  * merceris_joined
13:50:42  * merceristquit (Ping timeout: 245 seconds)
13:51:43  * cpupjoined
13:57:06  * warbrettjoined
14:25:53  * ilterisquit (Excess Flood)
14:26:41  * merceris_quit (Quit: Computer has gone to sleep.)
14:29:51  * ilterisjoined
14:40:15  * quijotejoined
14:42:07  * kesslerjoined
14:44:44  * quijotequit (Ping timeout: 250 seconds)
14:52:30  * merceristjoined
15:05:37  * kesslerquit (Ping timeout: 245 seconds)
15:14:32  * quijotejoined
15:26:44  * Maciek416joined
15:29:38  * AvianFluquit (Quit: Leaving)
15:31:32  * Maciek416quit (Ping timeout: 240 seconds)
15:37:36  * kesslerjoined
15:38:20  * warbrettquit (Remote host closed the connection)
15:59:58  * quijotequit (Ping timeout: 264 seconds)
16:04:46  * quijotejoined
16:08:09  * yorickquit (Remote host closed the connection)
16:08:15  * ednapiranhajoined
16:25:22  * Guest4617quit (Ping timeout: 240 seconds)
16:33:40  * AvianPhonejoined
16:37:57  * warbrettjoined
16:45:08  * AvianPhonequit (Ping timeout: 240 seconds)
16:48:12  * stagasquit (Ping timeout: 245 seconds)
16:53:53  * jesusabdullahquit (Remote host closed the connection)
16:59:40  * jesusabdullahjoined
17:03:52  * AvianFlujoined
17:03:56  * brianloveswordsjoined
17:04:00  * Maciek416joined
17:05:43  * peutetrejoined
17:10:03  * Maciek416quit (Remote host closed the connection)
17:10:29  * Maciek416joined
17:14:45  * Maciek416quit (Ping timeout: 240 seconds)
17:15:24  * peutetrequit (Quit: peutetre)
17:18:07  * quijotequit (Ping timeout: 245 seconds)
17:20:17  * merceristquit (Quit: Computer has gone to sleep.)
17:23:32  * pfrazejoined
17:23:49  * quijotejoined
17:27:32  * ednapiranhaquit (Remote host closed the connection)
17:41:58  * merceristjoined
17:43:26  * merceristquit (Client Quit)
17:44:44  * merceristjoined
17:51:55  * quijotequit (Ping timeout: 272 seconds)
17:55:04  * merceristquit (Quit: Computer has gone to sleep.)
17:55:19  * quijotejoined
18:03:45  * merceristjoined
18:08:41  * thealphanerdjoined
18:13:43  * merceristquit (Quit: Computer has gone to sleep.)
18:14:05  * kesslerquit (Ping timeout: 272 seconds)
18:16:06  * warbrettquit (Remote host closed the connection)
18:16:38  * warbrettjoined
18:16:46  * domanicjoined
18:20:42  * warbrettquit (Ping timeout: 245 seconds)
18:21:45  * quijotequit (Read error: Connection reset by peer)
18:22:06  * quijotejoined
18:22:11  * peutetrejoined
18:24:29  * warbrettjoined
18:26:10  * AvianFluquit (Ping timeout: 250 seconds)
18:28:12  * ednapiranhajoined
18:32:21  * ednapiranhaquit (Ping timeout: 240 seconds)
18:34:59  * quijotequit (Ping timeout: 272 seconds)
18:36:29  * AvianFlujoined
18:36:37  * thealphanerdquit (Quit: thealphanerd)
18:39:38  * kesslerjoined
18:40:57  * merceristjoined
18:42:17  * peutetrequit (Quit: peutetre)
18:44:05  * kesslerquit (Ping timeout: 255 seconds)
18:55:00  * AvianFluquit (Ping timeout: 260 seconds)
18:55:37  * quijotejoined
18:59:08  * Maciek416joined
19:03:52  * Maciek416quit (Ping timeout: 260 seconds)
19:08:15  <chapel>othiym23: if you're around, does shimmer work nested, e.g. if you shim a function, then shim the shimmed function, will they continue to execute up the shims to the original?
19:10:39  * kesslerjoined
19:20:00  * warbrettquit (Remote host closed the connection)
19:20:34  * warbrettjoined
19:22:10  * quijotequit (Ping timeout: 264 seconds)
19:25:02  * warbrettquit (Ping timeout: 255 seconds)
19:26:24  <othiym23>chapel: since it wraps the shimmed function in a closure, as long as you remember to call the original function and return its value, all of the wrappers will get called eventually
19:26:53  <othiym23>it's not automatic, though, because you frequently need to decide how you want to set up / deal with the return value from the wrapped function
19:27:27  <othiym23>I could have done an Angus Croll-style before / after extension point / AOP thinger, but I wanted to keep it simple
19:28:42  * ednapiranhajoined
19:33:08  * ednapiranhaquit (Ping timeout: 240 seconds)
19:35:36  * kesslerquit (Ping timeout: 260 seconds)
19:43:32  * therealkoopajoined
19:49:26  * kesslerjoined
19:50:01  * quijotejoined
19:54:27  * quijotequit (Ping timeout: 245 seconds)
20:18:14  * warbrettjoined
20:22:14  <chapel>othiym23: yeah, thinking about it more, nested shims seems like an anti-pattern on what I'm working on
20:22:36  <chapel>othiym23: I'm actually working on a nested transactional logger using CLS
20:22:42  <chapel>just trying to reason about how to do things
20:23:17  <chapel>I've been looking at the newrelic module you wrote and other things, but in this case I am making a potentially user facing API for this stuff
20:23:22  * warbrettquit (Ping timeout: 264 seconds)
20:26:09  * kesslerquit (Ping timeout: 246 seconds)
20:27:17  <othiym23>what kind of transaction semantics are you looking for?
20:27:23  <chapel>one thing I'm having trouble noodling through is how to best nest the transactions so they know about their parent and the root transaction, and then how to go about cleaning them up (firing end logs for each transaction, in the order they were created)
20:28:03  <othiym23>chapel: you might want to take a look at https://github.com/strongloop/zone
20:28:16  <chapel>not much more than 'start transaction "name"` > 'end transaction "name"`
20:28:19  <othiym23>it may do more of the things that you want for your application than CLS
20:28:49  <chapel>so CSL very much seems appropriate since I need to track data about each of the transactions through the flow
20:29:06  <chapel>and similarly to how the newrelic module acts, but more manually
20:29:42  <othiym23>chapel: you may also want to take a look at https://github.com/phated/now-and-later
20:29:59  <chapel>except (and this is specific to an internal logging system/format I am writing this for) there is a root transaction, and subsequently nested transactions, each transaction is tied to a root transaction, but they also know about their immediate parent
20:30:06  <othiym23>right
20:30:21  <othiym23>you can probably monkeypatch / fork CLS to get the observability you want
20:30:32  <othiym23>not sure I want to cruft up CLS itself with that as core functionality, though
20:30:46  <othiym23>I'm trying to treat CLS as functionally complete and keep its scope narrow
20:30:52  <chapel>yeah, I agree
20:30:58  <chapel>from what it does, it seems just right
20:31:19  <chapel>honestly, most of my problems are things that can be done on top of cls imo
20:31:35  <chapel>I am just trying to actually figure out how best to do that :)
20:31:42  <chapel>since it is a different way of thinking about things
20:32:24  <chapel>the one thing I want is a simple api, similar to logger.startTransaction('name'); ... logger.endTransaction('name');
20:33:13  <chapel>and from what I can tell, that is possible, and not too much of a perversion
20:33:17  <chapel>thanks for the links othiym23
20:34:41  <othiym23>chapel: no prob, and yeah, you can probably build it on CLS, as long as you don't want to keep transactions going across multiple async call chains
20:35:09  <othiym23>although you might be able to do that with nested CLS run / bind calls and just run the whole app inside a CLS context
20:35:42  <chapel>each transaction in this case would be an http server handler, and then anything inside of it
20:35:49  <chapel>pretty typical
20:36:03  <chapel>so there would always be a root transaction per scope
20:36:18  <chapel>or async call chain for that matter
20:36:41  <othiym23>then yeah, it doesn't sound that different from node-newrelic
20:37:53  <chapel>the only difference that I can tell is that newrelic's doesn't have the root/parent/child concept, just root/child
20:37:58  <othiym23>look at the transactionProxy / segmentProxy / callbackProxy methods inside lib/transaction/tracer.js
20:38:18  <othiym23>yeah, it's a lot simpler to only have those links going one way
20:39:47  <chapel>one thing I was wondering and haven't proven out in code yet, if I were to use bind in a sync function like in my api example above, would any async functions be bound to that context, or would I still have to wrap any async functions I plan to nest?
20:40:26  <chapel>I am not opposed to doing logger.startTransaction('name, function () { // code here });
20:40:40  <othiym23>chapel: that's probably the simplest way to do it
20:40:40  <chapel>but curious if its possible to make it appear sync
20:41:14  <othiym23>chapel: you could use namespace.enter() / namespace.exit() explicitly, but then you have to start juggling contexts and it gets messy
20:41:20  <chapel>yeah
20:41:34  <othiym23>run and bind are a much cleaner way to consume that interface, because they deal with errors implicitly
20:41:50  <chapel>and actually, even though the api is not as "clean", having an explicit context using a function wrapper would make the transaction mechanism much simpler to reason about
20:42:13  <chapel>since I could use run/bind automatically and get the nested outer/inner stuff by default
20:42:14  <othiym23>yes
20:42:39  <othiym23>I like using runInContext(function)-style APIs for this stuff because they make the containment relationship more visible
20:42:49  <chapel>yeah
20:43:29  <chapel>and in my case, I don't mind an uglier api, since in reality I am making this for manual instrumentation and logging for internal use
20:43:34  <chapel>enterprise stuff you know :P
20:43:42  <othiym23>oh I do know
20:43:57  <chapel>so as long as it is fast and works reliably, that matters more than the api surface
20:44:32  <chapel>thanks for the help, need to go afk, may ping you later if I have any more questions
20:45:19  <othiym23>sure thing, and good luck!
20:48:14  * Maciek416joined
20:48:26  * AvianFlujoined
20:50:32  * quijotejoined
20:52:45  * Maciek416quit (Ping timeout: 240 seconds)
20:54:51  * quijotequit (Ping timeout: 246 seconds)
21:04:29  * phatedjoined
21:10:43  * kesslerjoined
21:20:23  * dguttmanquit (Quit: dguttman)
21:21:46  * dguttmanjoined
21:28:27  * ednapiranhajoined
21:31:04  * yorickjoined
21:32:44  * ednapiranhaquit (Ping timeout: 240 seconds)
21:40:45  * thealphanerdjoined
21:44:12  * chiltsjoined
21:51:17  * quijotejoined
21:55:13  * fotoveritejoined
21:56:23  * quijotequit (Ping timeout: 272 seconds)
21:57:05  * warbrettjoined
21:57:51  * domanicquit (Ping timeout: 246 seconds)
22:25:27  * brianloveswordsquit (Quit: Computer has gone to sleep.)
22:25:30  * kesslerquit (Ping timeout: 255 seconds)
22:28:41  * merceristquit (Quit: Computer has gone to sleep.)
22:33:15  * brianloveswordsjoined
22:37:12  * Maciek416joined
22:39:00  * benglquit (Ping timeout: 260 seconds)
22:41:52  * Maciek416quit (Ping timeout: 245 seconds)
22:44:35  * warbrett_joined
22:46:22  * warbrettquit (Ping timeout: 240 seconds)
22:47:49  * yorickquit (Read error: Connection reset by peer)
22:50:16  * Guest4617joined
22:50:29  * brianloveswordsquit (Quit: Computer has gone to sleep.)
22:51:05  * bengljoined
22:51:31  * kesslerjoined
22:52:12  * quijotejoined
22:55:56  * kesslerquit (Ping timeout: 240 seconds)
22:56:40  * quijotequit (Ping timeout: 244 seconds)
22:56:41  * phatedquit (Remote host closed the connection)
22:56:47  * kesslerjoined
23:18:40  <mikolalysenko>does anyone know of a cheap/free node hosting service where I can try something out, or will I just have to fork over $10 for a linode...
23:23:11  * thealphanerdquit (Quit: thealphanerd)
23:23:40  * thealphanerdjoined
23:41:04  * Maciek416joined
23:48:49  * thealphanerdquit (Quit: thealphanerd)
23:52:39  <chilts>mikolalysenko: Digital Ocean ... $5/server/month - I have a referal code if you are happy to use it :)
23:52:51  * quijotejoined
23:57:20  * quijotequit (Ping timeout: 250 seconds)