[00:08] creationix: err, not Object.keys, but the behavior of for..in is what I meant [00:08] inimino: spam on the mailing list, did someone say? [00:09] inimino: oh, the group [00:11] pavelz has joined the channel [00:14] inimino: jashkenas: fixed [00:15] binary42 has joined the channel [00:15] alexandere has joined the channel [00:15] creationix: what was the spam, group pages or something? [00:15] jashkenas: inimino: Nice work. [00:15] inimino: creationix: yeah, pages and files [00:16] creationix: well, I found the problem with Ben's issue at least [00:16] inimino: I turned the features off, people can use gists [00:16] creationix: not sure how to fix it though [00:17] justinlilly has left the channel [00:21] creationix: basically I need to replace the call to v8::Object->GetPropertyNames with something that ignores the prototype chain [00:22] sztanpet has joined the channel [00:23] creationix: eh, too much trouble, I found the issue, if someone really wants to make node work with broken objects they can fix it. [00:23] creationix: plus sometimes it's desirable to have objects that inherit from other objects to have defaults [00:23] jashkenas: creationix: your struggles are reminding me ... has anyone ever tried to make Prototype.js run under Node? [00:24] creationix: if they did, I'm sure it would break the dns module [00:24] creationix: but that's new code [00:24] creationix: tmpvar's dom implementation is fairly complete [00:24] jashkenas: I mean in terms of extending the primitives willy-nilly. [00:25] creationix: well, we can safely extend them now using defineProperty [00:25] inimino: prototype.js doesn't extend Object anymore [00:25] creationix: why would you want prototype on the server where there are much better alternatives and no cross-browser issues [00:26] creationix: that's good [00:26] jashkenas: inimino: really? how about Array? [00:26] inimino: it still extends Array [00:26] inimino: but that's a reasonable thing to do IMO [00:27] creationix: jashkenas, have you tried my patch or are you waiting for _ry to accept it? [00:27] jashkenas: creationix: I'm still targeting the latest tagged Node. So while I trust your patch, I'll wait for the next release. [00:28] creationix: no problem, you weren't the first to ask for it today, so I decided to make time for it [00:28] jashkenas: I appreciate it. [00:29] creationix: :) [00:29] creationix: I like node, it's a very fun and dynamic project [00:30] mattly has joined the channel [00:32] tmpvar: i heard my name [00:33] tmpvar: jashkenas, YUI3 now runs on jsdom (we have a bunch of browser augmentation) [00:33] tmpvar: its no env.js, but it works heh [00:33] jashkenas: tmpvar: yeah, I read about it. Congrats. [00:34] tmpvar: thanks, if you decide to try and run prototype on it I'll be there to help :) [00:39] ssteinerX has joined the channel [00:39] creationix: yeah, there are unprotected for..in loops all over the node codebase, do we really want the hasOwnProperty cost just so people can use badly written libraries? [00:45] kenneth_reitz has joined the channel [00:50] devinus has joined the channel [00:52] kriskowal has joined the channel [00:54] ssteinerX has left the channel [01:02] Tautologistics has joined the channel [01:04] Tautologistics: Forgot about this place =) [01:09] devinus has joined the channel [01:10] softdrink has joined the channel [01:10] MattJ: So I just spent a couple of hours implementing TCP-over-XMPP, I feel great :) [01:29] joshbuddy has joined the channel [01:31] charlesjolley has joined the channel [01:57] mikeal has joined the channel [02:09] jed has joined the channel [02:13] tmpvar: MattJ, that sounds like death [02:22] ssteinerX has joined the channel [02:23] KungFuHamster: so, you should do xmpp over tcp over xmpp over tcp over xmpp over tcp [02:23] KungFuHamster: the internet will suicide from irony [02:27] mrjjwright has joined the channel [02:28] softdrink has joined the channel [02:43] ssteinerX has left the channel [02:46] mfeiri_ has joined the channel [02:48] r11t_ has left the channel [02:53] kassens has joined the channel [02:59] JimBastard_ has joined the channel [03:01] JimBastard_: im a little confused about http://github.com/ry/node_docs , does this autogenerate the docs from code or do you actually have to WRITE the docs? [03:01] JimBastard_: i understand some of the stuff you have to write [03:02] justinlilly has joined the channel [03:03] JimBastard_: sup binary42 [03:03] binary42: JimBastard_: Heya [03:04] JimBastard_: what you doing tommorow afternoon / night? we having a little nerd bbq then rolling to the github meetup at 830 or so to meet defunkt [03:05] JimBastard_: ACTION likes meeting the owners of services he's been banned from [03:08] devinus: JimBastard_: banned from github ? [03:09] JimBastard_: only for a few moments [03:09] JimBastard_: i accidentallied some unthorttled apis [03:09] JimBastard_: engrish [03:09] JimBastard_: they were really really cool about it [03:09] JimBastard_: <3 github [03:09] justinlilly has left the channel [03:13] aho: so you acidentially like the whole interweb? :v [03:14] JimBastard_: the only time i accidentiallied the internet was when i attempted to install dd-wrt on a non-compat linksys router. my roommates were not amused [03:15] binary42: JimBastard_: Afternoon I'm filming AQ's demo for JSConf. [03:16] binary42: JimBastard_: I'll be at the meet-up for a little while at least. [03:16] JimBastard_: cool cool [03:16] mattly has joined the channel [03:16] JimBastard_: yeah i defintely wanna bug them about building apps on github and their hook api [03:16] JimBastard_: a project managment app built on github would destroy [03:17] binary42: Yeah. It would be pretty great. I think they are pretty open to ideas. [03:18] binary42: My top improvement for GH would be search (and maybe more responsive issues performance). [03:19] binary42: Moving my dev setup over to Linux. yay! [03:19] jashkenas: binary42: That's already been "fixed": http://support.github.com/discussions/issues-issues/145-issues-javascript-rendering-is-too-slow [03:20] binary42: Not just that. The server side hangs on me a ton. [03:20] binary42: i.e. every time I try 2-3 cs issue searches. [03:20] charlesjolley has joined the channel [03:21] JimBastard_: there are a lot of small issues everywhere on github [03:21] JimBastard_: jashkenas: you going to github meetup tommorow? 830pm at 2a i think [03:21] binary42: Well, it's all come together so fast. Can't say I would have done any better. [03:22] JimBastard_: binary42: you seen this : http://www.hookhub.com/ [03:22] JimBastard_: looks like a failed attempt at hook.io [03:23] binary42: JimBastard_: What's failed about it? [03:24] JimBastard_: i dunno, i tried using it and it made my head hurt [03:25] JimBastard_: its complicated and not open source [03:25] gbot2 has joined the channel [03:25] binary42: Fair enough. Hook.io is looking much better lately too. [03:26] JimBastard_: thanks man [03:26] JimBastard_: tmpvar convinced me to finally setup a local dev env [03:26] JimBastard_: so im making really good progess, remember before i was developing against the live site [03:27] binary42: Woah. Yeah. I always try to have a local setup and even an offline one. [03:27] JimBastard_: new job, new mac book [03:27] JimBastard_: ^_^ [03:28] binary42: Yeah. I'm actually moving all my development stuff off my MacBook now though. [03:28] binary42: Going to keep it for my music and photography mostly. [03:28] tmpvar: haha, yeah its about time JimBastard_ [03:28] tmpvar: yo binary42 [03:28] binary42: Heya. [03:33] itistoday has joined the channel [03:35] CodeOfficer has joined the channel [03:40] dandean has joined the channel [03:53] PyroPete1 has joined the channel [03:58] bengl has joined the channel [04:10] binary42 has joined the channel [04:14] keeto has joined the channel [04:25] fizx has joined the channel [04:25] derferman has joined the channel [04:36] cloudhead has joined the channel [04:42] keeto has joined the channel [05:12] charlesjolley has joined the channel [05:13] isaacs has joined the channel [05:14] amerine has joined the channel [05:32] andreavonhollen has joined the channel [05:48] JimBastard_ has joined the channel [05:52] JimBastard_: man, it gets confusing writing documentation when your software package and website have the exact same name >.< [05:52] JimBastard_: even more so that your website provided the software package as a software as a service [05:52] mattly has joined the channel [06:14] keeto has joined the channel [06:31] tmpvar: haha JimBastard_ [06:31] _ry: mape: --prof, no doesn't require recompiling node [06:32] tmpvar: you have to suffix everything with "the website" or "the code" or etc .. haha [06:32] _ry: mape: it just makes v8.log - that gets fed into a program that outputs the profile [06:32] piranha has joined the channel [06:32] _ry: mape: http://code.google.com/p/v8/wiki/V8Profiler [06:32] tmpvar: hey _ry [06:32] JimBastard_: i was thinking of making hookIO be the node.js app and hook.io be the website, but that proved to be even more troublesom [06:32] tmpvar: congrats on 0.1.9 [06:32] _ry: tmpvar: howdie [06:32] _ry: 0.1.90 [06:32] _ry: thanks [06:32] tmpvar: heh [06:32] JimBastard_: almost 2.wooaaahhhh [06:35] bpot has joined the channel [06:39] isaacs: _ry: hey, i got the require-rewrite-wip code cleaned up [06:40] isaacs: _ry: i'm not sure if putting a warning about post-startup require() is actually such a good idea. it might be better to just do that for post-startup fs.*Sync calls. [06:40] isaacs: after all, doing a require() is just as bad as doing fs.readFileSync, or maybe not even. [06:51] mikeal has joined the channel [06:52] jed has joined the channel [07:03] charlesjolley has joined the channel [07:17] keeto has joined the channel [07:46] Aria: Woo! HTML5 tokenizer works! [07:46] Aria: Next step: parsing and DOM! [07:54] Aria: http://theinternetco.net/~aredridel/projects/js/nodenetwork/html5/ [08:04] vmind has joined the channel [08:10] admc has joined the channel [08:26] alexandere has joined the channel [08:27] zimbatm has joined the channel [08:27] zimbatm: hi there [08:30] zimbatm: is someone from the module-rewrite here ? [08:32] pdelgallego has joined the channel [08:34] felixge has joined the channel [08:34] felixge has joined the channel [08:55] charlesjolley has joined the channel [09:15] N` has joined the channel [09:17] jed has joined the channel [09:20] psynaptic has joined the channel [09:24] okito has joined the channel [09:25] tisba has joined the channel [09:33] Iveaux has joined the channel [09:42] mape: _ry: Hmm ok, only thing is that I can't find the V8.log, I've searched the entire system and it doesn't seem to create the file [09:42] psynaptic has left the channel [09:49] hellp has joined the channel [09:53] zimbatm has joined the channel [10:22] nsm has joined the channel [10:27] zimbatm has joined the channel [10:33] felixge has joined the channel [10:42] piranha has joined the channel [10:48] charlesjolley has joined the channel [10:57] demolithion has joined the channel [11:02] ssteinerX has joined the channel [11:15] derferman has joined the channel [11:32] piranha has joined the channel [11:43] fholm has joined the channel [11:47] BabyMaple has joined the channel [11:47] BabyMaple: hi all ^^ [11:47] BabyMaple: have anyone using nginx+nodejs ? [11:49] derbumi has joined the channel [11:54] sveisvei has joined the channel [11:54] felixge has joined the channel [11:54] felixge has joined the channel [11:55] mape: Now that mixin is being depricated how would one do the mixing? [11:58] xla has joined the channel [12:05] psynaptic has joined the channel [12:08] N`: mape: it was discussed on http://groups.google.com/group/nodejs/browse_thread/thread/e82b45b3f8faa5af# [12:08] N`: but I don't think there is a prefered way to do this now [12:08] mape: Ah ok [12:08] ashb: for (var i in x) o[i] = x[i]; will work for 99% of cases [12:14] mape: Yeah [12:14] mape: Anyone here tried profiling a script with V8 bench and output a v8.log? [12:15] psynaptic has left the channel [12:20] felixge_ has joined the channel [12:20] felixge_ has joined the channel [12:27] malkomalko has joined the channel [12:33] mrjjwright has joined the channel [12:39] charlesjolley has joined the channel [12:54] jashkenas has left the channel [13:02] lifo has joined the channel [13:20] fholm_ has joined the channel [13:39] malkomalko has joined the channel [13:40] zimbatm has joined the channel [13:41] maushu has joined the channel [13:42] fholm has joined the channel [13:59] jed has joined the channel [14:02] alex-desktop has joined the channel [14:28] charlesjolley has joined the channel [14:29] BabyMaple: somebody know how to debug on nodejs server side ? [14:33] micheil: gbot2: window['WebSocket'] [14:33] micheil: erm [14:33] micheil: gbot2: js> WebSocket [14:34] micheil: js> WebSocket [14:34] gbot2: micheil: Error: ReferenceError: WebSocket is not defined [14:34] micheil: hmm.. [14:34] micheil: js> typeof 'WebSocket' [14:34] gbot2: micheil: "string" [14:35] malkomalko has joined the channel [14:35] binary42 has joined the channel [14:35] N`: BabyMaple: maybe http://github.com/Connorhd/node_debug/ [14:36] ashb: micheil: gbot2 runs spidermonkey i think [14:36] ashb: js> Array.slice [14:36] gbot2: ashb: [14:36] ashb: yes [14:37] BabyMaple: N` thank ^^ i try now [14:37] maushu: BabyMaple, http://wiki.github.com/ry/node/using-eclipse-as-node-applications-debugger [14:37] softdrink has joined the channel [14:41] BabyMaple: maushu @@ [14:42] BabyMaple: maushu ok i go study [14:47] derbumi has joined the channel [14:58] psynaptic has joined the channel [15:21] joshbuddy has joined the channel [15:21] joshbuddy has joined the channel [15:21] derbumi has joined the channel [15:35] CodeOfficer has joined the channel [15:35] binary42 has joined the channel [15:43] CodeOfficer has joined the channel [15:47] pyMynx has joined the channel [15:47] pyMynx: hi ^^ anyone there? [15:47] pyMynx: I'm can't access a couple of sites with HTTP Client [15:48] pyMynx: I think nodeJS uses the IPAddress instead of the domain [15:49] pyMynx: help would be awesome :) [15:56] maritz has joined the channel [15:57] Connorhd: what do you mean uses the IP address? [16:00] felixge_: pyMynx: you will have to send the 'host' header, node won't do that for you [16:02] pyMynx: felixge_: I have, the response I get back is the same if I typed 123.123.123.123:80 in the browser, instead of www.example.org [16:02] Connorhd: can you show us your code? [16:02] pyMynx: felixge_: this site for example http://www.redditplus.com/ [16:02] felixge_: pyMynx: can you show your code? [16:02] pyMynx: Connorhd: ok 1 sec ^^ [16:04] BabyMaple: thank maushu , i can debug now ^^ [16:04] pyMynx: http://pastie.org/914219 [16:08] pyMynx: Connorhd felixge_: I think it might be because I used: Host instead of 'host', but when I check the headers Host is there [16:08] Connorhd: shouldn't be case sensitive [16:09] Connorhd: I'm not sure whats wrong [16:10] pyMynx: Connorhd: maybe I wasn't passing host correctly, sorry for this and thank you very much ^^ [16:11] felixge_: pyMynx: so it's working now? [16:11] pyMynx: felixge_: yes, I apologise [16:11] felixge_: pyMynx: no need to apologize ;) [16:12] pyMynx: felixge_: thank you very much :D [16:23] micheil: hey, anyone know much about websockets here? [17:05] mape: Ok so if anyone needs to profile a node script... node --prof --logfile=%t.log [17:06] mape: Not stated that you need --logfile anywhere but that is what you need to do in order to get the log file [17:06] pyMynx: does anyone have any tips on getting jquery to work with nodejs? :) [17:07] mape: don't think that is likely [17:07] pyMynx: mape: someone got YUI3 working http://www.yuiblog.com/blog/2010/04/09/node-js-yui-3-dom-manipulation-oh-my/ [17:08] mape: what in jquery do you need? [17:08] mape: Since you don't have a DOM [17:09] micheil: mape: were you doing websocket stuff? [17:09] mape: micheil: nope, want to look at it thought [17:09] micheil: hmm.. [17:10] micheil: I'm trying to figure out how to have a server for it running at say localhost:8000 [17:10] micheil: but it servers up different data depending on where clients connect to it from [17:10] micheil: eg, GET /chat vs GET /timestamp [17:11] micheil: there must be some way to perform that switching [17:12] pyMynx: mape: need to build a crawler, basically automate a form submission and colelct some data [17:12] mape: pyMynx: yeah but jQuery won't help you with the DOM issue [17:13] pyMynx: mape: I see... do you know of anything I can use to deserialize POST data? [17:14] mape: not sure but can't you fetch it from the req and use querystring [17:15] micheil: hm.. [17:16] micheil: I think the solution to my websocket woes may be in the http api [17:16] pyMynx: mape: omg I didn't notice the QueryString object! [17:19] demolith1on has joined the channel [17:19] charlesjolley has joined the channel [17:20] nsm has joined the channel [17:21] mape: :) [17:22] micheil: time to start out at bare bones level, just like the node http module does [17:24] mape: micheil: Aren't there tons of websocket modules for node? [17:25] micheil: not like I need. [17:25] mape: Ah k [17:25] micheil: I'm wanting to have one server send to different clients [17:25] sh1mmer has joined the channel [17:25] micheil: like one http server sends multiple documents to different clients [17:26] micheil: so, I'm structuring my work closely around the http module [17:26] mape: Ah k [17:26] pyMynx: I wish there was a nodejs httpclient, that simulated browser behaviour ^^ [17:27] mape: Build one and share! [17:27] mape: Or port curl into node [17:29] jed has joined the channel [17:31] micheil: wow.. node has so many undocumented apis. [17:31] micheil: like socket.ondata = func [17:35] mrjjwright has joined the channel [17:38] pjb3 has joined the channel [17:47] sh1m has joined the channel [17:49] softdrink has joined the channel [17:52] derbumi has joined the channel [17:54] pyMynx: mape: I'm on it :D [17:54] mape: hehe [17:54] bpot has joined the channel [17:57] mape: Nice, my datarelay now pushes 3285 req/sec :) [17:59] mape: Hmm now the slowest part of the entire app is querystring.parse [18:00] Yuffster has joined the channel [18:02] Gruni has joined the channel [18:04] zimbatm has joined the channel [18:04] derbumi has joined the channel [18:05] mrjjwright has joined the channel [18:13] maushu has joined the channel [18:18] mape: Hmm, 12 1.2% 4.6% Stub: CEntry [18:18] mape: Guess that is something I can't optimize away? [18:27] pdelgallego has joined the channel [18:38] mikeal has joined the channel [18:39] dandean has joined the channel [18:41] dgathright has joined the channel [18:44] superted_sweden has joined the channel [18:52] creationix has joined the channel [18:58] isaacs has joined the channel [19:03] MattJ has joined the channel [19:05] sveilin has joined the channel [19:10] xla has joined the channel [19:11] mrjjwright has joined the channel [19:16] derbumi has joined the channel [19:17] Gruni has joined the channel [19:20] cloudhead has joined the channel [19:21] mrjjwright has joined the channel [19:22] derbumi has joined the channel [19:23] mrjjwright_ has joined the channel [19:25] mrjjwright_ has joined the channel [19:25] creationix has joined the channel [19:26] binary42 has joined the channel [19:27] pdelgallego has joined the channel [19:31] teemow has joined the channel [19:35] Aria has joined the channel [19:49] xla: heya, is there a way to get the timezoneoffset in a format liek this: 0200 or -0700 [19:52] Connorhd: getTimezoneOffset is in minutes, so easy enough to work out? [19:54] xla: Connorhd: thought there is a way to get it in the right format, so it's a lot conversation work, to get it in the right format [19:56] Connorhd: I'm not sure [20:00] xla: Connorhd: thx anyway [20:04] piranha has joined the channel [20:06] zimbatm has joined the channel [20:18] malte has joined the channel [20:19] mrjjwright has joined the channel [20:23] zimbatm has joined the channel [20:24] maushu: Where is the huge node.js js file? [20:24] maushu: I know there was one, with the process code. I can't find it. [20:25] zimbatm: maushu: src/node.js [20:25] maushu: ...you're kidding. [20:25] maushu: ACTION facepalms. [20:26] zimbatm: nope :p it then gets compiled in src/node_natives.h with the whole stdlib [20:27] maritz has joined the channel [20:28] quirkey has joined the channel [20:28] mrjjwright has joined the channel [20:37] derferman has joined the channel [20:40] xla: is there general approach to write and use middlewares in node.js especially in a http context? [20:45] confounds has joined the channel [20:50] davidrussell has joined the channel [20:51] davidrussell has left the channel [20:52] javajunky has joined the channel [20:59] alexandere has joined the channel [21:03] rauchg has joined the channel [21:04] malte has joined the channel [21:07] tlrobinson_ has joined the channel [21:15] mrjjwright has joined the channel [21:16] fizx has joined the channel [21:16] sh1mmer has joined the channel [21:16] fizx has joined the channel [21:16] JimBastard has joined the channel [21:23] joshbuddy has joined the channel [21:37] kriskowal has joined the channel [21:46] zimbatm: xla: you'll have to provide intermediate request and response objects since response.write is not interceptable for example [21:48] softdrink has joined the channel [21:50] CIA-77: node: 03James Herdman 07master * rdd50b86 10/ doc/api.markdown : Fix documentation errors for DNS - http://bit.ly/cqYL81 [21:50] CIA-77: node: 03Ryan Dahl 07master * r93913db 10/ test/simple/test-http-head-request.js : [21:50] CIA-77: node: Add failing test for HEAD requests [21:50] CIA-77: node: Needs to be fixed for 0.2. - http://bit.ly/blsuwb [21:50] CIA-77: node: 03isaacs 07master * r57fbb62 10/ (8 files): trailing whitespace fixes - http://bit.ly/9M9INp [21:50] isaacs: w00t [21:52] alexandere has joined the channel [21:53] mape: good stuff [22:02] fizx has joined the channel [22:07] creationix has joined the channel [22:07] mikeal has joined the channel [22:11] aho has joined the channel [22:11] javajunky has joined the channel [22:17] CIA-77: node: 03Ryan Dahl 07master * r8553e8a 10/ (doc/api.markdown lib/http.js test/simple/test-http-1.0.js): Add incoming.httpVersion - http://bit.ly/aT3RST [22:19] mattly has joined the channel [22:21] alexandere has joined the channel [22:21] tlrobinson_ has joined the channel [22:28] creationix has joined the channel [22:30] tilgovi has joined the channel [22:31] isaacs: well, let's see if anyone balks about require.async going away. [22:31] isaacs: :) [22:33] Yuffster has joined the channel [22:36] charlesjolley_ has joined the channel [22:38] _ry: mjr_: ping [22:42] xla: is there general approach to write and use middlewares in node.js especially in a http context? [22:42] dandean has joined the channel [22:43] mikeal has joined the channel [22:45] mjr_: _ry: hey [22:45] _ry: mjr_: where can i get your multirepl? [22:45] _ry: it seems to be gone from github [22:45] mjr_: oh [22:46] mjr_: Let me make sure it works in the latest release and send you a new patch [22:49] CIA-77: node: 03Matt Ranney 07master * r715e119 10/ lib/net.js : Fix typo in comments. - http://bit.ly/aO2ieI [22:53] isaacs: mjr_: did i meet you on friday? [22:53] mjr_: yes, you did [22:53] mjr_: sitting at the picnic table [22:53] isaacs: ACTION gets confused when people don't use their irl names in irc [22:53] isaacs: oh, ok, great. [22:53] isaacs: i remembered thinking "oh, he's mjr, cool", but then forgot who i thought it about [22:54] mjr_: right, make sure I get that credit. [22:54] freshtonic has joined the channel [22:54] mjr_: I wrote this awesome test case for multi-repl, but I think I lost it in some git-based confusion. [22:55] jbrantly has joined the channel [22:55] _ry: mjr_: i think i have it [22:56] mjr_: I found the patch, but not my test. [22:56] mjr_: I was about to consult the all-knowing Time Machine [22:56] ashb: mjr_: `git reflog` it should be in there somewherre unless you've gone a git gc [22:56] _ry: mjr_: 813af5030542bd5cfeba8c0c5c930e5efab4f59b [22:56] ashb: (assuming you actually commited it) [22:57] mjr_: I only started using git so I could contribute to node [22:57] _ry: git show 813af5030542bd5cfeba8c0c5c930e5efab4f59b then :) [22:57] mjr_: hey, look at that! [22:57] mjr_: not gone after all [22:58] ashb: basically if oyu commited something to git, so long as you have that checkout about it will hang around for months [22:58] _ry: actually i lied. I have your patch. I just wanted to get you to make it work with the latest ;) [22:58] mape: hehe [23:03] creationix has joined the channel [23:04] mravaux has joined the channel [23:05] mjr_: _ry: do you have, or can you tell me how to find, the latest patch for lib/repl.js as well? [23:05] alexandere has joined the channel [23:07] mjr_: well, nevermind. I did it a stupid way. I guess I need to spend more time a get my head around all of the wonders of git. [23:07] _ry: mjr_: git log --graph --oneline origin..refs/remotes/mranney/repl [23:08] _ry: * 813af50 Added test for multi-repl. [23:08] _ry: * 01f68b3 Merge branch 'master' of git://github.com/ry/node into repl [23:08] _ry: * 00722ed Merge /Users/mjr/node into repl [23:08] _ry: |\ [23:08] _ry: | * 8dd3a27 Merge branch 'master' of git://github.com/ry/node [23:08] _ry: | * b276d27 Fix typo in comments. [23:08] _ry: | * b3e46f1 Allow multiple REPLs from different soruces [23:08] _ry: | * 7cadd68 lib/repl.js can be started with a stream for I/O or the default of stdin/stdout [23:12] mjr_: OK, order restored, but it doesn't actually work in the new version. [23:12] hassox has joined the channel [23:16] CIA-77: node: 03Ryan Dahl 07master * rcc9d5ab 10/ (2 files in 2 dirs): [23:16] CIA-77: node: C-Ares shouldn't iterate over all Object.prototype elements [23:16] CIA-77: node: and furthermore error out of one of them isn't a DNS option. [23:16] CIA-77: node: Test case by Ben Lund ; additional help from Tim Caswell [23:16] CIA-77: node: . - http://bit.ly/dt7cDd [23:19] mjr_: _ry: OK, it's all cleaned up and working with the latest. [23:19] mjr_: http://github.com/mranney/node [23:20] mjr_: Basically two files, lib/repl.js and test/simple/test-repl.js [23:21] binary42 has joined the channel [23:26] mjr_: Is there a clean way to point someone at more than one commit on gh? [23:26] _ry: mjr_: i think, but i'm not sure how [23:27] technoweenie has joined the channel [23:27] _ry: i'm going to squash it anyway [23:28] mjr_: ok then. With that, I'm going to go for a run in the rain. [23:28] _ry: mjr_: % ./node_g bin/node-repl [23:31] kriskowal: _ry ping [23:33] _ry: kriskowal: howdie [23:33] kriskowal: hey, i've been making great progress on narwhal-lib [23:33] kriskowal: it's still got some work, but the biggest win has been moving collisions into the narwhal namespace [23:33] kriskowal: could have a significant impact on adoptability on non-narwhal bootstrapping [23:34] kriskowal: i'm now using narwhal-lib with stock node [23:34] kriskowal: not everything works of course, but it doesn't interfere [23:34] _ry: cool [23:34] kriskowal: i think it would be awesome if node core did something similar [23:35] kriskowal: migrating core modules into a node/ namespace [23:35] _ry: so you'd do like.. [23:35] _ry: require('node/net' ? [23:35] kriskowal: require("node/process") e.g. yeh [23:35] kriskowal: that'd give us some ground to come together on a commonjs module, while keeping backward compat [23:36] kriskowal: which would make it easier to share modules with the other engines, like gpsee and flusspferd [23:36] _ry: hm, yeah maybe [23:37] kriskowal: like -moz-border-radius as a pattern really broke up the embrace/extend problems on the browser side [23:37] kriskowal: by making room for w3c to come up with a standard border-radius based on what the implementors learned from their proprietary extensions [23:37] mattly has joined the channel [23:38] isaacs: kriskowal: replied! [23:38] kriskowal: obviously no hurry on making the shift on node, since narwhal will play ball, but just thinking about how reusable code targetting node is [23:39] kriskowal: with a node namespace, people could at least create a compatibility layer on their engines so node code can be moved around. [23:42] _ry: i guess i'd be okay with that [23:43] _ry: it also makes it more explicit where the module comes from [23:45] kriskowal: isaacs: replied! [23:45] isaacs: kriskowal: so, wait a second, "/foo" isn't a valid module identifier? [23:45] isaacs: that seems silly. [23:46] kriskowal: it's very deliberate [23:46] isaacs: right, but it's also dumb. [23:46] kriskowal: attack my argument, not my brain [23:46] kriskowal: it's sensitive [23:46] kriskowal: has an inferiority complex [23:46] isaacs: your argument is dumb. your brain clearly is not dumb, sorry for the lack of specificity in my attack. [23:47] maushu: What is the best way to create a class in javascript? I'm tired of attempting stuff. [23:47] isaacs: maushu: function MyClass () {} [23:47] maushu: ...*sigh* [23:47] isaacs: maushu: var myObject = new MyClass [23:47] isaacs: maushu: that's the best way. [23:48] kriskowal: arguments can only be incorrect; they don't have brains. valid reasons for being incorrect include incoherent logic, false premises, or impractical postulates [23:48] inimino: maushu: there are no classes in JavaScript [23:48] isaacs: kriskowal: so, if an engine exists in a place where there is some concept of a root namespace, require("/foo") makes a lot of sense. [23:48] isaacs: kriskowal: restricting that at the spec level seems like doing it wrong. [23:48] kriskowal: and everyone takes advantage of that; but modules that take advantage of that are not commonjs modules. [23:48] isaacs: kriskowal: says who? [23:49] kriskowal: who says it isn't important [23:49] isaacs: kriskowal: or, perhaps what i mean to say is more along the lines of: "so what?" [23:49] kriskowal: so, this is a big problem with the spec… it's written for two different kinds of compliance. [23:49] isaacs: kriskowal: your module shouldn't be taking advantage of that, but if the *engine* takes advantage of that to construct a module.id that the *engine* knows exactly how to handle, who cares? [23:49] isaacs: i mean, module.id could be a sha1, as long as the engine knows what to do with it. [23:50] kriskowal: its statements apply both to module implementations and module loader implementations [23:50] admc has joined the channel [23:50] isaacs: of course, that'd be lame, since it'd be lacking in any semblance of debuggability [23:50] kriskowal: when they apply to module loader implementations, they are permissive; they state the minimum functionality for compliance [23:50] isaacs: kriskowal: ok [23:50] isaacs: then the loader i wrote is compliant. [23:50] kriskowal: when they apply to modules themselves, they are restrictive, stating the most they can expect from the loader in order to function properly across engines [23:50] isaacs: but *code* should require things using either ./foo/bar or foo/bar [23:51] isaacs: suresure [23:51] kriskowal: strictly speaking, yes [23:51] isaacs: from that pov, modules that do process.nextTick aren't "commonjs" modules, either [23:51] isaacs: or require("http").createServer [23:51] isaacs: or anything else that node provides. [23:51] kriskowal: it gets fuzzy with the module.id because the module should be able to expect it to be the same across engines [23:51] isaacs: kriskowal: i don't think that's reasonable. [23:51] kriskowal: so let's put it this way… [23:52] kriskowal: it's fine for require(id) to take things beyond spec, as long as they do not collide with things that are in-spec [23:52] isaacs: all it says is that require(module.id) should return module [23:52] kriskowal: but module.id is something that modules should be able to depend on being consistent [23:52] isaacs: right [23:52] isaacs: but that doesn't mean that node's module.id should be the same as couchdb's [23:52] isaacs: or narwhals [23:53] kriskowal: so, taking this from a different angle, the first drafts of narwhal's loader did what you're doing now [23:53] isaacs: without specifying and agreeing upon the construction mechanism for module.id, how could anyone expect that it'd be the same across engines? [23:53] isaacs: all that the spec guarantees is that require(module.id) will return module.exports, even if it's passed to some other module somewhere else. [23:53] kriskowal: doesn't it say top-level? [23:54] kriskowal: "The "module" object must have a "id" property that is the top-level "id" of the module." [23:54] isaacs: 3.1 = "The "module" object must have a read-only, don't delete "id" property that is the top-level "id" of the module. The "id" property must be such that require(module.id) will return the exports object from which the module.id originated. (That is to say module.id can be passed to another module, and requiring that must return the original module). " [23:54] isaacs: i'm not sure what "top-level" means in this context, if not "starts with /" [23:54] kriskowal: top-level was deliberately changed from "absolute" [23:55] kriskowal: read the section on the bottom about module identifiers [23:55] kriskowal: point 5. as long as we're lawyering [23:55] isaacs: the problem is that "conceptual module namespace root". wtf is htat. [23:55] isaacs: is that require.paths? [23:55] kriskowal: depends on the implementation [23:55] isaacs: if so, there is more than one. [23:55] isaacs: ok... [23:56] isaacs: so, in node's implementation, the conceptual module namespace root is /, and it refers to / [23:56] isaacs: ie, the filesystem root [23:56] kriskowal: for couch it's just a single object mapping top-ids to code [23:56] kriskowal: so, let's talk about logging [23:56] kriskowal: and security [23:57] isaacs: logging: it's better to know which code is actually running. security: if you don't trust the code running in node, you'er proper boned anyhow. [23:58] kriskowal: alright, compliance testing [23:58] darkf has joined the channel [23:58] isaacs: what about it? [23:59] isaacs: you mean, testing to make sure that a given program works on both node and narwhal and couch and all the rest? [23:59] kriskowal: well, the spec has strong fighting words about what module.id ought to be. write a compliance unit test. [23:59] kriskowal: for a module loader. [23:59] kriskowal: using only the guarantees provided in the specification.