00:00:00  * ircretaryquit (Remote host closed the connection)
00:00:08  * ircretaryjoined
00:03:29  * kazuponjoined
00:08:28  * kazuponquit (Ping timeout: 276 seconds)
00:30:11  * indexzerojoined
00:33:04  * dominictarrquit (Quit: dominictarr)
01:03:52  * icarotquit (Remote host closed the connection)
01:04:14  * kazuponjoined
01:04:15  * icarotjoined
01:07:30  * groundwaterjoined
01:08:49  * kazuponquit (Ping timeout: 252 seconds)
01:19:34  * indexzeroquit (Quit: indexzero)
01:24:03  * kazuponjoined
01:39:13  * kazuponquit (Remote host closed the connection)
01:41:31  * janderssenjoined
01:46:25  * c4milojoined
02:07:06  * janderssenquit (Quit: janderssen)
02:21:46  * c4miloquit (Remote host closed the connection)
02:28:19  * groundwaterquit (Quit: groundwater)
02:46:43  * janderssenjoined
02:56:05  * perezdquit (Quit: perezd)
02:57:39  * perezdjoined
02:59:25  * kazuponjoined
03:00:20  * groundwaterjoined
03:04:55  * kazuponquit (Ping timeout: 260 seconds)
03:27:54  * janderssenquit (Quit: janderssen)
03:44:28  * brsonjoined
03:46:23  * dr34dl0ckjoined
03:51:01  * brsonquit (Ping timeout: 248 seconds)
03:52:45  * brsonjoined
03:56:53  * dr34dl0ckquit (Quit: Colloquy for iPad - http://colloquy.mobi)
04:00:42  * icarotquit (Ping timeout: 264 seconds)
04:00:44  * kazuponjoined
04:05:19  * kazuponquit (Ping timeout: 246 seconds)
04:12:42  * amartensjoined
04:15:49  * janderssenjoined
04:16:21  * kazuponjoined
04:20:55  * icarotjoined
04:22:40  * kazuponquit (Remote host closed the connection)
04:23:26  * defunctzombie_zzchanged nick to defunctzombie
04:37:37  * normanmjoined
05:03:01  * stagasjoined
05:18:13  * kazuponjoined
05:41:45  * perezdquit (Quit: perezd)
05:43:54  * Tekk0njoined
05:47:29  * defunctzombiechanged nick to defunctzombie_zz
05:51:05  * kazuponquit (Remote host closed the connection)
05:53:20  * paddybyersjoined
05:55:38  * abraxasjoined
06:02:34  * groundwaterquit (Quit: groundwater)
06:08:03  * paddybyersquit (Ping timeout: 252 seconds)
06:28:31  * paddybyersjoined
06:32:19  * `3rdEdenjoined
06:44:31  * hzjoined
06:53:15  * brsonquit (Quit: leaving)
06:59:03  * janderssenquit (Quit: janderssen)
07:05:06  * bajtosjoined
07:14:49  * rendarjoined
07:16:46  * icarotquit (Ping timeout: 246 seconds)
07:23:48  * timoxleyjoined
07:31:25  * csaohjoined
07:37:42  * hzquit
08:05:24  * icarotjoined
08:08:30  * amartensquit (Quit: Leaving.)
08:18:55  * icarotquit (Remote host closed the connection)
08:19:37  * icarotjoined
08:22:14  * csaohquit (Ping timeout: 252 seconds)
08:25:27  * csaohjoined
08:32:40  * csaoh_joined
08:33:46  * csaohquit (Ping timeout: 246 seconds)
08:33:46  * csaoh_changed nick to csaoh
08:54:58  * icarotquit (Ping timeout: 276 seconds)
09:06:26  * csaohquit (Quit: csaoh)
09:25:43  * kuebkjoined
09:42:41  * roxlujoined
09:50:06  * csaohjoined
10:13:23  * LOUDBOTquit (Ping timeout: 276 seconds)
10:17:52  * csaohquit (Quit: csaoh)
10:19:30  * bajtosquit (Quit: bajtos)
10:30:45  * icarotjoined
10:33:35  * linusjoined
10:35:24  * bnoordhuisjoined
10:53:36  * csaohjoined
11:09:09  * jez0990joined
11:31:04  * st_lukejoined
11:40:40  * hzjoined
11:55:29  * dominictarrjoined
11:57:53  * timoxleyquit (Quit: Computer has gone to sleep.)
12:02:12  * stagasquit (Read error: Connection reset by peer)
12:11:00  * timoxleyjoined
12:16:56  * LOUDBOTjoined
12:16:57  * CAPSLOCKBOTjoined
12:25:53  * bajtosjoined
12:31:13  <bnoordhuis>bajtos: hail
12:31:35  <bajtos>bnoordhuis: hello
12:32:08  <bnoordhuis>bajtos: how are you?
12:32:28  <bajtos>bnoordhuis: all right, how about yourself?
12:32:51  <bnoordhuis>same old, same old. fixing all the bugs and introducing some new ones while i'm at it
12:32:56  <bnoordhuis>what are you working on?
12:33:12  <bajtos>bnoordhuis: :) as long as you fix more bugs than you introduce‚Ķ ;-)
12:33:35  <bnoordhuis>it's been a net positive so far, i think
12:33:45  <bajtos>bnoordhuis: I am trying to setup my own instance of npm-www without replication
12:34:13  <bajtos>bnoordhuis: I managed to get it working, now I'd like to update doc and send PR to Isaac
12:34:44  <bnoordhuis>ah, cool
12:38:25  * timoxleyquit (Quit: Computer has gone to sleep.)
13:03:44  * wankdankerquit (Quit: Konversation terminated!)
13:07:07  * c4milojoined
13:10:30  * kuebkpart
13:20:15  * c4miloquit (Remote host closed the connection)
13:22:44  * timoxleyjoined
13:22:50  * c4milojoined
13:32:51  * hzquit
13:38:37  * icarotquit (Ping timeout: 246 seconds)
13:42:16  * icarotjoined
13:58:16  * icarotquit (Ping timeout: 252 seconds)
14:06:23  * AvianFlujoined
14:06:31  * AvianFluquit (Client Quit)
14:07:56  * c4miloquit (Remote host closed the connection)
14:10:31  * c4milojoined
14:29:57  * c4miloquit (Remote host closed the connection)
14:31:31  * c4milojoined
14:44:59  * kuebkjoined
14:54:30  * groundwaterjoined
14:56:54  * defunctzombie_zzchanged nick to defunctzombie
15:00:46  * kuebkpart
15:04:19  * bajtosquit (Quit: bajtos)
15:13:47  * pachetjoined
15:13:47  * pachetquit (Changing host)
15:13:47  * pachetjoined
15:20:08  * bnoordhuisquit (Read error: Operation timed out)
15:28:16  * bajtosjoined
15:32:47  * dapjoined
15:39:07  * timoxleyquit (Quit: Computer has gone to sleep.)
15:53:02  * perezdjoined
16:05:55  * Benvie_joined
16:08:01  * TooTallNatejoined
16:17:56  * bnoordhuisjoined
16:19:36  * hzjoined
16:21:28  * `3rdEdenquit (Remote host closed the connection)
16:22:48  <isaacs>Can somebody review this, please? https://github.com/joyent/node/pull/5624
16:26:26  <tjfontaine>seems sane to me, is there a test? :)
16:27:15  <isaacs>tjfontaine: i haven't been able to test it in a way that doesn't use socket.io
16:27:17  <isaacs>and... well...
16:27:21  <isaacs>yeah...
16:27:27  <tjfontaine>heh fair enough
16:27:32  <isaacs>we dont' have a ws parser in node.
16:29:29  <tjfontaine>I suppose you can't do this lower because of the .push('') sentinel?
16:29:51  <isaacs>well...
16:29:53  <isaacs>this isn't pushing
16:30:39  <tjfontaine>so what breaks if you check for 0 length in unshift?
16:30:46  <isaacs>i think the sentinel should probably only refer to push, not unshift
16:30:47  <isaacs>that's the thing
16:30:58  <isaacs>unshift('') should not act like push('')
16:31:01  <isaacs>but it does
16:31:11  <tjfontaine>right, ok
16:32:29  <bnoordhuis>isaacs: commented on the issue
16:32:36  <bnoordhuis>tl;dr why not revert a40133d?
16:33:07  <isaacs>bnoordhuis: because the whole point of adding readable.unshift() was to make warts like bodyHead unnecessary
16:35:29  <bnoordhuis>isaacs: sorry, i'm not being clear
16:35:37  <bnoordhuis>i mean revert in v0.10 and address in master
16:36:08  <bnoordhuis>(apologies if i don't react in a timely manner, in a conference call)
16:37:50  * ryahjoined
16:38:39  <isaacs>ryah: wb
16:38:47  <ryah>hey
16:38:52  <isaacs>bnoordhuis: yeah, what i'd like to do in master is just remove bodyHead entirely
16:39:25  <isaacs>bnoordhuis: but that'll probably break socket.io et al even worse, so the wart remains. if it's remaining, we may as well drain it now, since it's not an api change.
16:39:49  <isaacs>(drain the wart, i mean. i'm using a disgusting medical analogy to express how much i dislike the ws bodyHead api.)
16:40:42  <bnoordhuis>i though warts were usually fibrous?
16:41:45  * isaacsis not a doctor, clearly
16:41:49  <isaacs>maybe it's a boil or whatever.
16:41:57  <isaacs>ryah: what brings you to these parts?
16:42:18  <ryah>bordom :)
16:42:39  <ryah>what's new?
16:43:00  <bnoordhuis>a c++ operator?
16:43:16  <bnoordhuis>how's NYC?
16:43:31  <ryah>humid
16:44:07  <bnoordhuis>warm or cold?
16:44:52  <ryah>wrm
16:45:28  <bnoordhuis>could be worse then. we're not lacking for humidity here either but it's usually only 30F
16:45:37  <bnoordhuis>(in june!)
16:46:03  <isaacs>bnoordhuis: that's not a humane climate.
16:46:18  <tjfontaine>bnoordhuis: btw did you see that isaacs got you a centos vm to test on?
16:46:48  <bnoordhuis>isaacs: it's good for the species. only the strong survive
16:46:53  * inolenquit (Quit: Leaving.)
16:46:57  <bnoordhuis>tjfontaine: yes, it was asking me for a pw however
16:47:13  <tjfontaine>have you changed ssh keys?
16:47:37  <bnoordhuis>i was going to ask which one you're using :)
16:47:46  * qardjoined
16:48:01  * tjfontainelogs in to see
16:48:05  <bnoordhuis>tjfontaine: no worries
16:48:12  <bnoordhuis>if it's a key i've used in the past, i'll figure it out
16:48:37  <tjfontaine>fp is ee:8e:38:fa:f9:43:48:bd:0c:a6:e0:2d:f5:de:03:64
16:49:33  * TooTallNatequit (Quit: Computer has gone to sleep.)
16:50:18  * defunctzombiechanged nick to defunctzombie_zz
16:50:19  <bnoordhuis>ah, right. that one's on another machine
16:51:49  <isaacs>bnoordhuis: if you give me a pubkey, i'll put it on the account.
16:52:06  <isaacs>bnoordhuis: but i think linux boxes, someone has to log in and update authorized_keys
16:52:16  <tjfontaine>ya, no smartlogin there
16:52:20  <isaacs>bnoordhuis: since we dont' control that OS, and cant' hijack sshd
16:52:38  <bnoordhuis>it's not a problem, i can fetch the key
16:52:43  <tjfontaine>mmalecki said he has an implementation
16:52:56  <bnoordhuis>first however, there's dinner. biab, guys
16:54:19  <isaacs>bnoordhuis: bon appetit
16:55:44  <mmalecki>I indeed do
17:02:21  * stagasjoined
17:06:24  * TooTallNatejoined
17:07:59  * csaohquit (Quit: csaoh)
17:14:57  * brsonjoined
17:16:35  * paddybyersquit (Ping timeout: 260 seconds)
17:24:29  * bnoordhuisquit (Ping timeout: 252 seconds)
17:27:24  * amartensjoined
17:31:18  <isaacs>ircretary: tell bnoordhuis Forget about that http.js fix for socket.io. The root cause is actually a bona fide streams2 bug, albeit a subtle one, and fixable with one line, and easy to test.
17:31:19  <ircretary>isaacs: I'll be sure to tell bnoordhuis
17:31:32  <tjfontaine>excellent.
17:31:41  * inolenjoined
17:35:42  * defunctzombie_zzchanged nick to defunctzombie
17:36:16  <isaacs>also, bonus, this would affect anyone who used stream.unshift(), not just us
17:36:19  <isaacs>ie, not just http.js
17:40:07  * icarotjoined
17:49:25  * stagasquit (Read error: Connection reset by peer)
17:50:18  * `3rdEdenjoined
17:50:59  <trevnorris>morning-ish
17:51:33  <tjfontaine>up in time for brunch
17:55:25  * icarotquit (Ping timeout: 256 seconds)
17:55:48  <trevnorris>been up since 5:50 :) bro-in-law's in town so took him to apple for breakfast.
17:56:33  <trevnorris>isaacs: ping
17:57:28  <trevnorris>tjfontaine: actually getting oil changed now. tethered up to my phone.
17:57:53  <tjfontaine>hmm there's a "that's what she said" joke in there somewhere
17:58:25  <trevnorris>lol
17:58:51  * bajtosquit (Quit: bajtos)
17:58:52  <isaacs>pong
17:59:15  <isaacs>can i get a lgtm? https://github.com/joyent/node/pull/5624
18:01:18  * isaacsback to url parsing...
18:01:22  <isaacs>trevnorris: pong
18:01:48  <trevnorris>isaacs: lgtm
18:01:56  <isaacs>KABOOM
18:02:00  <MI6>joyent/node: isaacs v0.10 * df6ffc0 : stream: unshift('') is a noop - http://git.io/Po9Z0w
18:02:18  * bajtosjoined
18:02:47  <trevnorris>isaacs: on my next round of perf stuff. working on both writing strings out directly, and on converting directly to external strings using setEncoding.
18:03:21  <trevnorris>isaacs: problem w/ setEncoding is that it's per request, and the request is receiving data before setEncoding has time to tell the request it should be converting it to a string
18:03:34  <isaacs>right
18:03:53  <isaacs>so you could get one req, do setEncoding('utf8') and then anotehr one do setEncoding('hex')
18:03:54  <trevnorris>isaacs: so I'm wondering about a Server setEncoding. e.g. "var serv = http.createServer(); serv.setEncoding"
18:04:00  <isaacs>uhggggg
18:04:00  <isaacs>no
18:04:23  <isaacs>trevnorris: you can also setEncoding midway throgh a stream
18:05:09  <isaacs>trevnorris: chunk = str.read(10); if (chunk) assert(Buffer.isBuffer(chunk)); str.setEncoding('utf8'); chunk = str.read(10); if (chunk) assert(typeof chunk === 'string');
18:05:10  <trevnorris>isaacs: understand that. but the most common use case is that people just setEncoding at the top of their callback, right?
18:05:17  <isaacs>trevnorris: sure
18:05:29  <isaacs>trevnorris: but in any event, they're doing setEncoding on the parsed output, not the socket itself.
18:06:00  * icarotjoined
18:06:05  <trevnorris>isaacs: sure you know, but the perf hit comes from creating a Buffer from the data right out of OnReadCommon from stream_wrap.
18:06:11  <isaacs>right
18:06:25  <trevnorris>which adds unecessary overhead of something else is to be done w/ the data
18:06:25  <isaacs>so you are trying to figure out how to push the setEncoding logic down to that level
18:06:30  <trevnorris>pretty much
18:06:36  <isaacs>hm.
18:06:46  <trevnorris>or some other type of optimization to remove the need to create a buffer immediately
18:06:58  <isaacs>crazy idea: IncomingMessage.setEncoding calls setEncoding on its underlying socket
18:07:14  <isaacs>oh, but no...
18:07:14  <trevnorris>ok. I like that.
18:07:16  <isaacs>nonono
18:07:19  <isaacs>here's the thing:
18:07:23  <isaacs>if you do socket.setEncoding('hex')
18:07:25  <isaacs>yo'ure kinda fucked
18:07:34  <isaacs>because the data from the socket is getting written into the http parser.
18:07:51  <trevnorris>oh, that's another world of hurt i'm working on
18:08:09  <trevnorris>the http_parser data path is crazy complicated
18:08:13  <isaacs>yeah
18:08:27  * brsonquit (Ping timeout: 256 seconds)
18:08:58  <isaacs>the data coming out of the socket needs to be in a state that http_parser can consume it
18:09:07  <isaacs>basically, that means, raw bytes
18:09:14  * sblomjoined
18:09:15  <isaacs>ie, buffer or binary
18:09:29  <trevnorris>but only until the header is parsed, right?
18:09:30  <isaacs>OR, perhaps, some crazy new thing that is manually managed etc.
18:09:34  <isaacs>trevnorris: right
18:10:05  <isaacs>trevnorris: one idea that's been floated around is to push the socket/http_parser interface into C++
18:10:12  <isaacs>however, that means that req.connection is now useless.
18:10:30  <isaacs>ie, you wouldn't be able to assert that req.socket instanceof net.Socket
18:10:45  <trevnorris>you mean HTTPParser would no longer be in js?
18:11:03  <trevnorris>(because http_parser is already c++ based, as I know you know :)
18:11:09  <isaacs>right now, we have Socket->HTTPParser->IncomingMessage
18:11:14  <trevnorris>ah, yeah
18:11:31  <isaacs>then in the other direction, we do the encoding in JS land, but that's WAY simpler.
18:11:53  <isaacs>but, when you're touching the IncomingMessage, you have access to the net.Socket object
18:12:08  <isaacs>(and, in https, the tls.CryptoStream, pair, socket, etc.)
18:12:12  <creationix>what ever happened to the efforts to do http parsing more in JS?
18:12:18  <trevnorris>imho, the optimal (for the headers) is that the data is turned into an external string until the headers are parsed.
18:12:20  * mikealjoined
18:12:37  <trevnorris>external strings are super fast, and js can create js objects way way faster than in c++
18:12:55  <isaacs>creationix: doing it right is a massive undertaking, and no one to sponsor it. i'd love to do it, but my conservative estimate is that it'd take a year, and there are more pressing issues.
18:13:06  <creationix>ok, so lack of manpower
18:13:11  <isaacs>creationix: basically
18:13:22  <creationix>my quick test that didn't parse *every* case seemed it would be slightly faster
18:13:34  <creationix>but yeah, full compliance is hard
18:14:05  <creationix>maybe after js-git, I'll try to get funding for a proper http parser in js
18:14:55  <isaacs>creationix: that'd be rad.
18:14:59  <creationix>can't we just compile ryah's http_parser with emscripten?
18:15:05  <isaacs>creationix: haha, maybe.
18:15:05  <creationix>I'm curious to see how that performs
18:15:07  <trevnorris>isaacs: know this sounds ridiculous, but you'll get ~500% perf boost if you pass each parsed part to a js function and set the object there, instead of using ->Set() from c++
18:15:26  <isaacs>creationix: but i'd rather have an idiomatically JavaScript-y parser written in javascript aht's readable etc.
18:15:34  <isaacs>creationix: http_parser is very c
18:15:51  <creationix>isaacs: right, but if it's faster and easy enough to do
18:15:53  <isaacs>trevnorris: that sounds like low-hanging fruit that we should pick asap :)
18:16:07  * creationixhasn't personally used emcripten yet
18:16:08  <isaacs>creationix: it'd have to be a lot faster to be worth the cost.
18:16:14  <creationix>fair enough
18:16:19  <creationix>I prefer hand-written parsers as well
18:16:35  <isaacs>creationix: i've seen JS that emscripten generates. it works, but from what i've seen at least, it tends to be rather impenetrable.
18:16:51  <creationix>just still hurting from my hand-written idomatic sha1 code getting destroyed by hand-written asm.js code
18:16:52  <isaacs>creationix: even by http parser standards :)
18:17:20  <creationix>so hand-written and asm.js style are not mutually exclusive
18:17:31  <isaacs>creationix: sure.
18:17:40  <isaacs>creationix: i'd like to maybe rewrite http://npm.im/ssh-key-decrypt in asm.js
18:17:53  <isaacs>creationix: but i'm not sure if it'd be worth it
18:18:08  <isaacs>creationix: mostly, it's just doing md5 and base64/hex decoding
18:18:19  <creationix>my md5 code is pretty darn fast on v8
18:18:21  <MI6>nodejs-v0.10: #225 UNSTABLE smartos-x64 (5/589) smartos-ia32 (2/589) http://jenkins.nodejs.org/job/nodejs-v0.10/225/
18:18:35  <creationix>faster than calling into node's openssl bindings
18:18:41  <isaacs>creationix: nie
18:18:51  <creationix>though my sha1 code is a lot slower
18:19:06  <creationix>https://github.com/openpeer/cifre/blob/master/md5.js
18:19:15  <tjfontaine>oh the braces in that code, isaacs, oh the braces
18:24:25  <MI6>nodejs-v0.10-windows: #54 UNSTABLE windows-x64 (7/589) windows-ia32 (8/589) http://jenkins.nodejs.org/job/nodejs-v0.10-windows/54/
18:25:51  <trevnorris>creationix: create a bench where you re-use a single large ArrayBuffer, then use it for all the typed array casts like "var block = new Uint32Array(array_buffer, 0, 16);"
18:26:19  <creationix>well, if it was to be used in node, I expect Buffer to be faster anyway
18:26:44  <creationix>and yes, creating new ArrayBuffers is very slow
18:28:06  <trevnorris>creationix: like the impl though. logic is nice and simple.
18:28:11  <creationix>md5 isn't bad
18:28:20  <creationix>just unroll the loop to keep from shifting variables
18:28:38  * st_lukequit (Remote host closed the connection)
18:30:05  * hzquit
18:30:40  * bnoordhuisjoined
18:31:37  * kuebkjoined
18:35:11  * bnoordhuisquit (Ping timeout: 256 seconds)
18:37:52  <tjfontaine>here's a cute repl bug https://gist.github.com/tjfontaine/5700263/raw/353d53f0c3bc12bb43e2344671958057d67d5edb/gistfile1.js
18:40:56  * c4miloquit (Remote host closed the connection)
18:51:51  * defunctzombiechanged nick to defunctzombie_zz
18:53:39  * sblomquit (Ping timeout: 260 seconds)
18:54:04  * bajtosquit (Quit: bajtos)
18:58:11  * normanmquit (Quit: Computer has gone to sleep.)
18:58:27  * hzjoined
19:02:40  * sblomjoined
19:09:52  * defunctzombie_zzchanged nick to defunctzombie
19:13:40  * c4milojoined
19:15:12  * c4miloquit (Remote host closed the connection)
19:15:27  * defunctzombiechanged nick to defunctzombie_zz
19:21:45  * c4milojoined
19:21:55  * defunctzombie_zzchanged nick to defunctzombie
19:26:28  <trevnorris>isaacs: well, that was a let down. so parsing headers is a lot smaller part of serving http requests than i thought.
19:27:50  <trevnorris>isaacs: oh, and httpVersion is no longer used.
19:28:51  * icarotquit (Ping timeout: 240 seconds)
19:29:21  <trevnorris>(but still in there)
19:45:44  * zz_jcequit (Quit: later)
19:46:40  * icarotjoined
19:51:12  * timoxleyjoined
19:51:18  * sblomquit (Ping timeout: 256 seconds)
19:52:18  * sblomjoined
19:52:36  <isaacs>ok
20:08:49  * ralquit (Remote host closed the connection)
20:09:12  * `3rdEdenquit (Remote host closed the connection)
20:11:32  * oojahjoined
20:13:46  * groundwaterquit (Ping timeout: 246 seconds)
20:17:00  * loladirojoined
20:17:31  * groundwaterjoined
20:24:07  * papertigersjoined
20:25:44  * papertigersquit (Client Quit)
20:30:02  * dannycoatesjoined
20:33:10  * mikealquit (Quit: Leaving.)
20:37:46  * loladiroquit (Ping timeout: 256 seconds)
20:38:19  * loladirojoined
20:41:31  * mikealjoined
20:48:58  * sblomquit
20:51:39  * txdv_joined
20:51:41  * defunctzombiechanged nick to defunctzombie_zz
20:52:08  * txdvquit (Ping timeout: 252 seconds)
20:55:24  * defunctzombie_zzchanged nick to defunctzombie
21:11:31  <isaacs>Hey, if you just got an email from me about a patch, please take a look at it.
21:14:16  * c4miloquit (Remote host closed the connection)
21:15:53  <creationix>do we expose a way to write to a inode, but not give it a path till after we're done streaming?
21:16:09  <creationix>I'm guessing no since I'm not sure how that would work on windows
21:21:41  <trevnorris>isaacs: haven't run the code, but lgtm
21:22:07  * brsonjoined
21:22:28  <tjfontaine>I did test it, but I'm looking over it again
21:23:24  <TooTallNate>isaacs: im guessing that's RE: https://groups.google.com/d/topic/nodejs/yImN_b8pxPg/discussion ?
21:23:43  * hz_joined
21:23:44  * hz_quit (Changing host)
21:23:44  * hz_joined
21:23:44  * hzquit (Disconnected by services)
21:23:48  * hz_changed nick to hz
21:27:00  * hz_joined
21:27:00  * hz_quit (Changing host)
21:27:00  * hz_joined
21:27:00  * hzquit (Disconnected by services)
21:27:05  * hz_changed nick to hz
21:29:55  <trevnorris>isaacs: i'm surprised the identity team didn't get w/ me on this.
21:31:30  * mikealquit (Quit: Leaving.)
21:33:56  <isaacs>TooTallNate: yep :)
21:34:16  <TooTallNate>isaacs: kewl, sounds like you guys got it under control :)
21:34:24  <isaacs>also, i've got our Joyent IT guy figuring out how to create an @nodejs.org email address so that we can have a security@nodejs.org
21:34:39  <TooTallNate>oh that'll be cool :)
21:34:50  <isaacs>growing up is hard to do :)
21:34:55  <tjfontaine>heh
21:34:56  * isaacstaco time
21:35:08  <tjfontaine>it lgtm, I'm just looking at the other tests atm
21:35:23  * icarotquit (Remote host closed the connection)
21:35:37  * paddybyersjoined
21:36:42  <trevnorris>tjfontaine: shouldn't the for() at L84 have a break; on match?
21:37:36  <tjfontaine>trevnorris: no because a different char may be found earlier in the str
21:37:45  <trevnorris>tjfontaine: ah, yeah. just saw that.
21:40:04  <tjfontaine>we have a surprising amount of coverage on this
21:41:44  <trevnorris>tjfontaine: you mean in the tests?
21:42:20  <tjfontaine>yes
21:42:47  * sblomjoined
21:44:55  * pachetquit (Quit: leaving)
21:45:28  * rendarquit
21:47:16  <trevnorris>could always use something like this ridiculousness ;-) /^(\w+:\/\/)?([^/?#]+)([/?#]*)(.*)/
21:47:43  <tjfontaine>that's not very resilient :)
21:48:41  <trevnorris>oh yes. but i'm convinced that anything to do w/ strings can, in some way, be figured out w/ a regex. ;)
21:48:45  * papertigersjoined
21:49:34  <tjfontaine>depends on how many forward lookups you're allowed to do
21:49:41  * c4milojoined
21:49:50  <TooTallNate>trevnorris: do i need to summon Zalgo?
21:50:26  <trevnorris>TooTallNate: wtf?
21:50:43  <TooTallNate>oh gawd
21:51:00  <TooTallNate>trevnorris: http://stackoverflow.com/a/1732454/376773
21:51:00  <TooTallNate>:p
21:51:48  <TooTallNate>(just a little bit of culture)
21:54:48  <trevnorris>...
22:03:04  * defunctzombiechanged nick to defunctzombie_zz
22:04:43  <isaacs>btw: I've got the start of an html doc that creates an <a href=$url> for all the urls in our test, then prints out the location fields from the <a> object
22:06:50  * c4miloquit (Remote host closed the connection)
22:09:52  * kuebkquit
22:12:05  * hzquit (Disconnected by services)
22:12:05  * hz_joined
22:12:10  * hz_changed nick to hz
22:14:15  <trevnorris>isaacs: api addition proposal. Buffer.byteLength(string[, encoding][, start][, end]);
22:14:35  <trevnorris>isaacs: that way users can get the byte length of a sub string w/o needing to create the sub string
22:19:42  * janderssenjoined
22:23:33  * hzquit (Ping timeout: 256 seconds)
22:24:33  * c4milojoined
22:28:17  * c4miloquit (Remote host closed the connection)
22:44:04  * paddybyersquit (Ping timeout: 252 seconds)
22:50:21  <isaacs>trevnorris: is creating a substring expensive?
22:50:59  <trevnorris>isaacs: for large substrings. also for when we implement external data strings
22:51:03  <isaacs>tjfontaine: yeah, the hugeness of simple/test-url is a testament to how insane url parsing is.
22:51:38  <isaacs>also, fun fact, some of those test cases were written by Sir Tim Berners-Lee
22:51:48  <tjfontaine>excellent
22:52:33  <tjfontaine>having all those tests make me feel relative confident in the change
22:54:10  <isaacs>k. lgty, then?
22:54:13  * loladiroquit (Quit: loladiro)
22:54:21  <isaacs>also: we'll have to change a lot of the parse tests for 0.12
22:54:27  <isaacs>because we don't do things the same as Chrome right now
22:54:36  <tjfontaine>yes, lgtm for 0.10
22:56:01  <isaacs>k, thank
22:56:02  <isaacs>s
22:57:22  <MI6>joyent/node: isaacs v0.10 * 5dc51d4 : url: Properly parse certain oddly formed urls - http://git.io/vbWOhw
22:57:47  <trevnorris>isaacs: can I forward that email to the identity team?
22:59:49  <isaacs>trevnorris: sure
22:59:53  <isaacs>trevnorris: in fact, yes, please do
23:00:02  <isaacs>trevnorris: do you know if they're using 0.8 or 0.10?
23:00:15  <isaacs>i'm tempted to just backport the entire lib/url.js
23:01:05  <isaacs>backporting just the changes is really tricky
23:01:25  <tjfontaine>how much difference is there?
23:03:00  <isaacs>tjfontaine: quite a lot.
23:03:02  <MI6>joyent/node: isaacs v0.10 * 5dd91b0 : url: Set href to null by default - http://git.io/C5KYgA
23:03:05  <isaacs>tjfontaine: url.Url class
23:03:09  <tjfontaine>oh
23:03:13  <isaacs>yeah, can't just backport the entire file.
23:03:17  <tjfontaine>well that was a good change
23:03:21  <isaacs>but i can backport it, and undo the url.Url class change
23:03:35  <isaacs>yeah, but it changes the shape of url.parse() return objects
23:03:37  <isaacs>so we can't do that.
23:03:47  <tjfontaine>nod
23:04:03  <trevnorris>isaacs: still officially on v0.8
23:04:14  <trevnorris>isaacs: though they're in progress of testing to move to v0.10
23:05:07  <isaacs>k
23:05:14  <isaacs>i'll work on back-porting this, then
23:05:32  <trevnorris>thanks. i'm reaching out to them now.
23:07:25  <isaacs>thanks
23:13:27  <MI6>nodejs-master: #246 UNSTABLE smartos-ia32 (3/602) linux-ia32 (1/602) osx-ia32 (1/602) smartos-x64 (8/602) http://jenkins.nodejs.org/job/nodejs-master/246/
23:13:30  <MI6>nodejs-v0.10: #226 UNSTABLE linux-ia32 (1/589) smartos-ia32 (1/589) linux-x64 (3/589) smartos-x64 (3/589) http://jenkins.nodejs.org/job/nodejs-v0.10/226/
23:16:08  * c4milojoined
23:20:30  <MI6>nodejs-v0.10-windows: #55 UNSTABLE windows-x64 (11/589) windows-ia32 (7/589) http://jenkins.nodejs.org/job/nodejs-v0.10-windows/55/
23:22:15  * st_lukejoined
23:22:50  <MI6>nodejs-master-windows: #54 UNSTABLE windows-x64 (17/602) windows-ia32 (11/602) http://jenkins.nodejs.org/job/nodejs-master-windows/54/
23:25:57  <isaacs>two things that are awesomely frustrating, and at the same time super rewarding: highly test-covered code, and crypto
23:26:10  <isaacs>because in both cases, it's completely busted, untill it suddely woprks perfectly.
23:26:28  <isaacs>running other tests in v0.8 now
23:27:05  <trevnorris>lol
23:27:20  <tjfontaine>ya, crypto is good for that
23:27:31  <tjfontaine>off by one, kaboom
23:27:50  <isaacs>yeah
23:28:10  <isaacs>the thing that sucks is that you usually have no idea if you're close or way off
23:28:22  <isaacs>so when it works, it's like a sudden revelatory bolt from the blue
23:28:25  <tjfontaine>right
23:28:28  * AvianFlujoined
23:28:53  <trevnorris>this is awesome. i'm putting together slides for a talk this wed. and was going to explain why we don't use typed arrays.
23:29:25  <trevnorris>one reason was because they use ->Set() all over the place. just double checked the code and they've all been removed in place of getters/setters
23:29:30  <MI6>joyent/node: isaacs v0.8 * ba0ed00 : url: Properly parse certain oddly formed urls - http://git.io/4SYZfQ
23:29:32  <trevnorris>but they're still 10x's slower
23:29:36  <isaacs>back-ported from v0.10 ^
23:29:47  <isaacs>way easier than i'd thought it'd be.
23:29:51  <trevnorris>isaacs: thanks :)
23:29:58  <isaacs>just copied the function, basically, and changed "this" to "out"
23:30:13  <isaacs>trevnorris: i'll do a v0.8 release tomorrow, and maybe v0.10 also
23:30:20  <trevnorris>isaacs: cool. thanks.
23:30:21  <isaacs>there's also a few other minor-ish fixes in there.
23:30:47  <tjfontaine>ya I was going to say
23:30:48  <tjfontaine>:)
23:30:57  <tjfontaine>nothing that looks outrageous
23:34:43  <MI6>nodejs-v0.10: #227 UNSTABLE smartos-ia32 (1/589) smartos-x64 (4/589) http://jenkins.nodejs.org/job/nodejs-v0.10/227/
23:40:50  <MI6>nodejs-v0.10-windows: #56 UNSTABLE windows-x64 (9/589) windows-ia32 (7/589) http://jenkins.nodejs.org/job/nodejs-v0.10-windows/56/
23:52:04  <MI6>joyent/node: isaacs v0.8 * 71091f7 : npm: Upgrade to 1.2.24 - http://git.io/x20haQ
23:53:23  <MI6>joyent/node: isaacs created branch v0.8.24-release - http://git.io/NVv0Ug
23:53:27  <isaacs>ITS COMING! ^
23:53:27  <LOUDBOT>NO MOVING FOR ME
23:53:34  <tjfontaine>heh
23:53:43  <tjfontaine>LOUDBOT: WILL YOU MARRY ME?
23:53:43  <LOUDBOT>tjfontaine: WHO DO YOU WORK FOR
23:53:57  <MI6>nodejs-v0.8: #42 UNSTABLE osx-x64 (1/472) linux-x64 (1/472) osx-ia32 (1/472) linux-ia32 (1/472) smartos-ia32 (1/472) smartos-x64 (1/472) http://jenkins.nodejs.org/job/nodejs-v0.8/42/
23:56:03  * kenperkinsquit (Quit: Computer has gone to sleep.)
23:56:38  <trevnorris>isaacs: holy crap. just did a custom v8 build removing their memset. 10% faster than my new Buffer impl.
23:56:51  <trevnorris>for large Buffers
23:57:34  <trevnorris>(e.g. > 1MB)