00:05:06  <guybrush>lol epic spaghetti https://github.com/guybrush/nexus/blob/master/test/test-server.js#L56-122
00:06:13  <SubStack>drat, more work for me
00:06:28  <SubStack>isaacs: quit releasing new nodes!
00:06:35  <isaacs>SubStack: haaha
00:06:40  <isaacs>SubStack: you know i'll never do that.
00:06:57  <isaacs>SubStack: my goal is to make your life hard enough that you build me a robot to make node builds safe and easy and rapid
00:07:21  <SubStack>well that doesn't solve MY problem
00:07:44  <SubStack>which is that I have to go into the modules that I still care about that are broken and fix them when things change
00:08:33  <SubStack>and away I go!
00:20:10  * wiwilliaquit (Ping timeout: 272 seconds)
00:23:07  <jesusabdullah>isaacs: Keep releasing new nodes.
00:23:56  <isaacs>SubStack: for what it's worth, the shift from 0.6 to 0.8 is quite a bit smalle rthan from 0.4 to 0.6
00:24:14  <isaacs>SubStack: for most of those, the thing that's broen is the "engines":{"node":"0.6.x"}
00:24:45  <rowbit>SubStack, pkrumins: Encoders down:
00:28:37  <chapel>sorry guybrush
00:28:50  <chapel>I liked your code and it got tweeted :P
00:32:55  <jesusabdullah>isaacs is right! We should hardly notice a difference minus having to yell at some people with crappy modules
00:33:22  <jesusabdullah>I'd imagine eventually apis will barely change
00:33:44  <jesusabdullah>meaning people will start repping the * and/or ge
00:34:33  <isaacs>jesusabdullah: new npm init doesn't even set engines
00:34:36  <isaacs>becasue why, srsliy?
00:35:06  <isaacs>that used to be the most important thing in package.json, though
00:35:41  <jesusabdullah>isaacs: it's useful for nodejitsu
00:35:58  <jesusabdullah>isaacs: because it's basically asking, which version of node do you *prefer*, not which ones are merely *allowed*
00:36:23  <jesusabdullah>isaacs: but yeah I hear you, for libraries it should hardly matter
00:37:31  <jesusabdullah>in other news: holy christ is chromium a beast to compile
00:53:45  <rowbit>SubStack, pkrumins: Encoders down:
00:58:45  <rowbit>Hourly usage stats: []
01:02:36  * wiwilliajoined
01:12:59  <guybrush>lol chapel thanks a lot ^^
01:13:15  <rowbit>SubStack, pkrumins: These encoders are STILL down:
01:14:09  <chapel>:)
01:14:10  <chapel><3
01:15:05  <guybrush>in the end its what i would like to be known for! megaspaghetti this is how you do async!
01:44:45  <rowbit>SubStack, pkrumins: Encoders down:
01:52:54  * wiwilliaquit (Ping timeout: 245 seconds)
01:58:46  <rowbit>Hourly usage stats: []
02:03:15  <rowbit>SubStack, pkrumins: Encoders down:
02:07:45  <rowbit>SubStack, pkrumins: Encoders down:
02:21:15  <rowbit>SubStack, pkrumins: Encoders down:
02:22:45  <rowbit>SubStack, pkrumins: Encoders down:
02:25:45  <rowbit>SubStack, pkrumins: Encoders down:
02:27:45  <rowbit>SubStack, pkrumins: Encoders down:
02:34:15  <rowbit>SubStack, pkrumins: Encoders down:
02:38:15  <rowbit>SubStack, pkrumins: Encoders down:
02:58:45  <rowbit>Hourly usage stats: []
02:59:45  <rowbit>SubStack, pkrumins: Encoders down:
03:13:45  <rowbit>SubStack, pkrumins: These encoders are STILL down:
03:53:20  * farnsworthquit (Ping timeout: 244 seconds)
03:53:54  * cubertquit (Ping timeout: 244 seconds)
03:58:45  <rowbit>Hourly usage stats: []
04:05:49  * shykeschanged nick to zz_shykes
04:19:45  <rowbit>SubStack, pkrumins: Encoders down:
04:55:15  <rowbit>SubStack, pkrumins: Encoders down:
04:58:45  <rowbit>Hourly usage stats: []
05:03:15  <rowbit>SubStack, pkrumins: Encoders down:
05:05:14  <rowbit>SubStack, pkrumins: Encoders down:
05:11:45  <rowbit>SubStack, pkrumins: Encoders down:
05:13:45  <rowbit>SubStack, pkrumins: These encoders are STILL down:
05:14:21  <guybrush>chapel: https://github.com/guybrush/nexus/blob/master/test/test-server.js#L55-132 now with AA :D
05:14:55  <chapel>whos module is async-array?
05:15:01  <guybrush>timsmart
05:15:05  <chapel>ah yes
05:15:08  <guybrush>its the most awesome flowcontrol there is
05:15:10  <chapel>I will let him know :)
05:15:18  <chapel>he works on geeklist with me
05:15:23  <guybrush>nice
05:15:58  <guybrush>tell him i use require('async-array') like in 80% of my files
05:16:05  <jesusabdullah>funny
05:16:18  <jesusabdullah>My go-to is async.forEachSeries
05:17:05  <guybrush>boaah this nexus-thing becomes crazy itself, all these timing-issues lol
05:17:36  <guybrush>didnt even think that it would become half as complex
05:17:56  <SubStack>tests!
05:18:13  <SubStack>tests are great because then you can guess and check
05:18:26  <SubStack>smash on the keyboard until something passes all the tests then ship it
05:19:08  <guybrush>oh lol i like random errors
05:19:15  <guybrush>Error: kill ESRCH
05:19:34  <guybrush>seems like node doesnt like to do some process.kill repeatedly?
05:25:44  <isaacs>guybrush: what version is that, 0.6?
05:25:56  <isaacs>guybrush: in 0.8, we swallow esrch, because whatever.
05:25:57  <isaacs>who cares.
05:26:11  <SubStack>esrch what is that even
05:26:12  <isaacs>ESRCH = "The thing you're sending a message to isn't a thing"
05:26:33  <isaacs> [ESRCH] No process or process group can be found corresponding to that specified by pid.
05:26:37  <isaacs>man 2 kill
05:27:44  <SubStack>fuck I think it might be the software messing up the mouse after all
05:28:06  <SubStack>because the touchpad stopped working briefly and then both mice came back
05:28:17  <guybrush>yes 0.6.18
05:28:36  <guybrush>im installing 07 right now
05:28:53  <isaacs>guybrush: seriously, 0.7.12 is basically 0.8 already
05:28:59  <guybrush>super cool
05:29:04  <isaacs>guybrush: apparently fs.watchFile is somewhat broken.
05:29:15  <isaacs>but that's why we have these types of builds for people to try out :)
05:29:23  <isaacs>and you shoudl be using the much more awesome fs.watch() anyway
05:29:30  <guybrush>i run my apps on 0.7.10-pre or something already, only minor issues most tests passed
05:29:34  <isaacs>watchFile is slow and terrible
05:30:51  <guybrush>i dont use fs.watch* at all i think, cant remember that i used it anywhere
05:38:45  <rowbit>SubStack, pkrumins: Encoders down:
05:58:45  <rowbit>Hourly usage stats: []
06:08:22  <guybrush>oh one thing i noticed right now, in 06 i just reused the same unix-socket - now i have to unlink it first?
06:09:14  <guybrush>like i listen with a server on the unix-socket, the server crashes - the unix-socket still remains and cant be used to listen on again
06:09:45  <rowbit>SubStack, pkrumins: Encoders down:
06:09:56  <isaacs>guybrush: yeah, it doesn't clobber now, i don't think
06:10:35  <guybrush>its really just a view tests failing, i think i am fine after getting some food into my belly
06:11:53  <guybrush>isaacs: so the proper way to handle this is, to just unlink if the socket already exists?
06:11:58  <SubStack>isaacs: https://github.com/substack/dnode/blob/pipe/examples/stream/connect.js https://github.com/substack/dnode/blob/pipe/examples/stream/listen.js
06:12:11  <SubStack>also trying to get weakrefs working in this release
06:12:15  <guybrush>SubStack: will the dnode changes be backwardscompatible?
06:12:24  <isaacs>SubStack: nice!
06:12:30  <SubStack>guybrush: for tcp connections, mostly
06:12:39  <SubStack>for browser connections, I'm dropping the magic .listen(app) noise
06:12:45  <guybrush>the pipe-able api is just another gamechanger!
06:12:49  <SubStack>instead you'll use browser-stream to set that up
06:13:03  * ryan_stevensquit (Quit: Leaving.)
06:13:04  <guybrush>sounds really cool, will you drop socketio?
06:13:07  <SubStack>but .connect() and .listen() with hosts and ports works the same
06:13:12  <SubStack>yes socketio is already dropped in this fork
06:13:28  <guybrush>w00t cant wait to see this in action
06:14:19  <SubStack>oh wait that example uses `new` which isn't necessary
06:14:24  <guybrush>its much better to let another module implement browser<->server with stream
06:14:28  <SubStack>that was from when I was testing the internal prototype
06:14:52  <SubStack>guybrush: also it's much easier to use dnode on top of other streaming transports this way too!
06:14:56  <SubStack>including multiband streams
06:15:12  <SubStack>which is something I want to use for browserling
06:15:20  <guybrush>im sure i cant even think of all the possibilities
06:15:28  <SubStack>stream all the things
06:15:35  <SubStack>plus, kickin' new logo
06:15:44  <SubStack>http://substack.net/images/dnode.png
06:15:44  <guybrush>the skater-turtle? :D
06:15:45  <rowbit>SubStack, pkrumins: Encoders down:
06:15:54  <guybrush>retweeted that already!
06:16:45  <rowbit>SubStack, pkrumins: Encoders down:
06:25:32  * ryan_stevensjoined
06:31:15  <rowbit>SubStack, pkrumins: Encoders down:
06:48:09  * blakmatrixpart
06:51:03  <guybrush>isaacs: like that https://github.com/guybrush/nexus/blob/master/bin/server.js#L168-176 -- at least it works for me (i think :D)
06:58:45  <rowbit>Hourly usage stats: []
07:08:15  <rowbit>SubStack, pkrumins: Encoders down:
07:13:45  <rowbit>SubStack, pkrumins: These encoders are STILL down:
07:32:29  * dominictarrjoined
07:35:25  <SubStack>a dominictarr appears!
07:36:07  * SubStackis hacking clean weakrefs into dnode-protocol
07:36:26  <SubStack>dominictarr: also https://github.com/substack/dnode/tree/pipe/examples/stream
07:36:46  <SubStack>particularly, https://github.com/substack/dnode/blob/pipe/examples/stream/listen.js#L10 and https://github.com/substack/dnode/blob/pipe/examples/stream/connect.js#L13
07:54:45  * dominictarrquit (Ping timeout: 265 seconds)
07:56:44  <SubStack>ug that old {local,remote}Store patch thejh sent me is so bad, ripping all of this out
07:56:57  <SubStack>it doesn't even play nicely with weakrefs, I don't know why it's in there at all
07:58:15  <rowbit>SubStack, pkrumins: Encoders down:
07:58:39  <guybrush>will you depend on node-weak?
07:58:45  <rowbit>Hourly usage stats: []
08:01:44  <SubStack>guybrush: only in the tests
08:01:46  <SubStack>and in dnode proper
08:02:05  <SubStack>dnode-protocol will not directly depend on it since I need to use it in the browser
08:02:22  <guybrush>some time ago i tried to look into the memleak-issue, just didnt get it
08:11:54  <SubStack>haha whoa, calling Array.prototype.indexOf() on an object literal with numeric keys is 50% faster than calling .indexOf on a real array directly
08:12:00  <SubStack>in my test
08:12:29  <SubStack>oh wait nevermind
08:12:34  <SubStack>it only works if you set 'length'
08:12:38  <SubStack>it was just returning -1 is why
08:13:13  <SubStack>right, it's slightly slower as I would expect
08:13:19  <SubStack>FALSE ALARM
08:18:36  <guybrush>btw isaacs the Error: kill ESRCH does not appear anymore in 0.7.x
08:18:57  <guybrush>also epipe has gone somehow hopefully haha
08:19:51  <SubStack>I fucking hate epipe
08:19:52  <SubStack>so much
08:19:58  <SubStack>kill it kill it kill it
08:20:12  <SubStack>epipe is why browserling crashes so much
08:20:23  <SubStack>and I have no idea how to even find where it's coming from
08:20:24  <guybrush>the best things are random errors which only occur occasionally
08:20:58  <SubStack>if I tried to write to an unwritable stream I DON'T FUCKING CARE
08:21:04  <SubStack>just don't explode
08:21:13  <SubStack>that's the one thing that node shouldn't do, explode
08:21:20  <SubStack>but that's what it does
08:24:48  <guybrush>lol my internetconnection just drops randomly all the time too...... fucking isp - i have to do a call with the phone to clear the wire or something, then it works again. and the first thing they do? they lower the bandwidth and see what happens
08:24:51  <guybrush>bastards
08:44:52  * ryan_stevensquit (Quit: Leaving.)
08:51:20  <SubStack>wooo 4 files changed, 39 insertions(+), 168 deletions(-)
08:54:15  <rowbit>SubStack, pkrumins: Encoders down:
08:58:45  <rowbit>Hourly usage stats: []
09:14:15  <rowbit>SubStack, pkrumins: These encoders are STILL down:
09:30:43  * dominictarrjoined
09:30:59  <SubStack>'hoy
09:48:31  <dominictarr>substack, I SAW THAT
09:48:39  <dominictarr>APPROVE VERY MUCH
09:49:45  <rowbit>SubStack, pkrumins: Encoders down:
09:54:26  <dominictarr>SubStack, I'm getting a little concerned with this talk about "client side package managers"
09:55:11  <dominictarr>I mean, we have the worlds best package manager already. so why would we want another one?
09:58:45  <rowbit>Hourly usage stats: []
10:01:34  <SubStack>haha yeah
10:01:43  <SubStack>dominictarr: who is giving that talk?
10:02:01  <SubStack>I just use npm since it has the most packages
10:02:38  <SubStack>the most packages and the easiest to publish to and libraries can be quite tiny and reusable
10:04:34  <SubStack>dominictarr: also .listen() and .connect() are implemented in terms of .pipe() in dnode, readable/writable streaming is the primitive in dnode now
10:04:55  <dominictarr>SubStack, SWEET
10:04:55  <SubStack>also: weakrefs
10:04:58  <SubStack>working on those right now
10:05:09  <dominictarr>what are you using weakrefs for?
10:05:11  <SubStack>I've already got a counter lib and an example script using tootallnate's node-weak
10:05:20  <dominictarr>here is one https://github.com/caolan/jam
10:05:24  <SubStack>weakrefs for auto-culling
10:05:27  <SubStack>oh right, jam
10:05:44  <SubStack>weakrefs to the memory can get garbage collected when functions aren't being used anymore
10:06:01  <dominictarr>I saw tj and isaacs mention the them a few times, and that got me worried.
10:06:13  <SubStack>I also want to have an option you can switch on that sets an absolute maximum number of callbacks a session can have
10:06:45  <dominictarr>I've been thinking of using weakrefs to test garbage collection.
10:07:01  <SubStack>it's fun to see what triggers garbage collection
10:07:09  <dominictarr>to test wether something actually gets disposed of properly
10:07:27  <dominictarr>that can be tricky with complex event emitters and streams.
10:07:44  <SubStack>when I make an array with 12000 function elements and clear it it's not triggered but then at 13000 it triggers
10:08:01  <SubStack>fun to tinker with
10:11:00  <dominictarr>if you build really large objects with logging you can see it pausing to collect
10:12:46  <SubStack>oh and another thing
10:13:03  <SubStack>when I was thinking out loud on twitter yesterday about writable streams having a .accept
10:13:07  <SubStack>it was from this: https://github.com/substack/dnode/blob/pipe/lib/dnode.js#L56-L59
10:13:50  <SubStack>because I want to pipe raw objects through a stream multiplexer in a multi-band fashion
10:14:13  <SubStack>without having to stringify/parse needlessly
10:14:44  <SubStack>but if writable streams could declare their accept preferences, then readable streams could more intelligently emit data
10:15:43  <dominictarr>SubStack, that is a quite a good point for multiplexers.
10:15:45  <dominictarr>hmm.
10:15:57  <SubStack>multi-band all the streams!
10:16:23  <SubStack>so for instance something like JSONStream.stringify() could have a .accept = 'object' to signify that it eats objects on 'data'
10:16:51  <SubStack>or other streams could have an array 'accept' header to state their preference order if they can accept multiple types of input
10:16:59  <dominictarr>you mean spews them out
10:17:04  <dominictarr>oh, no
10:17:06  <dominictarr>stringify
10:17:10  <SubStack>the problem is that Stream.prototype.pipe() isn't smart about this at all
10:17:27  <SubStack>it just pumps the same data to every connected writable stream
10:17:58  <dominictarr>you could have a SmartStream wrapper that wrapped pipe and inserted extra streams if necessary
10:18:22  <SubStack>yes, I was poking at some sort of AcceptStream
10:18:37  <SubStack>that could negotiate between readable and writable streams what to emit
10:19:16  <dominictarr>something like smart(RAW, null, 'buffers').pipe(smart(JSONSTREAM, 'line', 'object'))
10:19:17  <SubStack>or perhaps a stream demuxer could do this
10:19:28  <SubStack>where the readable stream emits to different event names
10:19:40  <SubStack>and the demuxer turns those names into 2 streams that emit 'data'
10:20:23  <dominictarr>it's probably simpler to insert extra streams into the pipe
10:20:36  <dominictarr>afterall, these translation streams will be sync
10:21:10  <SubStack>probably
10:21:57  <SubStack>maybe some convention where you emit to data.TYPE and a demuxer stream in the pipeline pulls those apart into regular data streams
10:22:44  <dominictarr>you'd totally have to regig the pipe implementation if you are gonna emit more events
10:23:02  <SubStack>I've done that before
10:23:18  <SubStack>for stoppable .pipe()s with multiple targets
10:23:40  <dominictarr>there is so much subtly to pipe, it's dangerous.
10:23:46  <SubStack>very
10:24:05  <dominictarr>a small wrapper around pipe is okay
10:24:45  <SubStack>well perhaps it could all go through the same data events
10:24:49  <dominictarr>I prefer the idea of an accept=type, produce=type properties on the streams
10:25:08  <SubStack>ah produce would be a good name
10:25:14  <dominictarr>and then a translator stream that knows how to change from one to the other
10:26:13  <SubStack>yes, this could work very well for my use-case
10:26:17  <dominictarr>plus, if it's just properties, it's one line pull-requests to add them to people's modules.
10:27:13  <dominictarr>or core's for that matter
10:27:39  <SubStack>and there aren't many streams that emit objects yet
10:27:48  <dominictarr>not in core.
10:27:51  <SubStack>it would be nice if streams stated whether they emitted buffers or strings though
10:28:14  <dominictarr>the stream doc's mentions a setEncoding
10:30:00  <dominictarr>hmm. but there is no way to read the encoding
10:30:28  <dominictarr>so a readable stream can't tell you what it will emit
10:31:34  <SubStack>it's not on stream.prototype though
10:31:41  <SubStack>just in assorted methods
10:31:48  <dominictarr>oh, because the user sets it on the readable stream
10:32:31  <dominictarr>yeah, it's just a feature on the core streams, presumably.
10:33:58  <dominictarr>it takes `base64` `ascii` and `utf8`
10:38:04  <dominictarr>accept and produce properties are simple enough, and are easy to set manually.
10:38:18  <dominictarr>or add to pull requests.
10:39:31  <dominictarr>the trouble is, adoption of streaming is not yet widespread.
10:40:34  <SubStack>and there is a lot of territory that hasn't been sufficiently explored
10:40:38  <SubStack>like multi-band streams
10:40:54  <SubStack>and mux/demuxers
10:41:31  <SubStack>and type negotiation of course
10:42:07  <SubStack>need to blaze some trails
10:43:09  <SubStack>NICE HOMOPHONE
10:45:37  <dominictarr>browser-stream implements multiband streams, effectively, but still creates the appearance of individual streams
10:45:42  <dominictarr>SubStack, https://github.com/substack/node-browserify/issues/174
10:45:51  <dominictarr>SubStack, https://github.com/substack/node-browserify/issues/175
10:45:55  <dominictarr>you thoughts?
10:46:28  <SubStack>saw those
10:46:50  <SubStack>well a second-arg on require is used in some places already to state the origin file
10:47:46  <SubStack>another idea: file.browser.js
10:48:02  <SubStack>also: browser_modules
10:49:50  <dominictarr>the origin file?
10:50:03  <SubStack>the file that require() was called from
10:51:22  <SubStack>also if we're going to change how require() works you can already do typeof window === 'undefined' ? (require)('server-thing') : require('client-thing')
10:53:20  <dominictarr>good point.
10:53:52  <dominictarr>so I could just write a function to install this myself
10:54:43  <SubStack>also there are some hooks you can listen to to delete files from the bundle
10:54:52  <SubStack>bundle.register() might be a good use for this
10:55:20  <SubStack>if you just delete the elements out of bundle.files before bundle.bundle() gets called they won't show up
10:58:45  <rowbit>Hourly usage stats: []
11:07:46  <SubStack>haha rest
11:07:50  <SubStack>what's up with that
11:08:01  * SubStacklikes state and streams
11:14:18  <rowbit>SubStack, pkrumins: These encoders are STILL down:
11:21:45  <rowbit>SubStack, pkrumins: Encoders down:
11:23:48  <dominictarr>he keeps on saying "business applications" I think he might be a Java developer.
11:29:33  * dominictarrquit (Ping timeout: 244 seconds)
11:30:45  <rowbit>SubStack, pkrumins: Encoders down:
11:32:45  <rowbit>SubStack, pkrumins: Encoders down:
11:51:15  <rowbit>SubStack, pkrumins: Encoders down:
11:58:45  <rowbit>Hourly usage stats: []
12:26:16  <rowbit>SubStack, pkrumins: Encoders down:
12:37:25  * simcop2387quit (Excess Flood)
12:37:30  * cubert_joined
12:37:31  * farnsworthjoined
12:37:32  * simcop2387joined
12:37:33  * simcop2387quit (Changing host)
12:37:33  * simcop2387joined
12:58:45  <rowbit>Hourly usage stats: []
13:01:38  * cubert_changed nick to cubert
13:10:48  * xaqjoined
13:12:10  * xaqquit (Remote host closed the connection)
13:14:15  <rowbit>SubStack, pkrumins: These encoders are STILL down:
13:58:47  <rowbit>Hourly usage stats: []
14:05:46  * xaqjoined
14:10:06  * wiwilliajoined
14:26:45  <rowbit>SubStack, pkrumins: These encoders are STILL down:
14:51:57  <SubStack>running a pummel test for dnode with weak refs
14:52:38  <SubStack>10 clients going full-out at about 100 msgs / sec each
14:53:05  <SubStack>memory hasn't gotten above 1.4% yet after 2.5 minutes
14:53:13  <SubStack>I'll let it run to 10 minutes
14:54:02  * dominictarrjoined
14:54:12  <SubStack>seems to be at steady state between 1.4% and 0.5% memory usage
14:55:20  <SubStack>v8 is really aggressive with optimizations though so it might be hard to tell if this is even doing anything
14:58:45  <rowbit>Hourly usage stats: []
15:00:11  <SubStack>already up to 2.1% without weakref culling
15:00:47  <SubStack>2.3 at 1 minute in
15:01:37  <SubStack>jumping around a bit but now at 2.9, 1.5 minutes in
15:02:34  <SubStack>3.2 at 2 minutes
15:02:54  <SubStack>making toast &
15:04:45  <SubStack>4.2%
15:04:55  <SubStack>ok it's safe to say that this thing is leaking memory without weakrefs
15:08:45  * _sorensenjoined
15:14:15  <rowbit>SubStack, pkrumins: These encoders are STILL down:
15:17:22  <isaacs>guybrush: you could also use rimraf, which just destroys everythign it sees
15:17:32  <isaacs>guybrush: (re: https://github.com/guybrush/nexus/blob/master/bin/server.js#L168-176)
15:17:56  <isaacs>guybrush: rimraf(path, cb)
15:18:23  <isaacs>dominictarr, SubStack: Yes, I'm quite serious about that. the module system is indeed locked.
15:18:35  <isaacs>innovate away. we wont' steal your cookies.
15:20:36  <SubStack>so weakrefs work
15:20:46  <SubStack>and I've verified that they prevent memory leaks
15:21:13  <SubStack>and all the tests pass of course
15:24:06  <tanepiper>nice just saw your tweet
15:24:28  <tanepiper>so really for my talk I should show the 'new' way? :D
15:24:35  <isaacs>SubStack: that's many types of awesomes.
15:24:53  <SubStack>tanepiper: if you like
15:24:55  <isaacs>SubStack: weakrefs how, exactly? using the --harmony_collection flag?
15:25:01  <SubStack>I haven't whipped up a browser example yet though
15:25:11  <SubStack>isaacs: using https://github.com/TooTallNate/node-weak
15:25:28  <isaacs>ah, nice
15:26:06  <tanepiper>oh you've changed the logo too!
15:26:15  <isaacs>$ ./node --harmony_collections
15:26:15  <isaacs>> WeakMap
15:26:17  <isaacs>[Function: WeakMap]
15:26:21  <SubStack>and I can even feature-detect if browsers have weakmaps and use that accordingly
15:26:33  <isaacs>SubStack: it'd be good to write a WeakMap implementation that used node-weak
15:26:43  <isaacs>SubStack: then you could optionally depend on that, or sniff for WeakMap
15:26:45  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
15:26:48  <SubStack>i think there is one already
15:26:52  <isaacs>SubStack: since that's what browsers will have eventually
15:27:13  <isaacs>buti dont' think a weakref callback is on the spec's agenda
15:27:55  * tanepiperloves when things change or get new features just before he talks about them :p
15:28:19  <SubStack>tanepiper: it means you are talking about happening things!
15:28:28  <SubStack>and you are on the bleeding edge and all that
15:28:46  <tanepiper>hehe, yea :) It'll be awesome
15:29:12  <tanepiper>i'm going to talk about my annoyance of people who think js is a toy lang and call them our as trolls
15:29:17  <tanepiper>then dnode
15:29:51  <tanepiper>(then hopfully seaport/airport if I get time)
15:31:34  <dominictarr>SubStack, require.toString() == 'function require(path) {...
15:31:41  <dominictarr>so no second argument.
15:31:57  <dominictarr>did you mean it uses a second argument in browserify?
15:32:01  <SubStack>dominictarr: there are 2 require()s
15:32:13  <SubStack>it's complicated
15:32:15  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
15:32:27  <dominictarr>do you mean the global require?
15:33:11  <SubStack>silly rowbit there are plenty of servers
15:33:21  <SubStack>I just need to retool the queue balancer
15:35:59  <tanepiper>so is dnode going full stream then, and ditching .listen/.connect ? https://github.com/substack/dnode/blob/2143136366ed10df5a18161627667c2ce2b8a8e6/lib/dnode.js
15:36:21  <SubStack>.listen and .connect are still around but they are written in terms of the readable/writable stream
15:37:00  <SubStack>tanepiper: index.js has connect and listen
15:37:06  <SubStack>index.js is node-specific code
15:37:21  <SubStack>lib/dnode.js is both node and browsers
15:37:44  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
15:38:10  <SubStack>they should just refresh >_<
15:39:10  <tanepiper>what about .use ? my app is using it for dnode-session and some of my app code
15:39:39  <dominictarr>I smell a module that wants a nappy changed
15:39:54  <tanepiper>oh i see, .on('local' instead - so this. in there ?
15:40:34  <SubStack>yes instead of .use use that
15:40:42  <SubStack>events > middleware
15:40:53  <dominictarr>isaacs, I think I've asked you about this before, but what gave you guys the idea to use node_modules and abandon NODE_PATH?
15:41:19  <SubStack>npm was doing modules correctly since the beginning I thought?
15:41:33  <SubStack>it was just really hackish and terrible with crazy symlink tricks
15:42:45  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
15:43:02  <isaacs>SubStack: well... npmwas kind of making do, but not actually doing modules "correctly"
15:43:21  <tanepiper>SubStack: agreed - middleware has been a pain :| I worked around most of my issues but OH MY GAWD THE SPAGHETTI CODE
15:43:21  <SubStack>npm had lofty ideals then
15:43:22  <isaacs>SubStack: the node_modules approach was a way to make npm less hacky, and get the semantics more correct
15:43:27  <dominictarr>npm < 0.3 was pretty wacky with shims and stuff.
15:43:34  <isaacs>dominictarr: <1.0
15:43:41  <isaacs>dominictarr: though, yes, 0.2 was much worse
15:43:52  <isaacs>remember "modules": { "foo" : "lib/utils/foo.js" }?
15:43:58  <isaacs>just so that you could do require("bar/foo")
15:44:08  <isaacs>instead of require("bar/lib/utils/foo.js")?
15:44:10  <dominictarr>yeah, and the shim files it would generate
15:44:12  <isaacs>commonjs inSANity
15:44:22  <isaacs>seemed like a cute idea at the time
15:44:26  <SubStack>haha I remember those
15:44:29  <isaacs>in practice: very terrible.
15:44:38  <SubStack>I still get warnings about those from old versions of code on npm
15:44:43  <SubStack>which is very annoying actually
15:45:04  <dominictarr>so what gave you the idea of node_modules and default local installation?
15:45:19  <isaacs>the worst part was like, "Oh, look there's an error when i use this redis function. well, let's see what redis is... oh, it's a symlink. ok. follow the symlink, open it up in vim... '// generated by npm please don't touch!' FFFFFFFFFFFFFFFUUUUUUUUUU"
15:45:32  <maxogden>lol
15:45:51  <isaacs>dominictarr: it was ryah mostly, actually.
15:46:21  <isaacs>dominictarr: ryah was like, "fix this or we're removing the module system i don't give a shit what anyone thinks with their bullshit shims and module insanity" because he encountered it one day.
15:46:25  <tanepiper>npm could do with some genocide - or at least some way of marking broken packages
15:46:51  <dominictarr>ahuh
15:47:10  <isaacs>dominictarr: i mean, i knew it was a problem, but he really was rageful over it. i'd grown too accustomed to the pain to really feel it, plus i knew how it worked, so meh.
15:47:47  <dominictarr>who suggested to make everything local?
15:47:50  <isaacs>but i was struggling with the process.nextTick(function () { require('foo') }) bug, where you'd occasionally get the wrong version.
15:48:11  <isaacs>so for npm 0.3, i was making everything local already, and setting up the shims tht way, but it still didn't fix the problem as nicely.
15:48:16  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
15:48:25  <isaacs>"local" in the sense of "locally installed in the module, which was installed globally"
15:48:29  <isaacs>like how global installs are now
15:48:40  <tanepiper>it was a beautuful accident/decsision then :D
15:48:44  <isaacs>and we had the `npm bundle` command pretty early on.
15:48:50  <tanepiper>oh ffs, keyboard flail
15:48:53  <tanepiper>*fail
15:48:55  <dominictarr>like you'd have a simlink to the global install?
15:49:12  <isaacs>dominictarr: nono, i mean, the default install was global, but it just put deps in subfolders.
15:49:34  <isaacs>dominictarr: but it still had lots of crazy symlinks everywhere
15:49:56  <isaacs>npm bundle used to be just "do a global install, with prefix=~/node_modules"
15:50:42  <dominictarr>install into home/isaacs/node_modules ?
15:50:45  <isaacs>so, with ryan raging about it, and me wanting to work around this "must require on first tick" issue, we came up with basically the module system we have now (which was also thankfully only a pretty minor code change) and i made npm install be local.
15:50:55  <isaacs>dominictarr: yeah, but it'd do a "global install" into that folder.
15:51:07  <isaacs>like, with symlinks and [email protected] folders and other bullshit.
15:51:15  <isaacs>and an "active" version
15:51:48  <isaacs>and no one really understood 'active' vs 'inactive' versions anyway. it was an implementation detail that i was never really happy about.
15:51:57  <dominictarr>I'm confused. but it doesn't matter, because what we have now is so simple.
15:52:06  <isaacs>yeah, it was confusing :)
15:52:18  <tanepiper>i'm also glad you went with a non-enforced preferGlobal
15:52:32  <dominictarr>every package manager was like that. I never knew how rubygems worked.
15:52:38  <isaacs>tanepiper: yeah. it's kind of dumb that it warns when you'er installing a listed dependency.
15:52:47  <isaacs>it should only be if you dont' list it as a dep.
15:53:04  <isaacs>since clearly at that point you know what you doing.
15:54:11  <dominictarr>once I met a guy who was working on a ruby continious integration server... and he got so emotionally distressed telling me about bundler.
15:54:33  <maxogden>yea bundler is so overengineered
15:54:42  <dominictarr>and I asked him if bundler supported version conflicts... he didn't know.
15:55:45  <isaacs>bundler : ruby :: npm : node
15:55:51  <isaacs>comparing npm to rubygems is not quite right
15:56:20  <isaacs>but yes, my experience with bundler is that it is a great example of basically everythign i dislike about ruby
15:56:48  <isaacs>lots of magic, many moving parts whirring about, etc. the same complaint can be made about npm, but we don't *like* that aspect of npm.
15:57:01  <isaacs>like, i acknowledge that as a bug
15:57:06  <dominictarr>the thing is, everyone knows how npm and node_modules works.
15:57:22  <dominictarr>you don't even need npm. you could install all your own modules manually
15:57:30  <isaacs>dominictarr: well, not everyone. just everyone who's read the docs :)
15:57:37  <isaacs>or pokes around in the folder
15:58:45  <rowbit>Hourly usage stats: []
15:58:46  <dominictarr>yeah, anyone who isn't a beginner.
15:58:52  <dominictarr>anymore
16:00:15  <dominictarr>rubygems, and other package managers use a $PATH variable to specify the locations of modules,
16:00:31  <SubStack>node.js: everything is nice
16:00:35  <SubStack>that should be the slogan
16:00:39  <dominictarr>which is easy to hack on to your language, but pretty retarded.
16:00:57  <dominictarr>SubStack, that is the slogan for ruby!
16:01:16  <maxogden>matz is nice and so we are nice
16:01:22  <dominictarr>"optimised for developer happyness"
16:01:25  <SubStack>haha really?
16:01:32  <dominictarr>yes
16:01:41  <SubStack>node.js: isaacs knows bestâ„¢
16:01:43  <dominictarr>they just don't know they are suffering
16:01:46  <maxogden>aka MINASWAN
16:02:13  <SubStack>I would rather that the things were nice than the people were nice
16:02:26  <SubStack>it's pretty easy to ignore people, I do that all the time
16:02:39  <dominictarr>you don't even have a phone
16:03:12  <maxogden>MINASWAN:ruby::IKB:node
16:03:17  <maxogden>'isaacs knows best'
16:03:34  <SubStack>why would I get a phone?
16:03:51  <SubStack>phones are computers with terrible input interfaces
16:04:34  <tanepiper>oh yea, and FUCK debugging websites on mobile devices
16:05:32  <maxogden>ios6 remote webkit inspector is nice
16:05:33  <maxogden>but only works on ios6
16:06:03  <SubStack>maxogden: http://github.com/substack/schoolbus
16:06:06  <tanepiper>yea, and ios6 is only available to ios devs
16:07:36  <maxogden>SubStack: whoa siq
16:07:46  <isaacs>nono, the corresponding MINASWAN for node is "JavaScript Is Fun And So Node Is Fun"
16:07:51  <isaacs>JIFASNIF
16:07:54  <SubStack>maxogden: it's basically webdriver without selenium or java
16:08:16  <SubStack>all you need to do to use it is drop that proxy script into the pages you want to drive around
16:08:31  <SubStack>I have a proxy to do that kicking around too
16:08:36  <tanepiper>niiice because again, selenium can suck ma baws
16:08:50  <SubStack>tanepiper: it's landing in testling very soon too
16:09:04  <SubStack>everything is actually already working we just need to deploy it
16:09:40  <SubStack>and the bound vars use dnode-protocol to wrap callbacks
16:09:50  <SubStack>for when you need to thread state between the contexts
16:10:00  <tanepiper>:o
16:12:05  <tanepiper>that's going in my talk maxogden :D
16:12:33  <tanepiper>especially since the first 5 minutes is calling out trolls for calling JS a toy language, and then going on to say that JS is a toy language :D
16:12:58  <tanepiper>(but the point is the trolls think it's an action toy, while really it's lego mindstorm)
16:14:05  * ryan_stevensjoined
16:17:08  * ryan_stevensquit (Client Quit)
16:17:14  <rowbit>SubStack, pkrumins: Encoders down:
16:18:45  <rowbit>SubStack, pkrumins: Encoders down:
16:19:45  <rowbit>SubStack, pkrumins: Encoders down:
16:19:49  <SubStack>what the crap, why isn't engine.io in npm?
16:21:46  <rowbit>SubStack, pkrumins: Encoders down:
16:22:08  <tanepiper>more low-level sockets stuff?
16:22:35  <SubStack>no it's socket.io's pared down socket.io base lib
16:22:45  <rowbit>SubStack, pkrumins: Encoders down:
16:23:54  <tanepiper>looks like it's breaking right now anyway http://travis-ci.org/#!/LearnBoost/engine.io
16:24:22  <tanepiper>but i did not know of this, looks like it might fit another project i'm working on
16:24:41  <rowbit>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
16:24:41  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
16:24:49  <SubStack>woot
16:26:45  <rowbit>SubStack, pkrumins: These encoders are STILL down:
16:28:17  <dominictarr>isaacs, if your using a $PATH based module system, can that handle version conflicts?
16:28:47  <dominictarr>each module would need it's own $PATH, but the path is global.
16:28:51  <dominictarr>so, no.
16:29:05  <SubStack>dominictarr: fuck yeah skates is browserifiable?
16:29:18  <dominictarr>yeah.
16:29:20  <SubStack>I'm not even going to bother writing a socket.io example if this is the case
16:30:14  <dominictarr>skates actually has browserify built in.
16:31:11  <SubStack>but the package.json has a browserify entry
16:31:14  <SubStack>super sweetness
16:32:03  <dominictarr>the server uses browserify,
16:32:19  <dominictarr>but then the client needs to require('skates')
16:32:39  <dominictarr>so that hits the browserify entry in the package.json
16:33:09  <SubStack>why does the server need to use browserify?
16:34:00  <dominictarr>it's one of it's opinions.
16:34:14  <dominictarr>that you should use a module compiler.
16:34:22  <SubStack>well that could be a build step
16:34:34  <dominictarr>and it appends the sockjs code
16:34:36  <SubStack>the problem is that browserifying things can be pretty slow
16:34:48  <dominictarr>but only when you start up?
16:35:09  <SubStack>but if you're iterating on a server a lot it can get annoying
16:36:14  <dominictarr>it's kinda entangled with another aspect too.
16:36:41  <dominictarr>it bundles some configuration, so the client can just do require('skates')()
16:36:53  <dominictarr>otherwise you'd need to edit stuff there too.
16:36:59  <dominictarr>which is just annoying
16:37:13  <SubStack>how much stuff?
16:38:10  <SubStack>just got a new idea
16:38:13  <dominictarr>this much https://github.com/dominictarr/skates/blob/master/index.js#L61-67
16:38:40  <SubStack>a command-line tool that installs custom versions of libraries into node_modules based on parameters you give it
16:39:02  <SubStack>in an upgradable way
16:39:13  <dominictarr>haha. I'm writing a blog post about that at the moment.
16:39:29  <dominictarr>it's titled "WHY YOU SHOULD NEVER WRITE A PACKAGE MANAGER"
16:39:33  <SubStack>it's like `rails new mystupidapp` except not completely stupid
16:39:39  <SubStack>well this would just use npm
16:39:59  <SubStack>it would just twiddle some config files in a pre-installed package
16:40:22  <dominictarr>so where does this diverge from a package manager?
16:40:45  <SubStack>it uses npm to fetch the base dists
16:41:07  <SubStack>then this tool mutates the base dists based on dynamic configuration
16:41:42  <dominictarr>like, flattening each module into a single file, perhaps?
16:42:02  <SubStack>all of the things
16:42:10  <SubStack>I'm not sure what would be good for exactly yet
16:48:24  <dominictarr>oh my god. bundler sounds retarded.
16:48:31  <dominictarr>http://patshaughnessy.net/2011/9/24/how-does-bundler-bundle
16:48:47  <dominictarr>you can only have a single version of each package
16:49:49  <dominictarr>so when it gets a conflict, it attempts to resolve it by changing the version of the module that required the conflicting module, so that everyone can be friends.
16:50:03  <dominictarr>that is so wrong
16:51:34  <dominictarr>I'd hate to ask how rubygems works.
16:51:45  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
16:52:45  <dominictarr>SubStack, so yeah, skates cuts some corners to get the job done and make it so that I don't have to remember the api to the websocket compat. layer
16:53:09  <SubStack>might not be so good for demonstration purposes then
16:54:50  <dominictarr>maybe json-sockets is worth looking at. it's a socket.io that uses require. not a static js file.
16:56:03  * st_lukejoined
16:56:33  <dominictarr>either way, skates is pretty fresh. it's not polished much, but is simple.
16:56:45  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
16:57:06  <dominictarr>it needs a middleware system, for the sockets.
16:57:36  * ryan_stevensjoined
16:58:13  <SubStack>giving it a spin
16:58:45  <rowbit>Hourly usage stats: []
16:59:08  * xaqquit (Remote host closed the connection)
16:59:40  * blakmatrixjoined
17:02:15  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 2 on 2 servers. Total servers: 3)
17:07:45  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
17:11:40  <SubStack>isaacs: any idea why the desc is all messed up? http://search.npmjs.org/#/dnode-protocol
17:12:19  <SubStack>meh, I'll republish it
17:12:33  <isaacs>SubStack: haha, because i'm only detecting # headings, not === headings
17:12:40  <isaacs>SubStack: patch welcome
17:12:45  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
17:12:57  <SubStack>isaacs: wait it's not looking at the description field I typed?
17:13:07  <isaacs>SubStack: it should be.
17:13:13  <isaacs>SubStack: unless that was null or something
17:13:34  <SubStack> "description": "implements the dnode protocol abstractly",
17:13:38  <isaacs>SubStack: might have a bug. lemme check.
17:14:35  <isaacs>SubStack: yep. most def a bug.
17:14:45  <rowbit>SubStack, pkrumins: These encoders are STILL down:
17:14:54  <isaacs>SubStack: can you post here? https://github.com/isaacs/read-package-json/issues
17:14:57  <isaacs>i'll fix it tomororw prolly
17:16:03  <SubStack>submitted
17:18:15  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
17:18:46  <SubStack>dominictarr: is there something particular to websockets that necessitates them having their own web server?
17:19:17  <SubStack>why can't I just dispatch myself and pass in the req,res?
17:20:46  <dominictarr>why can't you just use a handler?
17:21:37  <SubStack>how do you mean?
17:21:55  <SubStack>use the websocket server's handler?
17:21:57  <SubStack>that's backwards
17:22:27  <SubStack>what I really want is: req.pipe(websocket).pipe(res)
17:22:50  <SubStack>websocket can listen on itself for 'pipe' events to pick up the reference to res
17:23:12  <SubStack>and it can set the upgrade header and do whatever other things websocket does
17:23:28  <dominictarr>you want to pipe the request back through the websocket?
17:23:47  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
17:24:22  <SubStack>dominictarr: websockets are just http requests like any other except that they set the upgrade headers
17:24:28  <SubStack>and then do other stuff
17:24:33  <dominictarr>yes.
17:24:43  <dominictarr>but node http api handles them different
17:24:50  <SubStack>oh right and that's dumb
17:24:54  <dominictarr>it's tacked on the side
17:25:16  <SubStack>node should just ignore upgrade headers entirely
17:25:30  <SubStack>same with 'connect'
17:25:37  <SubStack>it should just treat that like any other http verb
17:25:49  <dominictarr>what about this:
17:25:59  <dominictarr>normal : function (req, res) { ... }
17:26:08  <dominictarr>req is readable, res is writable
17:26:18  <dominictarr>but with a websocket:
17:26:28  <dominictarr>function (ws, ws)
17:26:50  <dominictarr>so, the first arg is still readable, and the second arg is still writable
17:27:34  <dominictarr>and it would have some property to say it's a websocket.
17:28:05  <dominictarr>but you'd still get all the headers like normal, so middle ware etc, would still work.
17:28:16  <SubStack>that could work
17:28:28  <SubStack>but the problem is it would need to be bolted on strangely to node's http api
17:28:55  <dominictarr>yeah, well, thats node now
17:29:15  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
17:29:26  <dominictarr>maybe http should just emit a single ReadableWritableStream like net does.
17:29:31  * AvianFlujoined
17:30:14  <dominictarr>at least, it would be easy to make a http2 module and experiment
17:34:45  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
17:37:10  <isaacs>SubStack: fixed. will be in the next release, but if it's not causing undue harm, i'm gonna hold off on that until node 0.8.0 is ready to land
17:40:15  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
17:41:03  <SubStack>AvianFlu: http://github.com/substack/dnode/blob/pipe
17:41:38  <SubStack>especially https://github.com/substack/dnode/blob/pipe/index.js#L26-L37
17:45:15  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
17:45:29  * tilgovijoined
17:46:47  <rowbit>SubStack, pkrumins: Encoders down:,
17:46:47  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 2 on 2 servers. Total servers: 3)
17:49:32  * darshanshankarjoined
17:50:41  * isaacschanged nick to KarlVanHoet
17:50:48  * KarlVanHoetchanged nick to isaacs
17:52:17  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
17:57:47  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
17:58:45  <rowbit>Hourly usage stats: []
18:00:59  * tilgoviquit (Ping timeout: 252 seconds)
18:03:17  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
18:04:49  * tilgovijoined
18:08:47  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
18:10:39  * darshanshankarquit (Quit: darshanshankar)
18:14:17  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
18:19:47  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
18:24:47  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
18:26:04  * zz_shykeschanged nick to shykes
18:30:09  <dominictarr>SubStack, http://news.ycombinator.com/item?id=4136927
18:30:17  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 3)
18:35:03  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 5)
18:40:32  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 5)
18:42:01  * tilgoviquit (Ping timeout: 260 seconds)
18:45:32  <rowbit>SubStack, pkrumins: Developers waiting in the queue for ie9 (Queue length: 1 on 1 servers. Total servers: 5)
18:58:45  <rowbit>Hourly usage stats: []
19:00:24  <pkrumins>all better now
19:02:31  <chapel>so much better with no robit
19:02:40  <chapel>rowbit
19:12:01  * tilgovijoined
19:18:03  * shykeschanged nick to zz_shykes
19:18:22  * zz_shykeschanged nick to shykes
19:22:56  * shykeschanged nick to zz_shykes
19:33:32  <rowbit>SubStack, pkrumins: Encoders down:
19:34:57  <pkrumins>starts again
19:39:53  * wiwillia2joined
19:41:07  * wiwilliaquit (Ping timeout: 260 seconds)
19:42:32  * st_lukequit (Remote host closed the connection)
19:42:53  * tilgoviquit (Ping timeout: 264 seconds)
19:46:15  * tilgovijoined
19:56:54  * tilgoviquit (Ping timeout: 245 seconds)
19:58:45  <rowbit>Daily usage stats: []
19:58:46  <rowbit>Hourly usage stats: []
20:21:38  * xaqjoined
20:24:47  * tilgovijoined
20:29:37  * tilgovi_joined
20:30:24  * tilgoviquit (Ping timeout: 240 seconds)
20:40:08  * tilgovi_quit (Ping timeout: 276 seconds)
20:46:38  <jesusabdullah>SubStack: http://www.zendesk.com/wp-content/themes/zendesk-twentyeleven/img/t-landing_pages/facebook/thumb.png
20:46:46  <jesusabdullah>Reminds me of browrstleng a little bit ^__^
20:53:17  * wiwillia2quit (Ping timeout: 244 seconds)
20:54:12  * darshanshankarjoined
20:54:37  * darshanshankarquit (Client Quit)
20:58:45  <rowbit>Hourly usage stats: []
21:18:32  <rowbit>SubStack, pkrumins: Encoders down:
21:20:32  <rowbit>SubStack, pkrumins: Encoders down:
21:35:22  <jesusabdullah>maxogden: I freed up some boxes fyi---only like 5 or 6 but enough
21:36:41  <maxogden>i was able to stop some of mine to free up
21:36:50  <maxogden>got my new project running: http://outmapp.in
21:39:55  <chapel>width is too great
21:40:21  * st_lukejoined
21:41:15  <maxogden>its mega beta
21:41:20  <maxogden>hackathon product
21:41:26  * st_lukequit (Remote host closed the connection)
21:44:51  <jesusabdullah>maxogden: love the apbbreviation
21:45:37  * zz_shykeschanged nick to shykes
21:48:14  * wiwilliajoined
21:54:20  * tilgovijoined
21:58:45  <rowbit>Hourly usage stats: []
22:34:37  <tanepiper>who's good at regexs?
22:35:43  <blakmatrix>everyone!
22:36:19  <tanepiper>not me ;)
22:38:00  <tanepiper>I want, in a fragment of HTML to find all @mention names and replace them with links, so I have:
22:38:10  <tanepiper>tpl = tpl.replace(/\[email protected]([\w-]+)/gmi, '<a target="_blank" title="@$1" href="http://twitter.com/$1">@$1</a>');
22:38:24  <tanepiper>but I need to exclude @mentions already in links in the HTML fragment
22:40:25  <tanepiper>(I can use http://xregexp.com/ if it helps)
22:40:59  <chapel>refiddle.net
22:47:38  <tanepiper>yea, but i suck at regex :D
22:58:45  <rowbit>Hourly usage stats: []
23:02:27  * wiwilliaquit (Ping timeout: 244 seconds)
23:11:25  * wiwilliajoined
23:35:11  * xaqquit (Remote host closed the connection)
23:41:37  * _sorensenquit (Ping timeout: 252 seconds)
23:58:45  <rowbit>Hourly usage stats: []