00:00:01  * ircretaryquit (Remote host closed the connection)
00:00:09  * ircretaryjoined
00:00:09  <Raynos_>?
00:00:33  <Raynos_>isaacs: npm install gist.github.com/... should work :p
00:03:41  <Raynos_>dominictarr: I'll make a pass at having crdt.Set support function filters
00:03:47  <Raynos_>any ideas before I do so?
00:11:47  * j_dulaneyjoined
00:16:44  <isaacs>Raynos_: if you point at the raw version of the file, and it has a `/**package {...} **/` comment in it, then it will.
00:16:54  <isaacs>Raynos_: or you can put a `package.json` file in the gist, and point npm at the git:// url for it
00:17:41  <guybrush_>hahaha i love how duplex inherits prototypally and parasitically
00:19:19  <guybrush_>will totally do the same thing everywhere in my stuff
00:23:04  * ITproquit (Ping timeout: 244 seconds)
00:24:11  * ITprojoined
00:39:43  <guybrush_>with `require('inherits')(A,B,C.prototype)` it becomes a oneliner
00:39:44  * ryan_stevensquit (Read error: Connection reset by peer)
00:40:02  * j_dulaneypart
00:42:10  <mbalho>chrisdickinson: im unable to find a good keyboard shortcut library for the browser
00:42:17  <mbalho>chrisdickinson: so you should totally write one
00:42:49  * gwenbellquit (Ping timeout: 252 seconds)
00:43:02  <guybrush_>i have written one, but i think its not good - will put it on github anyway
00:43:07  <guybrush_>also there is mousetrap
00:43:30  <guybrush_>https://github.com/ccampbell/mousetrap
00:44:17  <mbalho>a) not on npm b) doesnt let you look up a keycode and get the key
00:44:20  <guybrush_>omg mousetrap not on npm yet
00:44:49  <guybrush_>i dont understand b)
00:45:06  <mbalho>keyboardevent.keycode
00:45:15  <mbalho>https://github.com/ccampbell/mousetrap/blob/master/mousetrap.js#L33
00:45:23  <mbalho>neither mousetrap nor keymaster expose their internap map
00:45:27  <mbalho>internal*
00:45:29  <guybrush_>oh
00:45:31  <guybrush_>i do that
00:45:38  <guybrush_>what would be a good name for such a lib?
00:45:45  <guybrush_>mine is called "input" :D
00:46:11  <guybrush_>but i guess its not your taste anyway, its heavily based on ee2
00:46:21  * ryan_stevensjoined
00:47:54  <guybrush_>it looks like https://gist.github.com/4480063
00:49:31  <guybrush_>actually the key-table could be a npm-module on its own
00:49:51  <guybrush_>so everyone has a table once and for all
00:50:02  * ITproquit (Ping timeout: 272 seconds)
00:50:37  <mbalho>yea
00:50:55  * ITprojoined
00:50:57  <mbalho>im stealing that
00:51:02  <mbalho>(not publishing it though, you should)
00:51:11  <isaacs>Raynos_: so, readable.push is really simple...
00:51:17  <isaacs>Readable.prototype.push = function(chunk) { var rs = this._readableState; rs.onread(null, chunk); return rs.length < rs.highWaterMark;
00:51:20  <isaacs>};
00:51:43  <guybrush_>mbalho: im not good with mainting things for others :p but yes i can publish
00:54:14  <isaacs>Raynos_: also, it's going to make readable.wrap(oldStream) a LOT simpler
00:55:54  <isaacs>Raynos_: it's a bit odd, though, because calling state.onread(null, chunk) might trigger stream._read() again
00:57:51  <mbalho>substack: do you have a module that can remove and add individual classes from the dom
00:57:58  <mbalho>dom elements*
00:58:43  <substack>what
00:59:11  <mbalho>substack: document.querySelector('.foo').removeClass('foo').addClass('bar')
01:00:10  <mbalho>ahh https://github.com/component/classes
01:08:19  <guybrush_>mbalho: you are not a fan of components? :>
01:09:03  <CoverSlide>component is lame
01:09:55  <guybrush_>oooh i have somewhere on my computer a started project called "component2npm" which can be used to install components as npm-modules like, but doesnt quite work yet `component2npm install visionmedia/classes`
01:10:00  <mbalho>lol
01:10:11  <mbalho>guybrush_: i would like it if they were published to npm
01:10:12  <substack>just put modules on npm
01:10:14  <substack>bam, problem solved
01:10:17  <mbalho>yeo
01:10:18  <mbalho>yep
01:10:35  <isaacs>substack: but npm is slow when you delete the cache because the cache doesn't work.
01:10:46  <isaacs>substack: it's untrustworthy and always has bugs.
01:10:56  <mbalho>and the maintainer is unreasonable
01:10:58  <isaacs>substack: also semver doesn't work the way it says because ~ is wrong.
01:11:02  * tilgovijoined
01:11:05  <guybrush_>also git-dependencies dont get cached at all :p
01:11:12  <isaacs>and the code style is impossible to contribute to
01:11:18  <isaacs>guybrush_: well... that is kind of shitty actually ;)
01:11:22  <isaacs>guybrush_: patches welcome
01:11:28  <mbalho>also the author doesnt work for guillermo
01:11:30  <guybrush_>oh i made a patch actually!
01:11:34  <CoverSlide>haha
01:11:47  <guybrush_>https://github.com/isaacs/npm/pull/2482
01:12:13  <guybrush_>but you didnt like it i guess, but i use it anyway since its so easy to use forks with npm
01:12:29  <isaacs>also the namespace is SO FLAT!
01:12:49  <isaacs>yo namespace is so flat, anyone can use any name they want!
01:12:50  <isaacs>zing!
01:13:04  <isaacs>yo namespace so flat, when it lays around the registry, it really LAYS AROUND THE REGISTRY!
01:13:53  <guybrush_>i have seen issues regarding support for multiple registries, even with _+1_ from isaacs :D
01:13:57  <guybrush_>so its just a matter of time
01:14:28  <isaacs>guybrush_: oh, right... i remember this pull. i think i even commented on it, and it looks like you did what i asked.
01:14:37  <isaacs>guybrush_: ok, now the tab is open in git. i'll get to it soon.
01:14:42  <guybrush_>isaacs: i think i did it wrong anyway
01:14:47  <isaacs>guybrush_: i've gotta do peer deps and some other stuff anyway
01:14:49  <guybrush_>no hurry
01:14:52  <isaacs>guybrush_: i might just fix up whatever you're lacking at this point
01:14:59  <guybrush_>really dont want to waste our time with that
01:15:05  * ryan_stevenspart
01:20:23  * ITproquit (Ping timeout: 260 seconds)
01:20:56  * ITprojoined
01:21:14  <guybrush_>lol my cat is such a gourmetpussy, other cats just hunt their food!
01:25:03  * Raynos_quit (Ping timeout: 245 seconds)
01:27:59  * st_lukequit (Remote host closed the connection)
01:35:36  * st_lukejoined
01:56:14  * jibayquit (Quit: Leaving)
02:01:20  * dguttmanquit (Quit: dguttman)
02:02:22  * st_lukequit (Remote host closed the connection)
02:08:18  <mbalho>substack: https://github.com/maxogden/toolbar
02:08:49  <mbalho>substack: ill make a demo with voxel textures
02:08:53  * tilgoviquit (Read error: Connection reset by peer)
02:09:30  <isaacs>Raynos: https://github.com/isaacs/node/compare/stream-readable-push
02:09:48  * tilgovijoined
02:09:57  * tilgoviquit (Remote host closed the connection)
02:13:23  <Raynos>isaacs: did you see https://github.com/isaacs/readable-stream/pull/44 ?
02:13:50  * Raynos_joined
02:14:45  <Raynos_>isaacs: I think push is good enough for me to implement the read-stream API I want.
02:19:13  * Raynos_quit (Ping timeout: 245 seconds)
02:19:31  <Raynos>The new github is off the hook
02:32:07  <isaacs>Raynos: i did. didn't review thoroughly, though
02:32:20  <isaacs>Raynos: i've been landing patches mostly against node, and then only backporting to readable-stream
02:32:31  <isaacs>Raynos: you should send your pull reqs there.
02:43:34  <Raynos>isaacs: will do once I spend some more attention on it.
03:14:56  * dominictarrjoined
03:16:02  <Raynos>https://gist.github.com/4480862
03:16:09  <Raynos>dominictarr: ^ that stuff is so powerful
03:16:43  <mbalho>ooh
03:16:49  <Raynos>you have no idea how much my complexity is reduced
03:16:53  <Raynos>by using crdt in my front end app
03:16:54  <chrisdickinson>mbalho: you can also turn noun project svgs into pngs in the browser!
03:17:28  <mbalho>chrisdickinson: oh sweet
03:17:54  <mbalho>Raynos: is that the same pubnub as this http://www.pubnub.com/
03:18:09  <dominictarr>sweet! oh, also we (nearform) are bringing out a scuttlebutt service, if you decide you don't like pubnub
03:19:06  <dominictarr>Raynos: pubnub is multicast, right?
03:19:27  <mbalho>rvagg: yessss https://github.com/rvagg/node-generic-session
03:19:27  <dominictarr>… well, multiple subscribers can receive a message
03:19:55  <rvagg>mbalho: currently working on rewriting RedSess to use it to see if isaacs can swallow it
03:20:32  <chrisdickinson>mbalho: img = document.createElement('img'); img.src = webkitURL.createObjectURL(new Blob([document.querySelector(< the svg you want >).parentNode.innerHTML], {type: 'image/svg+xml'}))); document.body.appendChild(img)
03:21:05  <mbalho>rvagg: i worked on a node-redis polyfill that used levelup and/or in memory store so that i could use redsess as a distributed session store but gave up cause the node-redis api was too complicated
03:21:31  <rvagg>mbalho: mmm, well my next project will be a leveldb session store for a simple single-server deployment
03:21:44  <rvagg>but I guess adding crdt wouldn't be too hard!
03:21:45  <dominictarr>screensaver service where you show them funny screen savers, but meanwhile, rent out there compute
03:22:09  <dominictarr>rvagg: embedded session store?
03:22:13  <mbalho>chrisdickinson: require('noun-project')(4429).appendTo('.container') should be a thing
03:22:29  <mbalho>chrisdickinson: that lets you specify if you want png or svg
03:22:37  <mbalho>chrisdickinson: and dimensions
03:22:50  <mbalho>(if svg)
03:22:55  <mbalho>err if png rather
03:25:51  <Raynos>mbalho: yeah pubnub
03:26:01  <Raynos>dominictarr: pubnub is multi cast yes.
03:26:18  <Raynos>so the duplex stream is a effectively a connection to a named echo server
03:26:49  <Raynos>the cool thing is crdt (because scuttlebutt) can actually replicate through an echo server without being too chatty
03:27:07  <Raynos>dominictarr: I don't like pubnub, but god damn do they have low latency.
03:27:30  <Raynos>dominictarr: I've also invested a good chunk of effort in having a reliable stream on top of the pubnub code.
03:27:59  <dominictarr>Raynos: cool! we need stream polyfils ontop of everything, until they realize
03:28:46  <Raynos>dominictarr: I already have a scuttlebutt service ( https://github.com/Raynos/signal-channel#scuttlebutt-example )
03:29:23  <Raynos>dominictarr: I wrote expiry-model purely for "scuttlebutt as a service but I'm going to aggressively limit the amount of RAM you get"
03:30:02  <dominictarr>that is very different
03:30:32  <Raynos>it's not really. It's a server which has an in memory scuttlebutt and you can connect to it
03:30:46  <Raynos>it's not p2p at all, it's a centralized server with a bunch of scuttlebutts in RAM
03:31:22  <Raynos>( https://github.com/Raynos/signal-channel/blob/master/routes/scuttlebutt.js )
03:32:14  <Raynos>although ( https://github.com/Raynos/signal-channel/blob/master/routes/scuttlebutt.js#L6 ) would explain a bunch of bugs with peer-nodes :D
03:33:35  <dominictarr>so when you do require('signal-channel/scuttlebutt)('some name space')
03:33:48  <Raynos>it connects to signalchannel.co/sock
03:33:57  <dominictarr>it creates a stream to a new scuttlebutt for that namespace?
03:33:58  <Raynos>because the second argument is a server to connect to and defaults to mine
03:34:44  <Raynos>yes it's a new stream and on the other end (the server) there is a scuttlebutt
03:34:57  <Raynos>so it's a central star network for scuttlebutts
03:35:13  <dominictarr>right, you should use scuttlebutt-schema so you can use different scuttlebutt flavors
03:35:16  <dominictarr>like crdt
03:35:21  <dominictarr>oh, hang on
03:35:37  <Raynos>well what I need to do
03:35:57  <Raynos>well you can also just connect scuttlebutt to signal-channel/echo
03:36:09  <Raynos>but then the central server doesn't persist your data when all your connect clients are down
03:36:19  <Raynos>but I guess that doesn't matter.
03:36:48  <dominictarr>don't think scuttlebutt will work multicast
03:36:49  <Raynos>depends on whether data in that scuttlebutt is volatile or temporary
03:36:53  <Raynos>it does
03:36:56  <Raynos>that's what I'm doing atm
03:37:01  <Raynos>at least for 2 clients
03:37:01  <dominictarr>it works?
03:37:20  <Raynos>yes
03:37:22  <dominictarr>well, if you get the history unicast
03:37:27  <Raynos>cant really test for more then 2 clients
03:37:27  <dominictarr>that would work
03:37:40  <Raynos>well scuttlebutt can handle history at any moment in time
03:37:49  <Raynos>doing scuttlebutt multicast is just more chatty
03:37:59  <mbalho>what about february 22nd 1943
03:38:26  <dominictarr>yeah, adding new scuttlebutts to the group would send the new data to everyone
03:38:30  <dominictarr>that is silly
03:38:42  <dominictarr>sorry, I mean send the history to everyone
03:38:45  <dominictarr>still silly
03:38:45  <Raynos>its correct
03:38:49  <Raynos>its just chatty
03:38:55  <Raynos>its inefficient
03:39:12  <Raynos>but the thing is you dont care :D
03:39:25  <dominictarr>because the updates are commutative, it will still work
03:39:26  <Raynos>because your not paying for bandwidth
03:39:28  <Raynos>or maybe you are.
03:39:39  <dominictarr>once you have thousands, it may start to matter
03:40:18  <Raynos>agreed
03:40:24  <Raynos>but im keeping it room based
03:40:33  <rvagg>mbalho, isaacs: https://github.com/isaacs/redsess/pull/7
03:40:38  <Raynos>so there will only be ~10-50 in one multicast
03:40:55  <dominictarr>Raynos: is this for colingo?
03:41:08  <Raynos>yes.
03:41:15  <dominictarr>ah, very good.
03:41:32  <Raynos>THIS IS PRODUCTION.
03:41:43  <Raynos>the other nice thing about this is
03:41:53  <Raynos>This front end app is nice and modular so plugging crdt in was super easy
03:42:09  <Raynos>its still a complex beast
03:46:22  * jez0990joined
03:53:19  <Raynos>dominictarr: I should have started using crdt in production 6 months ago :D
03:54:00  <mbalho>dominictarr: did you figure out a way to make the tops of cubes have a certain texture and the sides have another
03:54:15  <Raynos>https://gist.github.com/4480862 this is like socket.io but way better right out of the box
03:54:40  <dominictarr>mbalho: try sandpaper
03:54:58  <dominictarr>also, mix paint with sand, and then paint that on the tap
03:54:58  <mbalho>OOPS
03:55:10  <mbalho>dominic is not jimmy james halliday
03:55:11  <dominictarr>will make a nice non slip surface
03:55:18  <mbalho>substack: did you figure out a way to make the tops of cubes have a certain texture and the sides have another
03:55:29  <mbalho>damn you shortbeards lookin all similar
03:55:58  <substack>mbalho: yes but it's difficult to encode that
03:56:05  <mbalho>substack: http://i.imgur.com/WKB9Q.png
03:56:07  <mbalho>substack: ahh
03:56:56  <dominictarr>Raynos: 6 months ago crdt still had scuttlebutt hidden inside of it
04:00:11  <Raynos>dominictarr: 6 months ago I wrote my own version of crdt ( https://github.com/Raynos/distributed-map )
04:01:06  <dominictarr>that was back when you where passing streams instead of pipeing them
04:01:20  <Raynos>that distributed-map actually had a interesting way of handling history over multicast
04:01:46  <dominictarr>what does it do?
04:03:21  <Raynos>dominictarr: broadcast a history exchange request
04:03:36  * tphummelquit (Quit: tphummel)
04:03:42  <dominictarr>what do you mean?
04:03:50  <Raynos>sec
04:06:11  <Raynos>https://gist.github.com/9883f3f732a12a887d85
04:06:49  <Raynos>its far from optimum and quite silly
04:06:54  <Raynos>but it's an interesting approach
04:09:43  <mbalho>substack: haha here is the game with webgl turned off (using the canvas renderer) http://i.imgur.com/fXqnD.jpg
04:09:50  <Raynos>dominictarr: whats the scuttlebutt service btw?
04:09:55  <mbalho>substack: im gonna try just wireframes with canvas and see if its faster
04:11:29  <Raynos>dominictarr: I have a desire to map non-replicable computed properties on top of scuttlebutt / crdt. i.e. data local to that individual browser client.
04:12:04  <Raynos>do you have any ideas about how to do that. The desire is to have the row / scuttle change events still fire and thus allowing reactive UIs but not replicate or persist that local stuff
04:12:04  <dominictarr>yes, can just hook into get
04:12:28  <dominictarr>something like this
04:13:06  <dominictarr>doc.setComputed(function (x, y) { return x + y }, ['x', 'y'])
04:13:45  <dominictarr>doc.setComputed('z', function (x, y) { return x + y }, ['x', 'y'])
04:14:41  <dominictarr>and then get('z') calls (function (x, y) {…})(doc.get('x'), doc.get('y))
04:14:44  <dominictarr>etc
04:15:33  <dominictarr>ember, knockout, etc all have stuff like this… but usually too clever for their own good.
04:18:01  <dominictarr>Raynos: your map-history thing is weild
04:19:00  <dominictarr>oh, I get it, they fight to be the one to exchange history
04:19:58  <dominictarr>Raynos: look up "reliable multicast"
04:20:20  <dominictarr>although, note, tcp is not really multicast, even when it feels like it.
04:22:39  <Raynos>too much thinking
04:23:00  <Raynos>dominictarr: that's a good idea for computed
04:24:19  <Raynos>dominictarr: actually i dont want computed, I want local. i.e. not in history() and not replicated and not persisted and not in the stream
04:27:14  <dominictarr>right, so you'd need a separate _store for that...
04:27:36  <dominictarr>you'd have to convince me about your use-case though, that sounds complicating...
04:27:58  <Raynos>i have a crdt.Set
04:28:01  <Raynos>of messages
04:28:06  <Raynos>being rendered as a list in the DOM
04:28:16  <Raynos>I want to do row.set('hidden', true) in one part of my code
04:28:27  <Raynos>and have the dom rendering code be like "oh its hidden now, ok hide"
04:28:43  <Raynos>but thats client specific state (filtering the list of messages)
04:30:02  <dominictarr>just set a property on it, and emit a 'hidden' event
04:30:24  <dominictarr>relocating for breakfast...
04:31:15  * dominictarrquit (Quit: dominictarr)
04:35:52  * dguttmanjoined
04:37:40  * dguttmanquit (Client Quit)
04:39:44  <mbalho>substack: hmm even with wireframe and chunkDistance at 1 the fps is only 10
04:39:49  <mbalho>substack: so i guess we are webgl only for now
04:41:00  <mbalho>substack: ooh if i make the chunksize 16 it renders at 30fps but the world is relatively small
05:00:00  <mbalho>substack: also they should have a decay time after which they disappear
05:00:10  <substack>yes
05:00:48  <mbalho>substack: the ones in minecraft disappear after a second or two somewhat randomly
05:02:47  <mbalho>substack: just pushed a buncha new textures from a minecraft texture pack called jolicraft
05:02:51  <mbalho>to voxel-engine
05:27:42  * defunctzombie_zzchanged nick to defunctzombie
05:41:19  * dominictarrjoined
05:41:23  <dominictarr>back
05:49:15  * evboguejoined
05:54:12  <mbalho>substack: ok biggest missing feature now is game save/load into leveldb
05:54:45  <mbalho>i think that should be a new module though
05:55:03  <mbalho>substack: the way minecraft does it where you use a seed for your world and then just store edits is pretty smart
05:55:07  <mbalho>substack: we should probably copy that
05:57:45  <dominictarr>how are you representing the data model currently?
05:58:09  <mbalho>dominictarr: typed arrays for each 32^3 chunk of voxels (32768 indices each)
05:58:37  <mbalho>dominictarr: games have a configurable chunk size but we are using 16 now
05:59:20  <mbalho>dominictarr: but writing 2 million keys to leveldb would probably suck too many resources
05:59:25  <mbalho>and syncing...
05:59:32  <mbalho>so better to use a seed to avoid that
05:59:50  <rvagg>perhaps you should try it and see
05:59:51  <mbalho>dominictarr: but id love some help with multiplayer if youre interested
06:00:02  <dominictarr>use a run length encoding, like GIF
06:00:10  <dominictarr>but 3D!
06:00:31  <mbalho>rvagg: well im just sayin instead of syncing a world between 2 users i can have the users deterministically generate the base world and then sync edits
06:00:57  <fotoverite>mbalho: smart
06:02:01  <mbalho>rvagg: but after generating i should probably persist the data into leveldb locally
06:02:11  <mbalho>rvagg: but only sync changes to the server
06:04:22  * tphummeljoined
06:04:51  <rvagg>ahh, right, hence a seed
06:04:54  <rvagg>cool
06:05:27  <mbalho>rvagg: right now the seeds are js functions :D
06:05:49  <mbalho>https://github.com/maxogden/voxel/blob/master/index.js#L35
06:11:17  <dominictarr>Raynos: on ileveldb do you still open it async like leveldb?
06:14:49  * farnsworthquit (*.net *.split)
06:15:05  <substack>mbalho: pull then run demo/gather.js
06:16:00  <mbalho>hey that infringes on my companies trademark
06:16:04  * Raynos_joined
06:16:19  <Raynos_>dominictarr: levelidb opens itself asynchronously immediately as you create the db
06:16:48  <dominictarr>right, so just like levelup(path, .., cb)
06:17:01  <Raynos_>except that api doesnt exist
06:17:08  <Raynos>dominictarr: should do
06:17:08  <mbalho>substack: woot!
06:17:11  <Raynos_>with levelup its var db = leveluyp(path, ...) db.open(cb)
06:17:28  <Raynos_>Ignore Raynos, he's full of shit ~_~
06:17:51  <rvagg>levelup does do a cb, open() is optional
06:18:03  <rvagg>actually, not optional at all
06:18:06  <rvagg>don't use open()
06:18:13  <dominictarr>so there raynos
06:18:34  <Raynos_>rvagg: >_<
06:18:43  <Raynos_>oh wait
06:19:00  <dominictarr>acutally, I might will need this soon, because I have multiple processes and only one can open levelup.
06:19:03  <Raynos_>your right
06:19:05  <rvagg>module.exports = function (location, options, callback) {}
06:19:05  <Raynos_>levelup does do this
06:19:17  * farnsworthjoined
06:19:23  <rvagg>man... you messed with that API to make the cb optional, so of all people..
06:19:27  <Raynos_>both dbs do (path, options, cb)
06:19:38  <Raynos_>I mis read the code :p
06:19:53  <dominictarr>if the leader process does down, then another process needs to open the database and take over.
06:21:13  <Raynos_>nobody touch https://github.com/rvagg/node-levelup/wiki/Modules until Im done :D
06:22:25  <dominictarr>surely it will just merge commit?
06:24:36  <Raynos_>I have no idea how github does it :)
06:27:43  <Raynos_>dominictarr: level-reduce and level-map are not documentedf
06:28:29  <dominictarr>well, they are just parts of map-reduce, which is.
06:28:43  <dominictarr>guess I should at least have a link to map-reduce though
06:29:25  <mbalho>chrisdickinson: i think in pointer-lock we need to be checking if the thing that gets clicked on is actually the thing bound to the pointer lock
06:29:45  <mbalho>chrisdickinson: like ev.currentTarget === container
06:35:03  <mbalho>chrisdickinson: oh wait nevermind i just had stupid code
06:35:24  <chrisdickinson>ah cool. what was the issue?
06:37:13  <mbalho>chrisdickinson: i was passing in window on accident
06:37:20  <dominictarr>oooh, got a crazy idea for replicating views… you are gonna like this Raynos
06:37:21  <chrisdickinson>ah
06:37:47  <Raynos_>dominictarr: Well I'm wondering whether I can use level-map on it's own just to do live maps
06:38:11  <Raynos>replication?
06:38:25  <dominictarr>yes, but if you use map-reduce but don't pass a reduce function, you get the same thing.
06:38:47  <dominictarr>yeah, like you wanted the other day - copying the reduced view to the client or something
06:39:33  <dominictarr>or, in the my situation, combining views from different databases into a summary database
06:39:40  <chrisdickinson>apropos of nothing: have to teach two co-workers javascript. thinking of using "effective javascript" as a textbook; making a small website to practice exercises and report progress / attempts back to me.
06:40:14  <chrisdickinson>practice website would include ace (for the editor) and ideally something like codebux to give a level of "you can do this in a simpler way", while they write code to pass tests.
06:40:15  <dominictarr>and also; reconnecting a view stream after disconnects
06:40:27  <mbalho>chrisdickinson: made in part by the guy who wrote eloquent javascript https://github.com/OpenTechSchool/js-beginners-4h-workshop-1
06:40:31  <dominictarr>these are all the same one-way replication problem
06:40:56  <dominictarr>chrisdickinson: are you co-workers cats? if so I heard there is a thing just for them
06:41:16  <mbalho>http://for-cats.com !
06:43:41  <Raynos>https://github.com/rvagg/node-levelup/wiki/Modules
06:43:44  <Raynos>Done for now.
06:49:21  <Raynos_>SICP has videos about streams ( http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/6a-streams-part-1/ )
06:51:14  <dominictarr>rvagg: will leveldb do something weird if I call db.open() more than once?
06:52:10  * mikealquit (Quit: Leaving.)
06:52:41  <Raynos_>undefined behaviour :D
06:54:27  <dominictarr>it should be idempotent
06:54:33  <mbalho>substack: pushed a new version where you can click on the tools and also hold down ctrl to toggle place/delete (just like minecraft)
06:59:30  <chrisdickinson>mbalho: is this on voxel.jit.su, or elsewhere?
06:59:51  <mbalho>chrisdickinson: about to deploy, hold on
07:03:06  <mbalho>chrisdickinson: http://maxogden.github.com/voxel-engine/
07:04:43  <chrisdickinson>nice
07:05:23  <substack>mbalho: count up the number of blocks collected
07:05:30  * mikealjoined
07:06:01  <substack>you can game.on('collision', function (item) { var material = game.materials[item.value - 1]; ... })
07:06:06  <mbalho>ooh
07:06:28  <substack>especially if you pull from me
07:06:39  <substack>adjusted the collisionRadius slightly
07:06:49  <mbalho>substack: clickign rapidly in the distance with gathering turned on causes this http://i.imgur.com/jPpBc.png
07:11:16  <substack>maybe do if (!value) return in explode()
07:16:10  * defunctzombiechanged nick to defunctzombie_zz
07:16:28  <rvagg>dominictarr: looks like it should do a close/open if you call it but the _status is updated first line so that looks like a bug
07:16:45  <rvagg>dominictarr: propose a test for it, if you don't want to code a test up at least make an issue for it so we can verify that it does the right thing
07:16:53  <rvagg>the _status update without checking it first is pretty nasty
07:17:17  <dominictarr>okay, sweet. I guess it needs to update _status to 'opening'
07:17:20  <dominictarr>etc
07:17:33  <substack>mbalho: yep, confirmed, it happens when value === 0
07:17:46  <mbalho>cool
07:20:06  <mbalho>substack: just added a counter, http://maxogden.github.com/voxel-engine/
07:21:57  <substack>it only updates on my chrome if I switch tabs :/
07:22:02  <mbalho>bummer
07:22:11  <mbalho>we should implement if you hold down shift you cant fall off an edge
07:22:17  <substack>I was more thinking you could put the counts alongside the materials
07:22:22  <mbalho>which makes it useful for building long flat bridges
07:22:34  <mbalho>substack: ahh i see
07:22:58  <mbalho>substack: like real minecraft :D
07:23:06  <substack>yep!
07:23:10  <substack>I still can't click the buttons
07:23:45  <mbalho>if im out of pointerlock it works for me
07:29:08  <Raynos>Everyone should watch this ( http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/6a-streams-part-1/ )
07:31:09  * dominictarrquit (Quit: dominictarr)
07:31:45  * dominictarrjoined
07:33:17  <substack>Raynos: watching it!
07:38:39  * dominictarrquit (Quit: dominictarr)
07:39:35  <mbalho>substack: ooh we should write a code editor that lets you re-render the world using your own generate function
07:39:39  <mbalho>substack: and a gravity on/off button
08:00:08  * dominictarrjoined
08:04:15  * thatguydan_joined
08:07:39  * thatguydanquit (Ping timeout: 260 seconds)
08:08:28  * thatguydan_quit (Ping timeout: 246 seconds)
08:20:15  * jez0990quit (Read error: Operation timed out)
08:24:31  * AndChat648704joined
08:26:19  * AndChat|648704quit (Ping timeout: 256 seconds)
08:29:19  * AvianFluquit (Remote host closed the connection)
08:44:38  * AndChat648704quit (Quit: Bye)
08:44:54  * AndChat648704joined
08:47:00  * st_lukejoined
08:53:16  * AndChat648704quit (Ping timeout: 246 seconds)
09:14:56  * thatguydanjoined
09:17:23  * tphummelquit (Quit: tphummel)
09:19:22  * AndChat648704joined
09:19:31  * thatguydanquit (Ping timeout: 248 seconds)
09:20:57  * jez0990joined
09:21:01  <substack>mbalho: can you pull my [email protected] and publish it?
09:21:27  <substack>publishing voxel-debris shortly
09:37:49  <substack>[email protected]:substack/voxel-debris.git
09:44:43  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
09:44:43  <rowbit>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
09:45:18  <substack>yay!
10:12:05  <rvagg>heh, is your favoriting finger stuck or something dominictarr?
10:12:29  <dominictarr>$('.favorite').click()
10:13:48  <rvagg>https://github.com/rvagg/node-level-session
10:15:49  * thatguydan_joined
10:34:41  * thatguydanjoined
10:38:18  * thatguydan_quit (Ping timeout: 276 seconds)
10:39:32  * thatguydanquit (Remote host closed the connection)
10:39:44  * thatguydanjoined
10:39:56  <dominictarr>rvagg: can I make 'open' a synonym for 'ready'?
10:40:18  <dominictarr>then the events matches the _state property, as documented.
10:40:27  <rvagg>sure
10:40:46  <rvagg>change _state all you like, it's not a public api we commit to not changing on a whim
10:42:34  <dominictarr>rvagg: it is documented though...
10:42:48  <rvagg>oh really?
10:43:14  <rvagg>grep _state README.md yields nothing
10:43:16  <dominictarr>kinda https://github.com/rvagg/node-levelup#dbisopen
10:43:25  <dominictarr>the states are listed
10:43:31  <dominictarr>but not the property
10:43:38  <dominictarr>okay, so it's not publish
10:43:41  <dominictarr>public
10:44:04  <rvagg>yeah, _* is fair game for changing even in patch releases IMO
10:44:42  <rvagg>tho I'd kind of be annoyed if require('util')._extend disappeared on a minor release...
10:49:06  * jibayjoined
10:54:35  * thatguydan_joined
10:58:07  * thatguydanquit (Ping timeout: 260 seconds)
10:58:07  * thatguydan_changed nick to thatguydan
11:03:03  * thatguydanquit (Remote host closed the connection)
11:03:17  * thatguydanjoined
11:10:07  * tanepiperquit (Ping timeout: 246 seconds)
11:10:20  <dominictarr>rvagg: okay, we now have idempotent open
11:10:50  <dominictarr>I intended to make a pull request, but i didn't realize that my origin was your repo.
11:10:55  <dominictarr>so, it's in master now.
11:11:10  <rvagg>no probs
11:11:12  <dominictarr>tests pass though, + i added test coverage for opening
11:11:27  <rvagg>hij1nx might be interested in this, he was having open/close issues
11:11:38  <substack>idempotence!
11:11:44  <dominictarr>if you want to bump the version, I need this for something I'm working on.
11:12:45  <rvagg>well.... we have a couple of other items in master now, one of which I'm a bit dubious of
11:12:55  <rvagg>I'll publish with a @dev tag
11:13:04  * tanepiperjoined
11:14:24  * thatguydan_joined
11:17:42  <rvagg>dominictarr: npm install [email protected]
11:17:52  <rvagg>or pin it to 0.5.0 and you should get it I think
11:17:52  <dominictarr>cool
11:18:06  * thatguydanquit (Ping timeout: 264 seconds)
11:18:06  * thatguydan_changed nick to thatguydan
11:18:46  <rvagg>I need some time to sort out what might be wrong with the binding before I'm confident for another release
11:19:05  <dominictarr>btw, what are the things that seem dubious?
11:19:47  <rvagg>on Linux I'm getting some the process dying with a complaint about synthetic function calls, to do with the OO structure of my Async* classes I think
11:19:51  <dominictarr>yup npm install [email protected] works
11:20:14  <rvagg>on Mac there sees to be something similar going on but different error; but I'm not sure there
11:29:04  * thatguydanquit (Remote host closed the connection)
11:29:17  * thatguydanjoined
11:31:53  * dominictarrquit (Quit: dominictarr)
11:31:56  * fotoverite_joined
11:34:31  * fotoveritequit (Ping timeout: 260 seconds)
11:34:31  * fotoverite_changed nick to fotoverite
11:39:17  * yorickjoined
11:45:28  * AndChat|648704joined
11:47:27  * jez0990quit (Ping timeout: 265 seconds)
11:47:34  * evboguequit (Read error: No route to host)
11:48:54  * AndChat648704quit (Ping timeout: 265 seconds)
13:41:29  * jibayquit (Ping timeout: 255 seconds)
13:45:48  * jibayjoined
14:35:26  * ITproquit (Read error: Connection reset by peer)
14:36:11  * ITprojoined
14:38:53  * defunctzombie_zzchanged nick to defunctzombie
14:54:32  * dguttmanjoined
15:02:38  * devaholicjoined
15:16:47  * sorensen_joined
15:16:49  * sorensen_quit (Client Quit)
15:21:21  * AvianFlujoined
16:06:34  <pkrumins>from now on submit browserling bugs here: https://github.com/pkrumins/browserling-bugs/issues
16:07:00  <pkrumins>and testling/testling-ci bugs here: https://github.com/pkrumins/testling-bugs/issues
16:19:10  * mikealquit (Quit: Leaving.)
16:23:22  * jez0990_joined
16:42:39  * shuaibjoined
16:48:51  * AndChat|648704quit (Read error: Connection reset by peer)
16:49:11  * AndChat648704joined
16:49:36  * AndChat|648704joined
16:54:06  * AndChat648704quit (Ping timeout: 264 seconds)
17:21:41  * duncanbeevers_changed nick to duncanbeevers
17:22:11  * duncanbeeverschanged nick to Guest45270
17:23:35  * dominictarrjoined
17:43:37  * dominictarrquit (Quit: dominictarr)
17:55:07  * thatguydanquit (Quit: thatguydan)
18:01:51  * jez0990_quit
18:02:13  * jez0990joined
18:12:59  * AndChat|648704quit (Read error: Connection reset by peer)
18:16:00  * tphummeljoined
18:19:48  * tphummelquit (Client Quit)
18:22:24  * AndChat648704joined
18:29:04  * tphummeljoined
18:41:39  * tphummel_joined
18:45:08  * tphummelquit (Ping timeout: 256 seconds)
18:45:08  * tphummel_changed nick to tphummel
18:49:32  * mikealjoined
19:01:20  * Guest45270changed nick to duncanbeeveres
19:01:51  * duncanbeevereschanged nick to duncanbeevers
19:02:21  * duncanbeeverschanged nick to Guest43863
19:24:18  * tphummelquit (Quit: tphummel)
19:26:45  * tphummeljoined
19:29:19  * j_dulaneyjoined
19:29:27  * j_dulaneypart
19:44:13  * tilgovijoined
19:50:03  * thatguydanjoined
20:17:13  * Guest43863changed nick to duncanbeevers
20:26:18  * jdiezjoined
20:36:33  * nk109joined
20:54:58  <st_luke>hij1nx: ping
21:17:53  <defunctzombie>anyone got a module for working with data urls?
21:20:58  <chrisdickinson>as in URL.createObjectURL? or canvas.toDataUrl?
21:31:09  <mbalho>WOOT http://maxogden.github.com/voxel-perlin-terrain/
21:31:13  <mbalho>substack: o/ got it working
21:32:11  <mbalho>substack: i did it by rendering enough noise for the entire map (all chunks) up front and throwing them into a typed array and then splitting the big typed array into smaller typed arrays for each chunk
21:32:30  <CoverSlide>oh sweet
21:33:00  <mbalho>substack: right now it is copying the data from the big one to the smaller ones but i think there is a way to make an array 'view' so it will take up less memory
21:37:43  * ITproquit (Ping timeout: 248 seconds)
21:51:05  * jez0990quit (Remote host closed the connection)
21:55:15  * jez0990_joined
21:56:09  * jez0990_quit (Client Quit)
21:56:20  * jez0990_joined
21:59:15  <st_luke>defunctzombie: are you going to put non-css animation in that lib?
21:59:59  <defunctzombie>st_luke: I don't think so.. I am not using this but it seems like it will do non-css animation: http://fx.inetcat.com/
22:00:21  <defunctzombie>really I just needed to fix the damn collapse/expand issue
22:00:34  <defunctzombie>so maybe I should just instead make it a gist or something
22:01:01  <chrisdickinson>mbalho: yes, new Uint32Array(new Uint8Array(20000).buffer, <byte offset>)
22:04:16  <st_luke>defunctzombie: some recruiter emailed me about needing a 'ruby guy' for bloomberg, lolz
22:05:08  <defunctzombie>hahaha
22:05:18  <mbalho>chrisdickinson: ooh
22:05:51  <chrisdickinson>i think the full api is: new typedarray(array buffer, byte offset, length)
22:06:02  <chrisdickinson>and every typed array has a `.buffer` attribute
22:08:38  <Raynos_>dominictarr: do you have a module for syncing up an ul and a crdt.Seq ?
22:10:53  * thatguydanquit (Quit: thatguydan)
22:16:37  <defunctzombie>is there really no module to parse data urls? this makes me a little sad hahaha
22:17:38  <Raynos_>I ended up using https://gist.github.com/4488508
22:20:04  <mbalho>substack: ok my voxel-server needs to do some physics i guess http://blog.artillery.com/2012/05/realtime-multiplayer-3d-gaming-html5.html
22:20:51  * mikealquit (Quit: Leaving.)
22:21:38  <CoverSlide>ah they use coffee script
22:21:53  <mbalho>CoverSlide: yea but the general approach is correct
22:22:22  <mbalho>CoverSlide: wanna take a stab at implementing a better multiplayer protocol? https://github.com/maxogden/voxel-server
22:22:35  <CoverSlide>i would if i had the time
22:22:41  <mbalho>hehe
22:22:43  <CoverSlide>i have this pesky work thing
22:22:53  <CoverSlide>and this pesky family thing afterward
22:24:51  * ITprojoined
22:27:20  <CoverSlide>also this pesky sleep thing which i may try to skip but damn it's addicting
22:28:33  <mbalho>substack: for multiplayer we will need the server to generate the chunk buffers and run the collision code and then send deltas to each player
22:28:37  <mbalho>:(
22:38:15  <defunctzombie>pkrumins: do you know if those range changes got deployed yet?
22:41:05  <pkrumins>deploying now
22:41:17  <pkrumins>one problem with those ranges is that each time i update browsers i've to update that module
22:41:36  <substack>pkrumins: no we've got to pass in the browser list to the module first
22:41:39  <substack>one sec
22:43:33  <pkrumins>k
22:48:29  <mbalho>substack: what you think of the name 'cubed'
22:48:37  <substack>mbalho: for what?
22:48:52  <mbalho>substack: THE CUBE GAME
22:49:05  <CoverSlide>how about cubecraft
22:49:11  <mbalho>copyright infringement
22:49:14  <substack>mbalho: hard to search for
22:49:23  <substack>copyright is not trademark
22:49:29  <mbalho>i am not a lawyer
22:49:34  <CoverSlide>you think they have rights over *craft
22:49:34  <mbalho>cubeQuery
22:49:37  * thatguydanjoined
22:49:39  * thatguydanquit (Remote host closed the connection)
22:49:49  <mbalho>(kidding)
22:50:00  * thatguydanjoined
22:50:05  <CoverSlide>how about "Touch my Box"
22:50:11  <chrisdickinson>boxel?
22:50:21  <CoverSlide>i like it
22:50:28  <mbalho>whaat http://rappdaniel.com/experiment/cubed/
22:50:40  <mbalho>chrisdickinson: the word voxel is too maybe too nerdy
22:51:06  * mikealjoined
22:51:13  <chrisdickinson>i don't think folks who hadn't heard of voxels would make the connection
22:51:21  <mbalho>yea
22:51:28  <chrisdickinson>they'd probably just think "box"
22:52:40  <chrisdickinson>also, re the server doing all of those things
22:52:59  <chrisdickinson>should just use the same modules
22:53:04  <mbalho>yea
22:53:07  <chrisdickinson>and on the client just do prediction
22:55:16  <CoverSlide>yeah
22:55:42  <fotoverite>I take a nap and find myself in a time warp. https://groups.google.com/forum/#!topic/rubyonrails-security/61bkgvnSGTQ/discussion
22:56:01  <CoverSlide>periodic server updates, timestamped events
22:56:03  <fotoverite>SO happy I do node now. This shit is sad.
22:56:19  <CoverSlide>pretty crazy
22:57:39  <fotoverite>I like voxel as a name
22:57:46  <mbalho>substack: also the name v3js which is short for voxel with three.js and v3js.com is available
22:57:50  <fotoverite>It's evocative and very memorable.
22:57:55  <CoverSlide>voxxer!
22:58:00  <CoverSlide>Voxxer the Mighty!
22:58:04  <CoverSlide>oh wait
22:58:24  <mbalho>fotoverite: i guess voxel.js aint bad
22:58:43  <fotoverite>You just need good branding
22:58:53  <st_luke>I worked for a company named voxel
22:59:03  <mbalho>st_luke: did they suck
22:59:22  <st_luke>mbalho: nah they were cool, but they got bought and the new company sucked
23:00:04  <mbalho>OK IT IS NOW CALLED VOXELJS
23:00:26  <CoverSlide>that's how most acquisitions go
23:00:31  <fotoverite>VOXELJS
23:03:17  <CoverSlide>This aaron patterson dude seems to be busy
23:03:51  <CoverSlide>the rails / security board was all but dead then bam 3 new ones discovered in the last month
23:09:46  <mbalho>substack: for the perlin noise module to get better it could just generate all the chunks up front i guess
23:09:52  <mbalho>substack: but it works now so whatever
23:15:48  * st_lukequit (Remote host closed the connection)
23:31:50  * yorickquit (Remote host closed the connection)
23:35:08  <mbalho>firefox lets you right click during pointerlock...
23:35:15  <mbalho>well it opens up the right click dialog
23:35:17  * st_lukejoined
23:35:26  <mbalho>i bet i can preventDefault
23:43:46  <chrisdickinson>mbalho: https://developer.mozilla.org/en-US/docs/Mozilla_event_reference/contextmenu
23:44:19  <chrisdickinson>think that should be part of pointer-lock or no?
23:44:33  <chrisdickinson>(i'm leaning towards handling that elsewhere, but it is kind of a gotcha)