00:00:01  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:04:35  * thl0changed nick to thl0_zz
00:05:05  * dguttmanjoined
00:06:42  <Raynos>oh hi
00:12:09  <ralphtheninja>chrisdickinson: I like your 3d spatial stuff!
00:12:16  <chrisdickinson>thanks!
00:12:41  <ralphtheninja>is there any idea behind having aabb.union() return null instead of always doing the union?
00:15:03  <chrisdickinson>ralphtheninja: it gives you back an aabb that represents the space shared by both
00:15:10  <chrisdickinson>if there's no space shared, it returns none
00:15:57  <ralphtheninja>is there any special case where this information is useful?
00:16:08  <ralphtheninja>I'm just curious
00:17:17  * thatguydanjoined
00:21:46  * mikealjoined
00:23:33  <ralphtheninja>chrisdickinson: aaah what you're doing is actually the intersection, now I get it
00:24:51  * mikealquit (Client Quit)
00:25:11  <ralphtheninja>chrisdickinson: when I think of union I think of A U B: http://en.wikipedia.org/wiki/Venn_diagram
00:25:19  <chrisdickinson>aah
00:25:29  <chrisdickinson>my set math terminology is pretty bad ):
00:25:42  <chrisdickinson>i should update that
00:25:45  <ralphtheninja>it should be intersection
00:25:53  <chrisdickinson>cool, thanks!
00:25:56  <ralphtheninja>np :)
00:26:43  <ralphtheninja>chrisdickinson: but I think union should still be there, it's useful to be able to join two aabb's
00:27:45  * chrisdickinsonnods
00:27:46  * thatguydanquit (Ping timeout: 276 seconds)
00:27:51  <chrisdickinson>it really should support all the set logic
00:27:58  <ralphtheninja>chrisdickinson: sure
00:28:02  <chrisdickinson>*set operations, even
00:28:33  * thatguydanjoined
00:30:01  <ralphtheninja>chrisdickinson: kind of weird with a aabb symmetric difference :)
00:30:27  <chrisdickinson>haha, yeah
00:30:32  <ralphtheninja>you can't express the result as one aabb, the result must be a member of the set of all aabb's hehe
00:33:31  <ralphtheninja>chrisdickinson: and the relative complement would look like a rubics cube with missing pieces :) http://media.smashingmagazine.com/wp-content/uploads/2009/11/creative-way-to-show-a-missing-piece.jpg
00:35:32  * thatguydanquit (Ping timeout: 256 seconds)
00:37:11  * notalexgordon_joined
00:39:25  * dfgg_joined
00:43:15  * rvagg_joined
00:44:17  * rvaggquit (*.net *.split)
00:44:18  * sveisveiquit (*.net *.split)
00:44:18  * notalexgordonquit (*.net *.split)
00:44:18  * dfggquit (*.net *.split)
00:44:18  * substackquit (*.net *.split)
00:44:18  * owen1quit (*.net *.split)
00:44:19  * rvagg_changed nick to rvagg
00:46:10  * notalexgordon_changed nick to notalexgordon
00:48:14  * mikolalysenkojoined
00:59:15  * spionquit (Remote host closed the connection)
01:08:39  * yorickquit (Remote host closed the connection)
01:23:58  * mikolalysenkoquit (Ping timeout: 252 seconds)
01:44:40  * dominictarrjoined
01:47:00  * mikolalysenkojoined
01:47:27  <dominictarr>hey, does anyone have scripts for generating certs, ca, and keys?
01:48:17  <jesusabdullah>I'm almost surprised nobody's wrapped that up in a module yet
01:48:28  <jesusabdullah>!npm certificate
01:48:30  <_ddgbot>http://search.npmjs.org/#/certificate
01:48:52  <jesusabdullah>oh siiiick
01:49:17  <jesusabdullah>https://npmjs.org/package/pem "0.6 only" oh siiiick
01:49:26  <jesusabdullah>dominic you should fix this
01:49:27  <jesusabdullah>for the good of nodekind
01:52:12  <Raynos>defunctzombie: https://github.com/Raynos/tryme/commit/2487e97521fb8d3721122991e5be87545867d09b
01:54:51  <Raynos>dominictarr: that testling badge on observable would be nice ;)
01:55:11  <Raynos>chrisdickinson had a shell script thing for it
01:58:31  <dominictarr>Raynos: if there was a tool to do it, I would add it this second
02:05:16  * mikolalysenkoquit (Ping timeout: 276 seconds)
02:07:14  <Raynos>>_>
02:07:15  <Raynos>I see
02:07:19  <Raynos>what you are doing
02:10:19  * dominictarrquit (Quit: dominictarr)
02:13:43  * tilgovijoined
02:17:49  * mikealjoined
02:18:40  * mikealquit (Client Quit)
02:18:48  * shamaquit (Remote host closed the connection)
02:19:46  * dominictarrjoined
02:24:59  <Raynos>substack, defunctzombie: https://gist.github.com/Raynos/2f4d20593b0a02760467 :(
02:26:05  <Raynos>substack: https://gist.github.com/Raynos/aa1cb3078a9d1c81341c
02:26:12  <Raynos>loading the real process npm module seems to break module-deps
02:26:28  <thl0_zz>Raynos: substack: there is hope for making sourcemaps work better - I'll have to try it, but I think I can point the sourceRoot anywhere, so you could load the originals from a separate server if necessary
02:26:48  <thl0_zz>gotta go for now, but will experiment some more tomorrow
02:28:52  * ins0mniaquit (Ping timeout: 252 seconds)
02:33:46  * mikolalysenkojoined
02:33:52  * substackjoined
02:37:15  * sveisveijoined
02:38:36  * thl0_zzquit (Remote host closed the connection)
02:56:24  <Raynos>FFFFFF
02:56:57  <Raynos>browserify throws all kinds of unhandled crash my process exceptions
02:58:05  <Raynos>substack: https://github.com/substack/node-browserify/issues/316
03:01:28  <substack>can you include the source file in the first gist so I can duplicate it?
03:02:54  * mikolalysenkoquit (Ping timeout: 256 seconds)
03:15:38  <Raynos>substack: I have no idea what's going on. I'm using tryme on Raynos/graphics and can't reliably reproduce
03:16:22  <Raynos>dominictarr: https://github.com/Raynos/graphics/commit/52139efdc0ac0baa1e4fbe02d3c6b75a790b0231 :)
03:17:26  <Raynos>dominictarr: You may want to consider adding "Signal" which is a read-only value observable ( https://github.com/Raynos/graphics/blob/master/signal/signal.js ) and foldp ( https://github.com/Raynos/graphics/blob/master/signal/foldp.js ) to dominictarr/observable
03:17:37  <Raynos>in fact all my observable usage is read-only
03:17:37  * Domenic_quit (Read error: Operation timed out)
03:18:38  <dominictarr>Raynos: what does signal do?
03:18:46  <Raynos>sec
03:18:57  <Raynos>its a read-only api for observable
03:20:00  <dominictarr>no, it's too long. it must to more than that
03:20:39  <dominictarr>there is a bug in foldp
03:20:48  * dominictarrpart
03:20:54  * dominictarrjoined
03:20:58  <dominictarr>https://github.com/Raynos/graphics/blob/master/signal/foldp.js#L13
03:21:04  <substack>http://www.reddit.com/r/node/comments/1a23yp/what_database_should_i_use_with_node/
03:21:10  <substack>rvagg, dominictarr ^^^
03:21:19  <dominictarr>^ needs to call folder(input) to get the current state
03:21:31  <Raynos>dominictarr: https://gist.github.com/Raynos/5131676
03:21:53  <Raynos>dominictarr: https://github.com/Raynos/graphics/blob/master/signal/foldp.js#L27 I mutate closure bound state variable
03:22:03  <Raynos>So signal is a way to seperate the setting and getting / listening logic
03:22:10  <Raynos>so you can return an observable that only YOU can set and no-one else
03:22:29  <substack>all done for now: http://browserling.com:9088/mad-science
03:22:37  <substack>now back to finishing up pesky paperwork
03:22:47  <dominictarr>Raynos: signal is not an obvious name for that
03:22:51  <Raynos>It's kind of like https://github.com/domenic/pubit#why-is-this-cool where the idea is that you seperate the writing and reading in two seperate things and only return the readable thing
03:22:59  <Raynos>dominictarr: signal is a terrible name. My names suck
03:23:21  <dominictarr>what about calling it readonly
03:23:22  <dominictarr>since that is what it does
03:23:30  <dominictarr>readonly(observable)
03:23:51  <Raynos>I like my api :p
03:24:10  <Raynos>anyway the foldp function is more interesting then this signal function
03:24:12  <rvagg>I don't think I even have a reddit account
03:24:24  <dominictarr>also, don't call the argument a callback - that is misleading
03:24:38  <dominictarr>a callback takes a err arg, and is called exactly once
03:25:06  <Raynos>true
03:25:10  <Raynos>I'll rename it to generator
03:25:12  <Raynos>because that's what it is
03:25:39  <dominictarr>the generator does a set?
03:26:03  <dominictarr>why do this? https://github.com/Raynos/graphics/blob/master/signal/signal.js#L29-L34
03:26:13  <dominictarr>it's harder to read than just writing it inline
03:26:40  <Raynos>dominictarr: efficiency
03:26:52  <dominictarr>efficiency?
03:27:01  <Raynos>creating functions in functions is expensive
03:27:14  <dominictarr>can you show that in a benchmark?
03:27:21  <Raynos>sure
03:27:37  <Raynos>really I should be using a for loop there anyway
03:28:03  <rvagg>k, I have a reddit account now! upvote doods, http://www.reddit.com/r/node/comments/1a23yp/what_database_should_i_use_with_node/
03:28:21  <dominictarr>I mean, I could just write a static transform to turn a inline style into that style
03:28:30  <dominictarr>so I'm sure v8 could do that for me
03:29:59  <dominictarr>anyway Raynos - it's not even read only
03:30:19  <dominictarr>because you pass in the generator
03:30:52  <Raynos>I think its similar to dominictarr/from
03:31:01  <dominictarr>it's just an observable with a non-standard set interface
03:31:05  <Raynos>actually not even that -.-
03:31:10  <dominictarr>that throws on the normal one
03:31:41  <dominictarr>you can do exactly the same thing with a normal observable
03:32:01  <dominictarr>by going v = o(); v(initial); generator(v)
03:32:17  <Raynos>http://jsperf.com/lol-perf-12512512-326436
03:32:17  <Raynos>v8 inlined it really frigging fast
03:32:25  <Raynos>dominictarr: except then anyone can mutate it :P
03:32:31  <dominictarr>except for the bit that throws
03:33:45  <Raynos>http://jsperf.com/lol-perf-12512512-326436
03:33:53  <Raynos>So the bottleneck is forEach not function creation
03:33:54  <Raynos>got it :D
03:35:13  <dominictarr>Raynos: yeah, that difference isn't really big deal
03:36:28  <dominictarr>Raynos: so you want to name it private() then
03:36:50  <Raynos>that may be a better name
03:37:00  <Raynos>except the symbol private is a reserved keyword -.-
03:37:02  <dominictarr>Raynos: one of the biggest benefits of inlining is that you don't have to think of names for things
03:37:16  <Raynos>i dont like anonymous functions :p
03:37:20  <dominictarr>privateAcess(observ)
03:37:40  <dominictarr>why not? they speak for themselves?
03:37:53  <Raynos>because they lack performance compared to function declarations
03:38:12  <dominictarr>the difference is tiny
03:38:15  <dominictarr>as we just saw
03:39:08  <dominictarr>I mean - for any program - there is probably a much bigger performance problem than that
03:39:20  * jibayquit (Read error: Connection reset by peer)
03:40:05  <dominictarr>fix the big thing first, and the small things when they become the big things
03:45:43  <dominictarr>Raynos: look at this: if you do something that is slightly more realistic workload the difference between setCheap and setExpensive disapears completely! http://jsperf.com/lol-perf-12512512-326436/3
03:46:14  * mikolalysenkojoined
03:46:29  <Raynos>agreed :)
03:52:29  <dominictarr>Raynos: what do you use foldp for?
03:53:00  <Raynos>dominictarr: http://raynos.graphics-server.jit.su/react/mouse-clicks.js
03:53:12  <Raynos>to accumulate state without using a closure
03:53:44  <Raynos>well not without a closure, obvouisly the implementation of foldp uses a closure
03:53:59  <Raynos>to accumulate state
03:54:00  <dominictarr>but what is a case that actually use it for, that is not just a silly demo
03:54:02  <Raynos>is a better statement
03:54:31  <Raynos>dominictarr: https://github.com/Raynos/graphics/blob/master/examples/full/mario.js#L84
03:54:43  <Raynos>if I want to represent my application state as an observable
03:55:06  <dominictarr>what does that function do in english?
03:55:08  <Raynos>then being able to say "create an observable for state, observe some input, transform previous state and current input into current state"
03:56:01  <Raynos>its a way of modelling my state as a function from (previousState, currentInput) { return currentState } and then having an observable that represents my current state
03:56:09  <dominictarr>"given the current application state, and this event, create new application state"
03:56:15  <Raynos>yes
03:56:33  <Raynos>or whenever you want a transformation
03:56:34  <dominictarr>what does p stand for?
03:56:38  <Raynos>that needs to remember some kind of history
03:56:41  <Raynos>this is a good tool
03:56:42  <Raynos>fold past
03:56:51  <Raynos>for example if I have an observable that represents "additions events"
03:56:59  <Raynos>and I want to create an observable of the last three additions
03:57:55  <Raynos>then I would use foldp, foldp(input, function (triple, curr) { return triple.concat(curr).slice(-3) }, [])
03:58:18  <Raynos>I've used this for a UI that renders the most recent 3 comments
04:00:14  <dominictarr>I guess that works
04:00:54  <dominictarr>I am a little reluctant to use observable like that, because it then changes it into another thing that has to receive every event ever, to be correct
04:01:10  <dominictarr>it can't be a property (most recent value) any more
04:04:40  <Raynos>it doesnt need to receive every event ever
04:04:52  <Raynos>it only needs to receive some events
04:04:55  <Raynos>AND
04:04:59  <Raynos>it's responsible of remember
04:05:04  <Raynos>as many previous events as needed
04:05:16  <Raynos>now the way I use observable
04:05:23  <Raynos>is to create them all statically up front
04:05:38  <Raynos>so the every event ever problem is not a problem
04:06:04  <dominictarr>yeah, that is okay
04:06:37  * Domenic_joined
04:07:07  * defunctzombie_zzchanged nick to defunctzombie
04:10:04  <dominictarr>you know, though, returning objects is expensive - a lot more expensive that an anonymous function.
04:11:09  <dominictarr>returning a new object, that is.
04:11:49  <dominictarr>catch you guys later!
04:11:50  * dominictarrquit (Quit: dominictarr)
04:12:23  * dominictarrjoined
04:12:41  <ralphtheninja>dominictarr: would scuttlebutt/expiry-model be suitable for gossiping like p2p network statistics gossip over udp?
04:12:59  <dominictarr>it's not designed for udp
04:13:08  <ralphtheninja>
04:13:20  <dominictarr>it's reconciliation protocol assumes a reliable stream
04:13:32  <dominictarr>you need totally different approaches for udp
04:14:12  <ralphtheninja>yeah, you need to keep the size of the information within the size of a udp package
04:14:50  <ralphtheninja>like small data that you can send to another peer without needing to wait for an answer, it gets there when it gets there, or it might get lost
04:15:26  <ralphtheninja>but we don't care since we are gossiping :)
04:17:58  <defunctzombie>Raynos: https://github.com/shtylman/tryme/pull/2#issuecomment-14694368
04:18:10  <defunctzombie>looks good, can you squash (remove error stuff as it isn't needed) and I will merge
04:18:49  <dominictarr>ralphtheninja: if you want to make sure that all the information arrives, you need naks or acks
04:19:08  <dominictarr>if you just keep on sending the latest, then that is simple
04:19:12  <ralphtheninja>dominictarr: aye, but sometimes you don't care about that
04:19:20  <dominictarr>indeed
04:19:27  <dominictarr>games often use udp
04:19:32  * HMquit (Ping timeout: 252 seconds)
04:19:46  <ralphtheninja>nods, for coordinate stuff etc
04:20:13  <Raynos>defunctzombie: remove what error stuff?
04:20:23  * mikolalysenkoquit (Ping timeout: 260 seconds)
04:20:27  <Raynos>i dont trust its not needed
04:20:28  <defunctzombie>Raynos: the temp string stuff for browserify
04:20:30  <dominictarr>like if an object is moving, just keep sending it's latest position
04:20:32  <Raynos>I dont trust browserify 2.0 :D
04:20:44  <defunctzombie>https://github.com/Raynos/tryme/commit/59cd5fbb489ed81e9269528b35e48058eda0abf9#L0R54
04:20:46  <defunctzombie>haha
04:20:48  <dominictarr>but if it stops moving, then you want to just send that one stop message
04:20:51  <defunctzombie>it doesn't throw errors now
04:20:58  <Raynos>FFFFF
04:20:58  <defunctzombie>er strings I mena
04:21:00  <defunctzombie>*mean
04:21:25  <defunctzombie>Raynos: anyhow, not important. if you want to leave it in, that is fine just add a comment why it was added
04:21:29  <Raynos>I got rid of that leading comment
04:21:39  <Raynos>and there is a comment
04:21:40  <defunctzombie>and squish all this into one or two logical commits
04:21:56  <defunctzombie>cool
04:22:03  <ralphtheninja>dominictarr: would be cool to hook up scuttlebutt with https://github.com/chrisdickinson/spatial-events, you could have REAL gossiping 'have you heard of the explosion in tokyo?'
04:22:07  <Raynos>https://github.com/Raynos/tryme/blob/master/bin/server.js#L54
04:22:13  <Raynos>I hate squishing
04:22:15  <Raynos>I always fuck it up
04:22:22  <defunctzombie>don't fuck it up :p
04:22:31  <defunctzombie>also, why do we have domains?
04:22:40  <Raynos>how I git?
04:22:46  <Raynos>because browserify 2 fucks you in the ass
04:22:47  <defunctzombie>https://github.com/Raynos/tryme/blob/master/bin/server.js#L54
04:22:55  <defunctzombie>yes, I know sometimes it is a string... why
04:22:58  <defunctzombie>haha
04:23:08  <Raynos>it crashes your process randomly
04:23:13  <defunctzombie>fair enough
04:23:23  <defunctzombie>lets add a comment for that so we can revisit in the future
04:23:28  <Raynos>Domains also crash your process randomly ;_;
04:23:32  <defunctzombie>wut
04:23:34  <defunctzombie>ok
04:23:38  <defunctzombie>I think safer to remove
04:23:44  <defunctzombie>domains are broken I think
04:23:47  * HMjoined
04:23:50  <defunctzombie>they are a stupid way to do things anyhow
04:23:52  <dominictarr>ralphtheninja: thats cool
04:24:02  <defunctzombie>Raynos: lets just remove that nonsense
04:24:08  <defunctzombie>and make browserify not shit itself
04:24:11  <dominictarr>ralphtheninja: you could make that a scuttlebutt
04:24:47  <defunctzombie>Raynos: I would rather not use domains and work to make the error logic better than to buy into what is super experimental and (no one uses) api
04:25:25  <Raynos>defunctzombie: then fix browserify https://github.com/substack/node-browserify/issues/316
04:25:41  <Raynos>not my problem
04:25:43  <Raynos>domains work for me
04:25:48  <Raynos>they are more reliable then browserify
04:26:15  <Raynos>https://github.com/shtylman/tryme/pull/2
04:26:17  <Raynos>its two commits now :D
04:26:33  <defunctzombie>Raynos: is that still happening? i.e. can you make a smaller issue to reproduce on browserify?
04:26:38  <defunctzombie>I have not seen such crashes
04:26:45  <defunctzombie>and I use it in various hot loading situations
04:26:59  <Raynos>it happened this evening
04:27:00  <defunctzombie>maybe we need to try/catch detective if that isn't happening
04:27:03  <Raynos>I dont care, domains ignore it
04:27:14  <Raynos>im trying to finish my mario demo
04:27:24  <Raynos>I definitely know `require('process')` from npm blows up
04:27:35  <defunctzombie>Raynos: I care, I would like to resolve the browserify issue, and we need a better issue ticket than "it just blows up"
04:28:01  <Raynos>:D
04:28:06  <Raynos>Ill give me more data
04:28:09  <Raynos>when I next see the bug
04:28:42  <defunctzombie>k
04:28:43  <defunctzombie>https://github.com/Raynos/tryme/commit/d2296830046edea88009b273c84d659c696c90b3#L1R37
04:28:48  <defunctzombie>y u no pin, jesus
04:28:50  <defunctzombie>anyhow, I will fix it
04:29:14  <defunctzombie>https://github.com/Raynos/tryme/commit/eab9d867ae84720cbfe03a0418861db4569c6fd7
04:29:21  <defunctzombie>this is a terrible commit message
04:29:22  <defunctzombie>wtf man
04:29:33  <defunctzombie>"remove reducible specific code"
04:29:36  <defunctzombie>is not even relevant anymore
04:30:17  <defunctzombie>why was tryme.js renamed to server? seems to serve no purpose
04:30:51  <defunctzombie>https://github.com/Raynos/tryme/commit/eab9d867ae84720cbfe03a0418861db4569c6fd7#L4R13
04:30:53  <defunctzombie>wtf is this?
04:31:13  <Raynos>its lsr
04:31:16  <defunctzombie>ok
04:31:21  <defunctzombie>what does that have to do with error handling?
04:31:23  <Raynos>recursive ls
04:31:26  <Raynos>nothing
04:31:36  <Raynos>i squashed the commit messages
04:31:38  <defunctzombie>then why the fuck is it in the error handling commit?
04:31:39  <Raynos>into meaningless goop
04:31:44  <defunctzombie>thanks.. very helpful
04:32:01  <Raynos>sec let me fix this
04:32:11  <defunctzombie>fix it some, I can unfuck the rest
04:32:20  <defunctzombie>I pretty much see what various things you were trying to do
04:32:31  <ralphtheninja>dominictarr: and I guess you can use scuttlebutt together with mux-demux too
04:32:47  <defunctzombie>it just isn't good to have commits like this because they cannot be reviewed very meaningfully
04:33:13  <ralphtheninja>dominictarr: just go with tcp for starters and keep the gossip on the same channel
04:33:44  <dominictarr>ralphtheninja: absolutely
04:33:57  <ralphtheninja>udp is optimization
04:34:18  <dominictarr>maybe
04:34:21  <Raynos>defunctzombie: I am a horrible git person
04:34:23  <dominictarr>in some cases
04:34:29  <ralphtheninja>LETS USE THE NET! :)
04:34:29  <LOUDBOT>GRANDPAS GUITARS
04:34:31  <Raynos>I also said I was going to hack on tryme so I did
04:34:35  <defunctzombie>Raynos: we can't all be perfect :)
04:34:50  <dominictarr>the thing that udp is great for, is multicast
04:34:54  <defunctzombie>Raynos: yes, and that I appreciate but we need to keep some sanity
04:34:57  <Raynos>there is a reason for the server file
04:34:58  <ralphtheninja>nodnod
04:35:06  <dominictarr>which is important
04:35:12  <Raynos>defunctzombie: https://github.com/Raynos/graphics-server/blob/master/index.js#L4
04:35:14  <dominictarr>basically, radio is multicast
04:35:19  <Raynos>so I can require the bin file without using process.argv
04:35:29  <dominictarr>intrinsically
04:35:34  <ralphtheninja>when is udp not an optimization? why would you choose it for another reason?
04:36:13  <defunctzombie>Raynos: ok, interesting ok. separate commit for just moving that would be nice, maybe it shouldn't live in bin then is my guess
04:36:17  <defunctzombie>I can fix that
04:36:20  <defunctzombie>mbalho: https://github.com/substack/node-browserify/issues/314
04:36:26  <defunctzombie>mbalho: check out some of the things tryme does
04:36:42  <defunctzombie>mbalho: you can accomplish some of htese things already by having the server bundle and send things back
04:37:03  <Raynos>defunctzombie: I dont know how to deal with implementing a bunch of features on a fork and then merging them in cleanly upstream in a batch
04:37:25  <defunctzombie>Raynos: the best way is to have good logical commits
04:37:42  <defunctzombie>Raynos: I often find I do separate pulls for larger changes
04:37:48  <defunctzombie>Raynos: instead of a burst all thing
04:37:54  <dominictarr>ralphtheninja: to be honest, I'm not an udp expert
04:37:56  <ralphtheninja>dominictarr: I guess when you don't need the receiver to acknowledge that information did arrive, then it's time to use udp
04:38:11  <dominictarr>but there are a bunch of algorithms that work well upd
04:38:19  <Raynos>defunctzombie: that works better but I started using and hacking on Raynos/tryme#master :p
04:38:34  <dominictarr>I have researched enough to know they exist, but not enough to understand them
04:38:45  <ralphtheninja>hell I'm no expert either, just trying to figure shit out :)
04:38:46  <defunctzombie>Raynos: what I usually do is go crazy with hacking, and then come back and make very clean commits
04:38:49  <dominictarr>then there is other stuff like reliable multicast
04:38:56  <defunctzombie>Raynos: I also make sure I have reasonable checkpoints
04:39:05  <defunctzombie>if I do have to diverge from the original plan
04:39:26  <defunctzombie>Raynos: it is very important to have good clean commits when doing pull requests
04:39:39  <defunctzombie>cause a pull request is also a burden on the reviewer and person accepting the code
04:39:41  * mikolalysenkojoined
04:41:14  <dominictarr>Also, do tests in a separate, earlier commit, so that you can easily watch the tests fail if you want
04:41:42  <Raynos>defunctzombie: I agree
04:42:00  <Raynos>except I fucked up :D
04:42:20  <defunctzombie>haha
04:42:24  <defunctzombie>https://github.com/shtylman/eve
04:42:30  <defunctzombie>gloriously simple dom events
04:42:40  <defunctzombie>another checkmark for a replaced jquery feature haha
04:42:52  <defunctzombie>just need a new name cause fucking npm eve is taken
04:43:00  <defunctzombie>dom-event
04:43:26  <defunctzombie>I need to make a career out of npm squatting #trololol
04:46:09  * dominictarrquit (Quit: dominictarr)
04:51:14  * dguttmanquit (Ping timeout: 245 seconds)
04:54:27  * tilgoviquit (Remote host closed the connection)
04:56:26  * mikolalysenkoquit (Ping timeout: 255 seconds)
04:59:37  * nk109quit (Quit: Computer has gone to sleep.)
04:59:43  * dguttmanjoined
05:01:25  * st_lukejoined
05:08:54  <Raynos>:D
05:09:03  <Raynos>defunctzombie: im sure there are 10 modules that do eve
05:09:16  <defunctzombie>Raynos: most certainly
05:09:17  * owen1joined
05:09:23  <Raynos>like substack/ever
05:09:28  <defunctzombie>too big
05:09:34  <Raynos>lol
05:09:38  <Raynos>I just use DOM4
05:09:41  <defunctzombie>nope
05:09:43  <Raynos>and dont support IE8 :p
05:09:51  <defunctzombie>haha
05:10:01  <defunctzombie>eve was easy enough to make
05:10:03  <defunctzombie>and works for all
05:10:31  <Raynos>fair enough
05:10:59  <Raynos>I finally finished my mario demo
05:11:01  <defunctzombie>I would have used ever if it wasn't trying to be all EventEmitter like
05:11:06  <Raynos>My conclusion is that Evan's canvas code is a clusterfuck
05:11:12  <defunctzombie>and add more code to my bundles haha
05:11:16  <defunctzombie>haha
05:11:57  <Raynos>http://raynos.graphics-server.jit.su/full/mario.js
05:12:01  <Raynos>arrows keys to play with mario
05:12:56  <defunctzombie>Raynos: awesome!
05:13:02  <defunctzombie>this is a great demo
05:13:46  <Raynos>now I just need to comment the hell out of it :p
05:13:50  <Raynos>maybe clean it up
05:13:51  <defunctzombie>haha
05:14:01  <defunctzombie>this is all built in regular tryme stuff?
05:14:32  <Raynos>I use `inspect()` function
05:14:56  <Raynos>https://github.com/Raynos/graphics/blob/master/examples/full/mario.js#L41
05:16:24  <defunctzombie>nice
05:20:43  * dguttmanquit (Quit: dguttman)
05:25:04  <st_luke>defunctzombie: heard you missed the robots today
05:26:31  * dguttmanjoined
05:29:08  <defunctzombie>st_luke: yea :'(
05:29:23  <defunctzombie>st_luke: fucking nyc first changed the days they hold the event
05:29:27  <defunctzombie>I failed to double check
05:30:41  <st_luke>oh man
05:30:45  <st_luke>now i dont feel as bad about sleeping through it
05:31:03  <defunctzombie>haha
05:32:38  * nk109joined
05:38:14  <Raynos>there are some crazy bugs in tryme :D
05:38:29  <defunctzombie>bugs are alway crazy \o/
05:38:33  <Raynos>Well actually I think this one is interactive / codemirror's fault
05:39:20  <Raynos>i.e. it goes into an infinite loop and then crashes my tab :)
05:39:45  <defunctzombie>haha
05:39:57  <defunctzombie>there isn't much interactive code hanging around
05:40:10  <defunctzombie>but it does need to be cleaned up some
05:40:16  <defunctzombie>was a bit of a mess
05:40:21  <defunctzombie>codemirror too
05:44:21  * mikealjoined
05:51:38  * dguttmanquit (Quit: dguttman)
05:57:59  * CoverSlidequit (Remote host closed the connection)
06:02:17  * mikolalysenkojoined
06:04:40  <Raynos>well my problem is commenting and uncommenting the // => statements
06:04:46  <Raynos>which causes somethign to spin loop my cpu
06:05:00  <rvagg>logo'd up: https://github.com/rvagg/node-levelup & https://github.com/rvagg/node-leveldown/
06:05:12  <pkrumins>Raynos: what are you working on?
06:05:26  <Raynos>restarting demo server
06:06:21  <Raynos>because I broke the demo D:
06:07:01  <pkrumins>ic
06:07:15  <Raynos>I'm working on porting Elm to javascript
06:07:17  * mikolalysenkoquit (Ping timeout: 248 seconds)
06:07:28  <Raynos>But in a broader sense I'm exploring writing FRP style applications
06:07:37  <Raynos>I'm also exploring abstracting away the DOM entirely
06:07:40  <pkrumins>ah
06:07:42  <Raynos>maybe also abstract away CSS
06:10:04  <Raynos>pkrumins: http://raynos.graphics-server.jit.su/full/mario.js
06:10:07  <Raynos>unbroke demo
06:10:50  * CoverSlidejoined
06:11:01  <Raynos>dominictarr: http://raynos.graphics-server.jit.su/full/mario.js added a bunch of comments, let me know what's not obvouis
06:11:15  <Raynos>please* if you have time to look at my things
06:11:22  <Raynos>juliangruber: ^
06:11:29  <pkrumins>can you actually change the code and the changes happen live?
06:11:44  * HMquit (Ping timeout: 252 seconds)
06:11:58  <juliangruber>Raynos: awsum!!
06:12:11  <juliangruber>now just prevent scrolling when using the arrow keys :D
06:12:51  <Raynos>thats a codemirror problem :P
06:12:57  <Raynos>pkrumins: yes
06:13:01  <juliangruber>I really like how that code looks
06:13:07  <Raynos>pkrumins: go fiddle with the constants
06:13:18  <Raynos>juliangruber: the display function is the best part
06:15:35  * HMjoined
06:15:40  <Raynos>BLARGH
06:15:47  <Raynos>The demo doesnt propagate changes >_<
06:16:11  <Raynos>defunctzombie: each block that's terminated by a `// =>` doesn't share updates with the blocks above it
06:16:33  <defunctzombie>Raynos: correct, only goes down iirc
06:16:41  <defunctzombie>Raynos: dom elements can be updated iirc tho
06:16:51  <Raynos>which means I cant edit my numeric constants in my mario demo
06:17:05  <defunctzombie>?
06:18:31  <Raynos>well try editing the numeric constants in http://raynos.graphics-server.jit.su/full/mario.js
06:18:39  <Raynos>like jump & gravity ones
06:18:46  <Raynos>the changes don't propagate to the mario demo
06:18:51  <Raynos>because there's an inspect block in between
06:19:39  <defunctzombie>Raynos: which constants?
06:19:42  <defunctzombie>what line?
06:19:55  <Raynos>defunctzombie: 98 & 104
06:20:20  * zero_coderjoined
06:20:24  <Raynos>i would expect that if you change those numbers
06:20:32  <Raynos>you alter mario's jumping behaviour correctly
06:20:58  <Raynos>except the block of code between rendering the inspection of the app state and the actual <canvas> has access to a different marioState variable
06:21:08  <Raynos>one that doesn't update when you edit line 98 & 104
06:21:26  <Raynos>in fact I have to remove the `inspect(marioState) // =>` on line 150 for the updates to propagate
06:22:51  <defunctzombie>should be the same mario state
06:23:28  <defunctzombie>hm
06:23:31  <defunctzombie>I think that used to work
06:23:37  <defunctzombie>http://tryme.jitsu.com/shtylman/typeahead/example/
06:23:43  <defunctzombie>when editing the middle input field
06:23:50  <defunctzombie>the value used to show on the last line
06:23:51  <defunctzombie>hm
06:25:32  <Raynos>yeah
06:25:34  <Raynos>not sure what broke
06:25:43  <Raynos>is that my PR ?
06:25:56  <Raynos>you havn't merged that yet :D
06:26:01  <defunctzombie>no, it isn't your PR
06:26:13  <defunctzombie>yea, I will merge it soon, in the middle of a movie :)
06:26:26  <defunctzombie>this is from some other change
06:26:41  <Raynos>well I'll mark it as an issue
06:27:21  <defunctzombie>I know what broke it if you want a hint
06:27:36  <defunctzombie>so now the "eval" happens inside of the browserify bundle
06:27:56  <defunctzombie>and I think that isn't holding the state between the different parts or some such
06:28:01  <Raynos>i see
06:28:12  <defunctzombie>or maybe when a section is eval'd the ones after need to be eval'd to
06:28:14  <defunctzombie>and that isn't happening
06:28:19  <defunctzombie>I will check it out
06:28:22  <defunctzombie>I have some ideas
06:29:43  * marcello3djoined
06:31:21  <Raynos>I added some links at the top ( http://raynos.graphics-server.jit.su/full/mario.js ) :D
06:31:51  <zero_coder>ahoy
06:32:04  * Domenic_quit (Ping timeout: 245 seconds)
06:32:14  <defunctzombie>nice
06:32:46  <Raynos>This tryme stuff is awesome
06:32:58  <Raynos>That demo is effectively a blog post
06:33:18  <defunctzombie>Raynos: you can also render markdown in the comments iirc
06:33:26  <defunctzombie>or maybe I removed that in the latest version
06:33:34  <Raynos>i havent tried
06:33:53  <Raynos>wouldn't know how
06:34:18  <defunctzombie>Raynos: use /** */
06:34:22  <defunctzombie>and write markdown between that
06:34:45  <Raynos>doesnt seem to work
06:38:03  <Raynos>markdown does work
06:38:07  <Raynos>but it needs /**EOL
06:38:26  <defunctzombie>yea
06:38:49  <Raynos>but the markdown div is way too wide
06:38:56  <defunctzombie>yea
06:39:24  <Raynos>so ill stick to comments
06:51:57  * marcello3dquit (Remote host closed the connection)
07:00:50  * tukushanjoined
07:04:09  * tukuworkjoined
07:25:24  * zero_coderquit (Read error: Connection reset by peer)
07:27:48  <defunctzombie>Raynos: https://github.com/shtylman/tryme/commits/master
07:28:02  <defunctzombie>contains all of the changes you were proposing
07:28:18  <defunctzombie>I removed domains temporarily
07:29:05  <defunctzombie>I also updated the main field to be correct
07:29:22  <defunctzombie>so you can start local tryme instances like you intended from the graphics example you showed me
07:31:00  <juliangruber>rvagg: multileveled only uses a simple rpc mechanism and does 9.500 op/s vs. 7000 op/s with multilevel which has muxdemux etc
07:31:12  <juliangruber>still not that great
07:32:35  <Raynos>Defunctzombie: without domains the server will crash locally every 20 minutes
07:32:44  <defunctzombie>Raynos: ? really
07:32:48  <defunctzombie>all the time?
07:38:26  <juliangruber>rvagg: when I remove the network layer from the multileveled benchmarks it does 28.000 ops/s :O so the network layer is costing A LOT
07:46:35  <defunctzombie>isaacs: http://jpallen.net/2013/03/08/tracking-down-a-memory-leak-in-node-js-and-socket-io/
07:46:38  <defunctzombie>isaacs: seen that?
07:49:45  * defunctzombiechanged nick to defunctzombie_zz
07:50:12  <Raynos>defunctunctzombie: I'll see how stable this new version is
08:02:33  * tukushanquit (Ping timeout: 245 seconds)
08:21:20  * cianomaidinjoined
08:27:43  * tukushanjoined
08:38:37  * tukushanquit (Quit: KVIrc 4.1.3 Equilibrium http://www.kvirc.net/)
08:39:29  * st_lukequit (Remote host closed the connection)
09:13:55  * fotoveritejoined
09:23:05  * dominictarrjoined
09:25:13  * dominictarrquit (Client Quit)
10:20:43  * zero_coderjoined
10:25:54  * zero_coderquit (Ping timeout: 264 seconds)
10:50:59  * thl0_zzjoined
10:52:31  * marcello3djoined
10:56:59  * marcello3dquit (Read error: Operation timed out)
10:57:10  * nicholasfquit (Read error: Connection reset by peer)
10:57:42  * nicholasfjoined
11:02:47  * thl0_zzchanged nick to thl0
11:16:06  * cianomaidinquit (Quit: cianomaidin)
12:16:51  * ins0mniajoined
13:11:36  * thl0quit (Remote host closed the connection)
13:13:50  * thl0joined
13:14:48  * heathquit (Read error: Connection reset by peer)
13:15:04  * heathjoined
13:22:41  * heathquit (Read error: Connection reset by peer)
13:26:36  * heathjoined
13:27:39  * jibayjoined
13:29:49  * thl0quit (Remote host closed the connection)
13:36:11  <ins0mnia> throw e;
13:36:11  <ins0mnia> ^
13:36:12  <ins0mnia>Error: Line 81: Unexpected token ILLEGAL
13:36:26  <ins0mnia>I wish browserify could at least tell me which file is fucking up the bundle :(
13:57:24  * CryptoQuickjoined
14:02:31  * thl0joined
14:23:47  * tukuworkquit (Ping timeout: 245 seconds)
14:24:36  * AvianFlujoined
14:30:55  * nk109quit (*.net *.split)
14:30:55  * Altreus_quit (*.net *.split)
14:30:55  * gozalaquit (*.net *.split)
14:30:55  * duncanbeeversquit (*.net *.split)
14:30:56  * tim_smart|awayquit (*.net *.split)
14:30:56  * defunctzombie_zzquit (*.net *.split)
14:31:05  * Altreusjoined
14:31:15  * tim_smart|awayjoined
14:31:29  * tim_smart|awaychanged nick to tim_smart
14:31:41  * duncanbeeversjoined
14:31:52  * gozalajoined
14:32:24  * defunctzombie_zzjoined
14:32:39  * defunctzombie_zzchanged nick to defunctzombie
14:38:18  * Domenic_joined
14:51:24  * mikealquit (Quit: Leaving.)
14:53:40  * tmcwjoined
14:55:38  <hij1nx>where is that dominictarr
14:55:58  <hij1nx>elusive kiwi
15:00:44  * marcello3djoined
15:03:29  <isaacs>defunctzombie: yes
15:03:35  <isaacs>defunctzombie: we can't fix it in the very short term
15:03:39  <isaacs>defunctzombie: but it is a known issue.
15:03:52  <isaacs>defunctzombie: trevnorris is working on a refactor of the buffer backing store stuff.
15:09:50  * AvianFluquit (Remote host closed the connection)
15:11:48  * mikolalysenkojoined
15:17:15  * dguttmanjoined
15:29:30  * mikealjoined
15:29:54  * HMquit (Remote host closed the connection)
15:30:45  * HMjoined
15:40:35  * mikealquit (Quit: Leaving.)
15:54:50  * marcello3dquit (Remote host closed the connection)
16:07:25  * dguttmanquit (Quit: dguttman)
16:11:09  * dguttmanjoined
16:12:45  <thl0>substack: hold off on the sourceUrls, I figured out how to inline sourcesContent for sourceMappingUrls
16:12:49  <thl0>substack: https://github.com/thlorenz/inline-source-map/issues/1#issuecomment-14722456
16:13:49  <thl0>forbeslindsay pointed out that this options existed and after mucking around with the dev tools source, I finally figured out how to do this properly.
16:14:23  <Raynos>0.10 woo
16:14:34  <Domenic_>forbeslindesay is pretty awesome in general
16:15:01  <thl0>I think this will please even @Raynos ;)
16:15:16  <Raynos>I AM HARD TO PLEASE
16:15:16  <LOUDBOT>I AM THE ONLY PERSON THAT I AM AWARE OF IN THIS ROOM THAT IS RESPONSIBLE ENOUGH TO HANDLE THIS-BLAM
16:16:22  * defunctzombiequit (Changing host)
16:16:22  * defunctzombiejoined
16:19:26  * AvianFlujoined
16:23:10  <juliangruber>defunctzombie: tapedeck now works with ie7! just don't use the watch mode...
16:23:17  <defunctzombie>juliangruber: I see that
16:23:18  <defunctzombie>awesome
16:23:26  <defunctzombie>juliangruber: also, you know you don't need freeport right
16:24:07  <juliangruber>I read about not providing a port to #listen, in this case the os gives you a port, but without checking if it is free
16:24:20  <defunctzombie>hm
16:24:24  <defunctzombie>not sure that is true
16:24:27  <defunctzombie>ive never seen it fail
16:24:53  <defunctzombie>I am pretty sure you are supposed to get a port that isn't bound to
16:25:18  <defunctzombie>oh well, good stuff
16:25:51  <defunctzombie>now we just need a nice little just of padding tests with pretty checkmarks
16:25:54  <defunctzombie>and we are all set haha
16:28:54  <juliangruber>haha :D
16:29:53  <juliangruber>defunctzombie: http://stackoverflow.com/questions/9901043/node-js-random-port
16:31:57  <defunctzombie>juliangruber: first, thing is their use of server.address() is wrong in their initial example
16:32:05  <defunctzombie>you are supposed to do it inside a listen callback
16:32:27  <defunctzombie>iirc
16:34:00  <defunctzombie>maybe it can fail, but tat seems a bit odd because it would mean the OS is out of ports
16:44:37  * marcello3djoined
16:53:45  <defunctzombie>marcello3d: I made that event lib, needs a new name tho
16:57:42  <marcello3d>which one?
16:57:44  <marcello3d>or what does it do?
17:13:58  * Domenic_quit (Remote host closed the connection)
17:19:16  * mikealjoined
17:21:18  * purrquit (Remote host closed the connection)
17:21:26  * purrjoined
17:26:53  * purrquit (Remote host closed the connection)
17:27:00  * purrjoined
17:27:03  * mikolalysenkoquit (Ping timeout: 240 seconds)
17:28:54  * purrquit (Remote host closed the connection)
17:28:58  * thl0quit (Remote host closed the connection)
17:29:28  * purrjoined
17:30:03  * thl0_joined
17:31:46  * purrquit (Remote host closed the connection)
17:31:54  * purrjoined
17:32:30  * spionjoined
17:33:11  * Domenic_joined
17:39:41  <defunctzombie>marcello3d: eve on my github
17:39:52  <defunctzombie>marcello3d: will probably rename to dom-event or some such
17:40:04  <defunctzombie>marcello3d: just does binding and emitting of dom events
17:43:45  * purrquit (Remote host closed the connection)
17:43:52  * purrjoined
17:44:49  * tmcwquit (Remote host closed the connection)
17:47:54  * tmcwjoined
17:48:18  * purrquit (Remote host closed the connection)
17:48:26  * purrjoined
17:53:38  * Domenic_quit (Remote host closed the connection)
17:56:07  * purrquit (Remote host closed the connection)
17:56:15  * purrjoined
17:58:29  * Domenic_joined
17:59:26  * mikolalysenkojoined
18:04:11  <defunctzombie>isaacs: https://github.com/joyent/node/wiki/Api-changes-between-v0.8-and-v0.10 question about socket.bind()
18:04:17  <defunctzombie>is the async option available in 0.8?
18:04:25  <isaacs>defunctzombie: it was sometimes async in 0.8
18:04:26  <isaacs>but not always
18:04:38  <defunctzombie>isaacs: but the callback api is available?
18:04:45  <isaacs>yeah, it should be
18:04:47  <defunctzombie>k
18:04:54  <defunctzombie>any reason why that is async?
18:04:57  <defunctzombie>the bind call is sync iirc
18:05:38  <isaacs>defunctzombie: so, i think this is to support dgram in cluster, and on windows
18:05:47  <defunctzombie>fuck
18:05:55  * shuaibjoined
18:05:55  <defunctzombie>really, sigh
18:05:57  * purrquit (Remote host closed the connection)
18:06:36  <defunctzombie>that is retarded
18:06:40  * purrjoined
18:07:05  <defunctzombie>also going to be terrible for upgrading
18:07:16  <defunctzombie>because I don't remember that 0.8 made a note that you should change your calls
18:07:29  <defunctzombie>so now everyone has sync bind calls
18:07:51  <defunctzombie>and can't upgrade to 0.10 until they change them to async, redeploy on 0.8 to make sure all that works
18:07:52  * purrquit (Remote host closed the connection)
18:07:57  <defunctzombie>then change to 0.10
18:08:05  * purrjoined
18:08:35  * defunctzombiereally wishes sync stayed around cause this is a backwards breaking change I think
18:08:52  * purrquit (Remote host closed the connection)
18:08:59  * purrjoined
18:09:20  * jan____quit (Changing host)
18:09:21  * jan____joined
18:09:26  * purrquit (Read error: Connection reset by peer)
18:09:39  * purrjoined
18:10:03  * purrquit (Read error: Connection reset by peer)
18:10:16  * purrjoined
18:10:36  * purrquit (Remote host closed the connection)
18:10:46  <isaacs>defunctzombie: yeah, we do occasinoally make backwards-incompatible changes between branches
18:10:56  <isaacs>defunctzombie: i mean, the async api was always tehre.
18:12:02  * isaacschecking on that now..
18:12:14  <isaacs>if not, then it's a bug, and yes, we should provide a backwards-compatible mechanism for you
18:13:12  <defunctzombie>if it was always there then that is good, probably just need to be more vocal about this minor nuance
18:13:34  <isaacs>defunctzombie: nope.
18:13:38  <isaacs>defunctzombie: not there.
18:13:48  <isaacs>defunctzombie: but, it did have a 'listening' event
18:13:53  <isaacs>which is when the cb gets fired.
18:13:55  <defunctzombie>damn
18:14:15  <defunctzombie>so how do I upgrade haha
18:14:17  <isaacs>so, <sigh>... the forward-compatible chnage would be: socket.bind(blah...); socket.on('listening', function() { do stuff })
18:14:22  <isaacs>which is kinda shitty
18:14:31  <defunctzombie>I hate windows
18:14:36  <isaacs>well, it's also cluster.
18:14:40  <defunctzombie>I hate cluster
18:14:41  <isaacs>post a bug.
18:14:46  <isaacs>CLUSTER HATES YOU TOO
18:14:46  <LOUDBOT>THE SERVER RESPONDED WITH AN ERROR.
18:14:52  <defunctzombie>^ yes it has
18:14:54  <isaacs>i'm jk, cluster loves you
18:14:59  <defunctzombie>what do you want the bug to say?
18:15:02  <defunctzombie>no way to upgrade?
18:15:06  <isaacs>but yes, that's an oddly appropriate loud
18:15:31  <isaacs>the bug should say "This API change sucks, because it's hard to upgrade, please make bind sync if not necessary to be async"
18:15:40  <isaacs>and no cb provided.
18:15:47  <isaacs>if you provide a cb, we should do the async thing like we do now
18:16:00  <defunctzombie>yes, I agree
18:16:23  * purrjoined
18:17:26  <isaacs>defunctzombie: sorry i didn't catch that earler
18:17:34  <defunctzombie>no worries
18:17:35  <isaacs>defunctzombie: dgram is not high on the list of "things node people use"
18:17:37  <defunctzombie>just happy I caught it
18:17:43  <defunctzombie>isaacs: I use it a lot
18:17:52  <defunctzombie>lots of things at bitfloor communicate over it
18:17:54  <defunctzombie>and multicast
18:18:12  <defunctzombie>so it is very important to me that it works :)
18:19:58  <isaacs>defunctzombie: sure.
18:20:07  <isaacs>defunctzombie: probably just means a few patch releases before you can upgrade.
18:20:18  <defunctzombie>cool
18:20:22  <isaacs>defunctzombie: on the plus side, you can eventually start using clustered dgram to leverage all your cores, if you'd like.
18:20:26  <isaacs>defunctzombie: before, that just didn't work
18:20:30  <defunctzombie>heh
18:20:39  <defunctzombie>I prefer manual cluster separation personally
18:20:57  <defunctzombie>isolated even from the parent
18:21:06  * shamajoined
18:21:34  <defunctzombie>cluster is just one opinion on how I want to do load management
18:21:54  <defunctzombie>https://github.com/joyent/node/issues/4981
18:22:30  * purrquit (Remote host closed the connection)
18:23:36  * purrjoined
18:28:45  <isaacs>defunctzombie: for a lot of use cases, it might not be sooo bad, btw.
18:28:59  <isaacs>defunctzombie: just, you can't start expecting it to be listening RIGHT NOW after calling bind()
18:29:24  <isaacs>defunctzombie: but like, if you're spinning up a bunch of children that talk to each other, it's a race, but not a hard one to skew one way or the other.
18:29:50  <isaacs>defunctzombie: ie, it'd be worth trying, if you can, and see exactly how bad the impact is.
18:30:09  * isaacschanged nick to _isaacs_afk
18:36:30  * AvianFluquit (Remote host closed the connection)
18:37:43  <defunctzombie>_isaacs_afk: worth trying what exactly?
18:44:09  * fotoveritequit (Quit: fotoverite)
18:49:55  <substack>thl0_: is your new sourcemap stuff ready to merge and if so where should I start merging?
18:52:11  * tilgovijoined
18:57:30  * paul_irish_changed nick to paul_irish
18:59:05  * yorickjoined
18:59:05  * yorickquit (Changing host)
18:59:05  * yorickjoined
19:00:44  * AvianFlujoined
19:05:24  * AvianFluquit (Remote host closed the connection)
19:06:40  * mikealquit (Quit: Leaving.)
19:13:42  <thl0_>substack: almost there - gotta make commandline work properly, but you can merge the browser-pack PR
19:14:29  <thl0_>substack: so the idea is that if you pass debug: true it will inline all sources into the map by default
19:14:49  <thl0_>substack: we should provide a few advanced options in the future though
19:16:50  <thl0_>substack: i.e. it would be nice to be able to pass the root of the source root url path, so instead of seeing /User/crap/morecrap/../public/js/foo.js you'd set public as sourceroot and see /js/foo.js in browser source tab
19:19:04  <thl0_>substack: we should also allow not to inline i.e. when in production (you could for instance point the sourceRoot to your dev server to debug in your production environment)
19:19:23  <thl0_>substack: without bloating the bundle unnecessarily in prod
19:27:15  <defunctzombie>can't wait to try this
19:27:24  <defunctzombie>substack: how do you feel about detecting global leaks in tape?
19:27:46  <defunctzombie>global leak detection is pretty non controversial and helps quite a bit
19:31:45  * CryptoQuickquit (Ping timeout: 248 seconds)
19:31:46  * nicholasfquit (Read error: Connection reset by peer)
19:32:22  * nicholasfjoined
19:32:32  <Domenic_>defunctzombie: just "use strict" and you won't leak globals >:)
19:32:44  * CryptoQuickjoined
19:33:04  <defunctzombie>take your pragmas back to c land.. they are not welcome here!
19:33:11  <Domenic_>I dislike global leak detection in Mocha, it always blows up in Firefox or IE or any browser TJ hasn't tested.
19:33:17  * tukuworkjoined
19:33:35  <defunctzombie>Domenic_: really? maybe it hasn't bothered me cause I don't leak the globals haha
19:33:55  <Domenic_>defunctzombie: my experience has been even in perfect programs there are some intrinsic Firefox globals that get detected as leaks
19:33:58  <defunctzombie>Domenic_: maybe testling should just auto "use strict" for you
19:34:03  <defunctzombie>huh
19:34:07  <defunctzombie>might be true
19:34:16  <defunctzombie>I haven't experienced that yet
19:34:23  <defunctzombie>with my various tests, but it is totally possible
19:34:24  <thl0_>defunctzombie: seriously pragma or not it is so useful to see it leaking right in your editor ;)
19:34:35  <defunctzombie>heh
19:34:43  <Domenic_>hmm can't reproduce it in the online mocha demo though
19:34:44  <defunctzombie>I think I can make my editor do it without the "use strict"
19:34:52  <defunctzombie>actually, I know I can
19:35:00  <defunctzombie>my editor just runs jshint iirc
19:35:05  <defunctzombie>and I can set the options to whatever I want
19:35:11  <thl0_>'use strict' + vim + Syntastic === awesome
19:35:15  <defunctzombie>yea
19:35:20  <defunctzombie>I use vim + syntastic iirc
19:35:28  <defunctzombie>I will just turn on use strict mode
19:35:32  <defunctzombie>without the pragma in my codez
19:35:34  <defunctzombie>mwahahaha
19:35:44  <Domenic_>:-/ runtime behavior changes
19:35:54  <thl0_>except that syntastic uses jshint which doesn't blow up on global leaks and spelling errors unless you 'use strict'
19:36:41  <thl0_>defunctzombie: although you could prob. set globalstrict in your .jshintrc as well
19:37:00  <defunctzombie>thl0_: that is what I meant
19:37:26  <defunctzombie>I wonder if I already have that set actually
19:37:47  <thl0_>defunctzombie: ok - got it
19:40:56  * shuaibquit (Quit: Textual IRC Client: http://www.textualapp.com/)
19:42:23  <defunctzombie>http://www.youtube.com/watch?v=csyL9EC0S0c
19:42:26  <defunctzombie>this is great
19:44:23  * spionquit (Ping timeout: 246 seconds)
19:46:14  * tilgoviquit (Quit: No Ping reply in 180 seconds.)
19:51:36  * dguttmanquit (Read error: Connection reset by peer)
19:51:58  * dguttmanjoined
19:57:25  * fotoveritejoined
20:03:30  * mikealjoined
20:04:21  * blakmatrix1joined
20:07:02  <tanepiper>oh tef's talk
20:08:15  * blakmatrix1part
20:08:56  <tanepiper>(he's a pal, and he's in SF just now)
20:14:42  <mbalho>defunctzombie: can tryme do "when they make small edits to their program, as long as they dont enter any new require() calls I can update the output without making additional network requests"
20:14:54  <mbalho>defunctzombie: e.g. client side bundling
20:15:03  <mbalho>(from https://github.com/substack/node-browserify/issues/314)
20:15:19  <defunctzombie>mbalho: yes
20:15:26  <defunctzombie>tanepiper: tell him I love this talk!
20:15:39  <defunctzombie>mbalho: that is exactly what tryme does
20:15:44  <tanepiper>defunctzombie: i did :)
20:15:45  <mbalho>defunctzombie: cool ill check out the source codez
20:16:00  <mbalho>defunctzombie: do you use browser-pack ?
20:16:46  <defunctzombie>mbalho: http://tryme.jit.su/shtylman/qr-element/example/
20:16:53  <defunctzombie>play with that and you will see the qrcode change
20:17:01  <defunctzombie>mbalho: I use browserify directly
20:17:07  <defunctzombie>tanepiper: awesome!
20:18:41  <Raynos>-> https://github.com/Colingo/ordered#ordered
20:18:49  <Raynos>That module is awesome. It's so simple and so useful :D
20:19:23  <Raynos>mbalho: tryme shouldnt make addition network requests
20:20:34  * tilgovijoined
20:26:20  * AvianFlujoined
20:27:00  <mbalho>defunctzombie: i cant find the code in that repo that actually re-bundles the codemirror output int he client
20:27:31  <Raynos>mbalho: It doesnt rebundle
20:27:36  <Raynos>it just re-evals the code in scope
20:28:08  <Raynos>but it re-evals in scope of the `require` function such that require calls are correct
20:28:52  <defunctzombie>"write code that is easy to replace not easy to extend"
20:29:04  <defunctzombie>That is arguably the best quote I have heard about software design
20:29:23  <defunctzombie>mbalho: what Raynos said :D
20:35:37  * tilgoviquit (Quit: No Ping reply in 180 seconds.)
20:37:36  * tilgovijoined
20:41:22  * rook2paw1joined
20:41:30  * _sindresorhusjoined
20:42:45  * zu_joined
20:47:14  * sindresorhusquit (Ping timeout: 246 seconds)
20:47:15  * CoJaBoquit (Ping timeout: 246 seconds)
20:47:15  * _sindresorhuschanged nick to sindresorhus
20:47:15  * jan____quit (Ping timeout: 246 seconds)
20:47:16  * zuquit (Ping timeout: 246 seconds)
20:47:16  * rook2pawnquit (Ping timeout: 246 seconds)
20:47:17  * CoJaBojoined
20:47:17  * CoJaBoquit (Ping timeout: 246 seconds)
20:47:29  * CoJaBojoined
20:47:44  * sindresorhuschanged nick to Guest69295
20:55:28  * jan____joined
20:57:44  * fotoveritequit (Quit: fotoverite)
20:58:22  <mbalho>defunctzombie: the tryme code is way too abstract for me to understand, can you point me at the line that loads the bundle from the server into the client side context?
20:58:38  <defunctzombie>mbalho: :D yea, one sec
20:58:56  <defunctzombie>mbalho: https://github.com/shtylman/tryme/blob/master/router.js
20:59:06  <defunctzombie>that is the file you will want to "understand"
20:59:20  <defunctzombie>mbalho: https://github.com/shtylman/tryme/blob/master/router.js#L113
20:59:43  <defunctzombie>that function serves a js file after bundling it through browserify
20:59:55  <defunctzombie>and also adding the specific code which will expose an "eval"
21:00:05  <defunctzombie>https://github.com/shtylman/tryme/blob/master/router.js#L119
21:00:13  <defunctzombie>that is the code which handles the eval client side
21:00:28  <defunctzombie>it must be part of the bundle so that the eval happens in the correct "scope" to see the requires
21:00:42  <defunctzombie>https://github.com/shtylman/tryme/blob/master/router.js#L144
21:00:55  <defunctzombie>the server function and browserify output are put into a temp js file
21:01:01  <defunctzombie>which is then run through browserify
21:01:09  <defunctzombie>to get the final bundle
21:01:15  <defunctzombie>that is what is sent up to the client
21:01:36  <defunctzombie>I think it sounds more complex than it is
21:01:50  <defunctzombie>basically, all it does is expose a way to "eval" code inside of the bundle context
21:02:11  <mbalho>ohh
21:02:16  <mbalho>defunctzombie: that should be a module
21:02:21  <defunctzombie>haha
21:02:27  <defunctzombie>sure, maybe
21:02:37  <defunctzombie>it was all very experimental at time of writing :)
21:02:43  <defunctzombie>and has gotten cleaner since then
21:02:46  <mbalho>yea i can tell :)
21:02:50  <mbalho>oh haha
21:03:18  <defunctzombie>really it isn't that many lines of code that do this
21:03:24  <defunctzombie>cause half of them are the "client" code
21:03:32  <defunctzombie>which could live in a separate file and be fs read in
21:03:39  <defunctzombie>I just wrote it inline there for now
21:04:00  <defunctzombie>and the html template stuff just replaces things on the final html page
21:04:12  <defunctzombie>by injecting the script output into the page
21:12:22  * nk109joined
21:15:25  * isaacs_mobilejoined
21:19:41  <juliangruber>rvagg: just tried levelup on 0.10.0 and contextify (which is an optional dep) failed to build
21:19:47  <juliangruber>rvagg: but buster is BROKEN
21:19:57  <juliangruber>functional tests run
21:21:23  <defunctzombie>substack: process global detection is broken (i.e.) has false positives when it shouldn't
21:22:00  <defunctzombie>substack: https://github.com/twitter/bootstrap/blob/master/js/bootstrap-scrollspy.js
21:22:04  <defunctzombie>substack: a good test example
21:22:43  <juliangruber>defunctzombie: what does it detect there?
21:22:51  <defunctzombie>detects process
21:23:23  <juliangruber>oh
21:27:13  <juliangruber>that's a problem with lexical-scope
21:27:17  <isaacs_mobile>People talking about what's broken in the latest release, making changes frantically to update... Makes me nostalgic for the good old days.
21:27:47  <defunctzombie>isaacs_mobile: :D
21:28:07  <isaacs_mobile>We used to do this every DAY.
21:28:11  <defunctzombie>isaacs_mobile: I wanted to suggest something for your jenkins node tests
21:28:20  <defunctzombie>isaacs_mobile: you should test against some of the more popular modules maybe
21:28:42  <defunctzombie>isaacs_mobile: I know large language/framework deployments are known to do that to flush out issues ahead of time for backwards compat
21:28:46  <isaacs_mobile>defunctzombie: tell tjfontaine in libuv
21:29:14  <isaacs_mobile>Yeah. Good idea.
21:29:35  * mikolalysenkoquit (Ping timeout: 255 seconds)
21:30:32  * tilgoviquit (Read error: Connection reset by peer)
21:31:37  * tilgovijoined
21:34:27  <juliangruber>defunctzombie: https://github.com/substack/lexical-scope/issues/2
21:37:24  <defunctzombie>juliangruber: nice, thanks!
21:39:49  * mikolalysenkojoined
21:41:42  <substack>defunctzombie: leak detection is so far out of scope for tape
21:41:54  <substack>just write a wrapper tool that detects leaks for arbitrary programs instead
21:42:15  <defunctzombie>substack: maybe testling can help do something?
21:42:39  <substack>thl0_: a `debug: true` that just does all the "source map" things sounds excellent
21:42:40  <defunctzombie>substack: my point is just that leaks are otherwise hard to detect and certainly an automated test tool can help with that
21:44:07  <thl0_>substack: yeah that will work, but I outlined in the comments that in the future we'd prob. want to support specifying sourceRootURL to get better filepaths in dev tools sources tab
21:44:07  <juliangruber>substack defunctzombie: leak detection in CI will help teams that don't want to check collaborators' commits manually
21:44:33  <substack>out of scope
21:44:36  <substack>build a userland tool for it
21:44:41  <juliangruber>or make it a seperate service
21:44:55  <juliangruber>and a jshint service
21:44:59  <thl0_>substack: all it would need is one extra param
21:45:00  <juliangruber>for those that need it
21:45:04  <juliangruber>all with webhooks
21:45:18  <substack>thl0_: I was responding to defunctzombie and juliangruber there, sorry
21:45:23  <substack>thl0_: your thing is perfectly in scope
21:45:31  <thl0_>substack: got it ;)
21:45:57  <substack>just perhaps not a completely optimal api yet but getting much closer
21:46:05  <thl0_>substack: so tonight I get it working with just debug: true (as I said just missing cli flag working)
21:46:12  <defunctzombie>substack: making a userland tool just makes testing more annoying :/
21:46:27  <defunctzombie>substack: instead of the testing service doing a nice thing about it, everyone has to repeat themselves
21:46:46  <thl0_>substack: should we set the sourceRootURL to the source of the project to avoid /User/../../js/foo.js paths in the browser sources?
21:46:57  <juliangruber>defunctzombie: let's build a bunch of ci services?
21:47:31  <juliangruber>benchmark ci would be sweet too
21:47:42  <ralphtheninja>I like 'wr' but written in coffeescript :(
21:47:48  <thl0_>substack: other option is to set sourceRootURL to process.cwd()
21:48:14  * mikolalysenkoquit (Ping timeout: 250 seconds)
21:48:21  <thl0_>substack: otherwise we should allow to pass that argument (those long paths in dev tools are annoying)
21:48:33  <defunctzombie>juliangruber: hahaha yes!
21:48:46  <defunctzombie>actually, global leak detection is doable with static analysis I think
21:48:53  <defunctzombie>and pretty well
21:49:09  <defunctzombie>so maybe it isn't as important
21:49:16  * spionjoined
21:49:19  <defunctzombie>juliangruber: I wanted to build a source checking service
21:49:24  <defunctzombie>even got a domain for it
21:49:36  <defunctzombie>juliangruber: would just run jshint or some other such tools on github repos
21:49:50  * AvianFluquit (Remote host closed the connection)
21:49:55  <juliangruber>we need to write libs so that in the end we have like require('ci').run(checkForGlobals).listen(8000)
21:50:06  <juliangruber>sweet
21:50:39  <juliangruber>and I want to do a design review tool: someone pushed a change and the other collaborators must check of screenshots
21:50:52  <juliangruber>check off
21:50:53  * tilgoviquit (Ping timeout: 252 seconds)
21:51:02  <thl0_>substack: if you can merge my browser-pack PR plz, so I can refer to it
21:51:34  * tilgovijoined
21:51:52  <juliangruber>defunctzombie: and a ci service using substack's code quality score tool
21:52:34  <defunctzombie>aha
21:52:43  <juliangruber>defunctzombie: and stuff like: line length < 80 chars, a style checker
21:52:57  <defunctzombie>juliangruber: that can all go into the source checking tool
21:53:25  <juliangruber>code quality CI for node
21:53:49  <defunctzombie>srcaudit
21:53:57  <juliangruber>nice
21:55:16  <juliangruber>since the actual srcauditing stuff is easy...
21:55:23  <juliangruber>we'll have fun with the infrastructure
21:57:00  <defunctzombie>yep
21:57:15  <Domenic_>defunctzombie: global leak detection is ironically not doable statically if not in strict mode, because of eval/with
21:57:26  <defunctzombie>Domenic_: psh
21:57:27  <Domenic_>JavaScript is not statically scoped in sloppy mode
21:57:40  <defunctzombie>best effort hahaha
21:58:19  <juliangruber>so the tests need to be run, still no big problem
21:58:38  <Domenic_>npm is down to 318 issues, what what
22:01:17  <juliangruber>defunctzombie: globals detection can just be `tap test/*.js && detect test/*.js`, so travis can handle this
22:01:29  <defunctzombie>juliangruber: :(
22:01:32  <defunctzombie>juliangruber: more work for me
22:01:35  * isaacs_mobilequit (Ping timeout: 260 seconds)
22:01:35  <defunctzombie>don't like that
22:01:54  <defunctzombie>now I need to remember to do this in every repo
22:02:11  <defunctzombie>and always keep random stuff updated etc
22:04:15  * tmcwquit (Remote host closed the connection)
22:05:33  * dominictarrjoined
22:05:47  * spionquit (Ping timeout: 246 seconds)
22:06:54  <juliangruber>so make a CI that runs test and detects globals? that's much overhead
22:06:58  <rvagg>juliangruber: yeah, I'm aware of the broken Buster/contextify stuff for levelup, should be sorted soon
22:07:08  <juliangruber>rvagg: coolio
22:08:21  * dominictarrquit (Client Quit)
22:08:46  <tanepiper>Sim City is JS? http://www.reddit.com/r/programming/comments/1a3o6d/simcity_ui_drm_code_possibly_leaked/
22:09:01  <juliangruber>hij1nx: tsd looks really good
22:09:13  * CryptoQuickquit (Ping timeout: 252 seconds)
22:09:47  <defunctzombie>tanepiper: fuck yea how awesome would that shit be
22:12:01  * spionjoined
22:12:41  * CryptoQuickjoined
22:13:28  * nk109quit (Ping timeout: 246 seconds)
22:17:45  * dominictarrjoined
22:17:57  * dominictarrquit (Client Quit)
22:18:39  <Domenic_>rvagg: is there going to be a new contextify version? we need it for jsdom too.
22:19:51  <rvagg>Domenic_: the pressure's on, https://github.com/brianmcd/contextify/issues/57
22:20:19  <rvagg>& https://github.com/brianmcd/contextify/pull/61
22:20:31  <rvagg>etc. there's a bunch of 0.9 trouble for contextify
22:20:49  <Domenic_>poor contextify
22:20:55  <rvagg>the late changes in v8 versions have been a bit difficult I think
22:20:57  <Domenic_>more like, poor core vm module.
22:21:37  * tilgoviquit (Remote host closed the connection)
22:22:06  <rvagg>contextify is used so widely that it's perhaps something that really should be in core vm...
22:22:35  <rvagg>as much as ppl in here would disagree with adding additional stuff to core, contextify is very heavily used and it's an annoying compliation step
22:27:47  * nk109joined
22:28:04  <Domenic_>+1
22:30:06  <Domenic_>there used to be a node issue for this
22:30:32  <hij1nx>juliangruber: thanks!
22:30:32  <defunctzombie>this is what happens when you don't rebuild
22:30:45  <Domenic_>rvagg: ah here it is: https://github.com/joyent/node/issues/3042
22:32:14  <hij1nx>Domenic_: did that horrible memory leak ever get fixed in jsdom?
22:32:36  <Domenic_>hij1nx: maybe? we haven't had leaks for a while, as long as you call window.close().
22:32:57  <hij1nx>Domenic_: hmm. also, whats the startup time to build the window?
22:33:05  <hij1nx>Domenic_: would be really cool so see that.
22:33:43  <hij1nx>Domenic_: i remember a while back indutny giving me crap because gh/hij1nx/weld took so long to spin up
22:34:38  * tilgovijoined
22:34:43  <Domenic_>hij1nx: hmm not sure, i don't think startup time has improved much. then again when i run the tests things seem to fly by relatively quickly.
22:35:54  * thl0_quit (Remote host closed the connection)
22:38:02  * tilgoviquit (Client Quit)
22:38:23  * tilgovijoined
22:39:36  * Domenic_quit (Remote host closed the connection)
22:53:00  * thatguydanjoined
22:56:06  * mikeal1joined
22:56:20  * mikealquit (Read error: Connection reset by peer)
22:57:07  * fotoveritejoined
22:57:17  * nicholasfquit (Read error: Connection reset by peer)
22:57:42  * nicholasfjoined
23:06:22  * dominictarrjoined
23:07:25  * nk109quit (Quit: Computer has gone to sleep.)
23:09:17  * dominictarrquit (Client Quit)
23:13:30  <hij1nx>juliangruber: i just made you a collaborator on https://github.com/hij1nx/tsd
23:14:10  <juliangruber>hij1nx: awsum
23:19:43  <juliangruber>hij1nx: I want to run leveldb on jitsu '(
23:20:18  <rvagg>juliangruber: it'll compile.... but of course you'll lose everything on your next drone swap...
23:20:33  <rvagg>juliangruber: but surely you're close to being able to offer LevelDBaaS?
23:20:45  <juliangruber>I thought about providing hosted multilevels...
23:20:50  <juliangruber>:D
23:21:24  <juliangruber>the hook and plugin API will have to change massively though if all the plugin should work with multilevel
23:22:27  <juliangruber>that's kind of a bummer for me since i <3 leveldb and nodejitsu but can't use both together
23:23:04  <rvagg>yeah I know, the lack of stable block storage is annoying on jitsu, but it's understandably a difficult thing to offer
23:23:23  <rvagg>juliangruber: you need to weigh in to the plugins debate so we know what you need/want from a plugin API
23:23:26  * yorickquit (Remote host closed the connection)
23:24:28  * thl0joined
23:24:30  <juliangruber>good idea, I'll add my requirements
23:24:59  <juliangruber>rvagg: what's the correct issue for that? :D
23:25:44  <rvagg>#92 & #97
23:25:45  <hij1nx>juliangruber: i just use raw joyent boxes, i dont really need PaaS.
23:26:22  <juliangruber>rvagg: ok thanks
23:26:38  * st_lukejoined
23:27:29  <juliangruber>hij1nx: I've been playing with joyent machines and like them so far...I just really don't have time for devops atm
23:28:57  <hij1nx>juliangruber: yeah, i agree. my workflow is this 1. get sdc machine, 2. install bouncy, 3. install pushover, 4. git clone the app. 5. run `mon`
23:29:23  <hij1nx>er 4 is rather push the app
23:29:37  <juliangruber>no clustering?
23:29:58  <hij1nx>juliangruber: not for little projects, most node processes can handle a lot
23:30:18  <hij1nx>juliangruber: i dont have any projects that have massive network demand
23:30:22  <hij1nx>juliangruber: not many people do
23:30:28  <hij1nx>juliangruber: its the "scaling myth"
23:30:53  <juliangruber>and it's sooo tempting to fall for it
23:31:25  <juliangruber>how do you keep apps running across restarts? init scripts are a pain
23:32:36  <hij1nx>i do use cluster module now and then, its likely that if a worker process goes down you have one or two scenarios
23:32:42  <hij1nx>1. your tests suck
23:32:49  <hij1nx>2. you have a transient falure mode
23:33:07  <defunctzombie>I don't use cluster, I just have two of the same process on different ports and load balance
23:33:18  <defunctzombie>then you have a better shot at "zero" downtime restarts
23:33:28  <defunctzombie>cluster doesn't really solve any real problem in my mind
23:33:47  <hij1nx>defunctzombie: it solves the transient falure mode problem pretty well
23:33:54  <defunctzombie>?
23:34:15  <defunctzombie>hij1nx: restart on failure you mean?
23:34:29  <guybrush>what is the benefit of cluster over just having multiple processes?
23:34:36  <defunctzombie>none imho
23:34:38  <defunctzombie>hij1nx: https://github.com/shtylman/daemon.node/blob/master/index.js
23:34:49  <hij1nx>they have a communication protocol
23:34:52  * nk109joined
23:34:57  <guybrush>hij1nx: oh thats true
23:35:03  <defunctzombie>hij1nx: I use that with a small wrapper to turn a script into a daemon of itself without issues
23:35:03  * thl0quit (Remote host closed the connection)
23:35:23  <hij1nx>defunctzombie: this is neat
23:36:25  <hij1nx>defunctzombie: but its crude
23:36:41  <defunctzombie>yep
23:36:46  <defunctzombie>but it works
23:36:49  <hij1nx>:)
23:36:49  * dominictarrjoined
23:36:50  <defunctzombie>and is super simple
23:36:52  <rvagg>see also https://github.com/deoxxa/jesus
23:36:58  <hij1nx>must be simple.
23:37:16  <defunctzombie>love the name
23:37:18  * dominictarrquit (Client Quit)
23:37:33  <defunctzombie>I have a similar thing I use internally that then uses this daemon stuff
23:37:44  <rvagg>yeah, as in resurrect processes from death
23:38:14  <defunctzombie>I don't do any unix socket or other communication stuff from my launchers tho
23:38:16  <hij1nx>do you trust a monky to guard against other monkeys getting your bananas?
23:38:22  <guybrush>haha i did kind of the same thing with nexus, the ugly thing with this is that node has such a big memory-footprint
23:38:28  <defunctzombie>I kinda learned a long time to to keep launchers super simple
23:38:29  <guybrush>mon is much better regarding that
23:38:37  * dominictarrjoined
23:38:52  <defunctzombie>hij1nx: wut
23:38:52  <guybrush>i dont want to run a 7mb watcher-process for everything
23:38:57  <hij1nx>unless its a kernel-module based process monitor its a monkey watching a monkey ;)
23:39:10  <defunctzombie>yea
23:39:10  <hij1nx>process watching a process
23:39:15  <hij1nx>silly
23:39:15  <rvagg>yeah, sure, mon+upstart are a good combo where it's easy to install them; I'm using `jesus` on my Kindle where mon isn't exactly an option
23:39:21  <defunctzombie>and yes, I do trust it
23:39:29  <guybrush>thats how i wonder why the jitsu-guys run forever
23:39:42  <defunctzombie>hij1nx: because if i can make it simple enough then I have more trust in it
23:39:43  <hij1nx>forever is crazy.
23:39:44  <guybrush>i mean that consumes huge amounts of ram doesnt it?
23:40:02  <defunctzombie>hij1nx: also helps to have external pings and such setup
23:40:09  <defunctzombie>hij1nx: and heartbeats if you really care
23:40:15  <hij1nx>defunctzombie: absolutely
23:40:29  <defunctzombie>but at the end of the day, when it goes down, it comes back up, I get emails, I investigate anyway
23:40:54  <defunctzombie>and I have what I consider to be awesome app level error logging so
23:41:02  <hij1nx>defunctzombie: every failure needs a post-mortem
23:41:02  <defunctzombie>generally know when the shit breaks
23:41:43  <defunctzombie>indeed
23:41:49  <juliangruber>hij1nx: tsd can work great as a minimal statsd/graphite replacement (also a pain to set up)
23:42:07  <defunctzombie>https://github.com/shtylman/node-bookrc#use
23:42:14  <hij1nx>juliangruber: that's why i wrote it, i was like, ok statsd/graphite time... wait. no. fuck that.
23:42:17  <guybrush>why does everyone use R and graphite and all those things that are so horrible to use
23:42:18  <defunctzombie>that is basically all the app error logging I have needed to do
23:42:38  <hij1nx>guybrush: R studio is AMAZING :)
23:42:39  <defunctzombie>guybrush: cause they don't want to build anything else
23:42:57  <hij1nx>guybrush: but R studio is a post collection analysis tool
23:42:58  <guybrush>woah i hate R since i had to use it in university
23:43:00  <guybrush>i just sucks
23:43:05  <guybrush>*it
23:43:14  <defunctzombie>hij1nx: +1 for tsd nice
23:43:14  <hij1nx>guybrush: its good for a lot of things, but its crazy complex
23:43:21  <guybrush>hij1nx: word
23:43:22  <hij1nx>defunctzombie: thx! :D
23:43:25  <juliangruber>guybrush: graphite can handle MASSIVE data
23:43:56  <guybrush>imho graphite is a blackbox for a simple thing
23:44:05  <guybrush>for me at least
23:44:06  <hij1nx>juliangruber: tsd can handle as much data as leveldb can handle
23:44:24  <hij1nx>guybrush: for realz
23:44:48  <juliangruber>guybrush: we have 1 instance for everything and it handles 200w/s and renders graphs out of 1000+ datapoints over 10000 metrics in 1s
23:44:58  <guybrush>i mean you can set up a nodejs-server with eventvat for example and do all sorts of crazy things in like 100loc
23:44:59  <defunctzombie>I need to write a blog post about node.js app error logging and alerting
23:45:06  <juliangruber>+ the graphing engine
23:45:17  <guybrush>pipe it to some persisting thing and stuff without making anything real complex
23:45:33  <hij1nx>defunctzombie: im writing a logger right now that will kick the pants off any logger, ever.
23:45:39  <defunctzombie>hij1nx: lies
23:45:46  <hij1nx>defunctzombie: :)
23:45:49  <guybrush>even winston?!!
23:45:50  <hij1nx>defunctzombie: no kidding
23:45:51  <guybrush>no way
23:45:53  <hij1nx>guybrush: lol
23:45:55  <defunctzombie>hij1nx: you will have to work hard to make me use it over book :p
23:46:01  <defunctzombie>winston is too complex
23:46:08  <hij1nx>winston is crazy.
23:46:19  * thl0joined
23:46:24  <defunctzombie>hij1nx: and you have to make it easier to use than book, so good luck :p
23:46:31  <hij1nx>defunctzombie: it will be
23:46:42  <substack>process.stdout is my logging library
23:46:47  <hij1nx>defunctzombie: loggers all do it wrong. totally wrong.
23:46:48  <defunctzombie>not good enough
23:46:54  <defunctzombie>hij1nx: what should be right?
23:46:58  <hij1nx>process.stdout blokcs
23:47:02  <defunctzombie>substack: stdout is not a good logger
23:47:09  <guybrush>true! console.log blocks
23:47:10  <defunctzombie>substack: I need meta information
23:47:13  <guybrush>sucks like hell
23:47:14  <hij1nx>process.stdout is a horrible logger
23:47:19  <guybrush>very true
23:47:29  <hij1nx>but its a great debugger ;)
23:47:39  <guybrush>best logger is redis
23:47:39  <defunctzombie>hij1nx: what is bad about log.error log.info ?
23:47:41  <substack>defunctzombie: parse stdout for metadata
23:47:46  <defunctzombie>substack: stupid
23:47:51  <substack>https://github.com/substack/json-scrape
23:47:57  <defunctzombie>substack: more processes to manage
23:48:02  <defunctzombie>substack: and more points of failure
23:48:07  <hij1nx>defunctzombie: logging levels are conflating the debugging process with application logging
23:48:25  <defunctzombie>hij1nx: I just use panic, error, and warn
23:48:38  <defunctzombie>everything else like trace or info I don't generally record
23:48:47  <defunctzombie>I am mostly interested in application error logging
23:48:49  <hij1nx>process.stdout itself is blocking. not just console.log
23:49:00  <defunctzombie>versus letting someone capture any random event
23:49:23  <defunctzombie>hij1nx: logging levels are meaningless beyond panic, error and warn imho
23:49:38  <defunctzombie>warn arguably isn't even legit, but I have used it maybe 0.01%
23:49:42  <mbalho>st_luke: ISAAC SAYS HI
23:49:48  <mbalho>st_luke: are you in SF
23:49:50  <hij1nx>defunctzombie: exactly, thats why browsers have never added .silly or .verbose or any of that shit
23:49:52  <substack>process.stderr
23:49:53  <defunctzombie>hij1nx: log.error(err) is by far the most common thing I use
23:50:23  <defunctzombie>hij1nx: and for me, it captures a lot of metadata, records it, and alerts me
23:50:24  * thl0quit (Ping timeout: 245 seconds)
23:50:32  <hij1nx>warn should just go away
23:50:43  <defunctzombie>hij1nx: I use warn very rarely but sometimes do have a use for it
23:50:45  <hij1nx>but there is a reason to have screen based logging
23:50:52  <defunctzombie>hij1nx: the cost of keeping it is 0
23:50:58  <hij1nx>but that is UI
23:51:12  <hij1nx>screen logging and application logging are two different things.
23:51:29  <hij1nx>and screen logging turned into no-ops is not worth the overhead
23:51:40  <hij1nx>why put no-ops in a hot path?
23:51:42  <guybrush>screen based logging can be done indirectly, in performance-critical apps process.stdout (or console.log in the browser) is no-go
23:51:43  <hij1nx>crazy.
23:51:59  * thatguydan_joined
23:52:07  <defunctzombie>I don't put random ass logging in critical paths
23:52:13  * dominictarrquit (Quit: dominictarr)
23:52:16  <hij1nx>perf-critical apps should use dtrace. anything less is crazy.
23:52:18  * thatguydanquit (Ping timeout: 264 seconds)
23:52:19  * thatguydan_changed nick to thatguydan
23:52:20  <guybrush>though i use process.stdout a lot :p
23:52:32  * tilgoviquit (Ping timeout: 245 seconds)
23:52:48  <hij1nx>screen based logging is for UI, dtrace is for performance profiling.
23:52:49  <guybrush>im not fam with dtrace yet haha, not even touched smartos
23:53:13  <defunctzombie>substack: stdout is not good when you want less management overhead, I log everything to stdout, but I also record it. book lets me do that without thinking about it
23:53:16  <hij1nx>dtrace can be used to win.
23:53:29  <defunctzombie>substack: the point is that if I use a log "lib" then I can do whatever I want
23:53:39  <defunctzombie>substack: if I use console.log, then I am very limited
23:54:05  <juliangruber>having used it for multilevel I don't want to not have dtrace anymore
23:54:17  <hij1nx>the only reason to use console.log is when you need to make sure you're not crazy :)
23:54:20  <defunctzombie>hij1nx: I will be curious to see your logging solution, but right now with bookrc I have virtually 0 setup for very flexible logging that works
23:54:41  <substack>defunctzombie: I think the opposite is actulaly true
23:54:44  <defunctzombie>and is not some giant do everything logging framework
23:54:45  <hij1nx>defunctzombie: ok! when it's ready i'd love to have you review it!
23:55:03  <substack>when you write to stdout you can write whatever output you want, you've just got to parse it
23:55:06  * dominictarrjoined
23:55:18  <ralphtheninja>there's dtrace for linux too https://github.com/dtrace4linux/linux, haven't tested it myself though
23:55:21  * tilgovijoined
23:55:21  <defunctzombie>substack: sure, that is more things that have to be running and can fail
23:55:28  <defunctzombie>substack: like I said, I write to stdout as well
23:55:41  <guybrush>ralphtheninja: interesting
23:55:43  <defunctzombie>substack: but I skip the parsing step since I can do that right when I need it
23:56:07  <dominictarr>rvagg: is there any documentation on how the leveldb SST iterators work?
23:56:20  <defunctzombie>substack: I mean, if console.log works for you great, just saying it doesn't work for me
23:56:40  <defunctzombie>substack: I have many services and need less ops and faster app error alerting
23:56:45  <defunctzombie>with good metadata
23:56:57  <rvagg>dominictarr: apart from http://leveldb.googlecode.com/svn/trunk/doc/ and the source code I don't think so
23:56:58  <defunctzombie>substack: hij1nx: I use http://getsentry.com/welcome/
23:57:32  <defunctzombie>and I can opt in or out of any part of my logging "stack"
23:57:37  <defunctzombie>so if I want to log to a file later and stdout
23:57:39  <dominictarr>rvagg: right - I started implementing new line separated json SSTs
23:57:40  <rvagg>dominictarr: https://github.com/rvagg/node-leveljs/blob/master/lib/indexed-iterator.js might give you some pointers
23:57:40  <defunctzombie>I can easily do that
23:57:47  <defunctzombie>without rewriting my entire codebase
23:57:50  <dominictarr>but turned out to be more difficult that I thought
23:57:53  <defunctzombie>this is absolutely critical
23:57:53  <rvagg>dominictarr: on top of blocks: https://github.com/rvagg/node-leveljs/blob/master/lib/block.js
23:57:57  <hij1nx>dominictarr: nice!
23:58:34  <ralphtheninja>guybrush: aye, if smart os in the way it might be worth checking out
23:58:36  <hij1nx>dominictarr: there are a lot of implementations aren't there? i think level has been ported to like 20 langauges
23:58:49  <dominictarr>oh, really?
23:59:08  <rvagg>hij1nx, dominictarr: I think that they're all just wrappers
23:59:32  <guybrush>ralphtheninja: right, smartos is very far on the bottom of my need-to-checkout-list
23:59:43  <ralphtheninja>guybrush: lol same here
23:59:55  <rvagg>oh, maybe not, http://code.google.com/p/leveldb-java/ & https://github.com/dain/leveldb