[00:00] webr3: open q: any recommendations for a good IDE for writing server side js and pref running in ide (or even debugging) [00:00] webr3: ACTION uses eclipse for other lang's [00:08] blackdog: where does fs.writeSync be returning the # of bytes written, i don't see a return statement [00:09] blackdog: where does fs.writeSync return the # of bytes written, i don't see a return statement [00:10] softdrink has joined the channel [00:13] creationix has joined the channel [00:14] murz: is there a better way to debug node or am I stuck with using sys.puts [00:14] creationix: murz: you can use the debugger protocl [00:14] jesusabdullah: There's a debugger protocol? :o [00:14] creationix: the wiki has instructions on how to hook it to eclipse [00:14] satori_: http://wiki.github.com/ry/node/using-eclipse-as-node-applications-debugger [00:15] creationix: personally I prefer puts [00:15] creationix: but maybe that's just because I hate eclipse [00:15] micheil has joined the channel [00:15] satori_: heh. yeah me too [00:15] creationix: though someone could make a web based debugger with websockets and a node proxy [00:15] creationix: that would be cool [00:15] jesusabdullah: Never used it! :S [00:15] satori_: now that would be cool [00:16] jesusabdullah: creationix: DO IT [00:16] JimBastard has joined the channel [00:16] creationix: jesusabdullah: it's on my horizon, but I already have a big list of things to do [00:16] webr3: wish to hell i could just run js within eclipse [00:18] jesusabdullah: creationix: I know :( You're quite prolific! Which is pretty awesome. [00:23] kevm_ has joined the channel [00:23] Tim_Smart has joined the channel [00:24] byrongibson has joined the channel [00:24] byrongibson has left the channel [00:24] byrongibson has joined the channel [00:32] stepheneb has joined the channel [00:35] webr3 has joined the channel [00:36] joshbuddy has joined the channel [00:38] CrabDude has joined the channel [00:44] dgathright__ has joined the channel [00:47] huyhong has left the channel [00:54] mjr_: Sigh. I can't npm publish today. npm is sad with me. [00:56] mape: What does it say? [00:56] mjr_: http://gist.github.com/479128 [00:57] mjr_: it looks like it works, but ends with "npm not ok" and it doesn't actually work. [00:57] mape: Hmm k [01:00] mjr_: Anyway, now http_trace can decode WebSocket packets. Take a look at what it does for your wargamez site: http://github.com/mranney/node_pcap [01:02] mikeal has joined the channel [01:04] piratepenguin has left the channel [01:07] [[zz]] has joined the channel [01:07] mape: Wouldn't that be used for debugging? [01:07] mscdex: blargh. my photoshop-fu is failing me [01:08] softdrink has joined the channel [01:08] Buzzedword has joined the channel [01:10] JimBastard: mscdex: >.< [01:10] JimBastard: fotoshop-fu [01:10] mscdex: trying to come up with a neat logo for a project is hard [01:11] mscdex: i think i finally have something though [01:14] piratepenguin has joined the channel [01:14] mape: mscdex: what is the project about? [01:14] mscdex: it's for grappler :-> [01:14] mscdex: "comet" server [01:15] mscdex: here's what i have right now: http://mscdex.net/grappler/grappler.png [01:15] mscdex: :S [01:15] mape: what does grappler do? [01:15] jesusabdullah: grabs shit [01:15] jesusabdullah: but more seriously: I am also curious! [01:16] mscdex: kinda like socket.io, except it doesn't force any data format [01:16] mscdex: and it accepts plain tcp connections on the same port [01:16] jesusabdullah: hmm [01:17] mscdex: right now i've tested websockets and long polling and those work fine. need to test multipart and server-sent events yet though [01:17] mscdex: and plain tcp too [01:18] jesusabdullah: hmm [01:18] franksalim: mscdex, how can you tell the difference between 'plain' tcp that looks like http and http [01:18] JimBastard: mscdex: why is that black guy stealing the internet cable [01:18] JimBastard: ;-O [01:19] mscdex: franksalim: right now i'm simply using a configurable timeout to distinguish between the two [01:19] mscdex: franksalim: i'm making the assumptions that http clients will send http headers right away after connection [01:20] franksalim: so you are making the assumption that the protocols you will carry will not look like http [01:21] kodisha has joined the channel [01:21] mscdex: franksalim: it shouldn't matter once they're connected [01:21] mscdex: and the timeout has determined the type of connection [01:22] mscdex: after that you can pretty much have whatever type of protocol you want.... [01:22] franksalim: as long as it doesn't start with something you determine to be an http request :-) [01:22] mscdex: franksalim: if the http parser finds what looks like an http request after the timeout, that's too bad [01:23] mscdex: it's considered a tcp connection at that point [01:23] mscdex: and like i said the timeout is configurable, but it's just a neat little feature i came up with [01:23] franksalim: that's ok. the tricker case is if you have a 'tcp' connection that starts with an http request [01:23] franksalim: like you pipe a file to netcat and that file starts with http traffic [01:24] mscdex: franksalim: true, in that case you'd just need to delay 1ms or whatever above your timeout. not that big of a deal imho [01:24] franksalim: ok [01:25] Yuffster has joined the channel [01:27] Tim_Smart1 has joined the channel [01:33] franksalim: mscdex, i think it's a bad idea. i won't press it, though [01:35] mscdex: it's just an idea :-) [01:39] zapnap has joined the channel [01:40] mape: Hmm having some issues doing regex on html.. (I know) but is there any way of doing a global match for multiline script blocks? [01:40] mape: t.match(//gmi); doesn't seem to work for multiline [01:40] jesusabdullah: You can't use an html parser? [01:40] jesusabdullah: Oh wait [01:41] jesusabdullah: weren't you the one that needed ultra-fast parsing in pure js? [01:41] jesusabdullah: hmm [01:41] mape: No, I'm using a man in the middle html proxy [01:41] jesusabdullah: hmm? [01:41] mape: modifiying content I'm viewing in the browser [01:41] jesusabdullah: Ah [01:41] dnolen has joined the channel [01:41] jesusabdullah: Still: Can't use a parser? [01:41] jesusabdullah: even a pure js one? [01:42] mape: seems like overkill, if only I could regex them out [01:42] jesusabdullah: maybe [01:42] jesusabdullah: I can't really help with regexps because I suck at them hard core [01:42] jesusabdullah: If I could, I would [01:42] jesusabdullah: tbh though I would just find an html parser [01:42] jesusabdullah: It might be easier! [01:43] SubStack: < mape> seems like overkill, if only I could regex them out <-- never ever true [01:44] SubStack: using a regex to parse html will break [01:44] SubStack: they're different classes of languages [01:44] SubStack: regex is not powerful enough to parse nested data structures without extensions [01:45] mape: I'm not parsing html, I just need to find one tag [01:45] mape: which is always (never say never) the same structure [01:45] SubStack: "Hmm having some issues doing regex on html" [01:45] SubStack: what [01:46] mape: SubStack: http://glimmerblocker.org/ -> js to modify -> I just want to match all [01:47] mape: And I know there are edge cases, I don't really care if it breaks, just want to know if it can be done [01:47] pkrumins: for one time hack regex is ok. [01:47] jesusabdullah: I know from experience that substack feels very strongly on this issue. [01:48] jesusabdullah: Anyways: Do you guys know how to make that regexp work for multilines? :S [01:48] jesusabdullah: Even if it's a bad idea? [01:49] joshbuddy has joined the channel [01:49] joshbuddy has joined the channel [01:49] SubStack: //s in perl [01:50] jesusabdullah: I kinda wanna play with a personal proxy like that [01:50] jesusabdullah: could be fun! [01:50] SubStack: node.js doesn't like /s [01:50] mape: jesusabdullah: nm, I just stripped all newlines instead and now it works fine [01:50] jesusabdullah: gg [01:50] mape: Yeah doesn't seem like js has s [01:51] SubStack: you could do [\S\s] instead of . [01:51] SubStack: or any character class along with its negation [01:51] pkrumins: ACTION sneaks [01:51] sh1mmer has joined the channel [01:52] mape: pkrumins: Don't really care if it isn't the right tool :) Works for the tiny usecase I have, which is only to be used by me personally in my own browser. [01:52] pkrumins: alright! [01:53] pkrumins: it's always ok to use it for hacks. :) [01:53] pkrumins: anything can be used for hacks [01:53] pkrumins: if something is discussed whether it was ok to be used for a hack, then there is a problem! [01:53] mape: What I'm doing is trying to fix http://www.giantbomb.com/ [01:54] mape: they have like 30 script includes so I'm using glimmerblocker to parse the html before it is shown in the browser, to move them to the bottom so the rendering doesn't get blocked [01:54] mape: Seems they wrote the js dependant on being in head so doesn't really work [01:54] jesusabdullah: Is your computer teh slowzorz? [01:54] jesusabdullah: Mine seemed to deal with their javascripts no sweat [01:54] jesusabdullah: and it's only a P4 [01:54] jesusabdullah: :S [01:54] mape: jesusabdullah: Nope an i7 iMac, and I have 100Mbit [01:55] mape: Still don't like slow websites [01:55] jesusabdullah: ACTION didn't even notice [01:55] mape: Then perhaps you don't care as much [01:56] jesusabdullah: Well, probably not [01:56] jesusabdullah: but even I notice a laggy web site [01:56] mape: Or you are used to slow sites [01:56] jesusabdullah: *shrug* [01:56] mscdex: it also depends on the browser [01:56] jesusabdullah: <--chrome [01:56] mape: chrome [01:56] mscdex: yeah [01:56] jesusabdullah: It totally goes so fast OH FUCK [01:56] mscdex: if you have IE or FF or something, it's js can be pretty slow [01:57] mscdex: s/it's// [01:57] jesusabdullah: Yeah, probably [01:57] micheil: mscdex: *sigh* someone found another issue in node-websocket-server [01:57] mscdex: what's that? [01:57] micheil: looks like the third patch release in a few days. [01:58] micheil: the sockets weren't being closed [01:58] mscdex: ah [01:58] micheil: I wish there was a way to automatically tell this.. >_> [01:58] mscdex: netstat? [01:58] mscdex: node_pcap? :-) [01:59] micheil: not automatic ;P [01:59] mscdex: heh [02:00] micheil: do you think I can safely rename a connection state variable? [02:00] micheil: conn._state [02:00] mscdex: rename it? [02:00] kersny has joined the channel [02:01] micheil: yeah, currently a value of 5 == closed, it should've == closing [02:01] mscdex: oh [02:01] mscdex: i would say it'd be safe... [02:01] micheil: yeah, true, it's a partial private anyway [02:05] CIA-76: node: 03Ryan Dahl 07master * r458bbb4 10/ (lib/fs.js test/simple/test-fs-write-sync.js): fs.writeSync should return bytes written - http://bit.ly/cfy169 [02:09] micheil: wtf. now it's double closing. [02:11] ThePub has joined the channel [02:18] avalanche123 has joined the channel [02:18] avalanche123: hey, can anyone help me compile node for cygwin? [02:21] ThePub has joined the channel [02:26] micheil: fark. I hate it when I write a patch off my dev branch. [02:28] avalanche123: anyone? [02:28] avalanche123: help me compile node for cygwin [02:28] micheil: probably not [02:28] avalanche123: weird python time.dll exception [02:28] micheil: most people would be working under a *nix type environment [02:29] micheil: and cygwin last I knew wasn't officially supported [02:29] avalanche123: yes, but the docs say it can be compiled under cygwin] [02:29] micheil: oh? [02:29] avalanche123: http://nodejs.org/#build [02:29] micheil: well, at any rate, I know I can't help you there; can't speak for anyone else though [02:29] dnolen has joined the channel [02:29] avalanche123: Node is tested on Linux, Macintosh, and Solaris. It also runs on Windows/Cygwin, FreeBSD, and OpenBSD. The build system requires Python 2.4 or better. V8, on which Node is built, supports only IA-32, x64, and ARM processors. V8 is included in the Node distribution. To use TLS, OpenSSL is required. There are no other dependencies. [02:29] avalanche123: ok, thanks for replying though [02:30] avalanche123: :) [02:30] avalanche123: please pm me if you know how to help me [02:30] avalanche123: thanks in advance [02:31] jesusabdullah: avalanche123: http://wiki.github.com/ry/node/building-node-on-windowscygwin ? [02:33] jesusabdullah: avalanche123: Also, could the issue be with python, not with node? [02:35] [[zz]] has joined the channel [02:37] mscdex: maybe the version of python you have installed in cygwin isn't new enough? [02:38] micheil: hmm.. that's ever so odd. [02:38] micheil: I have one port on my websocket server that gets opened when the browser loads the connection, but then hangs around before closingh [02:39] micheil: duh. favicon was set to keep-alive. [02:40] mscdex: micheil: yep hehe i noticed that happening too when i was working on grappler last night [02:41] micheil: so. damn. annoying. [02:41] mscdex: ACTION shakes a fist at favicon.ico [02:48] sudoer has joined the channel [02:50] micheil: man... this dev would be so much faster if my brother hadn't blown the download limit.. [02:50] mjr_ has joined the channel [02:50] micheil: (which is actually 40-80GB's) [02:50] saikat has joined the channel [02:52] pquerna: rate limited after using too much bw? [02:54] tmpvar has joined the channel [02:54] wioota has joined the channel [02:55] micheil: yeah, cut back to dailup speed. [02:55] micheil: from 8 Mbits. [02:57] sudoer has joined the channel [02:59] jamescarr_ has joined the channel [02:59] jamescarr_: man [02:59] jamescarr_: everything changes so much [02:59] jamescarr_: :) [03:02] mscdex: yeah, yesterday it was raining and today it was hot and muggy all day [03:02] mscdex: :-( [03:05] ditesh|cassini has joined the channel [03:06] jamescarr_: how do you intersperse a variable in haml? [03:06] jamescarr_: like include item.id inside an href???? [03:07] jamescarr_: I'm sure no one will know [03:07] mscdex: then why did you ask? ;-) [03:08] jesusabdullah: jamescarr_: #haml is that way --> [03:08] jesusabdullah: jamescarr_: I actually don't know if there's a #haml <_< [03:09] zapnap has joined the channel [03:10] mscdex: there is! [03:10] mscdex: aaamazing! [03:11] mikeal has joined the channel [03:11] Apage43 has joined the channel [03:13] micheil_mbp has joined the channel [03:13] jamescarr_: I doubt they know haml.js ;) [03:18] micheil has joined the channel [03:24] micheil: oh man. fail. [03:24] micheil: it wasn't a bandwidth restriction, someone was either DoS'ing me or another user in this network wasn't being too friendly. [03:24] SamuraiJack has joined the channel [03:25] mscdex: :S [03:26] skampler has left the channel [03:26] isaacs_home has joined the channel [03:27] micheil: nuu... just lost a big safari session.. of heaps of information I was yet to look at. [03:27] mscdex: micheil: it was Ian Hickson :P [03:27] micheil: mscdex: lol. [03:27] micheil: oh yeah.., gots a copy of 8faces :D [03:28] bigfleet has joined the channel [03:31] wilmoore has joined the channel [03:32] sh1mmer: I'm sure I could blame myself but... [03:32] sh1mmer: http://dosync.posterous.com/clojure-nodejs-and-why-messaging-can-be-lame [03:32] sh1mmer: how come the clojure guy is still making noise about us rather us making noise about us [03:36] SubStack: if listeners start getting ugly you can always build abstractions on top of them [03:37] mikeal: i'm so sick of hello world [03:37] SubStack: I should make a multi-node backend for dnode just to shut that guy up [03:37] mikeal: "look at how complicated hello world is over multiple cores" [03:37] mscdex: mikeal: then start a "screw you world" [03:38] mscdex: :P [03:38] mikeal: like a real app won't be abstracted [03:38] SubStack: "hello cruel world!" [03:40] SubStack: also that blog post has premature optimization written all over it [03:41] mjr_: Also, that guy overlooks a very important problem: nobody really likes lisp. [03:41] SubStack: if your app is serving 20k responses / second, holy shit you have other problems [03:41] SubStack: mjr_: truth [03:42] SubStack: haskell is a better lisp than lisp [03:43] SubStack: but best suited for algorithm-heavy backend stuff [03:43] mjr_: sh1mmer: I pushed a few updates to pcap, including WebSocket debugging. [03:43] mjr_: er, decoding. [03:43] SubStack: ACTION still wishes javascript had type inference [03:43] sh1mmer: mjr_: cool :) [03:44] mjr_: It's pretty fun to watch WebSocket traffic go by. It turns out that everybody just sends JSON messages. [03:44] sh1mmer: SubStack: personally I don't know what's the big deal with using web-sockets [03:44] franksalim: mjr_, not everybody ;-) [03:45] sh1mmer: SubStack: I hate when people quote what their language can do in 8 lines. It's kinda bullshit. [03:45] mjr_: All examples I could find, including code that I've written do. I'm sure there are some lunatics out there that use some other format. [03:45] franksalim: hey now [03:45] sh1mmer: SubStack: if you used all the cores node would own clojure, but I see no graphs [03:45] jesusabdullah: SubStack: Shut up which guy? [03:45] jesusabdullah: Oh, you mean, the clojure > node guy? [03:45] sh1mmer: yeah [03:45] ThePub has joined the channel [03:45] franksalim: you can do more than send bare serialized objects around [03:46] jesusabdullah: heh [03:46] sh1mmer: his argument is that well... node was only using 1 core, but look it's not a pretty code now. even though it's a lot slower [03:46] franksalim: mjr_, i guess you haven't seen any examples of xmpp over websockets? [03:46] mjr_: It think that whole clojure thing is ultimately irrelevant because nobody cares about lisp. If that was a rhino vs. node comparison, it'd be meaningful. [03:46] SubStack: sh1mmer: bad thing to do for languages maybe, but I like it when libraries show off a synopsis in a few lines though [03:46] franksalim: mjr_, or other protocols? [03:47] sh1mmer: SubStack: I think the problem is it's misleading [03:47] sh1mmer: SubStack: you can always write an API which makes anything really short and sweet [03:47] sh1mmer: but that's not indicative of the total cost of ownership [03:47] mjr_: franksalim: just because I haven't seen it doesn't mean that it isn't very popular or even a fantastic idea. I just couldn't find any to test with. [03:47] mostlygeek has joined the channel [03:47] sh1mmer: look at rails. I know a lot of people that love how fast they can get going in rails but then get frustrated with modifications and scaling [03:47] SubStack: sh1mmer: there's value in having approachable tech though [03:48] sh1mmer: SubStack: oh I couldn't agree more [03:48] SubStack: rails is perhaps a bad example [03:48] sh1mmer: but I wouldn't use it in this vs that [03:48] SubStack: since it is actually really complicated to get going with [03:48] franksalim: mjr_, just an idea for lunatics, then :-) [03:48] SubStack: that is if you are at all curious about what all those files that rails put into your project directory are actually doing [03:49] mjr_: franksalim: indeed, sheer madness. [03:49] mjr_: franksalim: actually, anybody deploying anything on WebSocket right now is basically a little crazy. The standard isn't done and there were breaking changes in the last rev! [03:50] franksalim: mjr_, anyone deploying on websocket right now also has a server with an emulation strategy [03:50] mape: mjr_: if you have fallback and the server can handle all specs it isn't so bad? [03:50] SubStack: yeah, socket.io is nice for that [03:50] mjr_: y'all misunderstand me. I think WebSocket is fantastic. [03:50] beelzabub: anyone know of a nice way to debug v8? [03:50] SubStack: amazingly it works all the way down to IE5 too [03:50] mjr_: But just like node, it's an awfully new and dynamic thing to deploy apps on. [03:51] mjr_: Which isn't to say that I'm not deploying apps on node. [03:51] mape: Guess so, but fun to play with [03:51] mjr_: And I feel a little crazy for doing so. [03:51] franksalim: it's only newly natively implemented in browsers [03:54] micheil: mjr_: it's actually pretty stable for now [03:54] ThePub has joined the channel [03:54] micheil: I'm following the protocol design discussion on the hybi / ietf mailing list [03:55] ThePub has joined the channel [04:02] [[zzz]] has joined the channel [04:02] pnewhook has joined the channel [04:05] jamescarr_ has joined the channel [04:11] micheil: does anyone have a reference implementation of a B-Tree or B+Tree lying about? [04:12] mscdex: in JS? [04:12] micheil: preferably [04:13] mikeal has joined the channel [04:13] pnewhook: have you looked at the cnxLabs project? http://blog.conquex.com/?p=84 [04:14] quirkey has joined the channel [04:15] satori_: upx squashes node.exe from 7.2MB to 3.1MB on windows. cool. [04:15] micheil: I've found this.. but it's not much different to a linked list / dbl linked list [04:15] micheil: http://github.com/nzakas/computer-science-in-javascript/blob/master/data-structures/binary-search-tree/binary-search-tree.js [04:15] mscdex: that's just a plain bst [04:16] micheil: pnewhook: oh, cool, I'll have a look at that, thanks [04:16] micheil: yeah, I'm thinking it'd be fun to write a B+Tree type datastore in node [04:16] micheil: because.. well, I'm wanting to play with something different [04:16] mscdex: hehe [04:17] pnewhook: nStore is just a json structure right? [04:17] micheil: I think so [04:17] micheil: iirc, it's just an array [04:18] [[zzz]] has joined the channel [04:21] micheil: it's a key/value store [04:21] micheil: at any rate. I'm looking to create something a bit richer. [04:22] micheil: bbl. [04:22] micheil: lunch [04:22] pnewhook: any reason the existing datastores (redis, mongodb, mysql) aren't interesting? Or is it just a project to try some ideas? [04:23] SubStack: a transactional object graph would be sweet [04:24] SubStack: key/value stores are something of a pain to marshal your data structures in and out of [04:25] jakehow has joined the channel [04:31] ThePub has joined the channel [04:31] khug has joined the channel [04:35] eisd__ has left the channel [04:35] eisd_ has joined the channel [04:37] ryah: yo [04:37] [[zzz]] has joined the channel [04:37] mscdex: yo [04:38] mattly has joined the channel [04:42] JimBastard: holler [04:43] [[zzzz]] has joined the channel [04:43] liucougar has joined the channel [04:45] [[zzz]] has joined the channel [04:45] jakehow has joined the channel [04:53] statim has joined the channel [04:53] joshbuddy has joined the channel [04:55] [[zzz]] has joined the channel [04:55] mscdex: JimBastard: not so loud [04:56] sh1mmer: ryah: how's it going? [04:56] JimBastard: ^_^ [04:57] micheil: SubStack: yeah, um.. graphdbs.. == confusing [04:58] ryah: good [04:58] CIA-76: node: 03Ryan Dahl 07master * r0174ceb 10/ (5 files in 3 dirs): bump version - http://bit.ly/9PlQl9 [04:59] sh1mmer: edd asked me to do the oscon talk [04:59] sh1mmer: anything you think I should cover? [04:59] sh1mmer: oh, and I'm also eating my hat [04:59] sh1mmer: ACTION working on node-pcap [04:59] sh1mmer: :D [04:59] ryah: node-pcap is awesome [04:59] SubStack: micheil: the abstractions are just lacking at present [04:59] sh1mmer: it is [05:00] sh1mmer: mjr_'s code is excellent [05:00] micheil: SubStack: actually, trying to write a graph db in javascript would be fun [05:00] sh1mmer: I'm using it as the basis for the dns server [05:00] micheil: ryah: 0.1.101? [05:00] SubStack: if I get some time I might hack at it some [05:00] sh1mmer: It was really fun writing some of my own stuff to see his super elegant code [05:00] ryah: micheil: node [05:00] ryah: er [05:00] ryah: micheil: nod [05:00] ryah: :) [05:01] ryah: sh1mmer: when is oscon? [05:01] sh1mmer: next week [05:01] mikeal: ryah: what do you think about having a "stream" module? [05:01] micheil: ryah: so, uh, when's 0.2.00 called? should I try and finish that stuff for grp / usr stuff? [05:01] sh1mmer: Edd addeda JavaScript track at the last minute [05:01] mikeal: it was brought up on the list in the thread about that filter api [05:01] ryah: mikeal: eh. donno [05:02] ryah: maybe [05:02] ryah: mikeal: soon [05:02] ryah: er [05:02] ryah: micheil: soon [05:02] ryah: sorry [05:02] micheil: ryah: it's all good; it's fairly late there [05:03] micheil: (well, early for me, because I've been working nocturnally... but eh') [05:05] statim has joined the channel [05:05] mikeal: ryah: I was thinking of working on a patch to add that filter API to node along with some tests [05:06] mikeal: should i make that a new module, or just keep it all in sys [05:06] micheil: question: who is that matt person doing the dgram stuff? [05:06] mikeal: matt ranny [05:06] mikeal: mjr_ [05:06] micheil: ah [05:06] mikeal: there needs to be like a global index of real names to irc names and vice versa [05:07] micheil: mikeal: would I be right in guessing you'd be the "michael" from the video of the illuminati? [05:07] mikeal: yes [05:07] mikeal: but my name is actually spelled like thi [05:07] mikeal: er this [05:07] micheil: yeah, true [05:07] micheil: mine is pronounced michael as well. [05:07] mscdex: mine isn't [05:07] micheil: mscdex: ? [05:07] mscdex: :-D [05:08] mikeal: mine is just hippy spelling :) [05:08] micheil: mikeal: mine's based on the scottish spelling [05:09] mikeal: yeah, people always think mine is ethnic, but it's not, it's just hippie [05:10] micheil: heh, cool :) [05:11] ryah: mikeal: i want to play around with that API a bit more outside core [05:11] mikeal: cool [05:11] ryah: nothing inside really needs it - right? [05:11] mikeal: the feedback has been positive so far, people mostly just want to talk about naming conventions [05:12] mikeal: nope, the idea was just to expose something that people could use to write simplified stream manipulators [05:12] mikeal: but it's not much code and it all works on top of the already defined Stream interface [05:12] ryah: yeah - no need to rush into API then [05:12] ryah: let tim put in connect and start playing it [05:12] ryah: with it [05:12] mikeal: ah, good idea [05:13] ryah: i also haven't given it sufficent attention [05:13] ryah: pretty busy this week [05:13] mikeal: i think we all are :) [05:16] micheil: I have to say, the new Express is looking fairly good. [05:16] micheil: I'm thinking I might port it to browser side. [05:16] mikeal: express and geddy both look pretty nic [05:16] mikeal: er nice [05:17] mikeal: i don't really have a need for them tho, i'm not much of a framework guy [05:17] micheil: I haven't looked much at Geddy [05:17] micheil: yeah, true, I'm mainly implementing protocols. [05:17] [[zz]] has joined the channel [05:18] micheil: and some of the changes I make to the api's I implement are based on the interaction between the protocol and existing frameworks [05:28] ryah: mjr_: ping [05:35] marvel_ has joined the channel [05:35] marvel_ has left the channel [05:36] [[zz]] has joined the channel [05:39] [[zzz]] has joined the channel [05:41] micheil: woah. Safari's reader mode actually merges multiple pages together [05:41] micheil: try this page out in it: http://infogrid.org/blog/2010/02/operations-on-a-graph-database-part-1/ [05:41] paulwe: micheil: like safari 5 or a nightly? [05:41] micheil: safari 5 [05:42] [[zzz]] has joined the channel [05:43] byrongibson has left the channel [05:44] paulwe: that's a really cool feature, it seems to lazily load content ahead of the scrollbar too [05:45] micheil: yeah, I mean, I knew it showed content without crap, but I didn't know it merged different pages together [05:46] Aikar has joined the channel [05:46] tekky has joined the channel [05:54] robotblake has joined the channel [05:54] PyroPete1 has joined the channel [05:54] rtomayko has joined the channel [05:59] jsilver has joined the channel [05:59] jsilver: guys [05:59] jsilver: i used wubi to install ubuntu on a laptop (big mistake) [05:59] jsilver: i did a bunch of node coding on it [05:59] jsilver: and then just messed up /sbin/init [05:59] jsilver: lol [06:00] jsilver: how do i repair grub on a wubi partition [06:00] jsilver: lol [06:00] micheil: yeah.. generally it's not a good idea to mess with that stuff [06:00] jsilver: no [06:00] jsilver: it messed up on its own [06:00] jsilver: because i hard reset it [06:00] jsilver: when it was crashing [06:00] jsilver: im in windows on it [06:00] jsilver: and its fine [06:00] jsilver: i ran checkdisk /r [06:00] jsilver: but didnt fix it [06:00] jsilver: i think im supposed to boot the ISO [06:00] jsilver: and fsck it [06:00] micheil: Anyone do much with things like linked list / doubly linked lists? [06:00] jsilver: or use gparted chjeck [06:01] jsilver: gotta find a USB stick and flash [06:02] tmpvar has joined the channel [06:03] mscdex: micheil: like? [06:03] micheil: well, I currently have that doubly linked list in node-websocket-server [06:03] micheil: and I never need to go transversing up from the tail [06:03] micheil: so I figure it'd be more memory efficient to go with a linked list [06:04] micheil: (linearly linked list) [06:04] micheil: A -> B -> C [06:04] mscdex: then remove the upstream link [06:04] mscdex: :-) [06:04] micheil: A == head, C == tail, B == head._next [06:05] SubStack: micheil: a list of buffers? [06:05] micheil: then to insert a node, it's simply: tail._next = nNode; tail = nNode; [06:05] micheil: SubStack: nup; a list of connections [06:05] SubStack: ah k then [06:06] micheil: so, similar, removing C is, [06:06] micheil: find c, by while node != C.id [06:07] micheil: when we find C, keep hold of the previous node; so, pNode._next = nNode; delete cNode; [06:09] micheil: and I can make life easier by making it an appendOnly list. [06:09] mikeal has joined the channel [06:15] dmcquay has joined the channel [06:20] jaja has joined the channel [06:20] mostlygeek has joined the channel [06:22] ryah: man. i don't get this SUN_LEN hack [06:24] mostlygeek: hey guys, can you guys help me load test a node.js implementation? [06:25] mostlygeek: we're putting together game server tech. and one of the things is how fast we can send messages back/forth using node+websockets. So you'll need the chrome/safari browser: http://invaders.mondocloud.com/ [06:25] CIA-76: node: 03Ryan Dahl 07master * rfa344d8 10/ src/node_net.cc : Fix solaris build - http://bit.ly/bZsuSD [06:28] ryah: mostlygeek: cool [06:28] mostlygeek: ryah: yah node works pretty good [06:29] mostlygeek: using like 2% cpu [06:29] mostlygeek: i need like 50x ppl in there to really test it out ... i rate limited it to 24req/sec (so 24fps) [06:29] SubStack: write a script [06:30] mostlygeek: SubStack: yah i could do that :) [06:30] mostlygeek: brb... hehe [06:32] dmcquay: anyone here familiar with socket.io [06:32] dmcquay: ? [06:33] sh1mmer: stupid question [06:33] SubStack: agree [06:33] sh1mmer: do addons go in .node_libraries ? [06:33] sh1mmer: or do they need to be compiled in? [06:33] dmcquay: great...aside from me being stupid, i should be able to get some help :) [06:33] dmcquay: i'm just trying to run the demo app [06:33] dmcquay: to get me started [06:33] paulwe: sh1mmer they're just functions [06:34] paulwe: to make a plugin all you need is exports = function(req, res, outerNext) { /* do some stuff */ } [06:34] mostlygeek: dmcquay: i'm using socket.io for http://invaders.mondocloud.com/ [06:34] mostlygeek: it was a quick lib to implement [06:35] SubStack: mostlygeek: you said it was websockets [06:35] mostlygeek: yah, socket.io has a websocket transport [06:35] mostlygeek: WebSockets through socket.io [06:35] paulwe: the connect pubsub module is kind of iffy... socket.io is way better [06:35] creationix has joined the channel [06:35] SubStack: ACTION takes this opportunity to plug dnode [06:36] dmcquay: so, when i just run the demo app for socket.io [06:36] dmcquay: it seems to fail [06:36] paulwe: dmcquay: what browser? [06:36] dmcquay: i'd like to get it working so i can begin dissecting it and understand it [06:36] dmcquay: chrome, checking version... [06:36] SubStack: dmcquay: turn the flashsocket transport off [06:36] sh1mmer: paulwe: I know that [06:36] SubStack: it's super annoying [06:36] sh1mmer: paulwe: I was asking where .node addons live [06:37] SubStack: since it requires root to bind port 831 [06:37] mostlygeek: SubStack: we took a look at dnode, was thinking of using it for inter-node communications rather than client->server [06:37] dmcquay: k, i'll try that... [06:37] paulwe: sh1mmer: my bad O.o [06:37] isaacs has joined the channel [06:37] SubStack: mostlygeek: \o/ [06:37] mostlygeek: SubStack: is that a horray? :b i don't use irc much [06:37] dmcquay: SubStack - FYI, also doesn't work in FF [06:37] SubStack: yes, hooray [06:38] SubStack: mostlygeek: hopefully soonish I'll hack in gzip compression for both transports to speed everything up [06:38] mostlygeek: \o/ heh i'm going to use that more [06:39] mostlygeek: do you think gzip will make that much diff? [06:39] SubStack: can't be sure until I have hard data [06:39] mscdex: woohoo... server-side events be workin [06:40] dmcquay: so is socket.io a big deal currently? [06:41] micheil: no, node-websocket-server is. [06:41] dmcquay: there seems to be a lot of chatter about it [06:41] micheil: :P [06:41] dmcquay: micheil - i was curious about that [06:41] dmcquay: googled it to find out more [06:41] micheil: dmcquay: well, hi, I'm the author of node-websocket-server [06:41] dmcquay: not sure if i found the right thing [06:42] dmcquay: no, i found the wrong one [06:42] dmcquay: i found one that the author of socket.io made and abandoned [06:42] micheil: http://github.com/miksago/node-webscoket-server [06:42] dmcquay: and i thought it was the one you're referring to [06:42] micheil: erm.. [06:42] dmcquay: so i should probably check yours out [06:42] micheil: http://github.com/miksago/node-websocket-server [06:42] micheil: help's if I can spell. [06:42] micheil: mine doesn't do any of the other fallbacks though [06:42] mscdex: woot sse honors set-cookie :-D [06:42] micheil: it's a raw websocket server. [06:42] micheil: mscdex: sse? [06:43] mscdex: server-side events [06:43] mscdex: an html5 thing [06:43] mscdex: :> [06:43] micheil: oh, nice [06:43] mscdex: another transport to use [06:43] micheil: why would a browser have SSE but not WS? [06:43] mscdex: different purposes i guess [06:43] mscdex: sse is a one way thing [06:43] micheil: yeah, true [06:43] mostlygeek: the flash fallback didn't work well for me [06:43] mscdex: it's more or less multipart/x-mixed-replace [06:44] mscdex: just a different protocol [06:44] mostlygeek: in socket.io in ff, it loaded the swf... [06:44] SubStack: mscdex: your echo server example is 94 lines -_- [06:44] SubStack: er [06:44] mscdex: SubStack: huh? [06:44] SubStack: s/mscdex/micheil/ [06:44] mscdex: hax! lol [06:44] mscdex: i'm actually working on an echo server example right this moment... :o [06:44] mscdex: for grappler [06:45] SubStack: hah [06:45] micheil: SubStack: yeah, because.. it does a little bit more then just websockets. [06:45] mscdex: creepy [06:45] micheil: SubStack: it's really just my test server. [06:45] micheil: mostlygeek: with my websocket server, there are no fallbacks. [06:46] micheil: I'm building it for speed, and in order to handle fallbacks, you add overhead [06:46] dnolen has joined the channel [06:46] mostlygeek: micheil: that's ok, i agree. we don't actually like to use fallbacks either [06:46] mostlygeek: we prefer to use pure websocket only [06:46] [[zz]] has joined the channel [06:46] SubStack: meh [06:47] micheil: mostlygeek: in your game, it may be an idea to write your own animation library to mean that you can only actually move at 32 fps. [06:47] micheil: or 24fps. [06:47] SubStack: micheil: it'd be nice to see some hard data on that overhead [06:47] SubStack: even if it's 25% I don't care [06:47] micheil: SubStack: it's mainly a memory issue [06:47] SubStack: ah [06:47] micheil: because for things like cometd, you need to store N number of messages that were sent since the last connection, for X client [06:47] micheil: -s [06:48] mostlygeek: micheil: well we can probably push a lot of fps, it's not too sophisticated. I could have wrote some code to sample the mouse location less (less traffic) and the animate the changes in direction [06:48] mostlygeek: right now it's sampling at like ~50ms, but doing it at 100ms is probably ok too [06:49] micheil: actually, did anyone see the jQuery UI test authoring tool? [06:49] mostlygeek: but 50ms doesn't generate much traffic, like ~4k/user [06:49] mostlygeek: with fat json encoded messages [06:49] micheil: that thing was epic. but massively slow when recording. [06:49] micheil: mostlygeek: for a game, I'd recommend not going with JSON [06:49] dmcquay: still no dice for the socket.io example [06:49] mostlygeek: binary is hard to jam through websockets [06:50] dmcquay: i gotta call it a night, but i'll check into it more tomorrow [06:50] dmcquay: thx for help [06:50] micheil: mostlygeek: who says binary? [06:50] dmcquay: SubStack ^ [06:50] mostlygeek: what do you recommend? [06:50] SubStack: eh? [06:50] micheil: mostlygeek: and actually, websockets do support binary data, it's just that no one implements it [06:51] SubStack: base64 it then [06:51] micheil: mostlygeek: op+":"+x+","+y+";" [06:51] micheil: you don't even need the ; [06:51] mostlygeek: true [06:52] SubStack: what's so different about that versus json? [06:52] mostlygeek: websockets has some stuff for binary but it's not currently supported in the protocol [06:52] micheil: but basically a raw string concat, because doing a string op will be quicker in the browser then encoding an object to json [06:52] mostlygeek: hmm... i really wonder [06:52] micheil: mostlygeek: wrong. it's not supported in the browsers & implementations. [06:52] mostlygeek: http://www.whatwg.org/specs/web-socket-protocol/ [06:52] mostlygeek: that's the latest spec... search for binary it says: At this time, the WebSocket protocol cannot be used to [06:52] mostlygeek: send binary data. ... [06:53] micheil: mostlygeek: see section 4.2 and 5.3 [06:53] mostlygeek: JSON has fast serialization/deserialization [06:54] micheil: the framing does handle binary data (high bit data) [06:54] mostlygeek: in node since i suspect that is written in C, on a basic benchmark my cheap little VPS did like .. ~4000 ops/sec [06:54] micheil: mostlygeek: for most uses JSON is great, but for super fast operation, string concatenation is faster. [06:54] micheil: node is mostly javascript [06:54] mostlygeek: what about the parse step? [06:55] micheil: that's javascript. [06:55] mostlygeek: JSON.parse is in C in V8? [06:55] micheil: http://github.com/miksago/node-websocket-server/blob/development/lib/ws/connection.js#L355-385 [06:55] micheil: oh. [06:55] micheil: are you parsing on the serverside? [06:55] mostlygeek: yah [06:56] mostlygeek: just send through a {t:"m",x:100,y:233} [06:56] mostlygeek: that seems to be pretty quick [06:56] micheil: yeah, it will be. [06:56] micheil: but you'll get even quicker speeds without json. [06:57] mostlygeek: yah :) i'm sure hehe [06:57] mostlygeek: but the demo works out pretty good, we're targeting MMO type games not really FPS [06:57] mostlygeek: with FPS we'll probably use a native binary protocol instead... since it'll be in an engine like unity we can do that. maybe something like msgpack [06:58] SubStack: hmmm [06:58] SubStack: var t0 = Date.now(); for (var i = 0; i < 10000; i++) { JSON.parse('["foo","bar",' + i + ']') }; sys.puts((Date.now() - t0) / 1000 + ' seconds') [06:58] SubStack: 0.193 seconds [06:58] SubStack: seems plenty fast [06:59] micheil: SubStack: and the reverse? [06:59] sh1mmer: mjr_: you around? [06:59] SubStack: 0.041 seconds [06:59] SubStack: with stringify [06:59] micheil: remember, if you handle data on the server, then it'll be one encode and one decode each time [07:00] micheil: and if you need to modify data, it'll be 2 encodes one decode. [07:00] SubStack: interesting, stringify is about 7 times faster than parse [07:00] mostlygeek: it's plenty fast for doing an mmo type game [07:00] micheil: wow. WS on the mailing list keeps getting itself ripped apart. [07:01] SubStack: ACTION hates mailing lists [07:01] micheil: the spec author doesn't want it to be HTTP compliant, so people are asking why even have a HTTP handshake? [07:01] mostlygeek: with the latency of client->server, like 30ms is good, that's only ~30req/sec that is physically possible... [07:02] micheil: so, of course, the spec has been written, but written in such a way that the spec author doesn't like it, so he makes it hard for others to work with it. [07:03] micheil: http://www.ietf.org/mail-archive/web/hybi/current/msg02186.html [07:05] mostlygeek: it is strange to use http to do the handshake... [07:05] mostlygeek: cause of proxy servers it breaks a lot of ws, but through https its fine... but then why HTTP at all :b [07:06] micheil: yeah [07:06] micheil: I personally think that a content-length should be sent. [07:07] micheil: and have the handshake comply with HTTP, as does any other HTTP upgrade request [07:07] mostlygeek: in the headers? [07:07] micheil: yeah [07:08] mostlygeek: hmm... well will have to see how the support for WS goes [07:08] mostlygeek: it is good that there is a lot of attention around it [07:11] micheil: hmm.. I wish I had some people who would be will to test out my dev builds of node-websocket-server. [07:12] SubStack: micheil: moar examples [07:15] micheil: k. so I just worked out how to crash my websocket server. [07:16] pavan_ has joined the channel [07:16] ryah: examples! [07:16] ryah: best things ever [07:17] JimBastard has joined the channel [07:17] SubStack: ACTION <3 examples [07:17] sh1mmer: ryah: where do .node files go? [07:18] JimBastard: wow my log file situation is kinda getting out of control [07:18] JimBastard: lol [07:18] JimBastard: soo many nohup logs, how to deal hrmmm [07:18] sh1mmer: JimBastard: ? [07:18] sh1mmer: JimBastard: scribe is nice [07:18] JimBastard: sh1mmer: got lots and lots of node.js instances running via nohup, lots of stdout i'd like to see [07:18] micheil: mostlygeek: is your ws server still up? [07:19] mostlygeek: micheil: yep [07:19] micheil: k [07:19] mostlygeek: i have it running so that if it crashes it'll get brought back up immediately [07:19] micheil: oh. [07:19] mostlygeek: mmm... we've seen that when node runs out of heap/mem [07:19] micheil: did it crash? [07:19] mostlygeek: cause of my bad code [07:19] mostlygeek: hehe, nope. the srv total would reset to 0 if it did [07:19] JimBastard: maybe ill just have them write to a public folder on a static node site, that seems easy enough for now [07:20] mostlygeek: JimBastard: why use nohup? [07:20] JimBastard: detaching from the process i guess [07:21] JimBastard: saying goodbye, maybe ill see you later [07:21] sh1mmer: JimBastard: it did occur to me you could write scribe in node using node-elf-logger [07:21] mostlygeek: we use daemontools [07:21] JimBastard: sh1mmer: word [07:21] mostlygeek: i love daemontools... check out: http://topmonster.dev3.dimerocker.com:9000/ [07:21] mostlygeek: so far it's handled: 63,023,805 req/resp [07:21] mostlygeek: no crashes... doing 480req/sec [07:22] JimBastard: how many machines? [07:22] mostlygeek: 1 [07:22] jansc has joined the channel [07:22] JimBastard: ;-) [07:22] mostlygeek: 1 vps :b $29.00/mo hehe [07:22] mostlygeek: have http://invaders.mondocloud.com on there too [07:22] mostlygeek: node works well :) [07:22] JimBastard: is this all node? [07:22] mostlygeek: ahh... well topmonster actually uses apache + nginx + node [07:23] mostlygeek: plus a bit of other glue ... [07:23] mostlygeek: i don't like the web-page generation in node, so we use PHP [07:23] JimBastard: cool cool [07:23] mostlygeek: well mod_php [07:23] mscdex: pew pew pew! [07:23] mostlygeek: it's the future. [07:23] mostlygeek: @mscdex :) [07:23] JimBastard: ill show you screenshot of what im working on right now [07:23] mscdex: mostlygeek: it needs more lasers ;-) [07:23] mostlygeek: mscdex: *EVERYBODY* has said that... [07:23] mostlygeek: i should have used a field and a few cows [07:24] mostlygeek: MOO MOO MOO [07:24] mostlygeek: instead of spaceships [07:24] mscdex: or cats: mew mew mew :-D [07:24] mostlygeek: @JimBastard sned away [07:24] mscdex: cats + lasers [07:24] mostlygeek: LOLz [07:24] mostlygeek: sharks w/ friggin laser beams [07:24] JimBastard: http://i.imgur.com/CxmUi.png [07:24] JimBastard: ^_^ [07:25] mostlygeek: lol [07:25] mostlygeek: what.is.dat? [07:25] mscdex: JimBastard: how many players does it support? [07:25] mscdex: :P [07:25] JimBastard: i try to keep all of my ports OVER 9000 [07:25] JimBastard: www.nodejitsu.com [07:25] mostlygeek: is that a door game you're writing in node? [07:25] mscdex: lol [07:25] JimBastard: http://zzt.nodejitsu.com/ ? [07:26] mscdex: zzt plz [07:26] JimBastard: ryan[WIN] ^^ [07:26] mscdex: plzzt [07:26] mscdex: :-D [07:26] mostlygeek: JimBastard: nooo... coool. ascii art! [07:27] JimBastard: mostlygeek: http://asciimo.com/ [07:27] mostlygeek: JimBastard: o.m.f.g [07:27] mostlygeek: sweet. [07:27] JimBastard: ACTION says welcome to the node channel. I am unstoppable. [07:27] mostlygeek: time to bring back some door games...usurper, LORD, trade wars... [07:27] mostlygeek: the internet is cyclical [07:28] JimBastard: get it working on the mobile device [07:28] mscdex: TW2002 [07:28] mostlygeek: ACTION me highfives mscdex  [07:28] mostlygeek: oops [07:28] mscdex: hehe [07:28] mostlygeek: ACTION eh [07:28] mscdex: we need to convert synchronet to node! [07:28] mscdex: :p [07:29] mscdex: we could call it... asynchronet [07:29] mscdex: ;-D [07:29] mostlygeek: hahah [07:29] mostlygeek: i love it! [07:29] mostlygeek: there needs to be door style games on facebook! [07:29] mostlygeek: graphics are too 2009 [07:29] mscdex: ascii farmville [07:32] felixge has joined the channel [07:32] felixge has joined the channel [07:33] sooli: Hi my node.js webchat is more stable now, and you can create private messages http://chat.solisoft.net [07:33] sooli: I need tests on it (and also feedbacks) [07:35] Guest81547 has joined the channel [07:41] sat has joined the channel [07:45] mostlygeek: ryah: is there any way to control how much mem node allocates? [07:45] ryah: mostlygeek: no [07:45] mostlygeek: how does it decide how much to allocate? [07:45] ryah: unknown [07:46] ryah: largely v8 does magic [07:46] mostlygeek: but the process does some stuff doesn't it? [07:46] mostlygeek: i've had it run out of memory before, mostly because i had some un garbage collectable objects [07:47] ryah: node itself does some allocations, yes [07:47] kodisha: well exact precess might be unknown, but it must somehow be dependent of the complexity of code you write [07:47] kodisha: and size of your object? [07:47] ryah: somehow [07:47] ryah: its very difficult to make any correlation - v8 does magic [07:48] kodisha: v is for voodoo :D [07:48] ryah: but yes, more objects, more data [07:49] mostlygeek: what does the process do to allocate memory? does it always allocate the same amount to start out... the vsize seems to differ depending on machine [07:50] paulwe has joined the channel [07:50] qFox has joined the channel [07:55] felixge: ryah: yt? [07:55] pkrumins: ryah: SubStack suggests that .removeListener could be .off :) [07:56] pkrumins: since .addListener now is .on. [07:56] felixge: mostlygeek: I think v8 looks at the available memory and takes what it considers a "fair share" :) [07:56] SubStack: :p [07:56] felixge: at least that has been my experience running node on machines with 8GB of mem :) [07:57] mostlygeek: zzz g'nite [07:59] charlesjolley- has joined the channel [08:00] picasso_ has joined the channel [08:07] sveisvei: Which html-parser-project has a feet up over the others :)? [08:08] ryah: felixge: hey [08:08] astrolin has joined the channel [08:08] ryah: sveisvei: html5 [08:08] felixge: ryah: hi : ) [08:08] felixge: ryah: got my email? [08:08] ryah: felixge: uh - no? [08:08] sveisvei: ryah: ty :) [08:09] ryah: felixge: oh on CONNECT? [08:09] felixge: ryah: yeah [08:09] ryah: sorry - ive getting saturated on email these past days [08:10] felixge: ryah: np, I tried reaching you in IRC a few times over the past weeks but it didn't work since you were traveling / time zones [08:12] rictic has joined the channel [08:14] teemow has joined the channel [08:21] markwubben has joined the channel [08:22] CIA-76: node: 03Ryan Dahl 07master * r11a784d 10/ (3 files): Upgrade http-parser - http://bit.ly/ayvUNA [08:22] ryah: felixge: ---^ [08:22] ryah: that's your connect fix [08:22] felixge: ryah: fantastic :) [08:23] felixge: ryah: that patch looks a lot bigger ^^ [08:23] ryah: other fixes too [08:23] felixge: ryah: cool. Thank you so much :) [08:24] felixge: ryah: btw. we are yet to see an issue caused by node in our production install :) [08:24] felixge: so far all problems were self-made [08:24] ryah: cool [08:24] ryah: what are you running? [08:24] ryah: which version [08:24] felixge: ryah: do you know if setTimeout() could have issues so, should I investigate? [08:24] ryah: it could [08:24] ryah: it's not well tested [08:24] ryah: and it's complex code [08:25] felixge: ryah: v0.1.99-21-g67f7fe5 [08:25] felixge: ryah: think I have a chance debugging it? [08:26] felixge: haven't started to look into it yet [08:26] ryah: felixge: sure - it's all in js [08:26] felixge: ryah: ok, sweet, I'll give it a try :) [08:26] ryah: felixge: look at "timeout" at the top of lib/net.js [08:26] felixge: we're going to upgrade node again soon, I'll let you know if our test suite catches anything odd [08:27] ryah: felixge: http://github.com/ry/node/blob/fa344d8514f12028e94d69a542aa7b3a3bf7503e/lib/net.js#L60-216 [08:27] felixge: yeah, looking at it now [08:27] felixge: fancy stuff [08:27] felixge: : ) [08:27] ryah: fancy time outs, yes :) [08:27] ditesh has joined the channel [08:28] felixge: ryah: while I monkey around with that, do you think ServerRequest should have a setTimeout method / event? [08:28] ryah: hm [08:28] ryah: maybe [08:28] felixge: right now I do req.connection.setTimeout() which feels a little wrong [08:28] ryah: ACTION away [08:28] ryah: felixge: email me [08:28] felixge: ttyl [08:28] felixge: ryah: will do [08:33] SubStack: npm is being super annoying latley [08:34] isaacs: SubStack: agreed. [08:34] SubStack: it's not creating the symlinks that it used to in ~/prefix/lib/node :( [08:34] SubStack: so my require.paths is all confused [08:35] isaacs: SubStack: that's... weird [08:35] SubStack: isaacs: I've had this issue on two systems now too [08:35] SubStack: on the first, it didn't make the symlinks for auto-fetched dependencies [08:35] SubStack: and now it's not making them for npm link [08:35] SubStack: :/ [08:36] isaacs: SubStack: yeah, that's a bug. that sucks [08:36] SubStack: roger [08:36] isaacs: gimme 36 hours on that one. [08:36] SubStack: ACTION pokes around the npm source a little [08:36] SubStack: heh, awesome! [08:37] isaacs: SubStack: if you wanna fix it, it's this: http://github.com/isaacs/npm/issues#issue/103 [08:37] SubStack: click [08:39] [[zz]] has joined the channel [08:39] isaacs: SubStack: so, the situation is this: you install A. A requires B. This causes the "install" sequence to add "B" to the "to be installed" list, and A's dependency is considered "met" because B is on the list to be installed. [08:39] isaacs: SubStack: however, A gets built before B has been built, so there's no "main.js" or lib folder for B yet. so, there's nothing to link into the A/dependencies folder, and that screws up everything. [08:40] isaacs: SubStack: lib/build.js needs to be split up into two parts. 1. create all the stuff for the packages on the list, 2. link dependencies for the packages on teh list. [08:40] SubStack: looking at it [08:42] SubStack: ACTION brews a second pot of coffee for the evening [08:44] isaacs: hehe [08:44] isaacs: SubStack: lib/build.js is definitely the most code-rot-infested thing in npm. [08:44] agnat has joined the channel [08:44] isaacs: SubStack: there's a lot of stuff that should be abstracted out, etc. i'd like to slice that thing up a bunch [08:46] SubStack: noted [08:46] SubStack: I'll see what I can do! [08:47] bean0r1___ has joined the channel [08:47] jsilver: Yo biftaz! Fabric is way cool, totally radically FABric if ya get my drifticles [08:47] SubStack: o_O [08:47] jsilver: Yo biftaz! Fabric is way cool, totally radically FABric if ya get my drifticles [08:48] jsilver: sry [08:48] jsilver: wrong window [08:48] SubStack: O_o [08:48] jsilver: I got assaulted by the bouncers too! And I am tiny 5 ft 2 girl who was not drunk or remotely unreasonable (promise!)! It started with random shouting when we were queuing and culminated with being sworn at and dragged back inside when I ...‎ [08:48] SubStack: O_O [08:50] jsilver: Fabric continues to draw crowds since opening in 1999. Its main allure is that it has a license for 24-hour music and dancing from Thursday to Sunday night. This is one of the most famous clubs in the increasingly trendy East London sector. On some crazed nights, at least 2,500 members of young London, plus a medley of international visitors, crowd into this mammoth place. It has a trio of dance floors, bars wherever you look, unisex toi [08:50] jsilver: lets, chill-out beds, and even a roof terrace. Live acts are presented every Friday, with DJs reigning on weekends. You'll hear house, garage, soca, reggae, and whatever else is on the cutting edge of London's underground music scene at the time. Open Thursday and Friday 9:30pm to 5am, Saturday 10pm to 7am. [08:50] jsilver: Read more: http://www.frommers.com/destinations/london/N27874.html#ixzz0tvaMqWpo [08:50] maqr: o_O [08:50] jsilver: Yo biftaz! Fabric is way cool, totally radically FABric if ya get my drifticles [08:51] maqr: something has gone wrong :\ [08:51] isaacs: yeah [08:51] isaacs: /ignore [08:51] maqr: so i think i went from "first project in node.js" to "first library on github" in about a day... i think it's all good, going to wait to commit until i get some sleep though :) [08:55] ditesh has joined the channel [08:56] SubStack: you mean push? [08:57] SubStack: maqr: commits are local in git [08:57] SubStack: unlike the abomination that is svn [08:58] maqr: SubStack: yeah, if we both pretend i'm already using git locally ;) [08:59] SubStack: what [09:00] maqr: i haven't put the code under version control yet locally [09:04] jetienne has joined the channel [09:05] astrolin_ has joined the channel [09:10] derferman: maqr: No reason to wait [09:10] maqr: github is really easy to publish to [09:10] isaacs: wow, npm publish over https is kicking ass now in 0.1.101 [09:11] isaacs: that's awesome [09:11] maqr: derferman: yeah, i just pushed :) [09:11] maqr: isaacs: i haven't tried npm publish yet, i guess i should do that too? [09:11] derferman: yeah, github is great. I just used Github pages for the first time. You can host all your source code and your landing page, all ongithub [09:11] maqr: i think i got the package.json file right [09:11] isaacs: maqr: try to [09:12] isaacs: maqr: try to "npm install" the package folder, and if that works, your json is probably right [09:13] maqr: isaacs: yeah, it installed that way [09:13] isaacs: great :) [09:13] maqr: isaacs: do i have to 'npm adduser' before i publish? [09:13] isaacs: maqr: yeah [09:13] maqr: is there password recovery? :P [09:14] isaacs: maqr: you just do adduser again with the same username and password [09:14] isaacs: maqr: if you want me to delete a user account, i can [09:14] maqr: i mean if i forget the password [09:14] maqr: eh, i'll try to save it somewhere then :) [09:14] maqr: ACTION relies heavily on forgot password buttons [09:15] derferman: maqr: Are you on a mac? [09:15] maqr: derferman: nope, well, not exactly... why? [09:15] derferman: If you forget passwords easily, I was going to suggest 1password. I use it and love it [09:15] maqr: derferman: i'm on a win7 box, running vmware with ubuntu and irssi in screen... but i also work on an imac for iphone stuff [09:15] maqr: yeah, i use chrome for most things, but i really want to replace all of it with some PKI thing [09:16] manveru: maqr: lastpass :) [09:16] maqr: i just haven't thought the problem through yet [09:16] isaacs: yeah, npm doesn't have any "i forgot my password" type thing [09:16] manveru: i use it over a bunch of machines, they have some iphone and android app even [09:17] maqr: isaacs: something happened... i think it worked? [09:18] maqr: manveru: i'll check it out [09:18] isaacs: maqr: what is it? [09:18] maqr: isaacs: 'xml2js' [09:18] maqr: http://github.com/maqr/node-xml2js [09:18] maqr: don't laugh, it's my first attempt ;) [09:19] manveru: oO [09:20] manveru: you must have lots of those xml thingies? [09:20] isaacs: maqr: what's this? var xml = require('xml'), [09:20] maqr: isaacs: it's node-xml [09:20] isaacs: i see [09:20] maqr: isaacs: it installed with 'npm install xml', i believe? [09:20] maqr: am i supposed to setup dependencies somewhere? [09:20] SubStack: in package.json [09:21] isaacs: maqr: yeah, npm help developerss [09:21] isaacs: er, npm help developers [09:22] jansc has joined the channel [09:22] isaacs: i need to update that doc, actually, it's out of date. [09:22] maqr: isaacs: yeah, that's how i pieced this together, but it doesn't mention it :/ [09:23] isaacs: maqr: npm help json is the thing to look at [09:23] SubStack: hadn't even seen the developers doc, only the json one [09:23] maqr: oh, there it is [09:24] maqr: isaacs: i'll read this whole thing and get it right tomorrow, it's already 5:30am :/ [09:24] maqr: i have a functional package now though :) [09:25] maqr: and also, i'm aware node-xml2object exists, but i couldn't make it work for me (if you were wondering why i made this little library at all) [09:27] isaacs: eh. i wrote sax-js. it's fun to parse things. [09:27] isaacs: i get it :) [09:27] maqr: :) [09:27] isaacs: looks like node-xml isn't published in teh registry [09:27] eisd_: how do I detect a disconnect with multipart xhr? [09:28] maqr: isaacs: yeah, but it does have the package.json file, and i did 'npm install' on it, and it worked [09:28] isaacs: yep. you should bug the author to publish it [09:28] isaacs: and then add it as a dependency [09:28] pdelgallego has joined the channel [09:30] maqr: eh, i'll do it tomorrow :p [09:31] maqr: isaacs: but if you already wrote a sax parser, maybe i should just be using that anyway... the interface should be almost identical [09:31] isaacs: maqr: sax-js is sax-style in its approach/architecture. but the events are named differently. [09:31] isaacs: and there are other extra events. [09:32] isaacs: maqr: http://github.com/isaacs/sax-js [09:33] maqr: yeah, i'm looking at it now [09:33] maqr: Schemas are an exercise in fetishistic masochism [09:33] maqr: heh [09:34] isaacs: i should migrate that to the more recent Stream API [09:34] isaacs: it's still using the old style "close" etc [09:35] maqr: :o [09:35] tmedema has joined the channel [09:37] maqr: i should do that sleep thing too, bbl :P [09:38] tmedema: Hi folks. Is there an easy way to respond to console input while node is running? [09:38] tmedema: Or is the console blocking input while running node? Never tested [09:40] [[zzz]] has joined the channel [09:40] SubStack: tmedema: see process.openStdin [09:40] SubStack: you can add a data listener to the stream it returns [09:41] SubStack: http://nodejs.org/api.html#process-openstdin-56 [09:41] tmedema: thanks, so the console itself does not block input [09:41] tmedema: I seem to remember the input being blocked in cygwin or linux [09:41] tmedema: (I can't easily check right now..) [09:48] mitkok has joined the channel [09:51] eisd_ has left the channel [09:52] hellp has joined the channel [09:53] b_erb has joined the channel [09:54] mitkok1 has joined the channel [09:55] mitkok has joined the channel [09:56] maushu has joined the channel [10:13] [[zz]] has joined the channel [10:20] maushu: Dun dun. [10:20] maushu: I slept well. [10:21] [[zzz]] has joined the channel [10:25] [[zzzz]] has joined the channel [10:47] teemow has joined the channel [10:48] romanoff has joined the channel [10:50] romanoff: Hello, I am only starting to use node.js (actually have only installed it). What framework would you suggest ? I want MVC, REST, ability to create tests. (I came from the rails world, actually) [10:50] hassox has joined the channel [10:52] SubStack: romanoff: why do you want those things? [10:54] SubStack: http://github.com/ry/node/wikis/modules has lots of nifty libraries to choose from [10:56] christkv has joined the channel [10:56] romanoff: SubStack: Well, I like MVC pattern. It gives an ability not to have too much code in the on place. REST is convention that is used in many projects. You don't have to invent some weired routes. Everything is already invented :) Tests are good :). I was looking into modules. But I couldn't see framework that fulfills all this requirements. So, I wanted to ask here if anyone already knows such one [10:57] luddep: romanoff: there isn't really a rails equivalent. [10:57] luddep: I got started just the other day, and I mix and match whatever I feel is the best. [10:57] SubStack: you can always build up the mvc pattern yourself [10:57] SubStack: which I think is mostly cleaner than having a tool generate it automatically [10:59] romanoff: Thanks a lot for your answers. [10:59] SubStack: Anyways, all those things are what rails is good at. Why not just use rails? [10:59] SubStack: node.js is good at other things [11:00] SubStack: like lots of concurrent connections [11:00] SubStack: and websocket-style stuff [11:00] micheil: eh? [11:01] romanoff: SubStack: I know about this. But theoreticly node.js can be a base for any web-application. Not only chats through web. Right? :) [11:01] micheil: romanoff: yeah, node is able to do everything [11:01] MattJ has joined the channel [11:01] micheil: and is better then rails at doing them, in the long haul [11:01] SubStack: well I hate rails personally but I wasn't going to bring that up [11:02] micheil: but for now, the project's only been about I think something like 18 months. [11:02] SubStack: :p [11:02] micheil: so, of course, you don't quite have the foundation that something like Rails gives you. [11:02] micheil: at the moment, it's more like Rack or Sinatra. [11:02] romanoff: micheil: Express is just like Sinatra (people say) :) [11:03] SubStack: (generated code)-- [11:03] romanoff: SubStack: Just curious.. why do you have tails? What do you like? [11:03] romanoff: SubStack: hate rails... sorry, not have tails [11:05] SubStack: I don't like how much rails tries to do and how it spams your directory tree [11:05] romanoff: SubStack: Seems like you like django :) [11:06] SubStack: not especially [11:06] romanoff: SubStack: What then? [11:07] SubStack: microframeworks like sinatra are nice [11:07] romanoff: SubStack: I see. But they are good for little web apps. When web apps are big - they are not too good in this case. [11:08] SubStack: but see, web apps should never get big [11:09] SubStack: big apps are just tiny apps that haven't been broken up into libraries yet [11:09] romanoff: SubStack: Maybe you are right ... but I haven't thought about this [11:09] romanoff: SubStack: Thanks a lot for discussion. I have to go now. [11:14] konobi: is there no pack function anywhere? [11:15] SubStack: pack like perl or ruby has? [11:15] bean0r1___: ryah: http://github.com/ry/node/issues/issue/214 is annoying :/ [11:16] SubStack: konobi: what are you trying to do? [11:16] micheil: padrino is the sinatra api for rails, pretty much [11:17] micheil: konobi: http://gist.github.com/479442 [11:18] konobi: SubStack: building and decoding binary packets [11:18] konobi: micheil: not really a 'pack' function [11:18] konobi: no format there [11:18] SubStack: konobi: check out http://github.com/substack/node-bufferlist [11:18] micheil: konobi: was that what you mean? [11:19] SubStack: the simple binary example especially [11:19] micheil: konobi: or do you mean like to pack to say BSON, msgpack, etc? [11:20] micheil: because if you abstract it from mongodb drivers, then you have object -> BSON, obj -> msgpack etc [11:21] micheil: msgpack and BSON both being binary protocols [11:21] SubStack: also http://github.com/substack/node-rfb/blob/master/lib/put.js [11:21] konobi: micheil: see perldoc -f pack [11:22] micheil: ah, then no,. [11:22] micheil: konobi: most things are DIY. [11:22] konobi: http://phpjs.org/functions/pack:880 [11:22] micheil: konobi: although, it's best to use standards over custom protocols. [11:23] konobi: the binary protocol i'm dealing with has been around for 20 off years [11:23] konobi: =0) [11:24] micheil: age != standard [11:24] konobi: RFC/IETF, etc? [11:26] konobi: i'm pretty sure that's what you'd refer to as standards [11:26] micheil: not so [11:27] mklappstuhl has joined the channel [11:27] micheil: and standard just isn't the method of turning 0x00 -> 0 or something like that, it's also how you order it [11:31] konobi: pack/unpack give that to you [11:32] SubStack: ACTION notes that bufferlist/binary does these things too [11:32] SubStack: and that put monad [11:33] SubStack: since it was written to parse the rfb protocol, which cares about endianness [11:33] micheil: konobi: well, anyway, long of the short is, if you want it, then implement it. [11:33] SubStack: yes, that [11:36] konobi: ACTION just stole it from phpjs [11:36] konobi: =0) [11:40] aheckmann has joined the channel [11:43] markwubben_ has joined the channel [11:46] V1_ has joined the channel [11:50] V1_: Does anyone here run a cluster of memcached servers? [12:08] mklappstuhl has joined the channel [12:11] [[zzzz]] has joined the channel [12:12] V1: Hmz, when I build node out of the latest trunk, 1 test fails [12:13] [[zzz]] has joined the channel [12:13] blackdog has joined the channel [12:15] V1: A well, it still works heres the error if someone is wondering; http://gist.github.com/479468 [12:18] malkomalko has joined the channel [12:20] Tim_Smart has joined the channel [12:28] pgriess has joined the channel [12:29] MrTopf has joined the channel [12:29] Tim_Smart has joined the channel [12:32] mrdoob has joined the channel [12:32] paul__ has joined the channel [12:32] hassox has joined the channel [12:34] Tim_Smart has joined the channel [12:41] astrolin has joined the channel [12:42] jblanche has joined the channel [12:42] pandark_ has joined the channel [12:48] mklappstuhl has joined the channel [13:05] ideamonk has joined the channel [13:06] ideamonk: Hey guys, so I was trying to bind bash on a port, and came up with this code - http://pastebin.com/LN2qsWrU [13:06] ideamonk: it seems child's data listener isn't getting a call at all [13:06] ideamonk: which should be invoked by line 20, which pushes data from socket to child's stdin [13:08] [[zz]] has joined the channel [13:08] _sri has joined the channel [13:08] Blackguard has joined the channel [13:17] MrTopf has joined the channel [13:23] SvenDowideit_ has joined the channel [13:27] Astro: great, sun_len got fixed in fa344d8514f12028e94d69a542aa7b3a3bf7503e [13:42] rtomayko has joined the channel [13:43] rtomayko has joined the channel [13:48] ncb000gt has joined the channel [13:49] ncb000gt: has anyone started toying with packaging node up into distros? [13:50] Astro: it's in debian [13:50] ncb000gt: heh sorry [13:50] ncb000gt: i didn't mean linux distros [13:51] ncb000gt: A while ago when discussing package managers ryah had mentioned that he hoped people would be creating different node distros that included things such as your fav package manager, modules and so on [13:52] ncb000gt: so literally node distros [13:52] ncb000gt: I wasn't sure if anyone had started jumping into that yet or not [13:55] Astro: yes [13:55] Astro: I saw one [13:56] Astro: ncb000gt: http://github.com/creationix/ivy [13:56] SubStack: like a node platform? [14:06] pandark_: Hi [14:06] pandark_: I'm not sur to understand the "var self = this;" thing… when and why is it useful ? [14:08] micheil: pandark_: it's only needed when you need to reference a scope [14:09] micheil: this is equal to the current scope of the executing function / script / etc. [14:11] micheil: pandark_: this article has some information about it: http://perfectionkills.com/understanding-delete/ [14:11] dnolen has joined the channel [14:12] micheil: basically, you can change what `this` in the context of an executing function is, by calling the function with something like fn.apply(scope, [args]); or fn.call(scope, args...); [14:12] phiggins: bind [14:12] micheil: but if you have two nested functions, suddenly you can't access the parent's scope, or `this` [14:13] micheil: so, you need to store a reference to it. [14:13] micheil: phiggins: bind isn't in v8, is it? [14:13] phiggins: doit({ url:"/foo", load: function(response){ }.bind(this) }); [14:13] micheil: hmm.. [14:13] phiggins: maybe not? [14:13] phiggins: i thought it was [14:13] phiggins: i never use it because i write for the browser :P [14:13] micheil: TypeError: Object function (){ return this; } has no method 'bind' [14:14] phiggins: bummar [14:14] micheil: phiggins: yeah, I'd like to use it. [14:14] pandark_: micheil, thanks. I'm goig to start by reading your link :) [14:14] phiggins: or hitch [14:14] phiggins: ;) [14:14] micheil: phiggins: hitch is good. [14:14] kuya: voodootikigod: you there? [14:15] micheil: phiggins: I actually tend to use say, underscore.js for js extensions [14:15] phiggins: yah same stuff [14:15] phiggins: though I don't agree with using _ as a namespace or extending natives [14:15] phiggins: so won't go near it. didn't stop me from implementing copose/reduce/etc from it in plugd [14:16] micheil: true, it's a bit of an oddity [14:16] micheil: but you could remap it. [14:16] phiggins: its just bringing stuff in dojo to jquery users. anything that teaches them better js is a win [14:16] micheil: yeah, and _ get's forEach right. [14:17] phiggins: sparse arrays even? [14:17] phiggins: none of us do sparse arrays right [14:17] micheil: oh, maybe not sparse arrays, but for other things. [14:17] micheil: eg, variable arrangement [14:17] phiggins: context is the only gain then from forEach [14:17] phiggins: yah [14:17] phiggins: and not mangling 'this' which I hate them for [14:18] micheil: Object.keys is also really useful [14:18] micheil: yeah [14:18] kuya: voodootikigod: nm [14:18] phiggins: i have keys() too [14:19] phiggins: really, they put a key()'s on obj.proto? [14:19] micheil: keys [14:19] phiggins: right but they touched Object.prototype? [14:19] micheil: yeah, it's actually really useful, and I don't think it's really on Object.prototype [14:19] micheil: ES5, Object.keys(obj) [14:19] phiggins: i have dojo.keys(obj) [14:20] phiggins: ah k it's on Object [14:20] phiggins: not proto [14:20] micheil: underscore does everything through _.* [14:20] micheil: yeah [14:20] phiggins: I think they put an extend() on Function.proto [14:20] phiggins: i dunno, whatever it is makes my eyes bleed to see _.forEach($(this), _.compose(a, b)) [14:20] micheil: nup [14:20] phiggins: unfuckingreadable [14:21] micheil: although, then again: dojo.forEach(dojo.query(this?), .,..) [14:22] micheil: I think the better way would be to make a NodeList be an iterator [14:22] phiggins: we don't mangle 'this' do query(this) is nearly redundat [14:22] phiggins: but $(this).each !== _.forEach [14:22] micheil: yeah [14:22] phiggins: also NodeList has a forEach [14:22] micheil: partly due to the args positioning [14:22] phiggins: right and 'this' [14:22] micheil: phiggins: it's been a while,. [14:22] micheil: yeah [14:23] phiggins: not to say plugd doesn't have an .each [14:23] mindeavor has joined the channel [14:23] phiggins: dojo.each({ a:"b"}, function(k,v){ }) [14:23] phiggins: defers to dojo.forIn [14:23] micheil: hmm.. [14:24] micheil: dojo.forIn, isn't that just a wrapper on for( var x in y) ? [14:24] phiggins: yah but does cb.call(scope, y, x[y], x) [14:24] phiggins: so gives you that closure [14:24] micheil: hmm.. [14:24] micheil: actually, do you think you'd be able to take a look at some linked list stuff I'm working on? [14:25] phiggins: http://github.com/phiggins42/plugd/blob/master/base.js don't laugh, i was drunk when I wrote half of it [14:25] phiggins: http://github.com/phiggins42/plugd/blob/master/base.js#L356 [14:25] micheil: phiggins: like all good tech. (human api?) [14:25] phiggins: micheil: i can peek at whatever. still light on coffee this morning so might be dense [14:26] micheil: k, so, this is what I have: http://gist.github.com/479543 [14:26] kuya: ACTION mutters about connect moving repo and breaking ... [14:26] micheil: there's a bit of extra stuff and.. ugh.. tabs. [14:26] MrTopf has joined the channel [14:27] phiggins: i long to use defineProeprty [14:27] micheil: it's really nice. [14:27] micheil: I haven't done much with the get/set keywords yet. but Jade uses them everywhere. [14:28] micheil: (made it an absolute arse to get working in the browser though) [14:28] phiggins: i can imagine [14:28] ideamonk has joined the channel [14:29] micheil: basically I'm adding a simple key -> value store into my connection manager, so, for instance, if you want to store a username, then you can, and it's not slow. [14:29] phiggins: seems a really complicated hash pretending to be an array [14:30] micheil: yeah, but seems to give better performance. [14:30] micheil: the only reason is due to the removal. [14:30] micheil: I use unref'ing to get better gc collection [14:30] pandark_: phiggins, http://xkcd.com/323/ [14:30] phiggins: yep i know that one by heart [14:31] phiggins: balmer right? [14:31] mape: micheil: thought about having a list for where the users are? So I could do a server.broadcastToPath('/') ? So if I have 10000 users I don't have to loop through all of them to find out where they are connected to, or do you feel it is better that the user extends that? [14:31] micheil: mape: that's part of this. [14:31] mape: Ah k [14:31] micheil: I'll be storing things like path in the metadata for each connection [14:31] phiggins: pandark_: my goal with plugd was to not make any function > 8 lines [14:32] phiggins: not a very good goal to have, but i was drunk (on nyquil intially) [14:32] micheil: so, for instance: #conn.data(key, value) [14:32] phiggins: because i was sick, not a junky btw. [14:32] phiggins: :) [14:32] pandark_: :) [14:33] micheil: phiggins: curious, do you listen to The Changelog podcast? [14:34] phiggins: no, but only because i've not heard of it [14:34] phiggins: not much of a podcastperson [14:34] micheil: phiggins: I found that with a simple array, I'd have an error of removing the wrong connection due to a race-type condition; where as if I use a linked list, I don't get the race condition as bad. [14:34] micheil: http://thechangelog.com [14:34] micheil: phiggins: fair enough [14:35] phiggins: what's this fucking node thing they keep talking about? [14:36] mape: Somekinda noodle dish [14:36] pandark_: \o/ [14:37] phiggins: i (h) noodles [14:38] ceej has joined the channel [14:41] JimBastard has joined the channel [14:44] zapnap has joined the channel [14:44] JimBastard: hey dnolen why did you use multi-node instead of http://extjs.github.com/Connect/ [14:44] JimBastard: which is way more polished and tested [14:44] kuya: ACTION warns that connect has just moved repo and is broken  [14:44] JimBastard: http://github.com/senchalabs/connect [14:44] kuya: apart from that is great :) [14:46] dnolen: JimBastard: I can only blame my own ignorance :) I've been trying to keep up with Node.js libs but things move really fast here. Will check it out. [14:46] JimBastard: yeah... [14:46] kuya: the launcher command "connect" seems to have gone missing in that repo so the Makefile doesnt work - i think they moved the server launcher to some external project [14:46] JimBastard: maybe less time blogging and more time researching :-) [14:47] micheil: dnolen: try developing jQuery UI, in august 2008. [14:47] bradleymeck1 has joined the channel [14:47] JimBastard: i heard weeks of coding can save you from hours of planning [14:47] micheil: phiggins: yes.. a dark past there. :P [14:47] bradleymeck1: a new bot? (_sri?) [14:48] JimBastard: !drugs [14:48] bradleymeck1: any idea why i cant fire off node from the terminal in cygwin but drag/dropping files onto the exe works? [14:48] dnolen: JimBastard: research? fah, I got IRC. [14:49] ben_alman has joined the channel [14:50] bradleymeck1: i saw on ajaxian the talk about game engines in JS but i cant find a significant difference in speed from canvas to dom if you use a back buffer and clipping... [14:53] aho has joined the channel [14:53] sveisvei: bradleymeck: http://www.youtube.com/watch?v=_RRnyChxijAø [14:54] sveisvei: this guy said canvas was slow with alot of objects with current implementations [14:55] micheil: what's the best way to be able to repl into a running node app? [14:55] bradleymeck1: tcp repl i would presume [14:55] bradleymeck1: thats the talk i was mentioning [14:56] micheil: ACTION goes to the 1337 npm. [14:56] mape: Is there any way to use repl and have access to all variables for real time changes? [14:56] mape: like a firebug console kinda deal [14:57] bradleymeck1: if you rerender everything all everyframe, true, but w/ clipping? backbuffer? both of those and i have quite a few sprites pounding on chrome w/ no serious slowdown [14:57] proppy has joined the channel [14:57] bradleymeck1: mape you could always throw global at it? [14:57] micheil: mape: that's what I'm after. [15:00] JimBastard: mape yeah there is [15:00] bradleymeck1: micheil w/ a minor change to repl.js yes, but as it is no. looks like you can copy paste repl.js outta lib and use it though [15:00] JimBastard: mape do you mean web based? like in a web console? [15:00] mape: JimBastard: No, cli [15:01] JimBastard: mape not a virtual CLI in the browser? [15:01] mape: nope [15:01] JimBastard: why not? [15:01] mape: if I have a terminal window why not use it? Feels redundant to have a browser to do it [15:01] JimBastard: gives you way more power though [15:01] JimBastard: 1. remote debuggin [15:01] JimBastard: 2. rich ui [15:02] JimBastard: 3. mouse [15:02] mape: I really just need the repl but access to all vars in the scope set [15:02] JimBastard: got ya [15:02] mape: what do you need a mouse for in repl? [15:02] JimBastard: mape: http://maraksquires.com/node_debug/ you can see why this is shitty outdated video [15:03] mape: not found [15:03] JimBastard: you didnt follow the link [15:03] JimBastard: trailing / fail [15:03] JimBastard: i fucking hate radiant [15:03] mape: Wow the microphone sounds awsome :P [15:03] bradleymeck1: really should make REPLServer more extensible... [15:03] JimBastard: mape you might want to right click and zoom [15:04] JimBastard: this screencast is all sorts of fail [15:04] JimBastard: but it shows the UI [15:04] mape: JimBastard: nah have a big enough screen so I see it fine [15:04] mape: but it does clip [15:04] JimBastard: you see how i have history and snippets though [15:05] JimBastard: you can start adding niceties for fun [15:05] JimBastard: you get the rich UI [15:05] mape: The 1994 matrix UI :D [15:05] JimBastard: hell ya [15:05] JimBastard: i think i might use that as the base for the nodejitsu debug console [15:05] JimBastard: either way ive been meaning to update that library for a while [15:06] mape: should look at adding something like bespin to it [15:06] JimBastard: thats the idea yeah [15:06] mape: if you are going for richness [15:06] JimBastard: web ide [15:06] JimBastard: no reason you can have cli and rich though [15:06] JimBastard: just diffirent views [15:06] JimBastard: you can't have* [15:06] JimBastard: lagom [15:06] mape: http://github.com/Connorhd/node_debug == same? [15:07] JimBastard: yeah mape, i forked that a redid the ui and added more features [15:07] JimBastard: Connorhd's is simplier ui [15:08] micheil: phiggins: forEach => args = [item, index], yeah? [15:08] mape: Hmm, guess it is kinda a neat idea, might create my own with some other stuff in there [15:08] phiggins: item index array [15:09] phiggins: pass the orig ref to the array says MDC [15:09] micheil: actually, I've found the uxebu christmas card :D [15:09] phiggins: also walk sparse if you are writing it ;) [15:09] JimBastard: caus there aint no party like a javascript party caus a javascript party got phiggins [15:10] micheil: JimBastard: nawh, I just take phiggins word as a good word. [15:10] phiggins: ACTION considers lying [15:11] micheil: :D [15:11] JimBastard: everytime phiggins lies, dojo increases size by 2k [15:11] micheil: phiggins: I could always cross ref. [15:11] micheil: JimBastard: it's not actually that big. [15:11] JimBastard: thats what she said? [15:11] phiggins: only to you [15:11] phiggins: ;) [15:11] micheil: the difference is that jQuery comes built, dojo doesn't always. [15:12] phiggins: yah you seen d.js? [15:12] JimBastard: i told that bitch i wanted closure [15:12] JimBastard: she didnt get it apparently [15:12] JimBastard: i told her she needed scope, but she thought i was taking about her breath [15:13] phiggins: micheil: http://dante.dojotoolkit.org/static/d.js -- script src="" that and play. d(selector) or d.query(selector) or d.byId(id) etc. plugd + dojo + dojo extras + magic [15:13] JimBastard: how are these javascript jokes working out for you guys? [15:13] JimBastard: we should hang out more often [15:13] JimBastard: alllllriiiiight [15:13] phiggins: the closure one was funny [15:14] micheil: phiggins: I'm actually thinking of using dojo for a webapp, but each time I go to start, I get distracted by the less important parts. [15:14] micheil: JimBastard: I'm totally missing them all. [15:14] JimBastard: micheil: its okay im not that funny anyway [15:15] kuya: :) [15:15] micheil: JimBastard: only because I'm not paying much attention [15:15] kuya: i was actually hoping for some more of the jokes [15:15] phiggins: someone go buy jsjok.es [15:15] micheil: people really need to learn what a POST request is. [15:15] JimBastard: i wanted dramascript.com [15:16] JimBastard: micheil: did you mean GET? [15:16] micheil: and jQuery doesn't teach them that. [15:16] micheil: no, POST [15:16] JimBastard: GET? [15:16] phiggins: ITS CALL AJAX ASSHOLE [15:16] phiggins: $.ajax() [15:16] phiggins: idiots. [15:16] JimBastard: JQUERY INVENTED IT [15:16] phiggins: ;) [15:16] JimBastard: IDIOTS [15:16] micheil: phiggins: just wait til' you see this one.. [15:16] kuya: $IDIOTS [15:16] phiggins: john invented the internet with al gore [15:17] micheil: http://groups.google.com/group/phonegap/msg/0b0a9ee611ffc8f1?hl=en%3Fhl%3Den [15:17] JimBastard: i think its time to blast 99 red baloons to wake up the house [15:20] mostlygeek has joined the channel [15:21] micheil: mostlygeek: I'm still curious from before, but which part isn't geek? [15:21] mostlygeek: micheil: the daddy part :) [15:21] mostlygeek: but even then... [15:21] micheil: ah [15:21] micheil: D: [15:23] mostlygeek: micheil: why are you still on here :b haha go to bed [15:28] d4yo has joined the channel [15:29] d4yo: hi. has anyone tried using Yahoo's YUI with node.js? [15:34] maushu has joined the channel [15:37] SubStack: isn't yui for browser stuff? [15:40] stepheneb has joined the channel [15:44] zenom has joined the channel [15:44] khug has joined the channel [15:44] d4yo: it is but there is a demo of how it can be used to render the DOM as well [15:44] zenom: If I am not using web sockets, just ajax, what is the best way to do a stream (twitter ,feeds etc). Do I just store the incoming data in n array and flush it? Or is there a better way? [15:44] d4yo: http://www.yuiblog.com/blog/2010/04/09/node-js-yui-3-dom-manipulation-oh-my/ [15:45] mscdex: double_rainbow.js [15:46] d4yo: there is something on nettuts - http://net.tutsplus.com/tutorials/javascript-ajax/learning-serverside-javascript-with-node-js/ [15:46] romanoff has joined the channel [15:47] zenom: thx [15:47] mscdex: zenom: maybe try something like socket.io [15:47] mscdex: er wait nevermind [15:47] joshbuddy has joined the channel [15:47] joshbuddy has joined the channel [15:50] polyrhythmic: z/15 [15:53] pydroid has joined the channel [15:53] pgriess has joined the channel [15:55] btipling has joined the channel [15:55] btipling: pquerna: moo [15:59] kuya: anyone know how to find a record by id with node-mongo-native? [15:59] btipling: net.Stream allows one to create a raw tcp connection right, but SSL connections are only available via HTTPS? [15:59] btipling: can I open just a TCP/SSL connection without HTTPS? [15:59] btipling: for example, to open a secure IRC connection [16:01] btipling: hrm looks like it is possible [16:02] ideamonk has left the channel [16:03] btipling: with crypto [16:03] hellp has joined the channel [16:07] gwoo has joined the channel [16:08] btipling: looks like there would be a lot of extra work involved in creating such a connection [16:09] kuya: i think you just use stream.setSecure [16:10] softdrink has joined the channel [16:12] micheil_mbp has joined the channel [16:13] micheil_mbp: zenom: probably cometd [16:15] bradleymeck1 has joined the channel [16:17] btipling: kuya: docs say "Enables HTTPS support for the stream" [16:23] teemow has joined the channel [16:23] mertimor has joined the channel [16:36] V1 has joined the channel [16:38] micheil: mscdex: ever seen something in chrome where it only allows one WS connection? [16:39] zapnap has joined the channel [16:57] jakehow has joined the channel [17:04] markwubben has joined the channel [17:07] qFox has joined the channel [17:08] KaptianKrispy has joined the channel [17:10] zenom: $.ajaxStart(function() { isn't that how I bind to all ajaxErrors? [17:10] zenom: wrong channel sorry [17:15] d4yo has left the channel [17:16] KaptianKrispy: is anyone using Connect JS? [17:17] kuya: me! [17:18] kuya: im quite a noob tho [17:18] KaptianKrispy: I dont suppose you know how to detect XHR in a connect request? [17:18] kuya: hrm [17:19] kuya: one moment i think i do [17:19] kuya: ACTION checks [17:19] kuya: the reqiest object in connect is just a normal node request [17:19] kuya: so just check the headers [17:20] kuya: look for X-Requested-With [17:20] KaptianKrispy: I setup an experiment with jQuery and used an ajax get on my app, but the XHR header was missing [17:20] kuya: req.headers['x-requested-with'] == 'XMLHttpRequest' or such [17:20] KaptianKrispy: I'll post the inspect of the req [17:20] KaptianKrispy: one sec... [17:21] KaptianKrispy: http://pastie.org/1048638 [17:22] kuya: hrm [17:22] kuya: lemme try [17:22] kuya: once i unbreak my code... [17:22] KaptianKrispy: here is my html to test [17:22] KaptianKrispy: http://pastie.org/1048639 [17:22] liucougar has joined the channel [17:23] kuya: , 'x-requested-with': 'XMLHttpRequest' [17:23] kuya: i get the header [17:23] kuya: what jquery call are you using? [17:23] KaptianKrispy: look at the last pastie.org link i sent [17:24] kuya: ah [17:24] kuya: you need to go check the jquery docs [17:24] KaptianKrispy: ok, thanks [17:24] kuya: well [17:24] KaptianKrispy: what were you using to make the call? [17:24] kuya: i dont think that header is sent for $.get [17:24] KaptianKrispy: ah [17:24] kuya: but i dont ever use those really... i just use json stuff [17:25] kuya: $.ajax, $.getJSON both send that header [17:25] kuya: maybe just read the jq source :) [17:25] KaptianKrispy: ok, I'll try the $.ajax [17:26] kuya: sending json and using client side js templates is way more fun that sending around html :) [17:26] KaptianKrispy: I'm actually just trying to setup a credential filter [17:27] KaptianKrispy: just wanted to check the request type - don't want to send a redirect on an XHR call [17:27] micheil: hmm.. If you store an integer in a datastore, and then you try to Array.push a value on to it, should it throw an error, or return false? [17:28] dnolen has joined the channel [17:28] V1: What would be the most effective way of parsing data out of a looong string, split it up in pieces using str.split( 'separator' ) or parse the string down using substr.. or last but not least.. Using capturing regexp's :) [17:30] zenom: So I wrote a simple twitter stream that pushes tweets out to a page, but what I found is that if two people are on the page, 1 person will get some tweets, the other different ones... [17:30] zenom: What is the best way to keep a list of tweets , but update in the browser to all clients? [17:30] zenom: I am only wanting to keep like the latest 15-20 [17:30] KaptianKrispy: zenom: http://faye.jcoglan.com/ [17:31] micheil: V1: possibly using a buffer parser [17:31] micheil: V1: depends what kind of string it is and where it originally came from [17:31] V1: from a net.Stream [17:31] micheil: zenom: use a LRU style list [17:32] micheil: or a limited list. [17:32] zenom: micheil: LRU style list? [17:33] zenom: looks like Faye is websockets? [17:33] zenom: I would like to support older browsers if possible so I figure I need json, I mean do I just need to save to mongo and then create a ruby controller and serve the latest? [17:33] KaptianKrispy: Faye will help with pushing out data to multiple browser clients at once [17:33] zenom: from the mongo db or something ? [17:33] micheil: zenom: yeah, Faye is websockets, but it also downgrades [17:34] micheil: zenom: why add in ruby? [17:34] zenom: because I am guesssing I don't really get this, trying to figure it all out [17:34] micheil: if you want to store only X at max items, just use an in-memory store. [17:34] zenom: trying to do the simplest thing possible [17:35] zenom: i have node.js with twitter-stream workign so I am getting the stream, just not sure where to go from there. [17:35] zenom: https://gist.github.com/04ad65c2ce88acb088bd [17:35] zenom: my code [17:35] benburkert has joined the channel [17:37] micheil: zenom: in theory, you could actually use FreeList [17:37] micheil: but it's a fairly private module [17:37] micheil: checkin' the code [17:38] zenom: i was clearing tweets with tweets = [] thats why one browser would get them and the other not [17:38] zenom: i thought about doing something where I keep just the latest 15 in tweets then I need to figure out on the client side which items to keep vs not. [17:39] zenom: i would wrather just push the latest tweet out to all browsers if possible [17:40] jetienne has joined the channel [17:42] mape: Anything think something like this could be handy http://mape.me/node-sidebar-debugger.png ? [17:43] kuya: its very pretty [17:43] mape: And when you doubleclick the log you get http://mape.me/node-sidebar-debugger-expanded.png [17:43] mape: Hehe yeah, but pretty doesn't matter if it isn't useful :) [17:44] micheil: zenom: something like this should do the job: http://gist.github.com/479689 [17:45] zenom: so basically just store all the items in an array and pop the ones off if > limit? [17:45] zenom: thats what that is doing right? [17:45] micheil: yes [17:45] micheil: but not pop. [17:45] micheil: shift() [17:45] zenom: right [17:45] zenom: pop is front I think [17:45] micheil: pop would make it a LIFO, not a FIFO [17:46] micheil: http://en.wikipedia.org/wiki/Deque#Operations [17:46] micheil: will tell you. [17:46] zenom: so then how the hell on the client side would I know which ones to replace? or do I need to build all 15 items each request? [17:46] zenom: or set a unique id on the client side for each div and replace the ones not in the list? [17:46] micheil: ohh.. [17:46] micheil: right. [17:47] micheil: that was for serverside. [17:47] zenom: yeah thats why i was trying to just send the latest out [17:47] zenom: i knew that was server side, just trying to figure out the client side if i did something like yo uare suggesting [17:47] micheil: use ifModified in jquery, then in your server, work with that. [17:48] micheil: incoming, you get the header: If-Modified-Since: timestamp [17:48] micheil: then when you respond, you send back: Last-Modified: timestamp [17:48] micheil: if you don't want to use comet. [17:48] zenom: don't know what comet is, I can look at that too [17:48] zenom: was just looking at Faye to see if thats worth wild [17:48] zenom: they have a ruby and node.js server [17:49] micheil: cometd / bayeux protocol. [17:49] zenom: and you said Faye will work with non websocket browsers? [17:49] micheil: yes [17:49] micheil: just like Socket.io [17:49] zenom: ok let me see if I can get something like that working [17:50] micheil: and Grappler [17:50] isaacs has joined the channel [17:53] richcollins has joined the channel [17:53] micheil: man... I should really release half the code that I've written for node-websocket-server as actual projects. [17:54] kuya: please :) [17:54] kuya: iv tried to look at ws stuff and i get too lost [17:56] SubStack: delicious websockets [17:56] devongovett has joined the channel [17:56] micheil: SubStack: pub/sub api for code: store the changes in mem, or fire and forget? [17:56] rtomayko has joined the channel [17:56] devongovett: question: how do you close stdin? I see that you can open it using process.openStdin(). How do you close it? [17:57] agnat has joined the channel [17:57] SubStack: micheil: eh? [17:57] SubStack: more context? [17:57] zenom: man i just don't get any of this stuff LOLOL [17:58] dnolen has joined the channel [17:58] zenom: how does data get from faye to the client, I don't see much on their site about how to implement the server stuff [17:58] micheil: SubStack: I have a datastore in node-websocket-server, just trying to figure out the best way to work it. [17:59] SubStack: ah [17:59] devongovett: anyone know? [17:59] micheil: actually. I'll scrape the emitter. [17:59] micheil: devongovett: sorry, I don't know [17:59] SubStack: fire and forget with callbacks? [17:59] SubStack: why does node-websocket-server need a datastore? [18:00] ryah: datastore? [18:00] micheil: devongovett: try stdin.destroy() [18:00] micheil: ryah: yeah [18:00] devongovett: micheil: I will. [18:01] ryah: why a datastore [18:01] micheil: ryah: only a simple object to keep data related to a connection with it [18:01] SubStack: zenom: you can check out my crazy foray into websockets too at http://github.com/substack/dnode [18:01] devongovett: micheil: the problem then is that when I want to re open stdin nothing happens [18:01] micheil: ryah: http://gist.github.com/479703 [18:01] micheil: devongovett: I'm not sure then./ [18:02] zenom: i mean I would think what I would want to do would be simple, but man its just boggling my brain haha [18:02] SubStack: although I just piggy-back on socket.io and regular stream sockets [18:02] micheil: devongovett: ryah would be the person to be able to provide a better answer [18:02] ryah: micheil: but you shouldn't touch the disk [18:02] micheil: ryah: I'm not. [18:02] micheil: ryah: in memory datastore. [18:02] ryah: oh [18:03] devongovett: it seems that once stdin is closed, it is not able to be reopened. is that correct? /cc. ryah [18:03] ryah: devongovett: yes [18:03] devongovett: hmm. ok. I'll just have to redesign this code then. thanks! [18:04] micheil: ryah: basically this means that rather then having people complain that my websocket server is slow etc, because they store n+1 the amount of data in memory, I'm giving a way to store data with the connection [18:05] micheil: because when people do the n+1 thing, they never actually clear the memory they use [18:05] micheil: so suddenly you have an object in memory of several thousand of "dead members" [18:05] SubStack: doesn't the data just get garbage collected anyways? [18:05] micheil: because, it's still referenced. [18:05] derferman has joined the channel [18:06] derferman has left the channel [18:07] micheil: for example, this is a common thing: http://gist.github.com/479709 [18:08] SubStack: couldn't you just add a disconnect event? [18:08] SubStack: and throw in a clientId into conn? [18:08] micheil: SubStack: yes. but people don't. [18:08] SubStack: well that is their problem [18:08] micheil: reload for my fix ( http://gist.github.com/479709 ) [18:09] SubStack: micheil: just make sure your examples to it the right way [18:09] SubStack: s/to/do/ [18:09] micheil: I mean, I know my examples have shown things in a bad way before, but this is how I think I should correct it. [18:10] SubStack: disagree [18:11] SubStack: scope creep is pernicious [18:12] micheil: I think it's the best way to manage it. [18:12] mjijackson has joined the channel [18:12] micheil: because it also allows me to take this further. [18:14] micheil: and it isn't that much overhead really. [18:14] micheil: if someone never uses the storage, it's only one extra object in memory [18:14] micheil: (per connection) [18:14] SubStack: you have a connection event, you have a close event [18:14] SubStack: that should be plenty [18:15] SubStack: you just need shorter examples [18:16] SubStack: a 94-line echo server does not inspire confidence [18:17] mape: micheil: how is that different from just doing conn.username = 'mape'; ? [18:18] micheil: mape: because, conn.username is messy. [18:18] mape: Doesn't the storage add overhead? [18:18] micheil: not really. [18:18] mjijackson: Anybody here have any experience with hacking on the YUI compressor code? [18:19] mape: micheil: and regarding the memory issue, isn't it just a matter of cleaning users of the reference when the user disconnect? [18:19] mape: (if the disconnect is send) [18:19] mape: *sent [18:19] micheil: mape: how do you remove the reference? [18:19] micheil: you can use two things, an array or an object. [18:20] dnolen has joined the channel [18:20] mape: use and object instead, and set users[conn.id] = null; and set it to unenumeral [18:20] micheil: array, and you have a race condition in removing items [18:20] micheil: object, and you need to try and delete it. [18:20] micheil: how about I make it an option? [18:21] mape: users[conn.id] = null; Object.defineProperty(users, conn.id, { enumerable: false }); [18:21] micheil: by default, I'll have it on, if people don't want it, they can turn it off? [18:21] SubStack: race condition? [18:21] micheil: SubStack: yeah [18:21] SubStack: v8 is not concurrent [18:21] micheil: mape: what happens if a conn.id gets re-used? [18:21] micheil: it's just the remotePort number after all [18:21] mape: micheil: you assign it and set enumerable to true? [18:22] micheil: it gets very messy. [18:22] SubStack: no it doesn't [18:22] micheil: yeah it does. [18:22] SubStack: writing an object store from scratch is far messier [18:22] micheil: if you forget to make it enumerable again, you have an error [18:22] micheil: etc. [18:22] micheil: not really. [18:23] micheil: because I'm giving a specific place for it. I know that it's removed when I have a user disconnect [18:23] micheil: I don't need to manage state [18:23] micheil: (the latter from the users PoV) [18:26] quirkey has joined the channel [18:34] micheil: SubStack: the reason the echo-server is so long, is because that's the server I work with when developing [18:34] voodootikigod_ has joined the channel [18:35] MrTopf has joined the channel [18:35] MrTopf1 has joined the channel [18:37] paulwe: does anyone know if Sencha killed Connect? [18:37] micheil: paulwe: no, they moved the repo. [18:37] paulwe: it's not on github anymore [18:38] micheil: http://github.com/senchalabs/connect iirc. [18:38] paulwe: oh, cool, ty [18:39] markwubben has joined the channel [18:39] technoweenie has joined the channel [18:41] ceej has joined the channel [18:42] mscdex: micheil: not personally, but i've heard things similar to that [18:42] micheil: mscdex: reference? [18:42] mscdex: i can't remember where i read it [18:42] micheil: oh, wait, found it. [18:43] micheil: mscdex: I'm adding on a basic datastore (key / value with a few helpers) into node-websocket-server, good idea? [18:43] mscdex: what is its purpose? [18:44] micheil: just to store connection session time data [18:44] micheil: for instance, it may store a username for a person on a chat system [18:44] micheil: or their uid from a database [18:44] voodootikigod_: anyone drafted up text about when to use express over connect? [18:44] micheil: (small data) [18:44] voodootikigod_: and vice versus [18:44] mscdex: hmmm [18:44] technoweenie: voodootikigod_: wait for the new express [18:44] voodootikigod_: its ou [18:44] technoweenie: its supposedly built on connect [18:44] voodootikigod_: t [18:44] technoweenie: oh [18:44] voodootikigod_: but its basically just a light wrapper [18:45] voodootikigod_: http://expressjs.com/migrate.html [18:45] voodootikigod_: basically connect with the ability to selectively configure :) [18:45] technoweenie: yea, nice [18:46] jansc: hi! does anybody have a recommendation for a template engine for use with Connect (http://github.com/senchalabs/connect)? [18:46] technoweenie: finally the globals are removed [18:46] voodootikigod_: yea [18:46] voodootikigod_: jansc: sure they would recommend jade [18:46] voodootikigod_: but you could use mustache.js [18:46] voodootikigod_: or haml [18:46] voodootikigod_: haml.js [18:46] voodootikigod_: or anything [18:46] jansc: I was looking at mustache.js and node-asyncEJS [18:46] jansc: does mustache.js provide an async API? [18:46] dgathright has joined the channel [18:47] micheil: mscdex: this is all the data store is: http://gist.github.com/479703 [18:47] kuya: i use some hacked up srender for templates [18:47] technoweenie: jansc: i think one of them does. mujs or something [18:47] voodootikigod_: yea there is an asnc version [18:48] jansc: i only found the commonjs-version. ok, giving it a second look [18:48] micheil: technoweenie: chain gang looks interesting [18:48] mscdex: micheil: how does it perform vs. linked list? [18:48] JimBastard has joined the channel [18:49] micheil: mscdex: the linked list is still there. [18:49] kassens has joined the channel [18:49] micheil: mscdex: the connections are stored in a linked list, then each connection gets a storage property. [18:49] micheil: so, you can do things like: connection.storage.set(key, value); [18:50] micheil: from within any event that emits a connection [18:50] mscdex: what all would be stored in there? [18:50] micheil: huH? [18:50] mscdex: in the kv store [18:50] V1: micheil: wouldn't it be more appropriate to use a splice for the delete method? [18:51] micheil: server has 1 manager, the manager stores the connections, then 1 connection has 1 Storage object [18:51] Sutto has left the channel [18:51] micheil: V1: splice with an object? [18:51] mscdex: micheil: right, what's stored in the storage object? [18:51] V1: whoeps, i thought it was a named array ;$ [18:51] micheil: anything the developer wants to store, which is related to that session. [18:51] mscdex: hmm [18:51] jansc: technoweenie, voodootikigod_: thanks for your help! [18:52] voodootikigod_: its just cause technoweenie is the man [18:52] micheil: mscdex: for instance, it could be something like the number of messages a user sends, then you could reset the counter every 1 minute, and effectively rate limit the client [18:52] technoweenie: voodootikigod_: no, you're the man [18:52] voodootikigod_: haha [18:52] voodootikigod_: i still need to find out how you do everything you do with the kids [18:52] micheil: which is actually a fairly common thing people want to do. [18:53] voodootikigod_: this one kid is taking all my time [18:53] technoweenie: voodootikigod_: just one kid [18:53] technoweenie: and he's 8 so he's on auto pilot now [18:53] voodootikigod_: so it is just age? [18:53] mscdex: micheil: is it better to let the module handle that or the developer? [18:53] voodootikigod_: they all start out sucking time [18:53] voodootikigod_: ? [18:53] micheil: mscdex: I think the module, because then when the connection closes, the data stored disappears. [18:53] technoweenie: well when they're babies they cant meet their basic needs [18:53] micheil: it's one less thing to worry about. [18:54] technoweenie: so you do a lot of work feeding them and changing them and all that [18:54] voodootikigod_: yea [18:54] micheil: technoweenie: cycle of dependence. [18:54] technoweenie: as they get older you do less of that, but more other things. christian has to deal with all kinds of school drama [18:54] eee_c has joined the channel [18:54] voodootikigod_: cool [18:54] voodootikigod_: school drama [18:55] voodootikigod_: is that like he stole my pencil [18:55] micheil: age: 0, dependent -> age: >12, independent -> age >80, interdependent [18:55] technoweenie: "so and so doesnt like me, so and so it me, blah" [18:55] technoweenie: hit me [18:55] micheil: man.. if it's just that.. hard the up. [18:56] micheil: then again, I did that the hard way. [18:56] technoweenie: my biggest challenge is getting nathan to eat something. he's a super picky eater [18:57] kodisha has joined the channel [18:57] mscdex: micheil: hmm, i dunno. i mean if the user doesn't care to store any session data, that's unneeded overhead. it also means they're locked into that store instead of one they may already have like couch or something [18:57] micheil: mscdex: not really. there's no lock in, if you don't want to use it, you don't need to store anything in it. [18:59] micheil: if a user of the module wishes to use say, mongodb or redis or what ever, they can, but it's then up to that user to make sure they keep track of state. [18:59] mitkok has joined the channel [18:59] micheil: mscdex: see what I mean? [19:00] mscdex: micheil: yes, but if they never use it, it's taking up memory [19:00] micheil: I'm adding an options flag to disable it. [19:00] micheil: so, ws.createServer({useStorage: false}) [19:00] micheil: it won't even require the library. [19:02] saikat has joined the channel [19:04] skampler has joined the channel [19:07] micheil: mscdex: with one client connected and storage off, I'm using 9.3mb of RAM [19:08] micheil: 9.2mb realmem rather [19:08] micheil: same thing with storage, 9.3mb realmem. [19:08] tmpvar_ has joined the channel [19:09] micheil: I should note, that the first time it did actually stay at 9.3mb for a while, then went down to 9.2mb [19:10] micheil: to also note, just running node, and it sits at around 9mb realmem, iirc. [19:10] micheil: 7.7mb [19:11] micheil: so the actual cost isn't that high. [19:11] micheil: and the benefit as far as I can tell is quite high [19:14] bradleymeck1 has joined the channel [19:15] sveisvei has joined the channel [19:15] bradleymeck1 has left the channel [19:16] davidwalsh has joined the channel [19:16] davidwalsh has joined the channel [19:18] dnolen has joined the channel [19:18] maushu: micheil, 4mb. [19:19] micheil: k, well, what ever. [19:19] micheil: point being that this data store is very little over head [19:20] DTrejo has joined the channel [19:20] DTrejo: hello [19:20] technoweenie: man thats not overhead, come on! haha [19:21] technoweenie: dang, nodeload has been running for 9 days and is still < 50MB. woot [19:21] mape: how mandy downloads has it processed? [19:21] mape: *-d [19:22] maushu: technoweenie, my webserver has been running for weeks and it never goes up 10mb. [19:22] zenom: i am trying to get Faye installed for node.js and npm didn't work and I dont know what dir to link to, any ideas? [19:22] maushu: That reminds me. [19:23] technoweenie: maushu: nodeload runs `git archive` commands that build zip archives over 100MB [19:23] technoweenie: thats where the memory usage goes as far as i can tell. node leaked like crazy on 0.1.98/99 too [19:23] maushu: technoweenie, so? :p [19:23] _announcer has joined the channel [19:23] technoweenie: so? the child process and file stream code in node obviously needs some work :) [19:24] sveimac has joined the channel [19:24] sveisvei has joined the channel [19:24] technoweenie: https://gist.github.com/b922126a11aa0b1ed78b try that on 0.1.99 [19:24] technoweenie: if you care. if not, then whatever :) [19:25] technoweenie: i would think that reading a stream would only use up about as much memory as a single chunk [19:26] rolfb has joined the channel [19:27] isaacs: zenom: i just fixed it manually [19:27] isaacs: ACTION grumbles "stupid https upload not working..." [19:28] kassens: i've got a small doc fix, should i just send a pull request to ry or more? http://github.com/kassens/node/commit/7dd6ff8faf2d1f6253857412fbf3f1b384673f40 [19:29] technoweenie: kassens: mailing list [19:29] DTrejo: npm can't install node itself can it? [19:29] technoweenie: probably prefix the subject with [DOC PATCH] or something [19:29] kassens: ok, thanks [19:29] isaacs: DTrejo: no, but nvm and nave can [19:30] DTrejo: oh ok [19:30] isaacs: DTrejo: npm install nave; nave use 0.1.99 (now you're in a subshell with 0.1.99 version of node) [19:30] DTrejo: interesting [19:31] isaacs: DTrejo: i usually use the HEAD version of node in my "main" shell, and i have a nave install that goes back a few versions for when i want to use release versions [19:31] zenom: where do I put libraries? and what is the easiest way to isntall them [19:31] zenom: i tried putting them in ~/.node_libraries/ but nothing works [19:31] isaacs: zenom: ~/.node_libraries or /usr/local/lib/node [19:31] isaacs: zenom: then require("foo") [19:31] isaacs: zenom: or you can require them relative to your program. require("./foo") [19:31] zenom: http://github.com/robrighter/Long-Polling-Buffer [19:31] zenom: i am trying to get that working [19:32] isaacs: zenom: er, var foo = require("./foo") [19:35] twomashi has joined the channel [19:37] christkv has joined the channel [19:38] Aikar has joined the channel [19:41] _announcer: Twitter: "The more I read @technoweenie's posts about node.js and see coffee script, the more I want to spend time using it." -- Curt Micol. http://twitter.com/asenchi/status/18787526807 [19:43] mjr_: isaacs: my npm upload problems seem to be related to the machine I was on yesterday. [19:44] mjr_: isaacs: as I can publish just fine from this machine. I'm not sure what is different. [19:44] rgl has joined the channel [19:47] zenom has left the channel [19:48] stream- has joined the channel [19:51] khug has joined the channel [19:51] stream-: anyone know how i can edit the message that displays "This page requires Websocket support." when connecting to the websocket with a non supported browser [19:53] benburkert has joined the channel [19:56] mitkok has joined the channel [20:02] DTrejo: isaacs: from what you said it sounded like I could just install npm, then use nave to install whichever version of node. when I tried to install npm on a clean osx machine: http://grab.by/5tgw [20:02] DTrejo: i probably misunderstood [20:04] DTrejo: (doing more research now) [20:11] twomashi has left the channel [20:15] pavan_ has joined the channel [20:15] devongovett has joined the channel [20:17] _announcer: Twitter: "Working on a personal project all day. Android client, sinatra or node.js API for data (not sure which yet). Nice break from client work!" -- Michael Leung. http://twitter.com/mleung/status/18789178430 [20:18] richcollins has joined the channel [20:22] CrabDude has joined the channel [20:24] astrolin_ has joined the channel [20:35] _announcer: Twitter: "I think I'm gonna start looking more into SSJS. Take CoffeeScript for example: http://bit.ly/9oBSFl, or Node.js: http://nodejs.org/" -- Ken Schwencke. http://twitter.com/schwanksta/status/18790000628 [20:35] Sou|cutter has joined the channel [20:36] DTrejo: nodejs @0.1.92 (devel, net) is on macports [20:37] bean0r1___: bit old? :) [20:39] micheil: SubStack: is this a better demo? http://brandedcode.com:8000/ [20:40] jblanche: I got a "Build failed: -> task failed (err #2): {task: libv8.a SConstruct -> libv8.a}" trying to compile node0.1.101 on a debian lenny, does it ring a bell to anybody ? [20:41] pavan_ has joined the channel [20:42] bean0r1___: micheil: connection refused [20:43] micheil: yeah [20:43] micheil: I killed the server, noticed an error [20:43] DTrejo: anyone know why this might be happening? http://grab.by/5tiC trying to build on mac osx [20:44] bean0r1___: DTrejo: brew install node [20:44] bean0r1___: works fine [20:44] bean0r1___: 0.1.100 [20:45] DTrejo: I guess I should install brew then [20:46] DTrejo: too bad macports doesn't have the latest [20:46] micheil: k. it's back online bean0r1___ [20:47] skampler has joined the channel [20:48] micheil: bean0r1___: or not. [20:48] micheil: I've shutdown the server.. I'll run it later. [20:49] bean0r1___: ok :D [20:49] mscdex: jblanche: gist the details [20:50] jblanche: mscdex: http://gist.github.com/479848 [20:51] _announcer: Twitter: "I bring you some tasty new API today — usage: http://is.gd/dw701 and the code: http://is.gd/dw700 #nodejs #websockets /cc @mrdoob" -- Micheil Smith. http://twitter.com/miksago/status/18790714225 [20:54] benburkert has joined the channel [20:55] kevm_ has joined the channel [20:55] mostlygeek has joined the channel [20:55] mscdex: jblanche: hmmm.. it built fine on my lenny vm [20:58] jblanche: strange I compiled the v0.1.22-7-g3d24e11 a few month ago (I guess the g3d24e11 is the commit-ish) without problem [20:59] kersny has joined the channel [20:59] mscdex: 0.1.22 is pretty old [21:00] mscdex: :S [21:00] jblanche: Yes that's why I want the last one for my latests tests :) (and it's working well on my MacBook) [21:01] jblanche: I guess i'm in for some research, Google may be my friend once more :) [21:02] mscdex: lenny is up to date? [21:02] ryah: jblanche: that has nothing to do with node - whatever you're doing there [21:02] ryah: it looks like you're compiling stl [21:02] ryah: oh nevermind [21:02] mscdex: this is the second time someone has had problems compiling a recent version of node and it compiles fine on my vm of the same os [21:03] mscdex: :\ [21:03] bean0r1___: can someone confirm http://github.com/ry/node/issues/issue/214 ? [21:03] mscdex: ^ yeah that too [21:03] mscdex: odd problem [21:04] bean0r1___: :P [21:04] markwubben has joined the channel [21:04] ryah: ACTION would love a test for 214 [21:05] ryah: stand alone test that is for test/simple [21:06] jblanche: Lenny's not up to date (he last upgrade may be 2/3 month old) , I'm trying to upgrade [21:06] bean0r1___: ryah: k, i try that :D [21:07] eee_c has joined the channel [21:07] brianmario has joined the channel [21:09] micheil: ryah: with http://github.com/ry/node/commit/c9e505791a7eae47a0c3e6bcbeb33553ac3b85cb [21:09] micheil: did you try: this._events[type] = undefined; ? [21:11] stepheneb has joined the channel [21:13] mscdex: jblanche: i think i see the problem [21:13] jblanche: It's not better after the upgrade [21:13] mscdex: jblanche: what's your output of gcc --version ? [21:14] jblanche: gcc (Debian 4.3.2-1.1) 4.3.2 [21:14] mscdex: huh... weird [21:15] mscdex: it shouldn't be using the 4.3 directory then [21:16] astrolin has joined the channel [21:16] mscdex: er nevermind [21:16] jblanche: here is a better gist if it can help http://gist.github.com/479848 [21:17] satori_ has joined the channel [21:18] DTrejo: I haven't heard people saying much about nodejs on heroku [21:19] wao: _announcer: test [21:19] wao: _announcer: blabla :) [21:19] wao: mape: test [21:19] mape: wao: ping [21:19] maushu: mape: pong [21:20] wao: :) [21:21] mscdex: jblanche: it looks like the compiler possibly isn't including /usr/include/linux in the include path [21:22] mscdex: jblanche: the reason being is that that is where stddef.h lives [21:22] mscdex: jblanche: also, you have a /stock directory? [21:25] jblanche: yes something I created, I don't realy know why if you're asking me but I don't think it's related [21:26] kersny has joined the channel [21:28] jblanche: It may be related to something I did a while ago, the / partition was full so that I had to copy /usr to /stock/usr (with cp -ax in order to keep permissions and everything else) [21:29] jblanche: Looks like others had a few problems after this manip [21:29] sveimac has joined the channel [21:29] mscdex: hmm [21:29] khug has joined the channel [21:32] mscdex: jblanche: looks like the bug is fixed in gcc 4.3.3 and 4.4.0 [21:32] mscdex: jblanche: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38000 [21:32] kriszyp has joined the channel [21:35] jblanche: Looks like it is ! Yes but I'm not sure to upgrade just gcc it's kind of an important package :) [21:36] mscdex: jblanche: upgrading just to 4.3.3 wouldn't be so bad imho [21:37] jblanche: how would you do that ? looks like it's not in lenny's package [21:37] mscdex: jblanche: unless you merge your partitions back into one :-P [21:38] mscdex: jblanche: i think i spotted a debian package for it... one moment [21:39] _announcer: Twitter: "Any cool ideas for a project in Node.js?" -- Jan Kassens. http://twitter.com/kassens/status/18792922557 [21:39] jblanche: Unless you have a solution to put 2.5Go in a 2Go partition, I think I'll keep /usr on another one :) [21:40] streblo has joined the channel [21:40] mklappstuhl has joined the channel [21:40] streblo: hey [21:40] kassens: damn, _announcer was quick [21:41] mscdex: jblanche: 4.3.4 is in lenny-backports: http://packages.debian.org/lenny-backports/gcc-4.3 [21:41] kassens: is there a streaming api for twitter? (i've got pinged in irc the tenth of a second my "new tweet" window closed) [21:41] mscdex: kassens: yes [21:42] kassens: mscdex: ah, thanks :) [21:45] _announcer: Twitter: "Hey... yeah. Node.js can totally be written in coffeescript... yes, sometimes the light takes a while to get inside my head, there." -- Matt Wilson. http://twitter.com/hypomodern/status/18793186366 [21:45] jblanche: mscdex: I'm trying that, thanks a lot :) [21:45] mscdex: no problem [21:45] bradleymeck1 has joined the channel [21:45] wilmoore has joined the channel [21:49] Industrial has joined the channel [21:49] kersny has joined the channel [21:49] _announcer: Twitter: "Clojure, Node.js and Concurrency Fail - dosync http://bit.ly/b7erlG" -- Top ★ 100. http://twitter.com/Topsy_100/status/18793369978 [21:49] Industrial: Having some trouble installing kiwi to a non default location. [21:50] Industrial: if I change the Makefile to use eg ~/app/kiwi-git/ then theres some hardcoded paths in kiwi that are failing [21:50] Industrial: wouldn't know how to fix this myself :' [21:53] satori_: Industrial: kiwi is discontinued isn't it? [21:53] Industrial: is it? didnt know :P [21:53] satori_: I think npm is the way to go for package management with node now [21:53] Industrial: its been a while since I had time to mess around with fun tech :( apparently. [21:53] mscdex: Industrial: http://groups.google.com/group/nodejs/browse_thread/thread/58953e6c38d39913 [21:53] Industrial: ty [21:54] satori_: more functionality and polish [21:54] mscdex: satori_: you mean isaacs is polish? [21:54] mscdex: :P [21:55] satori_: heh. those damn poles [21:55] eee_c has joined the channel [21:56] voodootikigod_ has joined the channel [22:00] jblanche: mscdex: node --version : v0.1.101! Lets rock :) [22:00] mscdex: jblanche: awesome! :-D [22:01] jblanche: That one was not an easy one :) [22:01] satori_: It that a binary version number? [22:02] mcarter has joined the channel [22:07] mscdex: heh... css3 pie just got mentioned on /. now [22:08] satori_: yeah. just saw that [22:08] satori_: I'm doing my morning coffee and tech reading :P [22:09] mscdex: i'm doing my evening coffee and tech reading ;-) [22:11] satori_: I am currently deciding whether or not to go sailing on Sydney harbour today... Sailing is fun but it's 7.8 deg celcius here atm and I hate the cold. [22:14] DTrejo: how does that happen, it's australia [22:14] satori_: middle of winter is still cold in Sydney. Even colder in Melbourne. [22:14] b_erb has joined the channel [22:15] satori_: We sometimes get snow on the Blue Mts on outskirts of Sydney. rare though [22:15] voodootikigod_ has joined the channel [22:15] mscdex: ACTION shakes a fist at the celsius scale [22:15] DTrejo: oh I forgot it's not summer everywhere, oops [22:16] satori_: celcius = 0 -> 100 water freezing to boiling....always seemed saner to me [22:16] devongovett has joined the channel [22:17] mscdex: satori_: but you probably grew up using that scale though ;-) [22:18] satori_: trudat. Aussies only use imperial measurments for drugs and a persons height [22:18] satori_: everything else is metric [22:19] satori_: I just bought an ounce of weed and I'm 6'1", but I drive at 70km/h [22:19] jblanche: mscdex: Here is the result http://jblanche.fr/lab/websockets.html, thanks again :) [22:19] mscdex: jblanche: neat. no problem :-) [22:23] saikat has joined the channel [22:26] devongovett has joined the channel [22:29] sveimac has joined the channel [22:29] bpot has joined the channel [22:32] _announcer: Twitter: "Javascript Rackcloud tried to up the run on the server. Dangerous. I mean feeling about the future victory Javascript. Javascript vs Ruby? PHP is a DB or to become more and more difficult and even a speed. # SSJS http://nodejs.org" [ja] -- 長澤 智也. http://twitter.com/Jipanglish/status/18795496494 [22:34] DTrejo: that was hard to understand - announcer auto-translates? [22:34] mscdex: yup [22:35] MrTopf has joined the channel [22:36] bradleymeck1: use !translate if you need random stuff sent to english [22:36] bradleymeck1: !translate "hola mujeres" [22:36] _utility: hello women [22:36] mscdex: !seen _frankie [22:36] mscdex: :-P [22:36] bradleymeck1: pfff _frankie = _utility [22:36] mscdex: i know ;-) [22:38] mscdex: !translate "de donde es _frankie" [22:38] _utility: where is _frankie [22:38] mscdex: identity crisis ;-) [22:39] pandark_: !translate 我愛節點 [22:39] _utility: I love node [22:40] pandark_: ^^ [22:40] agnat has joined the channel [22:40] tmpvar_: JimBastard, yo.. I just finished refactoring that stuff we were talking about last night [22:40] bradleymeck1: !translate English:Chinese 我愛節點 [22:40] _utility: 我愛節點 [22:41] mscdex: wrong direction? lol [22:41] bradleymeck1: !translate English:Chinese I love node... [22:41] _utility: I love node... [22:41] bradleymeck1: lol [22:41] bradleymeck1: fail [22:41] mscdex: hah [22:42] bradleymeck1: i forget but i think chinese has something in parens [22:43] pavan_ has joined the channel [22:43] pavan_ has joined the channel [22:43] bradleymeck1: !translate "English:Chinese (Simplified)" I love node... [22:43] _utility: 我爱节点... [22:45] mscdex: all i ever see is the unicode boxes :( [22:46] mscdex: don't know if it's windows to blame or xchat [22:46] satori_: You mean the Chinese dont have a char that is a black square? [22:46] mklappstuhl has joined the channel [22:48] mscdex: brb [22:49] _announcer: Twitter: "is jslibs related to node.js ? http://code.google.com/p/jslibs/ Interesting JavaScript #js project." -- Narendra Sisodiya. http://twitter.com/nsisodiya/status/18796275609 [22:49] pandark_: Maybe he was not using utf-8 [22:50] kriszyp has joined the channel [22:52] aho: don't know if it's windows to blame or xchat <- you gotta use a logical font which includes physical fonts which cover those font ranges [22:52] aho: well... derp :> [22:53] aho: \etc\pango\pango.aliases [22:54] aho: i got there... [22:54] aho: tahoma = "tahoma,meiryo,browallia new,mingliu,simhei,gulimche,ms gothic,kartika,latha,mangal" [22:54] aho: and then i picked tahoma as font in xchat [22:54] aho: it will use tahoma if possible... then fallback to meiryo and so on [22:55] aho: * mscdex has quit (Quit: Leaving) [22:55] aho: o f- it [22:57] tmedema: Hmm who helped me yesterday with that redirect http client problem? [22:58] tmedema: I have another url that redirects me I think but I cant find the target with firebug [22:58] aho: take a look at your logs :> [22:58] tmedema: url is http://www.google.com/finance?q=MSFT&restype=company&start=0&num=10 [22:58] aho: live headers [22:59] aho: live HTTP headers, that is [22:59] aho: (it's a very handy firefox extension) [22:59] aho: there is also NoRedirect [22:59] tmedema: hmm maybe I got it [23:00] tmedema: dont think it redirects [23:03] CrabDude has joined the channel [23:07] sh1mmer has joined the channel [23:14] y has joined the channel [23:14] bean0r1___: curl -I url :) [23:14] bean0r1___: and you get the redirect [23:15] bean0r1___: tmedema: its no redirect [23:15] tmedema: ok thanks bean0r1___ guess I need to fake some headers [23:15] _announcer: Twitter: "Doing node.js and Mojo programming? I need some discussion, IRC freenode #webos Please retweet #mojo #webos" -- Dave Freeman. http://twitter.com/sugar_dave/status/18797603303 [23:16] bean0r1___: why do you think its a redirect? [23:16] tmedema: bean0r1___: it didnt respond just like it did when I had a redirect somewhere else [23:16] tmedema: I dont think it is anymore [23:16] bean0r1___: ok [23:18] dgathright has joined the channel [23:21] kersny_ has joined the channel [23:25] mikeal has joined the channel [23:35] benburkert has joined the channel [23:39] mikeal: anyone else having problems with github? [23:45] mape: what part of it? [23:45] ceej has joined the channel [23:46] tmedema: bean0r1___: I am getting a 301 redirect code now [23:46] tmedema: it must be a redirect [23:50] mikeal: nevermind [23:50] mikeal: my repo was screwed up somehow [23:50] mikeal: re-cloning fixed it [23:52] bean0r1___: micheil: can you add "put" to request :P [23:53] bean0r1___: giving a WriteStream and it "puts"... :) [23:53] dnolen has joined the channel [23:53] mikeal: you could just use my request library [23:53] bean0r1___: *readstream [23:53] mikeal: it automatically handles 3xx responses [23:54] mikeal: http://github.com/mikeal/node-utils/tree/master/request [23:55] bean0r1___: mikeal: a wrong nick, can you add "put" to request, just giving url, readstream and maybe custom headers ;) [23:55] mikeal: yes [23:55] bean0r1___: i love how easy to use request is :) [23:55] mikeal: the docs are on that page [23:55] sudoer has joined the channel [23:55] bean0r1___: but its GET only? [23:55] mape: fork, fix, pull request? :) [23:55] mjr_: mikeal: did you ever get anywhere with your options parser? [23:56] mikeal: request({uri:'http….',requestBodyStream:myStream, method:'PUT' [23:56] bean0r1___: AH [23:56] bean0r1___: mikeal: my fault [23:56] bean0r1___: awesome! [23:56] mikeal: or, if you just want to pass the body whole and not as a stream [23:56] mikeal: body:"bodystring" [23:56] mikeal: by default followRedirect:true [23:57] bean0r1___: need to push to S3 :) [23:57] mikeal: if you want to turn that off, followRedirect:false