00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:09  * ircretaryjoined
00:07:44  <rowbit>Hourly usage stats: [developer: 0, free: 23]
00:07:59  * ednapiranhaquit (Quit: Leaving...)
00:12:27  * thlorenzjoined
00:14:55  <mikolalysenko>Raynos: how does virtual-dom do O(1) diffing? does it just track a version or something?
00:19:15  * naneaujoined
00:21:00  * jxsonquit (Ping timeout: 258 seconds)
00:23:23  * quijotejoined
00:24:30  <Raynos>mikolalysenko: it doesn't do O(1) diffing, I lied
00:25:40  <mikolalysenko>Raynos: ah, I was confused about how that would be possible
00:26:09  <Raynos>mikolalysenko: http://elm-lang.org/blog/announce/0.12.1.elm#arrays
00:26:17  <mikolalysenko>I know of a way to do O(1) persistence, which I suppose you could use for diffing
00:26:46  <mikolalysenko>I have seen this construction before
00:27:30  <mikolalysenko>Raynos: have you seen this? http://www.cs.cmu.edu/~sleator/papers/another-persistence.pdf
00:27:32  <Raynos>mikolalysenko: I was implying that if only one node in a vtree has changed and you use thunk caching strategy and your tree is balanced
00:27:55  <Raynos>then diff time is O(log n) where n is how many nested dom elements you have
00:28:05  <Raynos>i claim that for any non retarded dom tree its sensibly upper bounded by 20
00:28:38  <Raynos>and clearly O(log 20) ~== O(1) :D
00:28:45  * quijotequit (Ping timeout: 276 seconds)
00:28:48  <mikolalysenko>I wonder if you could do it better though
00:28:57  <Raynos>maybe.
00:28:59  <mikolalysenko>maybe using some kind of ladder decomposition trick combined with hashing
00:29:07  <Raynos>right now we do O(1) diff + caching to skip any unchanged subtrees
00:29:17  <Raynos>which means if a single node changes you have to diff the node & all its recursive parents
00:29:38  <Raynos>mikolalysenko: if your interested we would love collaboration on https://github.com/Matt-Esch/virtual-dom/ :)
00:29:38  <mikolalysenko>don't you still have to scan the tree to check for changes?
00:29:54  <mikolalysenko>hmm.. I got a lot of stuff on my plate already
00:30:00  <Raynos>oh sure :)
00:30:21  <Raynos>mikolalysenko: we have a notion of a Thunk which is a tuple of (data, tree)
00:30:26  <mikolalysenko>it is maybe a long shot, but you could take a look at this:
00:30:27  <mikolalysenko>https://github.com/mikolalysenko/level-ancestor
00:30:35  <Raynos>i.e. the model data that generated the vtree and the vtree
00:30:38  <mikolalysenko>the idea there I think should work for diffing trees too
00:30:44  <Raynos>we then do O(1) === check on data to skip evaluating children
00:30:45  <mikolalysenko>and it would be in O(1), for real
00:30:55  <Raynos>this is only posisble because the model and the vtree are both immutable
00:31:02  * calvinfo1quit (Quit: Leaving.)
00:31:23  * thlorenzquit (Remote host closed the connection)
00:31:57  * thlorenzjoined
00:32:46  <mikolalysenko>also this gizmo: https://github.com/mikolalysenko/least-common-ancestor
00:33:03  <mikolalysenko>you can technically save a log factor in space on both of them, but it is really complicated
00:35:25  <Raynos>hmm
00:36:05  <Raynos>I would love to outgun react with some insane algorithms :)
00:36:13  <Raynos>we already out perform them by a factor of 2/3
00:36:18  * thlorenzquit (Ping timeout: 240 seconds)
00:36:44  <mikolalysenko>well, I think I still would need to understand your problem a bit more thoroughly first
00:37:00  <Raynos>we need to document things better :)
00:37:13  <mikolalysenko>strictly speaking, what are your inputs, and what do you mean by diff here?
00:37:51  <Raynos>two virtual trees A & B, diff produces a list of patch operations to that you could aply to A to produce B
00:38:45  <mikolalysenko>well, in general don't you have to traverse a and b to get that diff?
00:39:04  <mikolalysenko>or can you do something like hashing for quick identity testing of subtrees?
00:39:36  <mikolalysenko>ie a and b could be linked lists of up to n nodes
00:42:00  <mikolalysenko>that is you have something where the hash code of a tree is detemined as an aggregate hash function of all its children
00:42:03  * maksimlinquit (Ping timeout: 245 seconds)
00:42:11  <mikolalysenko>so tree a = tree b iff hash(a) = hash(b)
00:42:42  <mikolalysenko>where hash(a) = f(a, hash(children(a)[0]), hash(children(a)[1]), ... )
00:42:52  * brianloveswordsquit (Quit: Computer has gone to sleep.)
00:43:01  <mikolalysenko>the trick though is calculating/maintaining that hash under updates
00:44:48  * tilgoviquit (Remote host closed the connection)
00:45:12  * kenperkins_quit (Remote host closed the connection)
00:45:37  <mikolalysenko>or maybe you are asking about minimizing the number of dom updates?
00:46:05  * kenperkinsjoined
00:50:49  * kenperkins_joined
00:52:15  <Raynos>mikolalysenko: we have something like hashing for quick identity testing of subtrees
00:52:43  <Raynos>mikolalysenko: tbh i dont know what im asking :D
00:54:08  * kenperkinsquit (Ping timeout: 245 seconds)
00:55:06  * cpup_quit (Ping timeout: 240 seconds)
00:55:18  * brianloveswordsjoined
00:56:53  * calvinfojoined
00:56:57  * maksimlinjoined
01:00:18  * ednapiranhajoined
01:00:28  * ednapiranhaquit (Remote host closed the connection)
01:04:17  <maksimlin>mikolalysenko: you don't need to with git's trees, since in a tree if the chrildren trees are unchanged, you dont need to traverse the children trees - this sound like what you are describing you do Raynos ?
01:04:58  <Raynos>something like that
01:07:19  <maksimlin>the more I work on git, the more I'm impressed with its platonic ideal impl of objs/trees/hashes
01:07:44  <rowbit>Hourly usage stats: [developer: 0, free: 14]
01:10:55  * thealphanerdquit (Quit: thealphanerd)
01:13:34  <mikolalysenko>maksimlin: that's the same as hash based identity checking
01:14:03  * cpup_joined
01:14:13  <mikolalysenko>but in git computing a diff is still O(n)
01:17:52  <maksimlin>mikolalysenko: where n is num of total nodes or num of nodes that have changed?
01:18:04  * calvinfoquit (Quit: Leaving.)
01:18:43  <maksimlin>I guess the worst case is the changed nodes are the leaves at the very "bottom" of all the trees
01:20:23  * pfraze_joined
01:22:12  <mikolalysenko>n=total number of nodes
01:22:45  <mikolalysenko>all git operations are basically O(n), but they do some stuff to optimize around this
01:23:26  <rowbit>substack, pkrumins: Encoders down: 162.242.164.84 (dev-ie11-1)
01:23:34  * pfrazequit (Ping timeout: 240 seconds)
01:23:48  <mikolalysenko>though generally number of nodes is not a bottleneck for git, since the slow operations are things like diffing a pair of files, which git generally avoids doing
01:24:03  * thealphanerdjoined
01:24:03  * quijotejoined
01:24:43  <maksimlin>mikolalysenko: how do you mean? diff'f files is probably one of the most common git ops ?
01:24:58  * pfraze_quit (Ping timeout: 245 seconds)
01:25:16  <maksimlin>git show <commit> needs to do diff's for example
01:25:40  <mikolalysenko>once you diff a file, git just stores the patch data
01:25:50  <mikolalysenko>so it doesn't recalculate it I think
01:25:52  <maksimlin>what??
01:26:00  <maksimlin>no I dont think so
01:26:43  <mikolalysenko>I am probably not as familiar with git internals as you, so maybe I am wrong
01:27:02  <mikolalysenko>but I was under the impression that commits just store patches to the previous commit
01:27:10  * phatedquit (Remote host closed the connection)
01:27:14  <mikolalysenko>instead of a separate copy of the whole repo
01:27:33  <thealphanerd>hey substack I was lloking at your project wreq… did you end up ditching that to implement browserify?
01:27:34  <maksimlin>mikolalysenko: hey thats fair enough - I;ve been working on js git impl lib for months now so getting maybe too familiar with git internals :-)
01:28:14  * quijotequit (Ping timeout: 240 seconds)
01:28:16  <maksimlin>mikolalysenko: yes most ppl seem to think that but it doesnt, evey commit is a snapshot of the whole repo
01:29:29  <maksimlin>of course it does optimise the storage "behind the scenes" by doing binary deltas, but thats not part of the git "DOM" as it were
01:29:39  <substack>thealphanerd: wreq was a proof of concept to show that you can implement commonjs requires asynchronously
01:30:05  <thealphanerd>substack: we are trying at famo.us to best figure out or async dependency loading
01:30:17  <thealphanerd>and require is proving to be “less than elegant"
01:30:34  <substack>why does it need to be async?
01:30:47  <thealphanerd>perhaps it doesn't
01:30:49  <substack>wouldn't async loading be really horrible for mobile where latency is the biggest issue?
01:31:03  <thealphanerd>well for production we have been rolling an almond
01:31:10  <thealphanerd>so no lazy loading
01:31:13  <Raynos>why does it need to be async ?
01:31:21  <thealphanerd>I guess it doesn't
01:31:31  <Raynos>thats not the correct answer :P
01:31:40  <Raynos>what use case are you trying to address with async require / async loading
01:31:57  <thealphanerd>Raynos: I’m unfortuantely not as intimate with the frame work as I should be
01:31:59  <Raynos>if its "no built step" I recommend a "static file server" that just does the browserify operation on js files
01:32:25  <substack>thealphanerd: you can use browserify to build a umd build that will be consumable by both commonjs and AMD consumers
01:32:28  <substack>using --standalone
01:32:29  <thealphanerd>The big issue we are having right now, is how to make it easy for all users to work, and not impose a particular module loading paradigm
01:32:48  <Raynos>thealphanerd: you cant
01:32:50  <substack>--standalone also exports to a window global if it can't find amd or commonjs
01:33:02  <Raynos>thealphanerd: you can create an N KB bundle that is all the code that works for all module systems
01:33:13  <Raynos>thealphanerd: and then expose clean integration for the blessed module system
01:34:03  <Raynos>my mercury has a dist for all module systems ( https://github.com/Raynos/mercury/tree/master/dist ) and has clean / blessed integration for commonJS
01:34:20  <mikolalysenko>thealphanerd: how would dependencies work if you didn't pick a module system?
01:34:24  <thealphanerd>can you elaborate on the term ‘blessed’?
01:35:06  * feross_quit (Quit: feross_)
01:35:14  * jhieseyquit (Quit: jhiesey)
01:35:18  <Raynos>thealphanerd: If you want to `require('vtree/is-vnode')` and only depend on that you need commonJS. If you want it with AMD / globals its "depend on all of vtree" and use `vtree.isVnode`
01:35:59  <mikolalysenko>I think the best you can do without picking a module system is something like bower
01:36:12  <Raynos>whatever your choice of blessed is btw, whether that's AMD / ES6 / commonJS. You can load the entire framework in all module sytems but you can only load a subset of the framework in the blessed module system
01:36:12  <thealphanerd>mikolalysenko: I think that we do need to pick a module loading system for examples… but we want to figure out how to make the framework itself agnostic
01:36:14  <mikolalysenko>which is to say you only do 1 level deep of dependencies in a project
01:36:37  <mikolalysenko>thealphanerd: then what Raynos/substack said is the right way to do it
01:36:45  <thealphanerd>it sounds likea good appraoch
01:36:56  <Raynos>thealphanerd: if the framework itself is internally commonJS then you can use `browserify --standalone` quite effectively. For example ( https://github.com/Raynos/mercury/blob/master/package.json#L69 )
01:36:58  <mikolalysenko>anyway, I actually have to go right now
01:37:02  <thealphanerd>I am going to send this scroll back to the cto and use it as a starting point
01:37:04  <substack>thealphanerd: if you want agnostic, window globals are the common denominator
01:37:43  <substack>but that's just for showing the examples
01:37:45  <Raynos>thealphanerd: btw if you have some tool like https://github.com/umdjs/umd to generate a single file that supports all module systems then your baseline is support everything
01:37:51  <thealphanerd>thank you substack / Raynos / mikolalysenko for the advice
01:38:20  <Raynos>thealphanerd: there is another option btw
01:38:26  <thealphanerd>oh reary
01:38:29  <Raynos>you can use ES6 for everything
01:38:34  * tilgovijoined
01:38:44  <Raynos>and tell your users to use their "ES6 -> X" compiler of choice, where X is AMD or commonJS or bla
01:38:59  <thealphanerd>going es6 is not the worst idea at all
01:39:13  <Raynos>thealphanerd: but your going to pay the transpiler burden
01:39:45  <Raynos>thealphanerd: really i recommend picking a module system for famo.us itself, that is useful internally and just blessing that. Bless the tool that makes the framework authors life sane.
01:39:59  <thealphanerd>ahhhhh… because harmony generators are transpiled at run time?
01:40:00  * thealphanerdis not super familliar with es6
01:40:12  <Raynos>I'm personally biased where I think sane === browserify+npm
01:40:56  <thealphanerd>so our CTO has three major requiremnts
01:41:01  <thealphanerd>1.) Boilerplate needs to be minimal
01:41:02  <thealphanerd>2.) Scripts should be testable without any build step or source maps
01:41:02  <thealphanerd>3.) Should be relatively namespaced
01:41:12  * thlorenzjoined
01:43:27  * calvinfojoined
01:43:41  * mikolalysenkoquit (Ping timeout: 252 seconds)
01:45:28  <thealphanerd>our current pattern can be converted from AMD to common painlessly, just a matter of killing the anonymous define wrapper and making all the references relative… although that makes things a bit nasty for testing modules individually
01:46:24  <thealphanerd>although browserify + testling looks like a great way to run tests
01:47:12  <Raynos>thealphanerd: what do you mean by relatively namespaced ?
01:47:19  <Raynos>you mean `require('./local-file')` ?
01:47:53  <thealphanerd>modules reference each other via require(‘famous/module/something')
01:48:01  <substack>why is #2 a requirement?
01:48:23  <thealphanerd>substack: I have not had a chance to have an extended discussion about that
01:49:02  <thealphanerd>my assumption is to make it easy for users to work with the framework without requiring the installation of a toolchain
01:49:14  <Raynos>thealphanerd: so npm allows `require('famous/foo/bla')` or `require('famous-foo/bla')`
01:49:21  <substack>thealphanerd: that is different from what #2 says
01:49:23  <thealphanerd>we have found a number of developers having trouble getting the node stack up and running
01:49:28  <Raynos>thealphanerd: what do you mean by scripts are testable without a build step ?
01:49:41  <Raynos>thealphanerd: examples or famous unit tests ?
01:49:45  <thealphanerd>I’m not sure if he meant “testing” as in unit tests… or testing as in viewing results
01:49:54  <thealphanerd>I am assuming the latter, as we currently don’t have unit tests :S
01:50:04  <Raynos>like no build step for people working on the famous framework internals
01:50:08  <thealphanerd>which I am trying to get off the ground right now
01:50:10  <Raynos>or no build step for people using the famous framework
01:50:18  <thealphanerd>no build step for people building apps with famous
01:50:25  <Raynos>thats easily possible
01:50:34  <Raynos>the module system you use for source code & tests
01:50:39  <Raynos>is not the same module system needed for examples
01:51:03  <Raynos>examples can just `<script src='./dist/famous.js' /><script> %globalcodesoup% </script>
01:51:32  <thealphanerd>that is what we are slowly working towards right now
01:51:44  <thealphanerd>but it is still needing the inclusion of require
01:51:55  <thealphanerd>which is nasty… and not a good way to teach new developers who have never programmed before
01:51:57  <Raynos>thealphanerd: there are also things like requirebin.com
01:53:26  <thealphanerd>I was looking at ogd’s great requirebin the other day
01:53:34  <thealphanerd>using the npm request animation frame
01:53:35  <Raynos>jjjohnny: sup
01:54:11  <thealphanerd>Caltrain is almost at my stop btw
01:54:16  <thealphanerd>so I may vanish suddenly
01:54:21  <Raynos>thealphanerd: so I think if you can create a single js file that exports a global then the no build step should go away
01:54:39  <Raynos>thealphanerd: its a seperate question whether your examples should show zero module system usage or should demonstrate how to use famous with a module system
01:54:52  * kumavis_joined
01:54:53  <thealphanerd>or potentially both
01:55:00  <thealphanerd>examples of no module / common / require
01:55:24  <thealphanerd>It would be really nice if users could just up and run and develop however they felt like
01:55:34  <Raynos>thealphanerd: then you need to support both common, globals & amd which is hard
01:55:45  <Raynos>well not hard, but
01:55:58  <thealphanerd>not as simple as supporting a single pattern
01:56:09  <thealphanerd>multiple sources of truth
01:56:27  <Raynos>define(["famous"], function () {}) and require("famous") are trivial to support
01:56:48  <Raynos>supporting both define(["famous/physics/bla"], function () {}) and require("famous/physics/bla") is a bit harder but do-able
01:58:17  <Raynos>thealphanerd: although remember that one will be a source of truth and the other will be a compiled artifact
01:58:34  <thealphanerd>that is true
01:58:45  <thealphanerd>as we will only develop in a single module loading pattern
01:59:26  <thealphanerd>Raynos: time to run
01:59:26  <thealphanerd>thanks for the time
01:59:39  <thealphanerd>Raynos / substack / others: we are having our weekly demo night tomorrow if any of you would like to come back the office
01:59:43  <thealphanerd>beer and food :D
01:59:51  <thealphanerd>email me myles@famo.us if you are interested in coming
02:00:03  * naneauquit (Quit: Quit.)
02:00:15  <thealphanerd>/s/back/by
02:00:37  <thealphanerd>cheers
02:00:37  * thealphanerdquit (Quit: thealphanerd)
02:04:01  * phatedjoined
02:07:24  * calvinfoquit (Quit: Leaving.)
02:07:44  <rowbit>Hourly usage stats: [developer: 0, free: 15]
02:21:28  <substack>thlorenz: I'm in europe for a while longer
02:22:37  <thlorenz>substack: where at? on that note should we start preparing some stuff for nodeconf?
02:22:56  <rowbit>substack, pkrumins: Encoders down: 166.78.114.172 (dev-ie11-2)
02:23:13  <substack>thlorenz: budapest
02:23:18  <substack>then up to oslo
02:24:19  <substack>thlorenz: stream-adventure was written just a few days before nodeconf :p
02:24:43  <substack>although if you want to start on it early, go ahead!
02:24:47  * quijotejoined
02:25:05  <thlorenz>ah cool, sounds fun, yeah we can do some last minute hacking - pretty busy myself ATM
02:29:14  * quijotequit (Ping timeout: 240 seconds)
02:36:18  * jcrugzzquit (Read error: Connection reset by peer)
02:38:38  * jcrugzzjoined
02:39:31  * tilgoviquit (Remote host closed the connection)
02:40:11  * mikolalysenkojoined
02:44:25  * kumavis_quit (Quit: Computer has gone to sleep.)
02:44:34  * mikolalysenkoquit (Ping timeout: 240 seconds)
02:49:34  * jhermsjoined
02:52:28  * daleharveyquit (Ping timeout: 245 seconds)
02:53:18  * addisonjquit (Ping timeout: 245 seconds)
02:53:27  * owenb__quit (Ping timeout: 252 seconds)
02:54:04  * addisonjjoined
02:55:01  * daleharveyjoined
02:59:03  * owenb__joined
03:02:22  * jherms_joined
03:05:22  * jherms__joined
03:06:11  * jhermsquit (Ping timeout: 252 seconds)
03:06:36  * cpup_changed nick to cpup
03:07:44  <rowbit>Hourly usage stats: [developer: 0, free: 16]
03:07:59  * calvinfojoined
03:08:17  * calvinfoquit (Read error: Connection reset by peer)
03:08:19  * calvinfo1joined
03:08:50  * jherms_quit (Ping timeout: 265 seconds)
03:09:02  * calvinfo1quit (Read error: Connection reset by peer)
03:09:08  * fent_quit (Ping timeout: 245 seconds)
03:09:17  * calvinfojoined
03:09:33  * tanepiper_quit (Ping timeout: 245 seconds)
03:09:41  * thlorenzquit (Remote host closed the connection)
03:09:58  * owenb__quit (Ping timeout: 245 seconds)
03:09:58  * calvinfoquit (Read error: Connection reset by peer)
03:10:07  * calvinfojoined
03:11:03  * fent_joined
03:11:03  * calvinfoquit (Read error: Connection reset by peer)
03:11:04  * owenb__joined
03:11:06  * calvinfo1joined
03:11:08  * tanepiper_joined
03:11:56  * calvinfojoined
03:11:56  * calvinfo1quit (Read error: Connection reset by peer)
03:13:51  * thlorenzjoined
03:14:38  * thlorenzquit (Remote host closed the connection)
03:16:27  * calvinfoquit (Ping timeout: 252 seconds)
03:25:44  * quijotejoined
03:30:45  * quijotequit (Ping timeout: 276 seconds)
03:38:11  * calvinfojoined
03:39:04  * calvinfo1joined
03:39:04  * calvinfoquit (Read error: Connection reset by peer)
03:39:54  * calvinfojoined
03:40:22  * mikolalysenkojoined
03:40:52  * calvinfo2joined
03:40:52  * calvinfoquit (Read error: Connection reset by peer)
03:41:44  * calvinfojoined
03:41:44  * calvinfo2quit (Read error: Connection reset by peer)
03:42:37  * calvinfo2joined
03:42:37  * calvinfoquit (Read error: Connection reset by peer)
03:42:41  * ferossquit (Quit: Connection closed for inactivity)
03:43:34  * calvinfojoined
03:43:34  * calvinfo2quit (Read error: Connection reset by peer)
03:43:45  * calvinfo1quit (Ping timeout: 276 seconds)
03:44:26  * calvinfo1joined
03:44:26  * calvinfoquit (Read error: Connection reset by peer)
03:44:58  * mikolalysenkoquit (Ping timeout: 240 seconds)
03:45:19  * calvinfojoined
03:45:19  * calvinfo1quit (Read error: Connection reset by peer)
03:46:01  * calvinfoquit (Read error: Connection reset by peer)
03:46:17  * calvinfojoined
03:46:55  * calvinfoquit (Read error: Connection reset by peer)
03:47:09  * calvinfojoined
03:48:01  * calvinfo1joined
03:48:01  * calvinfoquit (Read error: Connection reset by peer)
03:48:58  * calvinfojoined
03:49:51  * calvinfo2joined
03:49:51  * calvinfoquit (Read error: Connection reset by peer)
03:52:18  * calvinfo1quit (Ping timeout: 240 seconds)
03:54:45  * calvinfo2quit (Ping timeout: 265 seconds)
03:57:59  * dguttmanquit (Quit: dguttman)
04:05:10  * shama_joined
04:07:28  * mikolalysenkojoined
04:07:44  <rowbit>Hourly usage stats: [developer: 0, free: 15]
04:07:54  * shamaquit (Ping timeout: 240 seconds)
04:10:00  * phatedquit (Remote host closed the connection)
04:13:41  * mikolalysenkoquit (Ping timeout: 258 seconds)
04:20:00  * natemicchanged nick to natemi
04:23:57  * ryan_ramagejoined
04:26:18  * quijotejoined
04:30:38  * quijotequit (Ping timeout: 240 seconds)
04:36:15  * jhermsjoined
04:37:00  * brianloveswordsquit (Quit: Computer has gone to sleep.)
04:39:05  * jherms__quit (Ping timeout: 255 seconds)
04:43:43  * calvinfojoined
04:46:21  * defunctzombiechanged nick to defunctzombie_zz
04:48:18  * calvinfoquit (Ping timeout: 245 seconds)
04:55:28  * mikolalysenkojoined
04:57:02  * shama_quit
04:58:07  * quijotejoined
04:59:21  * ryan_ramagequit (Quit: ryan_ramage)
05:07:29  * calvinfojoined
05:07:44  <rowbit>Hourly usage stats: [developer: 0, free: 22]
05:20:49  * phatedjoined
05:25:23  * phatedquit (Ping timeout: 245 seconds)
05:32:48  * DTrejojoined
05:33:37  * kumavis_joined
05:35:54  * kumavisquit (Ping timeout: 240 seconds)
05:35:55  * kumavis_changed nick to kumavis
05:36:40  * calvinfoquit (Quit: Leaving.)
05:41:01  * jxsonjoined
05:44:35  * quijotequit (Ping timeout: 252 seconds)
05:45:14  * calvinfojoined
05:57:24  * quijotejoined
06:05:23  * john3213joined
06:06:56  * DTrejoquit
06:07:44  <rowbit>Hourly usage stats: [developer: 2, free: 38]
06:07:53  * py1honquit (Ping timeout: 245 seconds)
06:07:53  * jjjohnnyquit (Ping timeout: 245 seconds)
06:08:00  * jjjohnnyjoined
06:08:01  * py1honjoined
06:08:14  * calvinmetcalfquit (Quit: Connection closed for inactivity)
06:08:39  * calvinfoquit (Quit: Leaving.)
06:10:25  * john3213part
06:13:38  * natemiquit (Ping timeout: 240 seconds)
06:14:05  * jhermsquit (Quit: Leaving)
06:14:33  * maksimlinquit (Ping timeout: 276 seconds)
06:14:43  * dlmanningquit (Ping timeout: 240 seconds)
06:15:52  * natemicjoined
06:16:38  * quijotequit (Ping timeout: 245 seconds)
06:28:18  * mikolalysenkoquit (Ping timeout: 240 seconds)
06:28:29  * dlmanningjoined
06:32:19  * kriskowalquit (Quit: kriskowal)
06:32:47  * kriskowaljoined
06:40:18  * calvinfojoined
06:41:34  * domanicjoined
06:43:00  * quijotejoined
06:47:47  * quijotequit (Ping timeout: 265 seconds)
06:48:19  * thealphanerdjoined
06:57:19  * ferossjoined
06:59:27  * djcoinjoined
07:02:13  * sveisveijoined
07:04:46  * calvinfoquit (Quit: Leaving.)
07:07:44  <rowbit>Hourly usage stats: [developer: 0, free: 39]
07:09:10  * calvinfojoined
07:18:00  * calvinfoquit (Quit: Leaving.)
07:18:26  <rowbit>substack, pkrumins: These encoders are STILL down: 162.242.164.84(dev-ie11-1)
07:20:59  * quijotejoined
07:22:21  * ferossquit (Quit: feross)
07:27:16  * Maciek416quit (Remote host closed the connection)
07:32:22  * ferossjoined
07:33:32  * kumavisquit (Quit: Textual IRC Client: www.textualapp.com)
07:35:19  * fotoveritequit (Quit: fotoverite)
07:37:32  * fotoveritejoined
07:41:54  * fotoveritequit (Ping timeout: 240 seconds)
08:07:44  <rowbit>Hourly usage stats: [developer: 1, free: 45]
08:08:30  * fotoveritejoined
08:12:43  * fotoveritequit (Ping timeout: 252 seconds)
08:17:56  <rowbit>substack, pkrumins: These encoders are STILL down: 166.78.114.172(dev-ie11-2)
08:24:02  * jxsonquit (Remote host closed the connection)
08:24:37  * ferosspart
08:38:36  * fotoveritejoined
08:44:03  * fotoveritequit (Ping timeout: 276 seconds)
09:01:57  <domanic>https://twitter.com/dch__/status/466861857199104000
09:07:44  <rowbit>Hourly usage stats: [developer: 0, free: 58]
09:09:07  * contrahaxjoined
09:15:48  * domanicquit (Remote host closed the connection)
09:15:53  * Maciek416joined
09:20:14  * Maciek416quit (Ping timeout: 240 seconds)
09:20:46  * domanicjoined
09:22:48  * thealphanerdquit (Quit: thealphanerd)
09:28:15  * contrahaxquit (Ping timeout: 265 seconds)
09:37:14  * maksimlinjoined
09:37:41  * quijotequit (Ping timeout: 252 seconds)
09:39:44  * fotoveritejoined
09:44:07  * fotoveritequit (Ping timeout: 258 seconds)
09:56:07  * domanicquit (Ping timeout: 252 seconds)
09:56:50  * maksimlinquit (Quit: ChatZilla 0.9.90.1 [Firefox 29.0/20140428193838])
10:07:44  <rowbit>Hourly usage stats: [developer: 0, free: 52]
10:18:56  * domanicjoined
10:35:51  * quijotejoined
10:38:05  * insertcoffeejoined
10:40:15  * fotoveritejoined
10:40:18  * quijotequit (Ping timeout: 240 seconds)
10:44:47  * fotoveritequit (Ping timeout: 252 seconds)
11:04:44  * Maciek416joined
11:06:40  * yorickjoined
11:07:44  <rowbit>Hourly usage stats: [developer: 2, free: 58]
11:08:31  * ins0mniaquit (Remote host closed the connection)
11:09:02  * fotoveritejoined
11:09:08  * Maciek416quit (Ping timeout: 245 seconds)
11:13:51  * fotoveritequit (Ping timeout: 252 seconds)
11:18:23  * ins0mniajoined
11:22:46  * quijotejoined
11:27:51  * quijotequit (Ping timeout: 276 seconds)
11:46:14  * quijotejoined
11:54:28  * calvinmetcalfjoined
12:07:44  <rowbit>Hourly usage stats: [developer: 4, free: 49]
12:09:53  * fotoveritejoined
12:14:26  * fotoveritequit (Ping timeout: 252 seconds)
12:23:53  * quijotequit (Ping timeout: 252 seconds)
12:53:40  * Maciek416joined
12:58:18  * Maciek416quit (Ping timeout: 240 seconds)
13:07:44  <rowbit>Hourly usage stats: [developer: 1, free: 66]
13:10:36  * fotoveritejoined
13:15:14  * fotoveritequit (Ping timeout: 240 seconds)
13:18:27  <rowbit>substack, pkrumins: These encoders are STILL down: 162.242.164.84(dev-ie11-1)
13:19:54  * quijotejoined
13:29:22  * contrahaxjoined
13:33:19  * contraha_joined
13:36:41  * contrahaxquit (Ping timeout: 240 seconds)
13:40:21  * thlorenzjoined
13:47:03  * toddselfjoined
13:47:29  * dguttmanjoined
13:50:14  * quijotequit (Ping timeout: 240 seconds)
13:59:40  * ryan_ramagejoined
13:59:41  * ryan_ramagequit (Client Quit)
14:07:44  <rowbit>Hourly usage stats: [developer: 0, free: 53]
14:08:41  * defunctzombie_zzchanged nick to defunctzombie
14:11:36  * fotoveritejoined
14:13:00  * quijotejoined
14:14:14  * brianloveswordsjoined
14:16:13  * fotoveritequit (Ping timeout: 245 seconds)
14:17:57  <rowbit>substack, pkrumins: These encoders are STILL down: 166.78.114.172(dev-ie11-2)
14:18:09  * dguttmanquit (Quit: dguttman)
14:23:00  * dguttmanjoined
14:42:30  * Maciek416joined
14:44:26  * pfrazejoined
14:46:54  * Maciek416quit (Ping timeout: 240 seconds)
14:47:12  * kenperkins_quit (Remote host closed the connection)
14:47:52  * pfraze_joined
14:48:00  * kenperkinsjoined
14:48:26  * brianloveswordsquit (Quit: Computer has gone to sleep.)
14:49:20  * brianloveswordsjoined
14:50:55  * quijotequit (Ping timeout: 252 seconds)
14:51:32  * pfrazequit (Ping timeout: 255 seconds)
15:00:27  * ednapiranhajoined
15:00:34  * fotoveritejoined
15:07:45  <rowbit>Hourly usage stats: [developer: 1, free: 57]
15:10:10  * mikolalysenkojoined
15:17:37  * djcoinquit (Quit: WeeChat 0.4.2)
15:25:43  * naneaujoined
15:26:20  * toddselfquit (Remote host closed the connection)
15:26:32  * thealphanerdjoined
15:26:46  * thealphanerdquit (Client Quit)
15:26:57  * toddselfjoined
15:26:57  <rowbit>substack, pkrumins: Encoders down: 50.57.174.105 (dev-ie8-2)
15:30:14  * domanicquit (Ping timeout: 255 seconds)
15:31:13  * toddselfquit (Ping timeout: 245 seconds)
15:33:47  * calvinfojoined
15:40:58  <rowbit>substack, pkrumins: Encoders down: 184.106.106.46 (dev-ie8-1)
15:43:59  * domanicjoined
15:44:58  * mikolalysenkoquit (Ping timeout: 245 seconds)
15:45:58  * mikolalysenkojoined
15:48:41  * quijotejoined
15:49:13  * Maciek416joined
15:49:45  * calvinfoquit (Quit: Leaving.)
15:52:54  * quijotequit (Ping timeout: 240 seconds)
15:57:33  * toddselfjoined
15:58:23  <juliangruber>the new chromebook2 looks cool, even with 13" http://www.samsung.com/us/business/computing/chrome-devices/XE503C32-K01US
16:02:08  * toddselfquit (Ping timeout: 252 seconds)
16:07:40  <substack>too bad they are so annoying to run linux on
16:07:44  <rowbit>Hourly usage stats: [developer: 5, free: 54]
16:09:03  <substack>why are computers so terrible >_<
16:09:13  <substack>still much better than phones
16:10:35  * dguttmanquit (Quit: dguttman)
16:11:34  * dguttmanjoined
16:12:37  * quijotejoined
16:15:55  * ryan_ramagejoined
16:18:37  * defunctzombiechanged nick to defunctzombie_zz
16:26:25  * calvinfojoined
16:28:01  * thealphanerdjoined
16:30:56  * jxsonjoined
16:33:16  <juliangruber>substack: dat flying doge taco
16:33:17  <juliangruber>wow
16:38:58  <thealphanerd>juliangruber: link?
16:46:01  * toddselfjoined
16:47:05  * toddselfquit (Remote host closed the connection)
16:47:22  * toddselfjoined
16:49:05  * brianloveswordsquit (Quit: Computer has gone to sleep.)
16:49:10  * quijotequit (Read error: Connection reset by peer)
16:49:42  * quijotejoined
16:55:24  * brianloveswordsjoined
16:57:41  * calvinfoquit (Read error: Connection reset by peer)
16:57:59  * calvinfojoined
16:59:02  * dybskiyjoined
16:59:39  * dybskiyquit (Client Quit)
16:59:52  * dybskiyjoined
17:06:32  * thealphanerdquit (Ping timeout: 255 seconds)
17:07:44  <rowbit>Hourly usage stats: [developer: 0, free: 60]
17:07:52  <juliangruber>https://github.com/substack/open-source-at-scale/blob/master/images/follow_your_dreams.png
17:08:47  <mmalecki>oh god
17:08:52  * dybskiyquit (Remote host closed the connection)
17:08:59  <mmalecki>this is perfect
17:14:09  <domanic>pfraze_, https://en.wikipedia.org/wiki/E_(programming_language)
17:14:31  <domanic>object oriented language with built in capability security model!
17:16:47  * phatedjoined
17:17:20  * insertcoffeequit (Read error: No route to host)
17:20:41  <domanic>substack, http://www.instructables.com/member/zackfreedman/
17:23:55  <domanic>also: http://www.instructables.com/id/The-NovaA-DIY-Oculus-Rift/
17:28:25  * brianloveswordsquit (Quit: Computer has gone to sleep.)
17:29:23  * sveisveiquit (Quit: Connection closed for inactivity)
17:36:03  * kumavisjoined
17:36:24  * quijotequit (Ping timeout: 276 seconds)
17:37:15  * cpupquit (Ping timeout: 240 seconds)
17:39:47  * cpupjoined
17:44:03  * quijotejoined
17:47:35  * thlorenzquit (Remote host closed the connection)
17:48:07  * thlorenzjoined
17:49:51  * jhieseyjoined
17:52:41  * thlorenzquit (Ping timeout: 252 seconds)
18:00:17  * quijotequit (Ping timeout: 240 seconds)
18:04:37  * calvinfoquit (Read error: Connection reset by peer)
18:04:56  * calvinfojoined
18:07:44  <rowbit>Hourly usage stats: [developer: 0, free: 35]
18:14:03  * thealphanerdjoined
18:14:20  * defunctzombie_zzchanged nick to defunctzombie
18:14:29  <defunctzombie>substack: but is open source web scale?
18:15:07  <pfraze_>domanic: interesting. I like the "to" syntax for methods. Interesting claim about no deadlocks
18:15:56  * thlorenzjoined
18:16:47  <pfraze_>I'm unsure how promises guarantee that safety, unless the programs are able to guard against deadlock with them (eg with timeouts)
18:18:47  <domanic>pfraze_, yeah I think that is an entirely different problem.
18:19:26  <pfraze_>object-caps systems are interesting - seem almost mandatory for permissions in a system that doesn't have a top-down design (and thus could determine the full range of possible permissions)
18:19:38  <mikolalysenko>p
18:20:00  <mikolalysenko>err, pfraze_ : I think this is why they don't have deadlocks: http://www.erights.org/elang/kernel/SendExpr.html
18:21:09  <pfraze_>huh, xml and java versions
18:21:11  <mikolalysenko>in particular the section on partially ordered fail-stop delivery
18:21:40  <mikolalysenko>don't know that I fully understand it myself though
18:22:10  <mikolalysenko>but there is a simple method to prevent all deadlocks: don't allow for any cycles in waiting
18:23:01  <mikolalysenko>this is easy if you enforce a partial order on all locks/barriers/channels/whatever
18:23:58  <rowbit>substack, pkrumins: Encoders down: 50.57.171.229 (dev-ie6-2)
18:24:17  <pfraze_>ok, these ideas are tricky to navigate so bear with me:
18:24:42  * cpupquit (Read error: Connection reset by peer)
18:24:46  <pfraze_>it seems like the claim here is that deadlock is the result of message-delivery failures: dropped or out of order
18:25:06  <pfraze_>do I understand that correctly?
18:25:25  <mikolalysenko>pfraze_: I don't think so
18:25:40  <mikolalysenko>deadlock happens when you have a cycle with waiting/synchronization primitives
18:25:46  <mikolalysenko>ie a waits on b, b waits on a
18:25:50  <pfraze_>mhmm
18:26:17  <defunctzombie>ogd: have you seen foursquare's swam app?
18:27:30  * cpupjoined
18:27:59  * quijotejoined
18:28:03  <pfraze_>even if message order and delivery are guaranteed, deadlocks can occur in concurrency, right?
18:29:16  <mikolalysenko>pfraze_: yes
18:29:25  <mikolalysenko>pfraze_: you can have deadlocks even with things like threads
18:30:05  <mikolalysenko>a simple example is with mutexes, imagine you have two critical sections a,b and two threads 1,2
18:30:25  <mikolalysenko>thread 1 does: lock(a); lock(b); ... release(b); release(a);
18:30:39  <mikolalysenko>thread 2 does: lock(b); lock(a); ... release(a); release(b);
18:30:53  <mikolalysenko>in this case it is possible to get a deadlock pretty easily
18:31:10  <mikolalysenko>thread 1 locks a, thread 2 locks b, and bam you are stuck
18:31:16  <domanic>if you could lock everything at once, atomically. that would work.
18:31:16  <pfraze_>yeah
18:31:31  <mikolalysenko>or you could just enforce an ordering on all locks
18:31:53  <mikolalysenko>if thread 2 instead did: lock(a); lock(b); ... release(b); release(a);
18:31:59  <mikolalysenko>then no dead lock would be possible
18:32:23  <domanic>but does that mean that I can go lock(b); it returns, and then the system is like, sorry we revoked your lock?
18:32:27  <mikolalysenko>all you have to do to prove you have no deadlocks is show that there is no possible cycle in the order in which locks are acquired
18:33:16  <mikolalysenko>the way lock works in a mutex is you either: 1. get the lock or 2. wait until whoever is using the mutex releases it, then wake up and proceed
18:33:27  * quijotequit (Ping timeout: 265 seconds)
18:34:08  <mikolalysenko>deadlock happens when you are waiting for some other guy to relese the lock, but he happens to be waiting for some lock that you (or one of the other threads waiting on you) releases their lock
18:34:32  <mikolalysenko>you can have more complicated cycles like a waits on b, b waits on c, c waits on d, ... , z waits on a
18:34:58  <mikolalysenko>if you have a situation like that, your system gets stuck and you can't proceed
18:35:07  <mikolalysenko>hence you are "deadlocked"
18:35:28  <mikolalysenko>it is similar to gridlock in cities, where you get traffic that is stuck in an intersection
18:37:37  <pfraze_>with you so far
18:37:49  * quijotejoined
18:38:11  <mikolalysenko>so one way to prevent cycles is to ensure that your dependencies form a directed acyclic graph
18:38:26  <mikolalysenko>where by "dependencies" I mean the "waits for" relation
18:38:35  <mikolalysenko>that is it should be a partial order
18:38:49  <mikolalysenko>and this is an if and only if type of theorem
18:39:08  <mikolalysenko>if and only if the waits for relation has a cycle will you get a deadlock
18:39:20  <mikolalysenko>and this must be true for all possible executions of the system
18:39:29  <mikolalysenko>that's it
18:40:03  <mikolalysenko>now in the case of E, I don't understand precisely how they model communication/synchronization (I think it is some kind of channel/promise/future thing)
18:40:28  <mikolalysenko>BUT if it prevents you from writing cycles, then it can't deadlock
18:41:09  <pfraze_>I assume it has to do with the reference forking
18:41:36  <pfraze_>since that seems to carry guarantees about previously-sent messages
18:41:46  * warbrettjoined
18:42:10  <pfraze_>so perhaps the system is tracking messages sent and can detect the cycles that way?
18:43:48  <mikolalysenko>not sure. I think it is actually enforced by the structure of the language, like you can't even write a cycle in the first place
18:44:01  <mikolalysenko>as opposed to something that is statically checked after the fact
18:44:04  * brianloveswordsjoined
18:44:06  <pfraze_>what makes you think that?
18:44:26  <mikolalysenko>they say that it can't deadlock, so I guess what they mean is that their abstraction does not permit you to write cycles
18:44:59  <mikolalysenko>this is possible, for example in a kind of fork-join model
18:45:13  <mikolalysenko>where parent threads can wait on their children, but not the other way around
18:45:21  <mikolalysenko>but it is also limited in terms of expressiveness
18:45:33  <mikolalysenko>and not as efficient as locks/threads (though maybe easier to write?)
18:48:34  <pfraze_>this is interesting; I'll take it home with me and read a bit more
18:57:45  * calvinfo1joined
18:58:58  * jhieseyquit (Quit: jhiesey)
18:59:36  * calvinfoquit (Ping timeout: 276 seconds)
18:59:57  * kenperkins_joined
19:03:30  * kenperkinsquit (Ping timeout: 276 seconds)
19:07:44  <rowbit>Hourly usage stats: [developer: 0, free: 43]
19:07:56  <rowbit>/!\ ATTENTION: (default-local) tserafim@... successfully signed up for developer browserling plan ($20). Cash money! /!\
19:07:56  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
19:08:41  * mikolalysenkoquit (Ping timeout: 252 seconds)
19:16:16  * jhieseyjoined
19:18:28  <rowbit>substack, pkrumins: These encoders are STILL down: 162.242.164.84(dev-ie11-1)
19:19:33  * brianloveswordsquit (Ping timeout: 245 seconds)
19:19:59  * contrahaxjoined
19:20:05  * contraha_quit (Read error: Connection reset by peer)
19:23:43  * quijotequit (Ping timeout: 265 seconds)
19:30:42  * brianloveswordsjoined
19:31:47  * brianloveswordsquit (Client Quit)
19:36:39  * calvinfo2joined
19:37:53  * calvinfo1quit (Ping timeout: 240 seconds)
19:38:06  * defunctzombiechanged nick to defunctzombie_zz
19:39:02  * contrahaxquit (Read error: Connection reset by peer)
19:39:04  * contraha_joined
19:53:29  * warbrettquit (Remote host closed the connection)
19:54:05  * warbrettjoined
19:55:16  * ednapiranhaquit (Quit: Leaving...)
19:55:28  * mikolalysenkojoined
19:55:35  <ogd>defunctzombie_zz: yea total gather ripoff!
19:58:12  <ogd>domanic: haha you are writing dat!
19:58:33  * warbrettquit (Ping timeout: 252 seconds)
20:00:44  * brianloveswordsjoined
20:07:44  <rowbit>Hourly usage stats: [developer: 11, free: 33]
20:09:50  * defunctzombie_zzchanged nick to defunctzombie
20:10:07  * calvinfo2quit (Quit: Leaving.)
20:12:17  * tmcwjoined
20:18:05  * niftylettuce_joined
20:19:38  * quijotejoined
20:20:58  * mikolalysenkoquit (Ping timeout: 240 seconds)
20:22:28  <rowbit>substack, pkrumins: seaport services down: web.testling
20:22:39  * calvinfojoined
20:24:08  * quijotequit (Ping timeout: 245 seconds)
20:32:45  * jxson_joined
20:33:02  * dybskiyjoined
20:34:02  * warbrettjoined
20:35:12  * brianloveswordsquit (Quit: Computer has gone to sleep.)
20:35:15  * jxson_quit (Read error: Connection reset by peer)
20:35:28  * jxson_joined
20:36:14  * jxsonquit (Ping timeout: 255 seconds)
20:40:13  * ferossjoined
20:48:06  * feross_joined
20:48:57  * defunctzombiechanged nick to defunctzombie_zz
20:49:35  * jxson_quit (Remote host closed the connection)
20:53:07  * jxson_joined
20:55:48  * fent_quit (Ping timeout: 245 seconds)
20:58:02  * cpupquit (Ping timeout: 252 seconds)
20:58:05  * fent_joined
20:58:08  * jxson_quit (Remote host closed the connection)
21:00:05  * cpupjoined
21:01:02  * ednapiranhajoined
21:02:27  * jxsonjoined
21:02:46  * dybskiyquit (Remote host closed the connection)
21:04:06  * dybskiyjoined
21:07:44  <rowbit>Daily usage stats: [developer: 31, free: 938]
21:07:44  <rowbit>Hourly usage stats: [developer: 0, free: 36]
21:08:27  * dybskiy_joined
21:08:45  * dybskiyquit (Ping timeout: 258 seconds)
21:10:52  * dybskiyjoined
21:11:49  * calvinfoquit (Quit: Leaving.)
21:11:53  * sorribasquit (Ping timeout: 252 seconds)
21:11:53  * taterbasequit (Ping timeout: 252 seconds)
21:11:53  * Raynosquit (Ping timeout: 252 seconds)
21:11:54  * fent_quit (Ping timeout: 240 seconds)
21:11:55  * ogdquit (Ping timeout: 240 seconds)
21:11:55  * dubroy______quit (Ping timeout: 240 seconds)
21:11:55  * Domenicquit (Ping timeout: 240 seconds)
21:11:56  * contraha_quit (Quit: Sleeping)
21:12:19  * machtyquit (Ping timeout: 240 seconds)
21:12:28  * tanepiper_quit (Ping timeout: 245 seconds)
21:12:28  * sindresorhusquit (Ping timeout: 265 seconds)
21:12:35  * ednapiranhaquit (Quit: Leaving...)
21:12:37  * hughskquit (Ping timeout: 252 seconds)
21:12:37  * hackygoluckyquit (Ping timeout: 252 seconds)
21:12:53  * parshap_quit (Ping timeout: 245 seconds)
21:12:57  * niftylettuce_quit (Ping timeout: 265 seconds)
21:12:57  * addisonjquit (Ping timeout: 265 seconds)
21:12:59  * dybskiy_quit (Ping timeout: 252 seconds)
21:12:59  * daleharveyquit (Ping timeout: 252 seconds)
21:13:07  * owenb__quit (Ping timeout: 240 seconds)
21:13:07  * jcrugzzquit (Ping timeout: 240 seconds)
21:13:07  * ehdquit (Ping timeout: 240 seconds)
21:13:18  * ELLIOTTCABLEquit (Ping timeout: 245 seconds)
21:13:21  * kcherkashin__quit (Ping timeout: 252 seconds)
21:13:26  * tobiequit (Ping timeout: 265 seconds)
21:13:26  * mafintoshquit (Ping timeout: 265 seconds)
21:13:31  * calvinmetcalfquit (Ping timeout: 240 seconds)
21:13:31  * andreypoppquit (Ping timeout: 240 seconds)
21:13:43  * gozalaquit (Ping timeout: 252 seconds)
21:14:24  * mrb_bkquit (Ping timeout: 265 seconds)
21:15:26  * tmcwquit (Remote host closed the connection)
21:16:01  * tmcwjoined
21:20:15  * tmcwquit (Ping timeout: 258 seconds)
21:20:26  * quijotejoined
21:21:56  * tmcwjoined
21:22:39  * fent_joined
21:22:41  * ogdjoined
21:22:53  * dybskiyquit (Remote host closed the connection)
21:23:08  * hughskjoined
21:23:28  * taterbasejoined
21:24:21  * daleharveyjoined
21:24:59  * Domenicjoined
21:24:59  * dubroy______joined
21:25:17  * quijotequit (Ping timeout: 255 seconds)
21:25:49  * addisonjjoined
21:26:39  * brianloveswordsjoined
21:27:29  * hackygoluckyjoined
21:27:32  * tobiejoined
21:28:17  * defunctzombie_zzchanged nick to defunctzombie
21:28:19  * tanepiper_joined
21:28:35  * feross_quit (Quit: feross_)
21:28:40  * Domenic_joined
21:28:43  * sorribasjoined
21:28:46  * owenb__joined
21:28:51  * ehdjoined
21:29:02  * jcrugzzjoined
21:29:31  * sindresorhusjoined
21:29:39  * parshap_joined
21:29:47  * gozalajoined
21:29:47  * kcherkashin__joined
21:30:18  * mafintoshjoined
21:30:27  * CaptainECjoined
21:30:37  * mrb_bkjoined
21:30:58  * andreypoppjoined
21:31:01  * machtyjoined
21:31:06  * calvinmetcalfjoined
21:31:19  * niftylettuce_joined
21:35:18  * Domenic_changed nick to Raynos
21:36:28  <rowbit>substack, pkrumins: seaport services down: web.testling
21:36:55  <domanic>here is trouble! "Domenic_ is now known as Raynos"
21:37:12  * defunctzombiechanged nick to defunctzombie_zz
21:37:23  <domanic>at least we'll get continuables instead of promises
21:38:05  * naneauquit (Ping timeout: 265 seconds)
21:39:13  <rch>heh
21:40:14  * mikolalysenkojoined
21:40:33  <Raynos>domanic: I dont know why my irc tool logs me in as Domenic_ :/
21:40:46  <Raynos>i changed my nick to Domenic_ to troll him once and my irc client has "cached" this troll
21:41:02  * defunctzombie_zzchanged nick to defunctzombie
21:42:54  * brianloveswordsquit (Quit: Computer has gone to sleep.)
21:43:10  <domanic>sounds like the sort of thing Raynos would say.
21:43:28  <Raynos>I am Raynos.
21:44:02  <domanic>to veryify, I'll need to ask you a security question.
21:44:16  <Raynos>ask me about my mothers maiden name
21:44:19  <Raynos>thats easily googlable
21:45:06  <domanic>I've got a better one - how do reducers handle back pressure?
21:46:26  * naneaujoined
21:46:33  <jesusabdullah>yo, anyone going to jsconf and need a roommate?
21:46:36  <jesusabdullah>cause I need one
21:46:49  <jesusabdullah>I thought jsconf was later in the summer for some reason
21:47:38  * kumavisquit (Ping timeout: 240 seconds)
21:47:53  * ednapiranhajoined
21:50:16  * jxsonquit (Remote host closed the connection)
21:50:24  <domanic>Raynos, ^
21:50:50  * jxsonjoined
21:52:25  * jxson_joined
21:52:43  * jxson_quit (Remote host closed the connection)
21:53:21  * jxson_joined
21:53:35  * jxson_quit (Remote host closed the connection)
21:54:08  * jxson_joined
21:55:06  * jxsonquit (Ping timeout: 240 seconds)
21:55:59  * jxson_quit (Read error: Connection reset by peer)
21:56:55  * jxsonjoined
21:58:07  <Raynos>domanic: by communicating between source & output directly using return values
21:58:59  * jxsonquit (Remote host closed the connection)
21:59:03  <Raynos>btw i did a little "modular" demo of mercury stuff ( http://jsfiddle.net/4RUxn/1/ ). wonder whether this kind of "seperation" of "components" is readable
22:00:05  * calvinfojoined
22:00:59  * dybskiyjoined
22:01:17  * defunctzombiechanged nick to defunctzombie_zz
22:02:59  * brianloveswordsjoined
22:05:04  <domanic>Raynos, is there any reason that render is a property of numberInput?
22:05:33  <jesusabdullah>aww, nobody/
22:05:33  <jesusabdullah>?
22:05:37  <jesusabdullah>Nobody going to jsconf?
22:05:46  <jesusabdullah>;_; I'm gonna have to sleep on benches
22:06:16  <domanic>jesusabdullah, it's in florida though right?
22:06:43  <Raynos>domanic: the idea is that in `state.js` you `require('number-input-component')` and in `render.js` you `require('number-input-component').Render`
22:06:55  <Raynos>jesusabdullah: I am speaking at jsconf
22:07:06  <jesusabdullah>domanic: yeah
22:07:10  <jesusabdullah>Raynos: need a roommate?
22:07:11  <Raynos>jesusabdullah: when in last straw sleep on my room floor
22:07:20  <jesusabdullah>ah, a'ight I see
22:07:26  <jesusabdullah>Yeah, good to know
22:07:29  <Raynos>domanic: although those two functions could be seperate files if wanted
22:08:10  <domanic>Raynos, okay I guess that makes sense. I think this example is kinda verbose for just a counter
22:08:34  <domanic>surely there is something a little more interesting you could build...
22:08:36  <Raynos>domanic: it's purposely over engineered to see how it could "scale"
22:08:46  <domanic>"scale"????
22:08:48  <Raynos>somebody asked me how to do this very example
22:09:01  <Raynos>domanic: people want to know how you "scale" file seperation and "modularity"
22:09:40  <Raynos>domanic: this example would be way cooler if it had a color picker and kept the rgb in sync with the color picker
22:10:31  * thlorenzquit (Remote host closed the connection)
22:10:38  <domanic>oh right... this is only one file, but you have //file.js to show where the files go.
22:11:35  <domanic>Raynos, you should make a jsfiddle with mercury, that is a good simple real world example.
22:12:47  * maksimlinjoined
22:15:34  <Raynos>blargh. I need a hex -> rgb parser to add a color picker + color picker synchronization
22:15:42  <Raynos>domanic: I have been wanting to write a better requirebin for a while
22:16:45  <Raynos>I also need to do some work on value-event & form-data-set because they are not generic enough as modules
22:17:42  <Raynos>one of the things i really like about mercury is how `{ 'data-click': mercury.event(data.events.foo) }` is just sugar for `{ 'data-click': function (ev) { data.events.foo() } }`. very hackable :)
22:18:11  <Raynos>mercury has this strong OCD about "dom is evil" and not referencing dom event or dom element objects directly in app code and putting all dom logic in node_modules/*
22:19:52  <domanic>Raynos, why is it data-{event} not on-{event}?
22:21:05  * quijotejoined
22:21:49  <Raynos>domanic: https://github.com/Raynos/mercury/issues/21 we have an open bikeshed about what to name it
22:21:56  <Raynos>domanic: I think i want to name it ev-* but on-* is cool too
22:22:01  * dybskiy_joined
22:22:13  <Raynos>i guess i should get this back compat breaking shed in quickly :D
22:22:29  <Raynos>domanic: on-click might imply i actually set elem.onclick which i dont
22:22:30  * dybskiy_quit (Client Quit)
22:22:30  * brianloveswordsquit (Quit: Computer has gone to sleep.)
22:23:28  <rowbit>substack, pkrumins: Encoders down: 184.106.106.66 (dev-ie7-1)
22:23:49  <domanic>I think the "-" suggests it's not exactly the same as a dom event
22:24:07  <domanic>but it might be analogous to one.
22:24:17  * niftylettuce_quit (Quit: Connection closed for inactivity)
22:24:26  <domanic>data is really not like an event
22:24:32  <domanic>ev would be better
22:24:52  <domanic>but when you say "on" it's like "when a click happens"
22:25:01  * defunctzombie_zzchanged nick to defunctzombie
22:25:05  * dybskiyquit (Ping timeout: 240 seconds)
22:25:23  * quijotequit (Ping timeout: 245 seconds)
22:30:26  <Raynos>domanic: data- is just legacy shit atm, i want either ev- or on- just havnt painted the shed the new color yet
22:30:40  <Raynos>also ev & on are both two less characters ! #win
22:30:52  <defunctzombie>Raynos: domanic if you don't make HTML look like HTML then a designer will have an impossible time updating the UI
22:31:10  * pfraze_quit (Ping timeout: 258 seconds)
22:31:24  <Raynos>defunctzombie: designers are intelligent people who we can teach things too. orthogonal problem
22:31:39  <defunctzombie>you make it harder for no reason IMO
22:31:57  <Raynos>defunctzombie: also having something like jsx if you want
22:32:22  <Raynos>defunctzombie: it's a tradeoff, the advantage is the ability to use higher order functions in your templates and to use all the javascript module system technology for templates
22:32:35  <Raynos>defunctzombie: the disadvantage is "designer go fuck yourself"
22:33:07  * jxsonjoined
22:33:30  <Raynos>defunctzombie: there is a third middle ground. have designers do static html + css and have a tool that converts static html to h() stuff. this allows designers to use the tools they want
22:33:35  * naneau__joined
22:33:39  <defunctzombie>Raynos: I don't understand "javascript module system technology for templates"
22:33:47  <Raynos>defunctzombie: we can even set up a complex bidirectional compiler form static html + css <-> mercury templates
22:34:07  <Raynos>defunctzombie: I want require semantics for templates, just like we added require semantics to css & less
22:35:07  <defunctzombie>what is "require semantics" ?
22:35:16  <domanic>defunctzombie, not all problems are the same 90% of things are just websites, you hire a designer to make them look good.
22:35:58  <domanic>mercury isn't for websites. it's for apps. you need to put way more work into it because a small improvement in feel may make you one better than your competitors.
22:36:03  * naneauquit (Ping timeout: 276 seconds)
22:36:35  <domanic>defunctzombie, anyway, the way it's set out, it's just another syntax for html
22:36:44  <domanic>not so many new concepts
22:36:50  <Raynos>defunctzombie: as in i can share templates between multiple applications using node_modules and i can put templates for a non trivial "ui component" in node_modules
22:37:13  <Raynos>tbh I see h() as a jade without semantic whitespace
22:37:14  <defunctzombie>I build apps and would not like using what I see so far :)
22:37:37  <Raynos>defunctzombie: your choice of template dsl is bikesheddable btw
22:37:45  <defunctzombie>yes
22:37:51  <Raynos>defunctzombie: i think there is a compiler for handlebars that can compile into function (obj) { return h(...) }
22:37:57  <Raynos>with a bit of fork + hack hack hack
22:37:58  <defunctzombie>but that doesn't mean it doesn't influence how I build
22:38:15  * calvinmetcalfquit (Quit: Connection closed for inactivity)
22:38:16  <Raynos>I meant mercury will work if you write a handlebars -> function (obj) { return h(...) } compiler
22:39:18  <Raynos>however mercury doesn't allow `<div data-bind='text: foo' />` style templates, only `<div>{{foo}}</div>` style templates
22:39:34  <Raynos>i.e. mercury templates are not DOM based, they are things you compile into functions or functions you write by hand
22:40:09  <Raynos>defunctzombie: I actually really like the idea of writing a handlebars -> h() compiler. it makes this bikeshed go away.
22:40:36  <defunctzombie>sure
22:40:38  <Raynos>obvouisly the handlebars language is not turing complete so its not as expressive as writing functions be hand, this is either a feature or a bug depending on your school of thought
22:42:27  <defunctzombie>feature
22:45:07  <Raynos>mercury has no opinion about this other then the examples default to my personal opinion until i write a little "opinion toggler" on the examples viewer
22:52:44  <domanic>writing it in js is way more obvious, and you can just read the js and understand how it works. a compiler (and parser) is way more indirect.
22:53:32  <defunctzombie>I cannot read the JS and have a good idea of what the output will be in html
22:53:52  <defunctzombie>it is more obfuscated imo
22:54:09  * calvinfoquit (Quit: Leaving.)
22:55:36  * tmcwquit (Remote host closed the connection)
22:56:11  * tmcwjoined
22:56:14  * naneau__quit (Quit: Quit.)
22:57:43  * defunctzombiechanged nick to defunctzombie_zz
22:58:58  * isaacschanged nick to DomenicDecinola
22:59:02  * ryan_ramagequit (Quit: ryan_ramage)
23:00:19  <Raynos>i dont care, both are valid.
23:00:32  <Raynos>btw I created #virtualdom as a mercury + virtual-dom conversation room on freenode
23:00:44  * tmcwquit (Ping timeout: 265 seconds)
23:02:06  <rowbit>Hourly usage stats: [free: 35]
23:03:42  * DomenicDecinolachanged nick to DemonicDenicola
23:08:10  * pfrazejoined
23:10:52  * ednapiranhaquit (Quit: Leaving...)
23:11:11  <Raynos>defunctzombie_zz: https://github.com/petehunt/reactbars
23:11:29  <Raynos>so there already is a thing that compiles to React.DOM, compiling to mercury should be a trivial fix
23:11:31  * DemonicDenicolachanged nick to isaacs
23:14:02  * meschjoined
23:17:57  * rxgxjoined
23:22:06  * quijotejoined
23:23:46  * quijote_joined
23:24:41  * calvinfojoined
23:26:45  * quijotequit (Ping timeout: 276 seconds)
23:27:54  * quijote_quit (Ping timeout: 240 seconds)
23:29:03  * calvinfoquit (Ping timeout: 258 seconds)
23:29:04  * kumavisjoined
23:33:29  * kumavisquit (Ping timeout: 240 seconds)
23:35:23  <Domenic>haha that repo is great
23:38:25  <Domenic>i could have guessed that reducers thing
23:44:35  <Raynos>Domenic: what's the difference between closed & finished in streams2 :D
23:44:48  <Raynos>actually your probably a member of the { 5 people that understand streams }
23:45:29  * domanicquit (Ping timeout: 240 seconds)
23:45:49  * calvinfojoined
23:48:05  * phatedquit (Remote host closed the connection)
23:48:11  * warbrettquit (Remote host closed the connection)
23:48:45  * warbrettjoined
23:49:23  <kriskowal>Raynos: assuming that’s not retrorical, and assuming my instincts are well-honed, closed would mean no longer streaming, finished means closed because the source was exhausted. (Domenic plz check)
23:52:06  <Raynos>kriskowal: A writable stream is finished once it has flushed its buffer to the destination
23:52:20  <Raynos>A writable stream is closed once it has deallocated any resources (like fd's) for said destination
23:52:53  * warbrettquit (Ping timeout: 245 seconds)
23:59:50  * thlorenzjoined