[00:02] mscdex: johnster: what type of data is this and what do you plan on doing with the data?
[00:02] johnster: Its a HTML page that is encoded in iso8859-1
[00:02] johnster: I need to modify the content
[00:03] johnster: ^^^ it's an HTML page
[00:05] mscdex: pheuter: here's a quick example of reading a line at a time: http://gist.github.com/526123
[00:06] pheuter: mscdex: ah, i see... thnx
[00:07] mscdex: johnster: well, there is a couple of html parsers for node. about the only thing i've ever done in this dept. is running tidy on the html (converting it to xml in the process) and then using an xml library like libxmljs to scrape data
[00:08] johnster: Hmm. The problem isn't so much parsing the HTML as just getting it into a normal JavaScript string format
[00:08] johnster: but thanks : P maybe i'll find something searching through those
[00:10] pheuter: mscdex: ah, it works perfectly, how is it that it keeps on looping? So, once it reachers an end of line, why doesn't the buffer clear?
[00:11] robotarmy has joined the channel
[00:11] mscdex: pheuter: i don't understand what you mean
[00:12] pheuter: buffer = data.substr(data.indexOf("\n")+1); what is the purpose of that
[00:13] mscdex: pheuter: just in case there are characters after the newline
[00:13] mscdex: pheuter: node reads in chunks
[00:13] mscdex: pheuter: although probably for most cases it will read in the entire line at once because it fits in the size of a single chunk
[00:14] pheuter: technically, shouldnt u clear the buffer, so that the next line i input doesnt get mixed in with the previous one!
[00:14] mscdex: pheuter: imagine if you cat'ed a file to the script
[00:14] pheuter: sorry about the !, lol
[00:15] mscdex: pheuter: no, then you could lose part of the next line
[00:15] pheuter: mscdex: hm, i changed the buffer = to buffer = "", and it still worked
[00:16] mscdex: pheuter: i.e., the variable data == 'foo\nbar' and the next time the event gets emitted data == 'baz\n'
[00:16] mscdex: pheuter: in that case, you would discard 'bar', and the next line wouldn't be complete
[00:17] herbySk has joined the channel
[00:17] mscdex: pheuter: that is why i have it check for anything after the newline and have that as the beginning of the next line
[00:17] pheuter: mscdex: got it, thnx
[00:17] _announcer: Twitter: "Nitrode: A lightweight HTTP Server on top of Node.js http://thechangelog.com/post/958501415" -- Fabien Penso. http://twitter.com/fabienpenso/status/21271161375
[00:19] mscdex: pheuter: but yeah like i said, you probably wouldn't run into that scenario by just entering things in the command line, but if you do like: "cat script.foo | node calculator.js", then you could easily see the scenario happen depending on the length of script.foo
[00:20] pheuter: mscdex: exactly
[00:20] mscdex: er not command line, but stdin
[00:21] _announcer: Twitter: "@BioNuc didn't read any node.js thing... Relied on my understanding for evented code in ruby instead!" -- Ahmed Sobhi. http://twitter.com/humanzz/status/21271416568
[00:22] _announcer: Twitter: "Non-blocking operations and deferred execution with node.js - http://bit.ly/bk8Jei" -- dierken. http://twitter.com/dierken/status/21271425753
[00:22] _announcer: Twitter: "node-DHT: Distributed hash table library for nodejs http://bit.ly/avLJA1 # # DHT nodejs" [vi] -- Régis Gaidot. http://twitter.com/rgaidot/status/21271471586
[00:23] rauchg_ has joined the channel
[00:24] pheuter has joined the channel
[00:27] mbleigh has joined the channel
[00:32] scoates: (yes, I know this is technically a bad strategy, but this is for a very specific non-server application) is there a way to intentionally block? I can do while (checkCondition()) {}; but that eats 100% CPU. I'd prefer to while(checkCondition()) { block(10); /* 10ms */ } ... any way to do this?
[00:34] mbleigh: scoates: couldn't you just do an interval every 10ms that runs the check?
[00:35] mbleigh: or a timeout that reinitializes itself
[00:35] scoates: no, because I don't want the enclosing function to return until the check succeeds
[00:35] mscdex: scoates: mind sharing why you want to do this?
[00:36] scoates: it's a bit complicated, but basically, I want to emulate synchronous http requests in webshell
[00:36] mscdex: you can do that without doing that
[00:36] mscdex: without blocking i mean
[00:37] Tim_Smart: I made a async cli prompt tool recently actually.
[00:38] scoates: I don't want async (-:
[00:38] scoates: mscdex: can you elaborate?
[00:38] mscdex: scoates: sure, 1 moment
[00:38] tilgovi has joined the channel
[00:39] jesusabdullah: Oh, I see what you mean
[00:40] bpot has joined the channel
[00:41] pheuter has joined the channel
[00:41] steadicat has joined the channel
[00:42] mscdex: here's an example from earlier, it synchronously fetches www.google.com 100 times and waits until the last one is finished: http://gist.github.com/526167
[00:43] _announcer: Twitter: "node.js a JavaScript front-end event I / O library seems http://nodejs.org/" [ja] -- Yuuki Takano. http://twitter.com/ytakanoster/status/21272783654
[00:43] scoates: ah.. /-: I had something similar to that, but I also have a REPL in the mix, which does nasty things to the output stream when it displays its prompt (triggered on request end), which is part of what I'm trying to avoid.
[00:44] scoates: I mean, thanks mscdex, but I'm not sure this will solve my problem without a bunch of rearchitecting.
[00:45] mscdex: i don't understand how that code would affect a REPL?
[00:47] scoates: I have a doHttpRequest method that on response end, does a displayPrompt on the REPL. Once that happens, I can't just output normally because the REPL does things to the cursor. I know this isn't very clear from my explanation.
[00:48] mscdex: yeah, i'd have to see a small example that reproduces this
[00:48] cheriot has joined the channel
[00:48] scoates: yep.. and it would take a bunch of boiling down.. and then some groking.. /-: I appreciate the example, anyway.
[00:48] mscdex: heh
[00:49] c4milo has joined the channel
[00:51] scoates: I may have solved it by just keeping my http request wrapper aware of the current "depth"
[00:53] scoates: thanks again. (-:
[00:55] _announcer: Twitter: "Well, v8 and I do not node.js time chasing up." [ja] -- Yuuki Takano. http://twitter.com/ytakanoster/status/21273549925
[00:56] Tim_Smart: rauchg_: Hey! You want to talk sometime?
[00:57] softdrink has joined the channel
[00:57] twoism has joined the channel
[00:58] _announcer: Twitter: "just installed node.js - gonna see what that's all about" -- Dustin Whitney. http://twitter.com/dustinwhitney/status/21273750201
[00:58] scoates: mscdex: if you care... http://github.com/fictivekin/webshell ; now I can add a toolbox function like this, without the REPL's prompt being displayed: http://paste.roguecoders.com/p/07cd775def8dfe1e3654918427efef6b.txt
[00:59] scoates: (yes, I realize it's still complicated, and not very grokable, but ... like I said.. if you care (-: )
[01:00] mscdex: scoates: cool. good deal
[01:00] _announcer: Twitter: "@dustinwhitney I'm exploring Express.js at the moment myself - lightweight sinatra/bottle.py style web framework for node.js" -- Brendan W. McAdams. http://twitter.com/rit/status/21273880909
[01:02] scoates: I wish readline.js was a little better at handling multiline...
[01:02] scoates: or rather: lines that are longer than the current window is wide
[01:03] ezmobius has joined the channel
[01:05] foobarfighter has joined the channel
[01:06] drudge has joined the channel
[01:06] ian`` has joined the channel
[01:11] jwcooper has joined the channel
[01:12] cheriot has joined the channel
[01:15] ryah: scoates: yeah, me too
[01:15] scoates: ryah: I made some improvements to readline, already, but I'm not sure I have the skillz to fix multiline.
[01:15] scoates: ryah: http://github.com/fictivekin/webshell/blob/master/wsreadline.js
[01:16] scoates: ryah: thanks for exposing Interface, btw (-:
[01:16] jwcooper: anyone know of a server side syntax highlighter that would work with node?
[01:19] Tim_Smart: jwcooper: Well any javascript syntax highlighter really.
[01:19] Tim_Smart: As in written in Javascript.
[01:19] TangoIII has left the channel
[01:19] jwcooper: Thanks, found this one that is CommonJS...should work..http://alexgorbatchev.com/SyntaxHighlighter/whatsnew.html
[01:20] zomgbie has joined the channel
[01:23] a_meteorite has joined the channel
[01:23] confoocious has joined the channel
[01:24] confoocious has joined the channel
[01:24] _announcer: Twitter: "Just finished a Node.js/Redis prototype. Took a while to get used to all the callbacks. Upshot: handles 200+ requests/sec on 1 Heroku dyno!" -- Scott Newman. http://twitter.com/greencoder/status/21275485882
[01:27] johnster: Question for any encoding experts out there ... got a Buffer with an unsupported encoding (iso-8859-1 / latin1) and i'd like to work with it as a String - can i just loop through the bytes of the Buffer, put them through the chartable and shazzzam?
[01:30] t3h_awesome has joined the channel
[01:32] _announcer: Twitter: "Another deep-dive into NodeJS. Server-side javascript is truly an impressive thing. Love me some Google V8." -- Brian Celenza. http://twitter.com/bcelenza/status/21275980044
[01:34] a_meteorite: What's the best way to have feature requests added in? It's simple, I just rather not dabble with V8 just yet and try to patch it myself.
[01:35] charlesjolley- has joined the channel
[01:35] zapnap has joined the channel
[01:36] tekky has joined the channel
[01:38] Tim_Smart: Does connect no longer ship with a cli tool?
[01:38] matt_c: a_meteorite: http://nodejs.org/#contributing has information about contributing. There's also the issues tracker: http://github.com/ry/node/issues
[01:38] sh1mmer: a_meteorite: what are you trying to build? It may not have to be in C
[01:39] sh1mmer: johnster: latin1 should be a subset of UTF-8
[01:39] Tim_Smart: a_meteorite: Most of Node.js is implemented in Javascript.
[01:39] a_meteorite: sh1mmer: Well, buffer.write lets you set the offset, and if the encoding is utf8, it won't write a partial utf8 character if there isn't enough room in the Buffer
[01:39] sh1mmer: johnster: you can also iterate over the bytes, but that's probably the least optimal solution
[01:40] a_meteorite: My proposal is an optional limit, so say you pre-alloc a large buffer, but you only want to write a partial string, but don't want any partial utf8 characters
[01:40] sh1mmer: a_meteorite: you could write that in JavaScript fairly easily
[01:41] a_meteorite: I took a look at the source and it appears node_buffer.cc's Buffer::Utf8Write just needs an added optional argument
[01:41] sh1mmer: a_meteorite: sending a JavaScript patch is a good way to encourage someone to rewrite it in C if needed
[01:41] brapse has joined the channel
[01:42] kriszyp_ has joined the channel
[01:42] t3h_awesome: I'd like to create an http server in node that routes GETs to function calls without having to do a giant if-elseif or switch statement. (http://server/Function1 maps to function1() http://server/Function2 maps to function2() etc.) I'd like to avoid using eval() on the URL path directly for security reasons (arbitrary code execution). Is there any way natively in node to do something like that?
[01:42] a_meteorite: Yeah, seems like a lot of work when all you have to do is accept the optional arg in that function and instead of buffer->length, it's just maxLen or something. I know if I do a patch for V8 I'll probably break it. :)
[01:43] sh1mmer: a_meteorite: well you don't have to patch, you can of course file a feature request
[01:43] sh1mmer: personally I would just take a shot if it's simple
[01:43] sh1mmer: plus it'll make it more likely to happen
[01:44] sh1mmer: and you learn something
[01:44] sh1mmer: hacking is fun ;)
[01:44] a_meteorite: Yeah, I just hate to be blamed when stuff breaks :P
[01:44] sh1mmer: a_meteorite: well if you submit a patch whoever accepts it is responsible
[01:44] sh1mmer: they should be checking your code
[01:46] Tim_Smart: In pretty much all cases, ryah will have to review it a_meteorite :)
[01:46] mscdex: get Crockford to check your code! :-D
[01:47] a_meteorite: hehe
[01:47] JimBastard has joined the channel
[01:48] a_meteorite: I guess I'll have to make myself a github account and do that code contributor agreement... :)
[01:48] Tim_Smart: Yup.
[01:48] mscdex: dude JB, where is your bot? we can't tweet without it!
[01:49] piotrekm has joined the channel
[01:50] piotrekm: Hello, is "Stream is not writable" error during write() call a bug or should I rewrite my code somehow?
[01:50] a_meteorite: Ah, mailing lists. The absolute horror.
[01:51] mscdex: piotrekm: not a bug. it means your stream isn't writable :-). check stream.writeable to make sure it == true first before calling stream.write()
[01:52] _announcer: Twitter: "Got Protovis running on a node.js+jsdom server: a step closer to beautiful data visualizations for low-end mobile devices." -- James Pearce. http://twitter.com/jamespearce/status/21277258587
[01:52] sh1mmer: piotrekm: can you gist the code?
[01:53] sh1mmer: hm protovis seems cool. Although I have no idea why if you were moving from SVN to Git you would move to Gitorious
[01:53] piotrekm: sh1mmer: it's long and a bit dirty.
[01:54] sh1mmer: piotrekm: doesn't matter
[01:54] _announcer: Twitter: "Male who is male uses Javascript http://is.gd/ejnsU is 2008 but this time of Node.JS worth reviewing" [pt] -- lucabastos. http://twitter.com/lucabastos/status/21277395717
[01:54] sh1mmer: piotrekm: we just want to get you up and running
[01:55] piotrekm: sh1mmer: http://pastebin.com/B8u1B4BW , line 161
[01:55] mscdex: sh1mmer: well you can run your own gitorious server for free, for one thing heh
[01:55] _announcer: Twitter: "Added a bunch of stuff to Webshell this weekend. Trying to keep up with @ehaas's pace: he's got jQuery working in the envjs branch! #node.js" -- Sean Coates. http://twitter.com/coates/status/21277482767
[01:55] sh1mmer: mscdex: but if you have an open source project Github is free
[01:55] tekky: lmao @ _announcer's wonderful translation skills again
[01:55] mscdex: sh1mmer: sure, if you don't mind making your code public i guess
[01:56] sh1mmer: I hate to declare a winner, but why not hang out where everyone is?
[01:56] scoates: wow... does _announcer have a firehose feed? that was quick.
[01:56] mscdex: for keeping your git stuff local on your own servers, gitorious is about the best there is...
[01:57] mscdex: for free anyway
[01:57] tekky: gitosis is nice
[01:57] scoates: yeah, gitosis works for me
[01:57] tekky: no web interface though
[01:57] tekky: i dont think
[01:57] tekky: plus the gitosis guy is awesome at support/help and very responsive
[01:58] mscdex: i prefer to work with a web interface
[01:59] sh1mmer: I guess my point is for open source you want to encourage collaboration
[01:59] tekky: sh1mmer: true
[01:59] matt_c: scoates: there's a streaming search feed.
[01:59] sh1mmer: I could see the argument for a business
[02:01] technoweenie: for business you want things to run and have backups and shit
[02:01] dipser_ has joined the channel
[02:01] scoates: oh? nice, matt_c. new?
[02:01] mscdex: don't get me wrong, github is the best (imho) for hosting open source projects. but if you're a small business that's trying to keep costs down and don't want to reveal your commercial product's source code to the world, you need something else
[02:01] sh1mmer: piotrekm: can you gist your error too?
[02:01] matt_c: scoates: I'm not sure. http://dev.twitter.com/pages/streaming_api_methods#statuses-filter
[02:02] mscdex: one of these days i'll try to install gitorious heh
[02:02] technoweenie: yea gitosis is fine if you dont mind running your own crap. it starts to suck if you do contracting and have lots of users/repos to manage
[02:02] pydroid has joined the channel
[02:02] sh1mmer: technoweenie: I think the argument for a business is competition is good for the market
[02:02] piotrekm: sh1mmer: http://pastebin.com/SNGqKM5x
[02:03] vladikoff_ has joined the channel
[02:03] technoweenie: competition?
[02:03] technoweenie: for hosting your source code?
[02:03] vladikoff_: hey guys i'm getting " Error: Cannot find module 'ext'" and "git submodule update --init" supposed to fix that, but how?
[02:03] nerdEd has joined the channel
[02:03] piotrekm: from documentation I assume that when stream.writeable is false, it will never get true, right? ("A boolean that is true by default, but turns false after an 'error' occurred or end() / destroy() was called.")
[02:03] sh1mmer: technoweenie: sure, having just one Git hosting company isn't a good thing
[02:04] scoates: matt_c: thanks
[02:04] technoweenie: sh1mmer: i dont know what you're talking about
[02:04] mattly has joined the channel
[02:05] mscdex: piotrekm: not necessarily. if you find that stream.write() is returning false, try waiting for the 'drain' event to occur first before writing again
[02:05] ehaas has joined the channel
[02:05] technoweenie: sh1mmer: we were talking about from the perspective of a bootstrapped startup i thought
[02:05] technoweenie: but anyways
[02:05] sh1mmer: technoweenie: it's a good thing that there are more commercial options for your Git hosting than just Github.
[02:05] technoweenie: sh1mmer: no one said it wasnt? i surely didnt
[02:05] technoweenie: some decent competition would be nice, bring it on
[02:05] sh1mmer: technoweenie: I know. Didn't mean to imply you did.
[02:06] mscdex: piotrekm: if it's writing to a socket, check the socket's readyState to make sure writeable is not false because the connection was lost or something
[02:06] technoweenie: ha ok
[02:07] vladikoff_: what happened to 'class.js' ?
[02:07] mscdex: what is class.js?
[02:07] mscdex: heh
[02:07] blogometer has joined the channel
[02:08] mscdex: vladikoff_: what are you trying to use?
[02:08] vladikoff_: mscdex, i am trying to install hummingbird and it asked me to "git submodule update --init" and that tried to find Clone of 'git://github.com/visionmedia/class.js.git' but that does not exist anymore
[02:10] mscdex: hmm.. i don't see that in the hummingbird repo's .gitmodules
[02:10] JimBastard: mscdex: remember javascript is object oriented
[02:10] JimBastard: you must create classes
[02:10] JimBastard: and objects
[02:10] JimBastard: and stuff
[02:10] JimBastard: you've got no class.js
[02:10] mscdex: JimBastard: NOU
[02:11] JimBastard: im object disoriented
[02:11] vladikoff_: eh i ll just npm the whole thing
[02:11] JimBastard: vladikoff_: npm ++
[02:11] vladikoff_: JimBastard++
[02:11] piotrekm: mscdex: thanks.
[02:12] mscdex: ++npm;
[02:12] mscdex: more efficient!
[02:12] mscdex: :-D
[02:13] JimBastard: im making cap for node, its awesome
[02:13] JimBastard: calling it noc
[02:13] JimBastard: built on node-control
[02:13] mscdex: cap?
[02:13] JimBastard: this ruby fag thing
[02:13] mscdex: ACTION shakes a fist at ruby
[02:13] JimBastard: they've figured a few things out for sure
[02:13] mscdex: yeah, like how to convert people to node
[02:14] mscdex: :-D
[02:14] JimBastard: shit we got technoweenie and tmm1 :-)
[02:15] technoweenie: 'ruby fag', seriously?
[02:15] JimBastard: technoweenie: i couldnt figure out how to spell capistrono
[02:15] JimBastard: >.<
[02:15] JimBastard: http://www.capify.org/index.php/Capistrano
[02:15] JimBastard: there we go
[02:17] technoweenie: this community isn't as welcoming as ruby though
[02:17] technoweenie: its more like 4chan
[02:18] Blink7 has joined the channel
[02:18] _announcer: Twitter: "node.js may be fast, but its community needs to be more welcoming and less like 4chan" -- technowürst. http://twitter.com/technoweenie/status/21279034153
[02:18] scoates: I've found channel, in particular, to be quite helpful, even when I ask potentially very stupid questions
[02:18] piotrekm: ok. And is there any way to provoke stream not to be writeable? It's quite hard to test
[02:19] technoweenie: scoates: i've been cursed out for asking dumb questions
[02:19] JimBastard: i dunno, almost every single "rails developer" ive met is arrogant. almost every single "javascript developer" i've met is humble from getting his ass kicked by the browser SOO MANY TIMES
[02:19] sh1mmer: technoweenie: 'ruby fag'?
[02:20] daleharvey: to be honest the node.js community is something I would like to try and replicate with erlang, its a pretty great community
[02:20] JimBastard: i try to help people when im not yelling at them :-(
[02:21] bryanl has joined the channel
[02:21] daleharvey: erlang community isnt the strongest when it comes to the web side of things
[02:21] technoweenie: well, some bad apples can ruin the experience for everyone
[02:21] blogometer: I'm happy with the Node.js community.
[02:21] sh1mmer: technoweenie: yeah, really.
[02:22] blogometer: I believe it will get worse as more people show up, though.
[02:22] sh1mmer: blogometer: I'd still like to see a high standard now.
[02:22] JimBastard: for sure, its gonna be php 10x
[02:22] technoweenie: well then you start having sub communities
[02:22] blogometer: Rails fell into software bureaucracy a while back.
[02:23] blogometer: How man HTTP verbs can dance on the head of pin.
[02:23] JimBastard: sh1mmer and technoweenie, #node.js.is.serious.business
[02:23] twoism has joined the channel
[02:23] JimBastard: see you later! :-)
[02:24] daleharvey has joined the channel
[02:24] sh1mmer: man, I can't believe it took me this long to really give Vi a chance
[02:24] Aria: I think something that might help the community is having a separate, curated standard library -- not a pile of packages in a package manager, but something you can install coherently.
[02:24] sh1mmer: Aria: I think we'll get there
[02:24] sh1mmer: but first we need to find winners
[02:25] sh1mmer: right now is the gold rush
[02:25] jb55: something like the haskell platform?
[02:25] Aria: Yeah. But I think the time to start is now -- and take Ryah's approach: Break things, but as little as possible.
[02:25] sh1mmer: while people a) figure out what works b) people start to show leadership over various peices
[02:25] JimBastard: as projects get real stakeholders....
[02:25] JimBastard: ACTION turns on the money machine
[02:26] blogometer: I like Node.js because it is about as complicated as C.
[02:26] Aria: Collect. Curate. Make a set of tools that work together.
[02:26] blogometer: I don't want APIs.
[02:26] blogometer: And I prefer CPAN to Boost.
[02:26] vladikoff_: where does npm store all the fun stuff?
[02:27] sh1mmer: you mean http://npm.mape.me/
[02:27] Aria: CPAN has its issues. It's really hard to deploy and doesn't always work together.
[02:28] blogometer: The C++ STL is an example of a curated standard library.
[02:28] blogometer: Right. Which makes it awesome.
[02:29] SubStack: s/esome/ful/
[02:29] blogometer: It is an ecosystem that is constantly evolving.
[02:29] SubStack: the stl is an ecosystem?
[02:29] blogometer: STL is awful.
[02:29] blogometer: CPAN is awesome.
[02:29] SubStack: ah that
[02:30] SubStack: yeah, I wish more of cpan came bundled in the standard dist
[02:30] blogometer: Node.js is incredibly concise.
[02:30] vladikoff_: "Error: Cannot find module 'old'" wtf is that even
[02:30] blogometer: I don't want to bring in SOUNDEX if I'm not going to use it.
[02:30] aaron___ has joined the channel
[02:31] tekky: vladikoff_: old, outdated, not new or current? :P
[02:31] ddollar has joined the channel
[02:31] blogometer: Or BerkleyDB.
[02:31] vladikoff_: tekky, someone called a module 'old'
[02:32] blogometer: Does anyone have underscore.js in an NPM?
[02:34] JimBastard: blogometer: npm list
[02:34] JimBastard: underscore@1.0.3 =documentcloud remote underscore@1.0.4 =documentcloud latest stable remote
[02:34] JimBastard: npm install underscore
[02:34] blogometer: Nice!
[02:34] blogometer: Thank you.
[02:34] _announcer: Twitter: "Any recommendations for "getting started with node.js" screencasts? Hoping to get up to speed while I have my hands full with the baby." -- Elliott Draper. http://twitter.com/ejdraper/status/21280102374
[02:41] aaron___: ryah: you there? :)
[02:41] cataska has joined the channel
[02:43] aconran__ has joined the channel
[02:47] tilgovi_ has joined the channel
[02:48] ajpiano has joined the channel
[02:49] tilgovi_ has joined the channel
[02:50] _announcer: Twitter: "http://nodejs.org/ <-- This is extremely relevant to my interests. #awesome #notjquery" -- shadowmint. http://twitter.com/shadowmint/status/21281081430
[02:52] jimt has joined the channel
[02:53] _announcer: Twitter: "@technoweenie got that same feeling when I saw a node.js user posting that ruby was the new cobol. painfully stupid." -- Christopher Burnett. http://twitter.com/twoism/status/21281318247
[02:56] jakehow has joined the channel
[02:57] brapse has joined the channel
[02:59] astrolin has joined the channel
[03:00] _announcer: Twitter: "playing around http://nodejs.org/" -- Roc Yu. http://twitter.com/uiicor/status/21281774656
[03:00] jimt_ has joined the channel
[03:01] mr_danie1 has joined the channel
[03:05] kodisha has joined the channel
[03:07] jamescarr has joined the channel
[03:07] jamescarr: that zalgo stuff is... odd
[03:09] jimt has joined the channel
[03:12] joshbuddy has joined the channel
[03:12] blogometer: So...
[03:12] blogometer: Node.js depends on libeio for great justice.
[03:12] blogometer: And libeio is a creation of one Marc Lehmann.
[03:13] aaron___: process.uncaughtException for the win!
[03:14] aaron___: (so enthused, had to share it somewhere)
[03:17] charlesjolley- has joined the channel
[03:18] jamescarr: libeio?
[03:18] jamescarr: never saw that?
[03:18] pheuter has joined the channel
[03:20] mattikus_ has joined the channel
[03:24] vladikoff_ has left the channel
[03:26] mattly has joined the channel
[03:28] admc has joined the channel
[03:30] justin_ has joined the channel
[03:32] jamescarr: argh... is there someway to get the visitor's IP address in expressjs? I am sure there is since it gets logged to the console
[03:32] jamescarr: just dont see it
[03:34] pheuter has joined the channel
[03:35] jimt has joined the channel
[03:42] mjr_: technoweenie: are we really not welcoming? That's rather surprising to me.
[03:44] jamescarr: nvm figured it out
[03:45] _announcer: Twitter: "Countdown to Knockout: Post 1 - How to Install Node.js http://bit.ly/cOU2AM" -- node knockout. http://twitter.com/node_knockout/status/21284709426
[03:46] jimt_ has joined the channel
[03:51] jimt has joined the channel
[03:53] _announcer: Twitter: "@voodootikigod @technoweenie how is Node.js’s community like 4chan? o_O" -- ell.io. http://twitter.com/elliottcable/status/21285196065
[03:53] elliottcable: technoweenie 3↼ what do you mean about the 4chan thing? (cf. tweet)
[03:54] PyroPeter has joined the channel
[03:54] _announcer: Twitter: "mention for my #nodejs patches in http://dailyjs.com/2010/08/13/ntpl/" -- trentmick. http://twitter.com/trentmick/status/21285288709
[04:01] benburkert has joined the channel
[04:02] jimt_ has joined the channel
[04:04] matt_c: elliottcable: http://nodejs.debuggable.com/2010-08-16.txt @ 02:17.
[04:06] dcolish has left the channel
[04:08] mattikus has joined the channel
[04:08] overra has joined the channel
[04:16] twoism has joined the channel
[04:23] derferman has joined the channel
[04:24] elliottcable: matt_c 3↼ looks like mostly JimBastard being 4chan-ish
[04:24] elliottcable: technoweenie 3↼ so, yeah, I’m still lost as to how the *whole community* feels like 4chan. /-:
[04:24] Draggor has joined the channel
[04:25] elliottcable: technoweenie 3↼ in fact, I’ve found this community several orders of magnitude more welcoming than that of Ruby (note: I’m banned in two high-profile Ruby channels.)
[04:25] elliottcable: technoweenie 3↼ so, yes, I’m quite interested in what, exactly, you find so unwelcoming, or ‘4chan-ish,’ so to speak around here :3
[04:25] Tim_Smart: And ##C - it seems they are all are far superior to other human beings.
[04:26] elliottcable: yep
[04:26] elliottcable: well, I’m used to ##C.
[04:26] elliottcable: Actually, most of ##C are fine; it’s just Zhivago being his usual, assish, self. If you don’t let him get to you, it can actually be quite the hoot :3
[04:26] Aria: Heh, yeah. Actually, I find the same about #ruby-lang mostly.
[04:27] Tim_Smart: elliottcable: Yeah I found it rather humerous.
[04:28] Tim_Smart: *humorous
[04:28] mape: elliottcable: Believe it was statements like "this ruby fag thing" in this channel that made him feel like that
[04:28] tpryme has joined the channel
[04:28] Tim_Smart: elliottcable: And twzm's poetry was... interesting.
[04:29] Tim_Smart: *twkm
[04:29] mikeal has joined the channel
[04:30] hij1nx has joined the channel
[04:31] keeto has joined the channel
[04:35] keeto_ has joined the channel
[04:36] Tim_Smart: mape: Didn't you have #node.js stats page somewhere?
[04:36] mape: http://stats.nodejs.se/
[04:37] saikat has joined the channel
[04:37] Tim_Smart: Haha that sums it up reasonably well. JimBastard talks the most, yet gets the least amount of 'thanks'
[04:38] keeto_ has joined the channel
[04:40] jimt has joined the channel
[04:41] benburkert has joined the channel
[04:44] jakehow has joined the channel
[04:46] technoweenie: ungrateful bastards
[04:47] keeto has joined the channel
[04:53] stride: technoweenie: http://en.wiktionary.org/wiki/irony don't see how one statement by JimBastard makes the comunity 4chan'y
[04:53] jsilver has joined the channel
[04:54] technoweenie: thats just the most recent one
[04:56] stride: the channel helped many people, most recently this stephen guy, to get started, don't see anything 4chan'y there you don't have everywhere in irc, sorry
[04:57] jesusabdullah: It's a good channel
[04:57] technoweenie: well, i've been cursed out for asking a newb question
[04:57] technoweenie: but yea, things are fine, keep on doing what you're doing
[04:57] jesusabdullah: Really?
[04:57] jesusabdullah: That's surprising
[04:57] jesusabdullah: Here, right?
[04:58] Tim_Smart: Every community has a ratio of helpful people:not-so-helpful people
[04:59] Tim_Smart: I think node is at a pretty healthy 50:1
[04:59] Tim_Smart: or something :D
[05:00] jsilver has joined the channel
[05:01] paulwe has joined the channel
[05:01] jsilver has joined the channel
[05:02] _announcer: Twitter: "lisp.js: lisp on node. http://ajxn.it/aesyMY // personally, I already have my lisp on node... and it is JavaScript!" -- Dion Almaer. http://twitter.com/dalmaer/status/21289255230
[05:03] technoweenie: yea its fine... when communities get too big they splinter off anyway. most of my irc channels are pretty focused communities
[05:04] elbart has joined the channel
[05:08] technoweenie has left the channel
[05:08] falconair has joined the channel
[05:10] mattly has joined the channel
[05:10] falconair: is anyone here familiar with something called the "FIX protocol?"
[05:11] Aria: http://www.fixprotocol.org/what-is-fix.shtml .. Only trivially aware of it. I ran into it a year or so ago when I was looking for information on OFX
[05:11] Aria: Looks like the usual nightmare of industry consortium spec.
[05:12] falconair: hm...I have a half-assed, incomplete implementation of it in node, if someone knows the protocol, i wanted to get some ideas about code organization
[05:17] ryankshaw has joined the channel
[05:20] paulwe has joined the channel
[05:24] paulwe has joined the channel
[05:24] jackish has joined the channel
[05:39] paulwe has joined the channel
[05:40] Draggor1 has joined the channel
[05:40] shreekavi has joined the channel
[05:45] jsilver has joined the channel
[05:46] jetienne has joined the channel
[05:47] _announcer: Twitter: "[Js 人 気 情报] lisp.js: a Lisp for node.js - lisp-js's posterous http://bit.ly/cLV6n0 # javascript" [de] -- jsMagazine. http://twitter.com/jsMagazine/status/21291623383
[05:48] joshbuddy has joined the channel
[05:51] jochen has joined the channel
[05:52] _announcer: Twitter: "npm config chain: C=cli, E=env, U=userconfig, G=globalconfig, D=default http://vimeo.com/14120299 #nodejs" -- trentmick. http://twitter.com/trentmick/status/21291872034
[05:53] brapse has joined the channel
[05:54] pdelgallego has joined the channel
[05:55] _announcer: Twitter: "I have seen many people playing with Node.Js, I think then I'll curiara it: D" [pt] -- Charleno Pires. http://twitter.com/charlenopires/status/21292005197
[05:57] amerine has joined the channel
[05:58] sYsk has joined the channel
[05:58] sYskk has joined the channel
[06:01] saikat: rauchg_: i remembering you mentioned something about client-side disconnect notifications not being reliable. about how reliable are they? or do should i build in a timeout in my app?
[06:01] saikat: i remember*
[06:01] SamuraiJack has joined the channel
[06:01] rauchg_: saikat: essentially
[06:01] rauchg_: the client and server have to both share the same heartbeat timeout
[06:01] rauchg_: if the client hasn't received a heartbeat past that timeout
[06:01] rauchg_: it considers it disconnected
[06:02] rauchg_: for certain transports, we might know sooner
[06:02] rauchg_: (eg: websocket onclose)
[06:02] rauchg_: some of these `sooner` scenarios are handled
[06:02] rauchg_: that's why it's incomplete
[06:02] rauchg_: i'm probably gonna work on it this week
[06:02] saikat: hm... but you're saying though that
[06:02] saikat: if a disconnect happens
[06:02] saikat: i will know - just in some cases i might not know immediately
[06:02] rauchg_: no, sometimes you'll never know :D
[06:02] saikat: oh fair
[06:03] rauchg_: because i didn't implement the client-side timeout
[06:03] rauchg_: granted
[06:03] rauchg_: those cases are really rare
[06:03] rauchg_: and what's more important is the server side disconnection notification
[06:03] saikat: yeah
[06:03] saikat: definitely true
[06:03] rauchg_: because of cleanup tasks, tcp allocation, memory freeing tasks etc
[06:03] rauchg_: but 0.6 will definitely have it
[06:04] saikat: a timeout on connect would be nice too - tohugh i just put one in for my purposes and it's of course not terribly hard
[06:04] rauchg_: indeed.
[06:05] rauchg_: however
[06:05] rauchg_: we don't want to do much more than WebSocket
[06:05] saikat: websocket has a connection timeout?
[06:05] rauchg_: but arguably, websocket is not enough as it is for most applications
[06:05] rauchg_: nop
[06:05] saikat: oh you are saying we don't want to add too much on top
[06:05] rauchg_: exactly
[06:05] saikat: that's fair
[06:05] rauchg_: there's a good article
[06:05] rauchg_: that illustrates how much more you have to do on top of websocket
[06:05] rauchg_: http://cometdaily.com/2010/03/02/is-websocket-chat-simple/
[06:06] rauchg_: for example, onclose="" isn't reliable either
[06:06] rauchg_: and nor is waiting for the FYN on the server side
[06:06] rauchg_: FIN*
[06:07] hij1nx has left the channel
[06:07] saikat: i see
[06:07] hij1nx has joined the channel
[06:09] ph^ has joined the channel
[06:09] rauchg_: as things stand today, we're already doing more than WebSocket.
[06:09] rauchg_: because of the inherent limitations of some of the transports and the fact that we share the same protocol across all of them
[06:09] rauchg_: and ryah wants fireAndForget
[06:09] rauchg_: :P
[06:09] _announcer: Twitter: "async.js for node.js now with file globbing - ls: async.glob("*.txt").get("path").print().end() http://tinyurl.com/3afna2r" -- Fabian Jakobs. http://twitter.com/fjakobs/status/21292738542
[06:10] saikat: right
[06:10] saikat: but that's why i like socket.io and don't just use websockets =)
[06:10] rauchg_: yep
[06:11] saikat: also, one other question - is socket.connected keeping track of connected the way i think it is?
[06:11] rauchg_: but we don't want to go over too much
[06:11] saikat: definitely
[06:11] saikat: i mean - it might make sense to make a layer on top of socket.io but
[06:11] saikat: i do think a layer somewhere should exist - cometd sounds nice
[06:12] rauchg_: for now you're better of setting your own connected flags in a closure
[06:12] saikat: ok
[06:12] rauchg_: because iirc im setting connected to false when XHR GET finishes
[06:12] rauchg_: then to true when the client connects again
[06:12] rauchg_: (in polling)
[06:12] saikat: ah i see
[06:12] rauchg_: that should probably be an internal one, and we should have a public .connected one
[06:12] rauchg_: that is the `absolute` one
[06:13] saikat: ok - thanks as usual
[06:15] rauchg_: np
[06:17] sYskk: question here: how should I handle processor heavy tasks with node.js without blocking the http server?
[06:17] Throlkim has joined the channel
[06:18] Aria: start another process. Or break it up into pieces.
[06:18] sYskk: ok, how to start a new process?
[06:18] mjr_: sYskk: you can use the web workers module for that.
[06:18] Aria: (... Can your computer actually handle the workload? Or is it just faking it?)
[06:18] tango3 has joined the channel
[06:18] mjr_: or you can just spawn child processes
[06:20] sYskk: right
[06:21] pquerna: or you could limit the number of incoming http connections
[06:21] pquerna: ACTION retreats back into the realm of limits
[06:22] mjr_: pquerna: don't forget to come back to the world of rewriting SSL.
[06:22] mjr_: we need you there!
[06:22] pquerna: mjr_: http://github.com/pquerna/selene
[06:22] pquerna: mjr_: its not done. no promises.
[06:22] mjr_: awesome
[06:22] felixge has joined the channel
[06:22] felixge has joined the channel
[06:22] pquerna: i'll try to work on it next weekend again.
[06:23] mjr_: super cool
[06:23] mjr_: I'm glad you are working on it.
[06:26] persson has joined the channel
[06:26] felixge has joined the channel
[06:26] felixge has joined the channel
[06:27] astrolin_ has joined the channel
[06:31] joshbuddy_ has joined the channel
[06:34] Egbert9e9 has joined the channel
[06:34] sYskk: is there any code profiling tool for node.js?
[06:35] mjr_: sYskk: you can use the V8 profiler for many things.
[06:35] mjr_: But it requires that you build d8, which is sometimes hard.
[06:35] mjr_: If you get it all working though, the V8 profiler has some good information in there.
[06:36] jackish_ has joined the channel
[06:41] terinjokes: mjr_: your response above made me realize how similar the "B" and "8" look in this typeset
[06:42] mjr_: 8oy, that must 8e confusing.
[06:42] EyePulp: heh
[06:43] rauchg_: sln_brigade_destroy()
[06:44] terinjokes: mjr_: well, now that'm aware, I know that the 8 has a slight hint of a curve in the lower bottom corner (and, thus, know that you used an eight in your reply)
[06:45] jackish has joined the channel
[06:45] mjr_: busted!
[06:45] elliottcable: mape 3↼ hahaha, “ruby fag thing?” what?
[06:45] terinjokes: i guess outside of sourcecode, I can identify based on context anyways :/
[06:50] mape: elliottcable: what Jim said
[06:55] Dmitry1 has joined the channel
[07:02] tisba has joined the channel
[07:05] elliottcable: mape 3↼ well, that‘s Jim. What can you expect?
[07:06] keeto has joined the channel
[07:06] mape: Well, if that makes other people disslike the community it isn't really about what I think about it :)
[07:07] luddep has joined the channel
[07:10] javajunky has joined the channel
[07:14] Blink7 has joined the channel
[07:24] stride: meh, he ranted a bit, so what?
[07:24] micheil has joined the channel
[07:27] tango3 has joined the channel
[07:36] tekky has joined the channel
[07:36] sYskk has joined the channel
[07:37] sYskk: i have a mental block with node.js. i've started tinkering with it and even considered building my web app with it
[07:37] sYskk: however there's something thats bugging me
[07:37] sYskk: im scared to death of writing soome blocking code without realizing it
[07:37] alcuadrado: in fact, you do write blcking code most of the time, even in node :p
[07:38] alcuadrado: "1 + 1" is blocking
[07:38] sYskk: yea but i mean blocking code in the range of 1 second
[07:38] alcuadrado: just care about IO, networking, user input, and else
[07:38] sYskk: that would mean i could lose some http requests right?
[07:39] sYskk: maybe im over panicking :P
[07:39] alcuadrado: I don't think so... they would just be slowler (wating)
[07:39] alcuadrado: but that should be asked to someone more versed in node, as ryah :p
[07:39] virtuo has joined the channel
[07:40] alcuadrado: but AFAIK, there is no blocking module available in the default node distribution
[07:41] stride: your OS is queueing new connections to a port, but if you really have blocks that really take up a full second of processing I guess you should take a look at that webworker module or something
[07:41] _announcer: Twitter: "@cramforce Or node.js ftm— could be a preprocessor build into the runtime, too." -- Thomas Fuchs. http://twitter.com/thomasfuchs/status/21296963669
[07:45] sYsk has joined the channel
[07:45] mjr_: sYskk: Your OS has a "backlog" of unaccepted TCP connections that it uses for this sort of thing.
[07:45] jblanche has joined the channel
[07:46] mjr_: But for most things, node can handle thousands of requests per second, so you'd have to do quite a bit of work in general to make it drop new connections.
[07:46] mjr_: I say just go for it, and if it turns out what youa re doing is too slow, deal with that then.
[07:47] sYsk: ok
[07:48] terinjokes: and *that* my friends is why I keep my electronic equipment on surge protectors with battery backup. The client computer didn't fair that surge very well
[07:48] micheil: morning' folks
[07:49] ditesh|cassini has joined the channel
[07:49] micheil: sYsk: it's pretty damn hard to write blocking code in node.js, unless you explicitly call a blocking method.
[07:50] sYsk: lets say i need to regex some user input to eliminate some stuff, wouldnt that be blocking for a while?
[07:50] micheil: alcuadrado: also, "1+1" isn't really blocking per-say, it's procedural, and the time it takes to calculate 1+1 should be incredibly low, otherwise you have bigger problems then say blocking file i/o
[07:50] micheil: sYsk: type `node` into your shell, and hit enter. Try it.
[07:51] micheil: if it isn't instantaneous, then it's probably blocking
[07:51] ryah: sYsk: yeah - that ends up not being the common thing
[07:51] micheil: for things like regex, and standard operations, you're looking at < 1ms in most cases, generally always < 10ms.
[07:52] sYsk: which means every request will be frozen until the regex finishes right?
[07:52] sYsk: ok
[07:52] micheil: sYsk: seriously, try it. If you can write a regex that takes longer then 50 ms, I'd be surprised.
[07:52] sYsk: that thought kinds of scares me :)
[07:52] ryah: sYsk: the usual answer is to split of the regex parsing into chunks
[07:53] ryah: s/parsing/execution/
[07:53] ryah: don't do a 10mb file in one go, that is
[07:53] micheil: ryah: but.. but.. I like my over complicated regular expressions that few other people can sanely understand :(
[07:53] micheil: ;P
[07:53] exlibris has joined the channel
[07:53] alcuadrado: micheil, I know 1+1 is made in a single CPU instruction, but what I mean, is that no of the following statements would be executed in the meanwhile (althought it might be something like 1 / cpu frecuency seconds, i think :P)
[07:53] micheil: ryah: probably next wednesday I'll start on reworking the documentation. I'll create a branch for it.
[07:54] derferman has joined the channel
[07:54] micheil: alcuadrado: something, somewhere along the line has to block, theoretically, I'm sure.
[07:54] micheil: the idea is to have non-blocking where it's actually going to take several thousand / million / trillion cpu cycles later
[07:55] alcuadrado: yeah, I think so... and if not, that would be a pain in the ass though
[07:55] micheil: I think ryah has some good slides on this, don't you?
[07:55] micheil: generally CPU's are pretty damn fast, especially on a dedicated or shared server.
[07:56] micheil: where you probably have 2 if not 8 cpu's to yourself, where if something else is owning your system, then node should still be able to function properly
[07:57] mpoz2 has joined the channel
[07:57] alcuadrado: yeah, I know =)
[07:58] zomgbie has joined the channel
[07:58] stride: oh, on that matter, does blocked within node.js code mean a single function() or a complete stack of calls without using a callback?
[07:58] alcuadrado: I just wanted to show sYsk that he doesn't need to warry that much... but maybe my way wasn't the best :p
[07:58] micheil: ryah: also, would it be an idea to make the event emitter emit in a non-blocking way?
[07:59] sYsk: im worried because this is a totally new paradigm for me
[07:59] _announcer: Twitter: "@kuvos I think this is actually more interesting for backend stuff, node.js for example." -- Thomas Fuchs. http://twitter.com/thomasfuchs/status/21297720974
[07:59] micheil: for example, in my Evan.js project, which is extremely similar to event emitter, I use setTimeout(callback, 0);
[07:59] sYsk: i've always worked with cgi like
[07:59] alcuadrado: sYsk, haven't you coded client-side javascript?
[07:59] micheil: sYsk: well, hopefully you'll find it more pleasurable to work with
[08:00] sYsk: I have but nothing too complex yet, mostly UI stuff
[08:00] sYsk: also used Jaxer 1 year ago to do some scraping using the dom
[08:00] alcuadrado: well, UI stuff is completetly event driven :p
[08:00] micheil: sYsk: I've got some slides you may want to check out; even though they are really introductory
[08:00] micheil: http://www.slideshare.net/simon/evented-io-based-web-servers-explained-using-bunnies
[08:00] sYsk: alcuadrado: but I'm not afraid of slowing down 1 user... the thing I'm afraid of is to have 1 user block everyone else :D
[08:01] sYsk: if I have some slow code for one particular request, it will slow down some users who do the request but at least i can fix it later without worrying that everyone will be slowed down
[08:02] alcuadrado: yeah, that's true
[08:03] alcuadrado: but I think a simple benchmark in maybe-too-slow bits of code would help
[08:03] sYsk: i.e.: http://host/very/slow/request http://host/very/fast/request ... with php/ruby/python only the people going to the slow url will be slowed down. with node.js, everyone is slowed down
[08:03] stride: yeah but that would be true for every system, no matter how the stuff for that one user takes over your cpu
[08:03] sYsk: perhaps im misunderstanding or worrying too much
[08:03] ryah: micheil: new docs - okay - need to talk abou tthat
[08:03] ryah: gtg
[08:03] micheil: ryah: how would you like to talk?
[08:04] micheil: email me, micheil@brandedcode.com
[08:04] overra has joined the channel
[08:04] micheil: (or I'll email you in a days time or something)
[08:05] stride: sYsk: php/ruby/python don't grow more cpus on your server so the http://host/very/fast/request would still at least be slowed down until very/slow/request finished stuff
[08:05] pdelgallego has joined the channel
[08:06] rnewson has joined the channel
[08:07] sYsk: slowed down but not completely blocked. to illustrate if the fast request takes 10s, maybe the slow request would take 5s instead of 1s. with node.js, the fast request would be blocked until slow request is done which means at least 10s
[08:08] sYsk: right?
[08:09] sh1mmer: sYsk: I think you are missing the way it works
[08:09] sYsk: very possible ;)
[08:10] sh1mmer: sYsk: can I give you a completely non-technical analogy?
[08:10] sYsk: go ahead
[08:10] sh1mmer: imagine a bar tender
[08:10] sh1mmer: you and some friends go to a bar and order drinks
[08:10] sh1mmer: it's a cocktail bar so some of the drinks are complex, some are simple
[08:11] sh1mmer: one guy orders a beer, the bar tender pulls it out of the fridge pops the top and hands it over
[08:11] sYsk: yes
[08:11] stride: "node.js - The drinking game." now on scribd :>
[08:11] sh1mmer: someone else ordered a smooth margarita so he mixes it puts in the blender
[08:12] sh1mmer: and then while the blender is going he starts making another drink
[08:12] sh1mmer: until the blender finishes
[08:12] sh1mmer: then he finishes her margirita and serves it
[08:12] sh1mmer: and carries on
[08:12] sh1mmer: that's non-blocking
[08:12] sh1mmer: imagine another bar tender, who only does 1 drink at a time
[08:12] sh1mmer: he can serve beers all day long because they have a fixed time to deliver
[08:13] sh1mmer: but complex drinks take him much longer because he can't do anything while he is waiting for the blender.
[08:13] sh1mmer: and while he is waiting so is everyone else wanting a drink
[08:13] sYsk: right I understand that part
[08:13] felixge has joined the channel
[08:14] sh1mmer: So what don't you get?
[08:14] sYsk: but wouldnt a better analogy be: many bar tenders who work linearly but that are each slower than the async bar tender?
[08:14] sh1mmer: Actually I think the bit you are missing is this
[08:15] sh1mmer: In node most things are async
[08:15] alcuadrado: sYsk, thats like php, for example, works
[08:15] sYsk: right
[08:15] sh1mmer: so it's more like the bartender is an octopus
[08:15] sh1mmer: because he's quickly switching contexts doing lots of small pieces for each customer
[08:15] ntelford has joined the channel
[08:15] guybrush: you can do child-processes though, isnt it?
[08:15] alcuadrado: as you may know, v8 is far faster than php, so, if you are not conserned to, lets say, a php regex validaton, you shouldn't be with node
[08:16] guybrush: each tentakel of the octupus is a child-process :p
[08:16] sh1mmer: sYsk: the point being that a single request isn't 1 big 10 second action, it's most likely dozens of non-blocking actions
[08:17] sYsk: right
[08:17] sh1mmer: so you can squeeze a bunch of small requests in while waiting for a slow request
[08:17] sh1mmer: and the more you can split your code up to be non-blocking the better
[08:18] sYsk: is there an easy way in JS to write some non blocking code i.e. do_this_in_parallel(function() {/* CPU heavy code */}, callback);
[08:18] sYsk: that would really end my tormenting
[08:18] sYsk: haha
[08:18] alcuadrado: here you it is in example... you may have heared about this fucking damn regex to validate every possible variation of an email address made by the perl guys http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html. Try it in node: http://www.pastie.org/1095137 If you are doing something THAT complex in a single statement, well... maybe node is not the problem :P
[08:18] sh1mmer: micheil: I have a function like var foo = function(input) { a(); b(); c(); } and b() just got refactored to be a non-blocking call
[08:18] alcuadrado: here is an example*
[08:19] sh1mmer: micheil: so I'm trying to codify a pattern for how to refactor the function foo in a useful way
[08:19] micheil: one sec sh1mmer; trying to write a slight proposal to hybi
[08:19] guybrush: sYsk: if its on the client-side you can do stuff in parallel with web workers http://wearehugh.com/public/2010/08/html5-web-workers/ , on the server side its child-processes
[08:19] sh1mmer: sYsk: you can use child processes, people have suggested slaved node processes using web workers
[08:20] sh1mmer: I should just let the mighty pirate talk
[08:20] guybrush: i dont fear LeChuck !
[08:20] sh1mmer: although I'm also going to link http://developer.yahoo.net/blog/archives/2010/07/multicore_http_server_with_nodejs.html because Peter wrote the web worker support
[08:21] stride: sYsk: the step library lets you handle parallel stuff as well
[08:21] stride: (iirc)
[08:22] sh1mmer: bleh
[08:22] sh1mmer: don't use step
[08:22] sh1mmer: it's cool Tim wrote it but just learn to do it right
[08:22] stride: hm? why not?
[08:23] stride: ah, that, yeah point taken
[08:23] sh1mmer: It's a crutch
[08:23] _announcer: Twitter: "@cramforce not that node.js is slow, of course — this is for more extreme cases :)" -- Thomas Fuchs. http://twitter.com/thomasfuchs/status/21298765456
[08:23] sYsk: I see
[08:23] stride: but it seems nice if you have seperate components and need to implement a barrier for it
[08:23] zomgbie has joined the channel
[08:23] sh1mmer: Fuchs is a menice.
[08:24] _announcer: Twitter: "@garbrand our #AmsterdamJS talks are getting more and more #nodejs packed each time... http://bit.ly/clthYV /cc @mennovanslooten" -- mikedeboer. http://twitter.com/mikedeboer/status/21298789358
[08:24] sYsk: it would be nice to be able to do it "inline"
[08:24] sh1mmer: ugh can't spell this morning.
[08:25] _announcer: Twitter: "Interesting weekend dabbling with nodejs and sproutcore; why are we still using this PHP and python crap?" -- Carl. http://twitter.com/carlmw/status/21298829798
[08:25] guybrush: php is _not_ crap
[08:26] alcuadrado: I disagree
[08:26] alcuadrado: php is the coolest crap out there =)
[08:26] alcuadrado: hehe
[08:26] _announcer: Twitter: "@humanzz have a look at node.js, sounds interesting but i still feel lost somehow understanding what is going on" -- Osama Brekaa. http://twitter.com/BioNuc/status/21298899085
[08:26] _announcer: Twitter: "I just realized that I hardly have to do any debugging on my node projects that use test driven development. #tdd #nodejs #ftw" -- Felix Geisendörfer. http://twitter.com/felixge/status/21298907960
[08:26] alcuadrado: it has many creppy things, but its pretty cool although
[08:27] felixge: hey, anybody in here interested in trying my mysql client lib?
[08:27] micheil: k, sh1mmer, back.
[08:27] felixge: http://github.com/felixge/node-mysql
[08:27] N` has joined the channel
[08:27] guybrush: php is so nice, it enabled so very much people to make awesome apps
[08:27] felixge: would love to get some feedback on the API and stuff
[08:27] micheil: felixge: I can't, I don't actually have mysql installed on my macbook pro or my webserver(s), as much as I'd love to help.
[08:28] felixge: micheil: np :)
[08:28] alcuadrado: guybrush, I work as a php programmer... but I'm actualy falling in love with JS :P
[08:28] felixge: micheil: I guess I'll have to write a node.js mysql server next
[08:28] felixge: just kidding :)
[08:28] sh1mmer: felixge: is it the world's first non-blocking mysql driver?
[08:28] felixge: sh1mmer: no, but probably the world's most decent mysql driver
[08:28] sh1mmer: heh
[08:28] stride: *git clone*
[08:28] felixge: as in readable code and non-buffering parsing
[08:28] digitalspaghetti: felixge: i'll be having a go, I have a MySQL backend that I can test on
[08:29] felixge: I just got result set parsing working last night, but all the basic stuff should be working
[08:29] felixge: sh1mmer: I looked at some of the other mysql client implementations in other languages and it got me quite scared for those big sites that actually use them :)
[08:30] sh1mmer: heh
[08:30] lachlanhardy has joined the channel
[08:30] alcuadrado: felixge, how much time do you think it remains for your driver to be ready? having mysql in node will be pretty cool (:
[08:30] ewdafa has joined the channel
[08:31] stride: any pointers on how to run the testcases in there?
[08:31] felixge: alcuadrado: I hope to start using it in production this week or next
[08:31] felixge: stride: make test
[08:31] felixge: alcuadrado: There will be a few features I have yet to add (like prepared statements), but once I'm happy with charsets and basic queries it should be quite stable
[08:32] sh1mmer: fuck
[08:32] alcuadrado: great news, I'll finish a project this week and start a node one after that, and I'd love to use it
[08:32] tekky has joined the channel
[08:32] sh1mmer: that reminds me I really have to finish input filters
[08:32] micheil: felixge: link me to the api, if you will, I'll tell you if it's awesome and understandable. (I may even changelog it.)
[08:32] felixge: I'll announce the project later on the mailing list, hopefully I can get a few more companies help sponsoring the efford, it's quite a lot of work :)
[08:32] felixge: micheil: http://github.com/felixge/node-mysql has API docs
[08:32] alcuadrado: felixge, yeah, that is not a big issue... prepeared statements can be added to the project later :p
[08:32] sh1mmer: felixge: you should hit up pgriess I wouldn't be surprised if he had a use case
[08:32] micheil: sh1mmer: step does have it's uses, and one of those is chaining callbacks for a more readable code style
[08:33] micheil: sh1mmer: peter probably does, by the sounds of things
[08:33] felixge: sh1mmer: already emailed him, his team doesn't use mysql and the teams at yahoo that do don't work with node yet
[08:33] sh1mmer: felixge: I know.
[08:33] sh1mmer: I'm surprised he doesn't have any mySql though
[08:33] micheil: sh1mmer: mail.. doesn't use mysql? actually, they'd use hadoop, righT?
[08:33] micheil: or just smtp/imap
[08:33] felixge: haven't heard back from EXT either, they are investing in node pretty heavily so they would benefit
[08:33] Draggor1 has joined the channel
[08:33] sh1mmer: I guess given his project that makes sense
[08:34] felixge: anyway, this driver will hopefully help bigtime with node adoption. I mean all the cool kids play with NoSQL, but most of the big boys are all about MySql ;)
[08:35] stagas has joined the channel
[08:35] EyePulp has joined the channel
[08:35] terinjokes: Been very successful in reinventing the wheel: http://image.bayimg.com/daombaacg.jpg
[08:35] felixge: (we are using it because we have relational data and our frontend is in CakePHP which favors mysql quite heavily)
[08:35] micheil: felixge: psst, aim small, then get big dude.
[08:35] zodiak has joined the channel
[08:35] sh1mmer: felixge: we are moving a lot of our stuff to a 'nosql' store internally
[08:36] sh1mmer: although there is a ton of mysql around still
[08:36] micheil: felixge: shoot me an email with a link to the source code and a brief quick intro: micheil@changelogshow.com
[08:36] _announcer: Twitter: "Coffeescript is actually looking nice, combine that with Node.js... *drool* http://bit.ly/boFlo7 http://bit.ly/cfl7pZ" -- Peter De Berdt. http://twitter.com/peterdeberdt/status/21299317987
[08:36] aubergine has joined the channel
[08:36] felixge: sh1mmer: I'm not saying there are no use cases for NoSQL, people have been abusing mysql as a key value store a lot in the past. But there is also relational data, and most of the NoSQL stores I've seen actually make me do more work for the same results as MySql
[08:36] sh1mmer: micheil: regarding step, I think it allows you to write readable code as you said, but I think you can write as easily legible code in an event-driven style
[08:37] micheil: true, but step can be / is event driven. although, I think it may be able to do it better.
[08:37] sh1mmer: micheil: part of the ways we'll make that successful is by defining ways to refactor sequential code that aren't evil.
[08:37] micheil: It's been a while since I looked at the source code.
[08:37] stride: felixge: any prerequesites on the db side for the test? I created a user with wildcard priviliges to an empty test database
[08:38] micheil: I'm more thinking of things where it's like: connect to database -> query database -> return result to user
[08:38] sh1mmer: micheil: I worry about abstractions like that though because they trick you into thinking sequentially
[08:38] felixge: stride: edit test/common.js
[08:38] felixge: stride: with your login credentials
[08:38] micheil: things that need to block because of third parties
[08:38] mattly has joined the channel
[08:38] stride: felixge: already done
[08:38] mape: felixge: how is the performance compared to other implementations?
[08:38] decklin has joined the channel
[08:38] stride: Error: Expected call to connectCb() did not happen (process exit)
[08:38] micheil: sh1mmer: where each step depends on the previous step.
[08:38] felixge: mape: I have not benchmarked it, but the critical path for reading query results should be very fast
[08:38] stride: in test-client-connect.js
[08:38] felixge: mape: insert performance may not be as good as other drivers
[08:39] felixge: stride: seems like a timeout
[08:39] sh1mmer: micheil: right, but that's a fairly easy thing to code and I don't see any reason to not just use named functions
[08:39] felixge: stride: make sure your db is listening on port 3306
[08:39] micheil: eh, true.
[08:39] felixge: stride: localhost
[08:39] sh1mmer: micheil: I think we need some conventions for things like docs too
[08:39] micheil: sh1mmer: just saying, when you get into something like node-smtp-client, you can appreciate step.
[08:39] sh1mmer: micheil: people don't document their callbacks well enough
[08:39] micheil: 6 callbacks deep and all that.
[08:39] sh1mmer: heh
[08:40] micheil: (that was nov 09 code, thanks.)
[08:40] stride: felixge: don't have a mysql db on the same machine
[08:40] felixge: mape: but it should really be as fast as it can be for userland code, I spend a few thoughts on not wasting cycles :)
[08:40] felixge: stride: then you need to change the 'host' info
[08:40] sh1mmer: I've written code like that and I started to think about how I was doing all this anonymous stuff
[08:40] stride: felixge: ... :)
[08:40] jkreeftmeijer has joined the channel
[08:40] mAritz has joined the channel
[08:41] caolanm has joined the channel
[08:41] TrisMcC has joined the channel
[08:41] stride: I've put in the ip just in case it was a resolve-error, still the same results
[08:41] sYsk: what would be nice would be for node.js to spawn a new process just in case it detects the loop has been blocked for >Xseconds
[08:41] stride: mysql-client connects with the same parameters
[08:41] micheil: sh1mmer: it's more so because smtp is a sequential protocol.
[08:41] felixge: stride: what mysql version?
[08:41] pufuwozu has joined the channel
[08:42] sYsk: then you can see which requests cause node.js to block and refactor your code
[08:42] felixge: stride: I'm only 5.1.46 now, but I'm aiming for >= 4.1 compatibility
[08:42] sh1mmer: micheil: right, so I can see why step would be attractive, but I also think that it's easy to document the chain, or just follow it
[08:42] _announcer: Twitter: "Upgraded Node.js and can't for the life of me work out why I'm receiving "\x00\xC3\xBF" after sending "\x00\xFF". Odd!" -- Nathan de Vries. http://twitter.com/atnan/status/21299590978
[08:42] sh1mmer: if you don't use anonymous callbacks there isn't a big pyramid
[08:43] sh1mmer: and you can just write the callbacks source order according to execution order.
[08:43] Astro has joined the channel
[08:43] jspiros has joined the channel
[08:43] stride: felixge: client: "mysql Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (x86_64) using readline 5.1" server: 5.0.45
[08:43] hoodow has joined the channel
[08:44] sh1mmer: micheil: I'm somewhat anti-abstraction when the abstraction is modelled off something different
[08:44] felixge: stride: that's the client, what about the server?
[08:44] felixge: stride: or is that what you get upon login?
[08:44] sh1mmer: micheil: we get this a lot with YQL where people don't understand why it doesn't work because they expect it to be SQL
[08:44] sh1mmer: and it can't be because it's making web service calls
[08:44] joshbuddy has joined the channel
[08:44] joshbuddy has joined the channel
[08:44] stride: felixge: "server: 5.0.45" last part of my message :)
[08:44] sh1mmer: but the convenience of the syntax lulls them into not understanding what they are doing.
[08:45] felixge: ah
[08:46] felixge: stride: is there any chance you could get me access credentials so I could debug?
[08:46] micheil: sh1mmer: there's also a point where nesting functions just gets too crazy.
[08:46] markwubben has joined the channel
[08:47] micheil: for instance, sure, write great code on the inside that nests callbacks as much as you like, but if I'm writing more then say 2-3 callbacks to send an email, I must be doing something wrong.
[08:47] micheil: (that's 2-3 callbacks after requiring the library)
[08:47] stride: felixge: nope, I abused a productive db for it, sorry. but I can setup a version on my nodejs test server, just a second
[08:47] _announcer: Twitter: ""How node.js saved my web application" http://bit.ly/925wiq <-- opløftende." -- Ricco Førgaard. http://twitter.com/fiskeben/status/21299802845
[08:48] sh1mmer: micheil: yeah that sounds wrong
[08:48] teemow has joined the channel
[08:48] micheil: sh1mmer: that's a case where the public api should be simplified by making use of chaining to do common setup / related tasks.
[08:49] sh1mmer: micheil: right but chaining is also dangerous
[08:49] sh1mmer: it's one of the reasons code because hard to maintain
[08:49] felixge: stride: that'd be awesome
[08:51] micheil: uhh.. not chaining, I meant using something like step to link together those async methods to have just one callback, instead of say three
[08:51] sh1mmer: I think it depends on what you are doing
[08:54] beanie___ has joined the channel
[08:56] _announcer: Twitter: "I have a roll with node.js libev, libevent and add the option to choose their libev. However, libevent libev and I wonder which is better" [ja] -- Yuuki Takano. http://twitter.com/ytakanoster/status/21300178402
[08:56] micheil: sh1mmer: I'm thinking a end-developer api of this: http://gist.github.com/526659
[08:56] micheil: would be nice
[08:56] stride: felixge: strange, it's working locally, maybe I messed up the privileges or something
[08:57] felixge: stride: you should get a clean mysql error in that case
[08:57] rsms has joined the channel
[08:58] sh1mmer: micheil: that seems reasonable
[08:58] felixge: stride: actually ... I refactored the connect code, let me make sure it still handles errors properly
[08:58] micheil: sh1mmer: currently it's like, http://github.com/miksago/node-smtp-client/blob/master/examples/example-client.js
[08:59] stride: okay, just say the word and I'll test it again against the other db, I'll try to debug the serverside here to rule out errors on my side
[08:59] micheil: (imagine it as the new style callbacks though)
[08:59] sh1mmer: micheil: jeez.
[08:59] felixge: stride: no, there should be an exception thrown
[08:59] micheil: sh1mmer: really old code or what?
[09:00] felixge: stride: (the error object is not instanceof Error yet, but I'll fix that)
[09:00] sh1mmer: micheil: I think it's a stylistic thing
[09:00] Ori_P has joined the channel
[09:00] sh1mmer: there is a reason response.end() takes content
[09:00] tek has joined the channel
[09:00] sh1mmer: for http
[09:00] micheil: true
[09:00] micheil: but which would you prefer to use?
[09:01] sh1mmer: oh I agree
[09:01] sh1mmer: I think the former is much nicer
[09:01] micheil: so, the old way, or my new proposal?
[09:01] sh1mmer: I like objects of config personally
[09:02] sh1mmer: YUI uses that a lot
[09:02] stride: felixge: hm, yeah, just re-checked, not working on the remote db, gist of the full error output if you care: http://gist.github.com/526663
[09:02] micheil: the new style actually abstracts you from what smtp actually does somewhat, which is a good thing.
[09:02] sh1mmer: but at the same time having those raw events is still awesome
[09:02] micheil: sh1mmer: yeah, I know that. I've been using YUI to build Ideocase.
[09:02] micheil: just about to write my first YUI widget
[09:02] sh1mmer: :)
[09:03] micheil: sh1mmer: those raw events will still be there, trust me on that.
[09:03] felixge: stride: this would make sense if mysql is terminating the connection right away
[09:03] sh1mmer: right
[09:03] sh1mmer: but having a shorthand way to do stuff is important
[09:03] felixge: stride: or if there is a network error of some sorts
[09:03] stride: felixge: don't know, mysql-client works fine
[09:03] sh1mmer: I don't disagree
[09:03] felixge: stride: right
[09:03] micheil: sh1mmer: that's actually a project that I really need to give a lot of love to.
[09:03] rnewson has joined the channel
[09:03] rnewson has joined the channel
[09:03] felixge: stride: it's most likely to be a problem in my lib :)
[09:03] felixge: stride: but the only way to find out would be to test myself
[09:03] sh1mmer: micheil: I'm just adding the API to the DNS server so I'm doing this myself
[09:03] felixge: stride: or maybe you could do this:
[09:04] TomY has joined the channel
[09:04] felixge: stride: in client.js add this before line 56: p(packet);
[09:04] micheil: sh1mmer: I'm wishing I could go back and rewrite node-smtp-client, but time just doesn't permit at the moment, with having to do paid work and education at the same time.
[09:04] sh1mmer: life is like that
[09:04] felixge: stride: then run node test/system/test-client-connect.js
[09:04] sh1mmer: you aren't married
[09:05] stride: felixge: I can give you root access to the test db I set up, the problem is most likely reproducable when you connect to it
[09:05] sh1mmer: talk about a time sink :P
[09:05] micheil: sh1mmer: true. and I probably won't be for another 10 years.
[09:05] felixge: stride: sure, that would be even better :)
[09:05] sh1mmer: micheil: you never know, it sneaks up on you
[09:05] micheil: sh1mmer: context, i'm 17.75 now.
[09:05] stride: -> query in a second :)
[09:05] tav_ has joined the channel
[09:05] sh1mmer: I didn't expect to get married right after uni
[09:06] micheil: sh1mmer: you'd still be probably atleast 23-26 though
[09:06] sh1mmer: aye
[09:07] jblanche has joined the channel
[09:07] micheil: hmm.. time to write a quick bio.. horaay... not.
[09:07] tav__ has joined the channel
[09:08] sh1mmer: :)
[09:08] sh1mmer: I should sleep soon
[09:08] sh1mmer: I need to get up in um... 5 hours 20 minutes
[09:10] sveimac has joined the channel
[09:10] micheil: sh1mmer: be a real developer, it's not late until you need to get up in 1hr 10 minutes.
[09:11] micheil: (did that this morning >_> )
[09:11] sh1mmer: micheil: s/developer/hacker/
[09:11] micheil: :P
[09:11] sh1mmer: real developers go to work and get paid
[09:11] aubergine has joined the channel
[09:11] micheil: I joke, I joke.
[09:11] sh1mmer: by not missing their bus
[09:11] sh1mmer: micheil: I was young once
[09:11] micheil: still are, aren't you?
[09:12] sh1mmer: 29
[09:12] sh1mmer: I feel old
[09:12] micheil: seriously, when you're the age of my dad, you can say your old, until then, good luck :P
[09:12] sh1mmer: haha
[09:12] micheil: but seriously, in all truth, you are 11 years older than me.
[09:12] sh1mmer: it's young buggers like you being so bloody talented that makes me feel old
[09:13] guybrush: ACTION nods
[09:13] micheil: but really, we can joke about this stuff l;)
[09:13] micheil: sh1mmer: up by 6am? gee.. :P
[09:14] micheil: I only do that when I need to record a podcast with wynn or something like that.
[09:14] sh1mmer: 7.30 it's 2.15am now
[09:14] micheil: oho.. good point
[09:14] micheil: I thought of the 1 hr I said.
[09:18] mscdex: node.js rules!
[09:20] micheil: it doies.
[09:20] micheil: pity sleep isn't async, huh sh1mmer?
[09:20] sh1mmer: I keep meaning to go polyphasic
[09:22] micheil: lol.
[09:22] micheil: go the uberman sleep cycle, 6x20minute naps.
[09:22] pdelgallego: Is npm the standard node package manager (ala rubygems)?
[09:22] micheil: you survive fine on only 2 hours of total sleep
[09:22] micheil: pdelgallego: defacto package manager
[09:24] sh1mmer: micheil: uberman is totally unsustainable
[09:24] sh1mmer: I was considering everyman though
[09:24] micheil: lol.
[09:24] micheil: everyman.. what's that one again?
[09:24] sh1mmer: it's brittle
[09:24] sh1mmer: core nap plus 3 short naps
[09:24] sh1mmer: well you can vary it
[09:26] pdelgallego: another question is there any emacs mode for nodejs ?
[09:27] pdelgallego: I mean something to run tests, run tasks, etc?
[09:27] micheil: anyway chaps, I need to get to work, but if you release any awesome opensource stuff, shoot me an email: micheil@changelogshow.com
[09:29] omarkj has joined the channel
[09:31] aubergine has joined the channel
[09:34] digitalspaghetti: felixge: pint
[09:34] digitalspaghetti: ping
[09:38] _announcer: Twitter: "@atnan Don’t know anything about node.js, but 0xc3 0xbf is UTF-8 for 0xff UTF-16—i.e. it's a char. encoding issue." -- sutes. http://twitter.com/sutes/status/21302103656
[09:39] elliottkember has joined the channel
[09:39] felixge: digitalspaghetti: sup?
[09:39] digitalspaghetti: i can't get node-mysql to compile :(
[09:40] stride: compile? :)
[09:40] digitalspaghetti: stride: it has a makefile :)
[09:40] felixge: digitalspaghetti: that's just to run the tests
[09:40] felixge: digitalspaghetti: make test
[09:40] felixge: digitalspaghetti: no need to compile anything :)
[09:40] digitalspaghetti: ahh, so i can just stick it in .node_libraries ?
[09:41] felixge: digitalspaghetti: yeah, an NPM package is coming
[09:41] digitalspaghetti: cool
[09:41] digitalspaghetti: still getting used to node stuff :)
[09:41] felixge: digitalspaghetti: edit test/common.js with your db info to try it
[09:41] digitalspaghetti: gotcha
[09:42] micheil: felixge: wanna shoot me a quick email about this library?
[09:42] felixge: micheil: what do you need to know? The readme has all the docs, design goals, etc. :)
[09:42] micheil: s/library/module
[09:42] micheil: okay, just one with a link to it, so that I can follow-up in a few hours.
[09:43] micheil: micheil@changelogshow.com
[09:43] digitalspaghetti: i'm hoping this library solves this issues around why i didn't want to go with node, because i was being silly and picking a nosql backend :)
[09:43] digitalspaghetti: but i need a relational database
[09:43] Ori_P_ has joined the channel
[09:44] stride: dbslayer works fine for me in node
[09:44] _announcer: Twitter: "Blog update: Use node.js production http://is.gd/ejQPj nodejs # # # javascript daemon" [fr] -- Vincent RABAH. http://twitter.com/itwars/status/21302349035
[09:44] digitalspaghetti: doesn't dbslayer only work with selects though? does it support inserts and updates now?
[09:44] stride: (just in case you don't want to wait)
[09:44] zomgbie has joined the channel
[09:45] stride: digitalspaghetti: don't know, sorry. I only use it for a monitoring component that only uses select
[09:46] felixge: micheil: emailed ya
[09:46] felixge: ACTION out for lunch
[09:46] stride: hm, dbslayer supports every sql you give it according to the docs, don't know about the node module
[09:48] mscdex: but dbslayer is a daemon and adds another dependency :/
[09:49] stride: yeah, true
[09:52] femtoo has joined the channel
[09:54] terinjokes: hrm... seems for every 1 load of my page, node is making 6 calls to the external site...
[09:59] _announcer: Twitter: "@jdub: JSON Template is available for node.js and Python too, in addition to in-browser-JS (and, of course it plays nicely w/ jQuery)" -- Garrett LeSage. http://twitter.com/garrett/status/21303022524
[09:59] mscdex: to what site?
[10:01] sveimac has joined the channel
[10:07] terinjokes: mscdex: i'm hitting graph.facebook.com for as a test
[10:08] terinjokes: adapting the example at http.Cleint so that its inside a http server
[10:11] _announcer: Twitter: "http://bit.ly/cUzTE1 SXSWi Panel proposition. #nodejs #nosql #nolimits #architecturesmarrantes http://yfrog.com/56q9wp" -- Ori A Pekelman. http://twitter.com/OriPekelman/status/21303609066
[10:12] stride: any chance you could share your code?
[10:13] terinjokes: ok course!
[10:14] terinjokes: http://pastebin.com/m1rKmBvj
[10:16] stride: oh, okay, you do that request to facebook everytime a request occurs, you should evaluate what exactly was requested from your server before doing that
[10:16] stride: e.g. every modern browsers checks for /favicon.ico and stuff
[10:16] terinjokes: stride: in production i would
[10:17] terinjokes: stride: i started node.js earlier this morning, and right now I'm just seeing how to do calls
[10:17] stride: well that accounts at least for one additional request
[10:17] terinjokes: one second...
[10:18] terinjokes: REQUEST: /favicon.ico
[10:18] stride: if (req.url == "/") { // foo }
[10:18] terinjokes: guess that solves that, haha
[10:19] mscdex: felixge: hrm... i do a 'make test' and i get an error: `test/{simple,system}/test-*.js': No such file or directory
[10:21] rnewson has joined the channel
[10:21] rnewson has joined the channel
[10:21] mscdex: felixge: also i don't have the 'gently' module :-(
[10:21] felixge: mscdex: npm install gently@latest
[10:22] mscdex: i don't have npm heh
[10:22] felixge: mscdex: http://github.com/felixge/node-gently
[10:22] _announcer: Twitter: "Being a graphic designer and programmer really pays off in moments like this - my C/Node.js tool has a name and lo http://twitpic.com/2fa268" -- Martin Rusev. http://twitter.com/martin_rusev/status/21304034497
[10:24] mscdex: felixge: seems to work fine now. cool!
[10:25] felixge: mscdex: awesome :)
[10:25] digitalspaghetti: felixge: so far so good on the mysql module :)
[10:26] felixge: digitalspaghetti: sweet :)
[10:26] felixge: I will probably start parsing dates into date objects and cast numbers / booleans properly
[10:26] felixge: unless you guys think getting the plain mysql 'strings' is best
[10:28] sveimac: thats a win
[10:30] mscdex: parsing dates would be nice... maybe have some way to toggle that functionality on/off somehow?
[10:30] mscdex: i dunno
[10:31] mscdex: not sure why i wouldn't want a date object
[10:31] mscdex: since you can easily tostring it
[10:32] MattJ has joined the channel
[10:32] mscdex: and yes, casting numbers and booleans properly would be great
[10:32] micheil: felixge: cool stuff
[10:34] sveimac: option with parse: false would be nice
[10:41] Ori_P has joined the channel
[10:44] shreekavi has joined the channel
[10:58] robotarmy has joined the channel
[11:01] felixge: mscdex: I'll probably add support for auto-casting into JS types which can be turned off
[11:04] _announcer: Twitter: "If you are interested in using #nodejs with #mysql, you may want to try out my new module: http://bit.ly/9cvg6g More details TBA soon" -- Felix Geisendörfer. http://twitter.com/felixge/status/21306054595
[11:04] danielzilla has joined the channel
[11:10] digitalspaghetti: felixge: i may have a bug, but unfortunatly i need to go out just now, won't be back for a couple of hours
[11:10] digitalspaghetti: what time will you be round till?
[11:10] felixge: digitalspaghetti: until 6pm, berlin time
[11:10] felixge: digitalspaghetti: feel free to report it as a github issue
[11:10] digitalspaghetti: yea, i'll be back before then
[11:10] digitalspaghetti: i dunno if it;s me being stupid though :D
[11:11] digitalspaghetti: (off to see David Mitchell at the Edinburgh Festival :)
[11:11] digitalspaghetti: anyway, better get off before i'm late :)
[11:11] exlibris has joined the channel
[11:12] daleharvey has joined the channel
[11:13] matt_c has joined the channel
[11:13] Gruni has joined the channel
[11:16] benburkert has joined the channel
[11:18] tuxsbro_ has joined the channel
[11:19] sideshowcoder has joined the channel
[11:21] feroz_ has joined the channel
[11:29] tmedema has joined the channel
[11:31] bsstoner has joined the channel
[11:34] tuxsbro has joined the channel
[11:41] sideshowcoder has joined the channel
[11:42] FransWillem has joined the channel
[11:46] phil- has joined the channel
[11:46] Tim_Smart has joined the channel
[11:47] jimmy203 has joined the channel
[11:47] Tim_Smart1 has joined the channel
[11:47] _announcer: Twitter: "I suspect a few bugs in out #gtugcampout game based on the #nodejs log. If your notice a bug: http://bit.ly/9o9MYd" -- Markus Knittig. http://twitter.com/mknittig/status/21308333809
[11:48] tmpvar has joined the channel
[11:48] jimmy203: I`ve used npm to install mongo - npm install mongodb bt I can`t seem to access mongod ? It says it is not installed? Any ideas?
[11:49] _announcer: Twitter: "I still dont like #javascript much, but #nodejs with websockets and #mongodb is so much #win." -- Almad. http://twitter.com/almadcz/status/21308430860
[11:54] Akufen has joined the channel
[11:57] fermion has joined the channel
[11:58] felixge has joined the channel
[11:58] felixge has joined the channel
[12:01] ben_alman has joined the channel
[12:05] _announcer: Twitter: "UglifyJS: a JavaScript parser/compressor/beautifier in #nodejs http://github.com/mishoo/UglifyJS" -- Aaron Heckmann. http://twitter.com/aaronheckmann/status/21309382529
[12:07] jetienne has joined the channel
[12:07] d0k has joined the channel
[12:08] sideshowcoder has joined the channel
[12:11] c4milo has joined the channel
[12:12] _announcer: Twitter: "Cutting-edge-web-dev land is all abuzz about #nodejs ... yet no one seems to have made the effort to write a set of passable docs for it." -- Marijn Haverbeke. http://twitter.com/marijnjh/status/21309840151
[12:14] gormer has joined the channel
[12:17] SubStack: Passable docs?
[12:17] SubStack: the api is pretty good last I checked
[12:17] SubStack: there's not very much to cover
[12:17] mscdex: the html docs need improvement
[12:20] Tim_Smart: docs are for noobs.
[12:20] Tim_Smart: >.>
[12:22] _announcer: Twitter: "Don't forget, @samshull is presenting Node.js tonight. NIIC @ 6:30. More details are on our site. Hope to see you there! http://j.mp/WHFU3" -- Screaming Monkeys. http://twitter.com/screaminmonkeys/status/21310418207
[12:23] SvenDowideit has joined the channel
[12:24] SubStack: just introspect the functionality out of everything
[12:24] stride: huh? what's wrong with the docs? formal explanation + examples for the base API and most modules
[12:25] SubStack: Object.getOwnPropertyNames(sys).map(function (name) { return sys[name].toString() })
[12:25] SubStack: there's your docs
[12:26] daleharvey: ACTION hasnt had a problem with node docs, I think they are pretty good overall
[12:27] daleharvey: I had to write new documentation for erlang because its sucked so much :P
[12:27] Tim_Smart: stride: I was just kidding. Docs are cool.
[12:30] gormer has joined the channel
[12:30] stride: Tim_Smart: I got that, I was referring to the tweet :)
[12:33] blogometer has joined the channel
[12:33] Tim_Smart: stride: Oh right. If someone needs more docs than what we already got, they probably shouldn't be developing.
[12:35] sveimac: Tim_Smart: Thats abit harsh, theres alot of stuff that might need more examples
[12:35] Tim_Smart: A bit harsh - probably.
[12:35] daleharvey: " probably shouldn't be developing " + "with node.js"
[12:36] Tim_Smart: Unless they are new to programming as a whole I would be more forgiving :D
[12:36] Tim_Smart: What does need more docs, is the C++ v8 embedding API.
[12:37] omarkj: I can agree to that.
[12:37] aheckmann has joined the channel
[12:37] mscdex: stride: there's lots of things that could be improved, such as showing "inheritance", showing better/more examples for the more complex things, etc
[12:38] sveimac: I think the #node.js community should asume that there are alot of frontend people who arent used to backend stuff
[12:39] femtoo has joined the channel
[12:40] mscdex: stride: also, generating better and more predictable formats for links to sections/subsections is needed
[12:40] daleharvey: sveimac: and I think people who arent particularly experienced developers should assume that node if a new project thats under heavy dev and not particularly newbie friendly, yet
[12:40] daleharvey: *node is a new project
[12:40] voodootikigod has joined the channel
[12:41] phiggins has joined the channel
[12:41] sveimac: sure agree, thats a general for something thats not even close to 1.0 :)
[12:41] kevm_ has joined the channel
[12:41] omarkj: I think we should just be friendly to all questions, isn't that easiest ?
[12:41] ben_alman has joined the channel
[12:42] mscdex: omarkj: yes, but there are lots of questions and things that could have been easily remedied by better html documentation imho
[12:42] sveimac: just not lets get to smart about it :)
[12:42] omarkj: mscdex: True.
[12:42] mscdex: lots of common questions anyway
[12:43] phiggins: which one of you is the 4chan fan http://twitter.com/voodootikigod/status/21282969378
[12:43] mscdex: never heard of it
[12:44] _announcer: Twitter: "why i like node.js over eventmachine: node.js actually works when you write something only theoretically, em doesn't. also em is more opaque" -- Sam Elliott. http://twitter.com/Lenary/status/21311831975
[12:45] stride: mscdex: all your points are true but it is certainly sufficient to get started or dive into for more complex issues
[12:46] omarkj: That being said, I wasn't aware of the community being very hostile.
[12:46] daleharvey: someone mentioned the word "ruby fag" in passing and that whole 4chan thing went off, was a tad overreactive
[12:47] phiggins: i just saw the tweet is all
[12:48] phiggins: also node-xml parser is retarded.
[12:48] evlapix has joined the channel
[12:48] omarkj: Ah.
[12:48] mikeal has joined the channel
[12:48] jherdman has joined the channel
[12:48] phiggins: it dies on fatal-don't-keep-parsing-style.
[12:49] stride: so?
[12:49] daleharvey: why would it parse that if its an xml parser?
[12:49] voodootikigod_ has joined the channel
[12:49] blowery: QUICK EVERYONE JUMP ON PHIGGINS
[12:49] daleharvey: lol
[12:49] phiggins: i'm looking for a general purpose dom parsing lib
[12:49] phiggins: blowery is in fact a ruby fag
[12:50] blowery: only the best for me
[12:50] blowery: gem flavored cigarettes.
[12:50] daleharvey: I havent used any to suggest, theres a few in http://wiki.github.com/ry/node/modules though
[12:51] voodootikigod_: phiggins: apricot
[12:51] voodootikigod_: phiggins: http://github.com/silentrob/Apricot
[12:51] kriszyp has joined the channel
[12:51] phiggins: i could just hack it to treat