00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:05:17  * AndChat648704quit (Ping timeout: 255 seconds)
00:33:02  * saijanai_quit (Quit: saijanai_)
00:37:29  * jez0990_joined
00:43:07  <substack>isaacs: with this url: http://registry.npmjs.org/-/all?stale=update_after&startkey=$DATE
00:43:24  <substack>I'm sending Date.now() for $DATE but it's sending me seemingly all the data
00:44:33  <mbalho>is that a view or a list
00:46:57  <mbalho>it is a list function that uses this view http://isaacs.ic.ht/registry/_design/app/_view/listAll
00:48:00  <mbalho>the key of listAll is doc._id anyway, not even a timestamp
00:48:31  <mbalho>http://isaacs.ic.ht/_utils/document.html?registry/_design/app
00:48:55  <substack>was just going off the route I found in npm-registry-client
00:50:16  <isaacs>substack: hmm... i'm not sure how that works.
00:50:42  <isaacs>substack: because that's definitely not how it works when npm does it
00:50:47  <isaacs>substack: ie, it doesn't get all the data
00:51:03  <mbalho>substack: what query are you trying to perform
00:53:41  <rvagg>substack: you're missing 'since' in your URL
00:53:55  <rvagg>substack: e.g. http://registry.npmjs.org/-/all/since?stale=update_after&startkey=1356828000000
01:04:27  <isaacs>oh, right
01:04:32  <isaacs>you need the "since" bit
01:06:34  * jez0990_quit (Ping timeout: 260 seconds)
01:10:39  * shuaibquit (Quit: Textual IRC Client: http://www.textualapp.com/)
01:17:35  * lyaunzbejoined
01:18:11  * xaqjoined
01:26:09  * tilgoviquit (Read error: Operation timed out)
01:39:40  <substack>aha
01:40:11  <substack>rvagg: yep that did the trick, thanks!
01:40:47  <rvagg>you're re-implementing TJ's npm-search I take it?
01:41:20  <substack>this one keeps the records in memory
01:41:27  <substack>it's for the browserify.org search engine
01:41:57  <rvagg>mm, I'm planning on doing something similar for Ender
01:42:04  <substack>oh neat
01:42:21  <substack>http://browserling.com:9009/search
01:45:24  <rvagg>substack: how are you tagging "modules known to work with browserify"?
01:45:46  <rvagg>I don't see anything specific in package.json that indicates that or am I missing something?
01:46:15  <substack>testling-ci badges
01:48:27  <defunctzombie>still can't search for num :p
01:48:29  <defunctzombie>hahahaha
01:48:52  <defunctzombie>isaacs: thoughts on "require('process');" to get away from the globals? would be nice to get that into 0.10
01:49:10  <defunctzombie>technically could even be backported to the previous versions without any issues I believe
01:49:52  <defunctzombie>substack: are the browser badges just made up currently?
01:50:08  <substack>yes
01:53:11  <defunctzombie>haha
01:54:14  * xaqquit (Remote host closed the connection)
01:55:47  * xaqjoined
02:10:03  <mbalho>guybrush: how do you manage mesh chunking?
02:19:55  * xaqquit (Remote host closed the connection)
02:40:24  * stlsaintquit (Ping timeout: 264 seconds)
02:50:39  <chrisdickinson>aw, https://github.com/chrisdickinson/ancestors isn't showing up in the browserify search
02:54:00  <substack>it's not continuously updating yet
02:54:45  <substack>and the badges aren't joined to the repo data yet either
03:04:10  * jibayquit (Read error: Connection reset by peer)
03:22:02  * yorickquit (Quit: going to bed.)
03:45:00  <guybrush>mbalho: we use runlength-encoding to store every chunk on the backend, currently we use a global material/color-map which we use to create meshes out of the unpacked chunks (thats the short answer)
03:45:11  <guybrush>the hardest problem really is to stay low with memory
03:46:11  <guybrush>and maybe netcode and physics haha
03:47:27  <guybrush>not linear algebra itself, just to get everything working in my head it took some time lol
03:49:28  <mbalho>guybrush: im finding there are no good "responsive" feeling player controls for three.js :(
03:49:57  <guybrush>responsive feeling?
03:50:05  <mbalho>like... the player physics
03:50:11  <mbalho>jumping, gravity, collisions
03:50:18  <guybrush>did you look into cannon.js?
03:50:23  <guybrush>its pretty great
03:51:02  <guybrush>but we decided to roll our own just for fun, we would have to make cannon.js play nice with our terrain-stuff anyway
03:51:13  <guybrush>also we want like 200 things at once on the screen
03:51:28  <mbalho>yea
03:51:29  <guybrush>but really cannonjs is very cool
03:51:40  <mbalho>i was looking into how the pointerlock demo works, its interesting
03:51:42  <mbalho>https://github.com/schteppe/cannon.js/blob/master/examples/js/PointerLockControls.js#L157
03:51:54  <mbalho>they hooked into the pointerlockcontrols.js that mrdoob wrote for three.js
03:51:54  <guybrush>i dont like pointerlock :p
03:52:01  <guybrush>its really not what i need at all
03:52:13  <mbalho>and they pass this in https://github.com/schteppe/cannon.js/blob/master/examples/threejs_fps.html#L195
03:52:26  <mbalho>guybrush: your controls wont be first person?
03:52:34  <mbalho>first person shooter*
03:52:39  <guybrush>it will be third+first
03:52:45  <guybrush>just like in wow or whatever
03:53:08  <mbalho>ahh gotcha
03:53:09  <guybrush>dont know how we implement ranged aiming though
03:53:16  <guybrush>like when you are in third, how do you aim
03:53:23  <guybrush>will be interesting problem to solve
03:53:30  <guybrush>i dont want to implement autoaim
03:53:38  <guybrush>just isnt fun to play
03:54:04  <guybrush>ahh wait
03:54:08  <guybrush>there is another good thing
03:54:22  <guybrush>check out https://github.com/jeromeetienne/microphysics.js
03:54:29  <guybrush>its _really_ simple and good stuff
03:54:57  <mbalho>sweet
03:55:11  <guybrush>i dont mean microphysics itself (i dont like the threejs-wrapper) the good thing is https://github.com/jeromeetienne/microphysics.js/blob/master/codeflow-olddemo/physics.js
03:55:21  <guybrush>this is very sexy, since its very simple and nice
03:55:31  <guybrush>very good to learn basics
03:55:45  <mbalho>yea the tquery stuff sucks
03:55:52  <guybrush>ye i dont like it
03:55:53  <guybrush>at all
03:56:01  <guybrush>but jerome is pretty awesome guy :)
03:56:52  <guybrush>also when you start coding your network, you will want to look at http://gafferongames.com/game-physics/networked-physics/ :D
03:56:54  <mbalho>guybrush: so now i have one huge mesh but i need to add subdividing the mesh into chunks so that a chunk can be small enough to rerender within a frame or two when it gets modified
03:56:56  <guybrush>its mustread
03:57:08  <guybrush>right
03:57:23  <guybrush>we currently have 64� chunks
03:57:43  <guybrush>32� are faster but we want to be able to look REALLY far :D
03:57:46  <mbalho>loaded at all once or as you walk around?
03:57:47  <mbalho>ahh
03:57:55  <guybrush>so 32 chunks would just be too much meshes
03:57:58  <guybrush>in our case
03:58:10  <mbalho>the meshes would take too long to modify?
03:58:17  <mbalho>how big are your meshes roughly?
03:58:20  <guybrush>no we load the chunks in worker via ajax (just get the binary directly)
03:58:56  <guybrush>well we actually use a slightly modified version of the monoton mesher right now
03:59:45  <guybrush>so we have a 1024� world on the client with 64� chunks and we get to 500mb ram
04:00:00  <mbalho>ah
04:00:16  <guybrush>but i think its really dependent on what you want to do
04:00:17  <mbalho>guybrush: have you played with 'infinite' worlds?
04:00:35  <mbalho>loading chunks as you approach them, removing ones you go away from
04:00:44  <guybrush>yes we implemented that already
04:00:48  <guybrush>with a fog
04:00:54  <guybrush>so you cant see the edge
04:03:00  <guybrush>but thats really not the hard problem, i had really hard problems to get chunks/meshing right
04:03:13  <guybrush>i mean get it to an acceptable performance/memory footprint
04:03:44  <mbalho>how much different is it from something like https://github.com/mikolalysenko/mikolalysenko.github.com/blob/gh-pages/MinecraftMeshes/js/greedy.js
04:04:09  <guybrush>its about amount of vertices
04:04:18  <guybrush>and time it takes to create the mesh
04:04:31  <guybrush>it depends on how your volume looks like
04:04:43  <guybrush>sometimes greedy will be faster and sometimes monoton
04:05:06  * tilgovijoined
04:06:08  <guybrush>mikola has lots of theory written about these things on his blog
04:06:16  <mbalho>yea i read it all today :P
04:06:28  <guybrush>its better than harry potter!
04:06:28  <mbalho>is your stuff based on his monotone implementation?
04:06:33  <mbalho>hahah seriously
04:06:35  <guybrush>read all at once couldnt stop haha
04:06:56  <guybrush>yah we slightly adopted it for our chunk-format
04:08:00  <mbalho>so with a 64 chunk you can modify the underlying geometry and recalculate the mesh for the chunk fast enough for it feel fast?
04:08:28  <guybrush>riight we have some tools to switch fast, so we are not sure
04:08:43  <guybrush>we have only boxes running arround, so nothing feels really good right now :DD
04:09:01  <guybrush>but we think it will be ok with 64
04:09:36  <guybrush>its all about pros and cons, bigger chunks take longer to mesh, smaller chunks are limited in amount you can display at once
04:09:46  <guybrush>but we didnt do any culling stuff yet
04:09:57  <guybrush>(three does only frustum culling)
04:11:06  <guybrush>also we run into big problems with chunks containing multiple voxel-materials
04:11:18  <guybrush>i mean like wood water stone and stuff
04:11:21  <mbalho>yea
04:11:32  <mbalho>http://0fps.files.wordpress.com/2012/07/multitype.png?w=351&h=280
04:11:52  <guybrush>we didnt do any like that, so we just tried it somehow like we thought and its basically a big mess right now :D
04:12:03  <mbalho>haha
04:12:31  <guybrush>i mean we are both pretty much 3d nubs and dont know anything about opengl and stuff haha
04:13:05  <mbalho>that is the beauty of the web
04:13:47  <guybrush>lovely things pop up all over the web
04:13:51  <guybrush>like http://www.justin.tv/notlion/b/345778707
04:20:11  <mbalho>i figure if i make something cool at like 256^3 it will get popular and someone will pull request me a buncha custom shaders and shit
04:20:18  <mbalho>and then BAM 4096^3 :D
04:22:20  <guybrush>ye i will discuss with my mate, we should dev in opensource - somehow i think its the way to go
04:23:16  <mbalho>best plan is to get a really compelling release first
04:23:26  <mbalho>but with js its kind of dumb to not open source parts
04:23:33  <mbalho>view-source:
04:24:20  <guybrush>i hate to be dependent on money
04:25:13  <guybrush>oh checkout http://oneofthelast.com/
04:25:27  <guybrush>killerjim from #three.js is working on that
04:25:35  <guybrush>looks pretty awesome
04:25:56  <guybrush>he is also very open on how i does things
04:26:17  <guybrush>may want to ask him about all the problems you run into, hes very helpfull :D
04:27:02  <guybrush>he is coding the serverside part in c++
04:27:32  <guybrush>we are currently running everything in node :D
04:28:33  <guybrush>have already a proof of concept, with multiple server - with redis-pubsub and locking, but its preeetty hard problem
04:29:22  <guybrush>like handling of players running from one area to another each controlled by another server, pretty hard stuff for me at least to solve
04:30:49  <mbalho>that is my strong suit
04:31:00  <mbalho>the graphics stuff is all new to me though hehe
04:31:07  <mbalho>the zombie game looks awesome
04:31:36  * fotoveritejoined
04:31:40  <guybrush>my current stuff is modeled after http://ldc.usb.ve/~yudith/docencia/ci-4822/ADistributedArchitectureforMMORPG.pdf
04:33:45  <guybrush>anyway the most awesome thing i can think of is implementing a distributed game with p2p via webrtc
04:34:02  <guybrush>so one doesnt even have to run a server-farm or something
04:34:36  <guybrush>but i have strong feeling that this would be out of my range for my skills :D
04:35:10  <guybrush>everyone could contribute a part of the voxel-world haha
04:35:28  <guybrush>interplanetery voxelworlds even!
04:36:19  <mbalho>yea that would be sweet
04:36:30  <mbalho>even storing worlds offline in idb would be cool
04:36:56  <guybrush>but i dont have any plan on how one could implement anticheating in such a game
04:37:56  <guybrush>and how the netcode would look like in combination with physic, we worked like a month now fulltime on that problem even for simple server-client :DD
04:38:23  <mbalho>i think it would take some creative thinking in terms of game mechanics and goals
04:39:10  <guybrush>some much things to think about, prediction, lag-compensation, etc
04:49:07  * purrchanged nick to myrrh
04:52:59  <guybrush>also a thing im working on right now is picking, soooooo much awesome stuff one can do its like heaven really
04:53:45  <guybrush>learned about gpu-picking where you render the whole scene twice, one real scene and one where everything has a unique color
04:54:04  <guybrush>so you can tell very fast over which object the mouse is
04:54:15  <mbalho>whaaa
04:54:40  <mbalho>instead of raytracing?
04:54:42  <guybrush>cant believe i didnt do any of this 3d-stuff before, its just amazing cool things everywhere
04:54:46  <guybrush>right
04:54:52  <guybrush>raytracing is superslow :p
04:54:56  <guybrush>esp in threejs haha
04:55:01  <mbalho>ahh
04:55:05  <mbalho>woe http://dl.dropbox.com/u/5095342/WebGL/pickingLessonYUINav2.html
04:55:07  <guybrush>there is an octree-implementation
04:55:35  <guybrush>https://github.com/collinhover/threeoctree
04:55:38  <guybrush>this is _much_ faster
04:56:05  <guybrush>but the con is that this implementation is not sooooo good since he creates new objects everywhere, so its super expensive to move objects
04:56:34  <guybrush>so i spent like a week trying to make it faster after learning about gpu-picking :D
04:56:48  <guybrush>http://mrdoob.github.com/three.js/examples/webgl_interactive_cubes_gpu.html
04:56:57  <guybrush>this is gpu-picking implemented with three
04:57:34  <guybrush>they just render the whole scene on another canvas (which is not visible) where every box has a unique color
04:58:05  <guybrush>very sexy solution imho :D cant stop thinking about where i can use it, like everywhere haha
04:58:16  <mbalho>haha
04:58:26  <mbalho>i havent implemented voxel selection yet
04:58:38  <mbalho>or collision for that matter hehe
04:58:40  <guybrush>my plan is to do gpu-picking combined with raytracing
04:58:53  <mbalho>gpu pick the mesh and then raytrace the voxel or something?
04:59:00  <guybrush>like you pick with gpu first, than use raytracing on the picked object (chunk)
04:59:04  <guybrush>riight
04:59:12  <mbalho>haha we sound like game developers now
04:59:50  <guybrush>its the most awesome thing really, i dont even get much sleep the last view weeks - cant stop thinking about those things
05:00:27  * AndChat648704joined
05:02:50  <mbalho>substack: do you have webgl working on your laptop yet
05:06:14  <mbalho>guybrush: how do you deal with low fps frame skipping affecting rendering logic?
05:06:36  <guybrush>mh not sure what you mean
05:06:44  <guybrush>our approach is to implement all in workers but the renderer
05:06:52  <guybrush>so the main-thread really _only_ does rendering
05:06:59  <guybrush>everything else is done in workers
05:07:07  <mbalho>gotcha
05:07:22  <guybrush>so we are piping the websocket through right now
05:07:33  <guybrush>since firefox has no websockets in workers right now
05:07:36  <guybrush>or was it chrome
05:07:43  <guybrush>one or the other at least
05:07:47  <mbalho>ahh that sucks
05:08:07  <guybrush>its like an 8month pending issue
05:08:17  <mbalho>sounds about right
05:08:33  <guybrush>someone sent already a patch but they dont like it or something since its so much change
05:09:12  <guybrush>wellllll im not sure about using tcp-based network anyway
05:09:48  * AvianFlu_joined
05:09:56  <guybrush>since there is webrtc nowadays maybe we should try to use that, wouldnt be sooo much work to switch to udp
05:10:11  <guybrush>but first make everything else work :D
05:10:47  <guybrush>also i dont even have an idea how one runs webrtc on the server
05:12:28  * AvianFluquit (Ping timeout: 265 seconds)
05:51:30  * st_lukejoined
06:01:10  * AvianFlu_quit (Remote host closed the connection)
06:10:28  * stlsaintjoined
06:11:29  <Raynos>guybrush: webrtc on the server is an exercise in pain
06:11:38  <Raynos>easiest solution is node-webkit
06:16:19  <guybrush>ah ok, not far from just running the browser on the server :)
06:18:24  <guybrush>but i think websockets is just fine for networking a game, though there are lots of people who say everything but udp is wrong
06:19:19  <guybrush>i guess it also depends on the type of the game
06:21:26  <Raynos>well I want webrtc
06:21:33  <Raynos>because I want to build a minecraft clone
06:21:35  <Raynos>with no servers
06:21:36  <Raynos>just a website
06:21:38  <Raynos>and a buttn
06:21:44  <Raynos>that says "go online. make me the server"
06:21:47  <Raynos>it gives you a link
06:21:49  <Raynos>you share it
06:21:51  <Raynos>you play with friends
06:21:52  <Raynos>end.
06:22:09  <guybrush>sounds pretty great
06:22:23  <Raynos>it's also trivial to scale :P
06:22:27  <guybrush>right
06:22:30  <Raynos>this reminds me I need to test out chromium nightly
06:22:34  <Raynos>to see whether datachannels landed
06:22:50  <guybrush>but i dont know how one can make such ah thing cheat-proof
06:23:14  <guybrush>i mean when i play with my friends i usually trust them anyway so cheating is not a problem in the first place
06:23:32  <chrisdickinson>guybrush: did you see the shared context thing? http://developers.whatwg.org/the-canvas-element.html#dom-canvas-transfercontroltoproxy
06:23:48  <Raynos>guybrush: you dont
06:23:56  <Raynos>how do you make minecraft grief proof?
06:24:36  <chrisdickinson>(basically lets you throw the rendering thread into a web worker)
06:24:48  <guybrush>chrisdickinson: wooohaa
06:25:05  <guybrush>nah didnt know about that
06:25:15  <chrisdickinson>doesn't seem to be implemented anywhere yet, but hopefully soon
06:25:26  <Raynos>SOON
06:25:26  * jden|awaychanged nick to jden
06:25:28  <defunctzombie>isaacs: what is the recommended way to fork version something? lets say I fork a project at version 0.1.0 and I want to make my version 0.1.0-dz1 however I want that to be less than 0.1.1 of the real project
06:25:30  <guybrush>sounds badass lol
06:25:31  <Raynos>LIKE ES6 SOON
06:25:34  <Raynos>MEANING 2012
06:25:45  <Raynos>2022*
06:25:57  <guybrush>haha Raynos
06:26:12  <defunctzombie>isaacs: in debian packages this is done with 0.1.1~dz1 iirc which means that 0.1.1 > 0.1.1-dz1
06:26:17  <chrisdickinson>(was working on http://didact.us/fpsjs/ a while back, where the game thread was run in a worker, and issued delta state updates to the server (which issued deltas back))
06:27:23  <chrisdickinson>(http://neversaw.us:8000/games/b1852d2ba99f4918b9a6a8aa3d55859 , which assumes a mac laptop where two-finger scroll is available)
06:27:33  <defunctzombie>isaacs: oh I see, nvm I read up on the version docs here https://npmjs.org/doc/semver.html and it seems that using 0.1.1-dz1 < 0.1.1
06:27:54  <chrisdickinson>(cc mbalho: ^^)
06:28:09  <defunctzombie>isaacs: although 2.3.4-0 > 2.3.4 the docs say that is true
06:28:13  <guybrush>too bad i dont own a mac :p
06:28:17  <defunctzombie>which is a bit strange
06:28:46  <defunctzombie>so if the -<whatever> is a number then it is treated as such, but otherwise not.. hm
06:28:48  <defunctzombie>ok
06:28:48  <guybrush>seems like you are in godmode chrisdickinson haha
06:28:49  <chrisdickinson>D:
06:29:00  <chrisdickinson>guybrush: i never implemented player -> bullet collisions ;)
06:29:00  <defunctzombie>bit strange
06:29:03  <chrisdickinson>just bullet -> wall
06:29:11  <guybrush>ha
06:29:12  <chrisdickinson>+ explosion radius
06:29:31  <guybrush>have to read the blog
06:29:40  <chrisdickinson>it's a lil' incomplete
06:29:45  <guybrush>you stopped doing the game?
06:29:59  <chrisdickinson>took a breather, yeah. think i might revisit it in terms of tons of tiny browserify modules
06:30:07  <guybrush>ha
06:30:22  <guybrush>my thing is also browserified alltogether
06:30:28  <guybrush>every worker is a bundle
06:30:39  <guybrush>works pretty awesome
06:30:42  <chrisdickinson>scuttlebutt might be pretty ideal for the state replication, though i'd have to test to see
06:30:57  <guybrush>woah i have to look into scuttlebutt
06:31:29  <guybrush>but i think for such a thing its just not good, i want to keep it really simple
06:31:42  <guybrush>no framework whatsoever at all
06:31:58  <Raynos>chrisdickinson: this shit is cool
06:31:59  <chrisdickinson>oh, another nice read (cc mbalho again) http://docs.garagegames.com/tgea/official/content/documentation/Engine%20Overview/Networking.html
06:32:08  <chrisdickinson>Raynos: thanks!
06:32:25  <Raynos>guybrush: use libraries, use npm. If you build everything from scratch then sads all the days
06:32:50  <guybrush>Raynos: when i use any lib i have to read and understand it anyway
06:32:57  <guybrush>so i can just write those 20lines myself
06:33:02  <Raynos>meh
06:33:03  <Raynos>NIH
06:33:23  <guybrush>i am already using threejs
06:33:28  <chrisdickinson>Raynos: are you still on that site? i've been walking around trying to find you :|
06:33:28  <guybrush>and socketio shame on me
06:33:30  * defunctzombiechanged nick to defunctzombie_zz
06:33:37  <Raynos>what site
06:33:38  <Raynos>no im not.
06:33:42  <chrisdickinson>ah cool
06:33:44  <Raynos>guybrush: lulz.
06:33:49  <Raynos>threejs is cool
06:34:04  <chrisdickinson>yeah, this is using socket.io, and that's one of the #1 things i'm going to change
06:34:04  <guybrush>well in the end i really need only like 10% of it
06:34:12  <guybrush>i mean three
06:34:33  <guybrush>but its SOO great to learn all the things
06:34:39  <chrisdickinson>the thing that's been super interesting to me lately has been http://media.tojicode.com/zelda/lttp.html
06:34:55  <chrisdickinson>(along with http://media.tojicode.com/webgl-samples/tilemap.html)
06:34:59  <guybrush>chrisdickinson: ++
06:35:17  <guybrush>caught my eyes too
06:35:32  <guybrush>sadly toji works for google now, so he has only "20%" life now
06:35:57  <chrisdickinson>guybrush: slowly been gluing together in a generic, npm-able version here https://github.com/chrisdickinson/glsl-tilemap/blob/master/main.glsl
06:36:28  <substack>mbalho: no webgl doesn't work
06:36:37  <chrisdickinson>(tying it together with glslify and programify)
06:36:44  <guybrush>chrisdickinson: sweet stuff (i meant it!!)
06:37:23  <guybrush>though the whole glsl stuff is kind of a black box for me still :/ really have to dig deeper into this stuff
06:37:32  <Raynos>you guys are crazy
06:37:36  <chrisdickinson>(https://github.com/chrisdickinson/programify will take a glsl file and produce a node module that's require-able, and exports a program object with getters/setters for all of the attributes and uniforms)
06:38:14  <chrisdickinson>glsl is really neat. though i wish webgl supported geometry shaders
06:38:49  <guybrush>will this be updated sometime or is it not likely? i mean that webgl gets updated to better opengl
06:38:49  <chrisdickinson>(basically takes primitives and can subdivide them into more polygons on the gpu -- so for a voxel engine like minecraft, you could get away with just sending one vertex for each cube)
06:39:19  <guybrush>i read a lot about opengl and direct3d lately, still dont grasp how it really works :p
06:39:26  <chrisdickinson>not really sure -- it sounds like the webgl spec is sort of a "lowest common denominator" sort of thing, but i can imagine it getting built in as an extension
06:39:38  <guybrush>i see
06:39:49  <chrisdickinson>#webgl is a good place to hang out, though, fair warning, __doc__ can be a bit acerbic
06:40:41  <guybrush>another channel i have to idle and read :D
06:53:49  <chrisdickinson>http://open.gl/ is also a great guide
06:56:28  <guybrush>chrisdickinson: thx
07:21:01  * mikealquit (Quit: Leaving.)
07:28:43  * mikealjoined
07:28:48  <chrisdickinson>substack: you're probably already done with this, but i wrote an event delegation module: https://github.com/chrisdickinson/ever-delegate (wraps "ever" emitters)
07:32:23  <substack>not sure what event delegation is
07:35:20  <chrisdickinson>ah, basically adding a listener for an event higher on the dom tree that emits events that are triggered by elements matched by a given filter
07:36:27  <chrisdickinson>for instance, instead of adding a click listener for every internal <a> element on the page to do history manipulation, you can put one on the body element that matches "a[href^=/]"
07:38:24  * substackis now synchronizing the npm package list
07:38:35  <substack>chrisdickinson: oh that's pretty sweet
07:38:47  <chrisdickinson>thanks!
07:40:11  <chrisdickinson>the bonus is that when you introduce new <a> elements on the page, you don't need to add new listeners to them since the only needed listener is hanging out on the body element
07:40:34  <guybrush>do you guys use any bittorrent client-lib? i mean node/npm
07:42:25  * AvianFlujoined
07:42:39  <substack>now waiting for people to update npm packages
07:42:48  <substack>to see if my synchronization works
07:43:33  <chrisdickinson>substack: what are you thoughts on having an ever-api-compatible module for IE's attachEvent?
07:44:06  <chrisdickinson>(i wrote ever-delegate so that you'd be able to pass in "ever" emitters or this theoretical module's emitters)
07:45:05  <substack>YES it works
07:45:49  <substack>oh fuck actually I got the data structures wrong
07:49:36  <substack>chrisdickinson: could probably just patch ever to support IE
07:49:58  <substack>it already has testling-ci tests so we'll know when it works
07:50:20  <chrisdickinson>yeah, i was thinking that might be an option -- though it might be cool to just use aliases to compile old-ie specific bundles
07:50:30  <chrisdickinson>(maybe a bit of a pipe dream.)
07:59:46  * defunctzombie_zzchanged nick to defunctzombie
08:49:25  * dominictarrjoined
08:49:54  <substack>https://github.com/substack/npm-package-sync
08:50:57  <defunctzombie>that must be one hell of a package.json
08:51:00  <defunctzombie>run npm install on that beast
08:51:12  <substack>it's only 2.3 M with that example
08:51:26  <defunctzombie>of text
08:51:35  <defunctzombie>wonder what that gzips to
08:51:37  <defunctzombie>should be tiny
08:57:24  <dominictarr>substack: what information does it maintain about each module?
08:57:46  <substack>dominictarr: it saves the fields you specify in your filter function
08:57:55  <dominictarr>OH COOL
08:57:56  <substack>in the example in the readme, it saves name, description, and keywords
08:58:27  <dominictarr>... and it resyncs via the _changes feed?
08:59:09  <substack>it resyncs with http://registry.npmjs.org/-/all/since?startkey=$time
08:59:48  <substack>changes feed would be better
09:00:10  <dominictarr>so does it save the last time it accessed the list?
09:00:44  * AvianFluquit (Remote host closed the connection)
09:00:51  <dominictarr>there is an option to tell a couchdb view to include the current sequence number that the view was generated for
09:00:54  <substack>yes
09:01:06  <dominictarr>and then you can request the changes feed from that point.
09:01:07  <substack>it looks at the mtime of the packages.json file
09:01:51  <dominictarr>hmmm
09:02:17  <dominictarr>it would be better to save it explititly
09:02:18  <defunctzombie>you could just save it in a field so if the file is moved it still works... but whatevs
09:02:32  <substack>yes I'll do that
09:03:18  <dominictarr>this could be used to greatly improve the speed of npm install
09:03:54  <dominictarr>oh... and npm search
09:06:43  <defunctzombie>this is basically what apt-get update does
09:06:49  <defunctzombie>when it fetches lists of updated modules
09:07:04  <defunctzombie>s/modules/debs
09:07:43  <dominictarr>cept this is smarter than apt-get update
09:07:53  <dominictarr>that just seems to redownload the whole list.
09:08:02  <dominictarr>... in series
09:08:04  <defunctzombie>na, new versions get deltas
09:08:34  <defunctzombie>which is slower in some cases cause it leads to many more requests ironically haha
09:10:22  <dominictarr>can you link me to a description of how it works?
09:11:35  <substack>also taking the time from the res.headers.date
09:12:09  <substack>I lost some updates from clock skew testing
09:13:09  <dominictarr>that is much better
09:13:20  <defunctzombie>there doesn't appear to be much literature on the matter
09:13:27  <defunctzombie>http://manpages.ubuntu.com/manpages/natty/man1/debdelta-upgrade.1.html debdelta is related
09:13:31  <defunctzombie>but there are other things iirc
09:13:43  * AvianFlujoined
09:16:30  <guybrush>chrisdickinson: open.gl is really nice written, do you know whos the author?
09:17:05  <guybrush>want moar :D
09:23:53  <substack>how the fuck is quotemeta not on npm
09:24:09  <substack>I published that 2 days ago
09:24:24  <substack>or so I thought
09:26:03  <defunctzombie>soo many modules
09:26:07  <defunctzombie>forget to publish
09:26:10  <defunctzombie>#substackproblems
09:28:52  <substack>truth
09:30:12  <substack>at this rate, in perhaps just 6 or 8 more months there will be 4 authors with more than 200 packages
09:30:23  <substack>Raynos and dominictarr are pretty close!
09:31:22  <defunctzombie>damn
09:31:26  <defunctzombie>you guys are crazy
09:31:33  <substack>I wonder how this compares to other package ecosystems
09:31:39  <defunctzombie>this is why we need more github bots
09:31:44  * AvianFluquit (Remote host closed the connection)
09:31:44  <defunctzombie>more automated software development!
09:31:57  <substack>less of those please
09:32:00  <substack>I hate those fuckers
09:32:01  <defunctzombie>haha
09:32:09  <defunctzombie>they are terrible cause they do it poorly
09:32:12  <substack>they are so spammy when I have hundreds of repos
09:32:15  <dominictarr>git hub bots could be okay if there was a better api for them
09:32:22  <dominictarr>more like github plugins
09:32:23  <defunctzombie>they should be opt in
09:32:40  <substack>I like how the travis bot was folded into the ui
09:32:46  <defunctzombie>so I can have bots do travis updates (which again with blacklist vs whitelist versions) would not be an issue
09:32:53  <substack>the one that tells you if a pull req passed its tests
09:32:58  <dominictarr>there is actually a lot of would reviewing a pull request
09:32:58  <defunctzombie>yea
09:33:01  <defunctzombie>that one is great
09:33:28  <defunctzombie>but yea.. I would love for all sorts of cool bots
09:33:30  <dominictarr>s/would/work
09:33:34  <defunctzombie>like unused variable checker bots
09:33:39  <defunctzombie>better static analysis bots
09:33:49  <guybrush>global leaks detection
09:33:51  <defunctzombie>all the shit I need to do on my codebases but forget
09:33:51  <defunctzombie>yep
09:33:56  <defunctzombie>we have all those tools
09:34:04  <defunctzombie>they jsut need to download code and run the shits
09:34:13  <defunctzombie>maybe I will setup some for my repos at least
09:34:14  <dominictarr>travis4all was really annoying, and the human responsible never responded
09:34:19  <defunctzombie>yea
09:34:23  <defunctzombie>that was very bad execution
09:34:32  <defunctzombie>I am thinking I will setup a basic service
09:34:34  <defunctzombie>for opt in
09:34:39  <defunctzombie>for things like global leak detection
09:34:40  <guybrush>mocha has global-leak-detection built in, maybe this would make sense in tap too?
09:34:42  <defunctzombie>unused, etc
09:34:53  <defunctzombie>guybrush: you can do it without running anything actually
09:35:02  <substack>tap is already too magical
09:35:03  <dominictarr>would be better as a separate module
09:35:16  <substack>even though tap is one of the least magical test harnesses
09:35:19  <defunctzombie>it already exists as a separate module iirc
09:35:33  <defunctzombie>along with other static analysis things
09:35:34  <guybrush>i really like it, helped me a lot
09:35:41  <defunctzombie>well.. guess I have another project on the stack
09:36:25  <defunctzombie>package.json version checking
09:36:26  <defunctzombie>hahah
09:36:29  <defunctzombie>all sorts of goodies!
09:37:52  * defunctzombiechanged nick to defunctzombie_zz
09:39:16  <guybrush>niice maybe we get semver for git-dependencies in npm! https://github.com/isaacs/npm/issues/3014
09:39:19  * st_lukequit (Remote host closed the connection)
09:39:22  <guybrush>this would be pretty sweet!
09:40:14  <guybrush>though i doubt it can be implemented cleanly
09:40:53  <substack>so the other thing I'm thinking
09:40:57  <guybrush>it would be possible only with strict tag-managment
09:41:30  <substack>is maybe if testling-ci is a hit we can integrate a browserify.org style website into their local npm servers
09:42:18  <guybrush>i hope the testling-ci will get very popular, it will make the community go away from components :p
09:44:28  <substack>components could use testling-ci
09:44:35  <guybrush>just wanted to say the same
09:45:03  <substack>but this should make using npm for browser modules much more viable
09:45:08  <guybrush>ooohh another idea! the git log of package.json could be used to do semver for git-dependencies
09:46:14  <guybrush>or maybe not :D just put everything on npm
09:46:21  <substack>the other thing is that we'll need some clients for testling-ci PROFESH
09:46:30  <substack>to pay us cash monies
09:47:02  <substack>money for food, money for servers
09:47:11  <guybrush>fucking money
09:47:50  <substack>ug I still need to make web dashboards and junk for the PROFESH plans
09:53:38  * devaholicjoined
10:05:37  * tilgoviquit (Read error: Operation timed out)
10:31:48  <dominictarr>substack: just found regression in browserify
10:32:13  <dominictarr>require('..') should do the samething as require('../')
10:32:29  <substack>node didn't used to work that way
10:32:35  <dominictarr>that is how it works in node
10:32:45  <substack>that's how it works in node *now*
10:32:51  <substack>this wasn't always the case
10:32:54  <dominictarr>oh, since when?
10:33:04  <substack>not sure exactly but '..' used to not work
10:33:37  <dominictarr>hmm. I think I usually use require('..') for tests, etc
10:34:08  <dominictarr>has browserify changed recently in this area?
10:35:44  <substack>I don't think so
11:06:32  * shuaibjoined
11:20:06  <substack>https://github.com/substack/npm-package-search
11:24:02  * jibayjoined
11:26:39  * AndChat648704quit (Ping timeout: 260 seconds)
12:36:17  <substack>now with real ci badge results http://browserling.com:9009/search
12:40:07  <substack>all that's left is finishing the articles system
12:40:18  <substack>then it goes live on browserify.org
13:25:03  * dominictarrquit (Ping timeout: 245 seconds)
13:47:08  * yorickjoined
13:47:09  * yorickquit (Changing host)
13:47:09  * yorickjoined
14:35:50  * dominictarrjoined
16:32:05  * ralphtheninjaquit (Ping timeout: 265 seconds)
16:47:11  * defunctzombie_zzchanged nick to defunctzombie
16:50:29  * AvianFlujoined
16:50:49  <defunctzombie>dominictarr: substack is right, require('..') doesn't work in some cases. If it works now that would be new.
16:51:34  <defunctzombie>guybrush: you can already do this, if you push a tag with teh version you can just use #<tag here> and it works
16:51:45  <defunctzombie>guybrush: see this post http://shtylman.com/post/npm-git-with-the-program/
16:54:26  <CoverSlide>it works if you ln -s ../.. ...
16:54:39  <CoverSlide>oops
16:59:38  * dominictarrquit (Ping timeout: 245 seconds)
17:57:38  * shuaibquit (Ping timeout: 255 seconds)
18:07:13  * shuaibjoined
18:34:02  * st_lukejoined
18:53:10  <guybrush>defunctzombie: i mean semver
18:55:24  <defunctzombie>guybrush: no semver! pin your versions :p
18:55:32  <defunctzombie>substack: https://github.com/NobleJS/setImmediate/blob/master/package.json#L33
18:55:41  <defunctzombie>might want those range changes before it gets out of hand :)
18:55:42  <guybrush>nah semver is pretty awesome, its huge win
18:55:52  <defunctzombie>guybrush: it is terrible actually
18:56:00  <defunctzombie>it causes more pain than it solves
18:56:14  <defunctzombie>guybrush: if you don't pin and you come back to your repo months later
18:56:25  <defunctzombie>you have no good way of getting the same code and deps you had at the time
18:56:30  <guybrush>its ok when everyone uses versions correctly :D
18:56:38  <defunctzombie>no, it isn't even then
18:56:43  <guybrush>i.e. not breaking api with minor versions
18:56:47  <defunctzombie>it isn't about some bugfix or api breakage
18:56:53  <defunctzombie>any change can and will break things
18:56:56  <defunctzombie>it is about maintenance
18:57:07  <defunctzombie>and knowing that when you get a copy of the code you get a copy of the code
18:57:25  <defunctzombie>and not some range of potential copies
18:58:18  <guybrush>right i get your point
18:58:49  <defunctzombie>guybrush: in their rush to think about bugfixes and other nonsense people forget about those things
18:59:13  <defunctzombie>a bugfix means nothing if the bug was never exposed by your module in the first place
18:59:23  <guybrush>semver only works when devs are perfect and dont make failures :D
18:59:24  <defunctzombie>it is more important to be consistent and deterministic
18:59:35  <guybrush>but the thing is
18:59:36  <defunctzombie>guybrush: right... and since we all live in the real world
18:59:43  <guybrush>it really saves workinghours
18:59:44  <guybrush>a lot
18:59:52  <defunctzombie>I have not found that to be the case
18:59:55  <guybrush>since i dont have to update all the packages for a minor patch
19:00:01  <defunctzombie>I have actually found that the use of semver leads to more work
19:00:07  <defunctzombie>when random tiny shit breaks
19:00:09  <guybrush>update all packages do ah bumb and stuff
19:00:10  <defunctzombie>like a stray comma
19:00:18  <defunctzombie>guybrush: gotta stop thinking about it like that
19:00:29  <defunctzombie>just because a module released a new version doesn't mean you need that version
19:00:32  <defunctzombie>bugs are relative
19:00:45  <guybrush>what if i actually need the version?
19:00:51  <defunctzombie>if your module that depends on another never uses the part of the code that had the bug
19:00:57  <defunctzombie>or even used in in different ways to never expose the bug
19:01:03  <defunctzombie>then you gain only problems by updating
19:01:06  <defunctzombie>and no solutions
19:01:11  <defunctzombie>guybrush: then you need to update
19:01:12  <defunctzombie>and test
19:01:17  <defunctzombie>and be specific about it
19:01:20  <guybrush>there are really pros and cons, but i think towards your opinion now :D
19:01:23  <defunctzombie>semver is for human hinting
19:01:25  <defunctzombie>not for machines
19:01:29  <st_luke>just because apple released a new iPad doesn't mean you need that new iPad.
19:01:31  <st_luke>BUT I WANT IT
19:01:42  <defunctzombie>semver is about informing a person where relevant changes could be found
19:02:01  <defunctzombie>it is not about maintaining strict consistency nor about making guarantees about the "buginess" of code
19:02:03  <guybrush>oh yes for that it is really usefull indeed
19:02:21  <defunctzombie>one stray comma in a patch level fix and your stuff stops working in IE
19:02:30  <defunctzombie>and yes.. that is from real examples I have seen
19:02:42  <guybrush>well than we could drop version-numbers :D just use git-refs
19:03:20  <guybrush>because then we are crypto save
19:03:28  <guybrush>which is huge win
19:05:25  <defunctzombie>guybrush: I do that in some cases
19:05:38  <defunctzombie>with npm you need to be careful and make sure you still bump version in package.json
19:05:44  <defunctzombie>otherwise it won't fetch iirc
19:06:02  <defunctzombie>guybrush: version numbers are good for humans that is why we use them
19:06:10  <guybrush>right but my problem with that is still that i have to update a lot of packages
19:06:15  <guybrush>i mean that IS actual work
19:06:28  <guybrush>i would like .. need a coding-monkey to update all my packages
19:06:49  <guybrush>just to get a version-bump for a minor fix
19:07:07  <guybrush>maybe a script could solve that
19:08:05  <defunctzombie>guybrush: write a script
19:08:06  <guybrush>like `npm-upgrade <some-module> <from semver> <to some specific version>`
19:08:15  <guybrush>i will try
19:08:18  <defunctzombie>it is a very simple script to write
19:08:23  <guybrush>true
19:08:27  <defunctzombie>also.. remember.. you may not _have_ to update
19:08:38  <defunctzombie>bugs are only bugs if they are exposed by the parent module
19:08:47  <defunctzombie>:) don't assume new means better
19:09:41  <guybrush>right you got me, in the end you really want to pin versions to be sure - all the extra work can be minimalized with better tools
19:10:05  <guybrush>still semver is usefull for package-discovery and info-stuff
19:13:00  <guybrush>oh and please if someone could review this patch and/or write just another better patch it would be awesome https://github.com/isaacs/npm/pull/2482
19:13:34  <guybrush>i think its not clean enough for isaacs or something, i dont want to waste any of his time haha
19:14:56  <guybrush>right now git-dependencies are not cached, which really hurts me since i use npm for deployment (maybe i should just switch to git? somehow i dont like to put everything in git...)
19:15:37  <guybrush>its not a big hurdle since i use my patched version of npm anyway, but i have to rebase every now and then haha... which sucks
19:16:38  * mikealquit (Quit: Leaving.)
19:18:03  <guybrush>it takes like a minute to deploy some of my projects lol :D (it really sums up)
19:26:15  <defunctzombie>heh
19:26:15  * dominictarrjoined
19:26:19  <defunctzombie>I think they are working on that
19:29:37  <guybrush>oh then nvm
20:19:13  * lyaunzbequit (*.net *.split)
20:19:13  * chapelquit (*.net *.split)
20:19:13  * sorensenquit (*.net *.split)
20:19:13  * niftylettucequit (*.net *.split)
20:19:27  * lyaunzbejoined
20:20:07  * sorensenjoined
20:22:07  * chapeljoined
20:22:45  * niftylettuce__joined
20:37:27  * stlsaintquit (Ping timeout: 260 seconds)
20:47:44  * AndChat648704joined
20:57:56  * shuaibquit (Quit: Textual IRC Client: http://www.textualapp.com/)
21:10:53  <mbalho>chrisdickinson: with this i have kind of crappy controls http://maxogden.github.com/blocking
21:11:24  <mbalho>chrisdickinson: and i do collisions via raytracing in only one direction
21:11:53  <mbalho>chrisdickinson: im working now on chunking my voxel meshes up so they can be editable
21:11:57  * chrisdickinsonnods
21:12:07  <mbalho>chrisdickinson: do you have any suggestions on techniques i can use to improve these ?
21:12:11  <mbalho>improve/implement
21:12:19  <mbalho>im noob at graphics programming :)
21:12:21  <chrisdickinson>(did you see that http://open.gl link from earlier?)
21:12:31  <mbalho>oooh
21:12:56  <mbalho>so i think i get that stuff at a conceptual level
21:13:15  <mbalho>now im getting into physics and collisions and player controls
21:13:29  <substack>sweeeet
21:13:52  <mbalho>substack: does your chrome have pointer lock? i can add a fallback so you can play with it if you dont have pointer lock
21:14:15  <substack>no pointer lock here
21:14:20  <substack>pointer lock is pretty uncommon
21:14:31  <substack>few people run bleeding edge browser builds
21:14:42  <mbalho>it is out on chrome and firefox stable im pretty sure
21:14:49  <mbalho>you just use linux and have old shit all the time because of reasons
21:14:49  <substack>I can upgrade though but it's really cumbersome
21:14:50  <chrisdickinson>(also, have you played with the webgl inspector?)
21:14:56  <substack>auto-update doesn't work on linux
21:14:58  <mbalho>chrisdickinson: yea i saw it the othery day, super awesome
21:15:33  <mbalho>chrisdickinson: the talk from google IO 2011 where the guy from the webgl chrome team did the 'lets draw 1000 objects' talk
21:15:41  <mbalho>www.youtube.com/watch?v=rfQ8rKGTVlg
21:17:07  <mbalho>substack: yea it out in current stable chrome and FF, i bet there is an easy way to get one of them
21:20:21  <mbalho>chrisdickinson: so i have a big ole 1D array with meshed voxel data from https://github.com/maxogden/voxel
21:20:37  <chrisdickinson>do you have it unmeshed as well?
21:20:38  <mbalho>chrisdickinson: but what i need to do now is take my source data and mesh it into chunks that are relatively small, like 16^3
21:20:56  <mbalho>chrisdickinson: yea look at the .geometry functions in voxel
21:22:13  <mbalho>chrisdickinson: so im gonna have terrain data in memory that gets split into chunks and then meshed and rendered
21:22:24  <mbalho>chrisdickinson: gotta tune the chunk size once i get it goin
21:22:26  <chrisdickinson>is the voxel data assumed to be aligned to world coords?
21:22:31  <mbalho>yea
21:22:36  <chrisdickinson>neat
21:22:52  <chrisdickinson>and is the voxel terrain size powers of 2 in dimensions?
21:22:54  <mbalho>chrisdickinson: what i havent figured out is how to implement a CRUD api for voxels on the colleciton of meshes
21:23:09  <mbalho>chrisdickinson: not necessarily, it can be any dimensions
21:23:23  <chrisdickinson>it might be best, you can avoid divs / muls if it's power of two
21:23:32  <chrisdickinson>(this is the same reason opengl textures are power of two)
21:23:39  <mbalho>chrisdickinson: it will always be a regular rectangular prism though
21:23:54  <chrisdickinson>(you can just get away with bit shifts to index into a particular dimension)
21:24:06  <mbalho>ooh
21:24:45  <chrisdickinson>basically you want to take your position and the timestep vector and see what voxels are "hit" by that ray
21:25:48  <mbalho>for player collision on the terrain should i just cast a buncha rays?
21:25:59  <chrisdickinson>more or less, a ray per physics step
21:26:09  <chrisdickinson>so, 1 ray for each moving entity
21:27:31  <mbalho>i implemented something like that the other day back when i was using individual cubes for each voxel and hitting a wall was weird
21:27:50  <mbalho>i kept the previous position on each axis before updating
21:27:51  <chrisdickinson>you *could* also cast N rays per physics step by transforming the forward momentum to a unit vector, treating dt * vec as the full step, and doing steps of (i * dt/N * unitvec)
21:28:08  <mbalho>then after applying velocity to the position i would raycast and revert position on each axis that had a collision
21:28:12  <chrisdickinson>(which ideally gives you one voxel at a time)
21:28:42  * chrisdickinsonnods
21:28:57  <mbalho>the revert position approach worked sort of but i couldnt walk diagonally against a wall
21:29:01  <mbalho>i would just stick to it
21:29:02  <mbalho>it was weird
21:29:03  <dominictarr>chrisdickinson: speaking of casting rays...
21:29:11  <dominictarr>check this out http://www.youtube.com/watch?v=EtsXgODHMWk
21:29:21  <mbalho>chrisdickinson: is 'dt' shorthand for delta?
21:29:34  <chrisdickinson>dominictarr: oo!
21:29:43  <chrisdickinson>mbalho: yeah, the time delta from the last frame
21:30:36  <dominictarr>light travels at about a foot per nanosecond
21:30:48  <mbalho>my beard grows 5 nanometers per second
21:31:01  <chrisdickinson>mbalho: so my collision detection for my fps is all here: https://github.com/chrisdickinson/fpsjs/blob/master/media/js/game_defs.js#L490
21:31:10  <mbalho>got a demo link?
21:31:15  <chrisdickinson>i'm ignoring the Y delta
21:31:21  <dominictarr>I'm sure it grows much faster than that
21:31:47  <substack>mbalho: false
21:31:47  <chrisdickinson>mbalho: http://neversaw.us:8000/games/bd9e9861a9d04e0b3cbac3c4a11e396
21:31:52  <substack>that's only 0.006 m / year
21:31:57  <substack>or 0.6 cm
21:32:36  <substack>it's probably around 500 nanometers per second
21:32:53  <substack>beardmath
21:32:56  <mbalho>haha this game rules
21:33:19  <dominictarr>mbalho: if you beard grew that slowly, you'd still be cleanshaven
21:33:42  <mbalho>chrisdickinson: the doom style walking physics are rad
21:33:46  <chrisdickinson>thanks :D
21:34:02  <chrisdickinson>mbalho: so the only collisions implemented are player/wall and projectile/wall + explosion
21:34:26  <mbalho>chrisdickinson: i get a little drag against the walls when i change direction but it isnt bad
21:35:02  <mbalho>ok i gotta move to a indoor cafe my fingers are freezing, bbl
21:35:07  <chrisdickinson>cool cool
21:35:22  <substack>Uncaught TypeError: Cannot call method 'clearColor' of null
21:35:42  <chrisdickinson>substack: chrome? ff?
21:35:49  <substack>chrome
21:36:03  <defunctzombie>substack: https://github.com/substack/testling-server-example fuck yea
21:36:11  <chrisdickinson>hmm!
21:36:18  <substack>defunctzombie: still debugging it
21:36:22  <chrisdickinson>it's pretty old code at this point, and needs revisiting
21:38:34  * owen1quit (Ping timeout: 260 seconds)
21:40:02  <dominictarr>is there documentation for the error codes net produces?
21:40:56  * ralphtheninjajoined
21:43:26  <dominictarr>ralphtheninja: I flew over sweden the other day!
21:43:34  <dominictarr>waved out the window
21:43:37  <dominictarr>did you see me?
21:47:14  * elliottcablechanged nick to nunoit
21:50:49  * st_lukequit (Ping timeout: 260 seconds)
21:52:07  * owen1joined
21:53:02  * st_lukejoined
21:54:02  * mikealjoined
21:55:43  <substack>mikeal: it seems that when I .destroy() a request handle the connection stays half-open
21:56:06  <mikeal>hrm....
21:56:54  <substack>I'll try to write a failing test
21:56:56  * nunoitchanged nick to elliottcable
21:58:20  <mikeal>i'm wondering if it's an issue in core http client
21:58:27  <substack>possible
21:58:48  * owen1quit (Ping timeout: 265 seconds)
21:59:13  <mikeal>we *shouldn't* need to .destroy() the underlying socket, we should be able to simply close the http client.
21:59:25  <mikeal>in fact, fucking around with the socket is bad practice and could mess up the pooling logic
21:59:44  <substack>fuck pooling
21:59:47  <substack>that shouldn't be in core
21:59:47  <substack>at all
21:59:49  <mikeal>but if there's a bug, there's a bug
21:59:55  <mikeal>i actually agree
22:00:09  <substack>pooling creates bugs
22:00:19  <mikeal>ClientRequest should have a getConnection(host, port, cb) method
22:00:26  <mikeal>and you can add pooling to that if you wnat
22:00:32  <mikeal>get it out of core
22:00:32  <substack>when too many connections are open requests STOP going out
22:00:42  <substack>that is such a giant bug
22:02:10  <mikeal>they wait, they don't necessarily "stop"
22:02:23  <mikeal>let's float this idea with @isaacs
22:03:11  <substack>yes but if your connections stay half-open because the server doesn't close them
22:03:19  <substack>and you can't .destroy() them
22:03:25  <substack>or you try to make too many outgoing connections
22:03:28  <substack>then your program stops working
22:04:04  <substack>whenever I have these issues
22:04:11  <substack>adding http.globalAgent.maxSockets = Number.MAX_VALUE to my program fixes everythign
22:04:35  <substack>I should never need to do that
22:07:51  <mikeal>are you sure that half open connections clog the pool?
22:08:09  <substack>yes
22:08:29  <mikeal>grrrr
22:08:32  <substack>core http is far too magical about this crap
22:08:49  <substack>it should just be a tcp stream
22:08:59  <substack>just push keep-alive to userland
22:09:07  <mikeal>everyone seems to think node is built out of steel and concrete, but it's more like toothpicks and spit
22:09:48  <mbalho>shhh dont say that our VCs will give us less money
22:10:27  <mikeal>we're still better than almost everyone else, so it guess it doesn't matter :)
22:14:34  * stlsaintjoined
22:24:17  * nk109quit (Quit: Computer has gone to sleep.)
22:24:52  * owen1joined
22:45:55  <defunctzombie>substack: you know my ideal testing harness and environment? basic test('name', function(done) { }); that allows me to use the builtin assert
22:45:56  <defunctzombie>that is it
22:46:41  * owenb_changed nick to owenb
22:46:47  <defunctzombie>it can output however it wants, it can do whatever it wants, but as long as it is that easy for me to write my tests then all is well :)
23:06:13  <mbalho>chrisdickinson: have you seen pocoo.org/~mitsuhiko/webglmc/
23:06:29  <mbalho>chrisdickinson: dude rolled his own everything in coffeescript, no frameworks
23:06:52  <mbalho>chrisdickinson: makes it hard to read but im interested in his chunk management code which looks reusable once i get it modularized
23:10:59  <mbalho>chrisdickinson: and this look cool https://github.com/mitsuhiko/webgl-meincraft/blob/master/src/world.coffee#L279
23:38:54  <Raynos>jden: ping
23:47:12  <dominictarr>substack: writing a module to stream between tabs
23:47:48  <dominictarr>I got it working... but trying to think of ways to test
23:48:28  <mbalho>spawn('open', [testurl1, testurl2])
23:50:25  <dominictarr>if possible, a way that could run on testling
23:50:56  <dominictarr>maybe iframes
23:51:19  <mbalho>browserify runInNewContext
23:52:41  <dominictarr>ah, yes