[00:00] creationix: mape: no, was the file the actual nStore datafile? [00:00] mape: yeah [00:00] mape: oh thought I mentioned that [00:00] creationix: ok, I'll test it [00:01] creationix: though yours is just one long row, my test if 27k small rows [00:01] creationix: so yours should be even faster [00:01] creationix: (for startup at least) [00:01] jacoblyles has joined the channel [00:01] creationix: I only read and parse the meta per row at startup [00:02] creationix: the data is only read on demand [00:03] creationix: mape: 0m0.096s [00:03] mape: yeah, so no issue [00:03] ryah: ashleydev: i got interrupted [00:03] ryah: but it's not building out of the box [00:03] ashleydev: :( [00:03] creationix: mape: one side effect is I'll have to change the api since startup isn't blocking anymore [00:03] ryah: the fixes i was making were obvious and easy [00:04] mape: creationix: easy enough to fix :) [00:04] ryah: very nice error messages [00:04] creationix: ryah: yes they are [00:04] creationix: almost magical [00:04] d0k: :) [00:04] ashleydev: and all the more so after using gcc ... [00:05] ryah: i would really like to get node building on it [00:05] mape: ryah: So dtrace will be implemented now that you are work buddy with the creator? [00:05] ryah: but i need to sit down for 2 hours and port v8 [00:05] ryah: mape: yes [00:05] ryah: mape: he's my new boss :) [00:05] mape: Met him yet? [00:05] mape: Ah, nice [00:05] ryah: yes [00:05] d0k: I have a (somewhat hackish) patch to build v8 with clang btw [00:06] stepheneb has joined the channel [00:06] mape: He knew about node.js? [00:06] ryah: mape: no, but he likes it [00:06] ryah: he's into js [00:06] softdrink has joined the channel [00:06] mape: cool [00:06] _announcer: Twitter: "@travisbell Ya, it's sweet. I actually had trouble building node.js, so decided to just use brew install node.js, which worked beautifully." -- James Dennes. http://twitter.com/jdennes/status/19866129172 [00:06] ryah: yeah [00:07] creationix: dtrace, that's exciting [00:07] mape: ryah: You had anything to do with the hiring? ;) [00:09] creationix: heh, I found a quick way to grow a test file [00:09] creationix: cat sessions.db >> sessions.db [00:09] creationix: I was expecting it to double the file, but cat seems to pick up the new data [00:09] creationix: now I have a test file with 5.6 million lines [00:10] creationix: and likely some corrupted [00:10] mape: hehe [00:10] _announcer: Twitter: ""You should be urinating right now" @ryah discusses Node.JS, a web server for real-time information streaming http://bit.ly/aPKqOB" -- glennkelman. http://twitter.com/glennkelman/status/19866392866 [00:11] creationix: well, memory usage is staying level [00:11] creationix: that's a good sign [00:11] ryah: wow. [00:12] EyePulp has joined the channel [00:12] creationix: 30% of the cpu time is in JSON.parse [00:12] creationix: well, I assume v8::internal::Runtime_compile [00:13] tpryme: creationix: How are you benchmarking node.js CPU by method invocation? [00:13] creationix: osx process sampler [00:13] tpryme: creationix: I've been trying to find a tool for that [00:13] tpryme: creationix: Anything equivalent in ubuntu/linux? [00:14] WALoeIII has joined the channel [00:14] creationix: ok, finished, 4 minutes to find and parse 5.6 million json objects scattered through the file [00:14] tmpvar: tpryme, i think you can use valgrind [00:14] creationix: I hope I can make it faster [00:15] creationix: maybe I just need to only store the raw key instead of a meta json object [00:15] mjr_: tpryme: you can use oprofile on linux [00:15] tpryme: creationix: mjr_: thanks will look into that [00:15] creationix: I thought JSON.parse was fast? [00:15] mjr_: You can also use the V8 profiler by running node --prof [00:15] tpryme: creationix: What are you trying to make run faster? [00:15] creationix: the data looks like {"key":"somelonguuid"} [00:16] creationix: tpryme: because it sucks if my server takes 4 minutes to startup with only 4 million rows in the table [00:16] tpryme: creationix: using which lib? [00:16] tmpvar: yikes, thats java slow [00:16] creationix: my custom db [00:16] tmpvar: :P [00:16] Apage43: "java slow" [00:16] creationix: nStore [00:16] Apage43: is that like xbox huge [00:17] creationix: I guess since it's non-blocking I can make it startup anyway, and just hold up queries against unknown keys till all the data has been read [00:17] creationix: I'd have to lock writes too probably [00:19] ryah: d0k: are you going to contribute them back to v8 [00:20] d0k: I hope so, but I'm still not sure what the actual issue is [00:20] tpryme: mjr_: Do you know of a good url outlining node --prof? [00:21] _announcer: Twitter: "User-friendly command-line parameters in #nodejs (mostly like Text::Abbreviate for #perl folks) http://j.mp/b4VHMs #snippet" -- Frank Grimm. http://twitter.com/frank_grimm/status/19867057901 [00:22] mjr_: tpryme: I don't. I read through the files in deps/v8 to figure out how it worked. [00:22] mjr_: basically you need to build the "d8" executable, and then you can run linux-tick-processor on the output. [00:22] creationix: ok, if I remove the JSON.parse and cheat (since I KNOW the offset of the key) the next slowest parts are new Buffer at 20% and READ at 24% [00:22] tpryme: creationix: maybe lazy invoke the JSON.parse. keep a table mapping string indices to particular keys and then JSON.parse it upon a key lookup? [00:23] creationix: tpryme: well, I need the key to build the index, it can't be delayed [00:23] creationix: I think I'll just change my format to not allow meta info, and only store the key and offsets in the index [00:23] kodisha has joined the channel [00:23] creationix: alright 2:30, that's better than 4:00 [00:23] Yuffster has joined the channel [00:24] creationix: now new Buffer is killing me [00:24] creationix: I'm using the string version of fs.read() maybe that internally creates a new buffer each time [00:24] creationix: I can limit key size to something sane (1024 chars) and re-use a buffer [00:24] mjr_: new Buffer is expensive at the moment. You gotta re-use them somehow [00:26] creationix: is there no way to read a file without creating buffers [00:26] creationix: I know need the string value [00:26] creationix: I guess that makes sense, the c api requires a buffer [00:27] creationix: s/know/only/ [00:27] tpryme: creationix: You might not need to limit the key size. You can double the size of the re-usable buffer as needed, no? [00:27] creationix: tpryme: true [00:27] creationix: I'll keep a pool of reusable buffers then [00:27] creationix: well, just double and throw away the old one [00:28] satori_ has joined the channel [00:28] creationix: no harm keeping the bigger one around [00:28] creationix: hopefully startup is only a few seconds [00:28] tpryme: creationix: I think new Buffer is what's killing my app, too [00:28] creationix: yeah, seeing these percentages in the sampler is awesome [00:31] tpryme: creationix: Do you know if Buffer.slice invokes new Buffer? [00:31] ryah: tpryme: what do you mean? [00:31] ryah: it doesn't allocate new spce [00:31] creationix: tpryme: it makes a new buffer in js, but shares the old ram [00:31] ryah: but it creates a new js object [00:31] creationix: yeah [00:32] tpryme: creationix: ryah: so basically shouldn't take a hit on your code. right. gotcha [00:32] ryah: tpryme: new objects are kinda expensive [00:32] ryah: but - no [00:32] Aredridel has joined the channel [00:32] creationix: yeah, slice is pretty fast, just be sure to remember it's sharing the same memory as another buffer [00:33] ryah: i'm surprised Buffer is slow enough for mjr to notice it [00:33] ryah: i mean - it is slow - it allocates memory [00:33] ryah: but is the bottleneck actually malloc? [00:33] ryah: that'd be kind of crazy [00:33] ryah: also good [00:33] mjr_: I believe it is malloc, yes. [00:33] Tim_Smart has joined the channel [00:33] ryah: because we can just do a mem pool [00:34] mjr_: oh yes [00:34] ryah: for the "blobs" [00:34] mjr_: And then, dynamically growable buffers [00:34] mjr_: And then, world domination. [00:34] tpryme: mjr_: Yeah that would be good if it was out of the box [00:34] ryah: no - no growing [00:34] ashleydev has joined the channel [00:34] _announcer: Twitter: "You Should Be Urinating Right Now. @ryah talk at @Redfin on Node.JS, a Real-Time Web Server he created using JavaScript http://j.mp/aVaAII" -- Peter Boctor. http://twitter.com/boctor/status/19867932139 [00:34] creationix: I just need a function that can read from a file at a given position and length and return me a utf8 string [00:35] mjr_: I wouldn't tackle growing them for a LONG time. [00:35] creationix: I don't care what buffer pooling magic there is under the hood [00:35] mjr_: Just getting a better allocator I think will win huge. [00:35] mjr_: I'd much rather we fix some other things like aggregating writes at the end of the tick, etc. [00:35] creationix: so creating a new string is faster than creating a new buffer of the same size? [00:35] mjr_: creationix: WAY faster [00:36] mjr_: except for very large strings/buffers [00:36] creationix: good, though in my case it doesn't matter since JSON.parse needs a string anyway [00:36] _announcer: Twitter: "Having some fun with Node.js, Expressjs, and Connect" -- Bradley Price. http://twitter.com/bradleyprice/status/19868029007 [00:36] tpryme: creationix: I would say use redis SUBSTR but you're doing this for nstore [00:36] mjr_: But you can make all kinds of temporary strings, and V8 blazes through them. [00:36] creationix: yeah, these at startup are usually about 60 bytes long [00:37] Tobsn: is here someone into RTP/DSP advertising? [00:38] creationix: I can't ever find things on the api docs [00:38] creationix: where is Buffer's toString? [00:38] creationix: ahh, found it [00:38] tpryme: You can just call toString("utf8") [00:39] ryah: the docs need help [00:40] mjr_: docs, yeah [00:40] mjr_: Some nights I sit down and think, "hey, I'm going to work on the docs tonight", and then I look at how much stuff needs to be done, and then I get discouraged. [00:40] ryah: ACTION is at 120% capacity unfortunately these days. [00:41] mjr_: ryah: other than presenting at various venues, what are you focusing on in node these days? [00:41] ryah: mjr_: working on internal stuff [00:41] ryah: that is, joyent stuff [00:42] mjr_: ohhh [00:42] mjr_: THAT kind of internal stuff [00:42] Tobsn: brb [00:42] ryah: yeah [00:42] creationix: alright, now my code is 60% node::Read [00:42] ryah: will get back to the other internal stuff soon [00:42] ryah: need to land that long stack branch [00:42] creationix: 5% node::Loop [00:42] tpryme: creationix: What's node::Read? - don't recall it from the docs [00:43] creationix: no clue, I'm guessing it's what fs.read calls internally [00:43] ryah: creationix: yes [00:43] ryah: er [00:43] creationix: ok, now down to 1m47s [00:43] ryah: it might be the _net.cc one [00:43] creationix: still slower than I would like [00:44] creationix: beats 4 minutes though [00:45] creationix: ryah: there is nothing I can do to make read faster is there? [00:45] creationix: it's all threadpool right? [00:45] Wandrewvious has joined the channel [00:46] creationix: interesting, also my process is using 178% cpu instead of 120% [00:46] creationix: must be the threadpool then [00:47] _announcer: Twitter: "#reddit Node.js: Javascript on the Server - Google Tech Talk by Ryan Dahl: submitted by jb55 [link] [comment] http://bit.ly/aqwHBb #rulez" -- REDDITSPAMMOR. http://twitter.com/REDDITSPAMMOR/status/19868721803 [00:47] creationix: 44% pthread_mutex_lock (inside node::Read) [00:47] creationix: and people say threads are free [00:48] creationix: too bad posix doesn't have non-blocking fs I/O [00:50] creationix: ryah: if my process if 44% pthread_mutex_lock maybe I'm calling fs.read too often? [00:50] creationix: it has 5 threads [00:51] creationix: (but I guess that's normal) [00:53] bleeber has joined the channel [00:53] bleeber: hello all [00:55] bleeber: we are currently using node.js to create a web based chat server for our online games. When run from the command line, it works fine for a while then crashes randomly. I then tried to add it to inittab so it would auto respawn but then it will not work. netstat shows the connections being established but you cannot chat. [00:56] bleeber: Has anyone else run into this issue and how would I go about working on a solution [00:57] creationix: bleeber: haven't seen that, but I did document my deployment http://howtonode.org/deploying-node-with-spark [00:57] creationix: not sure if that will help or now [00:57] creationix: *not [00:57] bleeber: creationix: anything could help at this point. Ill check it out [00:58] creationix: cool [01:01] bleeber: creationix: what is the benefit of using spark? [01:02] bleeber: creationix: nevermind, I just found the page [01:02] creationix: bleeber: it handles lots of cool deployment things without modifying the actual app [01:02] rauchg_: bleeber: it's weird that node `randomly` crashes, used to be common but not anymore, i'd check your actual app [01:03] visnup has joined the channel [01:08] creationix: bleh, reusing a buffer sucks when the function is called in parallel [01:08] creationix: I need a freelinst [01:08] creationix: *freelist [01:09] technoweenie has joined the channel [01:09] technoweenie has joined the channel [01:11] jashkenas has joined the channel [01:12] jashkenas has left the channel [01:12] tpryme: creationix: What's an example of a fn called in parallel in an async env like node? [01:14] creationix: tpryme: any async function that is called more than once before the first one comes back [01:14] creationix: it's quite common [01:14] tpryme: creationix: Oh, I see, like via recursion [01:15] creationix: tpryme: not usually recursion [01:15] tpryme: creationix: Oh, nm, gotcha [01:15] creationix: my case is I want to read two chunks from a file [01:15] franksalim has joined the channel [01:15] creationix: I fire off both queries at once, and they come back in arbitrary order [01:15] creationix: but since the function that does the fs read uses a global buffer, they clobber eachother [01:16] ryah: bleeber: you're listening for "uncaughtException" ? [01:16] bleeber: ryah: I finally figured it out and I am too embarrassed to say why [01:16] creationix: ryah: is freelist a public api? [01:16] ryah: damn. we really need --dev for development mode and default to producion mode [01:16] ryah: creationix: no [01:17] creationix: ok [01:17] creationix: ryah: default to production sounds good to me [01:18] ryah: production mode = never crash [01:18] rauchg_: bleeber: don't be embarrassed [01:18] ryah: just print stack traces [01:19] bleeber: When I was calling it from the command line I was in the directory. When I was calling it from the inittab I wasnt so it couldnt load all its deps [01:19] bleeber: lame [01:19] bleeber: sent all the output to a log and done [01:19] creationix: bleeber: yeah, that's why I cd to the folder in my upstart script [01:19] bleeber: yep [01:19] bleeber: oh well. works now [01:20] marshall_law has joined the channel [01:20] bleeber: and inittab keeps it running for now until we find out what makes it die [01:20] creationix: bleeber: I had a nasty error where my server wouldn't work from a browser, but works from curl [01:20] creationix: turned out that I was shelling out to gzip but only if the client accepted gzip encoding [01:20] keyvan has joined the channel [01:20] creationix: and gzip wasn't in my PATH [01:20] tmpvar: haha, nice [01:20] bleeber: fun fun fun. [01:21] tmpvar: thats pretty obscure [01:21] creationix: once I started logging errors it was pretty obvious [01:22] creationix: so to be safe, I put everything in my PATH explicitly in the upstart script and then cd to the directory [01:22] creationix: that seems to keep the env sane [01:25] tmpvar: i suppose you could also run a `which program` for all the things you'll need and store those off as well [01:25] tmpvar: (just thinking about deployment over many machines) [01:25] deepthawtz has joined the channel [01:26] tmpvar: and use __dirname ;) [01:29] reid1 has joined the channel [01:30] drudge: creationix: whenever i run spark 0.0.2 installed from npm, i get this: Error: Cannot find module '/Users/drudge/.node_libraries/.npm/spark/0.0.2/package/bin/spark [01:30] creationix: drudge: sounds like a npm issue [01:31] creationix: try uninstalling and re-installing from npm [01:31] _announcer: Twitter: "What a cool guy. Rolled the talk yesterday, and we can already see today. Node.js Google http://youtu.be/F6k8lTrAE2g" [pt] -- Éber F. Dias. http://twitter.com/eber_freitas/status/19871572595 [01:31] drudge: reinstalling npm or spark? [01:31] creationix: drudge: spark [01:31] creationix: it's independent from connect [01:31] drudge: same deal after a reinstall [01:32] bradleyprice has joined the channel [01:32] creationix: npm generates a shim that requires the real bin file [01:32] creationix: but for some reason it can't find it [01:32] creationix: spark by itself doesn't require anything except node internals [01:33] drudge: yeah running spark via /Users/drudge/.node_libraries/.npm/spark/0.0.2/package/bin/spark works [01:33] JimBastard has joined the channel [01:34] creationix: drudge: as a hack, find the spark shim (which spark) and replace it with a symlink directly to the spark file [01:34] coobr has joined the channel [01:34] creationix: it doesn't need a shim to work, symlinks work fine [01:34] WALoeIII has joined the channel [01:34] ditesh|cassini has joined the channel [01:34] drudge: creationix: thanks mate, hacky but it will do perfectly [01:35] creationix: drudge: oh, and file a ticket against npm [01:35] creationix: isaacs will probably fix it [01:35] creationix: right away [01:35] dmitry2 has joined the channel [01:37] drudge: filed creationix. http://github.com/isaacs/npm/issues/issue/135 [01:37] creationix: thanks [01:39] steadicat has joined the channel [01:41] creationix: drudge: ok, I talked to isaacs [01:41] creationix: you need to update your node for the shim to work [01:42] drudge: i'm on v0.1.101 [01:42] creationix: since my spark file doesn't end in .js older node can't require it [01:42] drudge: need 0.1.102? [01:42] creationix: not sure [01:42] creationix: I thought it was added earlier than 101 [01:42] creationix: could be wrong, it was a recent fix [01:43] creationix: I personally just use symlinks so I don't notice [01:43] _announcer: Twitter: "#nodejs + #expressjs has reignited my love for #js. All of the projects @ http://github.com/visionmedia/ rock!" -- Eric Clemmons. http://twitter.com/ericclemmons/status/19872379218 [01:43] drudge: yeah not a huge deal, definitely seems like a bug to me though [01:44] drudge: i'll upgrade to .102 and see if that changes anything [01:44] tyler_ has joined the channel [01:44] tyler_: can you use nodejs with google ajax api? [01:44] tyler_: javascript api [01:44] creationix: drudge: not sure it's a bug, but a bad combination of my file not ending in js, node not being able to require it and npm trying to require it [01:45] creationix: none of those alone are bad things [01:45] jamescarr: tyler_, yes [01:45] jamescarr: tyler_, you can use it with anything my friend [01:46] tyler_: jamescarr, how? they require you to

hello [03:40] bradleymeck2: loads still occur [03:40] creationix: yes, but it doesn't block the process like alert seems to do [03:41] tmpvar: ah, right [03:41] bradleymeck2: check out the timeline on resource loads [03:41] tmpvar: right [03:41] isaacs: oh, yeah, they're downloading, just not attached to the dom [03:41] tmpvar: emulating that here is going to be a pita [03:41] isaacs: so you don't actually want to block the thread anyway, just not conitnue building up the dom. [03:41] bradleymeck2: tmpvar steal the queue in witch [03:41] bradleymeck2: i linked relevant entry point [03:41] tmpvar: bradleymeck2, i must have missed it :/ [03:42] bradleymeck2: http://github.com/bmeck/Witch/blob/master/parser/html/index.js#L75-81 <- goes into /util/resource stuff [03:43] bradleymeck2: need to separate that out actually.. how about i write you a resource queue tomorrow [03:43] bradleymeck2: just list what you want so it can be shared amongst both [03:43] tmpvar: thats kind of you, not sure if it solves the issue [03:44] tmpvar: let me gist what im thinking here [03:44] bradleymeck2: you queue up a resource, list of things it blocks, and a callback i think [03:44] chilts has left the channel [03:45] _announcer: Twitter: "I'm attending the "Dog Days of Summer" event. Listen to @tswicegood talk about Node.js. Hell yea. http://bit.ly/cLBQgy" -- Steven Chau. http://twitter.com/whereisciao/status/19880535829 [03:46] tmpvar: http://gist.github.com/499853 [03:48] tmpvar: perhaps a document.onload ? [03:48] bradleymeck2: need event listeners before id add events [03:48] tmpvar: need level2 [03:48] tmpvar: :/ [03:49] tmpvar: xml namespaces suck btw [03:49] tmpvar: to implement that is [03:49] ryan_gahl has joined the channel [03:49] bradleymeck2: setting the src would spawn => resources.queue("script","http://../jquery.js",["script","css"]) => once stream is established => resources.handlers["script"](stream,finishedCb) [03:50] confoocious has joined the channel [03:50] bradleymeck2: then the queue would manage executing things in order [03:53] bradleymeck2: do you need namespaces before events? [03:53] nrstott has joined the channel [03:53] tmpvar: nah, but I *believe* level2/html builds on level2/core [03:54] tmpvar: not sure where events fit [03:54] scoates: is there a way for me to trap a keypress event in a REPL? [03:54] tmpvar: im going to make this readFileSync for the moment [03:54] tmpvar: and re-work it soon :) [03:55] bradleymeck2: sure sure, ill make a resource queue for you that fits the above unless otherwise requested [03:55] _announcer: Twitter: "@ Kyungw00k node.js to create something to do? Heh heh heh heh heh heh" [ko] -- Outsider. http://twitter.com/Outsider__/status/19881179361 [03:56] bradleymeck2: scoates, yes, sec gotta dig [03:56] scoates: thanks [03:59] wilmoore has joined the channel [03:59] JimBastard: !tweet @Outsider__ heh heh heh heh heh heh node.js [03:59] JimBastard: international incident [03:59] bradleymeck2: repl.stream.on("data",function(data){..}) seems to fit it [03:59] bradleymeck2: scoates^ [03:59] ryah: wow - that works? [04:00] ryah: looks so elegant [04:00] tmpvar: bradleymeck2, do you happen to know how to reference the window from the document? [04:00] bradleymeck2: document.defaultView [04:00] scoates: thanks bradleymeck2 [04:01] bradleymeck2: ryah, yea, im having a bit of havoc layering repls right now though [04:01] _announcer: Twitter: "#nodejs + #expresso tdd kick ass =D 1k test running in 2 second with couchdb =D" -- renatoelias. http://twitter.com/renatoelias/status/19881534879 [04:03] creationix has joined the channel [04:03] bradleymeck2: if only we could get a css engine behind jsdom before gui's hit XD [04:03] mscdex: sizzle! [04:03] mscdex: oh wait that's selectors [04:03] mscdex: darn [04:03] paul_irish has joined the channel [04:03] mscdex: ACTION goes back to uno [04:04] bradleymeck2: uno? [04:04] mscdex: writing an uno game that uses node [04:05] bradleymeck2: do we have an irc websocket client lying about? [04:05] bradleymeck2: ACTION plots [04:06] jacoblyles has joined the channel [04:06] robotarmy has joined the channel [04:09] ryah: bradleymeck2: layering? [04:09] steadicat has joined the channel [04:10] bradleymeck2: fire up the node repl then "require("repl").start("_< [06:22] danielzilla: jesusabdullah: Right, but in the whole directory, there's only two uses of ``print(`` and only the apidoc comment has the bare ``print``. [06:22] danielzilla: (Without ``sys.`` in front of it) [06:22] jesusabdullah: Hmmmmm [06:22] jesusabdullah: That would be really weird! [06:23] jesusabdullah: ACTION looks at that [06:24] jesusabdullah: danielzilla: no dice ;_; [06:24] danielzilla: Sorry. [06:24] jesusabdullah: Hey, you tried! [06:24] jesusabdullah: And I appreciate that! [06:25] jesusabdullah: *sigh* [06:25] jesusabdullah: I feel bad, because, not to trash gianni, but I don't find jerk, etc. very maintainable [06:25] jesusabdullah: :C [06:26] jesusabdullah: I feel guilty for thinking that, I guess [06:26] danielzilla: jesusabdullah: One more thought - Do you have maybe more than one copy and an out-of-date one is getting loaded? [06:27] _announcer: Twitter: "Doc of Geddy's content-negotiation: http://wiki.github.com/mde/geddy/content-negotiation # # node.js nodejs" [da] -- Matthew Eernisse. http://twitter.com/mde/status/19889593978 [06:28] jesusabdullah: danielzilla: I don't think so. I mean, I guess it's possible, but the file is referred to using a relative path (../stuff/stuff) and I deleted the only other irc.js file I'm aware of [06:28] danielzilla: K. Thought it was unlikely but something to check. [06:28] _announcer: Twitter: "Google Tech Talk: #Node.js: JavaScript on the Server - http://goo.gl/FADH /by @ryah" -- Peter Hoffmann. http://twitter.com/peterhoffmann/status/19889666539 [06:29] jesusabdullah: danielzilla: Yeah, totally [06:29] jesusabdullah: danielzilla: I'm accessing the computer remotely, so it could be I'm just missing something. [06:29] foobarfighter: jesusabdullah: do you know what blocking vs. non-blocking i/o is? [06:30] jesusabdullah: foobarfighter: Yeah! [06:30] jesusabdullah: I actually had to deal with that today [06:30] muhqu has joined the channel [06:30] jesusabdullah: Why do you ask, foo? [06:30] foobarfighter: well you asked why node programs dont terminate [06:30] jesusabdullah: No, I made an answer [06:30] jesusabdullah: or, an attempt [06:30] foobarfighter: ok [06:30] foobarfighter: cool [06:31] jesusabdullah: Sorries :) [06:31] foobarfighter: all good ... no worries [06:31] jesusabdullah: non-blocking! YES ^5 [06:31] jesusabdullah: except when it confuses me XD [06:32] jesusabdullah: I spend a few hours trying to figure out how to make non-blocking things looping through the same data not jack each others stuff up [06:32] jesusabdullah: and I realized I still have room for fuckup [06:32] foobarfighter: haha [06:33] jesusabdullah: I think I'm gonna have to do some kinda lock on it [06:33] mscdex: have you tried node-irc instead of jerk? [06:33] jesusabdullah: node-irc? [06:33] jesusabdullah: I hadn't heard of that! Link? [06:33] jesusabdullah: I can definitely look at it! [06:33] mscdex: http://github.com/martynsmith/node-irc [06:33] mscdex: it works pretty well [06:34] jesusabdullah: shit son [06:34] jesusabdullah: I'll definitely give it a shot! [06:34] jesusabdullah: i didn't know I had another option! [06:34] jesusabdullah: thanks mscdex [06:34] mscdex: np [06:34] ashleydev has joined the channel [06:35] jesusabdullah: mscdex: Do you know whose bot _announcer is? [06:35] mscdex: maushu [06:36] jesusabdullah: Hmm! [06:36] jesusabdullah: I'm interested in the twitter code >:) [06:36] mitkok has joined the channel [06:37] mscdex: well he custom wrote the twitter code, he didn't use a module [06:37] mscdex: so you'd have to ask him about it [06:37] jesusabdullah: *nod* [06:37] jesusabdullah: I can do that! [06:37] jesusabdullah: (If I remember to) [06:38] jesusabdullah: Ah [06:38] jesusabdullah: I'd better be gettin' to bed [06:38] jesusabdullah: thanks everyone! [06:38] jesusabdullah: (Man and I was this close to working on a different project tomorrow) [06:38] b_erb has joined the channel [06:39] jesusabdullah: Ooh, actually looks like the conversion will be pretty easy! [06:39] jesusabdullah: Sweet [06:39] jesusabdullah: orite [06:39] jesusabdullah: ACTION & [06:42] pdelgallego has joined the channel [06:46] _announcer: Twitter: "http://www.youtube.com/watch?v=F6k8lTrAE2g - Google tech talk on Node.js" -- Nishant Modak. http://twitter.com/nishantmodak/status/19890532094 [06:52] Yuffster has joined the channel [06:54] lachlanhardy has joined the channel [06:57] benburkert has joined the channel [06:59] isaacs: i thought _announcer was bradleymeck's [07:03] reid1 has joined the channel [07:03] isaacs: hi, reid1 [07:04] reid1: hi, isaacs! [07:04] reid\work has joined the channel [07:05] isaacs: always too many bugs [07:05] reid: reid1-- [07:05] isaacs: heh [07:05] isaacs: i keep wanting to release npm 0.1.21, but i keep finding another bug [07:06] mscdex: isaacs: nah, _utility/_frankie is bradleymeck's [07:07] isaacs: ah [07:07] isaacs: but didn't he own the @nodejsbot twitter handle or something? [07:07] mscdex: i dunno [07:07] mscdex: yeah [07:07] reid: there will always be bugs :) [07:07] mscdex: he does [07:07] isaacs: _frankie: hi [07:07] isaacs: then it must be _frankie that does the !tweet command [07:07] mscdex: _announcer just listens [07:08] mscdex: yep [07:08] isaacs: reid: yeah, but these are really annoying ones. [07:08] reid: isaacs: yeah, the annoying ones should probably be killed first. [07:13] shockie has joined the channel [07:13] reid: anybody here use vows? [07:13] reid: or prefer something else for tests? [07:14] SubStack: there's expresso [07:15] SubStack: ACTION hasn't used vows yet [07:15] Yuffster has joined the channel [07:17] _announcer: Twitter: "Oh, V8 with server-side JavaScript implementation "Node.js" has the TechTalk → YouTube - Node.js: JavaScript on the Server http://bit.ly/9tvxmy" [ja] -- Ken Nishimura. http://twitter.com/knsmr/status/19891924947 [07:17] reid: i should try that. vows is being a tad too smart for me [07:17] crohr has joined the channel [07:20] reid: it decides to change the arguments of my callback function. i'm spending most of my time debugging vows instead of writing tests, which sucks. [07:20] _announcer: Twitter: "Ryan Dahl 自身 による の node.js TechTalk / YouTube - Node.js: JavaScript on the Server http://htn.to/hUDsg5" [nl] -- Takuto Wada. http://twitter.com/t_wada/status/19892054849 [07:21] reid2 has joined the channel [07:21] reid has joined the channel [07:22] _announcer: Twitter: "Node.js: JavaScript on the Server http://www.youtube.com/watch?v=F6k8lTrAE2g by Ryan Dahl, Google Tech Talk July 2010 #nodejs" -- utopiah. http://twitter.com/utopiah/status/19892155829 [07:22] paul0 has joined the channel [07:22] kjeldahl has joined the channel [07:22] _announcer: Twitter: "node.js just blew my mind. Asynchonicity of javascript outside of the browser? Genius! http://bit.ly/btHyzX" -- Pierre Larochelle. http://twitter.com/pierre_l/status/19892180232 [07:23] khug has joined the channel [07:23] khug has left the channel [07:27] Blink7 has joined the channel [07:28] _announcer: Twitter: "The introduction of the kiwi package node.js fairly because I mean, the package manager chat" [ja] -- Nakamura Masato. http://twitter.com/Masahito/status/19892447358 [07:29] _announcer: Twitter: "The introduction of the kiwi package node.js because there is a fairly simple package manager I called." [ja] -- Nakamura Masato. http://twitter.com/Masahito/status/19892495154 [07:31] _announcer: Twitter: "node.js creator @ryah on Google Tech Talks: http://www.youtube.com/watch?v=F6k8lTrAE2g" -- Matthias Bauer. http://twitter.com/moeffju/status/19892585919 [07:33] _announcer: Twitter: "complement or alternative to Node.JS ? maybe http://www.ape-project.org designed for Ajax Push by @weelya #javascript #eventdrive" -- utopiah. http://twitter.com/utopiah/status/19892673478 [07:34] _announcer: Twitter: "@onlythoughtwork Did you had a deeper look at Node.js? Seems very interesting, looks different to the usual browser JS code." -- Stephane Rodet. http://twitter.com/rodet/status/19892714438 [07:34] FransWillem has joined the channel [07:35] admc has joined the channel [07:36] TomY has joined the channel [07:44] Yuffster has joined the channel [07:48] zomgbie has joined the channel [07:49] blackdog_ has joined the channel [07:53] nuxusr: does an httprequest break if no 100 continue? [07:53] nuxusr: in node.js [07:56] beanie___ has joined the channel [07:56] _announcer: Twitter: "Is anybody interested in a #nodejs Web Framework and would like to help? http://github.com/brokenseal/broke/" -- Davide Callegari. http://twitter.com/brokenseal/status/19893662679 [07:58] liesen has joined the channel [08:00] mscdex: nuxusr: what do you mean? [08:02] nuxusr: mscdex: well i'm trying to stream some data to a server that will send back a 100 continue if your headers are correct [08:02] nuxusr: but it seams the request doesn't send the headers until i've called the end() [08:03] nuxusr: but what if i want to stream the data over after i've gotten a 100 continue? [08:04] felixge has joined the channel [08:05] Yuffster has joined the channel [08:06] virtuo has joined the channel [08:09] visnup has joined the channel [08:10] FransWillem has joined the channel [08:10] _announcer: Twitter: "site is finally back up for real, rewritten for latest node.js, coffee-script, connect, and express." -- node knockout. http://twitter.com/node_knockout/status/19894271386 [08:12] ec-iPad has joined the channel [08:19] bvleur has joined the channel [08:21] Egbert9e9 has joined the channel [08:23] visnup: if you have any feedback on the node.js knockout rules, just holler [08:23] visnup: but first, bed [08:25] _announcer: Twitter: "LiNX is a great acronym for the node.js + linux + nosql stack" -- Bryan. http://twitter.com/bryanwb/status/19894887518 [08:26] mscdex: nuxusr: post an issue to the mailing list or the repo's github issue queue [08:28] _announcer: Twitter: "I an amazed by how much corporate support #node.js has gotten in its short existence" -- Bryan. http://twitter.com/bryanwb/status/19894999010 [08:28] mscdex: there used to be a way to manually flush the stream, but not anymore [08:29] caolanm has joined the channel [08:31] mscdex: nuxusr: what about writing an empty string or buffer instead of ending the request? [08:32] ec-iPad: How can I define a getter while following the standard? [08:32] ec-iPad: __defineGetter__ seems to be non-standard [08:32] ec-iPad: And getOwnPropertyDescriptor … well [08:32] mscdex: ec-iPad: besides __defineGetter__, see here: http://wiki.github.com/ry/node/ecma-5mozilla-features-implemented-in-v8 [08:33] ec-iPad: I could assign to the get field, but if it's a non-accessor-descriptor, that won't work, right? [08:33] ec-iPad: So how can i ensure it's an accessor-descriptor so I can assign to the get-field? [08:33] mscdex: var obj = { get a() { return "something" }, set a() { "do nothing" } } [08:34] mscdex: although i'm assuming a() should be a(val) { "do nothing" } instead [08:34] mscdex: for set [08:35] ec-iPad: No, I need to define it on an existing object. Hence the problem. [08:35] jetienne has joined the channel [08:37] ec-iPad: Scratch that, modifying the descriptor doesn't do anything anyway [08:37] ec-iPad: Thanks for that link mscdex, maybe defineProperty will help :D [08:37] mscdex: ec-iPad: you could try Object.defineProperty(obj, prop, desc) and use the 'get' descriptor [08:37] mscdex: heh [08:38] ec-iPad: … nice timing :3 [08:38] caolanm: ec-iPad: what's wrong with using __defineGetter__ ? ...sorry I joined the channel half-way through this discussion ;) [08:39] ec-iPad: Avoiding non-standard stuff. Also, was just curious if there *was* a standard at to do it. [08:39] jetienne: http://www.youtube.com/watch?v=F6k8lTrAE2g <- Node.js: JavaScript on the Server - July 28, 2010 [08:40] caolanm: I think the whole getter/setter thing is a bit awkward atm [08:40] _announcer: Twitter: "googletech video about Node.js: JavaScript on the Server - July 28, 2010 - http://ping.fm/LxNUH" -- Jerome Etienne. http://twitter.com/jerome_etienne/status/19895514144 [08:40] caolanm: its a shame you can't define a getter for arbitrary properties, that would have been useful [08:41] caolanm: like python's __getattr__ [08:42] jetienne: caolanm: you can, no ? [08:43] caolanm: I mean creating a getter for properties without knowing their name in advance [08:43] _announcer: Twitter: "Despite of what has been said, Node.js looks quite cool for certain kinds of applications: http://www.infoq.com/articles/nodejs-frameworks" -- Sergio Bossa. http://twitter.com/sbtourist/status/19895671617 [08:44] _announcer: Twitter: "I'll probably start hacking on Node.js after my vacations ..." -- Sergio Bossa. http://twitter.com/sbtourist/status/19895705009 [08:45] ntelford has joined the channel [08:47] _announcer: Twitter: "[Js 人 気 情报] ECMA 5/Mozilla Features Implemented in V8 - node - GitHub http://bit.ly/aR7fXH # javascript" [de] -- jsMagazine. http://twitter.com/jsMagazine/status/19895827914 [08:49] mscdex: caolanm: maybe we need a counterpart for __noSuchMethod__: __noSuchProperty__ ;-) [08:50] _announcer: Twitter: "Uuuh node.js framework http://github.com/mde/geddy - i know what im doing this weekend" [de] -- Christian Kirkegaard. http://twitter.com/ranza/status/19895946836 [08:50] _announcer: Twitter: "node-jsonrpc can now be installed with npm: npm install jsonrpc yay! #nodejs" -- Andris Reinman. http://twitter.com/andris9/status/19895950922 [08:52] caolanm: ultimately I've decided to try and avoid getters and setters where possible, and use functions instead... it might look nicer but it can be confusing for people using you api when they start seeing unexpected side effects [08:52] caolanm: although I must admit I've used getters for lazy evaluation of properties a few times ;) [08:54] _announcer: Twitter: "@sbtourist I would not want to write large apps with async callback style, but node.js is excellent for parts of every web app" -- Stephan Schmidt. http://twitter.com/codemonkeyism/status/19896104067 [08:54] ec-iPad: Yeah caolanm , I used to be of that opinion [08:55] caolanm: used to be? [08:55] mscdex: !tweet @codemonkeyism have you seen: http://github.com/creationix/step ? [08:55] caolanm: enlighten me :) [08:55] ec-iPad: But I've changed my mind. I'd rather use the language as it as designed, as a whole. I'm also using .foo instead of ['foo'] (which I never used to do), and using psuedoclasses instead of being anally prototype [08:56] ec-iPad: Prototypal* all the time [08:56] caolanm: well I can't say I often stick to the prototypical way myself ;) [08:57] ec-iPad: I used to use a very strict subset of ECMAScript, an ascetically thin one… but vie decided it's better to write code that would be friendlier to more JavaScripters, even if it's a little less strict/safe/rigorous [08:57] jelveh has joined the channel [08:57] caolanm: either way you have to be careful with getters and setters if its for use by anyone else [08:58] caolanm: people just don't expect foo.bar = 'test' to do anything other than set bar to the string 'test' [08:58] ec-iPad: Of course. That’s a given. [08:58] shockie_ has joined the channel [08:59] ec-iPad: I still don't think I’ve ever used a setter… but when *getters* are missing, it can be a real bitch [08:59] mAritz has joined the channel [08:59] caolanm: yep, getters are handy [08:59] caolanm: as a compromise I quite like jquery's way of getting and setting values, like .html() to get and .html(value) to set [08:59] ec-iPad: If i had a quarter for every time I’ve spent five minutes confused as to why my code’s broken, and then tracked it back to a place where I typed stats.isFile instead of stats.isFile()… I’d be a much richer man. [09:00] caolanm: still looks fairly neat [09:00] caolanm: ec-iPad: heh :) [09:00] caolanm: ultimately, seeing '()' means something else is going on, and its a useful indicator [09:01] _announcer: Twitter: "Must-read article by @al3x on scaling small vs large and #nodejs http://bit.ly/cva26k" -- Kennon Ballou. http://twitter.com/kennon/status/19896402356 [09:01] caolanm: but it sounds like we agree, so I'll shut up ;) [09:01] elliottkember has joined the channel [09:01] ec-iPad: ACTION nods [09:01] ec-iPad: Dude its elliottkember! [09:01] ec-iPad: :O [09:02] elliottkember: hey all! [09:02] ec-iPad: I dunno if you noticed before disconnecting last time, but: http://ell.io/ttkember [09:02] elliottkember: I did - that's awesome dude, thanks! [09:02] ec-iPad: ACTION nods again [09:02] jetienne: http://oreilly.com/catalog/9780596517748 <- "JavaScript: The Good Parts" a good book to know how to code js and keep it clean [09:02] caolanm: ah, a fellow brit [09:02] elliottkember: some crazy nginx config huh [09:02] caolanm: ACTION waves to elliottkember  [09:02] elliottkember: hey caolanm [09:03] elliottkember: I'm not actually a brit though - born and raised in NZ [09:03] ec-iPad: jetienne: Anybody who hasn't read that, IMNVHO, doesn't deserve to be in this channel. [09:03] caolanm: ec-iPad: like the snake on that site [09:03] caolanm: elliottkember: why do you have to go and break my heart like that [09:03] caolanm: ;) [09:03] ec-iPad: jetienne: Instead, they should be heading to the nearest bookstore, to buy a dead tree version of that book, and then reqading it. [09:03] caolanm: nah NZ, thats cool [09:03] elliottkember: caolanm: thanks (that snake is mine) [09:04] jetienne: ec-iPad: a tad exagerated :) but i agree this is a good book [09:04] ec-iPad: Yeah. That's elliottkember’s site, caolanm; I just gave him a redirection [09:04] caolanm: jetienne: yeah, love that book :) [09:05] ec-iPad: I don't agree with *everything* in it, after having JavaScripted a lot since reading it… but I still believe any noob should read that cover to cover before getting a chance to form any preconceptions about JavaScript [09:05] caolanm: anyone here used scheme? I'm tempted to give it a go, since crockford describes js as scheme-like [09:05] caolanm: think I might learn something [09:05] caolanm: about js I mean [09:06] ec-iPad: Ugh, the iPad cannot keep up with my typing. I am having to buffer charters in my head and pe very methodically, like a robot, with a measured minimum time between key presses >.< [09:06] elliottkember: *buys a copy* [09:06] elliottkember: *a PDF, not actually a copy* [09:06] ec-iPad: elliottkember: :O *you* haven’t read JS: TGP!? [09:06] confoocious has joined the channel [09:06] caolanm: how modern of you elliottkember [09:06] ec-iPad: ACTION is flubbergasted D: [09:07] elliottkember: ACTION saves a tree [09:07] teemow has joined the channel [09:07] elliottkember: haven't read it.. yet [09:07] ec-iPad: :x [09:08] elliottkember: damnit, can't pay with paypal [09:08] ec-iPad: Go do so… it's short, you can read it tonight. [09:08] ec-iPad: I read the whole thing on the flight to the Ruby Hoedown last year [09:09] _announcer: Twitter: "@codemonkeyism I have no experience with it. Maybe node.js is best suited for small/medium highly-scalable components. Still don't know." -- Sergio Bossa. http://twitter.com/sbtourist/status/19896761936 [09:10] jelveh has joined the channel [09:13] femto has joined the channel [09:13] caolanm: elliottkember: damn, you have over 4,600 followers on twitter... I feel like I should have heard about you now [09:14] ec-iPad: Heh [09:15] ec-iPad: Yep, he's an Internet whatchamacallit [09:15] caolanm: heh [09:15] ec-iPad: I will be soon enough, according to Twitter followers :3 [09:15] maushu has joined the channel [09:15] caolanm: ec-iPad: link? [09:15] caolanm: ;) [09:15] ec-iPad: But not according to GitHub watchers )-:< [09:16] ec-iPad: Why are people interested in my meaningless banter, but not my code? D: [09:16] caolanm: github watchers is a better measure of geek-cred ;) [09:16] ec-iPad: Ikr [09:16] ec-iPad: hence my botching [09:16] caolanm: I have about 20, and am therefore irrelevant ;) [09:16] ec-iPad: … bitching* [09:17] ec-iPad: I probably have 50 across all my projects >.< [09:17] ec-iPad: And since I have ~90 projects… [09:17] caolanm: ohhh, well if we're counting project watchers... [09:17] caolanm: hmm, let me do some adding up [09:18] ec-iPad: Oh, account followers are meaningless. It’s like Twitter followers; because of reciprocal following and such, it's just a popularity contest, not a meaningful measure of cred [09:18] ec-iPad: I have, uh, 100 account followers? [09:19] ec-iPad: http://github.com/elliottcable http://twitter.com/elliottcable [09:19] caolanm: ok I have 21 account followers and around 100 project watchers [09:19] _announcer: Twitter: "Watching @ryah talking about Node.js at Google from yesterday http://www.youtube.com/watch?v=F6k8lTrAE2g" -- Tom. http://twitter.com/sh1mmer/status/19897178636 [09:19] caolanm: I'm not sure why I care... [09:19] caolanm: heh [09:20] caolanm: man, you live in alaska? [09:20] caolanm: I love the internet [09:20] caolanm: still amazed by this sort of thing [09:22] mAritz has joined the channel [09:22] ec-iPad: … holy crap, 569 O_O [09:23] ec-iPad: Soooo my estimate of 50 was a bit off [09:23] caolanm: ;) [09:23] ec-iPad: #haslowinternetselfesteem? [09:23] caolanm: that's more like it [09:24] caolanm: you have a lot of projects on there [09:24] ec-iPad: ikr [09:24] ec-iPad: I like to make things, I have a lot of good ideas, I code very fast, and I have a lot of time to code [09:25] ec-iPad: I also learn extraordinarily fast (most programmers do, though, so…) so there's only one or two projects on there with any given language and (toolchain|framework) combination [09:26] ec-iPad: http://ell.io/tt :3 [09:27] _announcer: Twitter: "to clarify - node-jsonrpc is my first module for Node.JS http://github.com/andris9/node-jsonrpc" -- Andris Reinman. http://twitter.com/andris9/status/19897540290 [09:31] robotarmy has joined the channel [09:31] jimt_ has joined the channel [09:32] wao: hmm [09:32] wao: what should I use, if want do some intra accounting service, something like http://www.xero.com/dashboard/ ? [09:32] wao: nodejs is acceptable? [09:36] maushu: wao: Hmm? [09:38] wao: maushu: where should I start, when I want build similiar service for intra web? :) [09:39] maushu: You should probably use something like connect or express. Unless you want to write everything from scratch. [09:39] maushu: Both have session management, an important feature for what you want. [09:40] wao: connect or express (frameworks?) [09:40] maushu: Yes. [09:41] maushu: http://github.com/senchalabs/Connect [09:41] maushu: http://github.com/visionmedia/express/tree/master [09:41] maushu: Or http://github.com/mde/geddy/tree/master [09:41] maushu: There are lots of stuff around, this contains tons of modules: http://wiki.github.com/ry/node/modules [09:42] tmedema has joined the channel [09:44] _announcer: Twitter: "@crashtext question : t'as regardé un peu Node.js ? #nodejs" -- Brice Carpentier. http://twitter.com/bricecarpentier/status/19898233054 [09:59] pydroid has joined the channel [10:04] _announcer: Twitter: "Just finish to watch Node.js: JavaScript on the Server (GoogleTech Talk by @ryah) http://youtu.be/F6k8lTrAE2g I will try to play with it !" -- Pierre-Loic Doulcet. http://twitter.com/hexapode/status/19899105201 [10:06] _announcer: Twitter: "http://s3.amazonaws.com/four.livejournal/20091117/jsconf.pdf node.js 신기하구만.." -- Park Icjun(박익준). http://twitter.com/ijpark/status/19899197347 [10:10] _announcer: Twitter: "http://www.youtube.com/watch?v=F6k8lTrAE2g is a really interesting talk on node.js. explains: why javascript and other benefits." -- Dr Sina Samangooei. http://twitter.com/sinjax/status/19899366248 [10:11] _announcer: Twitter: "got briliant "shower" idea (as @migueldeicaza call it) postgresql OData server with node.js !" -- tomasz kubacki. http://twitter.com/tomaszkubacki/status/19899417136 [10:15] hellp has joined the channel [10:26] _announcer: Twitter: "YouTube - Node.js: JavaScript on the Server http://ow.ly/2iJki -> Google tech talks" -- Stuart Marsh. http://twitter.com/beardygeek/status/19900062962 [10:26] maushu: twitterstorm. [10:34] tyler_: can js set multiple vars at once? foo,bar = ["foo","bar"]? [10:36] FransWillem: tyler_: No [10:36] tyler_: dang ok thnx FransWillem [10:37] tyler_: how do you manually enter a dest into browser? [10:37] tyler_: oops wrong chan [10:37] liesen has joined the channel [10:43] hassox has joined the channel [10:47] geojeff has joined the channel [10:50] ewdafa has joined the channel [10:50] maushu: I'm in ur bot, upgrading it. [10:52] _announcer: Twitter: "Heard great stuff about node.js from @ryanmcgrath, watched long Google Tech Talk by node.js founder (thx HN) http://bit.ly/b6t97l" -- (Victor) Ben Turner. http://twitter.com/Xeus/status/19901214260 [10:53] _announcer: Twitter: "Also from HN comments: node.js ecosystem and some cool frameworks http://bit.ly/bMRLSd" -- (Victor) Ben Turner. http://twitter.com/Xeus/status/19901242825 [10:55] GarethAdams|Work has joined the channel [10:55] GarethAdams|Work: wow, this is a popular channel [10:56] omarkj has joined the channel [10:57] omarkj: Is someone writing php.js ? [10:59] FransWillem: php.js ? [10:59] omarkj: phpjs.org [10:59] stagas has joined the channel [10:59] omarkj: Just came across it. Got mixed feelings. [11:00] fermion has joined the channel [11:00] FransWillem: Meh, doesn't look too interesting [11:01] FransWillem: I would be much more interested in a PHP to JS compiler that would automatically convert blocking functions to use asynchronous functions with callbacks :p [11:02] FransWillem: like Javascript Strands :p [11:02] omarkj: Haha. That would be kind of interesting. [11:03] omarkj: Useless for me since I've never really used PHP. [11:03] FransWillem: Hmmm, speaking of which [11:03] FransWillem: has anyone ever used javascript strands in Node ? [11:07] omarkj: I haven't. I like working with callbacks the good old fashioned way. :) [11:07] omarkj: Or so I say to myself. [11:12] _announcer: Twitter: "# Ff RT: @ irr: Node.js: JavaScript http://post.ly/pRMT On The Server" [fr] -- Alantiel F. Marins. http://twitter.com/alantiel/status/19902108228 [11:12] muhqu has joined the channel [11:13] FransWillem: oh man, my RPC/IPC library is going to be awesome :p [11:15] _announcer: Twitter: "@sbtourist +1 for node.js hacking. i'm a bit late too." -- Luca Guidi. http://twitter.com/jodosha/status/19902257567 [11:16] mscdex: javascript strands?? [11:17] astrolin has joined the channel [11:18] crohr has joined the channel [11:19] FransWillem: mscdex: Google it, or google narrative javascript [11:19] mscdex: meh [11:20] FransWillem: mscdex: Basically allows you to just write synchronous JS, then a compiler will convert that to asynchronous event based JS [11:20] mscdex: javascript narrative sounds like a type of story Crockford would tell [11:20] maushu: Had that idea, thought of implementing it in coffeescript. [11:20] c4milo has joined the channel [11:21] Gruni has joined the channel [11:21] mscdex: somehow an automated tool like that doesn't seem like it would create ideal output most of the time [11:21] FransWillem: Maybe not ideal output, but something close would be nice :p [11:22] FransWillem: Although in its current form, it's far from ideal [11:22] FransWillem: Maybe if we'd introduce a new keyword [11:22] FransWillem: like async [11:22] mscdex: heh [11:23] FransWillem: that you'd prepend to a function call, indicating that it will return asynchronously, and as such anything following that should be wrapped into an event thingamajig [11:27] FransWillem: w00t, IPCNode RPC is now able to handle circular structures and marshal them correctly to the other side. Only thing left now is proper garbage collection [11:37] d0k has joined the channel [11:41] _announcer: Twitter: "google tech talk: Node.js: JavaScript on the Server http://www.youtube.com/watch?v=F6k8lTrAE2g" -- Thomas Schranz. http://twitter.com/__tosh/status/19903477610 [11:45] jelveh has joined the channel [11:46] pgriess has joined the channel [11:50] tmedema has joined the channel [11:55] zomgbie has joined the channel [11:56] sh1mmer has joined the channel [12:02] bpot has joined the channel [12:07] jetienne: q. is there way to do a "deep comparison" between 2 objects? [12:09] bvleur has joined the channel [12:11] jetienne: { cast_privhash: 'a761ce3a' } <- 2 objects are equal to that... how can i know it ? [12:12] omarkj: I don't understand your question fully. [12:15] jetienne: i got 2 objects, as in js object, both containing the same values... i would like to do a condition which test this [12:15] sveimac: jetienne: i think underscore.js has some helper functions for you [12:15] _announcer: Twitter: "@ Crashtext yes, # nodejs development system is a completely asynchronous server as # Twisted (but js)" [fr] -- Brice Carpentier. http://twitter.com/bricecarpentier/status/19905271185 [12:15] FransWillem: jetienne: There is no deep comparison function in JS, you'd have to write it yourself [12:15] jetienne: var a ={ cast_privhash: 'a761ce3a' }; var b = { cast_privhash: 'a761ce3a' }; a == b [12:15] jetienne: FransWillem: and nothing in node itself ? [12:16] omarkj: No, you have to write it yourself. [12:16] jetienne: sveimac: ok will look [12:16] sveimac: http://documentcloud.github.com/underscore/ [12:16] jetienne: and i think those kind of functions should be in node itself [12:17] phiggins: a lot fo them are [12:17] sveimac: jetienne: node.js wants to be as small as possible... for good reasons :) [12:17] phiggins: by way of v8 [12:18] jetienne: sveimac: i understand. but comparing 2 objects is not a weirdo plugin. this is core feature [12:20] sveimac: They are missing from ECMA in my oppinion, but I agree, stuff like this is usefull [12:20] sh1mmer: jetienne: you can use assert [12:20] sh1mmer: there is a deep assert [12:20] sh1mmer: which will compare object values, rather than their pointers [12:20] jetienne: http://philrathe.com/articles/equiv <- especially when it is that hard :) [12:21] jetienne: sveimac: you tried underscore with node ? does it work well [12:21] sveimac: Hepp [12:21] sh1mmer: jetienne: testing object (non-primative) equivalence is non-trivial in many languages [12:22] JustinCampbell has joined the channel [12:23] sveimac: btw, think this is what your looking for http://documentcloud.github.com/underscore/#isEqual [12:24] _announcer: Twitter: "My first proper blog post: A gentle introduction to Node.js http://mrjaba.posterous.com/a-gentle-introduction-to-nodejs" -- MrJaba. http://twitter.com/MrJaba/status/19905761505 [12:26] jetienne: sveimac: they force _ use... [12:26] jetienne: sveimac: ok will look [12:27] _announcer: Twitter: "for those of you who didn't know, I'm putting together a Node.js meetup in St.Louis August 19th... come on out! :)" -- jamescarr. http://twitter.com/jamescarr/status/19905955929 [12:30] jetienne: any nodejs in paris ? [12:31] mscdex: !tweet @codemonkeyism fyi other useful node modules here: http://wiki.github.com/ry/node/modules [12:31] shockie has joined the channel [12:35] BryanWB has joined the channel [12:36] BryanWB: anybody using geddy on heroku? [12:40] _announcer: Twitter: "@leebenjp #DevsInACabin is the day after node.js we could have our cake and eat it o." -- Amos King. http://twitter.com/Adkron/status/19906658474 [12:41] mscdex: BryanWB: running into errors? [12:41] _announcer: Twitter: "Node.js would be great for #DevsInACabin" -- Amos King. http://twitter.com/Adkron/status/19906724367 [12:42] BryanWB: mscdex, haven't tried yet, was just curious as I am perusing the geddy docs [12:42] mscdex: oh [12:42] BryanWB: wanted to know if there were any known roadblocks before I put much time into it [12:43] mscdex: i do know that heroku runs an older version of node, so that was why i was asking :p [12:44] d0k has joined the channel [12:44] FransWillem: Hmmm, ok, IPCNode can now marshall any object you throw at it, even circular objects, should I marshall the complete prototype chain too :p? [12:44] shockie has left the channel [12:45] mscdex: you should have a grand object that has the marshal function [12:46] FransWillem: ? [12:46] FransWillem: What do you mean ? [12:46] bradleyprice has joined the channel [12:46] FransWillem: What do you mean ? [12:46] felixge has joined the channel [12:47] philippbosch has joined the channel [12:48] tisba has joined the channel [12:50] dnolen_ has joined the channel [12:50] k23z has joined the channel [12:51] k23z: I need to validate some json [12:51] k23z: jsonlint is from zaach [12:51] k23z: on github [12:51] k23z: but it says that "file has been removed, instead of file.read use fs.readFile and instead of file.write use fs.writeFile" [12:51] k23z: what do I do ? [12:51] k23z: I don't have time to fix that code but need to use it [12:51] jetienne: var underscore = require('../vendor/underscore/underscore')._; underscore.noConflict(); <- this work fine :) [12:51] k23z: any other jsonlint that I can use on my machine offline ? [12:53] kriszyp has joined the channel [12:53] davidsklar has joined the channel [13:01] bradleymeck has joined the channel [13:08] bradleyprice has joined the channel [13:09] liesen: k23z: maybe sys.inspect will do it for you? [13:11] liesen: if not there are plenty of libraries on json.org [13:12] bradleymeck: mmmm? [13:12] bradleymeck: JSON.stringify is in v8 by default [13:12] _announcer: Twitter: "@ Renatoelias Extended mass Document is hell. I need to tinker a bit with node.js, give I'll see laila =)" [pt] -- Lucas Renan. http://twitter.com/LucasRenan/status/19908592113 [13:12] zapnap has joined the channel [13:13] kodisha has joined the channel [13:14] k23z: yea, please tell me one library, don't tell me "there are many libraries on X.com" [13:14] k23z: I need just one that works [13:14] chrischris has joined the channel [13:14] k23z: that's all [13:15] liesen: well... [13:16] maushu: k23z: Validate? Hmm, do you need to get some info about the validation or just a yes/no response? [13:16] jetienne: http://gist.github.com/500494 <- i got some issue with closure and var copy. how can i copy a the value of a Number variable [13:17] k23z: maushu: I need to know if it's correct or incorrect and if it's incorrect I need to know where the first error is [13:17] k23z: maushu: just like jsonlint.com does , only thing is I need it for offline use [13:17] jetienne: json.stringify will fails if it is incorect [13:18] liesen: json.parse i think you mean [13:18] maushu: You can catch it, but it doesn't say where, I think. [13:18] k23z: good [13:18] maushu: jetienne: You meant 0, 1, 2, right? [13:18] jetienne: maushu: i guess :) [13:19] jetienne: ah yeah not 0,1,3 [13:19] maushu: One sec. [13:20] jetienne: if possible, i would like to avoid the (function(idx){ mycodegoeshere })(i); [13:20] maushu: jetienne: http://gist.github.com/500494#comments [13:20] kodisha_ has joined the channel [13:20] maushu: jetienne: Hmm, not possible the way you want. [13:21] maushu: You need to create a closure. [13:21] bradleymeck: jettienne all references to i in the loop reference the memory i points to not the value i, you can do i+0 if i remember right [13:21] jetienne: maushu: grumble.. a closure to get copy a int [13:21] bradleymeck: Number(i)+0 [13:21] liesen: k23z: why not use node? write the object to a file and load it up in node-- it'll tell you if and where there are errors [13:22] maushu: bradleymeck: Weird. [13:22] bradleymeck: its not an int, its a reference, loops really need there own scope... [13:22] bradleymeck: their* [13:22] maushu: liesen: Ugly hack. :p [13:22] liesen: best idea so far :) [13:23] bradleymeck: Function(myObjSource) should also spew the error [13:23] bradleymeck: if no error, return the object [13:23] bradleymeck: well, with "return " in front of it [13:23] k23z: liesen: that would be nice [13:23] k23z: liesen: I think I should do that [13:25] _announcer: Twitter: "Getting started with Node.js on Ubuntu 9.10 in about 5 minutes http://bit.ly/crTJWZ" -- yescomputers. http://twitter.com/yescomputers/status/19909363150 [13:25] maushu: Wait, that is a bad idea. [13:25] maushu: What if the user injects javascript code into the json? [13:26] bradleymeck: Function doesnt have access to outer scope like eval [13:27] bradleymeck: its like Ghetto sandboxing [13:27] jherdman has joined the channel [13:27] bradleymeck: oh, to the file loading, that could be an issue [13:27] mtodd has joined the channel [13:28] mtodd has joined the channel [13:29] dylang has joined the channel [13:30] caolanm: does anyone know a reliable cross-browser way to send multiple cookies in a single Set-Cookie header or how to send multiple Set-Cookie headers in node? [13:31] caolanm: I though just seperating the cookie string with a semicolon would work, but seemingly not [13:31] bradleymeck: coalanm, look into my node-cookiejar [13:31] _announcer: Twitter: "BeerJS meetup was fun. Got an intro to node.js. Hurts my head to think about it off the client. SMART people there. #beerjs #nodejs" -- Chris Dillon. http://twitter.com/milkfilk/status/19909703219 [13:31] caolanm: bradleymeck: as far as I could tell it just joined the cookie strings with a semicolon? [13:31] ceej has joined the channel [13:32] pgriess: caolanm: pass an array rather than an object for header values in writeHead() [13:32] bradleymeck: it has worked on all the browsers i have [13:32] pgriess: caolanm: http://github.com/ry/node/blob/master/lib/http.js#L362 [13:32] caolanm: pgriess: right! thanks :) [13:32] _announcer: Twitter: "Funny enough, google has a tech talk up about node.js right after the beerjs meetup ..." -- Chris Dillon. http://twitter.com/milkfilk/status/19909788432 [13:34] bradleymeck: just as a note, what browser was failing? [13:35] caolanm: bradleymeck: I was actually joining them using '; ' not ';', and it appeared to break in FF [13:36] wattz: good morning [13:36] bradleymeck: ff prolly is using strict rules so ' ' prepended the cookiename? [13:37] _announcer: Twitter: "node.js en youtube http://www.youtube.com/watch?v=F6k8lTrAE2g" -- Andrés Peñailillo. http://twitter.com/BalroG/status/19910072988 [13:37] daniellindsley has joined the channel [13:38] _announcer: Twitter: "@aremes i know. but in my case it's fortunately node.js" -- Siegmund Führinger. http://twitter.com/0xx0/status/19910112724 [13:49] caolanm: pgriess: node is now returning the Set-Cookie header with the cookies joined using ',' [13:49] caolanm: not seting multiple Set-Cookie headers [13:49] caolanm: *sending [13:50] steadicat has joined the channel [13:50] caolanm: looks like .toString is being called on the array or something [13:51] davidwalsh has joined the channel [13:54] BryanWB: how can i load a script containing jsfrom w/in the node-repl? [13:55] bradleymeck: require [13:55] shreekavi has left the channel [13:55] BryanWB: bradleymeck, tks, so dumb of me not to think of it [13:56] bradleymeck: we all forget things, i keep to much on my plate to remember half the stuff i should [13:57] jetienne: q. anybody knows about a compatibility layer between nodejs and a web browser ? [13:58] bradleymeck: on which side [13:58] bradleymeck: jsdom for nodejs, gemini has some for browser [13:58] bradleymeck: they arent 100% [13:58] jetienne: bradleymeck: not sure... what i want is to share code between the 2 [13:58] romainhuet has joined the channel [13:58] matt_c has joined the channel [13:59] jetienne: like exports.BLABLAB in a browser, or require('') [13:59] jetienne: bradleymeck: ok will look [13:59] caolanm: http://github.com/marak/gemini.js [13:59] bradleymeck: cant share functions :/ [13:59] charlenopires has joined the channel [13:59] bradleymeck: there is dnode though [13:59] caolanm: jetienne: I usually extract all the code that is shared into a seperate module [14:00] caolanm: and use: http://caolanmcmahon.com/writing_for_node_and_the_browser.html [14:00] feroz_ has joined the channel [14:00] caolanm: simple [14:00] feroz_: Hello [14:00] pengwynn has joined the channel [14:00] bradleymeck: if all you need is remote invocation, dnode is really simple [14:00] bradleymeck: hey froz_ [14:00] bradleymeck: feroz_* [14:01] feroz_: How do i override the http defaults so that the connection is not set to keep-alive and chunked ? [14:01] jetienne: caolanm: seem nice [14:01] mscdex: someone is writing another RPC thing for node too [14:01] mscdex: i forget their name [14:02] mscdex: feroz_: set them in writeHead [14:02] bradleymeck: http://github.com/substack/dnode [14:02] mscdex: FransWillem: is your ipc node module on github? [14:03] bradleymeck: idk if he wants ipc, dnode has rpc though [14:03] Nathan__ has joined the channel [14:03] mscdex: well, he said it's rpc ? [14:03] jetienne: feroz_: for chunk i got something 'Transfer-Encoding' : 'identity' // to force a non-chunked response [14:03] mscdex: i dunno, he used both terms to describe it heh [14:03] jetienne: http://github.com/jeromeetienne/node-chargen/blob/master/node-chargen.js#L40 <- feroz_ [14:04] feroz_: Thanks ! [14:04] pkrumins: RY's talk at Google (yesterday): http://www.youtube.com/watch?v=F6k8lTrAE2g [14:05] mscdex: pkrumins: it's been all over the twitterverse ;p [14:05] bradleymeck: i did think it funny that java's sync io is a lot faster than async, but thats because of their libs [14:06] jpld has joined the channel [14:07] jelveh has joined the channel [14:07] mscdex: heh trolls on the youtube video page [14:07] bradleymeck: trolls4life!, then again this is the "war room" [14:09] bradleyprice has joined the channel [14:09] damienkatz has joined the channel [14:09] damienkatz has joined the channel [14:09] mscdex: i thought it was the situation room? [14:09] liesen: don't fight... [14:10] caolanm: riiight... to send multiple Set-Cookie headers I have to do: writeHead(200, [['Set-Cookie','key1=val1'],['Set-Cookie','key2=val2']]); [14:10] bradleymeck: jim !tweets too much for it to be just a situation [14:10] FransWillem: mscdex: Yes, but it's a rather old version, new one I'm about to push later today will be much much better :p [14:10] caolanm: that isn't nice when you're writing a middleware and people are probably sending headers as objects [14:10] caolanm: :( [14:11] FransWillem: mscdex: And I still have to sort out a web-browser-client version (e.g. make sure I'm not longer using stuff like Array.forEach) [14:11] bradleymeck: caolanm, i would prehook the writeHead then and eat the cookies off a different property [14:11] mscdex: franksalim: underscore.js has implementations for that stuff if the browser doesn't [14:12] caolanm: bradleymeck: right, but either way I'm going to have to support people sending headers like that :( [14:12] caolanm: unless I introduce a new api especially for cookies [14:13] caolanm: which I'd rather not do [14:13] bradleymeck: if you pre hook, convert to array, it shouldnt be an issue i would think [14:13] _announcer: Twitter: "Building a JS Game Engine http://j.mp/9XaMgt by @pbakaus Very inspiring JS/HTML5/CSS work. Javascript rocks! Can't wait to play with node.js" -- n0nick. http://twitter.com/n0nick/status/19912366181 [14:13] caolanm: bradleymeck: sounds like that might be the only way [14:13] caolanm: what a pain :( [14:14] Gruni has joined the channel [14:14] xla has joined the channel [14:16] ctp has joined the channel [14:16] gf3 has joined the channel [14:17] mscdex: oops, tab complete fail... that was for FransWillem [14:17] bradleymeck: thats pretty easy, just var oldWriteHead = http.Response.prototype.writeHead; http.Response.prototype.writeHead = function(m,headers) {if(!Array.isArray(headers)) {convert headers to array};append the cookies w/ array style here;oldWriteHead.call(this,m,headers)}? [14:18] FransWillem: mscdex: Yeah, but I want to write it in a way that will work without loading any extra scripts, e.g. the script will find out what method to use by itself :) [14:19] _announcer: Twitter: "On the way to hackerspace node.js programming in case someone fell Guasto" [es] -- Loki Zavala. http://twitter.com/Siedrix/status/19912744145 [14:22] _announcer: Twitter: "Building a less.js proxy with node. Fragile business." -- Malte Ubl. http://twitter.com/cramforce/status/19912911597 [14:23] dshaw has joined the channel [14:24] bleeber: testing wargamez [14:25] softdrink has joined the channel [14:26] mape: bleeber: peww [14:27] gf3: ryah: ya hurr? [14:27] bleeber: mape: I can't sstop showing people the wargamez page. [14:27] mape: hehe [14:27] bleeber: I love it. [14:27] mape: well if you have ideas on how to make it better fork and do a pull req :) [14:27] feroz_ has left the channel [14:29] aheckmann has joined the channel [14:29] caolanm: github fork queue is great... just great [14:29] caolanm: :D [14:30] coobr has joined the channel [14:30] gf3: NO U [14:33] charlenopires has joined the channel [14:33] maushu: ACTION readies his best Farnsworth's voice. [14:33] maushu: Good news, everyone! [14:34] bradleymeck: announcer had a baby? [14:34] maushu: It seems I might have oopsie dasie the node.js update and announcer might explode at any moment. [14:34] mape: huh? [14:35] maushu: But not to worry! I linked announcer to an generic doomsday device! So if it fails that it will be the last of our worries. [14:36] bradleymeck: hehe [14:41] gf3: Hey ryah, I'd love an updated V8 if you have time, as `Function#bind` is currently broken in node, and throws errors (need this commit: http://github.com/v8/v8/commit/782dbd89e250a9f6a6334c7675aec8e296e85e40 ) [14:41] sudoer has joined the channel [14:41] ajpiano has joined the channel [14:43] dshaw: gf3: V8 is a Google project. [14:43] ctp_ has joined the channel [14:43] gf3: dshaw: is it? [14:43] maushu: Seriously?! [14:44] maushu: ryah: You lied! [14:44] dshaw: http://groups.google.com/group/v8-users [14:44] gf3: /sigh [14:44] dshaw: sry [14:44] paul_irish has joined the channel [14:45] maushu: dshaw: We know that. What gf3 means is that he wants ryah to update the v8 that is being used by node.js [14:45] FransWillem: gf3: Can't you just pull in the V8 repository directly before you compile ? [14:45] dshaw: ah sorry [14:46] maushu: FransWillem: Everyone would have to do that! And we are lazy bunch. [14:46] gf3: FransWillem: I could, however several other people use one of my libs which uses Function#bind liberally [14:47] maushu: Remind me what bind does again? [14:47] _announcer: Twitter: "Write portable JavaScript between browser and #nodejs courtesy of @caolan http://bit.ly/asa1SG" -- Peter Griess. http://twitter.com/pgriess/status/19914634765 [14:47] FransWillem: :S [14:47] FransWillem: Is bind even in V8? http://wiki.github.com/ry/node/ecma-5mozilla-features-implemented-in-v8 [14:47] guybrush: gf3, u could push your own node-bin into tj's ndistro or ivy and ship it with that :p (just kidding) [14:48] BryanWB has joined the channel [14:48] ctp has joined the channel [14:48] daniellindsley has joined the channel [14:48] gf3: FransWillem: as of a few days ago, yes [14:48] FransWillem: gf3: The commit you mentioned is in no way related to bind, btw :/ [14:48] gf3: FransWillem: yes, it is [14:48] gf3: FransWillem: http://github.com/v8/v8/commit/fcfec20146c12d454347a6e0d50727a0477d57f2 [14:48] FransWillem: gf3: Only removes some random global variable :/ http://github.com/v8/v8/commit/782dbd89e250a9f6a6334c7675aec8e296e85e40 [14:49] FransWillem: ah wait [14:49] gf3: FransWillem: which is in the middle of... you guess it, bind [14:49] maushu: Bind! [14:49] FransWillem: So currently it's not literally broken, but it outputs a shitload of useless data ? [14:49] maushu: No, print doesn't exist in that context. [14:50] gf3: FransWillem: no, it throws an error [14:50] maushu: Node.js, that is. [14:50] FransWillem: Ah, ok :p [14:50] jesusabdullah: Yeah, so you get an error like, "use require('sys')!" [14:50] maushu: It's a buckload of fun. [14:50] jesusabdullah: Even if it's been requirst already [14:51] FransWillem: Hmm, how about you try calling bind at the start of your script, catch any errors, and if you caught any, replace Function.bind with a custom implementation ? [14:51] gf3: FransWillem: http://img.gf3.ca/cb3d27efeccad22f8ae9c5f341415dd9.png [14:51] gf3: FransWillem: that's (almost) what I was doing previously, but this "issue" is trivial to fix [14:52] _announcer: Twitter: "uupaa.js I'm prepared to support in debugging features in default. If unit tests uu.ok () can compare and match ambiguous and deep. PHP's print_r uu.puff and uu.log substantial objects in visual contact with even (CSS also displayed in the query path and Node view or function names)" [ja] -- uupaa. http://twitter.com/uupaa/status/19915037812 [14:52] BryanWB: is sys.inspect broken on v0.1.102 ? [14:52] FransWillem: Yeah, I don't disagree with you on that it should be fixed, just that it's probably better to just work around it for now :) [14:53] amerine has joined the channel [14:53] ThePub has joined the channel [14:55] pydroid has joined the channel [14:56] _announcer: Twitter: "Node.js Google Tech Talk http://www.youtube.com/watch?v=F6k8lTrAE2g. A little slow at first, but well worth your time." -- james_herdman. http://twitter.com/james_herdman/status/19915356383 [14:56] devongovett has joined the channel [14:57] quirkey has joined the channel [14:57] jesusabdullah: BryanWB: sys.inspect works fine [14:57] _announcer: Twitter: "@MrJaba I think kiwi has been discontinued in favor of npm for node.js packaging." -- Mathias Meyer. http://twitter.com/roidrage/status/19915395802 [14:58] BryanWB: jesusabdullah, hmm, strange then [15:00] damienkatz has joined the channel [15:00] feroz_ has joined the channel [15:01] stepheneb has joined the channel [15:02] jesusabdullah: BryanWB: What do you mean? [15:02] maushu: BryanWB: Nothing shows up? [15:03] BryanWB: jesusabdullah, maushu: in my particular script, nothing shows up, but maybe something else weird is happening [15:04] steadicat has joined the channel [15:04] maushu: BryanWB: Have you tried to actually print the results? Like sys.puts(sys.inspects(obj)); [15:05] BryanWB: maushu, ah that was the problem, i was typing sys.inspects w/out sys.puts [15:05] BryanWB: i assumed it would output to the console, tks [15:06] dmcquay has joined the channel [15:07] BryanWB: assume that since sys.inspect outputs to console in node-repl the same would be true when running as a script [15:08] jesusabdullah: Hah! [15:08] jesusabdullah: Nice [15:11] jetienne: console.dir() works btw [15:11] jetienne: and console.assert() :) [15:12] _announcer: Twitter: "fab.js, coffeescript, jquery, p2p couchdb, node.js, riak, couchapp, fab.js, p2p couchdb, aleph, p2p couchdb ... that's what my brain wants!" -- grantmichaels. http://twitter.com/grantmichaels/status/19916558081 [15:13] matt_c has joined the channel [15:13] feroz_: Is there a way to get the current time besides using exec ? [15:14] FransWillem: feroz_: The Date object [15:14] jetienne: node> Date.now() [15:14] jetienne: 1280502857007 [15:16] mape: js> Date.now() [15:16] gbot2: mape: 1280502978271 [15:17] _announcer: Twitter: "Box2D + Node.js. .. UHM ... http://github.com/jadell/box2dnode" [mt] -- Mr.doob. http://twitter.com/mrdoob/status/19916891904 [15:18] feroz_: Thanks [15:18] mape: js> console.log('hmmm') [15:18] gbot2: mape: Error: ReferenceError: console is not defined [15:18] mape: js> sys.log('hmmm') [15:18] ropiku has joined the channel [15:18] gbot2: mape: Error: ReferenceError: sys is not defined [15:19] jetienne: mape: which js engine do you use ? [15:19] mape: jetienne: not mine [15:20] jetienne: i bet this is a rhyno [15:20] figital has joined the channel [15:21] _announcer: Twitter: "Joyent’s Ryan Dahl - @ryah – gives a Google TechTalk this week: “Node.js: JavaScript on the Server” Very controversial? http://bit.ly/a6jwcI" -- Joyent. http://twitter.com/joyent/status/19917196166 [15:21] figital has joined the channel [15:21] bradleymeck has joined the channel [15:22] mw_ has joined the channel [15:22] _announcer: Twitter: "Node.js: JavaScript on the Server [video]: mental note: watch this video http://bit.ly/d3cAcJ" -- goodlinks. http://twitter.com/goodlinks/status/19917300933 [15:23] _announcer: Twitter: "Great watch if you are interested in node.js: http://www.youtube.com/watch?v=F6k8lTrAE2g" -- Ben Mills. http://twitter.com/benemills/status/19917365146 [15:23] _announcer: Twitter: "MySQL and NodeJS, not so much. I'll take that as a statement." -- Mark Wubben. http://twitter.com/novemberborn/status/19917373938 [15:27] mw_ has joined the channel [15:28] zaach has joined the channel [15:29] jakehow has joined the channel [15:30] _announcer: Twitter: "Google Talk: Node.js: JavaScript on the Server http://bit.ly/9W191t" -- Ralph Whitbeck. http://twitter.com/RedWolves/status/19917872919 [15:30] tisba_ has joined the channel [15:33] c4milo has joined the channel [15:35] nuxusr2 has joined the channel [15:40] vanecgs has joined the channel [15:42] scoates: when intercepting a repl's stream's "data" event, when I output, I'd like the cursor's horizontal position to reset. Is this possible? output is after "htt": http://paste.roguecoders.com/p/4fea2c940aae53e2afb9d95aac9a7347.txt [15:42] vanecgs: Hi, I'm new with node.js, I'm trying to build a chat app using node_chat. I already make it work but I was wondering if could create some kind of private chat rooms [15:43] vanecgs: can this be done with node.js? [15:44] scoates: ah. I can use \r [15:44] stride: vanecgs: I don't know node_chat but the generally answer would be yes [15:45] vanecgs: stride: ok, how could I accomplish this? [15:46] stride: by introducing a channel parameter to all of the commands that node_chat uses [15:47] technoweenie has joined the channel [15:47] Yuffster has joined the channel [15:47] FransWillem: vanecgs: Check out the IRCd example in ry's github, it's not web-based, but does contain information on channels [15:48] technoweenie: hey is the node version string being updated in each version? [15:48] vanecgs: FransWillem: ok, I'll give it a look [15:48] technoweenie: wait i bet make install is putting it somewhere weird [15:48] bradleymeck: technoweenie git pull --tags [15:48] siedrix has joined the channel [15:48] bradleymeck: then install [15:48] ryan_gahl has joined the channel [15:49] siedrix: Hi, im trying to read the POST of a HTTPrequest to a httpServer... but i dont know how... [15:50] technoweenie: yea i'm on the right tag [15:50] vanecgs: so, this can be done using channels, in theory how would you manage the individual chat rooms?? node_chat uses the channel param (or at least I can se a channel object), but how does one create different channels? [15:50] _announcer: Twitter: "this afternoon's mix of technologies: jquery, node.js, java, c++, iokit, arm assembler." -- wesen. http://twitter.com/wesen/status/19919381535 [15:50] vanecgs: by creating as many channels as chat-rooms??? [15:51] bradleymeck: siedrix, either manually or through something like node-formidable [15:52] _announcer: Twitter: "[The] [from mrphoebs] YouTube - Node.js: JavaScript on the Server: http://url4.eu/6bAQ8" [it] -- sldfjd ldajds. http://twitter.com/sldfjd/status/19919510720 [15:52] technoweenie: weird, i just had to do a make clean first [15:52] siedrix: how would be the manual way? [15:55] bradleymeck: siedrix, splitting the string on & then subsplitting on = [15:55] _announcer: Twitter: "Bzgl # NodeJS I feel like a child who wants to write a bestseller and notes that it still can not write." [de] -- Falco. http://twitter.com/ulmerleben/status/19919781984 [15:56] damienkatz has joined the channel [15:56] bpot has joined the channel [15:56] Clooth has joined the channel [15:56] bradleymeck: once you have the body buffered fully, "var post_vars={};if(body.length) body.split("&").forEach(function(item){var parts=item.split("=");if(parts.length==1}{post_vars[item]=item}else{var v=parts.pop();parts.forEach(function(k){post_vars[k]=v})})})" ... sorry for textwall [15:56] technoweenie: hey has anyone gotten the zeromq bindings to work [15:57] technoweenie: http://github.com/JustinTulloss/zeromq.node/issues/issue/2 [15:57] bradleymeck: mmmm [15:58] technoweenie: that looks like an error in the bindings themselves.. c++ is greek to me [15:59] bradleymeck: no its an error in zeromq, hes casting it wrong [15:59] paul_irish has joined the channel [15:59] brez- has joined the channel [15:59] elliottkember has joined the channel [15:59] technoweenie: i wonder if i'm on a weird version of zeromq then [16:00] technoweenie: latest on the website. ok thanks :) [16:00] bradleymeck: give me a min i dont know 0mq so im looking up the data type [16:02] _announcer: Twitter: "Drinking the Node.js Kool-Aid « Paul's Journal: http://bit.ly/9pDwFs" -- Hernan Garcia. http://twitter.com/theprogrammer/status/19920286827 [16:02] sh1mmer has joined the channel [16:04] _announcer: Twitter: "Google tech talk on Node.js by Ryan Dahl .. http://www.youtube.com/watch?v=F6k8lTrAE2g" -- Debasish Ghosh. http://twitter.com/debasishg/status/19920425022 [16:06] charlenopires has joined the channel [16:06] technoweenie: bradleymeck: ha thats nice of you, i just left the issue for the author :) [16:06] kriszyp_ has joined the channel [16:07] omarkj: Ooo, tech talk! [16:07] _announcer: Twitter: "Real-time pixel silliness, with Node.js + HTML5 WebSockets and Canvas. http://portfoli.no/canvy/" -- Einar Otto Stangvik. http://twitter.com/einaros/status/19920663152 [16:07] bradleymeck: ive been deep in c++ lately, trying to get the yield keyword emulated w/ a func [16:08] siedrix: thx [16:10] MrNibbles: jherdman: fellow HN reader, for some reason felt compelled to tell you i read your comment... [16:10] jherdman: haha hello MrNibbles! [16:11] brianmario has joined the channel [16:11] _announcer: Twitter: "Also the more I use Javascript the more it grows on me. Had a great idea for a project that Node.js would be perfect for." -- Jason S.. http://twitter.com/peregrine/status/19920964188 [16:12] _announcer: Twitter: "CONST is scoped locally and is safe to use in #nodejs" -- Aaron Heckmann. http://twitter.com/aaronheckmann/status/19920998616 [16:12] bradleymeck: noooo, it burns, const burns me! [16:12] podman has joined the channel [16:12] podman: morning [16:13] brez- has left the channel [16:13] bradleymeck: mornin [16:13] _announcer: Twitter: "Once again I wanna start blogging.. this time I'll succeed! Before that, I have to write the blog. Here comes Node.js and Express!" -- Rodrigo Alves Vieira. http://twitter.com/rodrigo3n/status/19921118706 [16:13] podman: just launching my new start-up today [16:14] podman: with some node.js in there [16:14] mape: What is it/does it do? :) [16:14] MrNibbles: who cares it has node.js!!! [16:14] MrNibbles: :D [16:14] podman: http://www.sproutvideo.com [16:14] technoweenie: hilarious blogger guy [16:14] virtuo has joined the channel [16:15] stride: Once again I wanna start driving.. this time I'll success! Before that, I have to assemble the car. Here comes Node.js and node-carbuilder! [16:15] MrNibbles: podman: looks great! [16:15] stride: s/success/succeed/ [16:16] podman: MrNibbles, thanks [16:16] podman: built it all in three weeks [16:16] podman: as a side project [16:16] mape: podman: what is all the flash used for? [16:16] MrNibbles: my only point would be, have an example somewhere that people can see some delicious HD video [16:16] mape: oh, text [16:16] podman: mape, sifr, font relacement [16:16] podman: not my idea [16:16] podman: MrNibbles, yeah, we'll have an intro video at some point [16:16] podman: this is really just a temporary site [16:16] mape: it looks so so when using flash block (I would probly leave the page straight a way) [16:16] tjholowaychuk has joined the channel [16:17] podman: we built this to take over the users from the company i used to work for [16:17] podman: so we had to do it as fast as possible [16:17] mape: podman: And perhaps a video service should have a video on the front page? :) [16:17] podman: my partner found a template and we went with it... i didn't have time to really nitpick [16:17] podman: mape, yeah, MrNibbles mentioned that too [16:18] MrNibbles: podman: what are you using node for? the actual video streams? [16:18] MrNibbles: uploads? [16:18] mape: oh yeah, playing sc2 so missed it [16:18] mape: podman: checked transload.it? [16:18] podman: MrNibbles, serving metadata and recording analytics data [16:18] podman: mape, nope.. what is it? [16:18] claudiu__ has joined the channel [16:18] podman: i do plan on using node for uploads in the future though [16:18] mape: felixges startup, all in node [16:18] mape: or well pretty much [16:19] bradleymeck: technoweenie, would take me like an hr to fix so your outta luck sowie [16:19] technoweenie: bradleymeck: no worries, i was just looking for someone that ran the same commands as me and got different results :) [16:19] technoweenie: thanks for the verification that its not my setup tho [16:19] podman: mape, transloadit looks neat [16:20] MrNibbles: podman: i think you should make a bigger deal of the HTML5 -> degrades to flash feature [16:20] MrNibbles: its the last in the features list [16:20] podman: MrNibbles, yeah. like i said, it was a rush job [16:20] podman: needed to get it out asap [16:20] MrNibbles: ahh :) [16:20] MrNibbles: also whack in that it works on iPhone/iPad [16:20] MrNibbles: etc [16:20] podman: the service that we're transitioning people from shuts down on the 10th [16:20] MrNibbles: you need some selling points [16:21] podman: we plan on doing a redesign + tons of multivariate testing when we've got time [16:21] sh1mmer: anyone have thoughts or preferences of databases to use with node [16:21] silentrob has joined the channel [16:21] sh1mmer: couch, reddis, tokyo cabinet? [16:21] podman: sh1mmer, i've been using mongodb [16:22] sh1mmer: podman: how's that? [16:22] podman: pretty good [16:22] podman: no complaints so far [16:22] podman: i tested couch a while ago and it was pretty horrible [16:22] carlocci has joined the channel [16:22] podman: maybe it's better now [16:22] sh1mmer: podman: how long ago? [16:22] MrNibbles: back to work now, podman: good luck, looking forward to seeing how it develops [16:22] sh1mmer: and was that couch itself or the node support? [16:22] podman: but it crippled under load and couldn't replicate well [16:22] mjr_ has joined the channel [16:23] podman: sh1mmer, couch itself [16:23] podman: this was a few months ago [16:23] podman: maybe in january? [16:23] sh1mmer: hm [16:23] sh1mmer: they have a point release, but I dunno [16:23] caolanm: mongodb scares the heck outta me [16:23] sh1mmer: I was also looking at Kyoto cabinet which is Tokyo Cabinet v2 [16:24] sh1mmer: apparently that's pretty awesome in terms of perf/scaling [16:24] TrisMcC: I've done some redis with node. [16:24] TrisMcC: I like it [16:24] sh1mmer: hm ok [16:24] TrisMcC: the bindings by factorial are pretty easy to use [16:25] siculars has joined the channel [16:25] TrisMcC: barebones, but good [16:25] podman: what scares you about mongodb? [16:25] caolanm: podman: mikeal has a nice post about mongo: http://www.mikealrogers.com/2010/07/mongodb-performance-durability/ [16:26] TrisMcC: mongodb has data integrity problems, they tell you that you need at least 2 instances [16:26] caolanm: ^ yah [16:26] sh1mmer: that's scary [16:26] podman: oh, the other thing about couch is that it grow like crazy if you do a lot of updates [16:26] caolanm: there are probably a few situations where thats no so important, like analytics [16:26] podman: and compaction more or less kills things [16:26] caolanm: but usually I'm a bit concerned about using mongo [16:27] podman: oh [16:27] podman: eventual consistency? [16:27] podman: is that what you guys are talking about? [16:28] podman: or are you saying that mongodb isn't even eventually consisten? [16:28] b_erb has joined the channel [16:28] caolanm: its not eventual consistency, because that's the same for couch [16:28] sh1mmer: have people played with HBase or Cassandra? [16:28] nefD: speaking of databases and node, anyone know what the state of mysql modules is? i have some apps that i'd like to extend with node, but it wouldn't really be practical for me to migrate from mysql to some other database system [16:29] podman: caolanm, well, i think the way i'm using mongodb is actually fine [16:29] caolanm: podman: after a write to mongo, you don't actually know if its available to read [16:29] podman: the data that needs to be there is actually in mysql + mongodb [16:29] caolanm: ah ok [16:29] caolanm: that's probably ok then [16:29] podman: and the data that doesn't (analytics) just goes to mongo [16:29] caolanm: just don't be doing financial transactions in mongo or anything ;) [16:29] kriszyp: nefD: I've been using a mysql module succesfully [16:29] podman: haha, nope [16:30] nefD: kriszyp: Hmm, good results, I presume? is it async? [16:30] isaacs has joined the channel [16:30] sh1mmer: nefD: there are 3 mySql modules listed http://wiki.github.com/ry/node/modules I don't know if any of them is good [16:30] kriszyp: I've been using http://github.com/Sannis/node-mysql-libmysqlclient/ and I don't think it is truly async (even though it uses callbacks) [16:31] nefD: sh1mmer: I've used a few of them at different points in the past couple months, but I haven't used any of them recently.. I was using the DBSlayer wrapper, but with dbslayer not being updated in so long, i don't see that as a dependable route [16:31] podman: "Now we call memcached a database".... i don't really agree with that... nor do i know anyone who calls it a DB [16:32] sh1mmer: podman: yeah I was looking at http://nosql-databases.org/ and it's a thin line [16:32] nefD: heh, yeah, calling memcached a database seems a bit off [16:32] stride: nefD: I've used a fork of the original dbslayer thing in node 0.1.99 that worked quite well [16:33] nefD: stride: Huh! Didn't know dbslayer had been forked.. is it still being maintained? [16:33] stride: uh, I meant node-dbslayer, sorry [16:33] nefD: ahh [16:33] sh1mmer: podman: maybe they are talking about memcachedb, which is a memcache api for berkley [16:35] _announcer: Twitter: "Node.js: JavaScript on the Server [video]: Jeremy Zawodny : Node.js: JavaScript on the Server [video] - Node... http://bit.ly/cR18JL" -- Paolo Patronimic. http://twitter.com/salve/status/19922670962 [16:35] sh1mmer: Hm. Actually I'm tempted to give Riak a whirl [16:35] sh1mmer: those guys released a node driver last week [16:36] mjr_: I've played with riak a bit [16:36] technoweenie: they did? [16:36] technoweenie: are you talking about riak-js? [16:36] sh1mmer: yeah [16:36] mjr_: It's really short on documentation about what's really happening though, which makes it hard to tell what it'll be good for. [16:36] technoweenie: ah, thats not by basho [16:37] technoweenie: they're really good about aggregating all the riak stuff and posting about it though [16:37] sh1mmer: technoweenie: right, I should have said 'someone released...' :) [16:37] sh1mmer: technoweenie: I go drinking with people and things get blurry [16:37] sh1mmer: especially when leroux is around [16:37] technoweenie: sh1mmer: no worries, i just thought "they" really did :) [16:37] jakehow has joined the channel [16:38] technoweenie: i've been talking to frank06 about it, ill be killing nori and hacking on pbc support for riak-js [16:38] technoweenie: (nori is my own node.js riak lib) [16:38] sh1mmer: sweet [16:38] sh1mmer: I jsut saw your name on the list of contributors [16:38] technoweenie: riak is interesting -- but i've never used it in production [16:39] technoweenie: i'm thinking about it. once i get a pbc client out i wanna start doing some benches for an internal project [16:39] eazyigz has joined the channel [16:39] technoweenie: as far as key value stores it has some neat features: parallel map/reduce, link walking (keys can point to other keys), pre/post commit hooks [16:40] eazyigz: is it possible to make soap requets with node? [16:40] pydroid has joined the channel [16:40] technoweenie: eazyigz: soap is just http, so yes. does anyone want to write a full soap wrapper? probably not :) [16:40] sh1mmer: eazyigz: I wrote a soap library in javascript a while back [16:40] mjr_: technoweenie: does it have a way to store the results of map/reduce queries for fast re-use like couchdb's views? [16:41] sh1mmer: eazyigz: it would need some porting, but I'm happy to point you at the code [16:41] technoweenie: mjr_: no, that'd be up to you i guess [16:41] eazyigz: in python I can create a client obj, and invoke the endpoint [16:41] sh1mmer: eazyigz: it was built for YQL so you'd need to rewrite the HTTP request calls and swap out all the e4x [16:41] technoweenie: another neat idea w/ riak is it has multiple backends. one of them is innostore (the same thing mysql innodb uses) [16:41] eazyigz: essentially this will be the live stream [16:41] eazyigz: that I eant to push to the client with nodejs [16:42] eazyigz: sh1mmer: I'm intrigued, lead the way [16:43] sh1mmer: eazyigz: http://github.com/yql/yql-tables-scripts/raw/master/soap.js [16:43] sh1mmer: there is a link to the original author, you might find the preforked version easier to use [16:43] sh1mmer: I can't remember if I retained the original version in this repo [16:43] sh1mmer: you might try checking the commit history [16:44] paul_irish has joined the channel [16:44] sh1mmer: eazyigz: but seriously, fuck soap. [16:44] _announcer: Twitter: "My first experiment with Node.js http://bit.ly/dyEjYz A Multi Rooms Chat #node #socketio" -- Olivier BONNAURE. http://twitter.com/olivierb/status/19923289908 [16:44] rauchg_ has joined the channel [16:44] khug has joined the channel [16:44] eazyigz: sh1mmer: I must confess, I am not an expert in javascript by any means [16:44] eazyigz: and looking at your github code, it boggles my mind [16:45] sh1mmer: eazyigz: there aren't any very complete SOAP libraries in JavaScript [16:45] sh1mmer: that was the most complete one I could find [16:45] eazyigz: and now I'm wondering- is node.js meant for people who know javascript well? [16:45] sh1mmer: and I tarted it up a bit [16:45] sh1mmer: eazyigz: well, I guess, since everything is in JavaScript [16:46] eazyigz: and for the rest of us, like django python coders, should we stick to what we know [16:46] technoweenie: or learn js [16:46] eazyigz: like with twisted server or something [16:46] podman: anyone write node with coffeejs? [16:46] technoweenie: podman: yup [16:46] sh1mmer: eazyigz: JavaScript is a nice little language once you get the hang of it, it's not super hard especially if you done a little lisp or something like that [16:46] sh1mmer: podman: I've toyed, but I'm not a fan. [16:46] technoweenie: podman: #coffeescript, jashkenas is really helpful [16:46] podman: i wonder what that looks like [16:46] pquerna: or even coming from a twisted-python background [16:46] eazyigz: I've never done lisp [16:47] sh1mmer: podman: I want to be, but I just don't feel like I need the abstraction. [16:47] d3x7r0 has joined the channel [16:47] eazyigz: sh1mmer: I have background in java and python [16:47] nefD: real mean code in cobol! [16:47] technoweenie: podman: http://github.com/technoweenie/node-chain-gang [16:47] tjholowaychuk_ has joined the channel [16:47] sh1mmer: eazyigz: you can write JavaScript like a Cish language, but it's written best functionally. [16:47] gJ|Alex has joined the channel [16:47] eazyigz: sh1mmer: it seems so much more verbose than a high level language like python or java [16:47] gJ|Alex has joined the channel [16:47] saikat has joined the channel [16:48] technoweenie: eazyigz: js is verbose, and node is low level. [16:48] podman: looks a lot cleaner, but i'm not used to the syntax [16:48] eazyigz: just seems like id have to write a million lines of spaghetti code in js, whereas I would have to write like a 100 in python or java [16:48] sh1mmer: booya, I love npm [16:49] technoweenie: you can write a million lines of spaghetti code in anything [16:49] eazyigz: I apologize, I digress [16:49] sh1mmer: isaacs is my hero. [16:49] technoweenie: but with node, you're 50% cooler [16:49] isaacs: sh1mmer: npm loves you, too [16:49] eazyigz: my main objective is to push real time data to the client [16:49] eazyigz: this will be only 1 client machine [16:49] pquerna: eazyigz: well, i've come from the twisted python world, I don't think its any more verbose as long as you structure it like you would good Python -- tight modules [16:49] eazyigz: invoking http request from jquery [16:49] sh1mmer: isaacs: although you should implement npm --help [16:50] sh1mmer: because that's nice and unixy [16:50] isaacs: eazyigz: if you have to write a MLOC to do something you can do in 100 LOC in java, then something is wrong [16:50] jetienne: eazyigz: you can do that in java too [16:50] isaacs: sh1mmer: good idea. i can haz issue? [16:50] sh1mmer: sure [16:50] isaacs: sh1mmer: should just mimic "npm help" [16:50] eazyigz: so node.js seems like a good solution for pushing real time data [16:50] sh1mmer: oh sweet [16:50] sh1mmer: that's kinda random [16:50] technoweenie: eazyigz: if you want to use node, dont think about using soap [16:50] sh1mmer: `man npm` doesn't work but `npm help` does [16:51] sh1mmer: ACTION shrugs [16:51] eazyigz: but what if need to get the data from a soap call?? [16:51] pydroid: got a question - i wanted to try jerk out but i'm getting object has not bind method. anyone know if it's because...? [16:51] isaacs: sh1mmer: yeah, meh. getting manpages right is hard. [16:51] isaacs: sh1mmer: lot fo system-specific garbage. [16:51] sh1mmer: isaacs: also preferably npm --help would be online help not man pages [16:51] MrNibbles: http://www.pouet.net/prod.php?which=3290 <--- music by?? [16:51] sh1mmer: isaacs: yeah, I can imagine [16:51] MrNibbles: oh, sorry wrong channel :S [16:51] technoweenie: eazyigz: use python or java if you need soap. but there are other simple object access protocols out there than soap :) [16:52] eazyigz: pquerna: u like using node better than twisted for pushing realtime data? [16:52] mjr_: JavaScript people have mostly moved on to JSON over HTTP, thankfully. [16:52] admc has joined the channel [16:52] sh1mmer: isaacs: http://github.com/isaacs/npm/issues/issue/137 [16:52] isaacs: sh1mmer: thanks [16:52] eazyigz: technoweenie: I hear you. but at my work we have existing soap services that I must consume [16:52] isaacs: that's a pretty easy one. [16:52] sh1mmer: isaacs: I wish GH support marking stuff as bug/feature request/etc [16:53] _announcer: Twitter: "Ryan Dahl on node.js: Goal: write high performance servers easily. Easily != C." -- Kevin Whinnery. http://twitter.com/kevinwhinnery/status/19923895560 [16:53] d3x7r0: I've only just started using node but beeing pretty much event-based looks like a very good fit for real-time data [16:53] podman: oh, that is another thing i want to play with, websockets for realtime visualization of analytics [16:53] zerovirtual has joined the channel [16:53] isaacs: sh1mmer: they're all bug reports. the bug is that teh feature is missing. and they're all feature requests, teh feature being that you want the bug fixed. [16:53] pquerna: eazyigz: definately. [16:53] isaacs: ACTION loves issues' simplicity [16:53] pquerna: eazyigz: in twised i always find myself using deferToThread [16:53] sh1mmer: isaacs: I know, but it would be nice to be even able to throw them is those very approximate buckets [16:53] isaacs: sh1mmer: there are tags [16:53] eazyigz: pquerna: in python its easy to accomplish data retrieval. you find you can do the sam with node? [16:53] sh1mmer: I'm not a fan of the bugzilla million labels thing [16:54] sh1mmer: isaacs: can you tag upfront? [16:54] isaacs: sh1mmer: not sure exactly [16:54] isaacs: ok, gotta go to work. [16:54] mjr_: podman: did you see my websocket-based realtime network sniffer? http://db.ranney.com:81/ [16:54] eazyigz: I tried tornado server, and am very disappointed with it [16:54] eazyigz: that's why I thought id try node [16:54] podman: mjr_, nope [16:54] podman: watching now [16:54] sh1mmer: ACTION sighs [16:55] sh1mmer: should be flying now [16:55] sh1mmer: stuck in O'Hare instead [16:55] zerovirtual has left the channel [16:55] felixge has joined the channel [16:55] pquerna: eazyigz: well, if your remote interfaces are over http, very easy. [16:56] blackdog has joined the channel [16:56] jetienne: mjr_: what is the source of this page ? libpcap ? or some log parser [16:56] mjr_: jetienne: it's pcap capturing all of the traffic going to db.ranney.com [16:56] sh1mmer: eazyigz: I don't have time to do it now, but I can look at porting the SOAP stuff to node maybe next week [16:56] streampunk has joined the channel [16:56] mjr_: There's nothing else really on it. [16:56] d3x7r0: btw I've in a bit of a pickle. I'm new at this server-side js stuff (came from php) and I was wondering if there was any simple way to convert xml to an object [16:56] sh1mmer: eazyigz: it should be fairly quick [16:57] sh1mmer: d3x7r0: no. [16:57] technoweenie: streampunk, ha [16:57] technoweenie: (nice nick)_ [16:57] mjr_: Each line is a new TCP connection. The second column is all of the HTTP/ WebSocket traffic on that connection. [16:57] sh1mmer: d3x7r0: for the simple reason that XML doesn't have object semantics [16:57] technoweenie: actually, genius. you bastard :) [16:57] _announcer: Twitter: "@mde Good stuff. Not crazy about source code transformations, though :-/ Any existing CommonsJS loaders to do this in NodeJS + browser?" -- Peter Griess. http://twitter.com/pgriess/status/19924185077 [16:57] streampunk: technoweenie: Heh. Thanks. It's one of a few I've used in here. [16:57] streampunk: ACTION runs to lunch. bbl [16:57] d3x7r0: sh1mmer, I know I know but I have to use an external service that only provides the data via xml and I was trying to avoid writting a parser :S [16:58] eazyigz: querna: can I call a django module over http that will return the soap response, and then push that to the client? [16:58] eazyigz: but that would mean an extra http hop using apache [16:58] eazyigz: seems counterintuitive [16:58] sh1mmer: d3x7r0: there are some XML parsers but you'd have to build the XML grammar -> Object yourself [16:59] damienkatz has joined the channel [16:59] damienkatz has joined the channel [16:59] sh1mmer: brb [16:59] jetienne: pgriess: http://requirejs.org/ would that fit your need [16:59] jetienne: ? [16:59] jimt has joined the channel [16:59] pgriess: jetienne: ooh, thx. reading [17:00] mjr_: jetienne: it's super crude right now, but this thing can monitor HTTP traffic on all ports without looking at the logs. http://github.com/mranney/traffic_graph [17:00] deepthawtz has joined the channel [17:00] mjr_: I was trying to do a hummingbird sort of eye-candy thing, but front end stuff is not my thing. [17:00] jetienne: mjr_: ok :) [17:01] boog has joined the channel [17:02] boog: Is it possible to write gtk bindings for node js? [17:02] jherdman has joined the channel [17:02] _announcer: Twitter: "I find Node.js really interesting, but not really sure how I'd use it, today." -- Derek P.. http://twitter.com/perezd/status/19924533163 [17:02] pgriess: jetienne: hm, requirejs also does code rewriting on the fly. i'm still holding out for something that does not do this. seems like this strategy would be fragile, but maybe i'm wrong. [17:03] pgriess: jetienne: also, doesn't respect $NODE_PATH, which is a bummer [17:03] jetienne: pgriess: if we want a clean solution, i think we need ryah to commit on this. like him saying "this way is the way"... but maybe it is too early [17:04] pgriess: jetienne: kind of hoping one of the existing loaders that work in the browser (jquery, yui, etc) will support commonsjs + node loading under the hood [17:04] _announcer: Twitter: "I hope that I look @ Sn0wNight U: Untan-Networks: Server-side JavaScript in the challenge I http://bit.ly/ajphX4 node.js" [ja] -- いとおちゃん. http://twitter.com/itochan315/status/19924693119 [17:04] pgriess: jetienne: will probably bug @davglass about this and see if he will do this for me [17:04] bradleymeck: pgriess i also posted a diff require func on the mail list for jim a while back [17:05] podman: i haven't had a chance to what the google tech talk on nodejs... is it worth watching? [17:05] pgriess: jetienne: yui integration, that is [17:05] mjr_: podman: there is some deep, philosophical shit at the beginning. [17:05] pgriess: bradleymeck: interesting. looking through archives [17:05] ryan_gahl: pgriess: have you looked at krizzyp's transporter? [17:05] bradleymeck: boog, yes, there is a minimal one already somewhere [17:05] jetienne: pgriess: yui is too big :) [17:06] podman: i watched the one at Yahoo (i think that is where it was) and that was pretty good. [17:06] pgriess: jetienne: yeah, i know what you mean ;) but the core of it is theoretically light-weight and we're going to be using yui anyway [17:06] mjr_: podman: I can't tell how it went over with the google crowd, but I really like thinking about what the best way to build servers in a multi-core world is. [17:06] pgriess: ryan_gahl: no, not yet. thanks for the tip [17:08] ryan_gahl: pgriess: http://github.com/kriszyp/transporter - not sure if this actual helps you - not 100% clear on the need [17:09] JimBastard has joined the channel [17:09] cloudhead has joined the channel [17:09] pgriess: ryan_gahl: the need/desire is to be able to use a single module format for inclusion in browser/node; mde's post outlines a lot of the issues w/ this currently. looking for a solution that doesn't involve rewriting source [17:10] pgriess: ryan_gahl: transporter isn't what i want, unfortunately. i want to be able to serve js files using a cdn. don't want custom server software to serve them [17:10] technoweenie: why would you want that in the browser? isnt it best to have fewer js files that are assembled from smaller ones [17:10] JimBastard: pgriess: sup [17:10] pgriess: ryan_gahl: but transporter does look interesting [17:10] ryan_gahl: gotcha [17:10] JimBastard: i dove into that rabbit hole pretty hard [17:10] pgriess: jimbastard: heh. i know ; [17:10] JimBastard: of dual sided require [17:11] JimBastard: i think jbrantly or bradleymeck gave me a sick piece of code [17:11] JimBastard: i have it in a gist if you want to see [17:11] JimBastard: i think it was bradleymeck [17:11] ryan_gahl: pgriess: so you want no "compile" step whatsoever? i.e. server gens the cdn output? [17:12] pgriess: technoweenie: yeah, ideally a loader would play well w/ a combo-loader service or build-time packaging; good point on multi-module concatenation. [17:12] pgriess: ryan_gahl: a compile step is ok. but i'd prefer to live w/o one. makes iterative development slower [17:12] technoweenie: frank06 and i were talking about how to distribute riak-js for node and jquery. i was just going to have a compile step that removed commonjs crap and mashed the files together [17:12] jbrantly: not following the convo, but Yabble? [17:12] sh1mmer has joined the channel [17:12] technoweenie: it sucks, but thats why there are test suites [17:13] _announcer: Twitter: "Watching node.js at 8th Light U. and #hungry." -- Eric Smith. http://twitter.com/paytonrules/status/19925273472 [17:13] JimBastard: technoweenie: i do that for Faker [17:13] sh1mmer: technoweenie: what do you use on node right now? [17:13] tocho-san has joined the channel [17:13] technoweenie: ? [17:13] jbrantly: pgriess: http://github.com/jbrantly/Yabble [17:13] sh1mmer: test suites [17:13] technoweenie: what what do i use [17:13] JimBastard: http://github.com/Marak/Faker.js/blob/master/BUILD/BUILD.js [17:13] technoweenie: oh, assert [17:13] sh1mmer: ok [17:13] ryan_gahl: pgriess: the way i've gotten around that is to auto-compile the composite files on first request, cache that resource for subsequent requests... but then also employ a debug switch to bypass that step for dev [17:13] aconbere has joined the channel [17:13] technoweenie: maybe expresso when i get around to hooking up ci [17:13] JimBastard: i have a few dual-sided build scripts floating around, its easy [17:14] sh1mmer: technoweenie: I wrapped assert because I don't like exceptions, or rather I like stack trace, but I hate not running a full suite at once [17:14] sh1mmer: so I was interested if anyone else has experience with something [17:14] d3x7r0: btw quick question: if I have to parse xml what should I use? (newbie here) [17:14] technoweenie: i'm used to having shit like that wrapped up and getting a report with dots and Fs [17:15] _announcer: Twitter: "Great week of coding - last week OpenRasta - this week Node.js and WebSockets." -- Howard van Rooijen. http://twitter.com/HowardvRooijen/status/19925415723 [17:15] JimBastard: !tweet @HowardvRooijen go go node.js! [17:15] sh1mmer: technoweenie: exactly. Let me gist this for you real quick. it's hardly anything but it's useful to me [17:15] technoweenie: but i havent found anything that handled async stuff in a way i really liked, so w/e [17:16] pgriess: jbrantly: thx [17:16] ryan_gahl: pgriess: IMHO that model works pretty well and avoids trying to force the module pattern on the browser, which isn't necessarily well-suited for it (plus reduces number of requests) [17:16] JimBastard: d3x7r0: http://wiki.github.com/ry/node/modules#parsers-xml [17:16] sh1mmer: technoweenie: http://gist.github.com/500926 [17:16] d3x7r0: JimBastard, yes, hence why I said what should I use :P [17:16] boog: http://github.com/brainfucker/node-gui: sweet [17:17] technoweenie: sh1mmer: cool [17:17] pgriess: ryan_gahl: yeah. i've done that in the past as well. the problem is when you want to use a cdn that can only serve static files, you need to run build step to produce them. which is not a huge deal, but i'd prefer a smart loader to doing that [17:17] sh1mmer: technoweenie: it's a super thin wrapper, I was planning to extended it with some network socket support, etc but in the meantime it might be helpful [17:17] JimBastard: sh1mmer: ewwww use http://github.com/Marak/colors.js/blob/master/colors.js [17:17] technoweenie: sh1mmer: one suggestion: return valid exit codes for CI (like cijoe) [17:17] sh1mmer: but I'd really like a way to catch the stack trace in javascript [17:17] sh1mmer: but I don't know there is one [17:17] JimBastard: sys.error('\033[32mPASS\033[0m: ' + message); [17:17] sh1mmer: technoweenie: good call, I'll have a look at that [17:17] technoweenie: well i think thats what expresso does [17:17] technoweenie: good exit codes and it counts # of assertions and fails [17:17] ryan_gahl: pgriess: fair enough :) -- to bad CDN's aren't just a TAD smarter [17:17] ryan_gahl: too* [17:18] pgriess: ryan_gahl: tell me about it ;) [17:18] creationix has joined the channel [17:18] sh1mmer: technoweenie: oh maybe I should look at that, this was just a hack to tide me over (obviously) [17:18] technoweenie: oh snap, guis in node [17:18] technoweenie: i wondered how long until someone did that [17:18] pgriess: ryan_gahl: actually ours can concatenate files, but i think that's the limit of its intelligence. hm. [17:18] tjholowaychuk: technoweenie: yup expresso handles the exit code properly, caught / uncaught [17:18] tjholowaychuk: I have it running on a SSJS CI server right now [17:19] pquerna: pgriess: well, you just need to embed node inside traffic server <3 [17:19] sh1mmer: tjholowaychuk: ooh that sounds interesting [17:19] creationix: cloudhead: should less.js work on latest node [17:19] technoweenie: just dont ask tj for help before he's had his coffee [17:19] creationix: I'm getting errors about buffers not having string methods [17:19] sh1mmer: tjholowaychuk: what's the CI server? [17:19] tjholowaychuk: :D [17:19] tjholowaychuk: had my coffee already lol [17:19] pgriess: pquerna: or replace yts with node. which is what i'd like to do anyway ;) [17:19] tjholowaychuk: sh1mmer: its not OSS ATM [17:19] sh1mmer: pgriess: we should considered hooking up expresso to yhudson [17:19] ryan_gahl: pgriess: so, deploy-to-cdn happens at a frequency > deploy-public-release? [17:19] pgriess: creationix: btw, your signal changes were just what the doctor ordered. thx. [17:19] technoweenie: i think i saw it at the first node thingy at sencha (then extjs) [17:20] creationix: pgriess: awesome [17:20] creationix: technoweenie: yep [17:20] pgriess: sh1mmer: yes. rschiavi and i are looking into ci stuff for node. expresso is on the list [17:20] mape: tjholowaychuk: might want to look at updating the express docs, the params change broke my code :/ [17:20] technoweenie: i have a cijoe port in coffeescript [17:20] pgriess: sh1mmer: though we'd probably prefer yui test if we can get that towkr, mostly because its in-house, etc [17:20] nefD: HAH! gtk in node.. seems like a called that several months ago [17:20] technoweenie: but its so much harder to do in node because the original relies on a lot of sync git calls [17:20] tjholowaychuk: mape: ah right just about to do that :) [17:21] tjholowaychuk: technoweenie: ya I had to queue a lot of crap [17:21] tjholowaychuk: same issue [17:21] Gruni has joined the channel [17:21] tjholowaychuk: having it written in node didnt add much [17:21] technoweenie: i want a live update so i can watch the dots [17:21] sh1mmer: pgriess: yui test would be cool. we should nag Nicholas to investigate [17:21] technoweenie: since github tests take over 5 min [17:21] indexzero has joined the channel [17:22] indexzero: holla [17:22] tjholowaychuk: I dont have any yet that take more than a second with expresso thankfully [17:22] creationix: tjholowaychuk: I should convert my tests to expresso [17:22] creationix: coverage and a real runner would be nice [17:23] tjholowaychuk: the coverage is really handy ive been checking it quite a bit lately [17:23] creationix: tjholowaychuk: does it work for plain unit tests too? [17:23] tjholowaychuk: I have 95.89% coverage for Express right now [17:23] tjholowaychuk: creationix: yup, anything really [17:23] creationix: nStore really needs some coverage [17:23] tjholowaychuk: just has the http helper [17:24] indexzero: tjholowaychuk: How are you measuring coverage? [17:24] tjholowaychuk: indexzero: its just statement based, jscoverage [17:24] creationix: it's got so many edge cases that only happen in extreme cases, it's hard to even know if the code works [17:24] tjholowaychuk: nothing crazy [17:24] indexzero: cool, you seen vows? [17:24] tjholowaychuk: yup [17:24] tjholowaychuk: tried it out a bit, not a huge fan [17:24] tjholowaychuk: but i like some of the stuff [17:25] indexzero: yeah, the object literal stuff is really helpful for DRY [17:25] indexzero: the example tests you have in expresso can be written much more succinctly [17:25] indexzero: there are some holes in the api that I'm working on fixing [17:25] tocho-san has joined the channel [17:26] indexzero: Have you seen the very bottom of vowsjs.org? That's the stuff I'm talking about [17:26] tjholowaychuk: I found vows a bit hard to read. I prefer the "dumbness" of expresso, you can easily just roll your own weird ad-hoc solutions [17:26] tjholowaychuk: like "keys" has some simple metaprogramming to generate tests for all of the different stores [17:26] tjholowaychuk: nothing has to be baked into Expresso for that [17:26] tjholowaychuk: indexzero: the assertion methods? [17:27] indexzero: oops, right above that [17:27] tjholowaychuk: oh nvm [17:27] tjholowaychuk: there is no reason you cant do stuff like that with expresso too, I do all the time [17:27] indexzero: 'function respondsWith(status) { ....' [17:28] eazyigz has joined the channel [17:28] indexzero: true, I suppose it's just a style thing. The nesting of vows was a little off to me at first [17:28] indexzero: but after a day or two I began to really like it [17:28] kodisha_ has joined the channel [17:28] tjholowaychuk: im over the whole pretty bdd thing, I just want something fast [17:29] _announcer: Twitter: "watching the Google Tech Talk on Node.js http://www.youtube.com/watch?v=F6k8lTrAE2g" -- Colin Wheeler. http://twitter.com/CocoaSamurai/status/19926345391 [17:29] indexzero: vows isn't necessarily bdd [17:29] tjholowaychuk: I have 2 lines of express not tested, whoop [17:29] indexzero: just because you have text describing your tests doesn't mean it's bdd [17:29] _announcer: Twitter: "Just implemented a collaborative web app in about 20m using #nodejs & 3hrs fixing existing bugs in my app to make it work like its sposed to" -- Derek Lindahl. http://twitter.com/oif_vet/status/19926395636 [17:30] indexzero: a lot of my tests for http-agent aren't really bdd at all [17:30] sh1mmer: technoweenie: does npm install riak-js install riak too? I'm assuming not [17:30] technoweenie: no [17:30] technoweenie: if you're on a mac use homebrew for riak [17:30] indexzero: http://github.com/indexzero/http-agent/blob/master/test/http-agent-test.js if you're interested [17:31] sh1mmer: technoweenie: yay. I love how people work hard to make it easy for me to be lazy :) [17:31] indexzero: tjholowaychuk: Anyway, back to work [17:31] tjholowaychuk: indexzero: personally I find this easier to read http://github.com/visionmedia/express/blob/master/test/response.test.js [17:31] Byron has joined the channel [17:31] tjholowaychuk: but hey cant go wrong with having two good libs! [17:32] josemoreira has joined the channel [17:32] cardona507 has joined the channel [17:32] jbrantly: pgriess: is Yabble more or less what you're looking for? I wasn't fully following that conversation earlier [17:32] indexzero: tjholowaychuk: Yeah, I'm going to file this under a style issue because that looks like json-soup to me :-P [17:33] tjholowaychuk: indexzero: any your tests take ~1 second to run :p I have hunnnnndreds in Connect and it takes less than a second [17:33] tjholowaychuk: vs like 15 [17:33] technoweenie: well theres no state to maintain so you can really just run them all async [17:34] tjholowaychuk: im not saying vows is wrong or anything, it looks great for people who want that [17:34] cardona507: i am having issues getting client side javascript to work with my express scaffolding. I can't even get a basic alert("foo") to run - has anyone else run into this problem? [17:34] tjholowaychuk: yeah exactly [17:34] indexzero: tjholowaychuk: What do you think the overhead is? [17:34] tjholowaychuk: cardona507: I will look into that, one sec [17:34] cardona507: thanks tjholowaychuk [17:36] cardona507: ahh - are semi-colons mandatory in express - it seems so [17:36] cardona507: ? [17:36] indexzero: tjholowaychuk: Coffee time, pick this up later [17:36] feroz_ has joined the channel [17:36] tjholowaychuk: cardon507: no, semi-colons are optional for nearly all js [17:36] _announcer: Twitter: "Ok, CouchDB has some awesome DNS stuff (thanks @jchris) so I'm going to try that and Riak. Node.js <3s NoSql" -- Tom. http://twitter.com/sh1mmer/status/19926868360 [17:37] tjholowaychuk: but I just added ./public/javascripts/app.js and script(src="/javascripts/app.js) to layout and its fine [17:37] rcy has joined the channel [17:37] sh1mmer: aww. HTML encoding fail. [17:37] _announcer: Twitter: "HaXe Roundup # 4 http://blog.skialbainn.com/post/880152441/haxe-roundup-4 xmpp # # # Palm nodejs WebOS # # cpp # apache # # iphone REDIS" [cs] -- Skial Bainn. http://twitter.com/skial/status/19926908425 [17:38] cardona507: tjholowaychuk: yeah - for some reasons semicolons allows me to see alert() - does express play ok with jquery? [17:38] tjholowaychuk: yeah, express does nothing on the client side [17:38] tjholowaychuk: you can use anything you want [17:38] cardona507: hmmm [17:39] tyfighter has joined the channel [17:39] cardona507: ok- I'll keep hacking away at it - thanks for the help [17:40] tjholowaychuk: np [17:41] sh1mmer: which is the best couchdb driver? [17:41] V1 has joined the channel [17:41] sh1mmer: seems like there are 4. Is node-couch the "official" one? [17:43] jchris: sh1mmer: probably other people know better than me, but http://github.com/felixge/node-couchdb looks good [17:43] Tobsn has joined the channel [17:43] sh1mmer: jchris: actually that just occurred to me. Felix is solid. [17:43] Tobsn: guten morgen [17:45] Tobsn: any reasons one would use http://github.com/Marak/node_hash instead of just straight up crypto? [17:45] Tobsn: ah nevermind there is a FAQ [17:46] Tobsn: haha [17:46] jxson has joined the channel [17:46] grahamalot has joined the channel [17:46] jesusabdullah: I think originally he'd forgotten about the crypto library [17:46] _announcer: Twitter: "Have to say I'm pretty excited by Node.JS and all its opportunities. Can see a series of blog posts brewing" -- Howard van Rooijen. http://twitter.com/HowardvRooijen/status/19927519074 [17:46] jesusabdullah: but decided it would still be useful [17:47] JimBastard has joined the channel [17:47] jelveh has joined the channel [17:48] _announcer: Twitter: "YUI Theater - Ryan Dahl: “Introduction to NodeJS” http://post.ly/pUQs" -- Ivan Ribeiro. http://twitter.com/irr/status/19927606711 [17:48] pgriess: jbrantly: possibly. it seems quite featureful, but i need to read more about it. no time now unfortunately. definitely bookmarked for later reading [17:48] pgriess: jbrantly: thanks again for the pointer [17:49] jbrantly: pgriess: np [17:49] isaacs has joined the channel [17:49] silentrob has joined the channel [17:50] qFox has joined the channel [17:50] sh1mmer: isaacs: npm ! Error: not_found document not found [17:50] sh1mmer: isaacs: is that a bug, or am I dumb? [17:50] silentrob has left the channel [17:50] isaacs: sh1mmer: can't it be both...? [17:50] sh1mmer: isaacs: almost certainly. [17:50] isaacs: sh1mmer: what's the rest of the log? gist? [17:51] shreekavi has joined the channel [17:51] paul_irish has joined the channel [17:51] sh1mmer: isaacs: http://gist.github.com/500995 [17:51] loincloth has joined the channel [17:52] isaacs: sh1mmer: npm install couchdb [17:52] isaacs: node-couchdb is the name of the git repo, not the npm package [17:52] fermion has joined the channel [17:52] sh1mmer: isaacs: I'm filing a bug "your error messages are shit" [17:52] isaacs: sh1mmer: haha [17:52] isaacs: i think i already have one like that. [17:52] sh1mmer: :) [17:53] isaacs: i think if someone wanted to get acquainted with npm's codebase and take it over if a meteor lands on my head one day, fixing all the docs and error messages would be a great way to get started. [17:53] isaacs: a very boring way, but instructive [17:54] CIA-77: node: 03Ryan Dahl 07master * rcf49fc7 10/ AUTHORS : Fix email address in AUTHORS file - http://bit.ly/dzmPFp [17:54] CIA-77: node: 03Ben Noordhuis 07master * rf72ac17 10/ (src/node_buffer.cc test/simple/test-buffer.js): Buffer: graciously handle padding in base64-encoded input. - http://bit.ly/ckUEd3 [17:54] sh1mmer: isaacs: I might be willing to help you improve docs [17:54] sh1mmer: but I'm not taking over your codebase [17:54] sh1mmer: just saying ;) [17:54] CIA-77: node: 03Ryan Dahl 07master * rc38dd24 10/ src/node_buffer.cc : Fix style - http://bit.ly/9hnWAV [17:54] mjr_: isaacs: is your npm database messed up? http://gist.github.com/501001 [17:55] pydroid: creationix: can i install nstore using npm yet? [17:55] creationix: pydroid: I think so [17:55] isaacs: mjr_: should be fixed now, sorry for that [17:55] isaacs: mjr_: i encountered a really hideous bug last night that compelled me to publish the fix asap, and in my haste, forgot to tag [17:55] pydroid: creationix: ok thanks... weird, i keep getting a Error: not_found document not found [17:56] _announcer: Twitter: "# ExpressJS 1.0.0RC released for # nodejs - http://bit.ly/dzT1rh" [id] -- TJ Holowaychuk. http://twitter.com/tjholowaychuk/status/19928103219 [17:56] mjr_: isaacs: OK, cool, it works now. [17:56] ashleydev has joined the channel [17:56] mjr_: Want to look at the "I can't publish from my work machine" issue? Because even with the latest node/npm I still have it. [17:56] creationix: isaacs: is pydroid's issue something with npm? [17:57] isaacs: mjr_: does this make it work? npm config set registry http://registry.npmjs.org/ [17:57] sh1mmer: isaacs: `npm list` should give a full dump of all available npm modules right? [17:57] isaacs: creationix, pydroid: npm install nStore <-- note the capital S [17:58] creationix: ahh, case sensitive [17:58] isaacs: sh1mmer: yes [17:58] pydroid: ooh [17:58] mjr_: that made it do new things: http://gist.github.com/501007 [17:58] pydroid: oops about that one sorry [17:58] isaacs: creationix: yeah, i should really maybe warn if the name isn't lowercase. [17:58] sh1mmer: isaacs: because it's dumping out after chain-gang [17:58] pydroid: anyway i cloned the git repo and just ran and install... all's well. [17:58] sh1mmer: isaacs: lemme guess, issue it? [17:58] creationix: isaacs: just make it case insensitive [17:58] creationix: there shouldn't be two packages with the same name [17:58] mjr_: isaacs: that registry set thing just disables ssl? [17:58] pydroid: isaacs: maybe do a fallback for case checking? [17:59] isaacs: sh1mmer: using the newest node and npm? that was a bug a while back, since stdout wasn't getting flushed properly [17:59] sh1mmer: isaacs: hm not sure [18:00] cloudhead: creationix: it should, although I haven't tested it [18:00] sh1mmer: isaacs: is there an `npm version` or something? [18:00] cloudhead: creationix: I'm still on 1.0.98 [18:00] isaacs: sh1mmer: npm -v [18:00] isaacs: sh1mmer: and node -v [18:00] creationix: cloudhead: nevermind it was my issue, my tm bundle was passing it a buffer instead of a string [18:00] aconran_ has joined the channel [18:00] cloudhead: creationix: aha ok [18:00] creationix: cloudhead: it's super fast btw [18:01] creationix: much better than the ruby version [18:01] isaacs: creationix: so, the issue with that is that couchdb is case-sensitive, so saying, "just make it case insensitive" is a bit trickier than it sounds. [18:01] cloudhead: : ) [18:01] cloudhead: yea [18:01] cloudhead: I optimized the hell out of it [18:01] sh1mmer: isaacs: I think I'm out of date [18:01] creationix: isaacs: no, just toLowerCase all input [18:01] sh1mmer: isaacs: filed an issue for `npm selfupdate` :) [18:01] isaacs: creationix: but i might have it lcase the name whenever it reads a package.json, and maybe warn [18:01] isaacs: sh1mmer: "npm update npm" is planned, probably about 2 versions away [18:01] sh1mmer: isaacs: cool [18:01] isaacs: sh1mmer: for now, curl http://npmjs.org/install.sh | sh [18:02] jesusabdullah: isaacs: npm uses couch on the back? [18:02] isaacs: sh1mmer: i have an aesthetic problem with "selfupdate" [18:02] sh1mmer: isaacs: ok [18:02] isaacs: sh1mmer: npm shoudln't treat itself special. [18:02] sh1mmer: isaacs: I don't care either way [18:02] isaacs: jesusabdullah: for now, yeah [18:02] mjr_: isaacs: can you make install.sh mkdir something with the pid in it so that if it crashes, then it'll work a second time? [18:02] mjr_: I'll issue that shit. [18:03] isaacs: mjr_: or just send a patch :) [18:03] isaacs: that's simple and a good idea. [18:03] jesusabdullah: isaacs: Neat. :D [18:03] mjr_: isaacs: did you see my last gist? Still didn't work, but caught a couch error this time. [18:05] dylang has joined the channel [18:05] isaacs: creationix: http://github.com/isaacs/npm/issues/issue/141 [18:05] maushu has joined the channel [18:05] derferman has joined the channel [18:06] isaacs: mjr_: yeah, sorry, multitasking.. [18:06] creationix: isaacs: sounds good [18:06] mjr_: isaacs: np, let me know if want me to try anything else. [18:06] isaacs: mjr_: do this: npm unpublish pcap@latest [18:06] isaacs: mjr_: then try again [18:07] isaacs: mjr_: gah, i really wish I had a few days to comb through node's ssl client and figure out where this is happening. [18:07] Yuffster has joined the channel [18:07] mjr_: unpublish and then publish does the same thing with the "Document update conflict" [18:07] tocho-san has joined the channel [18:07] mjr_: I'm guessing ti didn't really unpublish. [18:07] isaacs: ok... hold on a sec [18:08] ryah: ssl refactor must happen [18:08] ryah: wait for after node ko [18:09] mjr_: ryah: yeah, there is some strange stuff going on in there. [18:09] isaacs: ryah: did you see the ssl test patch i sent? [18:09] mjr_: It works really well on one of my machines, and uhh, less well on others. [18:09] hellp has joined the channel [18:09] ryah: isaacs: with the -2? [18:10] isaacs: mjr_: ok, manually unpublished. try again, i guess. if it doesn't work, then we can have you just email me the tarball or something [18:10] mjr_: it worked [18:10] isaacs: ryah: no, that was someone else's thing. the -2 makes it stop breaking in one of the ways that it's breaking, which was nice, but it doens't actually fix the problem. i sent a patch with two test cases that fail in fascinatingly unpredictable ways. [18:11] ryan_gahl: creationix: ping [18:11] tocho-san has joined the channel [18:12] creationix: ryan_gahl: pong [18:13] mjr_: isaacs: so in conclusion, turning off SSL on my work machine lets me publish, but sometimes, unrelated to SSL? I get some version conflict thingy. [18:13] ryan_gahl: creationix: did something change in Connect's router that affects "params.splat"? [18:13] ryan_gahl: (looking for code now) [18:13] isaacs: mjr_: not quite. if the ssl tarball upload hadn't bombed out, there would have been no version conflict. [18:13] mjr_: isaacs: I'm happy to try things out on my two different machines if you need to see it happen again. [18:13] mjr_: ohhh [18:13] mjr_: So a partial upload type of thing. [18:14] isaacs: mjr_: so, due to the way that couch handles attachments, and now i have the database set up, you have to send the package metadata and the tarball in two separate requests. [18:14] _announcer: Twitter: "Bummed that I can't make the Node.js thing tomorrow. Looks really awesome." -- Sara Chipps. http://twitter.com/SaraJChipps/status/19929261568 [18:14] creationix: ryan_gahl: I know params got moved out of the arguments and into the req object [18:14] creationix: not sure about splat, ask tjholowaychuk [18:14] ryan_gahl: ohhhhh, that would do it [18:14] isaacs: mjr_: uploading over ssl crashes node in a mostly uncatchable way, so i don't have an opportunity to unpublish the now-bad data. [18:14] ryan_gahl: meh, that's a pretty major breaking change there [18:14] sh1mmer: bye peeps [18:14] sh1mmer: SFO bound :) [18:15] creationix: sh1mmer: have fun [18:15] creationix: ryan_gahl: yeah, but I think it's for the better [18:15] creationix: now you can use middleware on router handlers [18:15] tjholowaychuk: ryan_gahl: params is not an obj anymore its an array, so params[n] will access the splats [18:15] ryan_gahl: creationix: not for the better of me not having to refactor stuff "all the damn time" :) [18:15] mjr_: isaacs: oh, is it crashing your node? [18:16] creationix: ryan_gahl: yeah, it broke my code too and I had to update my articles on howtonode too [18:16] tjholowaychuk: ryan_gahl: should be solid now I pushed the express rc so cant change it now :p [18:16] isaacs: mjr_: it seems like process.on("exit") still fires, but there's no error event, no throw, no nuthin [18:16] tjholowaychuk: its for the better though [18:16] ryan_gahl: tjholowaychuk: i see the code now, thx [18:16] ryan_gahl: tjholowaychuk: the wiki needs some love [18:16] mjr_: isaacs: golly [18:16] tjholowaychuk: ryan_gahl: for express? I dont want the wiki to have docs [18:17] tjholowaychuk: people can contrib to ./docs/* [18:17] ryan_gahl: tjholowaychuk: sorry, not wiki... http://extjs.github.com/Connect/ [18:17] tjholowaychuk: ohhh [18:17] tjholowaychuk: yes yes it does lol [18:17] benburkert has joined the channel [18:17] isaacs: ryah: cant' find the mailing list link. Patch with tests is here: http://gist.github.com/501043 [18:18] ak|ra has joined the channel [18:18] tjholowaychuk: ryan_gahl: ah, http://senchalabs.github.com/connect/router.html [18:18] tjholowaychuk: I did update them [18:18] ryan_gahl: tjholowaychuk: so req.params[0] == the old params.splat[0]? [18:18] ak|ra: ReferenceError: console is not defined [18:18] tjholowaychuk: still needs a coat of paint but they should be up to date [18:18] tjholowaychuk: ryan_gahl:yup [18:18] ryan_gahl: tjholowaychuk: not too bad to refactor, thx [18:18] ak|ra: .. why is the node.js api-page providing samples that "do not work" ? [18:19] isaacs: ryah: creates an https server, connects, tries to upload 16777216 bytes to it. one test does pause/resume backpressure, the other just lets it all in. bombs out almost every time. [18:19] rsms has joined the channel [18:20] mjr_: ak|ra: I think you are using an older version of node [18:20] mjr_: The docs reference the very latest version only. [18:20] ak|ra: lets see [18:20] ryan_gahl: tjholowaychuk: btw, that page still mentions params.splat [18:20] mjr_: If there's an example on the api.html page that doesn't work, let me knowl [18:20] mjr_: . [18:21] tjholowaychuk: ryan_gahl: shit, thanks [18:21] isaacs: ak|ra: you can do "man node" to see the doc for the content you have, or "make doc" to generate a doc/api.html page for your specific version. [18:21] ak|ra: isaacs: k, thanx [18:22] loinclot_ has joined the channel [18:22] ak|ra: k, with the latest version it works. [18:23] ak|ra: mjr_: ya, i could'nt really imagine that someone would provide samples which does not work at all. [18:24] _announcer: Twitter: "Excited for node.js hackshop tom. that @binary42 organized. Everyone is welcome! Come join the cult! err.... fun. http://bit.ly/c1bRMM" -- Chris Ricca. http://twitter.com/ChrisRicca/status/19929876475 [18:24] mikeal has joined the channel [18:24] mjr_: ak|ra: those samples are lovingly crafted, but sometimes neglected as versions move forward. [18:24] ak|ra: the version is displayed on the page, i see it now ... a bit easy to overlook or draw the wrong conclusions. [18:27] mjr_: So I'm pretty impressed with how fast web browsers can handle WebSocket messages. Safari can do about 500/sec on my 3 year old laptop. [18:27] zomgbie has joined the channel [18:28] psi0nik has joined the channel [18:28] _announcer: Twitter: "@jneves that was actually my first thought, got to find out how to do it in node.js" -- Luís Nabais. http://twitter.com/d3x7r0/status/19930139585 [18:28] jacoblyles has joined the channel [18:30] _announcer: Twitter: "yay, that was fun. node-irc + nstore = logging bot that i can search! #node.js" -- Kenny Shen. http://twitter.com/kenny_shen/status/19930271746 [18:30] bradleymeck: ACTION flops [18:31] WALoeIII has joined the channel [18:32] robotarmy has joined the channel [18:33] _announcer: Twitter: "Nice tech talk from @ry called Node.js Javascript on the server - http://ru.ly/nu" -- Robin Bhattacharyya. http://twitter.com/rcb/status/19930421139 [18:34] MattJ has joined the channel [18:34] bradleymeck: ryah, any chance we could do shared buffer slices? [18:34] mjr_: buffer slices are already shared, aren't they? [18:35] Gruni has joined the channel [18:35] paul0 has joined the channel [18:35] bradleymeck: oh, nm ... [18:35] _announcer: Twitter: "Wewt, I just reached 100% CPU load with #node.js =D My 60k loop thinks you can block node ;)" -- Arnout Kazemier. http://twitter.com/3rdEden/status/19930595940 [18:37] isaacs: bradleymeck, mjr_: yeah, i thought they were a copy-on-write sorta thing [18:37] mjr_: they literally share some malloc()ed memory [18:37] _announcer: Twitter: "@janl i guess on github there's no such thing as a non-committer. i signed a cla for node.js for my commit" -- technowürst. http://twitter.com/technoweenie/status/19930708794 [18:37] mjr_: Which is brilliant, IMO [18:38] mjr_: Although it would be neat to do copy on write, but a fair bit more complicated. [18:38] khug has joined the channel [18:38] ryah: bradleymeck ? [18:38] khug has left the channel [18:38] bradleymeck: ryah, nm [18:39] psi0nik has joined the channel [18:39] ak|ra: ACTION says "cheers and have fun" [18:39] ak|ra has left the channel [18:39] mjr_: ryah: I watched your Google talk last night. How did the crowd find your initial foray into event loop philosophy? [18:40] mjr_: It seemed really quiet, so it was hard to tell if people were getting it or just confused. [18:40] ryah: apparently there is an internal google mailing list [18:40] ryah: have been going nuts on it [18:40] mjr_: oh? [18:40] ryah: it's like the longest thread ever or something [18:40] mape: hehe [18:40] SubStack: wow! [18:40] ryah: because of my first sentance in the abstract "it's well known that event loops rather than threads are necessary for ..." [18:40] mjr_: ha [18:41] SubStack: ryah: troll! [18:41] mjr_: boom! take that, establishment! [18:41] Aikar has joined the channel [18:41] ryah: i went to a party the other night and multiple google people told me about this thread [18:41] ryah: would love to see it [18:41] mjr_: That's badass [18:41] mjr_: So did anybody challenge you on the "no side effects" thing? [18:41] ryah: anyway - at the talk itself no one said anything [18:41] mjr_: Oh, interesting. [18:41] mjr_: But clearly your message reached some people. [18:42] mape: Still, isn't it a different issue all together depending on what a project is going to be used for? [18:42] bradleymeck: wish we could list out of function variable access [18:42] mape: One thing will never be good for all things [18:42] ryah: it's difficult making this point - which for me seems very clear [18:43] ryah: that kqueue by itself - is what any "fast threading system" is built on [18:43] ryah: and therefore cannot be improved [18:43] psi0nik has joined the channel [18:43] V1: unless you improve kqueue ofc [18:43] ryah: that is, until some light weight thread system is implemented in the kernel [18:44] bradleymeck: ryah, my only thoughts are on caches and locality of both [18:44] pquerna: aka, pthread_workqueue [18:44] _announcer: Twitter: "Getting started with Node.js on Ubuntu 9.10 in about 5 minutes « Giant Flying Saucer http://ow.ly/18mtqy" -- Javascript News. http://twitter.com/del_javascript/status/19931105815 [18:44] ryah: pquerna: we're really only speaking of socket i/o though [18:44] mertimor has joined the channel [18:44] feydr has joined the channel [18:44] ryah: i highly doubt that pthread_workqueue with blocking socket i/o is faster than nb sockets and kqueue [18:45] bradleymeck: it is in java XD [18:45] mjr_: I did not know about pthread_workqueue [18:45] pquerna: oh, not what i meant really [18:45] pquerna: mjr_: its the internals of Apple's GCD [18:45] mjr_: Cool. I need to learn more about GCD and opencl. [18:45] ryah: pquerna: anwyay - pthread_workqueue, which i'm sure is a good queue, is pthreads - or? [18:45] _announcer: Twitter: "lol! @ryah "dns is so fucked -- it's just a hashtable" http://bit.ly/bvmgBd #node.js" -- ian eyberg. http://twitter.com/feydr/status/19931210589 [18:46] pquerna: not coming to linux any time soon so its kinda a worthless thing on the larger scale [18:46] pquerna: unless you run freebsd :x [18:46] mjr_: Oh yeah, nice dig on DNS in a public forum. [18:46] pquerna: ryah: it just kernelizes the pattern of passing off a task to a pthread, more or less [18:47] mape: ryah: Heard about any node projects within google? [18:47] ryah: mape: yeah, little things [18:47] ryah: nothing interesting though [18:47] mape: k [18:47] rauchg_: i heard of a little project using socket.io from a guy in the google ads team [18:47] rauchg_: but mostly to try out node [18:47] zdmc has joined the channel [18:48] rauchg_: eventually it'll take over and they'll rewrite their search engine in node [18:48] pquerna: any day now :) [18:48] rauchg_: i see node-bigtable coming [18:48] rauchg_: haha [18:49] pquerna: well, more like node-protobufs with less suck first [18:49] SubStack: stm in the kernel would be pretty boss [18:49] mjr_: at google-scale, it seems like they can afford the engineering effort to write in whatever system gives them the best performance. Seems like that'd be native code. [18:49] SubStack: also crazy hard to write I bet [18:50] pquerna: nm, it exists [18:50] pquerna: http://code.google.com/p/protobuf-for-node/ [18:50] mjr_: I'd like to see Google Apps with a node backend so you can put JavaScript code in spreadsheet cells that runs on the server. [18:51] drudge: man node scares me [18:51] cardona507: I am getting 'Error: Cannot find module 'ejs'' error- how do I find ejs? [18:51] bradleymeck: drudge you mean the war room scares you [18:51] drudge: npm install ejs [18:51] rauchg_: drudge you mean I scare you [18:52] cardona507: booyah - thanks drudge :) [18:52] SubStack: mjr_: could just use dnode for that! [18:52] drudge: it's so easy to do stuff with, it's frightening sometimes [18:52] SubStack: speaking of which, I should fix that packaging issue today [18:52] bradleymeck: do we have multicast? [18:54] Tobsn: rauchg_, thats where i plan to use it too [18:55] Tobsn: mjr_, i thought you can already code google apps on their platform in js? [18:55] mape: mjr_: aren't they dead set on using 3 langs? [18:56] _announcer: Twitter: "@ Dtrunk90 Just as you can access with node.js Files. But I'm even listed as a disadvantage: Missing Features" [de] -- Aurel H.. http://twitter.com/dipser/status/19931806292 [18:57] Tobsn: rauchg_, yeah go ahead thrift.js is missing :P [18:57] zapnap_ has joined the channel [18:58] _announcer: Twitter: "Just little nodejs incorporated in #, which sounds pretty nice part;)" [de] -- Michael Gajda. http://twitter.com/michaelgajda/status/19931954871 [18:58] rauchg_: i wish google gave up on google code and migrated to github [18:58] isaacs: rauchg_: it's not too late :) [18:58] Tobsn: i think you really dont want to see their code [18:58] drudge: people still use google code? [18:58] SubStack: rauchg_: agree [18:59] Tobsn: also i guess its not replicatable anyway [18:59] rauchg_: congrats isaacs-joyent.js [18:59] _announcer: Twitter: "Watched Ryan dahl's nodejs talk. Like the bit where he says "you'll only need one"" -- Richard Sage. http://twitter.com/richardsage/status/19931996745 [18:59] isaacs: rauchg_: thanks :) [18:59] Tobsn: btw. nevermind on the thrift.js - there is jsondra (http://github.com/joerussbowman/jsondra) [18:59] rauchg_: does that mean you don't participate in the knockout ? [18:59] rauchg_: :D [18:59] isaacs: rauchg_: npm is a sponsor and i'm a judge anyway :) [19:00] Tobsn: is that knockout thing only for ruby? [19:00] isaacs: Tobsn: ... [19:00] jesusabdullah: Don't forget isaacs, vote for me! [19:00] isaacs: Tobsn: it's only for JS [19:00] ashleydev has joined the channel [19:00] jesusabdullah: Tobsn: That's the rails rumble [19:00] rauchg_: it's only for node haha [19:00] Tobsn: oh i thought i read something about node.js and ruby or something and was confused from the start [19:00] jesusabdullah: *rimshot* [19:00] Tobsn: but im not a huge fan of those x hours competitions [19:00] mjr_: Tobsn: can you put JS code in a spreadsheet cell and have it go fetch URLs and stuff to populate the contents of the cells? [19:01] jesusabdullah: :o [19:01] Tobsn: mjr_, idk - but i remember reading something about javascript and google products [19:01] SubStack: I should watch that google talk since I don't feel like working right now [19:01] jesusabdullah: SubStack: Which? [19:01] mjr_: SubStack: how awesome would it be if you could have your google apps talking back to your own node via dnode or whatever. I assume they'd have it run in theiri own sandbox somehow. [19:01] Tobsn: jesusabdullah, probably the last one about node [19:01] jesusabdullah: SubStack: My sims crashed so I decided to just run them serially, which means they'll take a REALLY LONG TIME [19:02] figital has joined the channel [19:02] programble has joined the channel [19:02] cardona507: so if I have a file called scripts.js and it is in the javascripts folder in my express scaffolding - how do I point at scripts.js? [19:02] _announcer: Twitter: "Hoping for a complete nodejs framework soon. I want to concentrate on features not plumbing #node.js #laZycoding" -- Richard Sage. http://twitter.com/richardsage/status/19932242558 [19:03] rwaldron has joined the channel [19:03] _announcer: Twitter: "@atmos i wouldn't call every Apache project + node.js + dojo + SFC projects + all Mozilla projects niche :)" -- Mikeal. http://twitter.com/mikeal/status/19932263524 [19:03] SubStack: jesusabdullah: http://www.youtube.com/watch?v=F6k8lTrAE2g # I think this is the one [19:03] jesusabdullah: SubStack: Sweet [19:04] mjr_: I'd really like to see that google "longest thread ever" about node.js if anybody should happen to run across it. [19:04] _announcer: Twitter: "I liked a YouTube video -- Node.js: JavaScript on the Server http://youtu.be/F6k8lTrAE2g?a" -- Tomas. http://twitter.com/lexxsoft/status/19932361746 [19:04] mjr_: If indeed it is true. [19:05] SubStack: somebody inside google should plot discussion thread lengths for all of their tech talks [19:06] mjr_: yes, possibly using map/reduce somehow. [19:06] JimBastard has joined the channel [19:06] _announcer: Twitter: "@dfinke @sshishkin Powershell is nice ... if you can't use #nodejs and #vowsjs http://vowsjs.org ;-)" -- Charlie Robbins. http://twitter.com/indexzero/status/19932484956 [19:06] isaacs: !tweet @richardsage Have you checked out connect or fab or express or any of the other web framework type things? [19:08] _announcer: Twitter: "Node.js: JavaScript on the Server http://youtu.be/F6k8lTrAE2g" -- Comanici Paul. http://twitter.com/darkyndy/status/19932551356 [19:08] shreekavi has joined the channel [19:09] drudge: oh noes, mape your warroom is down [19:10] JimBastard: !tweet @indexzero #vowsjs owns, so does #nodejs [19:10] JimBastard: drudge: this is the war room [19:10] mape: drudge: nog at all? [19:10] JimBastard: mape just visualizes it [19:10] JimBastard: ;-) [19:10] mape: It is fully in effect [19:10] mape: tracking done ruby folks for extermination [19:11] mape: drudge: I would think either you are behind a corp fw that blocks ports or you are using a http proxy that doesn't handle ws [19:11] jelveh has joined the channel [19:11] mape: Or you are a spy [19:11] drudge: i think it's all three [19:11] JimBastard: war games works for me [19:11] mjr_: get it down to 2, and then I think they cancel each other out. [19:12] mape: ACTION puts a hit on drudge  [19:13] mape: drudge: oh.. doesn't work as in it doesn't show you? [19:13] drudge: no, says 0 activity, looks to be a firewall issue on my end [19:13] mape: ah k [19:16] JimBastard: drudge: what browser? [19:16] mape: bah the rubs are mobilising: http://rails-wargames.peepcode.com/ [19:16] drudge: chrome 5, safari 5 [19:16] JimBastard: AHAHAH mape [19:17] gf3: ryah: ping [19:17] ryah: yo [19:17] drudge: what's up ryah [19:17] gf3: ryah: `Function#bind` is currently broken in node, and throws errors (need this V8 commit: http://github.com/v8/v8/commit/782dbd89e250a9f6a6334c7675aec8e296e85e40 ) [19:18] JimBastard: mape, why is your license removed? [19:18] JimBastard: on the rails one? [19:18] gf3: ryah: :( http://img.gf3.ca/cb3d27efeccad22f8ae9c5f341415dd9.png [19:18] mape: JimBastard: It is removed on the github one, one license file in the root should be enough no= [19:18] mape: *? [19:19] JimBastard: was just curious, caus if you view source on it you get no credit [19:19] bradleyprice has joined the channel [19:19] JimBastard: didnt know if that was on purpose or not [19:19] aheckmann: gf3: it's already fixed in v8 [19:19] cardona507: this is my GET http://gist.github.com/501151 - as you can see I am telling it not to use the layouts and to load a file called stuff.ejs - stuff.ejs lives in the views folder - I also have a file called scripts.js living in the public/javascripts directory - how do I point to the js file? [19:19] gf3: aheckmann: yes, that's the commit I literally JUST linked [19:19] gf3: aheckmann: it would be sweet if it were in node though :) [19:20] aheckmann: gf3: soon i'm sure [19:20] mattly has joined the channel [19:20] mape: JimBastard: ah k, yeah, no, I have things that have credits on them. So I removed it on the github one, just haven't gotten the time to replace the node one [19:20] aheckmann: gf3: looks like 2.3.4 i think [19:20] JimBastard: sure, just looking out [19:20] d0k has joined the channel [19:20] gf3: ryah: anyway, thought I'd bring it to your attention in case you weren't already aware :) [19:20] mape: JimBastard: Yeah, thanks [19:20] CIA-77: node: 03Ryan Dahl 07master * rb2a2bb7 10/ deps/v8/src/v8natives.js : [19:20] CIA-77: node: [v8] Remove global.print from v8natives.js (fixes issue 791) [19:20] CIA-77: node: Review URL: http://codereview.chromium.org/3045016 - http://bit.ly/aDlAT5 [19:20] ryah: gf3: ---^ [19:21] gf3: ryah: <3++ [19:21] mape: Are there plans on adding console.dir/time ? [19:21] aheckmann: ryah: :) [19:21] JimBastard: ?no u [19:21] ryan_gahl: isaacs: ping [19:21] JimBastard: dammit [19:23] _announcer: Twitter: "watching "Node.js: JavaScript on the Server" http://youtu.be/F6k8lTrAE2g #nodejs #javascript" -- Régis Gaidot. http://twitter.com/rgaidot/status/19933419047 [19:23] isaacs: ryan_gahl: yo [19:24] ryan_gahl: isaacs: do you have that gist handy that you put together last week re: my eventEmitter patch? [19:24] ryan_gahl: (should have bookmarked) [19:24] ryan_gahl: (watched, rather) [19:24] isaacs: ryan_gahl: http://gist.github.com/489119 [19:24] isaacs: ryan_gahl: also, it's the third thing here: http://gist.github.com/isaacs [19:25] ewdafa has joined the channel [19:25] ryah: mape: will accept them [19:25] ryah: mape: if you do it [19:25] mape: ryah: k [19:25] tmpvar has joined the channel [19:26] ryan_gahl: isaacs: thanks - I was thinking you had the AOP'ing of the once listeners in there too [19:26] isaacs: ryan_gahl: i think maybe that was just in irc [19:27] ryan_gahl: yeah, i think so [19:27] MattJ100 has joined the channel [19:27] jchris has joined the channel [19:28] gf3: ryah: Thanks for caring, man. This is why people love node so much. [19:28] ashleydev: who works on the connect logger middle ware? [19:28] ashleydev: I want to add some features [19:29] isaacs: ryan_gahl: http://gist.github.com/501168 [19:29] joshdulac has joined the channel [19:29] indexzero: tmpvar in the house [19:30] konobi: isaacs: some congratulations are in order i believe [19:30] isaacs: konobi: yeah! [19:30] isaacs: konobi: i'm psyched. [19:30] tmpvar: yo, what up [19:30] konobi: isaacs: welcome on board! [19:30] PauloLanger has joined the channel [19:30] sh1mmer has joined the channel [19:30] isaacs: konobi: thanks :) [19:31] konobi: when you starting? [19:32] isaacs: konobi: Sep 6 [19:32] mape: isaacs: Yeah, scored a great job there :) And idea what you will be working on in relation to the public use of node.js? [19:32] isaacs: mape: not sure, exactly. joyent is doing some exciting stuff, and node is a part of that. [19:33] _announcer: Twitter: "Function#bind() is now ready to go in #nodejs HEAD http://cot.ag/auTS4U" -- Aaron Heckmann. http://twitter.com/aaronheckmann/status/19934008857 [19:33] phiggins has joined the channel [19:33] isaacs: mape: but whether i'm doing stuff to node or with node, or a little of both, is yet to be determined. [19:33] _announcer: Twitter: "the first commit to node.js was 18 months ago. http://github.com/ry/node/commit/9d7895c567e8f38abfff35da1b6d6d6a0a06f9aa" -- Ryan Angilly. http://twitter.com/angilly/status/19934035378 [19:34] mape: Cool either way :) Working in the same group/department as ryah? [19:34] isaacs: mape: yeah, i'll be the other JavaScripter in the SF office. [19:34] mape: Ah neat, one more to hold down the fort [19:35] Tobsn: isaacs, whens a process manager for node coming? (similar to php-fpm) [19:35] isaacs: Tobsn: that's what i'd like to evolve node-supervisor into. [19:35] kodisha has joined the channel [19:35] isaacs: Tobsn: right now, it's just a little restarter thing. [19:36] Tobsn: because i have the problem that i want to run multiple instances of the same script but i dont want to write one startup script per script and n config blocks in monit ;) [19:36] mape: Tobsn: Then use a multi worker? [19:36] Tobsn: it would be nice if there would be a C written controller that keeps track of the "children" kinda like fpm does it [19:36] Tobsn: maybe start/kill based on load or other paramters [19:37] isaacs: Tobsn: if it's an HTTP server, you should check out connect and spark [19:37] Tobsn: yeah, i was on looking at spark [19:37] isaacs: Tobsn: wasn't there some otehr thing, like node-multiserver or whatever? i forget thename. [19:37] Tobsn: gonna look into it [19:37] Tobsn: hmm, didnt found anything so far besides spark [19:38] FransWillem has joined the channel [19:40] isaacs: Tobsn: ah, here it is: http://github.com/kriszyp/multi-node [19:40] benburkert has joined the channel [19:40] sh1mmer has joined the channel [19:40] isaacs: Tobsn: no package.json :( [19:41] Tobsn: you think its possible to just start n+1 processes like php-fpm does and utelize it like php within nginx/lighttpd over proxy/socket [19:41] isaacs: Tobsn: yeah, but without nginx/lighttpd, even [19:41] Tobsn: well the problem is if you run multiple processes you need multiple ports [19:42] isaacs: Tobsn: nope! [19:42] Tobsn: ? [19:42] isaacs: Tobsn: start as many child procs as you have cores, and sendFD the incoming http socket to all of them (spark and multinode wrap up the complexity a bit) and the kernel will load balance the socket across processes [19:42] Tobsn: but i cant start 20 instances all on port 80 - or did i missed something within nodejs? [19:42] isaacs: Tobsn: you start one proc on port 80, and it starts 20 children and shares the FD with all of them. [19:42] Tobsn: FD? [19:43] isaacs: FD = file descriptor [19:43] isaacs: ie, the handle to the socket [19:43] Tobsn: aaah [19:43] Tobsn: sure [19:43] Tobsn: so you keep one node as load balancer/reverse proxy up front [19:43] tjholowaychuk: ashleydev: what do you want to add? [19:43] isaacs: that's actually how nginx does multiple worker processes all on the same port [19:43] _announcer: Twitter: "another huge score for the joyent engineering team and node.js. welcome @izs http://bit.ly/a6fp6x" -- Brock Whitten. http://twitter.com/sintaxi/status/19934623819 [19:43] Tobsn: but that way you start nodejs listen on a socket not on a port, right? [19:44] ashleydev: tjholowaychuk: ability to log do different destination with inheritable overridable configs ala: http://search.cpan.org/~miyagawa/Log-Dispatch-Config-1.03/lib/Log/Dispatch/Config.pm [19:44] isaacs: Tobsn: same difference, i believe. check out multinode [19:44] Tobsn: k, will do [19:44] tjholowaychuk: ashleydev: you can just redirect [19:44] Tobsn: thanks for the quick help :) [19:44] tjholowaychuk: I wouldnt mind having a write stream though [19:45] isaacs: Tobsn: seriously, it makes it stupid easy :) spark, too [19:45] isaacs: Tobsn: your code doesn't even have to have any concept of child procs or any of that noise. [19:45] Tobsn: i just dont trust stupid easy :P [19:45] isaacs: it Just Works. [19:45] ashleydev: tjholowaychuk: hmm [19:46] isaacs: Tobsn: fair enough. well, the code is open, and only a couple hundred lines. [19:46] Tobsn: im talking 10k lost every 15 minutes if its dead - so i need to make sure its running 100% [19:46] isaacs: Tobsn: if you have that much money riding on it, maybe you want software thats post-1.0? not that i don't think node is a great choice for everything ever, but... i dunno, i'd be scared of it. [19:47] Tobsn: yeah im gonna look at it - im translating flexihash into a module right now for consistant memcache stuff... redundancy in a pool etc. when im done with that im gonna look into the multinode [19:48] Tobsn: isaacs, you always have to be open to new things. mongodb replaced our database a couple month ago (4 servers each with 292 gig ram) - now comes the frontend side and after half a year of watching the process of lighttpd v2 (non blocking LUA) etc. - i think nodejs is a good choice. [19:48] isaacs: Tobsn: your courage is admirable, sir. [19:50] Tobsn: well, i never made a wrong decision in terms o technology and im pretty sure nodejs will not just die and the whole architecture concept of nodejs is perfect for analytics/ad serving etc. - it feels like its made for tracking & serving small chunks of code ;) [19:50] Tobsn: i have the choice of learning LUA like a crazy person or going apeshit on erlang/whatnot - so i go with occams razor ;) [19:50] Tobsn: and nodejs is the result [19:50] isaacs: yep. [19:50] isaacs: one language ftw [19:50] Tobsn: yep [19:50] isaacs: or at least, one interpreted language. [19:50] isaacs: you've still got C in there [19:51] mjr_: If only it was just C and not all of that C++ craziness. [19:51] Tobsn: its still so nice to work with because you already know how it "will" "possible" work thanks to JS... [19:52] JimBastard: Tobsn: did you just say 10k dollars lost ? [19:52] JimBastard: with 15 minutes of downtime? [19:52] Tobsn: peak, yep [19:52] JimBastard: uhhhhhh [19:52] JimBastard: and you are using node? [19:52] isaacs: mde: seeing people retweet that is weird. it looks like you're saying that you're moving in with my girlfriend. [19:52] Tobsn: not yet [19:52] Tobsn: but soon [19:52] JimBastard: uhhhh [19:52] JimBastard: lol [19:52] Tobsn: ;) [19:53] Tobsn: well i just dont want to go with PHP again because its becoming annoying... the whole request/sec issues you have etc. [19:53] JimBastard: coming from someone who had to oversee a realtime data system that did millions of dollars of transactions a month, i just threw up a little [19:53] isaacs: mjr_: i actually kinda dig v8's C++ api. ti's actually a lot more organized than JSC's C api, imo [19:53] isaacs: mjr_: or spidermonkey's [19:53] Tobsn: lol [19:53] JimBastard: we used java, obviously [19:53] JimBastard: and cold fusion (laughable) [19:54] Tobsn: well so far we use php and some parts that have to be faster and are short executions i rewrote in LUA [19:54] Tobsn: and plugged it into separate lighttpd processes [19:54] JimBastard: Tobsn i think getting node in your stack is actually very possible, you just gotta be careful [19:54] Tobsn: i know [19:54] isaacs: Tobsn: ^ ++ [19:55] Tobsn: thats why im researching since 2 weeks [19:55] JimBastard: like all mission critical systems, expect failure at any point that could possibly fail [19:55] paulo_langer: Hi guys, I´m considering to use node.js and mongoDB in a web project where I need a http server and a way to change inst. messages between two or many clients when some mongoDB object changes. What´s the best way to do that? [19:55] aho has joined the channel [19:55] Tobsn: i know... the system was running for half a year on rackspace cloud - it was build to handle a complete outage with amazon EC2 failover [19:55] nefD: i just threw up in jimbastard's mouth a little =\ [19:56] JimBastard: nefD: dude, i usually have to pay japanese girls a shit ton of money for that service [19:56] JimBastard: thanks! [19:56] nefD: kthx np keke lol bbq [19:56] JimBastard: WTFBBQ [19:56] nefD: 1` [19:56] Tobsn: thats why im probably just gonna start multiple instances on multiple servers and find a solution for the frontend that is more stable with a none nodejs failover (keep serving stuff pregenerated over a simple php/lua script from memcache or something) [19:57] JimBastard: http://www.gifbin.com/bin/1237899710_ZergRushGif.gif [19:57] JimBastard: Tobsn: we actually have been developing a hosting platform for node that does that [19:57] JimBastard: but im sure its way more generic then what you need [19:58] isaacs: oh, weird, it looks like multi-node doesn't actually do sendFD [19:58] Tobsn: oh btw. what i didnt figure out yet - how does nodejs work with databases/memcache/etc. stuff like that? does it share the socket connection or something? [19:58] isaacs: it's just stdio-ing it up [19:58] Tobsn: i dont know that part of the internals [19:58] JimBastard: isaacs: isnt that a huge perf hit? [19:58] JimBastard: Tobsn: it depends how you set it up [19:58] sh1mmer: paulo_langer: what do you mean change int messages between clients? [19:58] isaacs: JimBastard: yeah, but i think it might predate the sendFD stuff [19:59] JimBastard: i thought he released that like the same time [19:59] sh1mmer: paulo_langer: do you mean sending a message to a client if the database changes? [19:59] JimBastard: odd [19:59] Tobsn: well if i do require the module and i create a new object form it and connect to it... what happens when the second request comes in? new connection - is it persistent - ?! [20:00] Tobsn: paulo_langer, http://socket.io - and use memcache/redis [20:00] isaacs: oh, no, it's sharing the file descriptor... [20:00] Tobsn: you mean me or the multi node? [20:00] isaacs: multi-node [20:00] Tobsn: k [20:00] isaacs: i was getting confused by some twisty logic goin on in this thing [20:01] deepthawtz has joined the channel [20:01] Tobsn: well im just concurned that i will not realize that the DB connection is gone OR i have to many connections open [20:01] paulo_langer: shlmmer, humm.. no... well, imagina a forum´s post. let´s imagina that there´s a way to follow that post. If someone send a comment...as I am following it...would receive a message...a instant message..a simple warning or the comment by itself...something like that. [20:01] Tobsn: paulo_langer, normal forums do that on page load [20:01] siculars has joined the channel [20:02] Tobsn: or have an iframe that refreshes every 5-20 seconds or something [20:02] paulo_langer: Tabsn, yes...but it was an exemple :) [20:03] Tobsn: so does the single threads etc. exchange the db connection? [20:03] Tobsn: does anyone know that? [20:04] _announcer: Twitter: "Digging into node.js : it has rack and sinatra clones ! Connect http://is.gd/dTwiq and Express http://is.gd/dTwkY" -- Vincent Behar. http://twitter.com/vbehar/status/19935854794 [20:04] paulo_langer: Tabsn, I wouldn´t like to do that kind of 5-20 seconds refresh. I´d like it works fast..like a instant message..like when someone get online and we are warned [20:06] _announcer: Twitter: "Riak took even longer than Node.js to build. #justsayin" -- Tom. http://twitter.com/sh1mmer/status/19935977657 [20:06] Tobsn: http://socket.io - said that before - thats instant [20:06] Tobsn: or any other kind of instant message implementation in javascript [20:07] paulo_langer: Tobsn, and I could do that with node.js, right? [20:07] Tobsn: ye [20:07] Tobsn: p [20:09] paulo_langer: thanks [20:12] jakehow has joined the channel [20:15] _announcer: Twitter: "I like nodejs, but the interactive shell is kind of annoying." -- Jeremy Stephens. http://twitter.com/kindlyviking/status/19936474668 [20:15] n3v3le1 has joined the channel [20:16] tjholowaychuk: wtf? lol then dont use it [20:16] creationix: tjholowaychuk: did you see this http://www.sencha.com/blog/2010/07/07/save-the-date-for-sencha-conference-2010/ [20:16] creationix: we get to give a Connect session! [20:16] tjholowaychuk: weeee [20:17] femto has joined the channel [20:17] tjholowaychuk: to bad I fail at public speaking lol [20:17] creationix: tjholowaychuk: I don't mind giving the actual presentation if you don't want to [20:17] ryan_gahl: tjholowaychuk: creationix: okok, i'll do it ;) [20:17] tjholowaychuk: creationix: for sure, I'll just stand there and look like a tool haha :D [20:18] mape: tjholowaychuk: Just faint, and have creationix do it [20:18] mape: Will make em remember it ;D [20:18] creationix: lol [20:18] sh1mmer has joined the channel [20:18] tjholowaychuk: im pretty dyslexic so best I dont present much lol [20:18] creationix: I'm pretty bad about filling my whole alloted time slot [20:18] ryan_gahl: tjholowaychuk: step .5: imagine them in underwear, step 1.0: acquire underwear... [20:18] tjholowaychuk: to much talking or to little? [20:19] paulo_langer: Tobsn, just with node.js I could send messages from server to client(s) ? I don´t need always a full-time open sockect connect...just to ensure that the client will receive the message when the server sends it. [20:19] creationix: swdc was easy, I didn't have a time slow [20:19] creationix: *slot [20:19] tjholowaychuk: ryan_gahl: haha :p [20:19] creationix: but at txjs I got done like 20 minutes early [20:19] Tobsn: well for that you need a consistent connection [20:19] tjholowaychuk: I have only spoken at a few but it was difficult to time things [20:19] Tobsn: if you want to have it real time [20:19] tjholowaychuk: I felt really rushed because I wanted to get everything in [20:19] tjholowaychuk: but I still didnt get everything in [20:19] Tobsn: as i said, the other solution is to check the notifications on page load [20:19] mape: creationix: that is when you hope people have questions or are nice enough to ask interesting questions [20:20] tjholowaychuk: creationix: do we have / need a demo of some kind? [20:20] creationix: yeah, I had some good questions at swdc [20:20] Tobsn: because nobody really want to know by the second who in a forum is online right now [20:20] creationix: tjholowaychuk: I'm sure we will, it's a ways off [20:20] tjholowaychuk: true true [20:20] Tobsn: paulo_langer, http://plugins.jquery.com/project/Growl ;) [20:20] _announcer: Twitter: "Very tired. Glad I only had a partial week. Would like to play some more with #nodejs but I don't think I can move right now..." -- Gilles Ruppert. http://twitter.com/elduderino78/status/19936764268 [20:21] mape: As long as you don't get the "I just want to show how smart I am so I'm going to pretent to ask a question" people [20:21] creationix: heh [20:21] tjholowaychuk: creationix: shesh I have Express people putting logger() at the bottom of the stack and errorHandler at the top lol [20:21] Tobsn: http://plugins.jquery.com/project/Growl-for-the-net-and-jQuery - there ya go -that one looks nice [20:21] _announcer: Twitter: "teeeeeeeeeestiiing with # Express nodejs" [pt] -- Sascha Depold. http://twitter.com/sdepold/status/19936847033 [20:22] creationix: tjholowaychuk: hmm, that doesn't work [20:22] tjholowaychuk: creationix: no I know lol its just weird to see what some people do [20:22] guybrush: creationix, tjholowaychuk, will this session be public available afterwards - maybe in form of a video? :p [20:22] creationix: guybrush: not sure [20:22] mattly has joined the channel [20:23] guybrush: maybe you can bootleg a camcorder into the session *g* [20:23] Tobsn: just stream it on justin.tv [20:23] Tobsn: :P [20:26] aconbere has joined the channel [20:26] admc has joined the channel [20:27] dmcquay has joined the channel [20:27] reid has joined the channel [20:27] paulo_langer: Tobsn, Growl is nice but I just worry about client do the checking thing. If my resource got no changes in ...don´t know..2 hours..why I´m checking it every 5-20 seconds? That´s why I wanted this on server side..when something changes..the client is warned... [20:27] ryan_gahl: getting make error with latest node... did I corrupt my local codebase maybe? [20:27] ryan_gahl: "Build failed: -> task failed (err #1): [20:27] ryan_gahl: {task: cxx node.cc -> node_4.o} [20:27] tmpvar: ryan_gahl, gist the whole thing [20:28] ryan_gahl: http://gist.github.com/501260 [20:28] reid has joined the channel [20:29] reid has joined the channel [20:29] ryan_gahl: (just the relevant stuff) [20:30] ryan_gahl: non utf-8 char? [20:30] ryan_gahl: or unicode, or meh [20:30] _announcer: Twitter: "dying to get my hands dirty with nodejs.org" -- Nate Anderson. http://twitter.com/nateanderson/status/19937361808 [20:31] ryan_gahl: oops, just did another git pull, got an update, trying again [20:32] reid has joined the channel [20:33] Tobsn: paulo_langer, well you cat use redis for it, write events into a global and a user specific list with a queue limit [20:33] JimBastard: !tweet @nateanderson dooo iiittt [20:33] Tobsn: just lpush new messages into it and keep a max of like 10 [20:33] ryan_gahl: !tweet @nateanderson except, it's more getting "getting your hands clean" ;) [20:34] ryan_gahl: bah, BAD TYPING [20:34] ryan_gahl: !tweet @nateanderson bad typing there... it's more LIKE "getting your hands clean" ;) [20:35] _announcer: Twitter: "when you're done coding: http://tinyurl.com/27utc7j (not just Node.js but how to build a scalable server)" -- Chris Continanza. http://twitter.com/chriscontinanza/status/19937612366 [20:36] paulo_langer: sorry, redis???!?! [20:37] ryan_gahl: hmm, still getting that build error after git pull [20:37] paulo_langer: Tobsn, sorry, redis???!?!?! [20:37] ryan_gahl: ryah: "default/src/node_natives.h:53: error: expected initializer before �-� token" -- any idea? [20:38] TrisMcC: paulo_langer: http://code.google.com/p/redis/ ? [20:39] gf3_ has joined the channel [20:39] shreekavi has joined the channel [20:41] ryan[WIN] has joined the channel [20:41] mechanate has joined the channel [20:41] tmpvar: just as an FYI, we are using Scott Gonzalez's node-chat for deployment here at arc90 [20:41] kodisha has joined the channel [20:42] tmpvar: got a little build bot that manages deployments to a cluster :) (code is flaky so we have an elongated deploy process for the momemnt) [20:42] JimBastard: lolwut tmpvar [20:42] JimBastard: tmpvar: you got plans tonight? javascript party? [20:42] tmpvar: i think i could handle that [20:42] tmpvar: im working on composer this weekend [20:42] JimBastard: im gonna try to be home by 6ish [20:42] creationix: composer ftw [20:43] tmpvar: I think carena is ready for dragables/dropables/composites/etc [20:43] tmpvar: so ill just slap some code together and see if I can integrate with conductor [20:43] paulo_langer_ has joined the channel [20:43] JimBastard: woooot [20:43] tmpvar: creationix, ^_^ [20:43] tmpvar: bout time, right? [20:43] ryan_gahl: sooo, no one else has any issues building from latest? [20:44] tmpvar: ryan_gahl, sorry, had a sidewalk meeting :P [20:44] ryan_gahl: np [20:44] tmpvar: oh wow [20:44] mape: ryan_gahl: works lovely here [20:45] ryan_gahl: mape: OS? [20:45] mape: linux, debian 4 [20:45] tmpvar: ryan_gahl, its doubful, did you try a make distclean ? [20:45] kevinh__ has joined the channel [20:45] ryan_gahl: i'm using ubunto 10.04 [20:45] ryan_gahl: yeah, i do distclean every time [20:45] tmpvar: hrm [20:45] mape: ryan_gahl: I'm using: make clean && git pull && ./configure && make && make install [20:46] mape: in upgrade.sh, so simple sudo sh upgrade.sh does the trick every time [20:46] tmpvar: make distclean && ./configure --debug && sudo make install [20:46] ryan_gahl: should i just rm -r it and re-pull fresh? have no idea how that file got an invalid token [20:46] tmpvar: that may work [20:46] tmpvar: git status ? [20:47] kevinh__: anybody know what might be causing httpclient connections to timeout with DNS issues. despite the fact that i can access the website just fine via wget and curl? [20:47] ryan_gahl: git status: nothing [20:47] tmpvar: kevinh__, what is the website? [20:47] kevinh__: im just testing with a blog of mine [20:47] kevinh__: blog.rubynginx.com [20:47] ryan_gahl: bah, just killing local copy and re-fetching [20:48] kriszyp has joined the channel [20:48] kevinh__: tried a few websites in there all behave the same. it hangs and then errors [20:48] tmpvar: strange [20:49] creationix: pquerna: do you know what might cause dns timeouts? [20:49] _announcer: Twitter: "Ryan's talk at google about node.js: http://bit.ly/aaMWl5" -- Artur Cistov. http://twitter.com/cistov/status/19938435776 [20:50] JimBastard: kevinh__: you prob doing the request wrong [20:50] kevinh__: likely. [20:50] JimBastard: gist? [20:51] kevinh__: http://gist.github.com/501297 [20:51] bradleymeck: grrrr how to se up prototype properties w. object.defineProperty? [20:51] kevinh__: also tried with http:// before the url same results [20:52] jesusabdullah: Noob question time! I want to do the equivalent of curl -d "a=stuff" http://url.com but I'm sucking at it [20:52] satori_ has joined the channel [20:52] tmpvar: bradleymeck, you cant tdo that? [20:52] kevinh__: it's old code that i tried to update to latest node ive been out of date [20:52] creationix: JimBastard: watch out, kevinh__'s a ninja [20:52] kevinh__: lmfao [20:52] bradleymeck: tmpvar, i wants it though [20:52] JimBastard: lolwut? [20:52] jesusabdullah: I use a request, right? But my request isn't understandable! [20:52] jesusabdullah: :C [20:52] rubydiamond has joined the channel [20:53] jesusabdullah: oh hey! Am I doing the same thing as kevin? [20:53] kevinh__: maybe :) [20:53] bradleymeck: like function x(){} Object.defineProperty(x.prototype,..) wont work at all? [20:53] kevinh__: once we figure out what i'm doing [20:53] jesusabdullah: Well, I get a 400 error [20:53] jesusabdullah: haha XD [20:53] kevinh__: oh. [20:53] kevinh__: i get one of these [20:54] kevinh__: Error: ETIMEOUT, Timeout while contacting DNS servers [20:54] kevinh__: Error: ECONNREFUSED, Could not contact DNS servers [20:54] jesusabdullah: >:O [20:54] kevinh__: seems to vary which one comes up [20:54] jesusabdullah: Weird! [20:55] bradleymeck: tmpvar what do you suggest for having getter/setters on a prototype? [20:55] vstb has joined the channel [20:56] creationix: bradleymeck: either Object.defineProperty or use the get/set literal when creating the object [20:56] bradleymeck: then prototype modifications wont be observed [20:56] creationix: bradleymeck: what do you mean? [20:57] rubydiamond has joined the channel [20:57] bradleymeck: if i make type X, X sets .y in constructor, someone changes X.prototype.y [20:58] chrischris has joined the channel [20:58] creationix: bradleymeck: not sure what you're trying to do [20:59] creationix: if prototype.y is a setter before X sets .y then setting .y will only call the setter, and not replace it [20:59] ryan_gahl: i've been pronouncing nginx "n - ginx" (hard g sound) :) [20:59] ryan_gahl: engine-x == much better [20:59] jesusabdullah: I like en-ginks [20:59] kevinh__: yeah i say it engine - x [20:59] tjholowaychuk: it is supposed to be engine-x no? [20:59] jesusabdullah: idk what it is :/ [20:59] creationix: yep [20:59] kevinh__: i think [21:00] jesusabdullah: google a gogo [21:00] tjholowaychuk: thats what I always thought [21:00] tjholowaychuk: pretty cool name [21:00] jesusabdullah: ah! hooray wikipedias [21:01] ryan_gahl: even worse is "ng - ginx" [21:01] bradleymeck: trying to get a hold of the this variable on a non-settable prototyped property that is a getter/setter (the get value can change, the set should throw). i can reduce an example, sec [21:01] ryan_gahl: ryah's google talk is great [21:02] tmpvar: bradleymeck, ive been known to use obj.prototype = { get monkey() { return this._monkey; } }; [21:02] _announcer: Twitter: "http://github.com/jadell/box2dnode # box2d ported to # nodejs" [pl] -- Beej Jorgensen. http://twitter.com/beejjorgensen/status/19939134483 [21:02] tmpvar: im suprised you cant use prototype.defineProperty() [21:03] _announcer: Twitter: "@ryah's #node.js talk at Google: http://youtu.be/F6k8lTrAE2g //aside from node stuff, he taught me the correct way to pronounce nginx" -- RyanGahl. http://twitter.com/RyanGahl/status/19939170471 [21:03] bradleymeck: im not, the Object ECMA 5 is using hidden closures not c++ it bones me constantly [21:04] tjholowaychuk: box2d for node is kinda useless right now [21:05] tjholowaychuk: looks like the automated port [21:05] tjholowaychuk: boo [21:05] JimBastard: heh, i think i might be the top module creator right now, i've got 20+ [21:05] JimBastard: granted they are mostly bullshit, but still [21:05] kevinh__: hey sometimes bullshit can be fun [21:06] JimBastard: http://github.com/marak [21:06] JimBastard: lot of little ones like: colors, say, play, asciimo [21:06] jesusabdullah: and broodmom [21:06] JimBastard: broodmother is actually super cereal [21:07] JimBastard: ive got a massive amount of cool code unreleased [21:07] tmpvar: bradleymeck, something like this? function a(){}; a.prototype={};Object.defineProperty(a.prototype, "test", {get: function() { return 1; }});var b = new a();console.log(b.test); [21:07] JimBastard: the reverse prox was just a very small slice off the broodmother stack [21:07] JimBastard: http://github.com/nodejitsu/node-http-proxy [21:07] kevinh__: did you see anything wrong in my gist jimbastard? [21:07] bradleymeck: yea, it comes out to undefined for me tmpvar [21:07] JimBastard: kevinh__: not really, sorry i gotta do this meeting now [21:07] indexzero: ACTION +1 to that thing I helped write [21:07] kevinh__: k np [21:07] JimBastard: indexzero: helped write? [21:07] JimBastard: indexzero: more like wrote [21:07] JimBastard: indexzero: i just smoked trees and wrote docs [21:08] indexzero: ACTION is modest to the end [21:08] tmpvar: it prints out a 1 for me [21:08] bradleymeck: wtf... [21:08] tmpvar: bradleymeck, ^^ [21:08] JimBastard: i did get the base code working though! [21:08] tmpvar: i can screenshot it if you need ;) [21:08] jesusabdullah: I'm pretty sure I saw JimBastard lighting up on that weird French chat thing [21:08] indexzero: kevinh__ Where's the gist for a late joiner to the bug party? [21:08] JimBastard: INTERNATIONAL INCIDENT [21:08] tmpvar: bradleymeck, i was trying in chrome though [21:08] JimBastard: okay, demo meeting, bbl [21:09] kevinh__: http://gist.github.com/501297 [21:09] indexzero: jesusabdullah Were you on that too? That was the javascript party at apartment jail last week [21:09] indexzero: apartment jail aka nodejitsu international headquarters [21:09] kevinh__: it fails to connect to any website i put in there. complaining about DNS problems. but wget or curl works fine command line [21:09] aconbere has joined the channel [21:09] bradleymeck: must be something im doing... wth [21:09] tmpvar: bradleymeck, http://gist.github.com/501324 [21:10] indexzero: kevinh__ have you tried stripping off the extra headers? I usually only send the host header unless I need to pretend to be a browser [21:10] mattly has joined the channel [21:10] jesusabdullah: indexzero: For like five minutes, yeah [21:10] kevinh__: i do want to pretend to be a browser. but ill give it a shot [21:10] jesusabdullah: haha, yahoo crackpipes [21:10] indexzero: kevinh__ ok, also, shouldn't line 25 be sys.puts not just puts? [21:11] indexzero: you might have it aliased up the scope, but I don't see a sys require anywhere either [21:11] kevinh__: perhaps. .. yeah its really old code im converting i think puts used to be in utils [21:11] Nafai has joined the channel [21:11] indexzero: kevinh__ ok, just sanity checking [21:12] indexzero: ACTION can't run it right now, but I will check it out in a few [21:12] indexzero: kevinh__ gl [21:12] bradleymeck: whew, talk about ugly, but i gots my eph tables, time to start the uglies [21:12] kevinh__: thanks [21:14] dylang has joined the channel [21:14] joshdulac: anyone done work with passing POST/GET variables to PHP through node? [21:15] tmpvar: joshdulac, mod_php or php cli? [21:16] joshdulac: tmpvar: either, I was assuming PHP cli would be easier to use - but I didn't even give mod_php a thought [21:17] joshdulac: tmpvar: and Ive heard mod_php is more insecure on LAMP servers than running PHP itself [21:17] tmpvar: well, with mod_php, you just need a proxy [21:17] tmpvar: mod_php is more insecure than php? [21:17] joshdulac: never used it, just hear-say =/ [21:18] jelveh has joined the channel [21:18] tmpvar: ok, so mod_php is simple, you just forward the request using a http client [21:18] jelveh_ has joined the channel [21:19] bmizerany has joined the channel [21:19] tmpvar: php cli is just about as simple as you could probably just execute the script with the get/post string [21:19] tmpvar: read from stdout/err and be done with it [21:20] joshdulac: that's what i was planning on doing [21:20] joshdulac: just checking if anyone had already done it [21:20] joshdulac: the only php module listed on the node repo is for using php functions inside .js files [21:21] tmpvar: i dont think there needs to be an "integration" because its like <30 lines of code [21:22] joshdulac: true [21:23] jacoblyles has joined the channel [21:26] waratuma1 has joined the channel [21:30] Omni5cience has joined the channel [21:33] mikeal has joined the channel [21:36] _announcer: Twitter: "@pbakaus Methods to reduce latency in multiplayer games? Or scalability of node.js w/ many connecting players, and synchronizing them." -- M. Kwan. http://twitter.com/kwogger/status/19941066781 [21:39] _announcer: Twitter: "@mde Yeah saw that. Looks great, but my JS serving is constrained to static files (i.e. no custom NodeJS service)" -- Peter Griess. http://twitter.com/pgriess/status/19941234380 [21:40] matt_c: ACTION just ran in to a bug in node-amqp and a pull fixed it. Fantastic. [21:40] jesusabdullah: http://gist.github.com/501359 Any ideas as to what I'm doing wrong? :( [21:40] _announcer: Twitter: "is playing with node.js" -- Phil Thompson. http://twitter.com/PhilAThompson/status/19941295113 [21:41] tmpvar: interesting [21:42] tmpvar: the Aves Engine is pretty smooth [21:54] nefD: yea, aves looks pretty awesome [21:55] vstb has joined the channel [21:55] tmpvar: partial redraw is interesting [21:55] jesusabdullah: What's aves? [21:55] nefD: one one hand, i hate that its not open source, on the other, it looks impressive enough that i cant blame them for going the commercial route with it [21:55] tmpvar: some canvas based hackery game engine [21:55] nefD: er, *on one [21:55] jesusabdullah: ah [21:55] jesusabdullah: I think I remember that [21:55] nefD: not canvas based! [21:55] tmpvar: oh, its not? [21:55] nefD: only uses canvas for allowing the user to click through the transparent portions of images [21:55] nefD: it uses vanilla html for rendering [21:55] tmpvar: ooh [21:55] tmpvar: lame! [21:55] nefD: blast rendering, they call it [21:56] nefD: supposedly it was 2-3x faster when rendering an isoemtric scene the size of the browser window [21:56] nefD: i believe it [21:56] tmpvar: http://tmpvar.com/project/composer/ -- press n for more boxen [21:56] nefD: canvas is great and all, but try maintaining a large size surface with lots of moving images, its gets pretty slow [21:56] tmpvar: nefD, ^^ ;) [21:57] Nafai has left the channel [21:57] nefD: images [21:57] tmpvar: eh, same thing [21:57] nefD: not at all the same thing! [21:57] tmpvar: hrm [21:57] nefD: to use an image in canvas, you must first have a dom representation to reference [21:57] tmpvar: sure [21:57] nefD: even after being cached, rendering a page sized canvas surface of moving images and such is quite slow [21:58] tmpvar: i thought you were saying the fill rate is slower [21:58] nefD: oh, no, canvas can be really quick with drawing functions, for sure [21:58] alexandere has joined the channel [21:58] tmpvar: so you dont actually "move the image" [21:58] nefD: cool demo btw :D [21:58] bradleymeck: nefD even w/ a backbuffer (secondary canvas) and clipping? [21:58] tmpvar: you just render it in a different location lol [21:58] nefD: no, you have to clear the canvas, and redraw the images which compose the scene [21:59] tmpvar: hrm, now I need to try this [21:59] nefD: bradleymeck: That would involve knowing where everything within the scene is supposed to be, determining the boundaries of the old and new positions of the moving object, and redrawing the relevant portions of the relevant objects/images [21:59] tmpvar: now where can i find a bunch of 64x64 images? :P [21:59] tmpvar: nefD, composer does that ;) [21:59] nefD: its complicated, but i do agree that its a proven technique.. lots of efficient rendering engines do it [21:59] shreekavi has left the channel [22:00] nefD: tmpvar: Yeah, but when working with rect calls its much easier [22:00] tmpvar: does clipping, partial re-rendering based on an overlaps/overlapped by cache, etc [22:00] tmpvar: im not sure I believe that [22:00] tmpvar: i will try it though to confirm [22:00] Tobsn: tmpvar, there are scrollbars! [22:00] Tobsn: :P [22:00] nefD: i will admit, all of this info is based on stuff ive read from other people, so i'd kinda like to see it proven by someone directly [22:00] tmpvar: ctx.drawImage(img,0,0,img.width,img.height); [22:01] tmpvar: Tobsn, but you can drag the whole thing around! [22:01] bradleymeck: nefD true, but then you gain better access for things like particle effects, plus rect bounding boxes can be pinged to see if points hit them, pretty damn fast [22:01] Tobsn: i dont care! [22:01] Tobsn: there are scrollbars! [22:01] nefD: tmpvar: Ah, but you only want to draw *part* of the image [22:01] tmpvar: Tobsn, lol... so my canvas size is off [22:02] bradleymeck: i have an unfinished engine that does pixel based rotation bounding boxes, havent pushed it beyond simple bouncy balls really [22:02] nefD: i think what kind of skews some of the pros and cons for aves is the isometric engine [22:02] nefD: you no longer have a nice, clean, rectangular grid [22:02] nefD: images, being square themselves, now overlap [22:03] nefD: an isometric tile will overlap with exactly 4 other isometric tiles, not including any objects or whatnot drawn over the tile [22:03] tmpvar: interesting [22:04] mtodd_ has joined the channel [22:05] nefD: http://t3.gstatic.com/images?q=tbn:d_ArpyAq5EqZNM:http://i30.tinypic.com/28sroyp.png&t=1 [22:06] quirkey has joined the channel [22:06] tmpvar: i guess best case, you could calculate the redraw area, and just paint it with the image partials [22:06] tmpvar: paint it manually I mean [22:06] tmpvar: I think thats about as fast as its going to get [22:08] JimBastard has joined the channel [22:11] tmpvar: nefD, It really doesn't seem *that* difficult [22:11] tjholowaychuk: mape: haha I just about went go to do "new Map()" and did "new Mape()" :p [22:11] _announcer: Twitter: "Is there really no working library in node.js for parsing multipart form data? *Really*?" -- Nathan Weizenbaum. http://twitter.com/nex3/status/19943093660 [22:11] Vekz has joined the channel [22:12] Blackguard has joined the channel [22:14] technoweenie: !tweet @nex3 see http://debuggable.com/posts/parsing-file-uploads-at-500-mb-s-with-node-js:4c03862e-351c-4faa-bb67-4365cbdd56cb [22:14] technoweenie: is that right [22:14] sechrist has joined the channel [22:14] technoweenie: yea it is [22:17] mscdex: node.js rules! [22:17] _announcer: Twitter: ".@ryah's talk on #nodeJS from Wednesday http://www.youtube.com/watch?v=F6k8lTrAE2g" -- Nikolas Coukouma. http://twitter.com/nikolasco/status/19943468930 [22:18] ryan_gahl: mscdex: you're on like a setInterval with that message [22:18] mscdex: :-> [22:18] ryan_gahl: :) [22:18] mde: mscdeeeeeeeeeeeeex ... :) [22:19] mde: What's happening, Noddies? [22:19] b_erb has joined the channel [22:19] _announcer: Twitter: "setInterval(function() { alert(" #node.js rules! "); }, 1);" -- RyanGahl. http://twitter.com/RyanGahl/status/19943554953 [22:19] jesusabdullah: I can't figure out how to post :C How sad is that? [22:20] jesusabdullah: That's a small interval! [22:20] ryan_gahl: :) [22:20] ryan_gahl: well, it fairly close to the correct amount of time to wait before node.js rules again [22:20] ryan_gahl: it's* [22:20] mscdex: mde: not much. continuing work on node-uno lol [22:20] mde: ryan_gahl: Would have been faster with nextTick, right? :) [22:20] jesusabdullah: :D [22:21] jesusabdullah: :o there's a nextTick? DANGEROUS [22:21] jakehow has joined the channel [22:21] mde: mscdex: Can we play it online? Are you going to get sued? [22:21] ryan_gahl: yes, faster because of overhead maybe, but as an expression it's ~== [22:21] mscdex: online yeah as a live demo. but it will be renamed of course [22:22] mde: ryan_gahl: Point. [22:22] mde: mscdex: "Ew, nooo!" [22:22] mscdex: ? [22:22] mde: You should rename it "ew, no!" [22:22] mscdex: oh haha [22:22] mde: Heheh [22:22] jesusabdullah: haha [22:23] mscdex: or "youknow" [22:23] mscdex: i dunno yet [22:23] mde: "You? Nooo!" [22:23] ryan_gahl: night all [22:23] isaacs_mobile has joined the channel [22:23] jesusabdullah: unoe [22:23] mde: ryan_gahl: 'Night, dude. [22:23] mscdex: i spent so long just designing the cards from scratch [22:24] mde: Obsessive-compulsive much? [22:25] _announcer: Twitter: "Scale Stack vs node.js vs Twisted vs Eventlet ... http://icio.us/hj5oj4" -- youichi kato. http://twitter.com/katoy/status/19943881896 [22:26] mscdex: well, i wanted them to look like the old-style uno cards [22:26] mscdex: heh [22:26] mde: I don't really remember Uno that well, but I do remember playing Skip Bo. [22:29] tmpvar: ok [22:31] mscdex: who is Bo and why are they getting skipped? [22:31] astrolin has joined the channel [22:34] sudoer has joined the channel [22:35] _announcer: Twitter: "in fact, all learning curves scare me a little. that's probably why i haven't learned emacs. node.js didn't seem to have much of one" -- Sam Elliott. http://twitter.com/Lenary/status/19944481617 [22:38] _announcer: Twitter: "Just wrote my first #node.js twitter feed. :)" -- Bradley Price. http://twitter.com/bradleyprice/status/19944655800 [22:39] zemanel has joined the channel [22:39] _mythz has joined the channel [22:42] vstb has joined the channel [22:50] creationix has joined the channel [22:53] benburkert has joined the channel [22:58] ajpiano has joined the channel [22:58] daralthus has joined the channel [22:59] jacoblyles_ has joined the channel [23:00] kevinh__ has joined the channel [23:01] _mythz has left the channel [23:01] daralthus: hi all [23:02] daralthus: does anybody know if I can use Connect with https? [23:02] cardona507: why does ejs not like single quotes? [23:03] tjholowaychuk: cardona507: cuz my implementation is weak lol it need love. I never use ejs but it's basically just resigs thing [23:03] tjholowaychuk: needs a few patches [23:03] tjholowaychuk: i dont have time ATM tho [23:03] cardona507: tjholowaychuk: its not week :) [23:03] cardona507: *weak [23:04] bradleymeck: !api parse [23:04] cardona507: you into jade? [23:04] Tobsn: http://vimeo.com/12814529 [23:04] tjholowaychuk: yup I use jade all the time [23:04] mscdex: bradleymeck: he's offline [23:05] _announcer: Twitter: "When you're 17 and in tech, you should be playing with node.js and creating beautiful designs, not worrying about outsourcing it." -- Garry Tan. http://twitter.com/garrytan/status/19946215033 [23:06] chinua has joined the channel [23:06] cardona507: i checked out jade - but the ruby project i am currently doing front end for is using HAML and has these insanely large pages. I find it really difficult to trace the DOM in that spacial way when I can't see the top of the markup (hopefully that makes sense). [23:06] cardona507: and I really like embedded ruby [23:06] cardona507: so ejs is a natural fit for me [23:06] ashleydev: cardona507: there are other ejs implementations [23:07] ashleydev: maybe those should be hacked into express in place of the one that comes with express ? [23:07] _announcer: Twitter: "@al3x on node.js - http://bit.ly/ctfaRu re: the scaling, i think he knows what he's talking about.. def a good read if your interested in it" -- Chris Jones. http://twitter.com/jonezy/status/19946331633 [23:07] tjholowaychuk: ashleydev: mine does not really "come" with express [23:07] ashleydev: cardona507: they may be better... what do you think tjholowaychuk [23:07] tjholowaychuk: it just complies with the same api. doesnt matter much to me, it just needs a regexp patch though [23:08] tjholowaychuk: whatever works [23:08] ashleydev: ok time to create the patch [23:08] ashleydev: bbiab w/a patch [23:09] mscdex: heh that guy pronounced the first a in javascript as in "at" [23:11] creationix has joined the channel [23:11] waratuma1 has joined the channel [23:12] creationix: mikeal: does couch have 2d indexes [23:12] creationix: or any database? [23:12] mikeal: 2d? [23:12] creationix: I have a huge data set and every object has an x and y coordinate [23:12] mikeal: what exaclty do you mean by that [23:13] mikeal: i see what you mean [23:13] creationix: and I very often want to query based on a range x1-x2,y1-y2 [23:13] mikeal: spatial indexing [23:13] creationix: in a aquare [23:13] mikeal: yes [23:13] mikeal: GeoCouch [23:13] deepthawtz has joined the channel [23:13] mikeal: PostGIS [23:13] mikeal: if you *only* have lat/long [23:13] mikeal: you can hack geohash support in to a btree [23:13] mikeal: but to do real geometries you need an rtree [23:14] creationix: I only need rectangle queries [23:14] creationix: no distances [23:14] creationix: should be a lot easier [23:14] creationix: or how could I add that to nStore? [23:14] creationix: what kind of index would I need? [23:14] mattly has joined the channel [23:16] creationix: basically, how do I index a query that's the intersection of two ranges? [23:16] mikeal: you need a btree [23:17] creationix: I know btrees are awesome for plain ranges, but I don't see how it helps for two ranges? [23:17] mikeal: or, if you want to keep with the processing heavy map/reduce style you have [23:17] mikeal: where each query iterates over all meta [23:17] mikeal: you can store the geohash in meta [23:17] mikeal: and then do the math on it [23:17] piratepenguin has joined the channel [23:17] mikeal: you can do *anything* with map/reduce [23:18] creationix: yes, but will it scale? [23:18] mikeal: it's just the more you do the more processing you incur [23:18] creationix: yeah, I plan on having LOTS of data [23:18] rauchg_: then the map/reduce job will take forever [23:18] tjholowaychuk: this for the pong thing? [23:18] creationix: tjholowaychuk: no, I gave up on pong [23:18] creationix: too much latency [23:18] tjholowaychuk: ah, what is it now? [23:18] mikeal: well [23:19] mikeal: i dunno [23:19] creationix: super secret :) [23:19] mikeal: if it's memory, it can't take that long [23:19] rauchg_: if it's memory it can't be LOTS [23:19] rauchg_: unless creationix has a nice distributed setup :P [23:19] mikeal: depends on how you define "lots" [23:20] mikeal: lots could be billions if you keep them in a compressed pagefile format [23:20] rauchg_: creationix: what's lots ? [23:20] creationix: not sure what lots is yet, but I'm pretty sure I don't want to loop over everything all the time [23:21] creationix: even if it's in ram, I don't want to loop over everything for every query [23:21] Ned_: mikeal: you're the websocket-server author [23:21] Ned_: ? [23:22] creationix: ACTION does some math to get very rough idea of "lots" [23:22] mikeal: not that i know of :) [23:22] Ned_: right, wrong guy :-( [23:22] Ned_: perhaps it's micheil [23:22] Ned_: ACTION gets confused [23:22] mikeal: creationix: you might be hitting the final wall in terms of what you can do without a sorted index [23:23] creationix: mikeal: yeah, I'm almost certain nStore won't work for what I'm doing [23:23] mikeal: the reason for sorting structures is so that you don't have to hit every key when you do a query [23:23] creationix: since it reads from disk for every read [23:23] creationix: yep [23:23] mikeal: well, you have the meta thing [23:23] mikeal: but it's not super efficient on memory [23:23] creationix: the meta thing won't stay part of nStore [23:23] creationix: it makes loading a db too slow [23:24] mikeal: because it eats up memory? [23:24] creationix: but there is nothing keeping me from having an index in ram that points to the nStore keys [23:24] creationix: mikeal: no, because of all the JSON.parse calls on startup [23:24] creationix: it's too slow [23:24] creationix: takes 4 minutes to initialize 5 million small rows [23:25] mikeal: i see [23:25] creationix: if I store just the key instead of all the meta it's 1:30 [23:25] creationix: still slow, but much better [23:25] mikeal: well [23:25] mikeal: actually [23:25] mikeal: you can store the key, length, and "type" [23:26] mikeal: if you use the header storage method [23:26] creationix: type? [23:26] mikeal: json, buffer [23:26] mikeal: cause if you want it to be really fast, you'll want to just store buffers some day [23:26] creationix: heh [23:27] creationix: well, either way, this particular problem needs some sort of sorted index [23:28] mikeal: someone should write an append-only btree in node [23:28] mikeal: i would be very happy [23:28] creationix: :) [23:29] creationix: mikeal: so is it possible for a btree to index rectangle queries? [23:29] creationix: just linear stuff right? [23:29] mikeal: it's a simple hack [23:29] mikeal: you hash the lat/long in to a string that is sortable [23:30] creationix: yeah, but then you're only indexing the first of the two right? [23:30] mikeal: to go to the closest node to that in the btree, then you go left and right and check if it's within the rectangle [23:30] mikeal: creationix: there is a hash that will do it properly [23:30] mikeal: but it always takes some additional filtering [23:30] dnolen has joined the channel [23:31] mikeal: at query time [23:31] mikeal: but lots of people do this [23:31] mikeal: it's well understood [23:31] mikeal: the MongoDB "spatial" indexing is just this [23:31] creationix: even with postGIS I often did post-filtering [23:31] mikeal: it's not real spatial indexing [23:31] mikeal: it's just geohashing in a btree [23:33] jesusabdullah: Who's GISing? [23:34] eisd has joined the channel [23:35] waratuma1 has joined the channel [23:36] creationix: mikeal: like bit-interleaving the coordinates? [23:37] jimt_ has joined the channel [23:38] kevm_ has joined the channel [23:40] shami has joined the channel [23:40] mikeal: http://en.wikipedia.org/wiki/Geohash [23:41] [[zzz]] has joined the channel [23:42] JimBastard has joined the channel [23:43] eazyigz has left the channel [23:44] technoweenie has joined the channel [23:45] pufuwozu_ has joined the channel [23:48] creationix: mikeal: I see [23:48] creationix: well, js is faster than I expected, I may be able to do this in ram for quite a while [23:48] ashleydev: what regex engine is node.js using? [23:49] mikeal: v8 [23:49] ashleydev: :P [23:49] ashleydev: serioiusly [23:49] ashleydev: is it pcre [23:49] tjholowaychuk: i think they wrote their own [23:49] tjholowaychuk: not sure [23:50] mde: ashleydev: RegEx is one of the basic JS datatypes: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/RegExp [23:50] ashleydev_ has joined the channel [23:50] paul_irish has joined the channel [23:50] creationix: ashleydev: no clue, maybe ask the V8 guys. I assume pcre [23:50] hober: see node/deps/v8/src/regexp.js [23:51] hober: and regexp-stack.cc in the same dir [23:51] hober: ec. [23:51] hober: *etc. [23:52] hellp has joined the channel [23:53] mde: According to Wikipedia, they are Perl-derived, but not precisely PCRE. [23:55] ashleydev: seems to be something called irregex [23:57] ashleydev: ah here we go: http://www.regular-expressions.info/javascript.html [23:57] ashleydev: this should tell me what JSCRE is [23:57] mde: PCRE plus irregular extensions, intresting. [23:58] creationix: I remember that page [23:58] ashleydev: and missing some PCRE features [23:58] ashleydev: like look-behind [23:59] mde: Yep, I've ended up on that page many times, but this is a nice cheatsheet: http://www.visibone.com/regular-expressions/